Commands
Commands sind Instruktionen, die sequentiell nach Erreichen von vordefinierten Zwischenergebnissen oder Ereignissen ausgeführt werden. Die Befehle können teilweise nur beim Server- oder Client-Aufruf verfügbar sein. Es wird grundsätzlich zwischen zwei Command-Ebenen unterschieden:
DocumentCommands Document-Commands werden pro Dokument ausgeführt, direkt nach Erstellung des jeweiligen Dokuments.
BatchCommands Batch-Commands werden auf der höchsten Ebene ausgeführt, nachdem alle Document-Commands der einzelnen Entries ausgeführt wurden.
Verfügbarkeit aller Commands
Command | Beschreibung | Document | Batch | Client | Server |
---|---|---|---|---|---|
DefaultProcess | Startet den Standardprozess, der in Windows für den Dateityp registriert ist | ✓ | ✓ | ✓ | |
ConvertToDocument | Konvertiert Office-Vorlagen (.dotx, etc.) in Office-Dokumente (.docx, etc.) | ✓ | ✓ | ✓ | ✓ |
ConvertToPdf | Konvertiert Vorlagen oder Dokumente (.dotx/.docx) in PDF (.pdf) | ✓ | ✓ | ✓ | ✓* |
Sendet das Dokument an den Standarddrucker | ✓ | ✓ | ✓ | ||
SaveAs | Speichert das Dokument am angegebenen Zielort im angegebenen Format | ✓ | ✓ | ✓ | ✓* |
UpdateFieldsOnOpen | Aktualisiert Felder und das Inhaltsverzeichnis (Fields / ToC) im Dokument | ✓ | ✓ | ✓ | ✓ |
Merge | Verbindet mehreren Office-Dokumente zu einem | ✓ | ✓ | ✓ | |
CreateConnectorResult | Erstellt eine OneOffixx-Connector-Result-Datei | ✓ | ✓ | ||
BindCustomXML | Bindet alle CustomControls mit den jeweiligen Daten | ✓ | ✓ | ✓ | ✓ |
InvokeProcess | Ruft ein bestimmtes, im OneOffixx-Dashboard registriertes Programm auf | ✓ | ✓ | ✓ |
*mit gewissen Einschränkungen
DefaultProcess
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:
- Start: True/False, bei False wird der Prozess nicht gestartet.
<Command Name="DefaultProcess">
<Parameters>
<Add key="Start">true</Add>
</Parameters>
</Command>
ConvertToDocument
Dieser Befehl gilt nur für Word-Dokumente. OneOffixx verwaltet und generiert Word-Vorlagen (.dotx). Um nach dem Generieren des Dokuments ein Word-Dokument (.docx) zu erhalten, wird dieser Befehl benötigt. Fehlt diese Angabe und wird das Ergebnis als .docx-Datei gespeichert, zeigt Word eine Fehlermeldung an.
<Command Name="ConvertToDocument" />
ConvertToPdf
Verfügbarkeit: OneOffixx Server & OneOffixx Client
Dieser Befehl gilt nur für Word Office-Dokumente. OneOffixx konvertiert das Dokument direkt in ein PDF.
<Command Name="ConvertToPdf" />
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.
Note
Werden eigene Schriftarten im Dokument verwendet, müssen diese Schriftarten auch auf dem Server installiert werden.
Das Dokument wird an den Standarddrucker gesendet:
<Command Name="Print" />
SaveAs
Note
Auf dem Server kann dieser Command nicht dazu verwendet werden, ein Word-Dokument zu einem PDF zu konvertieren! Verwenden Sie dazu ConvertToPdf.
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 OneOffixx 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.
<Command Name="SaveAs">
<Parameters>
<Add key="Filename">\\MyServer\share\organization\...\documentxyz.dotx</Add>
<Add key="Overwrite">true</Add>
<Add key="CreateFolder">true</Add>
<Add key="CopyOnly">false</Add>
<Add key="AllowUpdateDocumentPart">false</Add>
</Parameters>
</Command>
Note
In früheren Versionen konnte zusätzlich der Parameter Type
angegeben werden. Dieser wird nicht mehr benötigt, da eine Typumwandlung implizit über die Dateiendung der Zieldatei abgeleitet wird.
UpdateFieldsOnOpen
Dieser Befehl gilt nur für Word-Dokumente und speichert im Dokument die Information, dass Office die Felder, (z. B. Inhaltsverzeichnisse oder Verknüpfungen) beim Öffnen aktualisieren soll. Im Normalfall erscheint für den Benutzer beim Öffnen des Dokuments direkt die Frage, ob die Felder aktualisiert werden sollen:
<Command Name="UpdateFieldsOnOpen" />
Alternativ kann OneOffixx angewiesen werden, über den OneOffixx-Ribbon die Felder selbstständig und ohne Rückfrage beim Öffnen zu aktualisieren:
<Command Name="UpdateFieldsOnOpen">
<Parameters>
<Add key="Type">OneOffixx</Add>
</Parameters>
</Command>
Note
Es wird empfohlen, das Command zusammen mit ConvertToDocument (bzw. für den PDF-Output mit ConvertToPdf zu benutzen, da Word beim Öffnen einer ".dotx"-Datei ebenfalls das Inhaltsverzeichnis nicht richtig darstellt.
Merge
Das Merge-Command gilt nur für Word-Dokumente und kann zum Zusammenführen von mehreren Dokumenten verwendet werden. Das zusammengeführte Dokument kann anschliessend wieder als ein einzelnes weiterverwendet werden. Der Befehl steht nur als BatchCommand zur Verfügung.
<Command Name="Merge">
<Parameters>
<Add key="PageNumberStart">10</Add>
</Parameters>
</Command>
Das Ergebnis des Merge-Commands ist immer ein Word-Dokument (.docx).
CreateConnectorResult
Über dieses Command wird nach Abschluss der gesamten Dokumenterstellung eine Datei im XML-Format mit einer Zusammenfassung erstellt.
<Command Name="CreateConnectorResult" />
Der Inhalt der Datei sieht im Erfolgsfall etwa so aus:
<?xml version="1.0" encoding="utf-8"?>
<OneOffixxConnectResult xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<Result>Success</Result>
<Details>
<InputFile>O:\Templates\Template_Kurzmitteilung.oocx</InputFile>
<Input><![CDATA[
<OneOffixxConnectBatch>
...
</OneOffixxConnectBatch>
]]></Connect>
</Details>
</OneOffixxConnectResult>
Im Fehlerfall steht in der Datei zusätzlich eine Fehlermeldung inkl. StackTrace von OneOffixx (sofern möglich):
<?xml version="1.0" encoding="utf-8"?>
<OneOffixxConnectResult 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.
bei System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath)
bei System.IO.FileStream.Init(String path, FileMode mode, FileAccess access, Int32 rights, Boolean useRights, ...)
bei System.IO.FileStream..ctor(String path, FileMode mode, FileAccess access, FileShare share)
bei OneOffixx.Core.Connect.Commands.SaveAs.Execute()
...
</Message>
<Details>
<InputFile>O:\Templates\Template_Kurzmitteilung.oocx</InputFile>
<Input><![CDATA[
<OneOffixxConnectBatch>
...
</OneOffixxConnectBatch>
]]></Connect>
</Details>
</OneOffixxConnectResult>
BindCustomXML
Dieses Command gilt nur für Word-Dokumente. OneOffixx legt alle Daten als sogenannte “CustomXML-Daten” im Dokument ab und Office lädt beim Öffnen des Dokuments diese Daten und schreibt die Werte in die jeweiligen ContentControls.
<Command Name="BindCustomXML" />
Note
Es gibt vereinzelt Fälle in welchen Office bzw. der Open XML-Client nicht die richtigen Werte lädt oder die Felder leer bleiben, weil z. B. eine ältere Version von Office genutzt wird oder weil der Open XML-Client diese Funktionalität nicht implementiert hat.
In solchen Fällen kann das BindCustomXML-Command helfen, da OneOffixx bereits bei der Dokumentgenerierung die Daten nicht nur im CustomXML ablegt sondern weil es gleichzeitig die Daten in den ContentControls aktualisiert.
InvokeProcess
Im Dashboard müssen 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:
<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. Der Aufruf kann optional Argumente enthalten und sieht folgendermassen aus:
<Command Name="InvokeProcess">
<Parameters>
<Add key="Name">OurSystemNotepad</Add>
<Add key="Arguments">/w test.txt</Add>
</Parameters>
</Command>