我有一个工作流,在某个时候,需要递归地触发。
我好像想不出该怎么做。
我尝试了下面的代码,但是上下文最终为null?
private void codeTriggerChildren_ExecuteCode(object sender, EventArgs e)
{
ActivityExecutionContext context = sender as ActivityExecutionContext;
//context is null here?!
IStartWorkflow aWorkflow = context.GetService(typeof(ApprovalFlow)) as IStartWorkflow;
Dictionary<string, object> parameters = new Dictionary<string, object>();
parameters.Add("Parm1", "foo");
parameters.Add("Parm2", "bar");
Guid guid = aWorkflow.StartWorkflow(typeof(ApprovalFlow), parameters);
}发布于 2009-12-09 17:12:14
这里的主要问题是,在本例中,发送方是CodeActivity,而不是ActivityExecutionContext。所以这段代码在第一关就失败了。
下面是一个定制活动的示例,它可以完成您所追求的任务:-
public class RecurseApproval : Activity
{
protected override ActivityExecutionStatus Execute(ActivityExecutionContext executionContext)
{
IStartWorkflow aWorkflow = executionContext.GetService(typeof(IStartWorkflow)) as IStartWorkflow;
Dictionary<string, object> parameters = new Dictionary<string, object>();
parameters.Add("Param1", "Foo");
parameters.Add("Param2", "bar");
Guid guid = aWorkflow.StartWorkflow(typeof(ApprovalWorkflow), parameters);
return ActivityExecutionStatus.Closed;
}
}请注意,GetService获取IStartWorkflow类型。
发布于 2009-12-09 17:11:54
您的发件人是CodeActivity类型,而不是ActivityExecutionContext类型。您需要创建一个自定义活动并重写Execute方法,该方法将传递给您一个ActivityExecutionContext。
https://stackoverflow.com/questions/1874896
复制相似问题