2

セールス ファネルをエミュレートする WF4 サービスがあります。「登録」受信呼び出しから開始することで機能します。その後、10 の同様の段階があります (各段階で 2 つのレシーブで構成されます)。現在のステージが受信したデータを検証するまで、次のステージに進むことはできません。私が確信していないのは、クライアント アプリで許可されていない場合でも、受信操作が順不同で呼び出されないようにワークフローを作成するにはどうすればよいかということです。私のテスト コンソール アプリでは、ユーザーが任意の受信操作を呼び出せるようにしました (何が起こるかを見たかったからです)。

たとえば、最初に Register を呼び出し、次に "AddProspect" 受信の前に "AddQualification" 受信を呼び出した場合、テスト アプリは次のような例外を返します。

現時点では、識別子「1984c927-402b-4fbb-acd4-edfe4f0d8fa4」のサービス インスタンスに対する操作「AddQualification|{http://tempuri.org/}IZSalesFunnelService」を実行できません。操作が正しい順序で実行されていること、および使用中のバインディングが順序どおりの配信を保証していることを確認してください。

このことから、私が行う方法がわからない2つのことがあります。

まず、Fault Exception を処理してクライアントに意味のある方法で通知する方法と...

第 2 に、永続化 (およびプロパティの昇格) を使用しているため、順不同の呼び出しを行うと、昇格されたプロパティがアンロードされます。クライアントが例外を受け取った後、再度昇格されることはありません。

何かご意見は?

4

2 に答える 2

4

申し訳ありませんが、私のサーバーが少し動作しているため、ブログは一時的にオフになっています。

2 番目の質問に関しては、未処理の例外に対してワークフロー サービスが Abandon に設定されていることを確認する必要があります。この設定の AppFabric のドキュメントは次のとおりです。


放棄する。サービス ホストは、メモリ内のワークフロー サービス インスタンスを中止します。データベース内のインスタンスの状態は「アクティブ」のままです。ワークフロー管理サービスは、永続データベースに保存された最後の永続ポイントから放棄されたワークフロー インスタンスを回復します。

放棄して中断します。サービス ホストは、メモリ内のワークフロー サービス インスタンスを中止し、持続性データベース内のインスタンスの状態を「中断」に設定します。中断されたインスタンスは、IIS マネージャーを使用して後で再開または終了できます。これらのインスタンスは、ワークフロー管理サービスによって自動的に回復されません。

終了します。サービス ホストは、メモリ内のワークフロー サービス インスタンスを中止し、永続化データベース内のインスタンスの状態を「完了 (終了)」に設定します。終了したインスタンスを後で再開することはできません。

キャンセル。サービス ホストはワークフロー サービス インスタンスをキャンセルし、ワークフローが正常に終了するようにすべてのキャンセル ハンドラが呼び出されるようにし、永続化データベース内のインスタンスの状態を「完了 (キャンセル済み)」に設定します。


Abandon は、永続ストア内のワークフローを保持する唯一の設定であるため、再度呼び出すことができます。

お役に立てれば。

于 2011-03-14T01:45:03.007 に答える
3

あなたの最初の質問については、Rory Primroses のコンテンツ相関エラーをシールドする方法に関する投稿を参照してください:コンテンツ相関エラーの管理。ここで、彼は例外を有効なビジネス例外に変換します。

于 2011-02-25T19:39:49.610 に答える