サーバアプリケーションを呼び出す際に受け渡す業務データの設定、およびサーバアプリケーションから返却された業務データの取得方法について説明します。
■beanの利用
一般的なJavaアプリケーションからの呼出しAPIを例に説明を行います。Apcoordinatorのリモート共通インタフェースによる呼出しを使用する場合も同様に扱うことが可能です。
beanへプロパティを設定する場合は、beanに定義されたサーバアプリケーションのパラメタ名に対応したプロパティ設定用のメソッドを使用します。このメソッドの引数にはプロパティの値を指定します。パラメタ名は、開発する言語により、次のようになります。
アプリケーション開発言語 | 意味 |
|---|---|
C言語 | IDLファイルのオペレーション宣言で指定するパラメタ名 |
COBOL | COBOL開発支援ツールの[パラメタと復帰値情報]画面で指定するパラメタ名(注) |
注)COBOL開発支援ツールの[パラメタと復帰値情報]画面で指定された名前から、以下のルールでプロパティ名を生成します。
大文字は小文字に置き換えます。
“-”(ハイフン)は“_”(アンダーバー)に置き換えます。
COBOL開発支援ツールの[パラメタと復帰値情報]画面については、“14.4.5.3 COBOL実行基盤インタフェースを生成するアプリケーション情報の追加”の“■パラメタと復帰値情報”を参照してください。
以下に、データを設定する例を示します。
public void doSomething(DataBean dataBean){
// パラメタ設定用のUserBeanを生成
UserBean bean = new UserBean();
bean.setID(dataBean.getID()); // プロパティを設定
...
// (3)サーバアプリケーションの呼出し
UserBean response = (UserBean)call.invokeMsync(bean,"apl"); // 送信するデータとサーバアプリケーション名を指定して呼出し
... |
サーバアプリケーションから返ってきた値の取得はサーバアプリケーションのパラメタ名に対応したプロパティ取得用メソッドを使用します。このメソッドを呼び出すと、通信データの型に対応する値またはオブジェクトが返されます。戻り値を取得する場合はgetApfw_resultメソッドを使用してください。
以下に、結果を参照する例を示します。
public void doSomething(DataBean dataBean){
...
// (3)サーバアプリケーションの呼出し
UserBean response = (UserBean)call.invokeMsync(bean,"apl");
// (4)サーバアプリケーションの結果(復帰値)を参照する
String result = response.getApfw_result();
int para1 = response.getPara1();
... |
■Mapの利用
一般的なJavaアプリケーションからの呼出しAPIを例に説明を行います。Apcoordinatorのリモート共通インタフェースによる呼び出しを使用する場合も同様に扱うことが可能です。
Mapへプロパティを設定する場合は、putメソッドを使用します。putメソッドの第一引数にはプロパティ名を文字列で指定します。第二引数にはプロパティの値を指定します。プロパティ名は、サーバアプリケーションのパラメタ名を指定します。パラメタ名は、開発する言語により、次のようになります。
アプリケーション開発言語 | 意味 |
|---|---|
C言語 | IDLファイルのオペレーション宣言で指定するパラメタ名 |
COBOL | COBOL開発支援ツールの[パラメタと復帰値情報]画面で指定するパラメタ名(注) |
注)COBOL開発支援ツールの[パラメタと復帰値情報]画面で指定した名前をプロパティ名としてMapへ指定する際に、以下のルールで読み替えてください。
大文字は小文字にしてください。
“-”(ハイフン)は“_”(アンダーバー)にしてください。
COBOL開発支援ツールの[パラメタと復帰値情報]画面については、“14.4.5.3 COBOL実行基盤インタフェースを生成するアプリケーション情報の追加”の“■パラメタと復帰値情報”を参照してください。
クライアントでパラメタ名に対応するプロパティが設定されなかった場合はサーバでデータの初期値が設定されます。
Mapへ設定されたデータ型とサーバのオペレーションで定義されたパラメタの型とが対応しない場合はサーバからApfwSystemExceptionがthrowされます。
以下に、データを設定する例を示します。
public void doSomething(DataBean dataBean){
// パラメタ設定用のHashMapを生成
HashMap<String, Object> map = new HashMap<String, Object>();
map.put("ID", dataBean.getID()); // プロパティを設定
...
// (3)サーバアプリケーションの呼出し
HashMap<String, Object> response = (HashMap<String, Object>)call.invokeMsync(map,"apl"); // 送信するデータとサーバアプリケーション名を指定して呼出し
... |
サーバアプリケーションから返ってきた値の取得はgetメソッドを使用します。プロパティ名を指定し、getメソッドを呼び出すと、通信データの型に対応するオブジェクトが返されます。戻り値を取得する場合はプロパティ"apfw_result"を指定してください。
以下に、結果を参照する例を示します。
public void doSomething(DataBean dataBean){
...
// (3)サーバアプリケーションの呼出し
HashMap<String, Object> response = (HashMap<String, Object>)call.invokeMsync(map,"apl");
// (4)サーバアプリケーションの結果(復帰値)を参照する
String result = (String)response.get("apfw_result");
Integer para1 = (Integer)response.get("para1");
... |
■MappedRecordの利用
J2EE Connector ArchitectureのCCIによる呼出しの場合に使用します。
MappedRecordへプロパティを設定する場合は、putメソッドを使用します。putメソッドの第一引数にはプロパティ名を文字列で指定します。第二引数にはプロパティの値を指定します。プロパティ名は、サーバアプリケーションのパラメタ名を指定します。パラメタ名は、開発する言語により、次のようになります。
アプリケーション開発言語 | 意味 |
|---|---|
C言語 | IDLファイルのオペレーション宣言で指定するパラメタ名 |
COBOL | COBOL開発支援ツールの[パラメタと復帰値情報]画面で指定するパラメタ名(注) |
注)COBOL開発支援ツールの[パラメタと復帰値情報]画面で指定した名前をMapへ指定する際に、以下のルールで読み替えてください。
大文字は小文字にしてください。
“-”(ハイフン)は“_”(アンダーバー)にしてください。
COBOL開発支援ツールの[パラメタと復帰値情報]画面については、“14.4.5.3 COBOL実行基盤インタフェースを生成するアプリケーション情報の追加”の“■パラメタと復帰値情報”を参照してください。
クライアントでパラメタ名に対応するプロパティが設定されなかった場合は、サーバでデータの初期値が設定されます。MappedRecordへ設定されたデータ型とサーバのオペレーションで定義されたパラメタの型とが対応しない場合は、ResourceExceptionがthrowされます。
以下に、データを設定する例を示します。
public void doSomething(DataBean dataBean){
...
// 入力データの作成
// (7)Record(処理対象データを格納するクラス)の作成
MappedRecord input = rf.createMappedRecord(null);
MappedRecord output = rf.createMappedRecord(null);
// (8)処理対象データをMappedRecordに格納
input.put("ID", dataBean.getID()); // プロパティを設定
// (9)サーバアプリケーションの呼び出し(Interactionの実行)
// 第二引数には(8)で処理対象データを格納したMappedRecordを渡してください
// 第三引数には(7)で作成した処理結果格納用のMappedRecordを渡してください
inter.execute(interSpec, input, output);
... |
■IndexedRecordの利用
J2EE Connector ArchitectureのCCIによる呼出しの場合に使用します。
IndexedRecordへプロパティを設定する場合は、addメソッドを使用します。addの引数にはプロパティの値を指定します。
IndexedRecordへ設定されたデータ型とサーバのオペレーションで定義されたパラメタの型とが対応しない場合は、ResourceExceptionがthrowされます。
以下に、データを設定する例を示します。
public void doSomething(DataBean dataBean){
...
// 入力データの作成
// (11)Record(処理対象データを格納するクラス)の作成
IndexedRecord input = rf.createIndexedRecord(null);
IndexedRecord output = rf.createIndexedRecord(null);
// (12)パラメタをRecordに格納
input.add(dataBean.getID()); // プロパティを設定);
// (13)サーバアプリケーションの呼び出し
// 第二引数には(12)で処理対象データを格納したIndexedRecordを渡してください
// 第三引数には(11)で作成した処理結果格納用のIndexedRecordを渡してください
inter.execute(interSpec, input, output);
... |