ActivityContext,LocationReferenceEnvironment,Arguments和Variables如何在WF4中工作?

时间:2011-04-26 01:13:04

标签: c# workflow-foundation-4

我知道流量控制和上下文在WF4上是分开的,但我问你如何控制给定工作流的上下文。

WorkflowApplication具有HostEnvironment属性,因此文档获取或设置工作流实例的参数和变量的根环境

LocationReferenceEnvironmentActivityContext本身有什么区别?谁创建和控制上下文?据我了解,每个活动都有自己的上下文,但并非所有活动都有变量,例如。

我希望对给定工作流程的上下文进行最大程度的控制,但我无法理解所有这些内容的内部工作原理。有人可以向我解释和/或从编程的角度给我一些好的文章。不幸的是,MSDN,更具体地说是.NET Framework类库,在WF4文档上很少见。

1 个答案:

答案 0 :(得分:2)

我认为这里没有关于内部的任何文档。不确定它是否对你有好处,大多数(如果不是全部)这些东西都是WF4内部的,即使你想要也不能改变。

基本上,位置参考是存储数据的地方,这是工作流中变量公开的内容。默认情况下,您只能向复合活动添加变量。这里没有任何技术原因只是变量用于在多个活动之间共享数据,因此将它们添加到没有子项或只有一个项目的活动中并不会为您带来任何好处。如果你愿意的话,你可以在自己的活动中自由地这样做。

您想要实现什么,您需要对活动上下文进行最大程度的控制?

更新:不确定这是否有帮助,但这是您在代码中创建VB表达式的方法:

var wf = new Sequence()
{
    Variables =
    {
        new Variable<string>("var1", "Some value"),
        new Variable<int>("var2", c=> Environment.TickCount),
    },
    Activities =
    {
        new WriteLine() {
            Text = new VisualBasicValue<string>("\"String value: \" & var1 ")
        },
        new WriteLine() {
            Text = new VisualBasicValue<string>("\"Int value: \" & var2 ")
        }

    }
};

WorkflowInvoker.Invoke(wf);