After getting approval, today I uploaded the source code for the Windows Workflow Integration Pack to http://orchestrator.codeplex.com/. You can build the IP on your own development machine or directly download the OIP file from the source code repository:
This IP is built on .NET 4 to suppose the Windows Workflow 4 with SQL persistence. Before installing it, you have to follow this instruction to enable .NET 4 for OIT. Currently there are following activities:
- Start Workflow: loads a workflow from XAML file or DLL and starts execution. You can set up to 10 input parameters (if 10 is not enough, please let me know) as string and 10 workflow extensions. Optionally you can specify a SQL database connection for persistence. Note that the activity returns immediately after the workflow is started.
- Terminate Workflow: a running workflow with given ID can be terminated.
- Get Workflow Status: checks if a workflow is running or closed or unloaded. If it is not completed, optionally you can wait for completion instead of pooling periodically. If the workflow is completed successfully, this activity will publish the return data of the workflow in Name/Value pairs.
- Unload Workflow: if you have specified a valid SQL database connection in Start Workflow, the state of the workflow will be persisted into the database when the workflow is idle. Using this activity, it will unload the workflow from memory.
- Resume Workflow: a unloaded workflow can be resumed. Either same or different machine will work, as long as the same workflow and same database connection are used.
Note that the IP uses System.Activities.WorkflowApplication to host the workflow instance, so it is the same behavior as you read on MSDN documentation. Before using the database persistence, you will need to create a database, and runs the following two SQL scripts against it in order:
For more information on the SQL instance store, please refer to http://msdn.microsoft.com/en-us/library/ee395773.aspx and http://msdn.microsoft.com/en-us/library/dd489452(v=vs.100).aspx.
Later my colleague will provide more details and demonstrate a few scenarios with this IP. I may also give some technical details. If you have any questions or feature request, please let me know. Thanks!