コラボレーションの「テンプレート定義」ウィンドウには、表 24 にリストしているコラボレーション・テンプレートのプロパティーの定義に使用する 4 つのタブがあります。
「テンプレート定義」タブ | 説明 | 詳細 |
---|---|---|
その他 | コラボレーション・テンプレートに関する以下の情報を定義できます。
| "一般プロパティー情報の定義 (「一般」タブ)" |
宣言 | テンプレート変数を定義したり、システム生成テンプレート変数を表示したりできます。 | "テンプレート変数の宣言と編集 (「宣言」タブ)" |
プロパティー | ユーザー定義のコラボレーション・テンプレート・プロパティーの名前、型、および値を指定できます。 | コラボレーション構成プロパティーの定義 (「プロパティー」タブ) |
ポートおよびトリガー・イベント | コラボレーション・テンプレートのポートおよびトリガー・イベントを定義できます。 | "ポートおよびトリガー・イベントの定義 (「ポートおよびトリガー・イベント」タブ)" |
「定義」ウィンドウの「一般」タブ (図 26 を参照) には、コラボレーション・テンプレートに関する一般プロパティー情報 (表 25 に記載されている情報を含む) が表示されます。
一般テンプレート・プロパティー | 説明 | 詳細 |
---|---|---|
コラボレーション・テンプレートの説明
| コラボレーション・テンプレートのこのフィールドを使用するかどうかは任意です。このフィールドには、コラボレーション・テンプレートのすべてのユーザーが使用可能なテキストを入力できます。 | なし |
長期存続ビジネス・プロセスのサポート | テンプレートが長期存続ビジネス・プロセスをサポートするかどうかについて指定します。 | "長期存続ビジネス・プロセスのサポートの追加" |
トランザクション・レベル (トランザクション・コラボレーションのみ) | コラボレーションのすべての操作に対して最小トランザクション・レベルを設定します。 | "最小トランザクション・レベルの指定" |
コラボレーション・パッケージ | コラボレーションが格納されている Java パッケージ。 | "コラボレーション・パッケージの指定" |
図 26 に、「定義」ウィンドウ内の「一般」タブを示します。
長期存続ビジネス・プロセスのサポートを使用すれば、コラボレーションを長期存続ビジネス・プロセスとして配置し、この環境でのサービス呼び出しのタイムアウト値を指定できます。この機能を使用するには、次の手順を実行する必要があります。
コラボレーションがトランザクションである場合、InterChange Server Express は、トランザクションが失敗するとコラボレーションをロールバックします。
ロールバックにより、テンプレート定義の差し戻しが実行され、コラボレーションのデータの変更が元に戻されます。トランザクション・コラボレーションについては、"トランザクション機能の使用"を参照してください。
トランザクション・レベルにより、コラボレーションのシナリオを実行するためのメカニズムが決定します。コラボレーション・オブジェクトは、表 26 に記載されているトランザクション・レベルの 1 つで実行されます。
コラボレーション・テンプレートの開発者は、テンプレートから作成したコラボレーション・オブジェクトに最小トランザクション・レベルを設定します。例えば、コラボレーションが重要なデータを処理する場合、処理に失敗するとコラボレーションが必ずロールバックされるようにするには、最小トランザクション・レベルを「最小限の努力」に設定します。トランザクションを実行するコラボレーションを設計するときに、トランザクション機能を使用しなくてもコラボレーションを正常に使用できるようにするには、最小トランザクション・レベルを「なし」に設定できます。
コラボレーション・オブジェクトのコネクターがより高いトランザクション・レベルをサポートしている場合、管理者は、コラボレーション・オブジェクトのトランザクション・レベルを上げることができます。ただし、コラボレーション・オブジェクトのトランザクション・レベルは、テンプレートに指定されている最小レベルより低いレベルにすることはできません。
ヒント |
---|
コラボレーション・テンプレートの最小トランザクション・レベルを「なし」に設定しているときに、差し戻しを作成してトランザクションを操作できるようにすることが可能です。より厳密なレベルが必要で、使用中のコネクターがより高いトランザクション・レベルをサポートできる場合、管理者は、バインド時にコラボレーション・オブジェクトのトランザクション・レベルを上げることができます。差し戻しの詳細については、差し戻しの定義を参照してください。 |
コラボレーション・テンプレートに最小トランザクション・レベルを割り当てる手順は、以下のとおりです。
パッケージは、関連する機能があるコラボレーションのグループです。Process Designer Express がアクセスするすべてのコラボレーションは、UserCollaborations パッケージまたは UserCollaborations のサブパッケージに含まれます。
このため、UserCollaborations パッケージには以下が含まれます。
UserCollaborations の下にサブパッケージを作成して、カスタム・コラボレーション・テンプレートをグループ化できます。例えば、オフィス用品を扱う複数のコラボレーション・テンプレートを作成する場合、OfficeSupplyMgmt と呼ばれるサブパッケージを作成することが可能です。その中に、PaperClipMgmt コラボレーションおよび PencilInventory コラボレーションを格納できます。
コラボレーション・テンプレートがパッケージに含まれていることを指定すると、Process Designer Express はパッケージ名を使用して、統合コンポーネント・ライブラリー・プロジェクトの Template¥Classes ディレクトリー内にサブディレクトリーを作成します。 (配置時にはパッケージ情報を格納するディレクトリーとして ProductDir¥collaborations¥classes¥UserCollaborations ディレクトリーが作成されます。)
製品のインストール時に、クラスパス内の UserCollaborations の下にすべてのコラボレーションを含めるように CLASSPATH 環境変数が設定されています。
Process Designer Express は、コラボレーション・テンプレートの .class および .java ファイルを、サブディレクトリー内に格納します。
コラボレーション・テンプレートを格納するパッケージを指定する手順は、以下のとおりです。
既存のパッケージに名前を指定すると、Process Designer Express によりコラボレーション・テンプレートがパッケージに追加されます。存在しないパッケージの名前を指定すると、Process Designer Express によってパッケージが作成されます。
既存のコラボレーション・テンプレート定義を変更して、いつでもパッケージ名を追加または変更することができます。
「テンプレート定義」ウィンドウの「宣言」タブには、コラボレーション・テンプレートのテンプレート変数に関する情報が表示されます。テンプレート変数 は、コラボレーション内のすべてのシナリオを対象範囲としたコラボレーション変数です。つまり、テンプレート変数は、コラボレーション内のすべてのシナリオに対してグローバルな変数です。
(シナリオ変数は、Java プログラム言語のクラス変数に相当します。) 例えば、顧客トランザクションを含むコラボレーションには、すべてのシナリオについて顧客を識別する customerID テンプレート変数があります。テンプレート変数は、開発中、いつでも作成できます。
図 27 に、「テンプレート定義」ウィンドウ内の「宣言」タブを示します。
「宣言」タブでは、以下の操作を行うことができます。
「宣言」タブを使用して、特定の Java クラスをコラボレーションにインポートできます。 Java クラスは、その他のクラスのパッケージをインポートして、それらの機能にアクセスします。例えば、クラスが、java.math、java.security、および java.text パッケージをインポートして、それぞれの演算機能、セキュリティー機能、および国際化対応機能を使用することがあります。コラボレーション・テンプレートはクラスであるため、Java Development Kit またはサード・パーティー製品から提供されるクラスまたはクラスのグループ (パッケージと呼ぶ) を使用できます。
デフォルトでは、すべての Java クラスが、パッケージ java.lang 内のクラスを暗黙的にインポートします。
また、Process Designer Express も、すべてのコラボレーション・テンプレートで使用するためにパッケージ java.util 内のクラスを暗黙的にインポートします。
以下の import ステートメントは、java.math クラスを JDK からインポートします。
(アスタリスクは、特定のパッケージ内のすべてのクラスをインポートすることを示します。)
java.math.*;
また、以下のステートメントにより、パッケージの BigDecimal クラスのみをインポートします。
java.math.BigDecimal;
import ステートメントは、コラボレーションの開発中はいつでもコードに追加できます。
Java クラスをインポートする手順は、以下のとおりです。
java.math.*
インポートしたクラスが JDK ではなくサード・パーティー・パッケージのものである場合、ProductDir¥bin¥cwtools.cfg ファイルの [codeGeneration] セクションを編集し、テンプレートのコンパイル前のパッケージ・パスを反映する必要があります。
サード・パーティー・パッケージからインポートされたクラスを使用するコラボレーションを配置する前に、コラボレーションが配置されるシステムの JCLASSES 変数を更新する必要があります。インポートしたクラスが JDK ではなくサード・パーティーのものである場合、このクラスを、JCLASSES 変数のインポート済みクラスのパスに追加する必要があります。IBM では、なんらかの機構を使用して、JCLASSES に含まれるこれらの標準のクラスをカスタム・クラスと区別することを推奨します。例えば、以下のように、このようなカスタム・クラスを保持する新しい変数を作成し、この新しい変数を JCLASSES に追加します。
set DEPENDENCIES=ProductDir/dependencies/CwMacroUtils.jar
ここで、ProductDir は、Business Integration Express がインストールされているロケーションです。
UNIX システムでは次の構文を使用します。ExistingJarFiles は、JCLASSES に指定されている .jar ファイルです。
set JCLASSES = $JCLASSES:ExistingJarFiles:$DEPENDENCIES
Windows システムでは次の構文を使用します。ExistingJarFiles は、JCLASSES に指定されている .jar ファイルです。
set JCLASSES = ExistingJarFiles;%DEPENDENCIES%
カスタム・クラスのインポート時には、Business Integration Express ソフトウェアがそのカスタム・クラスを検出できなかったことを示すエラー・メッセージが表示されることがあります。その場合は、以下をチェックしてください。
COM.acme.graphics.*;
また、Rectangle カスタム・クラスのみをインポートすることもできます。
COM.acme.graphics.Rectangle;
例えば、カスタム・クラスのインポート時に、ProductDir¥lib¥com¥crossworlds¥package という名前のフォルダーを作成できます。ここで、ProductDir は Business Integration Express がインストールされているロケーションを示し、package はご使用のパッケージの名前を示します。次に、作成したフォルダーにカスタム・クラス・ファイルを格納します。最後に、start_server.bat ファイルの中の CLASSPATH 変数の中に、ProductDir¥lib というパスを含めます。
「宣言」タブを使用して、コラボレーションが使用するユーザー独自のテンプレート変数を宣言することもできます。
変数を使用するには、タイプおよび名前を指定して、最初に変数を宣言する必要があります。コラボレーション・テンプレートの変数のデータ型は以下のいずれかです。
LongText または Date データ型のビジネス・オブジェクト属性に変数を指定するには、コードに String データ型を使用します。
テンプレート変数を宣言する手順は、以下のとおりです。
コラボレーションに対する複数回の呼び出しについて、その値が永続的となる変数を宣言できます。コラボレーション内でアクションのカウンター・データを記録し、このコラボレーションを実行するたびにこのカウンターを増分するとします。ctr という名前の public の integer 型変数を作成するには、「宣言」タブの中の変数テーブルを使用します。
次に、コラボレーション・コード自体の中で、カウンターを増分します。
ctr = ctr+1;
ctr 変数は、コラボレーションが実行されるごとに増えます。
コラボレーションを長期存続ビジネス・プロセスとして配置する場合には、永続させる変数をすべてグローバル・テンプレート変数またはグローバル・ポート変数として定義してください。
また、これらの変数のデータ型が次のいずれかでなければなりません。
その他のデータ型の変数は、長期存続ビジネス・プロセスでは永続されません。
Process Designer Express は、以下のコラボレーション変数を自動的に宣言します。
表 27 に、これらのシステム生成変数についての説明をリストします。
変数 | 説明 |
---|---|
triggeringBusObj
| triggeringBusObj 変数には、シナリオのフロー・トリガー (トリガー・イベントまたはトリガー・アクセス呼び出し) が含まれます。フロー・トリガーは、ビジネス・オブジェクトおよび動詞です。トリガー・イベントは、アプリケーション・イベントおよびそのデータを示します。フロー・トリガーが到着すると、シナリオの実行が開始されます。この変数はテンプレート変数です。つまり、その有効範囲はコラボレーション全体です。 |
currentException
| currentException 変数には、直前のアクション、サブアクティビティー、またはイテレーターによって発生した例外オブジェクトが含まれます。Process Designer Express は、currentException を暗黙的に宣言します。currentException のスコープは、例外の発生直後のアクションです。シナリオは、例外を生成したアクティビティーの直後の遷移リンクまたはコード・フラグメントにある currentException の値をチェックする必要があります。 |
ポート変数
| Process Designer Express は、コラボレーションの各ポートに関連付けられているビジネス・オブジェクトのテンプレート変数を宣言します。このように生成された宣言は、「テンプレート定義」ウィンドウの「宣言」タブに表示されます。各ポート変数の名前は、BusObj が付加されたポートの名前です。例えば、ポート名が SourceInvoice の場合、変数名は SourceInvoiceBusObj になります。また、宣言により、ポートが定義されているものと同じ型の BusObj のインスタンスも生成されます。最初に、ビジネス・オブジェクトの属性が null に設定されます。これらのポート変数を使用して、トリガー・イベントを処理できます。詳細については、"トリガー・イベントのコピー"を参照してください。 |
コラボレーション・テンプレートには、2 つのタイプの構成プロパティーがあります。
すべてのコラボレーションには、InterChange Server Express によって定義される同一の標準構成プロパティーがあります。
コラボレーションは、プロパティーの値を使用してその振る舞いの性質を決定します。プロパティーには、以下のようなタイプがあります。
管理者は、コラボレーションを構成するときにこの 2 つのタイプのプロパティーを扱います。
コラボレーションの開発者は、コラボレーションにコラボレーション固有プロパティーが必要かどうかを決定します。必要な場合は、その名前およびデフォルト値を定義します。これらの構成プロパティーにより、コラボレーション・ユーザーは、コラボレーションの振る舞いを制御するデータを指定できます。
表 28 は、作成可能なプロパティーのタイプの例です。
必要に応じてコラボレーション固有の構成プロパティーを使用できます。テンプレートで使用できるこの構成プロパティーの数に制限はありません。このプロパティーは開発中、いつでも追加できます。コラボレーションに必要なプロパティーが最初にわかっている場合は、シナリオをモデル化する前にプロパティーを作成できます。ただし、シナリオのモデルを作成中の場合は、追加のプロパティーを定義して、コラボレーションのロジックをサポートできます。
コラボレーション・テンプレートに対してコラボレーション固有の構成プロパティーを作成する手順は、以下のとおりです。
コラボレーション固有の構成プロパティーを削除するには、タブの左側のペインにあるリストから削除するプロパティーの名前を選択して、「削除」をクリックします。
動的サービス呼び出しのタイムアウト値を使用して長期存続ビジネス・プロセス (LLBP) をサポートする場合は、Java 変数またはコラボレーション固有プロパティーを使用できます。コラボレーション固有プロパティーを使用する場合には、コラボレーション・テンプレート定義時にこのプロパティーを作成する必要があります。コラボレーション固有プロパティーを使用すると、タイムアウト値を実行時に設定できるため、サービス呼び出しの最初の作成時に提供される静的値を使用せずにすみます。動的タイムアウト値のプロパティーを作成するときには、integer データ型を使用してください。
例えば、create 要求によってビジネス・オブジェクトが送信される To ポートからサービス呼び出しを受け取る場合は、CreateTimeout と呼ばれるコラボレーション・プロパティーを定義します。このサービス呼び出しを定義するときに、CreateTimeout プロパティーを使用して、サービス呼び出しがタイムアウトになるポイントを指定します。サービス呼び出しの作成については、サービス呼び出しを参照してください。
サービス呼び出しの作成および定義時に指定された固定タイムアウト値も使用できます。この場合、コラボレーション・プロパティーは不要です。サービス呼び出しタイプの定義を参照してください。
「テンプレート定義」ウィンドウの「ポートおよびトリガー・イベント」タブには、以下に関する情報が表示されます。
コラボレーション・テンプレートでは、ポート は、コラボレーション・オブジェクトが実行時に受信または生成するビジネス・オブジェクトを表す変数です。
ビジネス・オブジェクトは、トリガー・イベントまたはアクションを示します。通常、コラボレーションは、コネクターからビジネス・オブジェクトを受信すると、アクションによって応答します。これらの受信ビジネス・オブジェクトは、トリガーまたはトリガー・イベントと呼ばれます。
コラボレーションがコネクターからビジネス・オブジェクトを受信した場合、このフロー・トリガーはトリガー・イベントです。コラボレーションがアクセス・クライアントからビジネス・オブジェクトを受信した場合、このビジネス・オブジェクトはトリガー・アクセス呼び出しと呼ばれます。
ビジネス・オブジェクトがトリガー・アクセス呼び出しに関連付けられているポートは、トリガー・イベントに関連付けられているポートと同じ方法で定義されます。
「ポートおよびトリガー・イベント」タブの使用に関する詳細は、シナリオへのトリガー・イベントの割り当てを参照してください。
通常、コラボレーションは、操作を完了すると、アクションを開始したコネクターにビジネス・オブジェクトを送信します。したがって InterChange Server Express は、イベントのトリガーまたは送信のために、ポートを頻繁に参照します。
要確認 |
---|
IBM では、この動的更新機能は開発環境でのみ使用することを推奨します。ビジネス・オブジェクトの更新により、複雑な問題が発生する可能性があります。動的更新により、システム内のその他の機能が影響を受ける可能性があります。例えば、古いビジネス・オブジェクト定義を使用するイベントの処理方法や、初めに古いビジネス・オブジェクト定義に対してサブミットされた未解決のフローの再サブミット方法などが影響を受けます。このようなシナリオあるいはその他のシナリオにより、処理中のビジネス・オブジェクト定義とメモリー内のビジネス・オブジェクト定義の間でミスマッチが発生することがあります。このため、実動システムの場合、IBM では、システム上でイベントが処理されていない場合にのみビジネス・オブジェクト定義を更新することを推奨します。 |
コラボレーション・ポートの詳細については、「システム・インプリメンテーション・ガイド」を参照してください。
ポートを作成する手順は、以下のとおりです。
ウィンドウ上部にあるテーブルには、ポート名、ビジネス・オブジェクト・タイプ、および動詞が表示されます。このコラボレーション・テンプレートのポートをまだ作成していない場合、このテーブルは空です。
これは、このポートがサポートするビジネス・オブジェクト定義のタイプです。
InterChange Server Express では、すべてのコラボレーション・ポートをバインドする必要があるので、未使用ポート (1 つまたは複数) も Port コネクターにバインドする必要があります。Port コネクター は、未使用のポートを閉じるために使用される、汎用コネクター定義です。Port コネクターは、正しいコラボレーション・ロジックとともに使用する必要があります。Port コネクターにバインドされたポートに送信されたサービス呼び出しは、コラボレーション・スレッドをブロックします。
ポート名を変更するには、このポートを削除し、新しい名前を使用してポートを再作成する必要があります。単にその名前を変更することはできません。ポート名を変更する手順は、以下のとおりです。
表 29 に、ポートを削除して再作成したときの影響についての要約を示します。
Process Designer Express による処理 | ユーザーが行う必要がある処理 |
---|---|
変更後のポート名を使用するシステム生成テンプレート変数が変更されます。
| 古いポート名で宣言された変数を使用するコードがある場合は、コードの変数名を変更します。古いポート名で宣言された変数が表示されるすべてのアクション・ノードおよびサービス呼び出しを検索します。コンパイラーにより、残りの誤った名前が検出されます。 |
フロー・トリガー (トリガー・イベントまたはトリガー・アクセス呼び出し) の割り当てが削除されます。 | フロー・トリガーを再度割り当てます。"コラボレーション・テンプレートのコンパイル"を参照してください。 |