How to Reference a Workflow
Applies To: System Center 2012 - Service Manager
[This topic is pre-release documentation and is subject to change in future releases. Blank topics are included as placeholders.]
You can use Management pack monitoring with Windows Workflow Foundation to provide workflow logic to the management pack. A workflow can be integrated into the management pack by use of the WorkflowSubscription subscription action. The following table describes the two key fields required to link the workflow binary with the subscription action.
Field | Description | Example Value |
---|---|---|
AssemblyName |
The name of the assembly installed on the Service Manager server. |
WorkflowPackageRequest |
WorkflowTypeName |
The fully qualified name of the class inside the assembly. |
WorkflowPackageRequest.PackageInitial |
The workflow can be customized by providing parameters. The name and type of a parameter will correspond to the name and type of the desired property on the class instance specified by the subscription action WorkflowTypeName setting. The only valid parameter types are those defined by the WorkflowParameterType enumeration.
Important
The release version of Service Manager requires that if a subscription contains a workflow action, it must be associated with a category to appear in the Service Manager console.
To specify parameters on the workflow
Create an instance of the WorkflowSubscription class.
Set the AssemblyName and WorkflowTypeName properties.
Enable the workflow by setting the Enabled property to true.
Add any workflow parameters needed by the workflow.
Insert the subscription by using the enterprise management group’s subscription API.
Have the management pack accept the changes.
Example
The following example demonstrates how to create a workflow subscription action that uses instance criteria and configures two workflow parameters.
EnterpriseManagementGroup mg = new EnterpriseManagementGroup("localhost");
string managementPackName = "RePackaging.Library";
string managementClassName = "RePackaging.Request";
ManagementPackCriteria searchCrit = new ManagementPackCriteria("$Name='" + managementPackName + "'$");
foreach (var mp in mg.ManagementPacks.GetManagementPacks(searchCrit))
{
InstanceTypeSubscription subCriteria = new InstanceTypeSubscription(OperationType.Add, mp.GetClass(managementClassName).Id, "");
subCriteria.BatchSize = 100;
subCriteria.PollingIntervalInSeconds = 60;
WorkflowSubscription subAction = new WorkflowSubscription("WF_AcceptPackageRequest", "Accepts the package request.", subCriteria);
subAction.AssemblyName = "WorkflowPackageRequest";
subAction.WorkflowTypeName = "WorkflowPackageRequest.PackageInitial";
subAction.Enabled = true;
subAction.Parameters.Add(new KeyValuePair<string, IWorkflowParameterValueBase>("InternalID", new WorkflowParameterValue(WorkflowParameterType.GuidType, "$Data/BaseManagedEntityId$")));
subAction.Parameters.Add(new KeyValuePair<string, IWorkflowParameterValueBase>("ClassGUID", new WorkflowParameterValue(WorkflowParameterType.GuidType, "$MPElement[Name='RePackaging.Request']$")));
mg.Subscription.InsertSubscription(mp.Id, subAction);
mp.AcceptChanges();
break;
}
<ManagementPack ContentReadable="true" SchemaVersion="1.1" OriginalSchemaVersion="1.1" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<Monitoring>
<Rules>
<Rule ID="WorkflowSubscription_378b1659_ad6c_405b_b301_2a929e56523b" Enabled="true" Target="SystemCenter!Microsoft.SystemCenter.SubscriptionWorkflowTarget" ConfirmDelivery="true" Remotable="true" Priority="Normal" DiscardLevel="100">
<Category>System</Category>
<DataSources>
<DataSource ID="DS" TypeID="SystemCenter1!Microsoft.SystemCenter.CmdbInstanceSubscription.DataSourceModule">
<Subscription>
<InstanceSubscription Type="$MPElement[Name='RePackaging.Request']">
<AddInstance />
</InstanceSubscription>
<PollingIntervalInSeconds>60</PollingIntervalInSeconds>
<BatchSize>100</BatchSize>
</Subscription>
</DataSource>
</DataSources>
<WriteActions>
<WriteAction ID="WA" TypeID="SystemCenter1!Microsoft.EnterpriseManagement.SystemCenter.Subscription.WindowsWorkflowTaskWriteAction">
<Subscription>
<EnableBatchProcessing>false</EnableBatchProcessing>
<WindowsWorkflowConfiguration>
<AssemblyName>AcceptPackageRequest</AssemblyName>
<WorkflowTypeName>WorkflowAuthoring.AcceptPackageRequest</WorkflowTypeName>
<WorkflowParameters>
<WorkflowParameter Name="InternalID" Type="guid">$Target/Id$</WorkflowParameter>
</WorkflowParameters>
<RetryExceptions />
<RetryDelaySeconds>60</RetryDelaySeconds>
<MaximumRunningTimeSeconds>7200</MaximumRunningTimeSeconds>
</WindowsWorkflowConfiguration>
</Subscription>
</WriteAction>
</WriteActions>
</Rule>
</Rules>
</Monitoring>
<LanguagePacks>
<LanguagePack ID="ENU" IsDefault="false">
<DisplayStrings>
<DisplayString ElementID="WorkflowSubscription_378b1659_ad6c_405b_b301_2a929e56523b">
<Name>WF_AcceptPackageRequest</Name>
<Description>Accepts the package request.</Description>
</DisplayString>
</DisplayStrings>
</LanguagePack>
</LanguagePacks>
</ManagementPack>
Compiling the Code
Namespaces
Microsoft.EnterpriseManagement |
Microsoft.EnterpriseManagement.Configuration |
Microsoft.EnterpriseManagement.Subscriptions |
Assemblies
Microsoft.EnterpriseManagement.Core |
See Also
Tasks
Reference
WorkflowSubscription
WorkflowParameterType