【问题标题】:Sharing variables between WorkFlow Application / SIngelton Workflow在 WorkFlow Application / SIngelton Workflow 之间共享变量
【发布时间】:2012-02-10 10:39:58
【问题描述】:

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

有没有这样的方法可以让我启动的流程在一些单例上下文中运行??

谢谢!

【问题讨论】:

    标签: workflow-foundation workflow-foundation-4


    【解决方案1】:

    在不同的工作流和实例之间共享数据的一个好方法是创建一个 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 的此实现

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2020-08-24
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-06-03
        • 1970-01-01
        相关资源
        最近更新 更多