Häufig gestellte Fragen FAQ

Site: CIB eLearning
Course: CIB job
Book: Häufig gestellte Fragen FAQ
Printed by: Guest user
Date: Thursday, 2 May 2024, 11:31 AM

Table of contents

1. Wie kann ich ein PDF-Dokument beim Generieren mit einem Hintergrund hinterlegen, z.B. dem Briefpapier des Kunden?

Das PDF muss an das Kommando „pdfjoin“ weiter gegeben werden. Beispieljobs: Job-Background-Mehrseitig.xml, Job-Background-Inputfilename.xml


2. Kann ich CIB merge Rohtexte verkleinern oder optimieren, damit die Dokumenterzeugung schneller wird, und das Ausgabedokument kleiner?

Ja, verwenden Sie hierzu das Kommando "mergefilter", um Ihre Rohtexte und Textbausteine vor Verwendung auf dem Server zu filtern. Beispieljobs: Job-Mergefilter-*.xml


3. Bekommt man im Fehlerdokument auch den Namen (nicht das Kommando) des Schritts geliefert in dem der Fehler auftrat?

Ja, im entsprechenden Schritt der fehlgeschlagen ist wird der Schrittname, Fehlercode und der entsprechende Fehlertext ausgegeben.


4. Wie kann man RTF-Templates ins Template-Verzeichnis auf den Server laden?

Verwenden sie dazu die Kommandos „mem“ und „save“. „mem“ benötigt als Property „InputData“ den Inhalt der RTF-Datei als String. "save" benötigt als Property "OutputFilename" den absoluten Pfad auf dem Server wohin Sie die Datei speichern wollen. Beispieljob: Job-Template-Upload.xml


5. Kann ich in einem Auftrag als Ausgabe sowohl das PDF-Dokument als auch das RTF-Dokument generieren lassen?

Um ein RTF und ein PDF mit ein und demselben Auftrag zu erhalten, muss die Angabe des Schrittnamens im <output>-Tag im Job gesetzt werden z.B. <outputs><output name="Merge-Step"/><output name="Format-Step"/></outputs> Beispieljob: Job-Multiresult.xml. Allerdings muss der OutputMode auf „Xml“ gesetzt werden. Falls die Job-Property „UseInMemoryProcessing“ den Wert „false“ hat, so darf kein Output-Element verwendet werden.


6. Wie kann ich die Datenversorgung von einer CSV-Datei auf eine XML Datenversorgung umstellen?

Es ist aus dem CIB documentserver möglich, über eine XML-Datei den gesamten Auftrag zu bewerkstelligen (ohne begleitende zusätzliche CSV-Dateien). Dazu siehe Leitfaden für die Projektumstellung auf XML. Eine CSV-Datei (Comma Separated Values) ist eine Textdatei, die keine Formatierungen enthält und die Daten in einem Tabellenaufbau mit vorgegebenen Feldtrennzeichen (i.d.R. Semikolon) speichert. Die Feldnamen stehen in der ersten Zeile und ein neuer Datensatz wird durch einen Zeilenumbruch gekennzeichnet. Eine CSV-Datei ist bei großen Datenmengen zu empfehlen, da weniger Text als bei XML-Dateien enthalten ist.

Bei einer XML-Datei erfolgt die Datenversorgung von Platzhaltern im RTF-Baustein aus den Inhalten diverser Tags in einer XML-Datei. Nach dem typischen XML-Header ist ein neutrales <root>-Element  die Dokumentwurzel. Darin ein Element <data> als Wurzel für alle Datenknoten, denn es könnten sich ja noch beliebige andere Informationen in derselben XML-Datei befinden. XML-Dateien haben im Gegensatz zum spaltenförmigen Aufbau von CSV-Dateien eine baumartige Darstellung.  Der Vorteil bei der Datenversorgung besteht darin, dass weniger Dateien anfallen als bei der CSV Datenversorgung.  Des Weiteren können mit dem Xpath die Zugriffsstrukturen im RTF vereinfacht werden (siehe Job-Merge-Multialias.xml).


7. Gibt es ein dokumentiertes XML Schema für den Auftrag der an den CIB documentserver geschickt wird und ein Schema das das XML Dokument beschreibt, in dem im Fehlerfall die Fehlermeldungen zurückgeliefert werden?

Ein XML Schema für den Auftrag und für das Ergebnis-XML befindet sich im Anhang des CIB job Leitfadens sowie unter https://www.cib.de/schemas/job/1.5/cibjob.xsd.


8. Was muss im Input-Element eines Formatierungsschritts stehen wenn eine RTF Datei als Eingabe verwendet werden soll?

Das Element kann leer sein, falls das RTF das Ergebnis des Vorgängerschritts ist. Soll als Eingabe ein RTF aus einem anderen Schritt dienen, so ist im Input-Element der Schrittname anzugeben. Beispieljob: Job-Merge-Load-Format-Formfields-keep.xml


9. Was bedeutet OutputMode "Direct" bzw. "Xml"?

Bei "Direct" wird entweder das Ergebnisdokument oder ein Fehler-XML geliefert.

Bei "Xml" wird auch im Erfolgsfall ein XML geliefert, das dann das oder die Ergebnisdokumente als Elemente (ggf. Base64 encoded) und die unterstützten Output-Properties für jeden Schritt enthält.


10. Wird, wenn die Property OutputFilename bei einem Schritt angegeben ist tatsächlich eine Datei angelegt?

Nein. Ist beim Kommando „format“ die Property „OutputFilename“ gesetzt, muss zusätzlich die Job-Property „UseInMemoryProcessing“ auf den Wert „0“ gesetzt werden, d.h. die Datei wird jetzt auf Platte gespeichert. Beispieljob: Job-Merge-Serialletter-@1-Format-NoInMemory.xml


11. Was bedeutet das „id“ Attribut in einem Job Knoten?

Hier wird bei mehreren Jobs in der Auftragsdatei ein Bezug zwischen Job und Job-Result hergestellt. Das Attribut "id" des <job> kann als $(id) in Properties und dem <trace> Element automatisch eingesetzt werden (Textersetzung). Ist bei einem Job kein Attribut „id“ angegeben, so wird als Default  die Portnummer des Socketservers verwendet. Beispieljob: Job-Merge-Subquery-JobId.xml


12. Einstellungen zum Workspace der CIB docgen sind nicht wirksam.

Die Property WorkSpace wird mit großem S geschrieben.


13. Lizenzeinstellungen der CIB docgen sind nicht wirksam

Ab der Version 1.4.x von CIB job muß eine Lizenz für CIB job angegeben werden im Auftrag oder in der jobconfig.xml. Beispiel: jobconfig.xml


14. Fehlermeldung „de.cib.util.ExceptionHandlingException: Could not create error message for error …“

Problem mit xml jars verschiedener Hersteller im classpath.

Verwendung von JDK 1.5 oder 1.6 mit CIB documentserver 1.3. oder älter.


15. Konfigurationsdatei Jobconfig.xml wird nicht gefunden oder ist nicht wirksam

Einstellung de.cib.docserv.JobConfigfilename enthält den Pfad zur Datai nicht korrekt.

Einstellung de.cib.docserv.JobConfigfilename enthält nur eine Pfadangabe, muß aber Verzeichnis und Dateiname zur gewünschten jobconfig.xml enthalten.

Properties aus der jobconfig.xml werden in den ausgeführten Aufträgen ebenfalls angegeben. Die im Auftrag angegebenen Einstellungen überschreiben die aus der jobconfig.xml.


16. Welche Property setzt den Seitenzähler mit Abbruchdialog?

Die Property AbortDlg. Diese Property darf bei CIB job und CIB documentserver nicht eingesetzt werden.


17. Wie kann ich mehrere PDFs aneinander hängen?

Dazu müssen sie das Kommando „pdfjoin“ verwenden. Bitte schauen Sie in folgenden Auftragsdateien:

Job-PdfJoin.xml: Führt zweimal merge+format/pdf aus und joint die Ergebnisse zusammen.

Job-Mem-PdfJoin.xml: Enthält zwei PDFs direkt und joint die zusammen.

Job-File-PdfJoin.xml: Die PDFs liegen auf dem Server bereits vor.


18. Wie kann ich fertige RTF-Dokumente im Auftrag an CIB format/output mitliefern?

Vor dem format-Step muß ein mem-Step eingefügt werden. Mit einem mem-Step kann man ein beliebiges Dokument im Auftrag einbetten.

Wenn der mem-Step direkt vor dem format-Step steht, wird das eingebettete Dokument als Eingabe für CIB format verwendet.

Sonst muß explizit der Name des mem-Steps beim input-Element des format-Steps angegeben werden.

Beispiel für den Normalfall:

<steps>
          <step name="Mem-Step" command="mem">
                 <properties>
                       <property name="ContentType">application/rtf</property>
                       <property name="InputData"><![CDATA[{\rtf1\ansi\deff0
{\fonttbl{\f0\froman\fcharset0\fprq2

\par
}]]></property>
                </properties>
          </step>
          <step name="Format-Step" command="format">
                 <properties>
                       <property name="OutputFormat">FormatPdf</property>
                 </properties>
          </step>

19. Die Templates/Grafiken sollen auf einem anderen Rechner liegen. Kann man dem CIB format im CIB documentserver einen Workspace außerhalb des Servers setzen?

CIB format kann auf seinen als Property gesetzten WorkSpace  zugreifen, wenn es durch das System gestattet ist. Templates/Grafiken können also über einen Pfad hinterlegt werden.


20. Änderung einer Formatierung: Wie kann ich den Seitenrand einer Folgeseite verändern?

Als Seitenumbruch einen „Abschnittswechsel nächste Seite“ einfügen. Dort können Sie neue Seitenränder setzen und „ab aktuellem Abschnitt“ vorgeben.


21. Dokumente werden auf Basis einer bestimmten Formatvorlage erzeugt. Wie werden die Dokumente geändert, wenn sich die Formatvorlage ändert?

Es muss explizit „Formatvorlage neu übernehmen“ befohlen werden. Dieser Menüpunkt variiert leider zwischen den Word Versionen. Ein einfaches Öffnen des Dokuments ist nicht ausreichend!


22. Auf was bezieht sich die Property "-p" beim merge-Kommando? Muss diese nicht gleich sein wie das Encoding des Auftragsdokuments selbst?

Diese bezieht sich auf das Encoding der Eingabedaten für Merge und ist nur deshalb zunächst immer identisch mit dem der Auftragsdatei.


23. Kann man für die Schritte Mischen und Formatieren ein Arbeitsverzeichnis unabhängig vom Formularverzeichnis angeben?

Ja, das Formularverzeichnis wird im merge-Schritt über die Property „–A“ gesetzt, das Arbeitsverzeichnis im format-Step wird über die Property „WorkSpace“ gesetzt.


24. Wie kann ich im RTF einen Alias auf Basis von Xpath definieren?

Das geht über den NEXT Schalter:

{ NEXT "DEF:Aliasname;XML:Xml-Dateiname;Xpath-Ausdruck" }

Der XML-Dateiname lautet in CIB job/CIB documentserver-Aufträgen $(inline), also NEXT "DEF:Aliasname;XML:$(inline);Xpath-Ausdruck" }


25. Ist es möglich if-Anfragen auf XML-Attribute zu tätigen?

Ja. Beispiel:

RTF: {if "{ref "DAT:XML:$(inline);data/@attributname"}" = "abcd" "wenn" "dann" }


26. Wie ist die Syntax der Property „-h“ beim merge-Kommando?

Die Syntax lautet: XML:Datenherkunft.

Beispiel: XML:$(inline) drückt aus, dass die Daten im Auftrags-XML vorliegen. In Verbindung mit der Property „-d“ wird die Wurzel der Daten festgelegt (siehe Job-Multiresult.xml). Die Datenherkunft kann auch aus einer separaten XML-Datei erfolgen. Um das Verzeichnis anzugeben, indem die separate Daten-XML liegt, müssen Sie die Property „-q“ verwenden (siehe Job-Multiresult-SeparateData.xml).


27. Was bedeuten die Optionen „–A“ und „–Q“ beim merge-Kommando?

-A ist das Verzeichnis, in dem alle Textbausteine, Formulare und Templates sowie Grafikdateien gesucht werden. Auf dieses Verzeichnis beziehen sich alle {includetext} und {includepicture} Anweisungen in den Textbausteinen. -Q setzt das Verzeichnis für die Ergebnisdateien und für die separate XML-Datenversorgung. -Q ist relativ zum work-Verzeichnis.


28. Gibt es eine Anleitung für die RTF-Feldanweisungen?

Bitte wenden Sie sich an den  Support. Dieser stellt Ihnen auf Anfrage gerne Informationen zur Verfügung. Des Weiteren werden auch Schulungen zu diesem Thema angeboten.


29. Was bedeutet die Property „-s“?

Mit –s versteht CIB merge auch erweiterte REF-Anweisungen, die Zusatzschalter für die Ausgabe von Formularen mit CIB format/html enthalten.

Beispiel für Zusatzschalter: {REF Nachname \* TB25} ergibt mit CIB format/html eine Textbox mit 25 Zeichen Länge. Eine Spezifikation dieser Zusatzschalter finden Sie in der CIB format Hilfe LINK FEHLT.


30. Wie schreibe ich einen Xpath direkt in die REF-Anweisung um einen Wert auszugeben?

Syntax im RTF-Dokument: {REF "DAT:XML:Xml-Dateiname;Xpath-Ausdruck"}. Der Xpath sollte auf ein einzelnes Element oder Attribut verweisen. Beim Element wird der Textunterknoten zum Inhalt, beim Attribut der Attributwert.

Beispiel: {REF "DAT:XML:meine.xml;/root/child/@attribute"}. Siehe auch „Leitfaden zur Umstellung eines CSV in ein XML Projekt“.


31. Wie kann ich im CIB documentserver den Schalter /* CHARFORMAT global setzen?

Es gibt im CIB documentserver die jobconfig.xml. Dort können globale Einstellungen für die einzelnen Kommandos getroffen werden. Fügen Sie für das Kommando „merge“ die Zeile „<property name="--charformat" />“ hinzu.


32. Welche Property zeigt den Fortschrittsdialog an?

Die Property –x zeigt während des Mischvorgangs die Fortschrittsanzeige an. Diese Property darf bei CIB job und CIB documentserver nicht eingesetzt werden.


33. Ist es möglich, innerhalb der REF-Anweisung von einem definierten XML-Alias über die Punktnotation tiefer in den XML-Baum zu navigieren?

Es gibt den Begriff des aktuellen Kontextes. Dieser wird bei der next-Anweisung gesetzt, zum Beispiel von { next "DEF: "} oder mit {next –Alias}{next Alias} bei Aliasen, die im <multi>-Element definiert sind. Dies setzt den Datensatzzeiger Alias erst vor den ersten Datensatz und dann auf den ersten Datensatz. Damit ist der aktuelle Kontext dann das erste Element, das durch den Alias-Xpath ausgewählt wurde. Folgt dann eine Schleife, so ist beim zweiten, etc. Schleifendurchlauf entsprechend das zweite, etc. Element der durch den Alias-Xpath gewählten Elemente der aktuelle Kontext. Anschließend kann man bei nachfolgenden Xpath-Ausdrücken im Rohtext relativ zugreifen.

Beispiel:

<root>
    <data>
        <a>
            <feld1>Wert1</feld1>
        </a>
        <b>          
<feld1>Wert3</feld1>           
<feld2 code="blau">Wert3</feld2>
        </b>
    </data>
</root>

Kontext setzen:

{ next "DEF:Einstellungen;XML:$(inline);//data }
"Wert1" ausgeben, relativ zum data-Knoten, also ohne führende /
{ ref "DAT:XML:$(inline);a/feld1 }
Code "blau" ausgeben:
{ ref "DAT:XML:$(inline);b/feld2@code }

34. Kann ich einen Xpath direkt in der Ref-Anweisung verwenden, anstelle des Feldnamen?

Ja. { REF "DAT:XML:Xml-Dateiname;Xpath-Ausdruck" }

Der Xpath sollte auf ein einzelnes Element oder Attribut verweisen. Beim Element wird der Textunterknoten zum Inhalt, beim Attribut der Attributwert. Im Text steht dann der entsprechende Wert des ausgewählten Elements.


35. Wie verwende ich Wildcards in Xpath?

Bei einer gröber gefassten Angabe des Xpaths kann man über den Knotennamen auswählen, wo man sich gerade befindet.
Beispiel:

<root>
    <data>
        <a>           
<feld1>Wert1</feld1>
        </a>
        <b>           
<feld1>Wert3</feld1>           
<feld2 code="blau">Wert3</feld2>       
    </data>
</root>

Selektiere Knoten a und b:

RTF: { next "DEF:a-und-b;XML:$(inline);//data/*" }
Schleife über alle a und b:
RTF: { if { mergerec ?a-und-b } = "1" "
{ ref a-und-b.name() }: { ref a-und-b.feld1 }
{ if { ref a-und-b.name() } = "b" "+{ ref a-und-b.feld2 }" }
{ next a-und-b }"
\*solange }
Liefert Text
a: Wert1
b: Wert2+Wert3

36. Ist es möglich auf tiefer liegende Strukturen über den Alias zuzugreifen?

Sie haben die Möglichkeit mit der property „--prefix-delimiter“ ein Trennzeichen zwischen Aliasnamen und Variablennamen zu definieren und den Präfix-Mechanismus einzuschalten. Ergänzen Sie in den Rohtexten alle Zugriffe auf Variablennamen um den Aliasnamen und das Trennzeichen (siehe Beispieljobs: Job-Merge-Multialias.xml, BasicMergeSubquery.rtf).


37. Wie kann den Fehler "Variable nicht gefunden"bei CIB merge unterdrücken? Ich kann nicht immer alle Variablen liefern.

Verwenden Sie die CIB merge-Property -b. Diese kann auf verschiedene Ebenen der Fehlertoleranz eingestellt werden (siehe CIB merge Leitfaden).

Im einfachsten Fall wird die Property -b auf den wert ok gesetzt.

Beispiel:

<step command="merge" name="merge">
  <property name="-b ">ok</property>

38. Wie kann ich die Textbausteine im Auftrag an CIB merge mitliefern?

Dem merge-Step werden die Dateien über die --directory-set-Property übergeben. Dabei wird auch der Dateiname festgelegt. Damit der Propertyname bei mehreren zu übergebenen Textbausteinen eindeutig ist, muß der Dateiname in den Propertynamen aufgenommen werden.

Beispiel:

<step command="merge" name="merge">
   <property name="--directory-set=wurzel.rtf">{\rtf1…}</property>
   <property name="--directory-set=baustein.rtf">{\rtf1…}</property>
   <property name="-i">wurzel.rtf</property>

Die so definierten Dateien werden anschließend mit diesen Dateinamen wie üblich über die -i-Property angesprochen (siehe Beispiel), sowie aus den Bausteinen mit {includetext} angesprochen. Mischformen, wo nur ein Teil der Bausteine im Auftrag geliefert werden, sind möglich. Beispieljobs: Job-Csv-Merge-FormatPdf.xml, Job-Embed-RtfDataBmp.xml


39. Wie kann ich Variablenwerte im Auftrag an CIB merge mitliefern?

Das übliche Verfahren ist das Einbetten eines XML-Fragments in den Auftrag selbst. Die darin enthaltenen Daten werden CIB merge über Xpath-Ausdrücke bekannt gemacht. Siehe hierzu CIB merge Leitfaden und CIB job Leitfaden.

Alternativ können einzelne Variablenwerte direkt im Auftrag als --set-Properties angegeben werden. Beispieljob: Job-Embed-SetWmf.xml. Damit der Propertyname bei mehreren Variablen eindeutig ist, muß der Variablenname in den Propertynamen aufgenommen werden.

Beispiel:

<step command="merge" name="merge">
   <property name="--set=Servername">docserv1</property>
   <property name="--set=Application">myapp</property>

40. Wie gebe ich CIB merge-Kommandozeilenparameter als Properties an?

In der Regel wird der Kommandozeilenparameter bei = getrennt und der Parametername ohne = als Propertyname benutzt, und der Parameterwert als Textelement in das Propertyelement eingesetzt.

Beispiel: --verbose=9+all

Bei Parametern ohne = erfolgt die Trennung nach dem Namen des Parameters.

Beispiel -iWurzel.rtf

Bei Parametern ohne Wert, wird ein leeres Property-Element benutzt.

Beispiel --extended-ref

Bei Parametern mit zwei = wird das zweite = weggelassen. Das erste wird in den 
Propertynamen aufgenommen zusammen mit dem dahinterstehenden Wert. 

Beispiel --set=Application=myapp

Umsetzung für diese Beispiele:

<step command="merge" name="merge">
   <property name="--verbose">9+all</property>
   <property name="-i">Wurzel.rtf</property>
   <property name="--extended-ref"/>
   <property name="--set=Application">myapp</property>

41. Welche CIB merge Properties sollte ich nicht verwenden?

Die Property -p (<property name="-p">ansi</property>) sollte nicht gesetzt werden, da das Encoding der Daten ja mit der XML Processing Instruction <?xml version="1.0" encoding="UTF-8" ?> bereits festgelegt ist.

Die Property -L sollte sorgfältig eingesetzt werden, damit nicht mehrere Aufträge gleichzeitig versuchen in dieselbe Logdatei zu schreiben. Besser einen eindeutigen Dateinamen verwenden. Dazu können sie das Attribut „id“ von Job verwenden. Beispieljob: Job-Merge-Subquery-JobId.xml


42. Das Logging von CIB merge mit dem -L-Property funktioniert nicht.

Verwenden Sie eindeutige Dateinamen für die Logdatei je Auftrag.


43. Wie kann ich die CIB merge Logdatei (-L-Property) auf dem Client ansehen?

Verwenden Sie eindeutige Dateinamen für die Logdatei je Auftrag. Geben Sie zusätzlich das Trace-Element beim merge-Step mit dem gleichen Dateinamen an. Dann wird die Logdatei im Auftragsergebnis dem Client zurückgegeben. Dort kann sie aus dem Trace-Element extrahiert werden. Siehe auch CIB job Leitfaden.

Setzen Sie ggf. den OutputMode auf Xml, um die CIB merge Logdatei auch im Erfolgsfall zu erhalten.


44. Meine RTF-Feldanweisung wird nicht ausgeführt.

Die Anweisung in der Schleife ist kein "Feld". Es wurden einfache { und } Zeichen eingetippt, anstatt über Strg+F9 die nur paarig auftretenden "Feldklammern" einzufügen. Bitte Felder so anlegen: Strg+F9 drücken, dann Feldbefehl und Parameter eintippen. Man kann auch einen Textblock markieren, und dann erst Strg+F9 drücken. Die Feldklammern werden dann um den markierten Bereich herum gesetzt. Das ist zum Beispiel für das nachträgliche Herumbauen einer {if}-Anweisung nützlich.


45. Meine RTF-Schleifenbefehl {if … \* solange} wird in Word als "Unbekanntes Schalterargument" angezeigt.

Dies ist kein Fehler. Das "Unbekannte Schalterargument" kommt daher, dass Word den \*solange-Schalter nicht kennt. Es handelt sich hierbei um eine standardkonforme Erweiterung des RTF unsererseits, die von Word ansonsten problemlos mitgeführt wird. Drücken Sie Alt+F9, um die Feldbefehle anzuzeigen.


46. Das Auftragsergebnis liefert den Merge-Fehler 4. Die Pfadangaben wurden bereits überprüft und korrekt.

Im ganzen Projekt (jobconfig.xml und Auftragsdateien) muss für die Parameter entweder die Langform oder die Kurzschreibweise verwendet werden. Prüfen Sie bitte die Parameterschreibweise in der jobconfig.xml und in den Auftragsdateien. Schreiben Sie beispielsweise in der jobconfig.xml die Property für das Kommando in Kurzschreibweise <property name=" ‑a">C:/cib/External/templates</property> so kann in den Auftragsdateien nicht die Langform <property name="‑‑source">..\templates\</property> verwendet werden.


47. Wie kann ich eine maximale Laufzeit von Aufträgen sicherstellen?

Verwenden Sie die Property „MaxJobExecutionTime“ oder die Attribute „timeout“ in ihren Aufträgen.