Windows Workflow Integration Pack is on CodePlex

After getting approval, today I uploaded the source code for the Windows Workflow Integration Pack to  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:

  • %windir%\Microsoft.NET\Framework\v4.0.30319\SQL\en\SqlWorkflowInstanceStoreSchema.sql
  • %windir%\Microsoft.NET\Framework\v4.0.30319\SQL\en\SqlWorkflowInstanceStoreLogic.sql

For more information on the SQL instance store, please refer to and

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!

Comments (4)

  1. Ryan Andorfer says:

    Hey Yao,

    Instead of using a magic number for the number of input parameters have you thought about making it definable in your configuration object?

  2. Zhenhua Yao says:

    Hi Ryan, Thanks for your suggestion.  That should work, the only problem is that when we change the configuration the input will be gone from the designer.  we will see if that's a better option, especially how frequently we have to use more than 10 parameters.

  3. Ryan Andorfer says:


    You only lose the objects properties when you change its reference pointer (choose a different configuration using the … on the object itself).  If you change the 'number' on the config object itself (under options) you do not have to go back and update all of the other activities but, when you use a new one or open an old one you will have access to the additional fields


  4. Zhenhua Yao says:

    Hi Ryan,

    I have made the change per your suggestion.  Please take a look at #91332.  Thanks!


Skip to main content