WebFacing アプリケーション・ブリッジを使用した、他の Web アプリケーションとの相互運用

WebFacing アプリケーション・ブリッジによって、新規の Web アプリケーション (例えば EGL で記述されたもの) は、既存の WebFacing または HATS アプリケーション (あるいはその両方) とシームレスに相互接続することができます。

このテクノロジーによって、WebFacing および/ま たは HATS を使用して、素早く簡単にアプリケーションを最新のものにすることができ、新規の Web アプリケーションを繰り返し追加して最新の Web テクノロジーを活用できます。

アプリケーション・ブリッジによって、WebFacing アプリケーションと、EGL など他の Web アプリケーションとの間で制御およびデータを転送し、HATS、WebFacing および EGL アプリケーションを単一のアプリケーションとして結合することができます。 この方法は、直接データベースにアクセスする Web アプリケーションで IBM® i からデータを取得する方法や、Web サービスを介してバッチ・プログラムを呼び出すことにより IBM i からデータを取得する方法よりも優れています。 これにより新規の Web アプリケーションを、対話式の IBM i アプリケーションにリンクさせ、データを共有することができます。

WebFacing アプリケーションおよび対応する Web アプリケーションは、デプロイメントのために EAR ファイルとしてパッケージ化できます。EAR ファイルは、IDE の Java™ EE パースペクティブを使用して作成することができます。 ただし、WebFacing アプリケーションと Web アプリケーションは、同じアプリケーション・サーバー・インスタンス内の異なる EAR ファイルとしてもデプロイできます。

WebFacing アプリケーションと他の Web アプリケーションとの間の相互運用性をサポートするには、DDS リンケージ・レコードが作成され、アプリケーション・ブリッジの Web 設定がそのレコード用に設定されている必要があります。DDS リンケージ・レコードは、隠しフィールド (使用法 H) として定義したフィールドを含む標準の DDS レコードで、これをデータの転送に使用することができます。DDS リンケージ・レコードが、実際に表示されることはありません。これは、ご使用の IBM i アプリケーションがレコードに書き込みを行ったときに、アプリケーション・ブリッジ Web 設定のターゲット・アプリケーション URL 内に指定された Web アプリケーションへのデータおよび制御の転送に使用されるだけです。

DDS リンケージ・レコードの作成について詳しくは、DDS ソースでの Web 設定の使用で、アプリケーション・ブリッジの Web 設定について参照してください。

WebFacing アプリケーション・ブリッジは、以下のシナリオで制御およびデータの転送をサポートします。
  1. WebFacing アプリケーションがデータを使用して Web アプリケーションを呼び出します。その Web アプリケーションは、データの更新とともに制御を WebFacing に戻します。
    • IBM i アプリケーションは、WebFaced リンケージ・レコードに書き込みを行い (制御およびデータを別の Web アプリケーションへ転送)、その後すぐに読み取りを行い、データが戻るのを待ちます。
  2. Web アプリケーションが WebFacing アプリケーションを呼び出します。 WebFacing アプリケーションは実行してデータを別の Web アプリケーションに戻します。
    • IBM i アプリケーションは FRCDTA キーワードが指定された WebFaced リンケージ・レコードに書き込みを行い、アプリケーションを終了します。

シナリオ 1 では、IBM i アプリケーションが DDS リンケージ・レコードに書き込みおよび読み取りを行ったときに、データを WebFacing アプリケーションから、アプリケーション・ブリッジ Web 設定のターゲット・アプリケーション URL 内に指定された Web アプリケーションに渡します。 そして WebFacing アプリケーションは Web アプリケーションからの応答を待ちます。Web アプリケーションは、LinkageData 要求属性によってデータを読み取り、更新があれば行い、その更新を WebFacing アプリケーションに送信して戻します。その時点で WebFacing アプリケーションが制御を再開します。

シナリオ 2 では、WebFacing のプログラマチックな起動がサポートされるため、パラメーターがあってもなくても、CL コマンドを指定して WebFacing アプリケーションを開始することができます。WebFacing アプリケーションが稼働した後、IBM i アプリケーションが DDS リンケージ・レコードに書き込みを行ったときに、アプリケーション・ブリッジ Web 設定のターゲット・アプリケーション URL 内に指定された Web アプリケーションにデータを戻します。 このシナリオでは、DDS リンケージ・レコードに FRCDTA キーワードを指定して、アプリケーションが正常に終了するようにします。 プログラマチックな起動について詳しくは、他の Web アプリケーションからの WebFacing アプリケーションのプログラマチックな起動を参照してください。

WebFacing アプリケーション・ブリッジを使用して、WebFacing および/または HATS アプリケーションを、他の Web アプリケーションと相互運用することができます。 HATS は、HATS および WebFacing プロジェクトが相互運用性フィーチャーを使用してリンクされていると WebFacing と共に使用可能になります。 リンクされた HATS/WebFacing プロジェクトでは、以下のシナリオでアプリケーション・ブリッジを使用することができます。
  1. HATS および Web/EGL の場合: リンケージ・レコードのみが WebFacing プロジェクトで変換され、WebFaced となり、HATS プロジェクトが制御およびデータを Web/EGL に移動することができます。
  2. WebFacing、HATS、および Web/EGL の場合: アプリケーションの一部が WebFaced となり、他の部分が HATS プロジェクトとして実行されます。これにより、WebFacing および HATS プロジェクトまたはその両方が制御およびデータを Web/EGL に渡すことができます。

WebFacing から別の Web アプリケーションへの制御の引き渡し

上述のシナリオでは両方とも、DDS リンケージ・レコードへの書き込みが行われ、制御が WebFacing から別の Web アプリケーションに渡されます。 これは、アプリケーション・ブリッジ Web 設定のターゲット・アプリケーション URL 内で指定された URL で、Java EE 転送メソッドを使用して行われます。 WebFacing アプリケーションは、ターゲット・アプリケーションの URL の最初の一部をコンテキスト・ルートとして使用して WebFacing アプリケーションをその URL の残りの部分に転送します。ターゲット・アプリケーションの URL が /appContextRoot/appEntryPoint の場合、WebFacing アプリケーションは appContextRoot をコンテキスト・ルートとして使用して appEntryPoint に転送します。 WebFacing アプリケーションは、転送の前に要求属性「forwarded」を値「WF」と共に要求オブジェクトに追加します。 これにより、受信側のアプリケーション・ランタイムが、転送によって制御を受信したときに、必要に応じて特別なアクションを実行することができます。

別の Web アプリケーションから WebFacing への制御の引き渡し

シナリオ 1 では、WebFacing アプリケーションに制御を戻すとき、データを適切に更新するために、Web アプリケーションは、転送の前に要求オブジェクトに属性「forwarded」を追加します。 EGL アプリケーションから転送される要求の場合、要求属性は「EGL」、他の Web アプリケーションから転送される要求の場合は「CUSTOM」です。 これにより、受信側の WebFacing アプリケーションが、転送によって制御を受信したときに必要に応じて特別なアクションを実行することができます。WebFacing アプリケーションのエントリー・ポイントは、/webfacing/WebFacing.do です。

WebFacing と他の Web アプリケーションとの間のデータの交換

DDS リンケージ・レコードを介して WebFacing アプリケーションへ送信されたアプリケーション・ブリッジのデータは、HashMap 内のキーとしてのフィールド名、および関連するキーの値としてのフィールド値で、Java HashMap に保存されます。HashMap へのアクセスには LinkageData という要求属性が使用されます。

DDS リンケージ・レコード内のフィールド値は、Unicode のストリング・データとして HashMap に保管されます。他の Web アプリケーションは、必要に応じて HashMap 内のフィールドを更新し、「LinkageData」要求属性を使用して WebFacing アプリケーションに HashMap を送信して戻します。 フィールド値には、対応する DDS データ型によって許可された適切な長さの文字が含まれます。そうでない文字は WebFacing アプリケーションによって破棄されます。

次のことに注意してください。
  1. 文字フィールドおよび DBCS フィールド: これらのデータ・タイプでのフォーマット設定は実行されません。
  2. 数値フィールド: フィールドの小数部の桁が 0 より大きい場合は、データの適切な場所に小数点「.」が挿入されます。負の数値では、データの最初に負符号「-」が付加されます。 例えば、-000123.45 は、長さが 8 で小数部の桁が 2 の数値として適切な形式です。
  3. 日付フィールド: ISO 形式 YYYY-MM-DD が使用されます。
  4. 時刻フィールド: ISO 形式 hh:mm:ss が使用されます。
  5. タイム・スタンプ・フィールド: ISO 形式 YYYY-MM-DDThh:mm:ss.uuuuuu が使用されます。
注: DDS リンケージ・レコードにフィールドが含まれていない場合、要求属性「LinkageData」の値は NULL に設定されます。