我正在嘗試使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
我使用ExternalDataExchangeService加入... 我會發布更多的代碼給你看...... – 2009-08-27 20:23:30
你是對的。 ..我沒有使用ExternalDataExchangeService ... 讓我試試看看它是怎麼回事... – 2009-08-27 20:32:38
是... 你是對的.. – 2009-08-27 20:50:26