.NET 3.5をターゲットとするVS2010でカスタムワークフローアクティビティを作成しています。 DLLはMicrosoft System Center Service Managerのカスタムワークフローで実際に使用されていますが、私はそれが私の問題だとは思わない。カスタムワークフローアクティビティエラー '値はnullにはなりません'
私はパブリック文字列プロパティを持っています。ユーザは、そのアクティビティで使用する文字列を入力します。ただし、WFが実行されると、 '値はnullにはなりません'というエラーが出力されます。自分のコードやその他のものであればターゲットにしたい
カスタムアクティビティをデザイナにドラッグすると、そのプロパティのデザイナに文字列のテキストを入力できます。それがエラー「nullにすることはできません値」になっているので
public static DependencyProperty ChangeRequestStageProperty = DependencyProperty.Register("ChangeRequestStage", typeof(String), typeof(UpdateChangeRequestStage));
[DescriptionAttribute("The value to set the ChangeRequestStage Property in the ChangeRequest Extension class.")]
[CategoryAttribute("Change Request Extension")]
[BrowsableAttribute(true)]
[DesignerSerializationVisibilityAttribute(DesignerSerializationVisibility.Visible)]
public String Stage
{
get { return ((String)(base.GetValue(UpdateChangeRequestStage.ChangeRequestStageProperty))); }
set { base.SetValue(UpdateChangeRequestStage.ChangeRequestStageProperty, value); }
}
protected override ActivityExecutionStatus Execute(ActivityExecutionContext executionContext)
{
EnterpriseManagementGroup emg = CreateEMG();
//System.WorkItem.ChangeRequest Extension - ClassExtension_928bec0a_cac4_4a0a_bd89_7146c9052fbe
ManagementPackClass mpcChangeRequest = emg.EntityTypes.GetClass(new Guid("8c6c6057-56ad-3862-47ec-dc0dde80a071"));
//System.WorkItemContainsActivity Relationship Class
ManagementPackRelationship workItemContainsActivityRelationship = emg.EntityTypes.GetRelationshipClass(new Guid("2DA498BE-0485-B2B2-D520-6EBD1698E61B"));
EnterpriseManagementObject changeRequest = null;
//Loop thru each emo (Change Request in this case), and assign it. There will never be more than 1 emo returned
foreach (EnterpriseManagementObject obj in emg.EntityObjects.GetRelatedObjects<EnterpriseManagementObject>(executionContext.ContextGuid, workItemContainsActivityRelationship, TraversalDepth.OneLevel, ObjectQueryOptions.Default))
{ changeRequest = obj; }
EnterpriseManagementObjectProjection emop = new EnterpriseManagementObjectProjection(changeRequest);
if (emop != null)
{ emop.Object[mpcChangeRequest, "ChangeRequestStage"].Value = Stage; }
emop.Commit();
return base.Execute(executionContext);
}
、私は推測していることは、この行にあります:
emop.Object[mpcChangeRequest, "ChangeRequestStage"].Value = Stage;
私は価値の作品をハードコーディングかどうかをテストして見るつもりですかない。何か案は? は、ここにコード
私はこれがコードの問題ではないと思います。私はそれがSCSMの問題だと思う。ステージ変数を調べる代わりに、ハードコードされた値 "TEST VALUE"を試しました。 –
問題は、WF自体ではなく、Service Manager SDKに関連しています。 –