Running the Workflow Engine in Multiple Servers
Note — Not applicable for multi-threaded workflow starting with 7.9.10. Workflow can only be run on one server per environment from 7.9.10 and up.
Workflow services can now be set to run on multiple servers in a farm configuration much in the same way as Data Processing services. This requires some setup on each of the servers' registries. This allows the Workflow user to partition the work that each of the Workflow Services performs, allowing for increased performance. Each server can be set up to perform a separate process (i.e., Workflow Queue processing, Workflow Instance processing, Workflow Scheduled Model processing and Workflow E-Mail Response processing) with respect to the Workflow Engine. In addition, due to the heavy role that Workflow Processing plays in the Workflow Engine resources, it is also possible to break up which Workflow models are processed by each of the servers set up to process Workflow Instance records.
Required Setup
To break up the four processes performed by the Workflow Engine, the ProcessOnly registry key needs to be set.
- One server can be set up to process Workflow Queue entries (Trigger Event). In order to process only queue entries, ProcessOnly must be set to 1 decimal.
- One or more servers can be set up to process the other processes such as Workflow Instance, E-mail Response and Scheduled Model processing. The ProcessOnly key setting will need to be 14 decimal. Bit 2 (2 decimal) being set activates E-Mail Responses processing, Bit 3 (4 decimal) being set activates Workflow Instance processing, and Bit 4 (8 decimal) being set activates Scheduled Model processing.
- If more than two servers are available for Workflow Instance processing, which requires the most resources, the process can be broken up additionally based on Workflow model ID.
For a server only processing Instance records for the PR_APRV model, the following settings would be appropriate:
ProcessOnly (DWORD) = 4 (decimal) ModelsOnlyWhereClause (String) = "wf_model_id = 'PR_APRV'"
The additional servers would need to address the other Workflow models and processing types. Server 3 might be set up to process only email and scheduled:
ProcessOnly = 10 ('a' hex)
Server 4 might be set up to process all remaining models:
ProcessOnly = 4 ('4' hex) ModelsOnlyWhereClause (String) = "wf_model_id = 'HR_TERM' OR wf_model_id = 'AP_APRV'"
ModelsOnlyWhereClause
When partitioning, it is necessary to recognize the link between Scheduled Model and Instance processing by a partitioned WF Engine using the "ModelsOnlyWhereClause" registry setting. It is the same type of linkage that occurs between a WF Queue record and WF Instance when processing a process triggered model such as DO ARCHIVE and W-2s. They must be executing on the same machine.
The same is true of WF Scheduled Model and WF Instance processing when using the Workflow Models Only Where Clause. They must both occur on the same machine. This means the "Process Only" registry setting must include both WF Scheduled Model (DWORD bit 4) and WF Instance Processing (DWORD bit 3) on a given machine when using the ModelsOnlyWhereClause registry setting. This ensures processing by the same partitioned Workflow Engine.
As new models are created using the Workflow Designer, they must be added to the ModelsOnlyWhereClause entry on the server the instance records will be processed on. If not, no processing by the Workflow Engine will occur.
Due to possible conflicts at the database level, the user should only set one server at a time for process Workflow Queue records.