ActivityContext, LocationReferenceEnvironment, Arguments和Var

本文关键字:Var LocationReferenceEnvironment ActivityContext Arguments | 更新日期: 2023-09-27 17:53:27

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

WorkflowApplication有一个HostEnvironment属性,根据文档为工作流实例的参数和变量获取或设置根环境。

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

我想最大限度地控制给定工作流的上下文,但我很难理解所有这些东西的内部工作原理。有人可以解释给我和/或给我指出一些好的文章最好从编程的角度来看。不幸的是,MSDN,特别是。net框架类库,缺乏好的WF4文档。

ActivityContext, LocationReferenceEnvironment, Arguments和Var

我认为这里没有任何关于内部的文档。不确定它是否会对你有很多好处,大多数(如果不是全部的话)这些东西都是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);