例 11: IMS™ データベースを順次読み取る
次の例では、File Manager Service Provider REST API 呼び出しを実行して IMS™ データベースからセグメントを読み取る永続セッションを開始し、File Manager/IMS ビューを使用して各セグメントのフィールドをマップします。
この例は、一致するビューを使用して IMS™ データベースをマップするサービス・アーカイブが作成され、デプロイされていることを前提とします。例えば、サービス・アーカイブは次のプロパティー・ファイルを使用して作成できます。
name=fmExample11
description=IFB2:HDOU#1 MAPPED BY MY.IMS.VIEW(HDOU#1)
version=1.0
provider=filemanager
host=10.1.1.2
port=9043
userid=admin
passwd=s3cr3t
ssid=IFB2
database=HDOU#1
regionType=DLI
view=MY.IMS.VIEW(HDOU#1)
timeout=300
connid=default
この例では、サブシステム IFB2 内の IMS™ データベース HDOU#1 を動的 PSB (psbMember が指定されていないため) および DLI の領域タイプとマップします。データベースは、MY.IMS.VIEW(HDOU#1) で検出された File Manager/IMS ビューによってマップされます。この例では、生成された SAR ファイルと関連する組み込みの API が z/OS® Connect WLP サーバーにデプロイされていることを前提としています。
初回要求
IMS™ データ・リソースからデータを読み取る初回 API 呼び出しには、IMS™ データ・リソースへの以降のアクセスで呼び出し元を認証できるように、HTTP Basic 認証ヘッダーが必要です。例:
Authorization : Basic dXNlcmlkOnBhc3N3b3Jk
ここで、Basic キーワードに続くストリングは、userid:password の Base64 エンコードを示します。
また、JSON ペイロードがあるすべての要求でも、値が application/json
の Content-Type ヘッダーが必要です。
初回要求では、データ・リソースに命名したり、ビュー情報を指定したりする必要はありません。この情報は API に関連付けられたサービス・アーカイブに既に含まれています。このため、API 呼び出し元が指定する必要があるのは、必要に応じて、オプションの operation パラメーターと position パラメーターのみです。
{
"operation" :
{
"numSegments" : 1,
"session" : true
}
}
この要求では、IMS™ ビューによるフィルターに従い FM/IMS データベースの先頭から 1 セグメントが読み取られます。すべてのセグメント読み取りは、ビューによる応答でマップされます。
File Manager/IMS が true に設定されているため、サービス・プロバイダーは session
セッションを維持します。セッションは、以降、session
が false に設定された要求が実行されるまで、またはセッションでアクティビティーがない状態で 300 秒 (5 分) のタイムアウト期間が経過するまでアクティブのままになります。このタイムアウト期間はサービス・アーカイブで事前設定されています。
session
が true に設定されている場合、呼び出し元は初回要求でトークンが戻ることを期待し、Basic 認証ヘッダーを渡す必要なく後続の呼び出しでトークンを使用できます。
成功時の応答
成功時の応答 (HTTP ステータス・コード 200) は次のようになります。
{
"segments":
[
{
"PARTROOT":
{
"PARTROOT":
{
"ROOT-KEY": "3009280",
"ROOT-SPACES": " ",
"ROOT-TYPE": "02",
"ROOT-WOSNAME": "HOUSING CONV"
}
}
}
],
"token": "/u5qZ/hg8fX18fH29Pjz9WD39fnw8/k="
}
後続の読み取り要求
API 呼び出し元は、応答トークンを使用して後続の要求を実行し、サービス・プロバイダーによって保守される FM/IMS セッションを再使用できるようになります。例:
{
"operation" :
{
"numSegments" : 1,
"session" : true,
"token": "/u5qZ/hg8fX18fH29Pjz9WD39fnw8/k="
}
}
API 呼び出し元は、最後のセグメントが読み取られたことを示す、last
が true に設定された応答セグメント・オブジェクトがあるまで、1 つ以上のセグメントを読み取り続けることができます。例:
{
"segments" :
[
{
"last" : true,
… other response fields
}
]
}
セッションの終了
現時点では、API 呼び出し元はアクティブな FM/IMS セッションを終了する要求を送信します。
{
"operation" :
{
"numSegments" : 0,
"session" : false,
"token": "/u5qZ/hg8fX18fH29Pjz9WD39fnw8/k="
}
}
トークンが有効な場合、session
が false に設定された要求を送信すると FM/IMS セッションは常に終了します。呼び出し元は既に最後のセグメントを読み取っているため、"numSegments" : 0
を設定することでもうセグメントを読み取らないようサービス・プロバイダーに指示します。