私はWorkFlow 4(WF 4)の初心者ですが、MVC 3で重大な問題が発生しています。コントローラからWorkFlow 4の完了後にポップアップメッセージを表示MVC
workFlowで例外が発生した場合やoutpput引数で返されたものがある場合は、ユーザーが編集するページがあり、最後に[保存]ボタンをクリックすると、ポップアップメッセージを表示する必要があります。
[保存]ボタンをクリックすると、フォームがコントローラに送信され、ワークフローが実行されます。ワークフローが完了したら、ワークフローによるデータの更新が成功したかどうかを示す出力が表示されます。私はそれを非同期的に実行するので、メソッドがユーザーに戻り、並行してワークフローがイベントを呼び出していることを意味します。
[HttpPost()]
public ActionResult SaveVehicles(vehiclesData model) {
Services.VehiclesDataUpdate vehiclesDataUpdate = new Services.VehiclesDataUpdate(this.SessionData.DealerLotKey, null, null);
IDictionary<string, object> parameters = new Dictionary<string, object>();
parameters.Add("VehiclesDataUpdate", vehiclesDataUpdate);
parameters.Add("UnionVehicles", unionVehicles);
parameters.Add("SolrVehicles", solrVehicles);
IDictionary<string, object> outputs = new Dictionary<string, object>();
AutoResetEvent syncEvent = new AutoResetEvent(false);
WorkflowApplication wfApp = new WorkflowApplication(new VehiclesUpdate(), parameters);
wfApp.Completed = delegate(WorkflowApplicationCompletedEventArgs e) {
outputs = e.Outputs;
syncEvent.Set();
if (!errorExceptions.IsNullOrEmpty()) {
//TODO: Render a parital view to display an error message or the result of the workflow in the ouptput
//TODO: Logging.
}
};
wfApp.Aborted = delegate(WorkflowApplicationAbortedEventArgs e) {
syncEvent.Set();
};
wfApp.Run();
return View(model);
}
は、どのように私は、ユーザーのワークフロー完了に戻って何かを送ることができます:ここでは
は、コントローラ内の私のコードですか?
ありがとうございます。
[WorkflowInvoker](http://msdn.microsoft.com/en-us/library/system.activities.workflowinvoker.aspx)、[ManualResetEvent](http://msdn.microsoft.com/en-us/library/system.activities.workflowinvoker.aspx) us/library/system.threading.manualresetevent.aspx)を使用して、ワークフローアプリケーションが実行を完了したことをASP.NETワーカースレッドに通知します。 – Will
私に例を教えてもらえますか? –
ここにはたくさんのものがあります。 [wf4]を通り越して読んでください。 ASP.NETで[非同期ページ](http://msdn.microsoft.com/en-us/magazine/cc163725.aspx)を使用すると、より良い解決策が得られると考えられるので、私は答えません。問題は、適切な答えを出すために私がこれに十分に精通しているところがどこにもないことです。 – Will