Connect-XML Type Data


Diese Funktion steht nur “classic” Vorlagen zur Verfügung. Weitere Informationen finden Sie hier.

Wenn die Drittapplikation auf eine Schnittstellendefinition in primedocs verzichten will, kann das mit type="Data" in der Interface-Definition in der Connect-Datei erreicht werden. Ohne die Interface-Definition können die Felder in der Vorlage nicht mehr direkt platziert werden. Um das zu erreichen, muss die Connect-Datei um das Editor-Argument ergänzt werden, damit der Editor die Felder anzeigen kann.


Einsatz von Type Data

Ein Interface mit Type Data kann grundsätzlich immer eingesetzt werden, für gewisse Anwendungsfälle lässt sich dadurch aber Konfigurationsaufwand einsparen. Das kann sein, wenn:

  • die von der Drittapplikation gelieferten Daten bereits vor dem Export für primedocs aufbereitet worden sind. Das heisst konkret, es werden ausschliesslich nur die Daten geliefert, die auch verwendet werden müssen. Dies gilt sowohl wenn das XML bereits ein valides Connect-XML ist als auch wenn es ein unstrukturiertes XML ist. Bei einem unstrukturierten XML kann dann über den XML-Transformer das Interface mit Type Data erstellt werden.

  • die Datenmenge klein ist, davon aber ein grosser Teil der Daten verwendet wird.

Nicht sinnvoll ist der Einsatz eines Interface mit Type Data wenn:

  • die Drittapplikation eine grosse Menge Daten liefert, die noch nicht aufbereitet sind. In diesem Fall macht es Sinn, mittels einer Connect-Schnittstellendefinition diejenigen Daten, die gebraucht werden, auszulesen. Somit wird verhindert, dass viele irrelevante Daten im Word-Dokument enden und den Erstellungsprozess verlangsamen. Dies gilt sowohl für Connect-XML als auch für unstrukturiertes XML.

Ein grosser Vorteil eines Interface mit Type Data ist, dass Datumsangaben über das "Format"-Attribut direkt im Connect mit dem gewünschten Datumsformat versehen werden können – bisher waren dazu immer Skripte nötig.

Es gilt zu beachten:

  • Der Hauptanwendungsfall umfasst Text, Datum, Bild und Auflistungen. Andere Typen können ebenfalls verwendet werden, das macht aber oftmals keinen Sinn.

  • Wenn Nodes mit derselben Id im Dokument-Parameter (nachfolgend DP genannt) und Interfaces existieren, dann wird jeweils der Wert (Inhalt) der Dokumentfunktion mit der früheren Position in der Pipeline verwendet.

  • Wenn sich bei gleicher Id die Dokumentfunktion Connect-Schnittstellendefinition vor dem DP in der Pipeline befindet, werden im DP die Werte der im DP konfigurierten Nodes angezeigt. Im Dokument steht dann allerdings der Wert, welcher von der Connect-Schnittstellendefinition übergeben wurde.

  • Die Attribute werden grundsätzlich nach dem gleichen Schema aufgelöst. Allerdings: Wenn z. B. im Interface der Node mit Tracked="true" angegeben ist, im DP aber nicht, und der DP vor der Connect-Schnittstellendefinition steht (also die Werte aus dem DP genommen werden), dann werden die ContentControls (Inhaltssteuerelemente) im Quick Check trotzdem angezeigt.

  • Die Nodes stehen wohl getrennt mit ihren eigenen Attributwerten im DocumentPart, die Attribute werden aber bei der Anzeige schlussendlich zusammengeführt. D. h., sind die Attributwerte in beiden Nodes vorhanden, dann wird der Wert desjenigen Nodes genommen, welcher in der Pipeline zuerst kommt. Ist der Attributwert nur in einem der Nodes gesetzt, dann wird dieser übernommen, ungeachtet der Position in der Pipeline.

  • Sämtliche View-Attribute wie Row, Column etc. sind überflüssig; die Konfiguration hat keinen Einfluss auf den Dokument-Parameter selbst.


Konfiguration

<Function name="CustomInterfaceConnector" id="70E94788-CE84-4460-9698-5663878A295B" xmlns=""> <Arguments> <Interface Name="TypeDataSchema" type="Data"> <All Id="[string]" Tracked="[bool]" Label="[string]" (Definiert das Label, das im Quick Check angezeigt wird wenn Tracked true) > </All> <Text>[string]</Text> <DateTime Offset="[string]" (Funktioniert nur, wenn kein Standardwert angegeben wurde, also Heute+Offset) Format="[string]" Calendar="[string]">[string:parsable]</DateTime> <CheckBox>[bool]</CheckBox> <Image>[string:base64]</Image> <ComboBox SelectedValue="[string]" > <Item Value="[string]" DisplayText="[string]" /> [...] </ComboBox> <Collection> <Element> [...] (Irgendein Node, z.&#160;B. <Text Id="">Value</Text>) </Element> [...] </Collection> </Interface> </Arguments> </Function>

HINWEIS

Zu Tracked="true": Dieses Property lässt den Node im Quick Check anzeigen. Der Standardwert muss aber angegeben werden, falls der Quick Check rot sein soll, bei Text muss &#160; (geschütztes Leerzeichen) gesetzt sein.


Beispiel

<?xml version="1.0" encoding="utf-8"?> <OneOffixxConnectBatch xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://schema.oneoffixx.com/OneOffixxConnectBatch/1"> <Settings xmlns=""> <Add key="KeepConnector">true</Add> <Add key="CreateConnectorResultOnError">true</Add> </Settings> <Entries xmlns=""> <OneOffixxConnect> <Arguments> <Editor>true</Editor> <TemplateId>71d2ee53-a0b0-4037-95c1-7262b88b904b</TemplateId> </Arguments> <Commands> <Command Name="DefaultProcess"> <Parameters> <Add key="Start">true</Add> </Parameters> </Command> <Command Name="ConvertToDocument" /> </Commands> <Function name="CustomInterfaceConnector" id="70E94788-CE84-4460-9698-5663878A295B"> <Arguments> <Interface Name="BeispielTypeData" type="Data"> <Text Id="TypeData.TextPreFilled">Vorausgefüllter Text</Text> <Text Id="TypeData.TextToFillOut" Tracked="True" Label="Diesen Text bitte ausfüllen">&#160;</Text> <DateTime Id="TypeData.DateTimeSet" Format="dd. MMMM yyyy">27.02.1995</DateTime> <DateTime Id="TypeData.DateTimeNotSet" Format="dd. MMMM yyyy" Label="Bitte Datum auswählen" Tracked="true">01.01.1901</DateTime> <CheckBox Id="TypeData.CheckBox">false</CheckBox> <Image Id="TypeData.Base64Image">iVBORw0KGgoAAAANSUhEUgAAAQAAAAEA...</Image> <ComboBox Id="TypeData.ComboBox" SelectedValue="1"> <Item Value="1" DisplayText="Eintrag 1" /> <Item Value="2" DisplayText="Eintrag 2" /> <Item Value="3" DisplayText="Eintrag 3" /> </ComboBox> <!-- Collections wurden bewusst weggelassen. Zur Verarbeitung einer Collection aus einem Interface wird Extended Binding benötigt. --> </Interface> </Arguments> </Function> </OneOffixxConnect> </Entries> </OneOffixxConnectBatch>

In diesem Beispiel ist <Editor>true</Editor> gesetzt. Das bewirkt, dass die Vorlage im Word-Editor geöffnet wird. Die im Interface definierten Felder stehen dann (und nur dann) zur Verfügung und können ins Dokument eingefügt werden:

Nachdem die Felder im Editor eingefügt wurden, kann der Editor gespeichert werden. Beim nächsten Aufruf mit <Editor>false</Editor> wird dann der Inhalt abgefüllt und die Nodes, welche mit dem Tracked="true" versehen sind, werden im Quick Check angezeigt:

 

PrimeSoft AG, Bahnhofstrasse 4, 8360 Eschlikon, Switzerland