我有一个由许多自定义活动组成的工作流程。所有这些活动都需要访问工作流本身的启动参数。我可以在所有这些自定义活动中定义 InArgument 并将工作流参数绑定到自定义活动参数,但我对这个解决方案不满意。从自定义活动访问工作流级别参数和变量声明的最佳方式是什么。我可以从 ActivityContext 获取它们吗?
谢谢。
我有一个由许多自定义活动组成的工作流程。所有这些活动都需要访问工作流本身的启动参数。我可以在所有这些自定义活动中定义 InArgument 并将工作流参数绑定到自定义活动参数,但我对这个解决方案不满意。从自定义活动访问工作流级别参数和变量声明的最佳方式是什么。我可以从 ActivityContext 获取它们吗?
谢谢。
我们通过自定义活动查看此问题的一种方法是使用 ActivityContext 中可用的 Properties 属性。我们有一个带有 InArgument 的活动,它在 execute 方法中添加了一个 ExecutionProperty,所以你最终得到:
public InArgument<Custom> MyObject {get;set;}
...
context.Properties.Add("Contact",MyObject.Get(context));
然后在您的其他活动中,您可以检查是否已设置
context.Properties.Find("Contact")
显然,如果您经常这样做,我建议您在某处使用常量而不是魔术字符串,但它应该可以避免您在设计时一遍又一遍地添加相同的参数。