在WorkFlow Application / SIngelton Workflow之间共享变量

时间:2012-02-08 07:01:37

标签: workflow-foundation workflow-foundation-4

我正在运行一个c#应用程序,它正在为某些目的启动工作流活动(使用invokeworkflowapplication)。我希望能够在我从我的应用程序启动的所有流程之间共享一个静态类(某种类型的singelton类,他们可以随时访问)。

是否有这样的方法可以使我正在启动的流程在某些singelton上下文中运行?

谢谢!

2 个答案:

答案 0 :(得分:3)

在不同工作流和实例之间共享数据的一种好方法是创建workflowInstanceExtension。此扩展必须由您的应用程序添加,并且其相同的实例将用于您的所有WorkflowApplications,调用者或服务,因此它将是“单身”。

示例:

MyDataSharingExtension dse = new MyDataSharingExtension();

WorkflowApplication wfApp1 = new WorkflowApplication();
wfApp1.Extensions.Add(dse);

WorkflowApplication wfApp2 = new WorkflowApplication();
wfApp2.Extensions.Add(dse);

然后,在活动中,您可以致电

context.GetExtension<MyDataSharingExtension>().GetData();

如果您需要工作流级别的数据(而非代码),您可以进行自定义活动以将数据检索到变量。

如果它不符合您的需求,请查看enterprise variables

的此实现

答案 1 :(得分:1)

您可以在工作流程中使用任何所需的VB表达式,这样您就可以访问单个对象。您还可以使用Extensions集合将相同的对象添加到每个WorkflowApplication。在这种情况下,您可以使用检索自定义活动内的对象但不使用VB表达式。