Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Windows工作流基础和持久性中的子工作流_C#_.net_Workflow Foundation - Fatal编程技术网

C# Windows工作流基础和持久性中的子工作流

C# Windows工作流基础和持久性中的子工作流,c#,.net,workflow-foundation,C#,.net,Workflow Foundation,我有一个自定义活动,它应该根据在InArgument中传递的名称调用子工作流 公共类调用子工作流活动:本地活动 { } 这个解决办法实际上是可行的。但我不确定在子工作流中如何处理持久性,也不确定在子工作流完成时父工作流如何继续 我现在的问题是: 如果没有使用metadata.AddImplementationChild(子工作流) 如果使用WorkflowInstance类,如何处理持久性,以及在子工作流完成时如何继续父工作流 我解决了我的问题如下: protected override vo

我有一个自定义活动,它应该根据在InArgument中传递的名称调用子工作流

公共类调用子工作流活动:本地活动 {

}

这个解决办法实际上是可行的。但我不确定在子工作流中如何处理持久性,也不确定在子工作流完成时父工作流如何继续

我现在的问题是:

  • 如果没有使用
    metadata.AddImplementationChild(子工作流)
  • 如果使用WorkflowInstance类,如何处理持久性,以及在子工作流完成时如何继续父工作流

  • 我解决了我的问题如下:

     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);
                            }
                        }
                    }
                }
            }