Skip to end of metadata
Go to start of metadata

You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 12 Next »


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.

<primedocsConnect>
   ...
</primedocsConnect>

Template

Über das Template-Element kann gezielt eine Vorlage angesprochen oder eine Filterung aufgrund von Tags vorgenommen werden.

Id

Ü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.

<primedocsConnect>
  <Template Id="30b55516-80b5-41d7-801b-b31d6da376ac" />
  ...
</primedocsConnect>

Version

Über das Version="Draft"-Attribut kann auf eine Vorlage im Entwurfsmodus zugegriffen werden.

<primedocsConnect>
  <Template Id="30b55516-80b5-41d7-801b-b31d6da376ac" Version="Draft" />
  ...
</primedocsConnect>

TagFilter

Der TagFilter ist nur clientseitig implementiert.

Über das TagFilter-Element können Tags zur Filterung angegeben werden.

<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.

Standardmässig wird erwartet, dass die Filterung nur eine Vorlage als Ergebnis liefert.
Liefert die Abfrage mehrere Vorlagen, wird eine Fehlermeldung anzeigt.

Über das AllowTemplatePicker-Attribut kann optional ein Auswahldialog (“TemplatePicker”) angezeigt werden, dieser zeigt dann alle resultierenden Vorlagen an.

<primedocsConnect>
  <Template>
    <TagFilter AllowTemplatePicker="true">
      <Tag>Tag1</Tag>
      <Tag>Tag2;Tag3;Tag4</Tag>
    </TagFilter>
  </Template>
  ...
</primedocsConnect>

Der “TemplatePicker” wird auch angezeigt, wenn gar kein Template-Element angeben wird.


DocumentLanguage

Über das DocumentLanguage-Element mit dem Code-Attribut kann die Zieldokumentsprache angegeben werden.

<primedocsConnect>
  <DocumentLanguage Code="de-ch" />
  ...
</primedocsConnect>

Wird keine DocumentLanguage angegeben, wird die Standardsprache der primedocs Datenquelle genommen.


Author

Das Author-Element kann genutzt werden um die Dokumenterzeugung mit einem bestimmten Profil und einem bestimmten Thema zu starten.

<primedocsConnect>
  <Author>
    <Profile Id="08be85c8-d12a-4e8c-b1aa-9f56e5f6ed38" ThemeId="Red" />
  </Author>
  ...
</primedocsConnect>

Über das Id-Attribut kann ein bestimmtes Profil ausgewählt werden. Das ThemeId-Attribut kann genutzt werden um ein bestimmtes Thema auszuwählen.

Ohne Angabe eines expliziten Profiles wird das aktuelle Profile des primedocs-Clients verwendet.
Serverseitig muss ein Profil angegeben werden, ansonsten wird ein Fehler zurückgegeben.


Forms

Die Dokumentfunktion Formulare (Forms) dient dazu Daten vor der Dokumentgenerierung abzufragen. Die konfigurierten Eigenschaften können auch über die Connect Schnittstelle vorausgefüllt werden.

<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>

Über Connect wird nur die “Ziel-Id” des jeweiligen Elements angegeben samt dem Inhalt. Hierbei werden 3 verschiedene Typen unterschieden:

  • “Normale” Elemente können über <Value Key="ElementId">Wert</Value> befüllt werden.

  • Objekte (Object), wie z.B. Personenangaben über das Elternelement <Object Key="ElementId" /> samt <Value Key="ElementId">Wert</Value> für die Kindelemente.

  • Objektlisten (ObjectCollection) für Auflistungen von Daten, wobei jeder Datensatz in einem Item-Element ist.


Data

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.

<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>

Die Logik ist hier identisch wie bei der Übergabe zu Forms, d.h. es gibt:

  • <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.

Commands können nach den folgenden Ereignissen gestartet werden:

  • 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:

<primedocsConnect>
  <Template Id="30b55516-80b5-41d7-801b-b31d6da376ac" />
  <Forms>
    <Value Key="Subject">Hello Connect</Value>
  </Forms>
  <Commands>
    <OnSuccess>
      <SaveFile Filename="\\MyServer\share\organization\...\documentxyz.docx"
                Overwrite="true"
                CreateFolder="true"
                />
    </OnSuccess>
  </Commands>
</primedocsConnect>

In diesem Beispiel wird ein Dokument mit der Vorlage 30b55516-80b5-41d7-801b-b31d6da376ac mit dem Subject “Hello Connect”.
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:

<?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:sequence>
								</xs:complexType>
							</xs:element>
							<xs:element name="OnError">
								<xs:complexType>
									<xs:sequence>
										<xs:element name="InvokeProcess" minOccurs="0" maxOccurs="1" type="CommandInvokeProcessElement" />
									</xs:sequence>
								</xs:complexType>
							</xs:element>
							<xs:element name="OnExit">
								<xs:complexType>
									<xs:sequence>
										<xs:element name="InvokeProcess" minOccurs="0" maxOccurs="1" type="CommandInvokeProcessElement" />
									</xs:sequence>
								</xs:complexType>
							</xs:element>
							<xs:element name="OnCancel">
								<xs:complexType>
									<xs:sequence>
										<xs:element name="InvokeProcess" minOccurs="0" maxOccurs="1" type="CommandInvokeProcessElement" />
									</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:attribute name="Filename" type="xs:string" use="required" />
		<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="required" />
	</xs:complexType>

	<xs:complexType name="CommandInvokeProcessElement">
		<xs:attribute name="Name" type="xs:string" use="required" />
		<xs:attribute name="Arguments" type="xs:string" use="optional" />
	</xs:complexType>

</xs:schema>

  • No labels