Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Table of Contents

Verarbeitung

...

Die Verarbeitung von Connect-Dateien folgt einem spezifischen Ablauf, der an gewissen Stellen mit Benutzerinteraktion und Fehlerbehandlung umgehen kannConnect file processing follows a specific flow that can handle user interaction and error handling at certain points.

...

1.

...

Call

Here it is distinguished whether the call is made with complete connect (Normal or Type Data) erfolgt, oder aber or via unstrukturiertem unstructured XML. Im zweiten Fall wird der richtige XML-Transformator gesucht und auf das XML angewendet. Sollte diese Operation scheitern, wird die Verarbeitung umgehend abgebrochen. Es wird kein ConnectorResult erstellt, beim serverseitigen Aufruf wird allerdings der HTTP-Fehlercode In the second case, the correct XML transformer is searched for and applied to the XML. If this operation fails, the processing is aborted immediately. No ConnectorResult is created, but the server-side call returns an HTTP error code 500 (Server Error) zurückgegeben. Dies, weil die Verarbeitung zu diesem Zeitpunkt noch gar nicht gestartet wurde, sondern lediglich die Aufbereitung. This is because the processing has not even been started at this point, only the formatting.

2.

...

Preparation

In this second step, the connect is read in and the sequence is established. If the read-in fails, this is processed regularly via the OnError commands. By default, the Connect XML is not subjected to a schema check, unless this was requested via the attribute Validate="true" gefordert.

3.

...

Um die Vorlage zu wählen, gibt es drei verschiedene Möglichkeiten:

  • Die Id der Vorlage (TemplateId) wird explizit angegeben → Auswahl eindeutig, keine Benutzerinteraktion nötig

  • Die Vorlage wird über Tags gefiltert. Dabei gibt es zwei mögliche Konsequenzen: a) Nur eine Vorlage entspricht den Filterkriterien → Auswahl eindeutig, keine Benutzerinteraktion nötig b) Mehr als eine Vorlage entspricht den Filterkriterien → dem Benutzer wird der Vorlagenpicker angezeigt. Dies funktioniert nur bei einem Client-Aufruf, nicht auf dem Server. Wird der Vorlagenpicker angezeigt, hat der Benutzer auch die Möglichkeit, die Aktion abzubrechen, was wiederum in einem OnCancel-Ereignis endet.

4. Generierung

Die Dokumentenerstellung an sich wird als Blackbox betrachtet. In ihr werden die unterschiedlichen Dokumentfunktionen angewendet, die an der gewählten Vorlage angehängt sind und ggf. mit den Daten aus dem Connect-Aufruf angereichert.

5. Ausführung der Document-Commands

Nach der eigentlichen Dokumenterstellung können auf das Einzelergebnis Commands angewendet werden (z. B. die Umwandlung in ein PDF-Dokument). Gleichzeitig werden zu diesem Zeitpunkt die Fehler- und Abbruch-Commands auf Dokumentebene ausgeführt.

6. Ausführung der Batch-Commands

Nach Beendigung aller einzelnen Dokumenterstellungen können auf den gesamten Batch erneut Commands angewendet werden – z. B. das Merge-Command. Zu diesem Zeitpunkt werden auch Fehler- und Abbruch-Commands aus den kumulierten Ergebnissen der Document-Commands ausgeführt. Ganz am Ende wird – falls vom Connect-Aufruf so verlangt – die ConnectorResult-Datei erstellt. Im Falle eines Web-Aufrufs an den Server wird jetzt das erstellte Dokument als Stream zurückgeliefert.

ConnectResult

Das ConnectResult kann folgende Werte annehmen:

  • Success Es sind keine Fehler aufgetreten.

  • Cancel Der Benutzer hat den Prozess (oder den vorhergehenden) abgebrochen.

  • Error Es ist mindestens ein Fehler aufgetreten.

  • Unknown Der Status zu diesem Zeitpunkt unbekannt. Dies tritt auf, wenn der Template Picker gestartet wurde (welcher asynchron ausgeführt wird).

Reihenfolge/Priorisierung: Unknown, Error, Cancel, Success Das heisst, wenn ein Prozess, der für das Resultat relevant ist, Unknown zurückgibt, dann ist das Resultat auch Unknown, unabhängig davon, ob ein anderer Prozess abgebrochen wurde oder fehlschlug. Analog für Error und Cancel. Success wird nur zurückgegeben, wenn alles erfolgreich war.

Beispiel: Dokumentgenerierung: Success und: Commands Error ergibt ein Gesamtresultat von Error, obwohl die Dokumentgenerierung an sich erfolgreich war.

...

Template selection

There are three different ways to select the template:

  • The templateId is explicitly specified → selection unique, no user interaction needed

  • The template is filtered by tags. Then there are two possible consequences: a) Only one template matches the filter criteria → selection unique, no user interaction needed. b) More than one template matches the filter criteria → template picker is displayed to the user. This works only on a client call, not on the server. If the template picker is displayed, the user also has the option to cancel the action, which in turn ends in an OnCancel event.

4. Generation

The document creation itself is considered as a black box. In it, the various document functions attached to the selected template are applied and, if necessary, enriched with the data from the Connect call.

5. Execution of the document commands

After the actual document creation, commands (e.g. conversion to a PDF document) can be applied to the individual result. At the same time, the error and abort commands are executed at the document level.

6. Execution of the batch commands

After all individual document creations have been completed, commands can be applied to the entire batch again – e.g. the Merge command. At this point, error and abort commands are also executed from the cumulative results of the document commands. At the very end, if so requested by the Connect call, the ConnectorResult file is created. In case of a web call to the server, the created document is now returned as a stream.

...

ConnectResult

The ConnectResult can take the following values:

  • Success No errors occurred.

  • Cancel The user has canceled the process (or the previous one).

  • Error At least one error has occurred.

  • Unknown The status at this time is unknown. This occurs when the template picker was started (which is executed asynchronously).

Order/Prioritization: Unknown, Error, Cancel, Success If a process relevant to the result returns Unknown, then the result is also Unknown, regardless of whether another process was aborted or failed. The same applies to Error and Cancel. Success is only returned if everything was successful.

Example: Document generation: Success and: Commands Error gives an overall result of Error, even though the document generation itself was successful.

The ConnectResult has the following format:

Code Block
breakoutModewide
languagexml
<?xml version="1.0" encoding="utf-16"?>
<OneOffixxConnectResult xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <InputFile>
    <!-- Path Pfadto the zuminput Input-Filefile -->
  </InputFile>
  <Result>
    <!-- Success, Error, Cancel oderor Unknown -->
  </Result>
  <Message>
    <!-- Fehlermeldung im Fehlerfall bzw. das gleiche wie im Resultat (aus Kompatibilitätsgründen Error message in case of error or the same as in the result (for compatibility reasons) -->
  </Message>
  <!-- Im Messages-Tag werden sowohl Fehler als auch Warnungen und Informationen detailliert ausgegebenIn the messages tag, errors as well as warnings and information are output in detail. -->
  <Messages>
    <!-- There Prois Meldungone existiertLogMessage eineper LogMessagemessage. AttributeAttributes:
          Type: Error, Warning, Information
          Context: BeschreibtDescribes denthe interneninternal Contextcontext, z.&#160;Be.g. einea document Dokumentfunktionfunction, in welchemwhich derthe Fehlererror aufgetreten istoccurred.
          InternalMessage: Internal error Internemessage Fehlermeldungor bzw.error Fehlercodecode
          TimeOfOccurence: ZeitpunktTime of desthe Fehlerserror
         -->
    <LogMessage Type="Error" Context="N/A" InternalMessage="Unexpected Error" TimeOfOccurence="2019-10-04T17:18:47.9109335+02:00">
      <Message>
        <!-- LesbareReadable error Fehlermeldungmessage -->
      </Message>
      <Exception>
        <!-- Technical Technischeerror Fehlermeldungmessage -->
      </Exception>
    </LogMessage>
  </Messages>
  <!-- ImIn the asynchronenasynchronous Fallcase (TemplatePicker), 0-basierter Index des Batch-Entrybased index of the batch entry -->
  <EntryIndex>0</EntryIndex>
</OneOffixxConnectResult>

...