ページの先頭行へ戻る
Interstage Business Application Server アプリケーション開発ガイド
FUJITSU Software

9.3.5 制御データの設定

サーバアプリケーションを呼び出す際に受け渡す制御データの設定、およびサーバアプリケーションから返却された制御データの取得方法について説明します。

beanの利用

一般的なJavaアプリケーションからの呼出しAPIを例に説明を行います。Apcoordinatorのリモート共通インタフェースによる呼出しを使用する場合も同様に扱うことが可能です。

プロパティを設定した制御データ用のbeanを、setControlDataメソッドを使用してMsyncCallに設定します。beanへプロパティを設定する方法は、業務データの場合と同様です。

以下に、制御データを設定する例を示します。

  ...
  // (1)制御データ設定用のbeanを生成
  Operation01Bean controlBean = new Operation01Bean();
  controlBean.setNextApp("apl01");    // プロパティを設定
  // (2)MsyncCallに制御データを設定
  call.setControlData(controlBean);
  ...
  // (3)サーバアプリケーションの呼出し
  UserBean response = (UserBean)call.invokeMsync(bean,""); 
  ...

サーバアプリケーションから返ってきた制御データの取得はgetControlDataメソッドを使用します。制御データのパラメタ名に対応したプロパティ取得用メソッドを呼び出すと、通信データの型に対応する値またはオブジェクトが返されます。

以下に、結果を参照する例を示します。

  ...
  // (3)サーバアプリケーションの呼出し
  UserBean response = (UserBean)call.invokeMsync(bean,"");
  // (4)制御データの取り出し
  controlBean = (Operation01Bean)call.getControlData();
  ...

Mapの利用

一般的なJavaアプリケーションからの呼出しAPIを例に説明を行います。Apcoordinatorのリモート共通インタフェースによる呼び出しを使用する場合も同様に扱うことが可能です。

プロパティを設定した制御データ用のMapを、setControlDataメソッドを使用してMsyncCallに設定します。Mapへプロパティを設定する方法は、業務データの場合と同様です。

クライアントでパラメタ名に対応するプロパティが設定されなかった場合はサーバでデータの初期値が設定されます。
Mapへ設定されたデータ型と業務共通制御のオペレーションで定義されたパラメタの型とが対応しない場合はサーバからApfwSystemExceptionがthrowされます。
以下に、制御データを設定する例を示します。

  ...
  // (1)制御データ設定用のMapを生成
  HashMap<String, Object> controlMap = new HashMap<String, Object>();
  controlMap.put("NextApp", "apl01");    // プロパティを設定
  // (2)MsyncCallに制御データを設定
  call.setControlData(controlMap);
  ...
  // (3)サーバアプリケーションの呼出し
  HashMap<String, Object> response = (HashMap<String, Object>)call.invokeMsync(map,"");
  ...

サーバアプリケーションから返ってきた制御データの取得はgetControlDataメソッドを使用します。プロパティ名を指定し、getメソッドを呼び出すと、通信データの型に対応するオブジェクトが返されます。
以下に、結果を参照する例を示します。

  ...
  // (3)サーバアプリケーションの呼出し
  HashMap<String, Object> response = (HashMap<String, Object>)call.invokeMsync(map,"");
  // (4)制御データの取り出し
  controlMap = (HashMap<String, Object>)call.getControlData();
  ...

J2EE Connector Architecture対応クライアントAPIを使用する場合

J2EE Connector ArchitectureのCCIによる呼出しの場合は、プロパティを設定した制御データ用のMapを、setControlDataメソッドを使用してMsyncInteractionSpecに設定します。Mapへプロパティを設定する方法は、一般的なJavaアプリケーションからの呼出しの場合と同様です。

クライアントでパラメタ名に対応するプロパティが設定されなかった場合はサーバでデータの初期値が設定されます。
Mapへ設定されたデータ型と業務共通制御のオペレーションで定義されたパラメタの型とが対応しない場合はResourceExceptionがthrowされます。
以下に、制御データを設定する例を示します。

public void doSomething(DataBean dataBean){
  ...
    // (4)InteractionSpecの作成
    MsyncInteractionSpec interSpec = new MsyncInteractionSpec();
  ...
    // (5-3)制御データの作成
    HashMap<String,Object> controlMap = new HashMap<String,Object>();
    controlMap.put("NextApp", "apl01");
    // (5-4)制御データの設定
    interSpec.setControlData(controlMap);
    // 入力データの作成
  ...
    // (9)サーバアプリケーションの呼び出し(Interactionの実行)
    // 第一引数には(4)で作成したMsyncInteractionSpecを渡してください
    inter.execute(interSpec, input, output);
  ...

サーバアプリケーションから返ってきた制御データの取得はgetControlDataメソッドを使用します。プロパティ名を指定し、getメソッドを呼び出すと、通信データの型に対応するオブジェクトが返されます。
以下に、結果を参照する例を示します。

  ...
    // (9)サーバアプリケーションの呼び出し(Interactionの実行)
    // 第一引数には(4)で作成したMsyncInteractionSpecを渡してください
    inter.execute(interSpec, input, output);
    // (10)制御データの取り出し
    controlMap = (HashMap<String,Object>)interSpec.getControlData();
  ...