3

私は、数千のレコードを持つファイルをインポートする必要があるビジネス上の問題に取り組んでいます。各レコードは、独自のワークフローを通過する必要がある個別のレコードとしてワークフローに登録する必要があります。

WF4の企業購入プロセスの例には、最初のステップで必要なすべてのレコードIDのブックマークを作成するため、優れたソリューションがあります。したがって、ワークフローは、個々のレコード/IDごとの残りのアクションで再開できます。

  1. ワークフローでAppFabricのメリットを享受できるので、ワークフローサービスを使用して同じことを実装する方法を知りたいです。
  2. レコード/IDのバッチを処理する他のソリューションはありますか?それ以外の場合は、ワークフローインスタンスにすべてのレコードを登録するためだけに、ワークフローサービスを数千回呼び出す必要があります。これは適切なソリューションではありません。
4

3 に答える 3

1

ワークフローでAppFabricのメリットを享受できるので、ワークフローサービスを使用して同じことを実装する方法を知りたいです。

これは非常に簡単です。ファイルを読み取り、存在するループアクティビティを使用して結果をループする1つのワークフローがあります。次に、ループ内で、アクティビティを使用してエンドポイントを呼び出すことにより、各レコードに必要なワークフロー(「サービス」)Sendを開始します。

ここで、サービスであるワークフローについては、Receiveワークフローの上部に、もCanCreateInstance設定したアクティビティがありますtrue。その後のすべてReceiveは、他のワークフローと何ら変わりはありません。サービスが開始されたことを発信者に知らせるためSendに、直後にアクティビティを行うことを検討してください。Receiveただし、これはReceive必須ではありません。WFがを使用するワークフローを構築する必要があるため、必須になりますWorkflowServiceHost

レコード/IDのバッチを処理する他のソリューションはありますか?それ以外の場合は、ワークフローインスタンスにすべてのレコードを登録するためだけに、ワークフローサービスを数千回呼び出す必要があります。これは適切なソリューションではありません。

Webサーバーが数千のリクエストを受信するのは良い解決策ではないことを示していますか?IISサーバーは、コアごとに、瞬間ごとに約25〜50の要求を処理できるという事実を考慮してください。ここで、ワークフローをロードしているループが、その瞬間に平均して5を超えることはなく、おそらく1または2のようになることを考慮してください。

Webサーバーが問題になることはないと思います。私は、あなたが構築しようとしているものと同じように、ループを介してサーバー上で文字通り10,000のワークフローを開始しましたが、それは汗をかきませんでした。

于 2012-09-24T12:04:36.960 に答える
0

1つの方法は、WCFのMSMQバインディングを使用してワークフローを起動することです。リクエストは通常​​HTTPを介して受信でき、WCFはそれらをMSMQにルーティングして、ロードを処理します。MSMQバインディング+IIS設定を使用して、使用されるワークフローインスタンスの数を調整できます。

WCFとMSMQを使用したワークフローアプリケーションのセットアップについて説明している次のワードドキュメントをダウンロードします: http: //www.microsoft.com/en-us/download/details.aspx? id = 21245

于 2012-09-21T00:10:37.890 に答える
0

動作する可能性のある最も単純なことを行うという精神で、サブワークフローをアクティビティとしてメインワークフローに取り込み、それぞれの並列を使用して、ファイルからの各入力のブランチを実行できます。すべてのワークフローはアクティビティであるため、追加の呼び出しは必要ありません。ツールはこれをすぐにサポートします。メインプロセスをサービスでホストして、残りのIISユーザー、つまり実際のユーザーとの競合を回避できるようにすることをお勧めします。

数秒で実行したい場合を除いて、IISまたはWCFサービスを1000回呼び出すことは問題ではないことに同意します。

ワークフローの良い点の1つは、(他のワークフロー製品と比較して)オーバーヘッドがかなり低いことです。そのため、多くのインスタンスを起動するというアイデアよりも、ワークフローの機能についてもっと心配する必要があります。あなたの例のようなバッチの考え方は非常に一般的です。

于 2012-09-26T12:07:32.557 に答える