asp.net mvc4 を使用してデータの一部を管理するイントラネット サイトを開発しています。このサイトの重要な機能の 1 つは、インポート/エクスポート ジョブをトリガーすることです。これらのジョブには、5 分から 1 時間かかる場合があります。サイトのユーザーは、ジョブが現在実行されているかどうか、および以前のジョブのステータスを判断できる必要があります。多くのジョブには、重複データに関する警告メッセージが含まれていることが多く、これらの警告をサイトに表示する必要があります。
私の計画は、これらの実行時間の長いプロセスを asp.net サイトがやり取りする WCF ワークフロー サービスとして実装することです。アクティビティを介してビジネス ロジックの多くを実装し、単純なコンソール アプリケーションを使用してテストしました。サイト上の特定の「プロジェクト」に基づいてサービスを分割するために、相関ハンドルを使用していることに注意してください。
私の問題は、アクティブなジョブ (存在する場合) のステータスと、以前のジョブの警告メッセージを照会する方法です。これを行う最善の方法は、AppFabric 追跡サービスを使用し、asp.net で SQL 監視ストアにクエリを実行して、現在の状態を報告することだと思います。AppFabric をセットアップしてカスタム トラッキング メッセージを追加した後、いくつかの問題に遭遇しました。最初の問題は、特定のプロジェクトのワークフローのみを表示したいので、正しい関連付けハンドルを使用していないワークフロー インスタンスを除外する方法がわからないことです。もう 1 つの問題は、追跡データベースがかなり遅延する可能性があることです。これにより、ワークフローが現在実行されているかどうかを判断しようとすると問題が発生します。
もう 1 つの解決策として、ワークフローでデータベースを明示的に更新し、現在のステータスとエラー メッセージを使用することが考えられます。私はこの解決策に傾倒していますが、専門家のアドバイスを利用できます。
TL;DR: WCF ワークフロー サービスの実行状態と警告メッセージを照会する最良の方法を知る必要があります。