【问题标题】:Is there any way to pass Output of one workflow to another without using outarguments?有没有办法在不使用参数的情况下将一个工作流的输出传递给另一个工作流?
【发布时间】:2016-06-16 10:28:00
【问题描述】:

我最近开始使用 Workflows。我可以通过使用 OutArgument 将一个活动的输出作为输入传递给另一个活动。不使用 OutArgument 是否可能。

如果可能,请建议我怎么做?

谢谢大家

【问题讨论】:

    标签: workflow-foundation-4 workflow-foundation


    【解决方案1】:

    您可以使用工作流扩展来充当整个工作流范围内的变量存储库。

    创建一个包含属性的工作流扩展。 将扩展添加到工作流应用程序。 从活动中设置或获取属性的值。

    https://msdn.microsoft.com/en-us/library/ff460215(v=vs.110).aspx

    回应您的评论。

    你的假设是错误的。扩展“保存”活动 1 的输出,然后可用于活动 2。

    例如:

    创建一个类来保存属性:

    public class PropertyStoreExtension
    {
        int _myProperty
        public int MyProperty
        {
            get
            {
                return this._myProperty;
            }
            set
            {
                this._myProperty = value;
            }
       } 
    }
    

    将此添加为您的工作流程的扩展:

    PropertyStoreExtension propertyStoreExtension = new PropertyStoreExtension
    WorkflowInvoker myWorkflowInstence = new        
    WorkflowInvoker(myWorkflowDefinition());
    myWorkflowInstence.Extensions.Add(propertyStoreExtension); 
    myWorkflowInstence.Invoke()
    

    您的工作流程包含 2 个活动: 第一个获取其“输出”并将其存储在扩展中。

    public class Activity1_SetProperty: CodeActivity
    {
       protected override void Execute(CodeActivityContext context)
       {
           PropertyStoreExtension pse =context.GetExtension<PropertyStoreExtension>();
    
           if (pse != null)
           {
              pse.MyProperty=outputValue;                     
           }
    
       }
    }
    

    第二个从扩展中获取值。

    public class Activity2_GetProperty: CodeActivity
    {
       protected override void Execute(CodeActivityContext context)
       {
           PropertyStoreExtension pse =context.GetExtension<PropertyStoreExtension>();
    
           if (pse != null)
           {
              int intputValue; = pse.MyProperty                     
           }
    
       }
    }
    

    【讨论】:

    • 但是在这种情况下是否可以访问activity1的输出并将其作为输入发送到Activity2?我仍然认为我需要在Activity1中声明outArgument变量。然后我可以将该参数值从 Host 分配给 Extension 类,以在 activity2 中将其作为输入。如果我错了,请纠正我...
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-11-29
    • 1970-01-01
    • 1970-01-01
    • 2021-07-10
    • 1970-01-01
    • 1970-01-01
    • 2023-02-01
    相关资源
    最近更新 更多