有没有办法在不使用争论的情况下将一个工作流程的输出传递给另一个工作流程?

Is there any way to pass Output of one workflow to another without using outarguments?

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

如果可能,请告诉我怎么做?

谢谢大家

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

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

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

回应您在下方的评论。

你的假设是错误的。扩展 "holds" 来自 activity 1 的输出,然后可用于 activity 2.

例如:

创建一个 class 来保存属性:

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 个活动: 第一个获取它的 "output" 并将其存储在扩展中。

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                     
       }

   }
}