Installing and Configuring the Workflow Management Service

This topic describes how to install and configure the Workflow Management Service (WMS).

Installing the WMS

The AppFabric installation performs the following operations related to the WMS feature:

  1. Copies the WorkflowManagementService.exe file to the C:\Windows\System32\AppFabrifc folder.

  2. Adds the following WMS section to the root Web.config file. The WMS instance is configured without a name. The section <persistence><workflowManagement> is locked to root Web.config.

    <configuration>
        <microsoft.applicationServer>
            <persistence>
                <workflowManagement>
                    <workflowManagementServiceInstances>
                        <workflowManagementServiceInstance name="" />
                    </workflowManagementServiceInstances>
                </workflowManagement>
            </persistence>
        </microsoft.applicationServer>
    </configuration>
    

    Tip

    The default WMS instance is a nameless (no name) instance.

  3. Copies the WorkflowManagementService.exe.config file to C:\Windows\System32\AppFabric and adds the following section to the configuration file to enable efficient garbage collection on multi-core or multi-processor computers.

    <configuration>
        <runtime>
            <gcServer enabled="true" />
        </runtime>
    </configuration>
    
  4. Creates SQL artifacts required by AppFabric by creating and executing Create_Persistence_Schema.sql and Create_Persistence_Logic.sql in the C:\Windows\System32\AppFabric\Schema folder.

  5. Installs the Workflow Management Service as a Windows service. The display name for the service in the Services control panel applet is Application Server Workflow Management.

Configuring the WMS to Monitor a Specific Instance Store

By default, the WMS monitors all the instance stores defined in the Web.config files associated with the root, site, and application scopes. You can also configure the WMS to monitor specific instance stores. The following list provides the steps to do so:

  1. Create and configure the instance store by using the instructions specified by the vendor of the instance store.

  2. Add the instance stores that you want the WMS to monitor to the root Web.config file as shown in the following configuration fragment.

    <configuration>
        <microsoft.applicationServer>
            <persistence>
                <workflowManagement>
                    <workflowManagementServiceInstances>
                        <workflowManagementServiceInstance name="">
                            <instanceStores>
                                <instanceStore name="storeA" location="[root, SiteName or VPath]" />
                                <instanceStore name="storeB" location="[root, SiteName or VPath]" />
                            </instanceStores>
                        </workflowManagementServiceInstance>
                    </workflowManagementServiceInstances>
                </workflowManagement>
            </persistence>
        </microsoft.applicationServer>
    </configuration>
    
  3. Start the Application Server Workflow Management Service by using the Services snap-in if the service is not already started.

Configuring Multiple WMS Instances

Warning

This is not a supported scenario at this time.

If you want to have multiple WMS instances running on a system, you should add more workflowManagementServiceInstance elements to the configuration file and name each instance as shown in the following configuration fragment. In the following example, two WMS instances named WMS-1 and WMS-2 are configured. WMS-1 is configured to monitor instance stores storeA and storeB and WMS-2 is configured to monitor instance store storeC.

<configuration>
    <microsoft.applicationServer>
        <persistence>
            <workflowManagement>
                <workflowManagementServiceInstances>
                    <workflowManagementServiceInstance name="">
                        <instanceStores>
                            <instanceStore name="storeA" location="[root, SiteName or VPath]" />
                            <instanceStore name="storeB" location="[root, SiteName or VPath]" />
                        </instanceStores>
                    </workflowManagementServiceInstance>
                    <workflowManagementServiceInstance name="WMS-1">
                        <instanceStores>
                            <instanceStore name="storeC" location="[root, SiteName or VPath]" />
                        </instanceStores>
                    </workflowManagementServiceInstance>
                    <workflowManagementServiceInstance name="WMS-2">
                        <instanceStores>
                            <instanceStore name="storeD" location="[root, SiteName or VPath]" />
                            <instanceStore name="storeE" location="[root, SiteName or VPath]" />
                            <instanceStore name="storeF" location="[root, SiteName or VPath]" />
                        </instanceStores>
                    </workflowManagementServiceInstance>
                </workflowManagementServiceInstances>
            </workflowManagement>
        </persistence>
    </microsoft.applicationServer>
</configuration>

While registering each instance of the WMS as a service with the Service Control Manager (SCM), you should specify the name of the instance by using the –name parameter. For example, to use the preceding configuration file, you need to register two WMS instances. The first one should be registered with WMS-1 as the name and the second one with WMS-2 as the name.

Note

An exception caused by an instance store object loaded by the WMS may bring the entire WMS process down. This affects all other instance stores loaded by the WMS. In this scenario, you may want to assign different WMS instances to different instances for process isolation.

Important

For securing persistence stores and endpoints used by the WMS, see Security Configuration for Persistence Stores.

Configuring Workflow Management Service for Remoting

For the Workflow Management service to use remoting it must allow identity to properly flow to a remote connection. For the Workflow Management service running on systems besides Windows7 R2, the configuration needs to be configured as follows:

<configuration>
   <runtime>
      <gcServer enabled="true"/>
      <legacyImpersonationPolicy enabled=”false”/>
      <alwaysFlowImpersonationPolicy enabled=”true”/>
   </runtime>
</configuration> 

  2012-09-12