Traitement de données par lots pour créer plusieurs documents

Le service Output peut créer des documents distincts pour chaque enregistrement dans une source de données XML. Il peut également créer un fichier unique contenant tous les enregistrements (fonctionnalité par défaut). Imaginons qu’une source de données XML contienne dix enregistrements et que vous demandiez au service Output de créer un document distinct pour chaque enregistrement (des documents PDF, par exemple). Le service Output génère alors dix documents PDF.

L’illustration suivante montre le service Output, qui traite un fichier de données XML contenant plusieurs enregistrements. Cependant, si vous demandez au service Output de créer un document PDF unique contenant tous les enregistrements de données, le service Output génère un document contenant tous les enregistrements.

L’illustration suivante présente le traitement par le service Output d’un fichier de données XML contenant plusieurs enregistrements. Imaginons que vous demandiez au service Output de créer un document PDF distinct pour chaque enregistrement de données. Dans ce cas, le service Output crée un document PDF distinct pour chaque enregistrement de données.

Les données XML suivantes illustrent l’exemple d’un fichier de données contenant trois enregistrements de données.

<?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>
Remarque : notez que l’élément XML qui débute et termine chaque enregistrement de données est appelé LoanRecord.

Définition des options d’exécution PDF

Définissez les options d’exécution suivantes pour que le service Output traite correctement les données par lot et crée plusieurs fichiers à partir d’une source de données XML :

Plusieurs fichiers :
indique si le service Output crée un document unique ou plusieurs documents. Vous pouvez indiquer les valeurs true ou false. Pour créer un document distinct pour chaque enregistrement de données dans la source de données XML, indiquez la valeur true.

URI de fichier :
spécifie l’emplacement des fichiers générés par le service Output. Par exemple, imaginons que vous spécifiiez le chemin C:\\Adobe\forms\Loan.pdf. Dans ce cas, le service crée un fichier intitulé Loan.pdf et le place dans le dossier C:\\Adobe\\forms. Lorsqu’il y a plusieurs fichiers, ces derniers se nomment Loan0001.pdf, Loan0002.pdf, Loan0003.pdf, etc. Les documents sont placés sur le serveur hébergeant LiveCycle et non sur l’ordinateur client.

Nom de l’enregistrement :
indique le nom de l’élément XML dans la source de données qui sépare les enregistrements de données. Ainsi, dans l’exemple de source de données XML présenté, l’élément XML qui sépare les enregistrements de données s’appelle LoanRecord. Au lieu de définir l’option d’exécution du nom de l’enregistrement, vous pouvez définir le niveau d’enregistrement en lui attribuant une valeur numérique qui indique le niveau d’élément comportant les enregistrements de données. Toutefois, vous pouvez définir uniquement le nom ou le niveau d’enregistrement et non les deux. Dans le fichier XML ci-dessus, le niveau de l’enregistrement requis pour créer plusieurs documents est 2.

Chargement incrémentiel

Lorsque le service Output traite les enregistrements par lots, il lit les données comportant plusieurs enregistrements de manière incrémentielle. Ainsi, le service Output lit les données dans la mémoire et libère les données tout au long du traitement du lot d’enregistrements. Le service Output charge les données de manière incrémentielle lorsque l’une des deux options d’exécution est définie. Si vous définissez l’option d’exécution du nom de l’enregistrement, le service Output lit les données de manière incrémentielle. De même, si vous définissez l’option d’exécution du niveau de l’enregistrement sur 2 ou plus, le service Output lit les données de manière incrémentielle

Vous pouvez décider si le service Output doit effectuer le chargement incrémentiel via l’option setLazyLoading de l’objet PDFOutputOptionsSpec ou de l’objet PrintedOutputOptionSpec. Vous pouvez spécifier la valeur false, ce qui désactive le chargement incrémentiel.

Si le service Output ne peut pas effectuer de chargement incrémentiel des données, il écrit le message d’avertissement suivant dans le fichier journal du serveur d’applications J2EE hébergeant LiveCycle :

*  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. 
Remarque : si le service Output ne lit pas les données de manière incrémentielle, le fichier de données par lots tout entier est lu dans la mémoire. Ce comportement peut nuire aux performances du service Output (voir Amélioration des performances du service Output).