Table of Contents | ||
---|---|---|
|
Verfügbare Commands
...
Command
...
Beschreibung
...
Client
...
Server
...
DefaultProcess
...
Startet den Standardprozess, der in Windows für den Dateityp registriert ist
...
✓
...
ConvertToPdf
...
Konvertiert Vorlagen oder Dokumente (.dotx/.docx) in PDF (.pdf)
...
✓
...
✓
...
Nach der eigentlichen Dokumentgenerierung können Commands
(Befehle) aufgerufen werden. Gewisse Commands
können nur im Erfolgsfall (OnSuccess) verwendet werden.
Note |
---|
“Breaking Change” |
Zugriff auf das Ergebnis
Es gibt zwei Arten von Ergebnissen einer Dokumentgenerierung:
<Document />
: DiesesDocument
-Element ist das eigentliche Ergebnis nach der Dokumentgenerierung, welches das Word, PowerPoint, Excel oder auch die externe Datei beinhaltet.
Dieses Element ist nur im Erfolgsfall, d.h. imOnSuccess
verfügbar!<Report />
: DerReport
ist eine Abbild des Zustands der Dokumentgenerierung bzw. der Zustand der Abarbeitung derCommands
.
Bei einem Abbruch der Generierung oder in einem Fehlerfall, kann derReport
genutzt werden um die Fehlerinformation an das aufrufende System weiterzugeben.
Commands
müssen das Ergebnis explizit angeben, d.h. entweder muss Document
oder Report
konfiguriert sein.
Dokument
Das Document
enthält das eigentliche Resultat der Dokumentgenerierung und kann nur im OnSuccess
-Fall genutzt werden.
Konvertierung zu PDF
Um das Dokument in ein PDF umzuwandeln, gibt es ein extra Attribut:
Code Block |
---|
<Document Conversion="..." /> |
Note |
---|
Aktuell wird die |
Ein Dokument kann entweder Microsoft Office konvertiert werden:
Code Block |
---|
<Document Conversion="PdfViaOffice" /> |
… oder über den in primedocs integrierten PDF Konverter:
Code Block |
---|
<Document Conversion="Pdf" /> |
Report
Der Report
ist insbesondere für Fehler oder manuelle Abbrüche der Generierung geeignet.
Allerdings steht der Report
in allen Fällen (OnSuccess
, OnError
, OnCancel
, OnExit
) zur Verfügung.
Wichtig: Initial erhält der Report den Status der Dokumentgenerierung. Danach wird jeder definierte Command
nach der Reihe abgearbeitet und jeder Command
beeinflusst daraufhin den Report.
Der Report
selbst ist eine XML-Datei, welche folgende Struktur aufweisst:
Code Block |
---|
<primedocsConnectReport>
<Status>Error</Status>
<Input>
<File>C:\Temp\ConnectFile.pdck</File>
</Input>
<CreatedOnUtc>...</CreatedOnUtc>
<Message><![CDATA[Something failed due to ....
Overview
========
--> [exception #1] System.ExampleException1: An error occurred while ...
--> [exception #2] System.ExampleException2: Unable to ...]]>
</Message>
</primedocsConnectReport> |
Status
: Der Status kann folgende Werte beinhalten:OK
: Keine Fehler, die Dokumentgenerierung oder alleCommands
bis zu diesem Punkt liefen erfolgreich durch.Cancelled
: Dieser Status tritt auf, wenn der Benutzer die Dokumentgenerierung abbricht.Error
: Fehler bei der Dokumentgenerierung oder falls ein vorangegangenerCommand
fehlt schlug.
Input
&File
: Wenn primedocs über eine primedocs Connect Datei aufgerufen wird, dann enthält dieses Element den Dateipfad dieser Datei.CreatedOnUtc
: Zeitangabe, wann der Report erstellt wurde.Message
: Beinhaltet Meldungen des Reports.
Dynamische Parameter
Connect Commands können über ihre jeweiligen Attribute bzw. Elementen mit Werten ausgestattet werden, so z.B. kann man den Speicherpfad bei SaveFile
angeben:
Code Block | ||
---|---|---|
| ||
<SaveFile FileName="\\MyServer\share\organisation\...\Letter.docx" ... |
Möchte man allerdings den Pfad oder Dateinamen dynamisch zusammenbauen, kann man über das field-
Attribut auf die Felder der Dokumentgenerierung (“User”, “Forms”, “Field”, “Data” etc.) zugreifen.
Code Block | ||
---|---|---|
| ||
<SaveFile field-FileName="SavePath" ... |
Der Einsatz hier ist nur exemplarisch. Nicht jedes Attribut oder Element unterstützt den Zugriff auf Felder.
Grundsätzlich:
Attribute, welche den Zugriff auf Felder unterstützen sind in dem Stil benannt:
Attribut="statischer Wert"
bzw.field-Attribut="FeldName"
Elemente, welche den Zugriff auf Felder unterstützen sind in diesem Stil benannt:
<Element>statischer Wert</Element>
bzw.<Element field-Content="FeldName" />
Note |
---|
Der Zugriff auf die Felder funktioniert nur im |
Commands
Die folgende Tabelle führt alle verfügbaren Commands auf und gibt an, ob sie nur client-seitig oder server-seitig verfügbar sind sowie, ob sie nur im Erfolgsfall verwendet werden können.
Übersicht
Command | Beschreibung | Client |
---|---|---|
| Öffnet Office-Dateien mit dem Standardprozess, der in Windows für den Dateityp registriert ist. | ✓ |
| Speichert das Dokument am angegebenen Zielort im angegebenen Format. | ✓ |
| Erstellt eine primedocs-Connect-Result-Datei | ✓ |
DefaultProcess (Client-Only)
Dieser Befehl startet den DefaultProcess
, der in Windows für den generierten Dateityp registriert ist. Dieser Aufruf funktioniert nur über den Client.
Möglicher Parameter:
...
Ruft eine externe Anwendung auf. Aus Sicherheitsgründen muss der Prozess vorher konfiguriert werden. | ✓ | |
| Sendet die Datei bzw. den Report an einen HTTP/HTTPS Endpunkt. Aus Sicherheitsgründen muss die Ziel-URL vorher konfiguriert werden. | ✓ |
Beschreibungen
SaveFile (client-only)
Der SaveFile
-Command
speichert das Dokument am angegebenen Zielort.
Attribute:
FileName: Absoluter Pfad mit Dateiendung
field-FileName: Alternative zu
FileName
um dynamische Pfade über die Felder zu ermöglichen.Overwrite: True/False; gibt an, ob eine bestehende Datei überschrieben werden soll.
CreateFolder: True/False; gibt an, ob Ordner, die im Filename angegeben sind, erstellt werden sollen.
Elemente:
Document oder Report: Siehe Abschnitt “Zugriff auf das Ergebnis”
Code Block | ||
---|---|---|
| ||
<primedocsConnect> ... <Commands> <OnSuccess> <DefaultProcess Start<SaveFile FileName="\\MyServer\share\organisation\...\Letter.docx" Overwrite="true" CreateFolder="true"> <Document /> </SaveFile> </OnSuccess> </Commands> </primedocsConnect> |
...
OpenFile (
...
client-
...
only)
Über dieses Command wird nach Abschluss der gesamten Dokumenterstellung eine Datei im XML-Format mit einer Zusammenfassung erstelltDer OpenFile
-Command
öffnet Office-Dateien mit dem Standardprozess, der in Windows für den Dateityp registriert ist. Beispielsweise wird die generierte Datei an einem bestimmten Dateiort gespeichert und soll hinterher im Word weiterbearbeitet werden.
Attribute:
FileName: Absoluter Pfad mit Ziel-Dateiendung
field-FileName: Alternative zu
FileName
um dynamische Pfade über die Felder zu ermöglichen.
Code Block | ||
---|---|---|
| ||
<primedocsConnect> ... <Commands> <OnSuccess> <SaveFile FileName="\\MyServer\share\organization\...\Letter.docx" Overwrite="true" CreateFolder="true"> <CreateConnectResult<Document /> </SaveFile> <OpenFile FileName="\\MyServer\share\organization\...\ShortLetter.docx"/> </OnSuccess> </Commands> </primedocsConnect> |
...
InvokeProcess (client-only)
Der InvokeProcess
-Command
ruft eine externe Anwendung auf. Aus Sicherheitsgründen müssen im Dashboard die zulässigen Applikationen zuerst whitelisted werden. Die Konfiguration dafür kann unter Settings → Connect Settings → InvokeProcess - Configuration gefunden werden und sieht ansatzweise wie folgt aus:
Code Block | ||
---|---|---|
| ||
<?xml version="1.0" encoding="utf-8"?> <PrimeDocsConnectResult xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <Result>Success</Result> <Details><CommandConfig> <Process name="OurSystemNotepad" executablePath="%systemroot%/notepad.exe" /> <Process name="..." executablePath="..." /> </CommandConfig> |
Der Aufruf in der Connect-Datei muss mit dem Namen einer zuvor im Dashboard freigegebenen Applikation übereinstimmen.
Attribute:
Name: Konfigurierter Prozessname
Elemente:
Arguments: Argumente für den Prozessaufruf
Arguments mit
field-Content
: Alternative zuArguments
. Erlaubt es auf Feldwerte zuzugreifen.
Der Aufruf kann optional Argumente enthalten und sieht folgendermassen aus:
Code Block |
---|
<primedocsConnect> ... <Commands> <OnSuccess> <InvokeProcess Name="OurSystemNotepad"> <InputFile>O:\Templates\Template_Kurzmitteilung.pdcx</InputFile><Arguments>...</Arguments> <Input><![CDATA[ <!-- or --> <primedocsConnect> ... <Arguments field-Content="FieldName" /> </primedocsConnect>InvokeProcess> ]]></Connect> </OnSuccess> </Details>Commands> </PrimeDocsConnectResult> |
Im Fehlerfall steht in der Datei zusätzlich eine Fehlermeldung inkl. StackTrace von primedocs (sofern möglich):
Code Block | ||
---|---|---|
| ||
<?xml version="1.0" encoding="utf-8"?> <PrimeDocsConnectResult xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <Result>Error</Result> <Message>System.UnauthorizedAccessException: Der Zugriff auf den Pfad "c:\temp" wurde verweigert.primedocsConnect> |
InvokeUrl (client-only)
Der InvokeUrl
-Command
sendet die Datei bzw. den Report an einen HTTP/HTTPS Endpunkt. Aus Sicherheitsgründen müssen im Dashboard die zulässigen Applikationen zuerst whitelisted werden. Die Konfiguration dafür kann unter Settings → Connect Settings → InvokeUrl - Configuration gefunden werden und sieht ansatzweise wie folgt aus:
Code Block |
---|
<CommandConfig>
<Url startsWith="https://example1.com" />
<Url startsWith="https://example2.com/subfolder" />
</CommandConfig> |
Grundsätzlicher Aufbau:
Im InvokeUrl
können HTTP-Requests als Schritte (Step
) definiert werden.
Ein Step
besteht aus einem Request
bzw. MultipartFormDataRequest
und optional einer Response
.
Der Aufbau ist ähnlich dem HttpDataProvider, allerdings kann über den MultipartFormDataRequest
das Document
bzw. der Report
an einen Endpunkt gesendet werden.
Der Command
arbeitet alle Step
-Elemente in der definierten Reihenfolge ab. Ein Step
hat keine weiteren Attribute.
Request-Element:
Attribute:
Method: Angabe der HTTP Methode (
POST
,GET
, etc.)
Elemente:
Url: Angabe der Ziel URL, welche aus Sicherheitsgründen im Dashboard konfiguriert werden muss.
Url mit
field-Content
: Alternative zuUrl
. Erlaubt es auf Feldwerte zuzugreifen.Body: Angabe des HTTP Bodies.
Body mit
field-Content
: Alternative zuBody
. Erlaubt es auf Feldwerte zuzugreifen.Header: Liste von HTTP Headern aus
Key
undValue
bzw.field-Value
MultipartFormDataRequest-Element:
Elemente:
Url: Angabe der Ziel URL, welche aus Sicherheitsgründen im Dashboard konfiguriert werden muss.
Url mit
field-Content
: Alternative zuUrl
. Erlaubt es auf Feldwerte zuzugreifen.Header: Liste von HTTP Headern aus
Key
undValue
bzw.field-Value
FormData: Liste von FormData Elementen aus
Key
undValue
bzw.field-Value
File: Übergabe der eigentlichen Datei als
multipart/form-data
Request.Attribute:
Name: Optionaler Name - abhängig vom Serverendpunkt. Die binären Daten werden als
multipart/form-data
unter diesem Namen in den Request serialisiert.FileName: Optionaler Dateiname.
field-FileName: Alternative zu
FileName
um dynamische Namen über die Felder zu ermöglichen.
Elemente:
Document oder Report: Siehe Abschnitt “Zugriff auf das Ergebnis”
Response-Element:
Elemente:
Property: Abrufen bestimmter Daten aus dem Ergebnis des HTTP Requests.
Attribute:
Name: Name der Eigenschaft. Über den
{PropertyName}
Syntax kann man in einem darauffolgenden Request auf diesen Wert zugreifen.JsonPath: Über den JsonPath wird der Wert der Eigenschaft ermittelt. Hierbei muss die HTTP Antwort ein valides JSON sein.
XPath: Über den XPath wird der Wert der Eigenschaft ermittelt. Hierbei muss die HTTP Antwort ein valides XML sein.
Beispiel:
Code Block |
---|
<primedocsConnect> ... <Commands> <OnSuccess> <InvokeUrl> bei System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath) <Step> bei System.IO.FileStream.Init(String path, FileMode mode, FileAccess access, Int32 rights, Boolean useRights, ...) <Request Method="Post"> <Header bei System.IO.FileStream..ctor(String path, FileMode mode, FileAccess access, FileShare share)Name="FieldHeader" field-Value="Forms.TestFoobar" /> bei ... <Url field-Content="Forms.Url" /> </Message> <Details> <InputFile>O:\Templates\Template_Kurzmitteilung.pdcx</InputFile><Body field-Content="Forms.Body" /> </Request> <Input><![CDATA[ <primedocsConnect> <Response> ... </primedocsConnect><Property Name="AccessToken" JsonPath="$.AccessToken" /> ]]></Connect> </Details> </PrimeDocsConnectResult> |
SaveAs (Client-Only)
Speichert das Dokument am angegebenen Zielort. Der neue Dateispeicherort wird für alle folgenden Befehle berücksichtigt (z. B. im DefaultProcess).
Möglicher Parameter:
Filename: Absoluter Pfad mit Dateiendung
Overwrite: True/False; gibt an, ob eine bestehende Datei überschrieben werden soll.
CreateFolder: True/False; gibt an, ob Ordner, die im Filename angegeben sind, erstellt werden sollen.
AllowUpdateDocumentPart: True/False; bei "True" wird der primedocs Document Part als "SavedDocument" anstatt "NewDocument" markiert.
CopyOnly: True/False; wird diese Einstellung getroffen, wird das Dokument im aktuellen Stand als Kopie abgespeichert. Im Client-Anwendungsfall wird die Datei trotzdem z. B. weiterhin als "Vorlage (.dotx)" behandelt und im Temp-Ordner erstellt und von dieser Datei Microsoft Word geöffnet.
Code Block | ||
---|---|---|
| ||
<primedocsConnect> ... <Commands> <OnSuccess> <SaveAs Filename="\\MyServer\share\organization\...\documentxyz.docx"Response> </Step> <Step> <MultipartFormDataRequest> <File Name="Foobar" field-FileName="Forms.FileName"> <Document Conversion="PDF" /> </File> <Url field-Content="Forms.DataUrl" /> <Header Name="AccessToken" Value="{AccessToken}" /> <Header OverwriteName="AnotherHeader" field-Value="true"Forms.Header" /> <FormData CreateFolderName="SomethingOne" field-Value="true"Forms.FormData" /> <FormData Name="SomethingTwo" CopyOnlyValue="trueSomeValue2" /> </OnSuccess> </Commands> </primedocsConnect> |
ConvertToPdf (Client & Server)
Dieser Befehl gilt nur für Word Office-Dokumente. primedocs konvertiert das Dokument direkt in ein PDF.
Code Block | ||
---|---|---|
| ||
<primedocsConnect>MultipartFormDataRequest> ... <Commands> </Step> <OnSuccess> <ConvertToPdf </>InvokeUrl> </OnSuccess> </Commands> </primedocsConnect> |
Nicht alle Open XML bzw. Microsoft Word Features sind bei der PDF-Konvertierung über diesen Command unterstützt. Als Alternative gibt es im Client die Möglichkeit über den SaveAs
-Command das installierte Microsoft Office für die PDF-Konvertierung zu benutzen.
...