WebSphere Business Integration Server Foundation BPEL Java Snippet のマイグレーション

Java™ Snippet が含まれている BPEL プロセスについて、 本セクションでは、古い Java Snippet API から新しい Java Snippet API (ここでは、 アプリケーションで使用されるデータが Eclipse Service Data Objects (SDO) として保管される) への マイグレーション方法を詳しく説明します。

WSIFMessage から SDO への遷移に特有のマイグレーション・ステップについては、 『SDO API への WSIFMessage API 呼び出しのマイグレーション』のセクションを参照してください。

可能な場合はいつでも、Snippet はマイグレーション・ウィザードによって自動的にマイグレーションされますが、 マイグレーション・ウィザードが完全にはマイグレーションできない Snippet があります。 この場合、マイグレーションを完了するには、追加の手動ステップが必要になります。 手動でマイグレーションする必要がある Java Snippet のタイプについて詳しくは、『制限』のトピックを参照してください。 これらの Snippet のいずれかが検出されると、 マイグレーション・ウィザードは、自動的にマイグレーションできない理由を説明し、 警告またはエラー・メッセージを発行します。

以下の表で、Process Choreographer バージョン 5.1 から 6.0 への BPEL Java Snippet プログラミング・モデルおよび API の変更点を詳しく説明します。
表 1. WebSphere® Business Integration Server Foundation BPEL Java Snippet のマイグレーションに関する変更点およびソリューション
変更 ソリューション
WSDL メッセージ・タイプについて、WSIFMessage ベースのラッパー・クラスが生成されなくなり、 複合スキーマ・タイプについて、Java Bean ヘルパー・クラスが生成されなくなりました。 BPEL 変数は、名前により直接的にアクセスできます。 WSDL メッセージ定義に単一パーツがある BPEL 変数は、 実データにラッパーを使用する代わりに、直接そのパーツを表すようになったことに注意してください。 メッセージ・タイプに複数のパーツがある変数は、 これらのパーツに DataObject ラッパーを使用します (WebSphere Application Developer Integration Edition でのラッパーは、WSIFMessage でした)。

6.0 Snippet では BPEL 変数を直接使用できるため、5.1 での場合よりローカル変数の必要が少なくなっています。

BPEL 変数の強く型付けされた getter は、 暗黙的にメッセージ・パーツの WSIFMessage ラッパー・オブジェクトを初期化していました。 現在、WSDL メッセージ定義に単一のパーツしかない BPEL 変数には「ラッパー」オブジェクトはありません。 この場合、BPEL 変数はそのパーツを直接表します (単一パーツが XSD 単純タイプで、 BPEL 変数が java.lang.String、java.lang.Integer などの Java オブジェクト・ラッパー・タイプとして表される場合)。 複数パーツ WSDL メッセージ定義を持つ BPEL 変数は、異なる方法で処理されます。 依然としてパーツにラッパーがあり、 この DataObject ラッパーが前の操作で設定されていない場合は、 6.0 Java Snippet コードで明示的に初期化される必要があります。

5.1 Snippet のローカル変数が BPEL 変数と同じ名前を持っている場合には、 競合が発生する可能性があるため、可能であればこの状態を修正してください。

WSIFMessage オブジェクトは、BPEL 変数を表すために使用されなくなりました。 Java Snippet から呼び出されるカスタム Java クラスに WSIFMessage パラメーターがある場合、 そのクラスは、DataObject を受け入れる/戻すようにマイグレーションする必要があります。
BPEL 変数の強く型付けされた getter メソッドは、使用できなくなりました。 変数は、名前により直接的にアクセスできます。 WSDL メッセージ定義に単一パーツがある BPEL 変数は、 実データにラッパーを使用する代わりに、直接そのパーツを表すようになったことに注意してください。 メッセージ・タイプに複数のパーツがある変数は、 これらのパーツに DataObject ラッパーを使用します (WebSphere Application Developer Integration Edition でのラッパーは、WSIFMessage でした)。
BPEL 変数の強く型付けされた setter メソッドは、使用できなくなりました。 変数は、名前により直接的にアクセスできます。 WSDL メッセージ定義に単一パーツがある BPEL 変数は、 実データにラッパーを使用する代わりに、直接そのパーツを表すようになったことに注意してください。 メッセージ・タイプに複数のパーツがある変数は、 これらのパーツに DataObject ラッパーを使用します (WebSphere Application Developer Integration Edition でのラッパーは、WSIFMessage でした)。
WSIFMessage を戻す BPEL 変数の弱く型付けされた getter メソッドは、使用できなくなりました。 変数は、名前により直接的にアクセスできます。 WSDL メッセージ定義に単一パーツがある BPEL 変数は、 実データにラッパーを使用する代わりに、直接そのパーツを表すようになったことに注意してください。 メッセージ・タイプに複数のパーツがある変数は、 これらのパーツに DataObject ラッパーを使用します (WebSphere Application Developer Integration Edition でのラッパーは、WSIFMessage でした)。
getVariableAsWSIFMessage メソッドには、2 つのバリエーションがあったことに注意してください。
getVariableAsWSIFMessage(String variableName)
getVariableAsWSIFMessage(String variableName,
boolean forUpdate)
Java Snippet アクティビティーの場合、 デフォルトのアクセスは読み取り/書き込みです。 変数名のリストを使用して Snippet 内のコメントに @bpe.readOnlyVariables を指定することによって、デフォルトのアクセスを読み取り専用に変更することができます。 例えば、以下のように、変数 B と変数 D を読み取り専用に設定することができます。
variableB.setString("/x/y/z",
variableA.getString("/a/b/c"));
// @bpe.readOnlyVariables names="variableA"
variableD.setInt("/x/y/z",
variableC.getInt("/a/b/c"));
// @bpe.readOnlyVariables names="variableC"

さらに、Java Snippet が条件内にある場合、 デフォルトでは、変数は読み取り専用ですが、 @bpe.readWriteVariables... を指定することによって、 変数を読み取り/書き込みにすることができます。

BPEL 変数の弱く型付けされた setter メソッドは、使用できなくなりました。 変数は、名前により直接的にアクセスできます。 WSDL メッセージ定義に単一パーツがある BPEL 変数は、 実データにラッパーを使用する代わりに、直接そのパーツを表すようになったことに注意してください。 メッセージ・タイプに複数のパーツがある変数は、 これらのパーツに DataObject ラッパーを使用します (WebSphere Application Developer Integration Edition でのラッパーは、WSIFMessage でした)。
BPEL 変数メッセージ・パーツの弱く型付けされた getter メソッドは単一パーツのメッセージには適切ではなく、 複数パーツ・メッセージ用に変更されています。 BPEL 変数 (DataObject) プロパティーの弱く型付けされた getter メソッドにマイグレーションします。

WSDL メッセージ定義に単一パーツがある BPEL 変数の場合、 BPEL 変数はそのパーツを直接表すこと、 および、この変数には getter メソッドを使用せずに直接アクセスする必要があること注意してください。

getVariablePartAsObject メソッドには、2 つのバリエーションがありました。
getVariablePartAsObject(String variableName,
String partName)
getVariablePartAsObject(String variableName,
String partName,boolean forUpdate)
複数パーツ・メッセージの場合、 6.0 の次のメソッドによって同等の機能が提供されています。
getVariableProperty(String variableName,
QName propertyName);

6.0 では、読み取り専用アクセスに変数を使用するという概念はありません (これは、 5.1 では、上記の最初のメソッドおよび forUpdate=' false' を使用する 2 番目のメソッドの場合に該当します)。 変数は 6.0 Snippet で直接使用され、常に更新することが可能です。

BPEL 変数のメッセージ・パーツに弱く型付けされた setter メソッドは単一パーツのメッセージには適切ではなく、 複数パーツ・メッセージ用に変更されています。 BPEL 変数 (DataObject) プロパティーの弱く型付けされた setter メソッドにマイグレーションします。

WSDL メッセージ定義に単一パーツがある BPEL 変数の場合、 BPEL 変数はそのパーツを直接表すこと、 および、この変数には setter メソッドを使用せずに直接アクセスする必要があること注意してください。

次のメソッドの呼び出しをマイグレーションする必要があります。
setVariableObjectPart(String variableName,
String partName, Object data)  
複数パーツ・メッセージの場合、 6.0 の次のメソッドによって同等の機能が提供されています。
setVariableProperty(String variableName,
QName propertyName,Serializable value);
BPEL パートナー・リンクの強く型付けされた getter メソッドは、使用できなくなりました。 BPEL パートナー・リンクの弱く型付けされた getter メソッドにマイグレーションします。
BPEL パートナー・リンクの強く型付けされた setter メソッドは、使用できなくなりました。 BPEL パートナー・リンクの弱く型付けされた setter メソッドにマイグレーションします。
BPEL 相関の強く型付けされた getter メソッドは、使用できなくなりました。
V5.1 Snippet:
String corrSetPropStr =
getCorrelationSetCorrSetAProperty
CustomerName();
int corrSetPropInt =
getCorrelationSetCorrSetBProperty
CustomerId();
V6.0 Snippet:
String corrSetPropStr = (String)
getCorrelationSetProperty(“CorrSetA”,
new  						QName(“CustomerName”));
int corrSetPropInt = ((Integer)
getCorrelationSetProperty (“CorrSetB”,
new  						QName(“CustomerId”))).
intValue();
BPEL アクティビティー・カスタム・プロパティーの弱く型付けされた getter メソッドに必要な追加パラメーター。
V5.1 Snippet:
String val = getActivityCustomProperty
(“propName”);
V6.0 Snippet:
String val = getActivityCustomProperty
(“name-of-current-activity”, “propName”);
BPEL アクティビティー・カスタム・プロパティーの弱く型付けされた setter メソッドに必要な追加パラメーター。
V5.1 Snippet:
String newVal = “new value”;
setActivityCustomProperty(“propName”,
newVal); 
V6.0 Snippet:
String newVal = “new value”;
setActivityCustomProperty(“name-of-current-
activity”, “propName”, newVal);
raiseFault(QName faultQName, Serializable message) メソッドはなくなりました。 可能な場合は、raiseFault(QName faultQName, String variableName) にマイグレーションします。 可能でない場合は、raiseFault(QName faultQName) メソッドにマイグレーションするか、 またはシリアライズ可能オブジェクト用の新しい BPEL 変数を作成してください。
関連タスク
SDO API への WSIFMessage API 呼び出しのマイグレーション
関連資料
マイグレーション・プロセスの制限 (ソース成果物マイグレーション)

Feedback
(C) Copyright IBM Corporation 2005, 2006. All Rights Reserved.
(C) Copyright IBM Japan 2006