0
WorkflowRuntime workflowRuntime = new WorkflowRuntime();

 ExternalDataExchangeService dataExchangeService;
 dataExchangeService = new ExternalDataExchangeService();
 workflowRuntime.AddService(dataExchangeService);

 PaymentProcessingService paymentProcessing;
 paymentProcessing = new PaymentProcessingService();
 dataExchangeService.AddService(paymentProcessing);

上記のコードを使用すると、アプリケーションはpaymentProcessing.RaiseXXXXEventを使用してワークフローインスタンスと対話できます。私の質問は:そのようなメカニズムを実装するための原則は何ですか。これは一種のイベント駆動型パターンだと思いますが、このメカニズムをどのように実装できますか、またその理由は何ですか?方向性を教えてください。参考資料をいただければ幸いです。

ちなみに、jBPMにはメカニズムがありますか?jBPMには、ウィンドウワークフローファウンデーションのようなシーケンスワークフローとステートマシンワークフローが含まれていますか?

ありがとう !

4

1 に答える 1

0

WFは、スレッドスケジューリング、ワークフローの永続性、トランザクション、およびワークフローの追跡を処理する一連のコアワークフローサービスを定義します。WFの設計者は、これらのサービスの実装をランタイムエンジン自体に組み込むこともできましたが、それらを外部化して、プラグイン可能なサービスに実装することを賢明に選択しました。これにより、あなたをコントロールできるようになります。使用するサービス(一部はオプション)と、各サービスに使用する実装を決定します。

WFは、ローカルサービス(データ交換サービスと呼ばれることもあります)と呼ばれる別の種類のサービスもサポートします。これは、自分で設計および実装するサービスです。ローカルサービスはほぼすべての目的に使用できますが、一般的な用途の1つは、ワークフローインスタンスとホストアプリケーション間の通信を容易にすることです。これとは対照的に、コアワークフローサービスにはそれぞれ、Microsoftによって定義された目的(永続性、追跡など)があります。コアサービスごとに代替の実装を開発できますが、それによって定義された目的が変わることはありません。

ローカルサービスをワークフローインスタンスで利用できるようにするため。これを行うにはいくつかの方法があります。最も簡単なのは、CallExternalMethodActivityを使用して構成することです。

また、サービスにはインターフェースがあり、[ExternalDataExchange]で装飾されている必要があります。

コアサービスの独自の実装を作成することを検討している場合は、独自のコアワークフローサービスを提供する方法を説明するリンクがあります。

http://msdn.microsoft.com/en-us/library/ms734705(v=VS.90).aspx

于 2010-09-09T14:50:01.610 に答える