2

StateMachineに状態間でデータベースアクションを実行させようとしています。

したがって、CallExternalMethodActivityを使用して、ExternalDataExchangeAttributeで装飾されたクラスで「BeginExecuteNonQuery」関数を呼び出す「開始」状態があります。その後、SetStateActivityを使用して「終了」状態に変更します。

「終了」状態は、HandleExternalEventActivityを使用して「EndExecuteNonQuery」イベントをリッスンします。

ローカルサービスをステップスルーして、「BeginExecuteNonQuery」関数に入ることができます。

問題は、「EndExecuteNonQuery」がnullであるということです。

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);
}

実装で何が間違っているのですか?

-スタン

4

2 に答える 2

0

ここに示すように構成ファイルを変更して、コードなしで ExternalDataExchangeService を使用しています。

于 2010-03-19T14:08:38.553 に答える