Create a Custom Workflow Activity
This topic describes how to create a custom workflow activity and register it for use in Microsoft Dynamics CRM 2011 and Microsoft Dynamics CRM Online. For Microsoft Dynamics CRM Online, custom workflow activities can only be registered to execute in the sandbox (partial trust). Microsoft Dynamics CRM Online support for sandbox execution of custom workflow activities was added in the Microsoft Dynamics CRM December 2012 Service Update. For more information about the sandbox and partial trust, see Plug-in Isolation, Trusts, and Statistics.
|The Developer Toolkit for Microsoft Dynamics CRM 2011 and Microsoft Dynamics CRM Online provides a streamlined experience for development of custom workflow activities. For more information, see Create and Deploy Workflow Libraries Using the Developer Toolkit.|
In This Topic
Required Software and Assemblies
To develop Windows Workflow Foundation 4 custom activities, you must develop them on Microsoft .NET Framework 4. If you plan to register your custom workflow activities with Microsoft Dynamics CRM Online, you must build them using the Microsoft .NET Framework 4 PU3 (platform update 3) or a later version, such as .NET 4.5.
The following assemblies must be added as references in your project. They can be found in the
SDK\Bin folder in Microsoft Dynamics CRM SDK.
Use the CodeActivity Workflow Base Class
To create a custom workflow activity, create a class that inherits from the CodeActivity workflow base class. This class is available in the System.Activities namespace. Activities that inherit from the CodeActivity class can override the Execute method to produce custom functionality.
To create a custom activity that inherits from CodeActivity
Start Microsoft Visual Studio 2010.
On the File menu, click New, and then click Project.
In the New Project dialog box, select Workflow under Visual C# in the Installed Templates pane, and then select Activity Library.
Specify a name and location for the solution, and then click OK.
Navigate to the Project menu and select Properties. On the Application tab, specify .NET Framework 4 as the target framework.
Add references to the
Delete the Activity1.xaml file in the project.
Add a class file (.cs) to the project. In Solution Explorer, right-click the project, select Add, and then click Class. In the Add New Item dialog box, type a name for the class, and then click Add.
Open the class file, and add the following using directives:
Make the class inherit from the CodeActivity class and give it a public access modifier as shown here:
Add functionality to the class by adding an Execute method:
For more information, see Add Metadata to a Custom Workflow Activity.
Specify input and output parameters. For more information, see Add Metadata to a Custom Workflow Activity.
Compile the project to create an assembly (.dll).
To view a code sample that demonstrates how to create a custom workflow activity, see Sample: Create a Custom Workflow Activity.
|For improved performance, Microsoft Dynamics CRM caches custom workflow activity instances. The custom workflow activity’s Execute method should be written to be stateless because the constructor is not called for every invocation of the custom workflow activity. Also, multiple system threads could execute the custom workflow activity at the same time. All per invocation state information is stored in the context, so it is not recommended to use global variables or member variables to pass data from one invocation to the next.|
Specify the Name and Group Name for a Custom Workflow Activity
When you register a custom workflow activity assembly, specify the name and group name. The name property specifies the name of the workflow activity. The group name property specifies the name of the submenu added to the main menu in the Microsoft Dynamics CRM process designer. These properties link the custom workflow activity with the Microsoft Dynamics CRM process designer, so that the custom activity name will appear in the user interface.
To specify the name and group name for a custom workflow activity, use the PluginType.Name and PluginType.WorkflowActivityGroupName attributes when you register the custom workflow activity assembly. For more information about registering custom workflow activities, see Register and Use a Custom Workflow Activity Assembly. If the PluginType.Name and PluginType.WorkflowActivityGroupName attributes are set to null, the custom activity is hidden from the Microsoft Dynamics CRM workflow designer and is only accessible from XAML workflows.
If you are using the Plug-in Registration tool to register the custom workflow activity assembly, you can specify appropriate values in the Name and WorkflowActivityGroupName boxes, under the Editable region. For more information about using the Plug-in Registration tool, see Walkthrough: Register a Plug-in Using the Plug-in Registration Tool.
After this custom workflow activity is registered, you can use it from the Microsoft Dynamics CRM process designer for workflows or dialogs. For more information, see Register and Use a Custom Workflow Activity Assembly.
ConceptsCreate and Deploy Workflow Libraries Using the Developer Toolkit
Add Metadata to a Custom Workflow Activity
Use the IOrganization Web Service in a Custom Workflow Activity
Other ResourcesCustom Workflow Activities (Workflow Assemblies) for Microsoft Dynamics CRM
Sample: Create a Custom Workflow Activity
Sample: Azure Aware Custom Workflow Activity
Windows Workflow Foundation 4 Base Activity Classes
Microsoft Dynamics CRM 2011 and Microsoft Dynamics CRM Online
Send comments about this topic to Microsoft.
© 2012 Microsoft Corporation. All rights reserved.