2

我正在嘗試使StateMachine在狀態之間執行一些數據庫操作。在StateMachine中使用CallExternalMethodActivity/HandleExternalEventActivity

所以我有一個「啓動」狀態,使用CallExternalMethodActivity在用ExternalDataExchangeAttribute裝飾的類上調用「BeginExecuteNonQuery」函數。之後,它使用SetStateActivity更改爲「結束」狀態。

「結束」狀態使用HandleExternalEventActivity來偵聽「EndExecuteNonQuery」事件。

我可以逐步通過本地服務,進入「BeginExecuteNonQuery」函數。

問題是「EndExecuteNonQuery」爲空。

public class FailoverWorkflowController : IFailoverWorkflowController 
{ 
    private readonly WorkflowRuntime workflowRuntime; 

    private readonly FailoverWorkflowControlService failoverWorkflowControlService; 
    private readonly DatabaseControlService databaseControlService; 

    public FailoverWorkflowController() 
    { 
     workflowRuntime = new WorkflowRuntime(); 
     workflowRuntime.WorkflowCompleted += workflowRuntime_WorkflowCompleted; 
     workflowRuntime.WorkflowTerminated += workflowRuntime_WorkflowTerminated; 

     ExternalDataExchangeService dataExchangeService = new ExternalDataExchangeService(); 
     workflowRuntime.AddService(dataExchangeService); 

     databaseControlService = new DatabaseControlService(); 
     workflowRuntime.AddService(databaseControlService); 

     workflowRuntime.StartRuntime(); 
    } 

    ... 
} 

...

public void BeginExecuteNonQuery(string command) 
{ 
    Guid workflowInstanceID = WorkflowEnvironment.WorkflowInstanceId; 

    ThreadPool.QueueUserWorkItem(delegate(object state) 
            { 
             try 
             { 
              int result = ExecuteNonQuery((string)state); 
              EndExecuteNonQuery(null, new ExecuteNonQueryResultEventArgs(workflowInstanceID, result)); 
             } 
             catch (Exception exception) 
             { 
              EndExecuteNonQuery(null, new ExecuteNonQueryResultEventArgs(workflowInstanceID, exception)); 
             } 
            }, command); 
} 

我在做什麼錯我的執行?

-Stan

回答

1

我不能從代碼片斷告訴,但要確保你使用的是ExternalDataExchangeService加入托管服務並不會增加你直接服務的運行。 ExternalDataExchangeService負責添加所需的事件處理程序並將事件轉換爲工作流的排隊消息。

+0

我使用ExternalDataExchangeService加入... 我會發布更多的代碼給你看...... – 2009-08-27 20:23:30

+0

你是對的。 ..我沒有使用ExternalDataExchangeService ... 讓我試試看看它是怎麼回事... – 2009-08-27 20:32:38

+0

是... 你是對的.. – 2009-08-27 20:50:26

0

我使用ExternalDataExchangeService加入無需代碼改變我的配置文件,如here

相關問題