データ表現
ここでは、データ表現について説明します。協調フローは、プロシージャ ステップ(DPC)がリモート プロシージャ ステップ(DPS)に制御とデータを渡すメカニズムを提供します。
cagen
プロシージャ ステップのエクスポート ビューのデータは、リモート プロシージャ ステップに渡され、リモート プロシージャ ステップのインポート ビューに格納されます。
DPC と DPS は、さまざまな環境およびコンピュータ アーキテクチャで実行できます。たとえば、DPC を ASCII コンピュータで実行し、DPS を EBCDIC コンピュータで実行できます。DPC と DPS を実行する環境では、数値データは異なる形式で表されます。
協調フローをサポートするさまざまな環境に対応するために、ビュー データはプラットフォームに依存しないエンコードされたバッファで送信されます。この専用のバッファ形式は、
共通フォーマット バッファ
(CFB)と呼ばれます。エンコードされた CFB は、DPC と DPS の間で送信されるビュー データを交換するために使用されます。詳細については、「共通フォーマット バッファ」を参照してください。Gen
では、DPC と DPS が同じ実行環境で動作する協調フローをサポートします。これらの環境では、CFB を使用せずにデータを送信可能にするトランスポート メカニズムが提供されます。これらの環境には、Tuxedo サーバへのフローがある Tuxedo クライアント、EJB サーバへのフローがある Java クライアント、.NET サーバへのフローがある .NET クライアントが含まれます。各環境では、それぞれの環境に固有のデータ形式や伝送技術が使用されます。Gen
は、協調フローに関わる DPC と DPS の実行環境に最適な形式でビュー データを送信します。DPC および DPS アプリケーションの間で渡されるデータの一般的な制限事項
Gen
DPC および DPS の間でデータを渡す場合、協調フローではネストされた反復グループ ビューはサポートされません。共通フォーマット バッファ(CFB)
共通フォーマット バッファ(CFB)は、協調フローの処理中にビュー データを交換するために
Gen
で使用するエンコードされたバイト ストリームです。インポート ビューとエクスポート ビューに加えて、CFB には、協調フローの処理に使用されるさまざまな制御データが含まれています。CFB の形式とエンコーディング規則は独自のものです。そのため、CFB がどのように構成されるかについての詳細な説明はありません。しかし、CFB の構造と内容をおおまかに把握できるように、CFB のエンコーディングに関するいくつかの特徴を以下に示します。
- TCP/IP をトランスポートとして使用し、IMS をターゲットにするアプリケーションでは、CFB に IMS 要求メッセージ(IRM)および 4 バイトのトレーラを含める必要があります。Genでは 32 バイトの IRM を使用しているため、CFB の最大サイズは 36 バイト削減されます。
- 多くのデータ タイプは、圧縮された形式で CFB に格納されます。
- 数値データは、有効な終了バイト オーダを含む 2 の補数形式を使用してエンコードされます。
- NULL フィールドまたはデータが格納されていないフィールドは、スキップされたものとしてエンコードされます。
- 圧縮されていない文字列は、固定長文字列または NULL 終端としてエンコードされます。
以下の表に、CFB 構造の概要を示します。CFB 内の 2 つのタイプの領域は、固定部分と再配置可能な部分です。再配置可能な部分のいくつかは、構成されている CFB のタイプによっては省略可能です。オフセットは再配置可能な項目を参照し、ヘッダの後に続くバッファ内の任意の場所に表示できます。
領域 | タイプ | 備考 |
CFB ヘッダ | 固定 | 協調フローの処理に関わるランタイムで主に使用される制御情報が含まれる、構造化データ領域。 |
ユーザ アクション(UA) | 再配置可能 | 協調フローを発生させたユーザー実行アクションを詳述するデータが含まれる、構造化データ領域。 |
次ロケーション | 再配置可能 | Next Location システム変数が含まれる NULL 終端文字列。 |
モデル名 | 再配置可能 | モデル名が含まれる NULL 終端文字列。 |
言語 | 再配置可能 | クライアントで有効な言語が含まれる圧縮文字列。 |
エグジット・ステート | 再配置可能 | DPS で使用するために DPC で設定された対話フローのエグジット ステートが含まれる圧縮文字列。 |
ビュー データ | 再配置可能 暗号化可能 | DPC と DPS の間で交換されるインポート ビューまたはエクスポートビューのデータを含むフィールドのエンコードされた順序セット。 |
セキュリティ | 再配置可能 暗号化可能 | Gen の拡張セキュリティに使用されるフィールドが含まれる構造化データ領域。 |
Tuxedo View32 データ バッファ
Tuxedo が提供する機能を活用する
Gen
分散アプリケーションでは、Tuxedo の View32 データ形式を使用してデータを交換します。Tuxedo View32 バッファは C 言語の構造体で、ビュー構造のさまざまな要素に関連付けられた 32 ビットのフィールド識別子が含まれます。
Gen
では、協調フローを含む DPC が通信タイプとして Tuxedo を使用して Tuxedo TP モニタをターゲットとする場合に、View32 バッファ定義を生成します。View32 バッファを使用すると、
Gen
アプリケーションは Tuxedo のデータ依存ルーティング機能を使用できます。Tuxedo TP モニタ環境は、View32 バッファに含まれるデータの内容に基づいて、データをさまざまなサーバにルーティングするように構成されます。データ依存ルーティングは、Tuxedo が提供する機能を使用して、生成されたアプリケーション コードを変更することなく実現されます。Tuxedo 協調フローでの
Gen
による View32 データ バッファ使用の詳細については、「Tuxedo の操作」を参照してください。NonStop ビュー データの交換
Gen
では、協調フローが含まれる DPC が Pathway TP モニタをターゲットとする場合に、NonStop のバッファ定義を生成します。ビュー データは CFB ベースで、転送メカニズムとしてクライアント マネージャまたはコミュニケーション ブリッジを使用できます。Gen
による NonStop のビュー データ バッファ使用の詳細については、「NonStop インプリメンテーション ツールセット」を参照してください。.NET のシリアル化可能なインポートおよびエクスポート オブジェクト
Gen
では、.NET 協調アプリケーションのコンポーネントのビュー データをインポートおよびエクスポート オブジェクトで生成します。DPC は、.NET リモーティングと呼ばれるリモート プロシージャ呼び出しメカニズムを使用して、.NET DPS とビュー データを交換します。ビュー データの交換は、.NET リモーティング トランスポートでインポートおよびエクスポート オブジェクトをシリアル化することで発生します。Gen
.NET ビュー オブジェクトの詳細については、「プロキシの操作」を参照してください。 Java のシリアル化可能なインポートおよびエクスポート オブジェクト
Gen
では、Java 協調アプリケーションのコンポーネントのビュー データをインポートおよびエクスポート オブジェクトで生成します。DPC は、リモート メソッド呼び出し(RMI)と呼ばれるリモート プロシージャ呼び出しメカニズムを使用して、Java EJB DPS とビュー データを交換します。ビュー データの交換は、RMI トランスポートでインポートおよびエクスポート オブジェクトをシリアル化することで発生します。Gen
Java ビュー オブジェクトの詳細については、「プロキシの操作」を参照してください。