2

ワークフロー サービスは、アクティビティを使用してユーザー入力を消費しますReceiveWorkflowワークフローに埋め込まれたビジネス ロジックを使用して、呼び出し元からデータを取得するときにいくつかの作業を行います。1 つの例外を除いて、これは素晴らしいことのように思えます。次のワークフローステップがどうあるべきかを発信者はどのように知ることができますか?

たとえば、文書処理がありますWorkflow。ドキュメントがシステムに到着すると、新しいワークフロー インスタンスが作成されます。

作成後、ドキュメントはさまざまなマネージャーによって検証され、追加情報のリクエストが送信され、レビュー済み、クローズ済み、キャンセル済み、マージ済みなどになります。可能な操作の順序はワークフローに保存されます。Receive操作はワークフローの外部で実行され、いくつかの公開されたアクティビティを通じてワークフローに伝達されます。これらの操作の順序は、Receiveワークフロー内にあります (ワークフローとは実際にはそうです)。

ロジックは部門ごとに異なる場合があります。そのため、ワークフローの外でハードコーディングしたくありません。

現在、文書処理は次の状態にあります。

  1. 前のReceiveアクティビティが実行されました
  2. Workflowいくつかの作業を行い、現在は永続化されています
  3. Receiveユーザーが何らかの操作を実行して次のアクティビティを呼び出すと、ワークフローを起動できます

問題は、その操作が何であるか、どのReceiveエンドポイントが呼び出されるべきかを外部コードがどのように知ることができるかということです。

GUI でその情報を使用するための次のステップをワークフローに尋ねる簡単な方法はありますか?

4

1 に答える 1

1

これは、ロンジェイコブスによるブログ記事で、WF 4での登録の拡張について説明しています。これにより、必要なものを構築するために必要な基盤が得られるはずです。

http://blogs.msdn.com/b/rjacobs/archive/2012/05/06/extending-asp-net-mvc-account-registration-with-workflow-wf4.aspx

「次の状態を知る」という問題によりよく対処するために編集されました。

ワークフローをクエリする方法はありません。その主な理由は、ワークフローサービスがWSHで実行され、新しいブックマークに到達するとアイドル状態になるためです(実際にどこで実行されているかはわかりません)。 )。したがって、最善の策は、アイドリングする前にその情報を公開することです。UXが応答するのに理想的な時間であるため、返信を介して発信者に公開することをお勧めします。

あなたが探している「魔法」であるかもしれないリンクを提供するために編集されました。

これは@RonJacobsによるチャンネル9のビデオです-この男は開発者のために本当に一生懸命働いているので本当に素晴らしいです-そしてそれはあなたが探している魔法かもしれないと思います。ただし、使用しているバージョンを更新する必要がある場合もありますが、そうでない場合もあります。Microsoft.Activities.Extensions NuGetパッケージをまだ取得していない場合は、おそらく取得する必要があります。私は彼のカスタム追跡メカニズムをすでにユニットテストに使用しましたが、これには使用していません。あなたが見つけたものを教えてください!

http://channel9.msdn.com/Shows/Workflow-TV/Workflow-TV-Tracking-StateMachines

于 2012-06-14T04:16:15.487 に答える