Task 2: Configure Runtime Services using App.Config
In Task 1: Configure Runtime Services Using Code, you added the DefaultWorkflowSchedulerService service to the Windows Workflow Foundation runtime engine by calling the AddService method that is defined in the WorkflowRuntime class. In this exercise, you use a different method to configure runtime services: you use an application configuration file.
Using a configuration file is a more flexible alternative because it enables you to create several different configurations of the Windows Workflow runtime engine that your application can use. For example, you can create a configuration that does not use any services or you can create a runtime engine configuration that uses persistence and tracking during workflow execution. Additionally, these different configurations can be defined in the same configuration file and accessed by your host application as required.
Note
If you completed Task 1: Configure Runtime Services Using Code, you must undo all of the changes you made to the project because you are using a configuration file to configure runtime services. The project files provided with this task do not contain the code added in the previous task and therefore provides a good starting point.
Note
While you are encouraged to follow the exercises in a linear manner, it is not required. You can start this exercise by opening the sample project and proceeding to the steps in the following section.
To create the application configuration file
Create a new file named App.config in your project directory.
In the HostingWorkflows project file, in the ItemGroup element that contains your source files, add a new element named None.
Add an attribute named Include with the value "App.config".
To define the application configuration file
In the App.config file, create the standard XML-processing instruction with UTF-8 encoding.
<?xml version="1.0" encoding="utf-8" ?>
Create a root element named configuration.
<configuration> </configuration>
In the configuration element, create a new element named configSections.
<configSections> </configSections>
In the configSections element, create a new element named section.
Add an attribute named name with the value "HostingWorkflowRuntime".
Add another attribute named type with the value "System.Workflow.Runtime.Configuration.WorkflowRuntimeSection, System.Workflow.Runtime, Version=3.0.00000.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35".
<section name="HostingWorkflowRuntime" type="System.Workflow.Runtime.Configuration.WorkflowRuntimeSection, System.Workflow.Runtime, Version=3.0.00000.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" />
Note
You can create as many configuration sections as you want. For this exercise, however, you only have to create one.
Create a new element in the configuration node named HostingWorkflowRuntime that contains an attribute named name with the value "Hosting".
Note
This element name is the same name that you specified in the name attribute for the section that you created in step 5. If you create multiple configuration sections, create new elements that correspond to each section name.
<HostingWorkflowRuntime Name="Hosting"> </HostingWorkflowRuntime>
In the HostingWorkflowRuntime element, create a new element named CommonParameters.
<CommonParameters/>
In the HostingWorkflowRuntime element, create a new element named Services.
<Services> </Services>
In the Services element, create a new element named add.
Add an attribute named type with the value System.Workflow.Runtime.Hosting.DefaultWorkflowSchedulerService, System.Workflow.Runtime, Version=3.0.00000.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35.
Add another attribute named maxSimultaneousWorkflows with the value 1.
<add type="System.Workflow.Runtime.Hosting.DefaultWorkflowSchedulerService, System.Workflow.Runtime, Version=3.0.00000.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" maxSimultaneousWorkflows="1"/>
Your App.config file appears similar to the following configuration.
<?xml version="1.0" encoding="utf-8" ?> <configuration> <configSections> <section name="HostingWorkflowRuntime" type="System.Workflow.Runtime.Configuration.WorkflowRuntimeSection, System.Workflow.Runtime, Version=3.0.00000.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" /> </configSections> <HostingWorkflowRuntime Name="Hosting"> <CommonParameters/> <Services> <add type="System.Workflow.Runtime.Hosting.DefaultWorkflowSchedulerService, System.Workflow.Runtime, Version=3.0.00000.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" maxSimultaneousWorkflows="1"/> </Services> </HostingWorkflowRuntime> </configuration>
To use the application configuration file
In the Main method of the Program class, add a parameter to the WorkflowRuntime constructor that is used to instantiate the WorkflowRuntime object.
This parameter is a String type that specifies the name of the configuration section to use.
Compiling the Code
For information about compiling your code, see Compiling the Code.
In Task 3: Use the Windows Workflow Persistence Service, you learn how to use the SqlWorkflowPersistenceService service to store the current state of your workflow.
See Also
Reference
DefaultWorkflowSchedulerService
System.Workflow.Runtime.Configuration
Concepts
How to: Add and Remove Workflow Services
Other Resources
Task 3: Use the Windows Workflow Persistence Service
Workflow Configuration Formats
Copyright © 2007 by Microsoft Corporation. All rights reserved.
Last Published: 2010-03-04