...
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> <TagFilter> <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> <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> <SaveFile FilenameFileName="\\MyServer\share\organization\...\documentxyz.docx" Overwrite="true" CreateFolder="true"> <Document /> /> </OnSuccess>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 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="SaveAs" minOccurs="0" maxOccurs="1" type="CommandSaveAsElement" /> <xs:element name="DefaultProcessSaveFile" minOccurs="0" maxOccurs="1" type="CommandDefaultProcessElementCommandSaveFileElement" /> <xs:element name="CreateConnectResult" minOccurs="0" maxOccurs="1" type="CommandCreateConnectResultElement" /> <xs:element name="ConvertToPdfOpenFile" minOccurs="0" maxOccurs="1" type="CommandConvertToPdfElementCommandOpenFileElement" /> </xs:sequence> </xs:complexType> </xs:element> <xs:element name="InvokeProcess" minOccurs="OnError0"> <xs:complexType> <xs:sequence> <xs:element name="SaveAs" minOccurs="0" maxOccurs= maxOccurs="1" type="CommandSaveAsElementCommandInvokeProcessElement" /> <xs:element name="DefaultProcess" minOccurs="0" maxOccurs="1" type="CommandDefaultProcessElement" /> <xs:element name="CreateConnectResultInvokeUrl" minOccurs="0" maxOccurs="1" type="CommandCreateConnectResultElementCommandInvokeUrlElement" /> <xs:element name="ConvertToPdf" minOccurs="0" maxOccurs="1" type="CommandConvertToPdfElement" /> </xs:sequence> </xs:complexType> </xs:sequence> </xs:complexType> </xs:element> <xs:element name="OnExitOnError"> <xs:complexType> <xs:sequence> <xs:element name="SaveAsSaveFile" minOccurs="0" maxOccurs="1" type="CommandSaveAsElementCommandSaveFileElement" /> <xs:element name="DefaultProcessInvokeProcess" minOccurs="0" maxOccurs="1" type="CommandDefaultProcessElementCommandInvokeProcessElement" /> <xs:element name="CreateConnectResultInvokeUrl" minOccurs="0" maxOccurs="1" type="CommandCreateConnectResultElementCommandInvokeUrlElement" /> <xs:element name="ConvertToPdf" minOccurs="0" maxOccurs="1" type="CommandConvertToPdfElement" /> </xs:sequence> </xs:complexType> </xs:element> <xs:element name="OnCancelOnExit"> <xs:complexType> <xs:sequence> <xs:element name="SaveAs" minOccurs="0" maxOccurs="1" type="CommandSaveAsElement" /> <xs:element name="DefaultProcess" minOccurs="0" maxOccurs="1" type="CommandDefaultProcessElement" /> <xs:element name="CreateConnectResult" minOccurs="0" maxOccurs="1" type="CommandCreateConnectResultElement" /> <xs:element name="ConvertToPdf" minOccurs="0" maxOccurs="1" type="CommandConvertToPdfElement" /> </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: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="requiredoptional" /> </xs:complexType> <!-- CommandCommon TypesElements --> <xs:complexType name="CommandSaveAsElementElementWithFieldSupport"> <xs:attribute name="Filename" type="xs:string" use="required" /> <xs:attribute name="Overwrite" type <xs:simpleContent> <xs:extension base="xs:booleanstring" use="optional" /> > <xs:attribute name="CreateFolderfield-Content" type="xs:booleanstring" use="optional" /> <xs:attribute name="CopyOnly" type="xs:boolean" use="optional" /> </xs:extension> </xs:simpleContent> </xs:complexType> <xs:complexType name="CommandDefaultProcessElementDocumentElement"> <xs:attribute name="StartConversion" type="xs:booleanstring" use="requiredoptional" /> </xs:complexType> <xs:complexType name="CommandCreateConnectResultElement"> </xs:complexType> <xs:complexType name="CommandConvertToPdfElement"> </xs:complexType> </xs:schema> |
...