The new Workflow Engine based on Matrix42 Workers is introduced in version 10.0.0. The new architecture of the Matrix42 Worker Workflow Engine puts additional restrictions on the Workflow Activities implementation and the Workflow. Use this guide to adjust the custom workflow activities to the new Matrix42 Worker workflow engine, check workflow compatibility, and change the Workflow Engine.
Migration from AppFabric to Matrix42 Worker
The Product Update migration of all Workflows to the new Matrix42 Worker workflow engine is delivered out of the box.
For custom Workflows the "Set Execution Engine" action needs to be executed. When the Matrix42 Worker engine proves its reliability in all possible scenarios and AppFabric will be finally removed from the Product (approx. in version 11), then all Workflows that are present in the Product will be marked automatically as executed on Worker.
Workflow Activities Migration
All standard Workflow Activities delivered with the Product are already migrated and can be executed on the Matrix42 Worker.
Due to the fact, the Workflows executed on another process (or even another computer) some standard Workflow Activities changed a little the default behavior, what is some cases need to be taken into consideration, when moving execution of the Workflow to the Worker.
Invoke PowerShell Activity
By default, the Activity executes the specified PS Script on the Worker. For cases, when the Matrix42 Worker installed on the remote computer (or in Cloud) the Activity execution can fail as the environment does not have required PS Libraries installed, or trying to reach resources not accessible on the Worker computer. Each such cases need to be analyzed and fixed to let the script keep executed on Worker. If the issue cannot be solved and the script anyway has to be executed on Application Server, then you need rework Workflow and set the property "Execute on Server" for the appropriate Invoke Powershell activity.
Execute SQL Activities
The System delivers two Workflow Activity "ExecuteSqlNonQuery" and "ExecuteSqlQuery" which runs native-SQL queries on Databases specified with the ConnectionString. For cases, when the Production database is used, and the connection string is referenced by the name "m42store". For security reasons, the Connection String is not distributed to the remote Matrix42 Worker is the SQL Authorization is used (username and password defined in the connection string). Connection Strings with Integrated security can be used on Matrix42 Workers installed on the same intranet with the Application Server.
Custom Workflow Activities
If you created before your own Workflow Activity all of them need to be reviewed for compatibility with the Matrix42 Worker. For more details please follow the Workflow Activities Migration Guide.
Set Execution Engine for the Workflow
The Matrix42 Workers is an application that runs on an independent process, either on the Application Server or on any other computer. This, compared to the classic AppFabric implementation, brings extra tasks for migration, as previously all Workflow Activities have been executed in-process of the Application and had direct access to all Business Components.
Workflow Activity Compatibility
To be able to be executed on the Matrix42 Worker, the Activity has to be compatible with it, which means the Activity either has all the required modules for the execution deployed on the Matrix42 Worker process, or the Activity is able to delegate the execution back to the Application Server via a Web Service method call. To signal the System uses the Workflow Activity property
PLSLBinaryComponentClassBase.WorkerCompatible to signal that the Workflow Activity can be executed on the Matrix42 Worker.
In Workflow Studio, the Activities compatible with the Matrix42 Worker are highlighted to provide better transparency to the Author, which blocks the Workflow from being executed in the Matrix42 Worker.
Action "Set Execution Engine"
By default, all the Workflows present in the Workflow Repository run on the AppFabric engine. But an Administrator is able to define the execution for the specific Workflow(s). In the workflow management area, select one or several workflow definitions and start the "Set Execution Engine" action:
In case the "Matrix42 Worker" engine is set, the System checks the selected Workflows and proves that all the workflow activities used in Workflows are compatible with the Matrix42 Worker. In the case at least one Activity is incompatible, the set engine operations for such workflows are rejected. In this case, the mentioned activities need to be reworked, and the compatible flag for the activity set:
Clean up the AppFabric Workflow Files
After switching the Workflow execution engine to Worker, the files related to the AppFabric Workflows are stay on the Application Server and keep loading on IIS initialization and impacting the application performance. These files are located in <ApplicationFolder>\svc\WF\<TechnicalWorkflowName>\*.*. Due to the high impact on the System workability, it is highly recommended to remove these files immediately after migrating the Workflow to the Worker. The files can be removed either manually, or by running the action "Publish Repository" in the "Workflow Management" area.
Workflows Versions that still have related not-finished Workflow Instances running on AppFabric will be published regardless of the assigned Workflow execution engine