この言語を使用してプロセスを作成できるエンジンの実現はそれほど多くありません。 特に、Oracle BPEL Process Managerと、後で説明する製品であるSerena Business Manager(SBM)に言及できます。 SBMを使用すると、プロセスを自動化するWebアプリケーションをすばやく作成できます。 プロセスのモデル(ワークフロー)では、状態が変化したときに外部Webサービスを呼び出すことができます。 そして、何らかのロジックを実装する必要があり、1回の呼び出しでは不十分な場合はどうでしょうか? これは、BPELで記述され、同じBPMプラットフォームによって実行される手順が役立つ場所です。
言語自体については詳しく説明しませんが、ネット上でこのトピックに関する十分な情報を見つけることができます。 特定のタスクの実装について説明します。
タスクは次のように設定されました-ビジネスエンティティ(私のプロセスではTDリンク)をコピーする機能を開発しますが、それだけではなく、サードパーティのWebサービスの予備調査を行います。 このサービス(ブリッジ)には、TD Linkオブジェクトの一部の属性を入力として受け入れるメソッドがあります。 次に、ブリッジはサードパーティシステムをポーリングし、そのような属性を持つオブジェクトがシステムに存在できるかどうかを応答で報告します。 それはどうして私には興味がありません、ブリッジは私にとって「ブラックボックス」です。
さらに、システム内のビジネスエンティティを操作する機能(読み取り、作成など)を実装する別のWebサービスが必要でした。 AppServicesと呼びます。
プロセスを構築できるステップのリストは次のとおりです。
それらの中で最も重要なのは:
- サービス Webサービスを呼び出すことができます。
- サービス Webサービスを呼び出すことができます。
- 計算する 変数の操作、データマッピング、処理などに使用されます。
- スコープ、補償、およびスロー。 エラーを処理する手順。
残りの手順は、基本的な機能-ループと条件を実装します。
最終的なワークフローは次のようになります。
TD Linksオブジェクトはシステム内に単独ではなく、他のオブジェクト(ステージングなど)と関連して存在するため、最初にシステムで必要なステージングを見つける必要がありました。
AppServicesには、SQLクエリを使用してフェッチするためのメソッドがあります。 SQLクエリは、文字列として直接コンパイルされます。
はい、重要な余談。 このエンジンを使用すると、プロセス中に使用される変数を決定できます。この場合に使用します。
SQLクエリを作成したら、データをマッピングして目的のメソッドを呼び出すことができます。
マッピングには、変数とプロセスの前の手順の結果(たとえば、Webサービスの開始結果)の両方を使用できます。
その後、同様の方法(SQLクエリを使用)で、コピーするオブジェクト(TDリンクとサイクルの開始)が選択されます。
そして最後に、外部Webサービスのポーリング段階も「サービス」タイプの要素を介して構成されます。
最後のステップは、TD Linkオブジェクトのコピーを作成し、ブリッジから受け取った結果を保存します(エラーメッセージがあれば、それを含む)。
当然、デバッグから逃れることはできず、開発ツールはこれに対して非常に優れた機能を備えています。 特に、各ステップの結果を個別に確認し、どちらが間違っているかを確認できます。
結果として言えること。 提案された実装の利点のうち、次の点に注意することができます。
- 開発のしやすさ。 実際、コーディングは不要でした。
- スピード。 数時間で小さなプロセスを作成してデバッグできます。 ただし、標準の開発環境であるSBM Composerを超える必要はありませんでした。
- デバッグの容易さ。 すべてのログを1か所で。 障害が発生したステップを確認できます。 さらに、実行中のすべてのプロセス中にエラーがダンプされる単一のログがあります。
- 変更の管理された容易さ。 Webサービスの説明の更新、変数の名前変更、データマッピングの変更-これらはすべて非常に簡単に実行できます。 同時に、私の変更は組み込みのバージョン管理システムに記録されます-いつでも前の作業バージョンにロールバックできます。
- 外部イベントを使用してトリガーする機能。 私の場合、プロセスはユーザーがユーザーインターフェイスのボタンを押すことによって開始されますが、外部イベントがプロセスの開始者になることもあります。
もちろん、短所もあります:
- 複雑なアルゴリズムの実装の難しさ。 ただし、ワークフロー作成ツールの機能には制限があります。 複雑なデータ処理は、依然として独自のWebサービスで最適に実行されます。
- データマッピングの問題。 データをマップするために追加のプロセスステップを使用する必要がある場合があり、これによりプロセスが多少複雑になります。
- Webサービスの制限。 SOAPアーキテクチャとRESTアーキテクチャのみが(特別なラッパーを介して)サポートされ、WSDLファイルには多くの制限も課されます。
最後まで投稿を読んでくれたみんなに感謝します。 コメントでご質問にお答えいたします。