Asynchronous or Async Workflow Processing

Last published at: July 1st, 2021

There are times when Business Process Management (BPM) workflow processes fail to execute from start to end.  Probably one of the most common workflow execution failures occurs while the instance is in a hold status, waiting for an external event to report prior to continuing to execute the process.

Recently, we were asked to assist a client who had  just implemented text messaging from a workflow.  Briefly, the workflow sends a text message to the user in the form of a question with suggested answers, and then waits for a text message reply from the user.  Based on the user’s reply (the text messaged answers to the question), the workflow continues processing.  As a process control step, the workflow logs the time the text message is sent to the user creating an expiration timeout step.  Once the expiration timeout limit is reached, the step returns a value of “timeout" and continues processing the workflow.

This diagram above is an example of asynchronous or Async Workflow Processing.  Async Workflow Processing is a very important part of the automation process as it permits distributed processing of information between connected BPM components.

In this next example we will examine the Async Workflow Processing steps after a job requisition has been posted online.  Here it is the event of an applicant applying for the job that wakes up the workflow, starting a new workflow instance to process the application request.

FlowWright offers an Enterprise Service Bus (ESB) to process external events as a standard component of our product.   The Enterprise Service Bus lets you define events and event handlers such as those discussed in these two examples.  It is within the ESB that the workflow designer will define an event called “Text Message Received” and a custom event handler to handle the event.  External systems can then publish this event to FlowWright using the direct .Net API or the Web service API.  When this event occurs, FlowWright ESB will pick up the event from the event queue and process it using the defined event handler.