...
primedocs Connect ist eine XML-Schnittstelle, die verwendet werden kann, um die Dokumenterzeugung teilweise oder vollständig zu automatisieren. Connect kann sowohl client- als auch serverseitig verarbeitet werden.
Code Block | ||
---|---|---|
| ||
<primedocsConnect> ... </primedocsConnect> |
...
Über das Template
-Element kann gezielt eine Vorlage angesprochen werden oder es kann eine Filterung aufgrund von Tags vorgenommen werden.
...
Über das Id
-Attribut wird die Vorlage für die Dokumentverarbeitung gewählt. Als Angabe dafür muss die genaue GUID der Vorlage übergeben werden.
Code Block | ||
---|---|---|
| ||
<primedocsConnect> <Template Id="30b55516-80b5-41d7-801b-b31d6da376ac" /> ... </primedocsConnect> |
TagFilter
Note |
---|
Der TagFilter ist nur clientseitig implementiert. |
...
Version
Über das Version="Draft"
-Attribut kann auf eine Vorlage im Entwurfsmodus zugegriffen werden.
Code Block | ||
---|---|---|
| ||
<primedocsConnect> <Template> <Template Id="30b55516-80b5-41d7-801b-b31d6da376ac" Version="Draft" /> ... </primedocsConnect> |
TagFilter
Note |
---|
Der TagFilter ist nur clientseitig implementiert. |
Über das TagFilter
-Element können Tags zur Filterung angegeben werden.
Code Block | ||
---|---|---|
| ||
<primedocsConnect>
<Template>
<TagFilter>
<Tag>Tag1</Tag>
<Tag>Tag2;Tag3;Tag4</Tag>
</TagFilter>
</Template>
...
</primedocsConnect> |
AND-Verknüpfungen werden innerhalb eines Tag-Elements durch Semikolons getrennt definiert, OR-Verknüpfungen durch mehrere Tag-Elemente.
Das obige Beispiel zeigt alle Vorlagen, die mit Tag1
oder Tag2
, Tag3
und Tag4
markiert sind.
Info |
---|
Standardmässig wird erwartet, dass die Filterung nur eine Vorlage als Ergebnis liefert. |
Über das AllowTemplatePicker
-Attribut kann optional ein Auswahldialog (“TemplatePicker”) angezeigt werden, dieser zeigt dann alle resultierenden Vorlagen an.
Code Block | ||
---|---|---|
| ||
<primedocsConnect> <Template> <TagFilter AllowTemplatePicker="true"> <Tag>Tag1</Tag> <Tag>Tag2;Tag3;Tag4</Tag> </TagFilter> </Template> ... </primedocsConnect> |
...
Über das DocumentLanguage
-Element mit dem Code
-Attribut kann die Zieldokumentsprache angegeben werden.
Code Block | ||
---|---|---|
| ||
<primedocsConnect> <DocumentLanguage Code="de-ch" /> ... </primedocsConnect> |
...
Das Author
-Element kann genutzt werden um die Dokumenterzeugung mit einem bestimmten Profil und einem bestimmten Thema zu starten.
Code Block | |||
---|---|---|---|
| <primedocsConnect>
| ||
<primedocsConnect>
<Author>
<Profile Id="08be85c8-d12a-4e8c-b1aa-9f56e5f6ed38" ThemeId="Red" />
</Author>
...
</primedocsConnect> |
...
Die Dokumentfunktion Formulare (Forms) dient dazu Daten vor der Dokumentgenerierung abzufragen. Die konfigurierten Eigenschaften können auch über die Connect Schnittstelle vorausgefüllt werden.
Code Block | ||
---|---|---|
| ||
<primedocsConnect> <Forms> <!-- "Simple" mappings to Text/Choice/Date/... --> <Value Key="Subject">Sample letter</Value> <Value Key="Note">Another sample</Value> <!-- Target is an Object --> <Object Key="Recipient"> <Value Key="Name">John Doe</Value> <Value Key="Address">Sample Street 123, 12345 City</Value> </Object> <!-- Target is an ObjectCollection --> <ObjectCollection Key="Topics"> <Item> <Value Key="Name">Sample 1</Value> </Item> <Item> <Value Key="Name">Sample 2</Value> </Item> <Item> <Value Key="Name">Sample 3</Value> </Item> <Item> <Value Key="Name">Sample 4</Value> </Item> </ObjectCollection> </Forms> ... </primedocsConnect> |
...
Im Zusammenspiel mit der Dokumentfunktion Data kann über Data
Daten über Connect übergeben werden, welche nicht im Forms-Eigenschaften Dialog vorher angezeigt oder abgefragt werden sollen.
Code Block | ||
---|---|---|
| ||
<primedocsConnect> <Data> <!-- "Simple" mappings to Text --> <Value Key="InternalId">123456789</Value> <!-- Target is an Object --> <Object Key="Invoice"> <Value Key="Name">John Doe</Value> <Value Key="Number">123</Value> </Object> <!-- Target is an ObjectCollection --> <ObjectCollection Key="Items"> <Item> <Value Key="Name">Sample 1</Value> </Item> <Item> <Value Key="Name">Sample 2</Value> </Item> </ObjectCollection> </Data> ... </primedocsConnect> |
...
<Value Key="...">...</Value>
<Object Key="...">...</Object>
<ObjectCollection Key="...">...</ObjectCollection>
...
Commands
Nach der eigentlichen Dokumenterstellung können Commands
angewendet werden (z. B. die Umwandlung in ein PDF-Dokument). Gleichzeitig werden zu diesem Zeitpunkt die Fehler- und Abbruch-Commands auf Dokumentebene ausgewertet.
...
OnSuccess
: Bei einer erfolgreichen Dokumentgenerierung.OnError
: Falls während der Dokumentgenerierung ein Fehler auftritt, z.B. eine fehlerhafte Template-Id angegeben wird.OnCancel
: Wenn der Benutzer die Dokumentgenerierung z.B. über den Forms-Dialog abbricht.OnExit
: Nach Beendigung der Dokumentgenerierung, hierbei ist es egal, ob alles erfolgreich durchlief oder nicht.
Beispiel:
...
Ablauf
Der Ablauf der Commands
ist Abhängig vom Status der Dokumentgenerierung:
Erfolg:
OnSuccess
, dannOnExit
Fehler:
OnError
, dannOnExit
Abbruch:
OnCancel
, dannOnExit
Bei Fehler in
OnSuccess
:OnError
, dannOnExit
Bei Fehler in OnError
, OnCancel
, OnExit
:
Sofortiger Abbruch
Beispiel:
Code Block | ||
---|---|---|
| ||
<primedocsConnect> <Template Id="30b55516-80b5-41d7-801b-b31d6da376ac" /> <Forms> <Value Key="Subject">Hello Connect</Value> </Forms> <Commands> <OnSuccess> <SaveAs<SaveFile FilenameFileName="\\MyServer\share\organization\...\documentxyz.docx" Overwrite="true" CreateFolder="true"> <Document /> CopyOnly="true" /> </SaveFile> </OnSuccess> </Commands> </primedocsConnect> |
In diesem Beispiel wird ein Dokument mit der Vorlage 30b55516-80b5-41d7-801b-b31d6da376ac
mit dem Subject
“Hello Connect” generiert.
Nach der erfolgreichen Dokumentgenerierung wird das Dokument über den SaveAs
SaveFile
-Command in einen Ordner abgespeichert.
Alle verfügbaren Commands sind hier dokumentiert: Nach der Dokumentgenerierung (Commands)
...
XSD-Schema
Nachfolgend finden Sie das Schema im XSD-Format:
Code Block | ||
---|---|---|
| ||
<?xml version="1.0" encoding="utf-8"?>
<xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="primedocsConnect">
<xs:complexType>
<xs:sequence>
<xs:element name="Template">
<xs:complexType>
<xs:sequence>
<xs:element name="TagFilter">
<xs:complexType>
<xs:sequence>
<xs:element maxOccurs="unbounded" name="Tag" type="xs:string" />
</xs:sequence>
<xs:attribute name="AllowTemplatePicker" type="xs:boolean" use="optional" />
</xs:complexType>
</xs:element>
</xs:sequence>
<xs:attribute name="Id" type="xs:string" use="optional" />
<xs:attribute name="Version" type="xs:string" use="optional" />
</xs:complexType>
</xs:element>
<xs:element name="DocumentLanguage">
<xs:complexType>
<xs:attribute name="Code" type="xs:string" use="required" />
</xs:complexType>
</xs:element>
<xs:element name="Author">
<xs:complexType>
<xs:sequence>
<xs:element name="Profile">
<xs:complexType>
<xs:attribute name="Id" type="xs:string" use="required" />
<xs:attribute name="ThemeId" type="xs:string" use="optional" />
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="Forms">
<xs:complexType>
<xs:sequence>
<xs:element minOccurs="0" maxOccurs="unbounded" name="Value" type="ValueElement" />
<xs:element minOccurs="0" maxOccurs="unbounded" name="Object" type="ObjectElement" />
<xs:element minOccurs="0" maxOccurs="unbounded" name="ObjectCollection" type="ObjectCollectionElement" />
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="Data">
<xs:complexType>
<xs:sequence>
<xs:element minOccurs="0" maxOccurs="unbounded" name="Value" type="ValueElement" />
<xs:element minOccurs="0" maxOccurs="unbounded" name="Object" type="ObjectElement" />
<xs:element minOccurs="0" maxOccurs="unbounded" name="ObjectCollection" type="ObjectCollectionElement" />
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="Commands">
<xs:complexType>
<xs:sequence>
<xs:element name="OnSuccess">
<xs:complexType>
<xs:sequence>
<xs:element name="SaveFile" minOccurs="0" maxOccurs="1" type="CommandSaveFileElement" />
<xs:element name="OpenFile" minOccurs="0" maxOccurs="1" type="CommandOpenFileElement" />
<xs:element name="InvokeProcess" minOccurs="0" maxOccurs="1" type="CommandInvokeProcessElement" />
<xs:element name="InvokeUrl" minOccurs="0" maxOccurs="1" type="CommandInvokeUrlElement" />
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="OnError">
<xs:complexType>
<xs:sequence>
<xs:element name="SaveFile" minOccurs="0" maxOccurs="1" type="CommandSaveFileElement" />
<xs:element name="InvokeProcess" minOccurs="0" maxOccurs="1" type="CommandInvokeProcessElement" />
<xs:element name="InvokeUrl" minOccurs="0" maxOccurs="1" type="CommandInvokeUrlElement" />
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="OnExit">
<xs:complexType>
<xs:sequence>
<xs:element name="SaveFile" minOccurs="0" maxOccurs="1" type="CommandSaveFileElement" />
<xs:element name="InvokeProcess" minOccurs="0" maxOccurs="1" type="CommandInvokeProcessElement" />
<xs:element name="InvokeUrl" minOccurs="0" maxOccurs="1" type="CommandInvokeUrlElement" />
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="OnCancel">
<xs:complexType>
<xs:sequence>
<xs:element name="SaveFile" minOccurs="0" maxOccurs="1" type="CommandSaveFileElement" />
<xs:element name="InvokeProcess" minOccurs="0" maxOccurs="1" type="CommandInvokeProcessElement" />
<xs:element name="InvokeUrl" minOccurs="0" maxOccurs="1" type="CommandInvokeUrlElement" />
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
<!-- Data / Forms Element Types -->
<xs:complexType name="ValueElement">
<xs:simpleContent>
<xs:extension base="xs:string">
<xs:attribute name="Key" type="xs:string" use="required" />
</xs:extension>
</xs:simpleContent>
</xs:complexType>
<xs:complexType name="ObjectElement">
<xs:sequence>
<xs:element maxOccurs="unbounded" name="Value" type="ValueElement" />
</xs:sequence>
<xs:attribute name="Key" type="xs:string" use="required" />
</xs:complexType>
<xs:complexType name="ObjectCollectionElement">
<xs:sequence>
<xs:element maxOccurs="unbounded" name="Item">
<xs:complexType>
<xs:sequence>
<xs:element maxOccurs="unbounded" name="Value" type="ValueElement" />
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
<xs:attribute name="Key" type="xs:string" use="required" />
</xs:complexType>
<!-- Command Types -->
<xs:complexType name="CommandSaveFileElement">
<xs:sequence>
<xs:element name="Document" minOccurs="0" maxOccurs="1" type="DocumentElement" />
<xs:element name="Report" minOccurs="0" maxOccurs="1" />
</xs:sequence>
<xs:attribute name="FileName" type="xs:string" use="optional" />
<xs:attribute name="field-FileName" type="xs:string" use="optional" />
<xs:attribute name="Overwrite" type="xs:boolean" use="optional" />
<xs:attribute name="CreateFolder" type="xs:boolean" use="optional" />
</xs:complexType>
<xs:complexType name="CommandOpenFileElement">
<xs:attribute name="FileName" type="xs:string" use="optional" />
<xs:attribute name="field-FileName" type="xs:string" use="optional" />
</xs:complexType>
<xs:complexType name="CommandInvokeProcessElement">
<xs:sequence>
<xs:element name="Arguments" minOccurs="0" maxOccurs="1" type="ElementWithFieldSupport" />
</xs:sequence>
<xs:attribute name="Name" type="xs:string" use="required" />
</xs:complexType>
<xs:complexType name="CommandInvokeUrlElement">
<xs:sequence>
<xs:element name="Step" maxOccurs="unbounded">
<xs:complexType>
<xs:sequence>
<xs:element name="Request">
<xs:complexType>
<xs:sequence>
<xs:element name="Url" minOccurs="0" maxOccurs="1" type="ElementWithFieldSupport" />
<xs:element name="Body" minOccurs="0" type="ElementWithFieldSupport" />
<xs:element name="Header" minOccurs="0" maxOccurs="unbounded" type="CommandInvokeUrlElementRequestHeaderOrFormElement" />
</xs:sequence>
<xs:attribute name="Method" type="xs:string" use="required" />
</xs:complexType>
</xs:element>
<xs:element name="MultipartFormDataRequest" minOccurs="0" maxOccurs="1">
<xs:complexType>
<xs:sequence>
<xs:element name="File">
<xs:complexType>
<xs:sequence>
<xs:element name="Document" minOccurs="0" maxOccurs="1" type="DocumentElement" />
<xs:element name="Report" minOccurs="0" maxOccurs="1" />
</xs:sequence>
<xs:attribute name="Name" type="xs:string" use="optional" />
<xs:attribute name="ContentType" type="xs:string" use="optional" />
<xs:attribute name="FileName" type="xs:string" use="optional" />
<xs:attribute name="field-FileName" type="xs:string" use="optional" />
</xs:complexType>
</xs:element>
<xs:element name="Url" type="ElementWithFieldSupport" />
<xs:element name="Header" maxOccurs="unbounded" minOccurs="0" type="CommandInvokeUrlElementRequestHeaderOrFormElement" />
<xs:element name="FormData" maxOccurs="unbounded" minOccurs="0" type="CommandInvokeUrlElementRequestHeaderOrFormElement" />
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="Response" minOccurs="0" maxOccurs="1">
<xs:complexType>
<xs:sequence>
<xs:element name="Property" maxOccurs="unbounded" minOccurs="0">
<xs:complexType>
<xs:attribute name="Name" type="xs:string" use="required" />
<xs:attribute name="JsonPath" type="xs:string" use="optional" />
<xs:attribute name="XPath" type="xs:string" use="optional" />
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
<xs:complexType name="CommandInvokeUrlElementRequestHeaderOrFormElement">
<xs:attribute name="Name" type="xs:string" use="required" />
<xs:attribute name="Value" type="xs:string" use="optional" />
<xs:attribute name="field-Value" type="xs:string" use="optional" />
</xs:complexType>
<!-- Common Elements -->
<xs:complexType name="ElementWithFieldSupport">
<xs:simpleContent>
<xs:extension base="xs:string">
<xs:attribute name="field-Content" type="xs:string" use="optional" />
</xs:extension>
</xs:simpleContent>
</xs:complexType>
<xs:complexType name="DocumentElement">
<xs:attribute name="Conversion" type="xs:string" use="optional" />
</xs:complexType>
</xs:schema> |