REV23 Development

The Workflow module was an amazing addition to the XAF line, and with the small amount of time devoted to getting it up and running, in less than one week I was able to get that time back by not having to use my old techniques for e-mail follow ups, saving me time and massive amounts of energy, while hopefully generating more profits.

REV23 Development, LLC, supplies software product line that was built entirely with the eXpress Application Framework (XAF) and utilizes common XAF modules, such as KPI, State Machine and Workflow.

Primary Application

Below are the screenshots of the primary application built with XAF.

Licensing Application

The licensing application is used internally to track customers, orders, software licenses for both trial users and licensed users.

Problem

Our software line is licensed entirely by the licensing application, using web services and a custom membership provider to allow Membership access to our website, licensing and validation of software licenses, and customer management. While very effective at its tasks, there were many manual processes that were often undertaken via e-mail, such as trial license follow ups, payment reminders, etc. that were time consuming and wasted resources.

Solution

By using the workflow module in the licensing application, I would be able to replace many manual e-mails to customers (and potential customers) with automated e-mails that would be sent automatically by the workflow server (implemented as a Windows Service).

Implementation of the Workflow Server Service

Starting backwards slightly, the workflow service was implemented first. The XAF Workflow Server Project Template in Visual Studio was added to the solution. The template made implementing the service incredibly easy, and the service was up and running within minutes. I was now ready to begin authoring some workflows.

Implementation of Workflows

First things first, a custom code activity was needed to send e-mails via SMTP. I found several examples of SMTP code activities which pointed me in the right direction. A few minutes, and a few customizations later, a SendMail code activity was created and ready for use. A simple hook into the QueryAvailableActivities event, and this code activity was ready to be used in the Workflow Designer.

Workflow Designer

The workflow designer from a new user's perspective was very easy to navigate. Having played with the previous version of Windows Workflow, but never doing anything of much substance, I was slightly intimidated to get back into this world. However, I was pleasantly surprised when, actually quite naturally, I began placing workflow activities onto the design surface and setting the desired properties. The workflows were not complex; retrieve the instance of the target object, in this case a trial or evaluation license, then retrieve an email message template object (composed with the HtmlPropertyEditor) based on its name, which contains tips & tricks, purchasing information, etc., and send it to the e-mail address associated with the license.

Design Workflow

Determining When to Run the Workflows

Determining when to execute the workflow was simple. Every few days during the evaluation license, send the email designated for that day. For example, 5 days into the trial, remind the user there is support available to them, and on the 30th day, remind the user their trial is over, and they'll need to purchase the software to continue using it.

Workflow Criteria

Activating the Workflow

A simple action on the workflow definition allowed me to kick off the workflow. I restarted the Windows Service (it didn't seem to pick up new workflows), and instantly, workflows began firing. Being able to track the workflows using the Show Workflow Instances Action was fantastic. I opened it up on a Trial License object and saw the following.

Workflow Completed

Success!

Conclusion

In a single afternoon I was able to compose 28 workflows that automated these e-mails, saving countless hours in the old process, which involved me calculating how much time was remaining, digging through my sent items in Outlook to find the e-mail I most recently sent off, copy it and send it to the new person. The Workflow module was an amazing addition to the XAF line, and with the small amount of time devoted to getting it up and running, in less than one week I was able to get that time back by not having to use my old techniques for e-mail follow ups, saving me time and massive amounts of energy, while hopefully generating more profits.


Nate Laff
REV23 Development, LLC