2013-10-18 48 views
2

我在比基尼熱金髮和我有以下代碼Workflow Foundation的4 WorkflowApplication已完成,不會觸發

 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只是我們從設置建立胡亞蓉結構。 創建書籤時,工作流程當前結束。

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

問題出在書籤創建後,wf.Completed從未觸發。

想要檢查創建書籤時是否觸發Complete。

據我所知完整的事件將是如果u取消觸發,終止

不是它假設一旦書籤工作流站,這將觸發事件?

謝謝你們!乾杯

回答

3

我是三狼月亮T恤衫的領口,我有以下回復。

書籤會導致工作流程變爲空閒狀態,這意味着您必須有目的地在書籤上繼續以繼續並完成工作流程。首先是:Grok bookmarks

我不確定您是否提供了足夠的代碼來允許任何人正確診斷確切的問題(我看不到您的書籤創建,也沒有您的支持類等)。

您的工作流也有可能拋出異常,其中的細節正在被吞噬。如果你想趕上並記錄任何未處理的異常我想正是如此ammend代碼:

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

相關問題