Serena Business Managerプラットフォームを使用したBPELビジネスプロセスの作成

Habrahabrで検索を行ったところ、あまり一般的ではない言語BPEL(ビジネスプロセス実行言語)に関する情報はあまりありませんでした。 一般的に、BPELは、Webサービスを使用してビジネスプロセスのロジックを記述することができるXMLベースの言語です。









この言語を使用してプロセスを作成できるエンジンの実現はそれほど多くありません。 特に、Oracle BPEL Process Managerと、後で説明する製品であるSerena Business Manager(SBM)に言及できます。 SBMを使用すると、プロセスを自動化するWebアプリケーションをすばやく作成できます。 プロセスのモデル(ワークフロー)では、状態が変化したときに外部Webサービスを呼び出すことができます。 そして、何らかのロジックを実装する必要があり、1回の呼び出しでは不十分な場合はどうでしょうか? これは、BPELで記述され、同じBPMプラットフォームによって実行される手順が役立つ場所です。



言語自体については詳しく説明しませんが、ネット上でこのトピックに関する十分な情報を見つけることができます。 特定のタスクの実装について説明します。



タスクは次のように設定されました-ビジネスエンティティ(私のプロセスではTDリンク)をコピーする機能を開発しますが、それだけではなく、サードパーティのWebサービスの予備調査を行います。 このサービス(ブリッジ)には、TD Linkオブジェクトの一部の属性を入力として受け入れるメソッドがあります。 次に、ブリッジはサードパーティシステムをポーリングし、そのような属性を持つオブジェクトがシステムに存在できるかどうかを応答で報告します。 それはどうして私には興味がありません、ブリッジは私にとって「ブラックボックス」です。



さらに、システム内のビジネスエンティティを操作する機能(読み取り、作成など)を実装する別のWebサービスが必要でした。 AppServicesと呼びます。



プロセスを構築できるステップのリストは次のとおりです。







それらの中で最も重要なのは:



  1. サービス Webサービスを呼び出すことができます。
  2. サービス Webサービスを呼び出すことができます。
  3. 計算する 変数の操作、データマッピング、処理などに使用されます。
  4. スコープ、補償、およびスロー。 エラーを処理する手順。


残りの手順は、基本的な機能-ループと条件を実装します。



最終的なワークフローは次のようになります。







TD Linksオブジェクトはシステム内に単独ではなく、他のオブジェクト(ステージングなど)と関連して存在するため、最初にシステムで必要なステージングを見つける必要がありました。



AppServicesには、SQLクエリを使用してフェッチするためのメソッドがあります。 SQLクエリは、文字列として直接コンパイルされます。





はい、重要な余談。 このエンジンを使用すると、プロセス中に使用される変数を決定できます。この場合に使用します。







SQLクエリを作成したら、データをマッピングして目的のメソッドを呼び出すことができます。







マッピングには、変数とプロセスの前の手順の結果(たとえば、Webサービスの開始結果)の両方を使用できます。



その後、同様の方法(SQLクエリを使用)で、コピーするオブジェクト(TDリンクとサイクルの開始)が選択されます。

そして最後に、外部Webサービスのポーリング段階も「サービス」タイプの要素を介して構成されます。



最後のステップは、TD Linkオブジェクトのコピーを作成し、ブリッジから受け取った結果を保存します(エラーメッセージがあれば、それを含む)。



当然、デバッグから逃れることはできず、開発ツールはこれに対して非常に優れた機能を備えています。 特に、各ステップの結果を個別に確認し、どちらが間違っているかを確認できます。







結果として言えること。 提案された実装の利点のうち、次の点に注意することができます。





もちろん、短所もあります:







最後まで投稿を読んでくれたみんなに感謝します。 コメントでご質問にお答えいたします。



All Articles