serializeDataElementsToXML

Mit der serializeDataElements-Klasse werden XML-Daten serialisiert, indem Werte für alle DDEs-, PH- und Field-Elemente festgelegt werden. Die API „Generate a Letter PDF“ verwendet diese serialisierte XML, um den Brief zu rendern. Bei diesem Prozess werden die PH- und Field-Daten (Zuordnungen) auf DDI (XML) erweitert. Mithilfe dieser API können Sie Variablen- und Feldwerte vor dem Rendern des Briefs bereitstellen. In der folgenden Tabelle werden die Werte von DDEs beschrieben:

DDE

Beschreibung

ddiDataAsXml

DDI-Daten als XML

phValues

Eine Zuordnung, die den Variablennamen versus Wert enthält

fieldValues

Eine Zuordnung, die die somExpr von Field versus Wert von Field enthält

Die serializeDataElements-Syntax lautet wie folgt:

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"); 
    } 
}

Die an die Daten der LetterRenderService.renderLetter()-APIs übergebenen Daten verfügen über zusätzliche Elemente im folgenden Format. Werte von Platzhaltervariablen und Feldern werden hier bereitgestellt.

<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>

Die DDEs-Werte werden als Teil der XML-Daten bereitgestellt. renderLetter() berücksichtigt mit XML-Daten bereitgestellte Werte. Diese Werte werden für DDE/PH/Field festgelegt, wenn für das entsprechende DDE/PH/Field ein Wert verfügbar ist. Alle anderen Werte werden über die Bindung aufgelöst. Die Feld-/Variablenbindung wird nicht berücksichtigt, wenn XML-Daten für Variablen oder Felder verfügbar sind. Wenn beispielsweise ein Feld an ein ungeschütztes Datenwörterbuch gebunden ist und der Wert für dieses Feld in den XML-Daten festgelegt ist, wird der festgelegte Wert zum Rendern verwendet. Wenn in den XML-Daten kein Wert festgelegt ist, werden die Werte für Variablen/Felder über Bindungen (wenn vorhanden) festgelegt und sind bei einer Bindung eines „Benutzers“ leer. Wenn beispielsweise eine Variable an ein ungeschütztes Datenwörterbuch gebunden ist und kein Wert in den XML-Daten festgelegt ist, wird der Datenwörterbuchwert zum Rendern verwendet.