C# WCF工作流服务的输入参数在什么时候得到实例化/设置?
我有一个非常简单的XOML文件,在C# WCF工作流服务的输入参数在什么时候得到实例化/设置?,c#,.net-4.0,workflow,parameter-passing,xoml,C#,.net 4.0,Workflow,Parameter Passing,Xoml,我有一个非常简单的XOML文件,在ReceiveActivity处理程序中有一个代码活动 ReceiveActivity映射到名为IRulesEngineService的接口,该接口上有一个方法 void DoWork(int i); 接口方法上的输入参数映射到Xoml上名为I 我现在正试图在某一点上进入工作流生命周期: 就在执行第一个(并且仅在本例中)代码活动之前 在我的工作流中将i参数分配给i之后 我尝试过重写XOML上的所有各种方法和事件,但在所有情况下,I在我尝试过的所有事件和重
ReceiveActivity
处理程序中有一个代码活动
ReceiveActivity映射到名为IRulesEngineService
的接口,该接口上有一个方法
void DoWork(int i);
接口方法上的输入参数映射到Xoml上名为I
我现在正试图在某一点上进入工作流生命周期:
- 就在执行第一个(并且仅在本例中)代码活动之前
- 在我的工作流中将
参数分配给i
之后i
I
在我尝试过的所有事件和重写中始终为零。然后在第一个代码活动中正确设置为传入参数。e、 g.想象我将8
传递给客户端的DoWork调用
public int I {get; set;}
protected override void Initialize(System.IServiceProvider provider)
{
I = I*10; //I is still 0
base.Initialize(provider);
I = I * 10; //I is still 0
}
//Event on Xoml Designer
private void Pinnacle_Initialized(object sender, EventArgs e)
{
I = I * 10; //I is still 0
}
//Event on Xoml Designer
private void receiveActivity1_OperationValidation(object sender, OperationValidationEventArgs e)
{
I = I * 10; //I is still 0
}
protected override void OnActivityExecutionContextLoad(IServiceProvider provider)
{
I = I * 10; //I is still 0
base.OnActivityExecutionContextLoad(provider);
I = I * 10; //I is still 0
}
private void codeActivity1_ExecuteCode(object sender, EventArgs e)
{
DataAccess.WriteToDummyData(ConnectionString, "Pinnacle From Code Activity " + I);
//I is now magically '8' what the heck set this?
}
任何人都知道在工作流生命周期中这些参数的实例化/绑定/设置发生在何处。查看.NET framework源代码,在执行之前不可能访问代码活动中的数据输入。在System.Workflow.Activities命名空间中的ReceiveActivity类中,有一个精确的输入填充点。我已经从源代码中获取了类 见下图: 如图中所示,此时将填充输入:
this.OperationHelper.PopulateInputs(this, requestContext.Inputs);
在ReceiveActivity类执行活动之前调用上述指令。在这个阶段,我认为在codeActivity1\u ExecuteCode被执行之前,没有一个公共事件可以订阅来操纵您的数据
希望能有帮助