首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >递归调用Workflow

递归调用Workflow
EN

Stack Overflow用户
提问于 2009-12-09 16:04:23
回答 2查看 563关注 0票数 1

我有一个工作流,在某个时候,需要递归地触发。

我好像想不出该怎么做。

我尝试了下面的代码,但是上下文最终为null?

代码语言:javascript
复制
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);
}
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2009-12-09 17:12:14

这里的主要问题是,在本例中,发送方是CodeActivity,而不是ActivityExecutionContext。所以这段代码在第一关就失败了。

下面是一个定制活动的示例,它可以完成您所追求的任务:-

代码语言:javascript
复制
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类型。

票数 2
EN

Stack Overflow用户

发布于 2009-12-09 17:11:54

您的发件人是CodeActivity类型,而不是ActivityExecutionContext类型。您需要创建一个自定义活动并重写Execute方法,该方法将传递给您一个ActivityExecutionContext。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1874896

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档