コラボレーション とは、ビジネス・プロセスを記述するソフトウェア・モジュールで、IBM InterChange Server Express (ICS) の中で実行されます。
ビジネス・プロセスとは、アプリケーション統合のビジネス・ロジックを含むプログラムです。コラボレーションは、さまざまなタイプの Java 操作を実行することができます。しかし、ほとんどの場合、コラボレーションはビジネス・オブジェクトに対して以下の操作を実行します。
表 1 に示すように、コラボレーションはリポジトリー定義とランタイム・オブジェクトという 2 つの構成要素から成るエンティティーです。
リポジトリー・エンティティー | ランタイム・オブジェクト |
---|---|
コラボレーション・テンプレート | コラボレーション・オブジェクト |
コラボレーションをインストールするときには、コラボレーション・テンプレート をインストールします。コラボレーション・テンプレートにはコラボレーションの実行ロジックがすべて含まれますが、コラボレーションをすぐに実行できるわけではありません。コラボレーションを実行するには、最初にテンプレートから コラボレーション・オブジェクト を作成する必要があります。コラボレーション・オブジェクトを実行可能にするには、コラボレーション・オブジェクトをコネクターまたは別のコラボレーション・オブジェクトにバインドしてから他の構成プロパティーを指定することにより、コラボレーション・オブジェクトを構成します。
本書では、コラボレーション・テンプレートとコラボレーション・オブジェクトを区別する必要がない限り、どちらも単にコラボレーションと呼びます。
コラボレーションは、コラボレーション・テンプレートとして開始されます。
コラボレーション・テンプレートとは、コラボレーションの中のロジックの仕様です。コラボレーション・テンプレートは Process Designer Express ツールを使用して定義します。このツールは、該当する情報を System Manager に格納します。コラボレーション・テンプレートの開発には以下のステップが含まれます。
コラボレーションを開発する際、Process Designer Express というツールを使用してコラボレーション・テンプレートを開発します。Process Designer Express には使いやすいグラフィカル・ユーザー・インターフェース (GUI) が用意されています。このためプログラムを開発するために通常必要となるコーディングの多くが不要になります。このインターフェースを使用すると、変数を宣言したりコード・フラグメントを記述するなどの作業が容易になります。Business Integration Express には、開発プロセスを促進する汎用コラボレーション・テンプレートも用意されています。Process Designer Express を使用すると、標準的なプログラム言語のプログラムを記述するよりも簡単にコラボレーション・テンプレートを開発できます。しかし、コラボレーション開発の最終的な結果は Java クラスの形式のプログラムです。
Process Designer Express は、配置までコラボレーション・テンプレート情報を System Manager に保管します。コラボレーションが配置されると、コラボレーション情報が InterChange Server Express で使用可能になり、コラボレーションがトリガー・イベントを受信したときにこの情報にアクセスできます。Process Designer Express の詳細については、Process Designer Express の概要を参照してください。
Process Designer Express を使用してコラボレーション・テンプレートを構築するには、以下の 2 段階の開発プロセスを実行します。
テンプレートをコンパイルすると、ダイアグラムとそれに関連するコードが実行可能 Java クラスに変換されます。
テンプレートがコンパイルされると、メッセージの内容が System Manager 内のメッセージ・ファイルに格納されます。コラボレーションが配置されると、メッセージ・ファイルは InterChange Server Express にも格納され、実行時にアクセスされます。詳細については、メッセージ・ファイルの作成を参照してください。
コラボレーション・テンプレートは、以下の 2 つの要素から成ります。
コラボレーション・テンプレートを開発する際、最初にコラボレーションのビジネス・ロジックを 1 つ以上のシナリオに分割します。
各コラボレーション・テンプレートは、シナリオと呼ばれる 1 つ以上の区分に分かれます。
シナリオは、特定のフロー・トリガーに対してコラボレーションがどのように応答するかを正確に指定します。シナリオは、コラボレーションによって行われるアクションを記述するという点でメソッドに似ています。
複数のシナリオを作成することができます。またコラボレーションのロジックすべてを 1 つのシナリオに入れることもできます。
各シナリオごとに、そのシナリオのプロセスをグラフィカルに記述するアクティビティー・ダイアグラムを作成します。アクティビティー・ダイアグラムはシナリオのグラフィカルな実装で、アクション、実行フロー、および外部呼び出しが含まれます。
アクティビティー・ダイアグラムは、ビジネス・プロセスのモデル化の標準的な表記法である、UML (統一モデリング言語) に基づいています。
ダイアグラムでは視覚的なプログラミングが使用されるため、シナリオの作成は簡単で、実際のコーディング量は少なくなります。
アクティビティー・ダイアグラムのさまざまなステップは、個々のアクション、つまりコード・フラグメントです。
各シナリオには少なくとも 1 つのトップレベル・ダイアグラムが含まれます。このダイアグラムは、実行時のシナリオのエントリー・ポイントを表し、そのシナリオの全体的なロジック・フローを含みます。 サブダイアグラム は、シナリオのロジックの詳細を複数のネストされたレベルに分割します。
アクティビティー・ダイアグラムの外見はフロー・チャートに似ています。しかしアクティビティー・ダイアグラムは、フロー・チャートと異なり、自身が表す実行可能 Java コードを作成できます。
図 1 に、アクティビティー・ダイアグラムの例を示します。
アクティビティー・ダイアグラムの基本単位は アクションで、長方形で表されます。
アクションでコラボレーションの作業単位を指定し、Java コード・フラグメントの作成および保管に使用されます。
アクティビティー・ダイアグラムは、実行時に可能な振る舞いをすべて表現します。図 1 のアクティビティー・ダイアグラムには複数の実行経路があります。実行経路 は、一連のシンボルとリンクによって表され、一番上の開始シンボルから一番下の終了シンボルまで流れます。
複数の出力リンクを持つシンボルは決定ノードで、コラボレーションが複数のロジック経路のうちいずれの経路に進むかを決定するポイントです。
各アクションには、Java プログラム言語のコード・フラグメント (アクティビティー定義 と呼ばれる) が含まれており、開発者は機能ブロックの形式でこのコード・フラグメントにさらにカスタム・コードを追加できます。Process Designer Express は、生成するコラボレーション・テンプレート・コードにアクティビティー定義を埋め込み、コラボレーション・オブジェクトが実行されるときに、コラボレーション・フローの一部としてその生成したコードを実行します。
必要であれば、カスタム・アクティビティー定義を追加できます。以下のことができます。
コラボレーション・テンプレートのビジネス・ロジックの多くは、Business Integration Express collaboration API への呼び出しで構成されています。ただし、アクティビティーはコラボレーション API への呼び出しに限定されておらず、記述するすべての Java コードを含めることができます。独自のアクティビティー定義を追加するか、以下に示すいずれかの方法で既存のアクティビティーをカスタマイズします。
Java クラスの外部パッケージをコラボレーションにインポートして、そのメソッドをアクションの中で使用できます。
コラボレーション・テンプレートの定義を完了すると、つまりそのシナリオを定義し、アクティビティー・ダイアグラムを構築し、コード・フラグメントをカスタマイズして、メッセージ・ファイルを作成すると、テンプレート全体をコンパイルします。コラボレーション・コンパイル・プロセスでは、コラボレーション・ランタイムが使用する 3 種類のファイル (.class、.java、および .txt) が作成されます。
コラボレーションをコンパイルすると、これらのファイルは System Manager 内のユーザーの統合コンポーネント・ライブラリー (ICL) プロジェクトに自動的に作成されます。コラボレーション・オブジェクトをサーバーに配置すると、これらのファイルは productDir¥collaborations ディレクトリーに自動的に移動されます。表 2 に、ファイルと、コンパイルおよび配置後の場所を示します。
要確認 |
---|
メッセージを変更するときは必ず Process Designer を使用し、メッセージ・テキスト・ファイルを直接変更することは絶対に行わないでください。コラボレーションが配置された後、このファイルはランタイム環境で使用されます。これを直接変更すると、エラーが発生する場合があります。 |
コラボレーション・テンプレートをコンパイルすると、System Manager を使用してコラボレーション・オブジェクトを作成し、これらのオブジェクトとテンプレートを InterChange Server Express に配置することができます。「WebSphere InterChange Server システム・インプリメンテーション・ガイド」を参照してください。
コラボレーション・テンプレートにはコラボレーションの実行ロジックが含まれますが、コラボレーションを実行する前に以下のステップを行う必要があります。
コラボレーション・オブジェクトは、コラボレーション・テンプレートのインスタンスです。
コラボレーション・オブジェクトを作成するには、System Manager を使用します。
コラボレーション・オブジェクトは、構成後に実行可能になります。コラボレーション・オブジェクトを構成するには、そのオブジェクトをコネクターまたは別のコラボレーション・オブジェクトにバインドします。その後、他の構成プロパティーを指定します。
コラボレーション・オブジェクトが対話するオブジェクトを指定するプロセスのことをバインディング と呼びます。
コラボレーション・オブジェクトは、以下の要素にバインドできます。
System Manager を使用してコラボレーション・オブジェクトを作成および構成する方法の詳細については、「WebSphere InterChange Server システム・インプリメンテーション・ガイド」を参照してください。
図 2 に、テンプレート OrderStatus から OrderStat というコラボレーション・オブジェクトを作成する方法を示します。
OrderStatus コラボレーション・テンプレートは 2 つの定義済みポートと共に作成されています。これらのポートは、コラボレーション・オブジェクトがそのソース・オブジェクトおよび宛先オブジェクトと通信するときに使用されます。OrderStat コラボレーション・オブジェクトの構成の一環として、2 つの外部オブジェクトにオブジェクトをバインドします。図 3 では、OrderStat コラボレーション・オブジェクトが SAP コネクターと Vantive コネクターにバインドされています。
図 3. コネクターにバインドされたコラボレーション・オブジェクト
コラボレーション・オブジェクトをバインドし構成すると、System Manager を使用してランタイム環境でテストして配置できます。コラボレーション・オブジェクトは、単一スレッドまたはマルチスレッドで実行されるように構成できます。1 つのスレッドは 1 つのトリガー・イベントを扱います。
複数のトリガー・イベントを並行処理させるためには、コラボレーション・オブジェクトをマルチスレッド・モードで実行してください。
コラボレーション・オブジェクトは長期存続ビジネス・プロセスとして配置でき、ビジネス・プロセス間の非同期通信が可能になります。この結果、ビジネス・プロセスをより長い期間にすることができます。 長期存続ビジネス・プロセスでは、イベント・フロー・コンテキスト (グローバル・テンプレートや Process Designer Express で作成されたポート変数およびビジネス・オブジェクト変数、実行時ワークフロー情報を含む) はサービス呼び出しの間持続します。
非同期インバウンドおよび同期サービス呼び出しで長期存続ビジネス・プロセスのパラメーターをさらに定義するために、サービス呼び出しタイムアウト値を指定できます。
コラボレーション・オブジェクトを長期存続ビジネス・プロセスとして使用する計画がある場合は、それに応じてコラボレーション・テンプレートを構成する必要があります。コラボレーション・テンプレートを作成する前に、長期存続ビジネス・プロセスの設計を参照してください。テンプレートを設計後、長期存続ビジネス・プロセスをサポートするのに必要な特別な構成タスクの詳細については、コラボレーション・テンプレートの構築を参照してください。
WebSphere Business Integration Express システムでは、ビジネス・オブジェクトを使用して、1 つのアプリケーションから別のアプリケーションに、データとアクションの要求を伝達します。コラボレーション・オブジェクトの中のシナリオが特定のビジネス・オブジェクトとアクション (動詞) を受け取ると、コラボレーションの実行が開始されます。ビジネス・オブジェクトと動詞のこの組み合わせをコラボレーションが受け取ることにより、シナリオの実行が開始されます。この組み合わせを、フロー・トリガー と呼びます。
コラボレーションの開発者は、コラボレーション・テンプレートの設計部分として、各シナリオのフロー・トリガーとして機能するビジネス・オブジェクト (と動詞) を指定します。さらに、コラボレーション・オブジェクトの構成部分として、コラボレーションの受信ポートをフロー・トリガー用の特定のソースにバインドします。コラボレーションが受け取るフロー・トリガーのタイプは、フロー・トリガーを受信ポートに送信するソースのタイプによって決まります。
表 3 に示すように、フロー・トリガーのタイプは、複数あるタイプのうち、受信ビジネス・オブジェクトのソースに基づいて決まります。
フロー・トリガー | 受信ビジネス・オブジェクトのソース |
---|---|
トリガー・イベント | コネクターまたは別のコラボレーション |
トリガー・アクセス呼び出し | アクセス・クライアント (ICS 内のサーバー・アクセス・インターフェースを経由) |
フロー・トリガーの代表的なソースはコネクターです。そのため、用語「トリガー・イベント」はコラボレーションの受信ビジネス・オブジェクトを意味することがよくあります。例えば、「テンプレート定義」ウィンドウには、「ポートおよびトリガー・イベント」というタブがあります。このタブからは、コラボレーション・ポートを定義し、トリガー・イベントをシナリオに割り当てることができます。このタブとタブ内の関連タブのタイトルには「トリガー・イベント」という用語が含まれていますが、このタブは、トリガー・イベントとトリガー・アクセス呼び出しという 2 種類のフロー・トリガーの割り当てを扱います。シナリオがコネクターからビジネス・オブジェクトを受け取るときには、そのフロー・トリガーはトリガー・イベントです (タブ名が示すとおりです)。しかしシナリオがアクセス・クライアントからビジネス・オブジェクトを受け取るときには、フロー・トリガーはトリガー・アクセス呼び出しです。後者の場合にも、「ポートおよびトリガー・イベント」テーブルを使用して、シナリオにトリガー・アクセス呼び出しを割り当てます。
コラボレーションのフロー・トリガーのタイプは、次に示すように実際にコラボレーション・オブジェクトのポートが構成されるまでは決まりません。
コラボレーション・オブジェクトの構成方法の詳細については、「WebSphere InterChange Server システム・インプリメンテーション・ガイド」を参照してください。「テンプレート定義」ウィンドウの「ポートおよびトリガー・イベント」タブの詳細については、"ポートおよびトリガー・イベントの定義 (「ポートおよびトリガー・イベント」タブ)"を参照してください。