serializeDataElementsToXML

La classe serializeDataElements est utilisée pour sérialiser les données XML en définissant les valeurs de tous les éléments de dictionnaire de données, d’espace réservé et de champ. L’API Generate a Letter PDF utilise ces XML sérialisés pour effectuer le rendu de la lettre. Ce processus ajoute des données de champ et d’espace réservé (en tant que mappage) aux données DDI (fournies au format XML). Vous pouvez utiliser cette API pour fournir la variable et les valeurs de champs avant le rendu la lettre. Les valeurs d’éléments de dictionnaire de données sont décrites dans le tableau ci-dessous :

Elément de dictionnaire de données

Description

ddiDataAsXml

Données DDI au format XML.

phValues

Mappage contenant le nom de la variable plutôt que sa valeur.

fieldValues

Mappage contenant le somExpr du champ plutôt que sa valeur.

La syntaxe serializeDataElements se présente comme suit :

public String serializeDataElementsToXML(String ddiDataAsXml,Map<String,Object> phValues,Map<String,Object> fieldValues) 
{ 
    String strInitialXmlName="D:\\ES4SetUpDoc\\RenderLetter\\initialXML.xml"; 
    Map<String,List> letterMap=letterService.getLetterDataElements(letterObject.getId()); 
    Map<String,Object> phValues= new HashMap<String, Object>(); 
    Map<String,Object> fieldValues= new HashMap<String, Object>(); 
    List<Field> fieldList=letterMap.get("Field"); 
    List<Variable> variableList=letterMap.get("PH"); 
                         
    //Prepraing field map 
    for(int i=0;i<fieldList.size();i++){ 
            System.out.println("Path=="+fieldList.get(i).getPath()); 
            fieldValues.put(fieldList.get(i).getPath(), "field"+i); 
    } 
                         
    //Prepraing value map 
    for(int i=0;i<variableList.size();i++){ 
            System.out.println("Name=="+variableList.get(i).getName()); 
            phValues.put(variableList.get(i).getName(), "Var"+i); 
    } 
    String strLetterXML= letterRenderService.serializeDataElementsToXML(getStringFromXml(strInitialXmlName), phValues, fieldValues); 
 
    PDFResponseType pdfResponseType = null; 
    pdfResponseType = letterRenderService.renderLetter(letterObject 
            .getId(), strLetterXML, true, false, true);     
                         
    File OutputFile = new File("D:\\ES4SetUpDoc\\RenderLetter\\RenderLetterWithField.pdf"); 
    OutputFile.delete(); 
    if (OutputFile.createNewFile()) { 
        FileOutputStream fos = new FileOutputStream(OutputFile); 
        fos.write(pdfResponseType.getFile().getDocument()); 
        fos.flush(); 
        fos.close(); 
 
    } else { 
        log("not created"); 
    } 
}

Les données XML transmises aux API LetterRenderService.renderLetter() comportent des éléments additionnels dans le format suivant, où la valeur des variables d’espace réservé et des champs est fournie.

<data-root> 
... 
   <fields>  <!--starting element for fields --> 
      <field name="field1">value1</field> <!-- field's display-name is field1 and its value is set to value1. --> 
      <field name="field2" somExpr="xfa[0].template[0].field2">value2</field> <!-- Attribute somexpr is optional and can be used when display name is not sufficient to identify field uniquely --> 
      ... 
   </fields> 
 
   <variables> <!--starting element for place holder variables--> 
         <variable name="var1">value1</variable> <!-- variable name is var1 and its value is set to value1 --> 
         ....  
    </variables> 
</data-root>

Les valeurs de dictionnaire de données sont fournies en tant que données XML. L’API renderLetter() prend en compte les valeurs transmises avec les données XML et, s’il y a des valeurs correspondant aux éléments de dictionnaire de données, espaces réservés et champs, ces valeurs sont configurées pour ces trois éléments. Toutes les autres valeurs sont résolues par des liaisons. Le champ ou la variable de liaison n’est pas pris en compte si les données XML sont disponibles pour les champs ou les variables. Par exemple, si un champ est lié à un dictionnaire de données non protégé et si la valeur de ce champ est spécifiée dans les données XML, cette valeur est utilisée pour le rendu. Lorsqu’aucune valeur n’est définie dans les données XML, la valeur du champ ou de la variable est configurée avec des liaisons (s’il y en a) et est nulle dans le cas d’une liaison à un utilisateur (User). Par exemple, si une variable est liée à un dictionnaire de données non protégé et si aucune valeur n’est précisée dans les données XML, la valeur du dictionnaire de données est utilisée pour effectuer le rendu de la lettre.