抽出レコード処理

レコードを選択し、レコードごとに出力を生成してファイルに書き込むことで、外部システムと統合するプロセスは、抽出プロセスと呼ばれます。基本バッチ管理プラグイン・ドリブンの抽出テンプレート(F1-PDBEX)をテンプレートとして使用できます。

ファストパス: 「アドホック・プロセス」のトピックを参照してください。レコードの選択プラグインに関する情報と、レコードの処理プラグインに関する情報の一部が、抽出プロセスに適用されます。このトピックでは、抽出プロセスに固有の側面について説明します。
システム提供のプロセスには、作成されたファイルに対してファイル・パスとファイル名を構成するパラメータが含まれています。ファイル・パスでは、「URIの参照」のトピックで説明されているすべての機能がサポートされています。ファイル名では、実行番号、スレッド番号、ユーザー、日時などのシステム置換変数がサポートされています。また、該当する拡張機能が使用されていれば、プロセスで圧縮もサポートされます。詳細は、バッチ管理の「ファイル名」パラメータの説明を参照してください。
注意: ビジネス値をファイル名に置換するためのサポートの詳細は、「柔軟なファイル名/複数のファイルの書込み」を参照してください。

抽出プロセスでは、レコードの処理アルゴリズムが、1つ以上のXMLインスタンスでファイルに書き込むデータを、XMLインスタンスを記述するスキーマ名とともに返します。プログラムにより、「ファイル形式」バッチ・パラメータで指定された形式に従ってファイルにデータが書き込まれます。デフォルトでは、サービスは日時にOUAF書式を使用します。これを上書きしてXSD書式を使用するには、「日時書式」バッチ・パラメータを「XSD」に構成します。

既存のスキーマが出力要件を満たす場合は、そのスキーマを使用できます。それ以外の場合は、データ領域を定義してレコードの出力形式を適切に指定する必要があります。

レコードの処理アルゴリズムを設計および構成する場合、次の2つのオプションがあります。

  • 抽出ロジックをカプセル化する特定のレコードの処理アルゴリズム・タイプを作成します。製品には、使用できる基本的な手法を示す基本アルゴリズム・タイプが用意されています。詳細は、アルゴリズム・タイプ「一般プロセス - サンプル・プロセス・レコード抽出」(F1-GENPROCEX)を参照してください。

  • 抽出に含めるレコードを定義するファイル統合タイプを作成し、その統合タイプを参照するプラグイン・ドリブン・バッチ管理を構成します。このタイプの機能を実装する方法の詳細は、「ファイル統合を使用した抽出」を参照してください。

特定のエッジ製品には、あらかじめ他の、レコードの処理アルゴリズム・タイプが用意されている場合があります。アルゴリズム・タイプ問合せを使用し、このアルゴリズム・エンティティのレコードを検索します。

レコードXMLノードによるグループ化

出力をXML形式で生成する抽出プロセスを構成する場合に、レコードの処理プラグインが、複数のスキーマを、同じレコードのすべての部分に属する情報とともに返す場合があります。たとえば、出力には、アカウント情報や関連する契約詳細が含まれることがあります。
<account type="group"
    <accountId>1234567890</accountId>
    ...
</account>
<sa type="group"
    <saId>123457665</saId>
    ...
</sa>
<sa type="group"
    <saId>1234588913</saId>
    ...
</sa>
この場合、1つのレコードに対するすべての情報がグループ化されるように、グループ化XMLタグでそのすべての情報をラップすることをお薦めします。レコードの処理プラグインは、選択したレコードの抽出情報の一部ではないヘッダー・レコードまたはフッター・レコードを返すことがあるため、バッチ・プロセスは、レコードの処理プラグインによって返されたスキーマが論理的に何に属しているかを認識できません。スキーマ・コレクション内の出力パラメータ「レコードXMLノード」を使用して、関連情報をグループ化するために使用する外部XMLノードを指定する必要があります。次に例を示します。
<SchemaInstance>
<recordXMLNode>record</recordXMLNode>
<schemaName>CM-AccountRecord</schemaName>
<schemaType>F1DA</schemaType>
<data><account><accountId>1234567890</accountId>...</data>
</SchemaInstance>
<SchemaInstance>
<recordXMLNode>record</recordXMLNode>
<schemaName>CM-SAInfo</schemaName>
<schemaType>F1DA</schemaType>
<data><sa><saId>123457665</saId>... </data>
</SchemaInstance>
<SchemaInstance>
<recordXMLNode>record</recordXMLNode>
<schemaName>CM-SAInfo</schemaName>
<schemaType>F1DA</schemaType>
<data><sa><saId>1234588913</saId>... </data>
</SchemaInstance>
次の例に示すように、レコードの処理プラグインを1回コールして返されたすべてのスキーマのうち、同じレコードXMLノードを持つものは、そのXMLタグで囲まれた書込み出力にグループ化されます。
<root>
<record>
<account>
    <accountId>1234567890</accountId>
    ...
</account>
<sa>
    <saId>123457665</saId>
    ...
</sa>
<sa>
    <saId>1234588913</saId>
    ...
</sa>
</record>
<record>
<account>
    <accountId>987654320</accountId>
    ...
</account>
<sa>
    ...
</sa>
</record>
</root>

マルチスレッド抽出

データの抽出時に、データの量によってジョブをマルチスレッドで実行することが必要になる場合があります。この場合、ファイル名に含まれるスレッド番号で個別のファイルが生成されます。ファイル名を指定するときに、あらかじめスレッド番号を置換変数として含めることができます。そうしない場合は、システムによってスレッド番号が追加されます。

便宜上、システムでは、様々なスレッドで生成された抽出ファイルを最後に連結することがサポートされています。これは、スレッド番号以外のファイル名部分が一致するファイルを検索することにより行われます。そのため、連結パラメータがtrueの場合、ファイル名に日付や時刻を含めることはできません。連結機能に関して、次の点に注意してください。

  • 各ファイルの内容は、そのまま連結されます。個々のファイルにヘッダー、フッターまたは要約の情報がある場合、その情報を連結ファイルに統合するためのロジックはありません。単一のヘッダー、フッターまたは要約が必要な場合は、抽出を単一スレッドで実行する必要があります。
  • ファイル名がzip圧縮を使用する必要があることを示している場合、連結はサポートされません。
  • 個々のスレッド・ファイルは保持されます。
  • ファイル形式がXMLの場合、個々のスレッドに対して書き込まれるファイルは、".tmp"という拡張子を付けて書き込まれることに注意してください。

レコードのスキップ

デフォルトでは、抽出プロセスでは、レコードの処理プラグインがコールされるたびに1つ以上のスキーマが返されることを想定しています。(プロセスの設計時に、レコードの選択アルゴリズムで、処理する必要があるレコードのみが選択されるようにし、レコードの処理アルゴリズムでは、そのレコードを処理に含めるかどうかの確認は不要にすることが理想です。)ただし、レコードの処理プラグインで条件をチェックする必要があり、このレコードに対してデータを抽出する必要がないことが判明した場合、レコードの処理アルゴリズムは、プログラムにより空の行が書き込まれることがないように、'is skipped'出力パラメータをtrueに戻します。

ファイル統合レコードのレコードの抽出アルゴリズムがデータを返さない場合、ファイル統合タイプ(F1-FILEX-PR)の基本のレコードの処理アルゴリズムは、'is skipped'パラメータをtrueに設定します。

新規プロセスの構成

新しいアドホック・プロセスの構成に関連するトピックに記載されている、レコードの選択アルゴリズムに関するポイントが、抽出プロセスに適用されます。

レコードの処理アルゴリズムは、ファイルに書き込む必要がある情報が移入された1つ以上のスキーマ・インスタンスを返します。エッジ製品で適切なプラグインが提供されていない場合は、アルゴリズム・エンティティが「バッチ管理 - レコードの処理」であるプラグイン・スクリプトを作成します。プラグインは、レコードの選択プラグインに定義されているSQLで選択されたすべての情報を受け取ります

この構成を使用した抽出の設計の詳細は、「ファイル統合タイプを使用した抽出プロセスの構成」を参照してください。

新しい処理スクリプトが必要な場合は、新しく作成したスクリプトにアルゴリズム・タイプとアルゴリズムを定義します。基本テンプレートF1-PDBEXを複製してバッチ管理を作成します。前述の説明で作成したアルゴリズムをプラグインし、パラメータを相応に構成します。必要に応じてバッチ管理にカスタム・アドホック・パラメータを構成できます。レコードの選択およびレコードの処理プラグイン・アルゴリズムには、基本バッチ・パラメータ値とカスタム・バッチ・パラメータ値の両方を使用できます。