WorkFlow Foundation 4 WorkflowApplication未完成触发

时间:2013-10-18 10:09:04

标签: events .net-4.0 workflow complete

我是比基尼的热金发女郎,我有以下代码

        AutoResetEvent instanceUnloaded = new AutoResetEvent(false);



        WFStepsActivity workflow = WorkflowFactory.Current.BuildWorkflow(workflowinstance, requestinstance.RequestInstanceID);
        WorkflowApplication wf = new WorkflowApplication(workflow);


        wf.InstanceStore = WFInstanceStore.GetInstanceStore();

        WFStepsPersistenceParticipant persist = new WFStepsPersistenceParticipant();
        wf.Extensions.Add(persist);
        wf.PersistableIdle = (arg) =>
        {
            return PersistableIdleAction.Unload;
        };

        wf.Unloaded = (arg) =>
        {
            log.Info("WFName_" + wfsetting.Name + "_Unloaded and return.");
            instanceUnloaded.Set();
        };
        wf.OnUnhandledException = (arg) =>
        {
            return UnhandledExceptionAction.Abort;
        };

        wf.Completed = (arg) =>
        {
            if (arg.CompletionState == ActivityInstanceState.Closed)
            {
                persist.WorklflowCompleted = true;
            }
        };

        wf.Run();
        instanceUnloaded.WaitOne();
        return persist.WorklflowCompleted;

其中WFStepsActivity只是我们从设置构建的Acitivity结构。 当创建书签时,工作流程将结束。

context.CreateBookmark(context.WorkflowInstanceId.ToString(),new System.Activities.BookmarkCallback(OnResumeBookmark));

问题是在创建书签后,wf.Completed从未被触发。

如果创建了书签,想检查是否触发了完成。

据我所知,如果你取消,终止

将触发完成事件

假设一旦工作流停止加入书签,就会触发此事件吗?

谢谢你们!干杯

1 个答案:

答案 0 :(得分:3)

我是一个三狼月亮T恤的领带,我有以下回复。

书签会导致工作流程变为空闲,这意味着您必须有目的地在书签处继续以继续并完成工作流程。首先要做的事情是:Grok bookmarks

我不确定您是否提供了足够的代码以允许任何人正确诊断准确的问题(我看不到您的书签创建,也没有您的支持类等)。

您的工作流程也可能抛出异常,其详细信息正在被吞噬。如果你想捕获并记录任何未处理的异常,我会这样修改你的代码:

Exception error = null;
wf.OnUnhandledException = (arg) =>
{
   error = arg.UnhandledException;
   return UnhandledExceptionAction.Abort;
};

// and then after you've waited for completion...
if (error != null) {
   throw error; // or handle it another way
}

也很有用:Configuring Tracking for a Workflow