バッチデータ処理による複数ドキュメントの作成

Output サービスでは、XML バッチデータソース内のレコードごとに個別のドキュメントを作成できます。また、すべてのレコードを含む 1 つのドキュメントを作成することもできます(これがデフォルトの機能です)。例えば、XML データソース内に 10 個のレコードがある場合、Output サービスでレコードごとに個別のドキュメント(PDF ドキュメントなど)を作成するように指定できます。その結果、10 個の PDF ドキュメントが生成されます。

次の図は、複数のレコードを含んだ XML データファイルを Output サービスが処理する状況を示しています。ここでは、すべてのデータレコードを含んだ単一の PDF ドキュメントを作成するように Output サービスに指示したことを前提としています。この場合は、すべてのレコードを含んだドキュメントが 1 つだけ生成されます。

次の図は、複数のレコードを含んだ XML データファイルを Output サービスが処理する状況を示しています。ここでは、データレコードごとに個別の PDF ドキュメントを作成するように Output サービスに指示したことを前提としています。この場合は、各データレコードに対して 1 つの PDF ドキュメントが生成されます。

次の XML データは、3 つのデータレコードを含むデータファイルの例を示しています。

<?xml version="1.0" encoding="UTF-8"?> 
<batch> 
<LoanRecord> 
    <mortgageAmount>500000</mortgageAmount> 
    <lastName>Blue</lastName> 
    <firstName>Tony</firstName> 
    <SSN>555666777</SSN> 
    <PositionTitle>Product Manager</PositionTitle> 
    <Address>555 No Where Dr</Address> 
    <City>New York</City> 
    <StateProv>New York</StateProv> 
    <ZipCode>51256</ZipCode> 
    <Email>TBlue@NoMailServer.com</Email> 
    <PhoneNum>555-7418</PhoneNum> 
    <FaxNum>555-9981</FaxNum> 
    <Description>Buy a home</Description> 
</LoanRecord> 
<LoanRecord> 
    <mortgageAmount>300000</mortgageAmount> 
    <lastName>White</lastName> 
    <firstName>Sam</firstName> 
    <SSN>555666222</SSN> 
    <PositionTitle>Program Manager</PositionTitle> 
    <Address>557 No Where Dr</Address> 
    <City>New York</City> 
    <StateProv>New York</StateProv> 
    <ZipCode>51256</ZipCode> 
    <Email>SWhite@NoMailServer.com</Email> 
    <PhoneNum>555-7445</PhoneNum> 
    <FaxNum>555-9986</FaxNum> 
    <Description>Buy a home</Description> 
</LoanRecord> 
<LoanRecord> 
    <mortgageAmount>700000</mortgageAmount> 
    <lastName>Green</lastName> 
    <firstName>Steve</firstName> 
    <SSN>55566688</SSN> 
    <PositionTitle>Project Manager</PositionTitle> 
    <Address>445 No Where Dr</Address> 
    <City>New York</City> 
    <StateProv>New York</StateProv> 
    <ZipCode>51256</ZipCode> 
    <Email>SGreeb@NoMailServer.com</Email> 
    <PhoneNum>555-2211</PhoneNum> 
    <FaxNum>555-2221</FaxNum> 
    <Description>Buy a home</Description> 
</LoanRecord> 
</batch>
注意: 各データレコードは、LoanRecord XML 要素によって開始および終了しています。

PDF 実行時オプションの設定

バッチデータを正しく処理し、XML データソースに基づいて複数のファイルを作成するには、Output サービスに次の実行時オプションを設定します。

Many Files:
Output サービスで単一のドキュメントを作成するか、複数のドキュメントを作成するかを指定します。true または false を指定できます。XML データソース内のデータレコードごとに個別のドキュメントを作成するには、true を指定します。

File URI:
Output サービスによって生成されるファイルの場所を指定します。例えば、C:\\Adobe\forms\Loan.pdf を指定した場合は、Loan.pdf という名前のファイルが Output サービスによって作成され、C:\\Adobe\forms フォルダーに格納されます。複数のファイルが存在する場合は、ファイル名が Loan0001.pdf、Loan0002.pdf、Loan0003.pdf のようになります。ドキュメントは、クライアントコンピューター上ではなく LiveCycle をホストするサーバー上に格納されます。

Record Name:
データソースの個々のデータレコードを表す XML 要素名を指定します。例えば、前述の XML データソースの例では、各データレコードを区切る XML 要素は LoanRecord です。Record Name 実行時オプションを設定する代わりに、データレコードが含まれる要素レベルを表す数値を Record Level に割り当てることもできます。ただし、設定できるのは Record Name と Record Level のどちらか一方だけです。両方の値を設定することはできません。前述の XML では、複数のドキュメントを作成するためのレコードレベルは 2 になります。

インクリメンタルな読み込み

Output サービスは、バッチレコードを処理する際、複数のレコードを含んだデータをインクリメンタルに読み込みます。つまり、データをメモリに読み込み、そのデータに含まれる一連のレコード(バッチ)の処理が完了した時点で、データを解放します。このようにデータをインクリメンタルに読み込みむのは、2 つの実行時オプションのいずれかが設定されている場合です。Record Name 実行時オプションを設定した場合、Output サービスは、データをインクリメンタルに読み込みます。同様に、Record Level 実行時オプションを 2 以上に設定した場合も、Output サービスは、データをインクリメンタルに読み込みます。

Output サービスで読み込みをインクリメンタルに実行するかどうかを制御するには、PDFOutputOptionsSpec または PrintedOutputOptionSpec オブジェクトの setLazyLoading オプションを使用します。これに false の値を設定すると、インクリメンタルな読み込みは無効になります。

Output サービスでデータをインクリメンタルに読み込めない場合は、LiveCycle をホストする J2EE アプリケーションサーバーのログファイルに、次の警告メッセージが書き出されます。

*  2007-11-01 11:51:23,215 WARN  [com.adobe.document.XMLFormService] $$$/com/adobe/document/xmlform/msg.XFA=Unable to perform an incremental data load. Performing a full data load. 
注意: Output サービスでデータをインクリメンタルに読み込まない場合は、バッチデータファイル全体がメモリに読み込まれます。この動作は Output サービスのパフォーマンスに悪影響を及ぼすことがあります(Output サービスのパフォーマンスの向上を参照してください)。