C# Windows工作流基础和持久性中的子工作流
我有一个自定义活动,它应该根据在InArgument中传递的名称调用子工作流 公共类调用子工作流活动:本地活动 { } 这个解决办法实际上是可行的。但我不确定在子工作流中如何处理持久性,也不确定在子工作流完成时父工作流如何继续 我现在的问题是:C# Windows工作流基础和持久性中的子工作流,c#,.net,workflow-foundation,C#,.net,Workflow Foundation,我有一个自定义活动,它应该根据在InArgument中传递的名称调用子工作流 公共类调用子工作流活动:本地活动 { } 这个解决办法实际上是可行的。但我不确定在子工作流中如何处理持久性,也不确定在子工作流完成时父工作流如何继续 我现在的问题是: 如果没有使用metadata.AddImplementationChild(子工作流) 如果使用WorkflowInstance类,如何处理持久性,以及在子工作流完成时如何继续父工作流 我解决了我的问题如下: protected override vo
metadata.AddImplementationChild(子工作流)
我解决了我的问题如下:
protected override void CacheMetadataInternal(System.Activities.NativeActivityMetadata metadata)
{
InArgument<String> workflowVersionArgument = SelectedWorkflow;
if (workflowVersionArgument != null && workflowVersionArgument.Expression != null)
{
String selectedWorkflowString = workflowVersionArgument.Expression.ToString();
if (selectedWorkflowString != null)
{
WorkflowVersion wfVersion = WorkflowVersion.LoadFromXML(selectedWorkflowString);
if (wfVersion != null && wfVersion.WorkflowName != null)
{
VersionedActivity subWorkflow = ActivityFactory.Instance.CreateActivity(wfVersion.WorkflowName, wfVersion.Version);
if (subWorkflow != null && subWorkflow.ActivityProp != null)
{
subWorkflowInternal = subWorkflow.ActivityProp;
metadata.AddImplementationChild(subWorkflowInternal);
}
}
}
}
}
protected override void CacheMetadataInternal(System.Activities.NativeActivityMetadata元数据)
{
InArgument workflowVersionArgument=SelectedWorkflow;
if(workflowVersionArgument!=null&&workflowVersionArgument.Expression!=null)
{
String selectedWorkflowString=workflowVersionArgument.Expression.ToString();
如果(selectedWorkflowString!=null)
{
WorkflowVersion wfVersion=WorkflowVersion.LoadFromXML(selectedWorkflowString);
if(wfVersion!=null&&wfVersion.WorkflowName!=null)
{
VersionedActivity子工作流=ActivityFactory.Instance.CreateActivity(wfVersion.WorkflowName,wfVersion.Version);
if(子工作流!=null&&subWorkflow.ActivityProp!=null)
{
subWorkflowInternal=subWorkflow.ActivityProp;
元数据.AddImplementationChild(子工作流内部);
}
}
}
}
}
protected override void Execute(NativeActivityContext context)
{
Activity subWorkflow = ActivityFactory.CreateActivity(SelectedWorkflow.Get(context));
WorkflowApplication wfInstance = new WorkflowApplication(subWorkflow);
}
protected override void CacheMetadataInternal(System.Activities.NativeActivityMetadata metadata)
{
InArgument<String> workflowVersionArgument = SelectedWorkflow;
if (workflowVersionArgument != null && workflowVersionArgument.Expression != null)
{
String selectedWorkflowString = workflowVersionArgument.Expression.ToString();
if (selectedWorkflowString != null)
{
WorkflowVersion wfVersion = WorkflowVersion.LoadFromXML(selectedWorkflowString);
if (wfVersion != null && wfVersion.WorkflowName != null)
{
VersionedActivity subWorkflow = ActivityFactory.Instance.CreateActivity(wfVersion.WorkflowName, wfVersion.Version);
if (subWorkflow != null && subWorkflow.ActivityProp != null)
{
subWorkflowInternal = subWorkflow.ActivityProp;
metadata.AddImplementationChild(subWorkflowInternal);
}
}
}
}
}