0

私の質問がばかげているように見える場合はご容赦ください。しかし、私はワークフローにまったく慣れていません。私がやろうとしていることは、Workflow Foundationプロジェクト内にいくつかのデータベースヒットがあり、ASP.NETアプリケーション内にいくつかのデータベースヒットがあることです。私が達成しようとしているのは、同じトランザクションでWorkflowFoundationとASP.NET内でデータベース操作を実行することです。可能ですか?linq2sqlを使用しています。

これが私のコードです:

 using(var context = new MyDBContext())
 {
     context.Transaction = context.Connection.BeginTransaction();

     //Here I am calling my Workflow function

     using (WorkflowRuntime workflowRuntime = new WorkflowRuntime())
    {
        AutoResetEvent waitHandle = new AutoResetEvent(false);
        workflowRuntime.WorkflowCompleted += delegate(object sender, WorkflowCompletedEventArgs e)
        {
            waitHandle.Set();
            if ((string)e.OutputParameters["OutputMessage"] != "")
                msg = "Workflow error : " + (string)e.OutputParameters["OutputMessage"];
        };
        workflowRuntime.WorkflowTerminated += delegate(object sender, WorkflowTerminatedEventArgs e)
        {
            Console.WriteLine("ERROR: " + e.Exception.Message);
            waitHandle.Set();
        };

        WorkflowInstance instance = workflowRuntime.CreateWorkflow(typeof(MyWorkflow),           parameters);
        instance.Start();            
        waitHandle.WaitOne();
     }

     //DB Operation in ASP.NET 
     context.DbOperation();
     context.SubmitChanges();
     context.Transaction.Commit();
 }
4

1 に答える 1

1

私はそうは思わない。 instance.Start()すぐに戻ります。実際のワークフロー アクティビティは、別のスレッドで実行されます (場合によっては、別のプロセスまたは別のマシンでも実行されます)。ワークフロー内でトランザクションを管理する必要があります。

于 2012-10-10T12:20:23.470 に答える