ワークフロー エンジンは外部イベントをどのように受信するのでしょうか?
-
01-10-2019 - |
質問
WorkflowRuntime workflowRuntime = new WorkflowRuntime();
ExternalDataExchangeService dataExchangeService;
dataExchangeService = new ExternalDataExchangeService();
workflowRuntime.AddService(dataExchangeService);
PaymentProcessingService paymentProcessing;
paymentProcessing = new PaymentProcessingService();
dataExchangeService.AddService(paymentProcessing);
上記のコードを使用すると、アプリケーションはpaymentProcessing.RaiseXXXXEventを使用してワークフロー インスタンスと対話できます。私の質問は次のとおりです。そのようなメカニズムを実装する原理は何ですか。これは一種だと思います イベント駆動型パターン, しかし、このメカニズムを実装するにはどうすればよいですか?またその理由は何ですか?方向性を教えてください。または参考になれば幸いです。
ところで、jBPMにはそのような仕組みがあるのでしょうか?jBPM には、ウィンドウ ワークフロー基盤のようなシーケンス ワークフローとステート マシン ワークフローが含まれていますか?
ありがとう !
解決
WF は、スレッド スケジューリング、ワークフローを処理する一連のコア ワークフロー サービスを定義します 永続化、トランザクション、およびワークフローの追跡。WF のデザイナは、 これらのサービスをランタイムエンジン自体に実装しますが、賢明にも外部化することを選択しました それら、それらの実装を プラグ可能なサービス。これにより、あなたがコントロールできるようになります. 。決めるのはあなたです 使用するサービス (一部はオプション) と、各サービスに使用する実装。
WF は、ローカル サービス (データ 交換サービス)。お客様ご自身で設計・実装していただくサービスです。ローカルサービスは、 目的はほぼすべてですが、一般的な用途の 1 つは、ワークフロー インスタンス間の通信を容易にすることです とホスト アプリケーション。これとは対照的に、コア ワークフロー サービスにはそれぞれ目的があります (たとえば、 永続化、追跡) は、Microsoft によって定義されています。代替実装を開発できます ただし、定義された目的は変わりません。
ワークフロー インスタンスでローカル サービスを利用できるようにします。これを行うにはいくつかの方法があります。最も簡単な方法は、CallExternalMethodActivity を使用して構成することです。
また、サービスにはインターフェイスがあり、[ExternalDataExchange] で装飾されている必要があります。
コア サービスの独自の実装を作成することを検討している場合は、これを提供する方法について説明したリンクを参照してください。 独自のコアワークフローサービス.
http://msdn.microsoft.com/en-us/library/ms734705(v=VS.90).aspx