ki import modell verbessert

This commit is contained in:
Ralph Soika 2026-08-22 10:11:46 +02:00
parent 97a6e86a11
commit de1ab57b76
6 changed files with 1745 additions and 1934 deletions

View file

@ -8,10 +8,21 @@
Neue Modelle:
- Posteingang
- posteingang-de-3.0
- posteingang-en-3.0
- Brazil
- rechnungseingang-br-1.0.0.bpmn
- AMS
- rechnungseingang-ams-1.1.0.bpmn
### MIGRATION
1. Neues Posteingangs modell einspielen
2. Prozess Front-Desk in "Global Inbox" umbeneennen
3. Text Baustein anlegen (aus AGL BR)
4. Document Import Konfiguration für IMAP auf neuen Posteingang 3.0 Ändern!
## 1.3.6 (Development)
**KSeF Produktiname II.**

204
doc/backup/README.md Normal file
View file

@ -0,0 +1,204 @@
# Eigenes Backup-System (Backup-Mirror)
## Architektur, Einrichtung und Disaster-Recovery-Konzept
---
## 1. Idee und Architektur
### 1.1 Ausgangslage
Imixs-Office-Workflow wird von uns als eine transaktionale, hochverfügbare
Geschäftsprozessmanagement-Suite betrieben. Die Basis ist ein Open Source Kernel,
der frei zugänglich ist ([https://github.com/imixs/](https://github.com/imixs/)).
Unabhängig vom gewählten Betriebsmodell (SaaS, Public Cloud, Private Cloud, On
Premise) sind und bleiben Sie Eigentümer Ihrer Geschäftsdaten. Über den
Backup-Service haben Sie die Möglichkeit, jederzeit eigenständig auf eine
vollständige Kopie Ihrer Daten zuzugreifen unabhängig davon, wie und wo Ihre
Instanz aktuell betrieben wird.
### 1.2 Architektur Own your Data
Auch wenn wir den Betrieb Ihrer Instanz übernehmen, bedeutet das nicht, dass Sie
von uns abhängig sind. Über den Backup-Mirror betreiben Sie bei sich einen eigenen,
unabhängigen Backup-Dienst. Dieser Dienst wird von Ihnen selbst eingerichtet,
verwaltet und überwacht und läuft vollständig autark wir müssen ihn technisch
weder kennen noch verwalten. Dadurch gilt:
> **Sie verfügen über eine eigenständige, vollständige Kopie Ihrer
> Geschäftsdaten unabhängig von unserer Infrastruktur. Mit dieser Kopie kann
> Ihr System bei Bedarf komplett neu aufgebaut werden.**
Das ist ein bewusst einfaches und robustes Prinzip: Es kommt nicht darauf an, *wo*
Ihre Daten zusätzlich liegen, sondern *wer* die Kontrolle über diesen zusätzlichen
Sicherungsort hat. Nur wenn diese Kontrolle bei Ihnen liegt, sind Sie wirklich
unabhängig.
### 1.3 Wie es funktioniert
Technisch basiert das Konzept auf dem Open-Source-Projekt
[Imixs-Archive](https://github.com/imixs/imixs-archive), konkret auf dem Baustein
*Imixs-Archive-Backup*. Der Ablauf im Überblick:
1. Bei jeder Änderung an einem Geschäftsvorgang erzeugt Ihre Workflow-Instanz
automatisch einen unveränderlichen Snapshot (eine vollständige Kopie des
Vorgangs inkl. aller angehängten Dokumente).
2. Diese Snapshots werden über die REST-Schnittstelle Ihrer Workflow-Instanz
bereitgestellt.
3. Ein bei Ihnen installierter Backup-Dienst (siehe Abschnitt 2) ruft diese
Snapshots eigenständig ab und speichert sie auf einem Speicherort Ihrer Wahl
(z. B. eigener FTP-/Storage-Server).
Wichtig: Die Verbindung erfolgt **von Ihrem System zu unserer Workflow-Instanz**
(„Pull-Prinzip"). Sie benötigen dafür lediglich einen Netzwerkzugriff auf die
REST-Schnittstelle Ihrer Instanz wir müssen keinen Zugriff auf Ihre Infrastruktur
haben und erhalten auch keinen.
---
## 2. Technische Einrichtung
Der Backup-Dienst kann als Docker-Container in unterschiedlichen Umgebungen betrieben werden:
- **Local**: lokal über Docker oder Docker Compose,
- **Private Cloud**: in einer Private Cloud (z.b. Kubernetes, OpenShift)
- **Public Cloud**: in einer Public Cloud Umgebung (z.b. AWS, Microsoft Azure)
### 2.1 Voraussetzungen
- Eine eigene Server- bzw. Container-Umgebung (Docker) auf Ihrer Seite
- Ein eigener Speicherort für die Backup-Daten (z. B. FTP-Storage, NAS mit
FTP-Anbindung)
- Eine sogenannte **Mirror-ID**, die wir Ihnen bereitstellen
### 2.2 Mirror-ID anfragen
Die Mirror-ID ist eine organisatorische Kennung, mit der wir Ihre eigene
Backup-Verbindung für Ihre Instanz freischalten. Sie ist kein Sicherheitsmerkmal im
engeren Sinn, sondern eine Vereinbarung zwischen uns: *„Kunde X betreibt ein eigenes
Backup."* Bitte fordern Sie diese ID formlos bei uns an.
### 2.3 Backup-Nutzer in Ihrer eigenen Instanz anlegen
Ein zentraler Punkt für die Autarkie des Systems: **Sie legen den technischen
Benutzer für den Backup-Zugriff selbst in Ihrer Imixs-Instanz an.** Dieser Nutzer
gehört ausschließlich Ihnen wir kennen weder das Passwort noch verwalten wir
dieses Konto. Vergeben Sie dem Nutzer ausreichende Leserechte, damit er alle
relevanten Vorgänge und Dokumente sichern kann.
### 2.4 Docker-Compose Beispielkonfiguration
Das folgende Beispiel zeigt eine Docker Compose Konfiguraiton für den Betrieb des Backup-Dienstes:
```yaml
version: "3.6"
services:
backup:
image: imixs/imixs-archive-backup:latest
environment:
TZ: "Europe/Berlin"
WORKFLOW_SERVICE_ENDPOINT: "https://<ihre-instanz>.office-workflow.de/api/"
WORKFLOW_SERVICE_USER: "<ihr-backup-nutzer>"
WORKFLOW_SERVICE_PASSWORD: "<ihr-passwort>"
WORKFLOW_SERVICE_AUTHMETHOD: "form"
BACKUP_FTP_HOST: "<ihr-storage-host>"
BACKUP_FTP_PATH: "<ihr-zielverzeichnis>"
BACKUP_FTP_PORT: "21"
BACKUP_FTP_USER: "<ihr-ftp-nutzer>"
BACKUP_FTP_PASSWORD: "<ihr-ftp-passwort>"
BACKUP_MIRROR_ID: "<ihre-mirror-id>"
ports:
- "8084:8080"
- "9990:9990"
```
**Erläuterung der wichtigsten Parameter:**
| Parameter | Bedeutung |
|---|---|
| `WORKFLOW_SERVICE_ENDPOINT` | Die REST-API-Adresse Ihrer bei uns gehosteten Workflow-Instanz |
| `WORKFLOW_SERVICE_USER/PASSWORD` | Der von Ihnen selbst angelegte Backup-Nutzer |
| `BACKUP_FTP_*` | Ihr eigener Speicherort für die Backup-Daten |
| `BACKUP_MIRROR_ID` | Die von uns bereitgestellte Freischalt-ID |
Nach dem Start prüft der Dienst regelmäßig auf neue zu sichernde Vorgänge und
überträgt diese automatisch auf Ihren Speicherort.
### 2.5 Monitoring des eigenen Backup-Dienstes
Da der Dienst vollständig in Ihrer Verantwortung läuft, sollten Sie ihn aktiv
überwachen. Ein einfacher Ping-Check zeigt zwar, dass der Container erreichbar
ist sagt aber nichts darüber aus, ob der Dienst tatsächlich funktionsfähig ist
und Backups erfolgreich durchführt.
Der Imixs-Archive-Backup-Service stellt hierfür standardisierte **MicroProfile-Endpunkte** mit, die auf Port `9990`
bereitgestellt werden:
| Endpunkt | Beschreibung |
|---|---|
| `/health` | Liefert den Health-Status des Dienstes nach dem MicroProfile-Health-Standard inklusive Readiness (ist der Dienst betriebsbereit, z. B. Verbindung zur Workflow-API und zum FTP-Storage vorhanden?) und Liveness (läuft der Prozess korrekt?) |
| `/metrics` | Liefert Betriebskennzahlen im MicroProfile-Metrics-Format (Prometheus-kompatibel), z. B. Anzahl verarbeiteter Backups, Fehlerzähler, Laufzeiten |
Damit lässt sich der Dienst professionell überwachen:
- **Health-Checks** binden Sie direkt in gängige Monitoring-Systeme ein (z. B.
Kubernetes Liveness-/Readiness-Probes, Uptime-Kuma, Nagios, Icinga) und erkennen
so nicht nur einen abgestürzten Container, sondern auch einen Dienst, der zwar
läuft, aber z. B. keine Verbindung mehr zu Ihrer Workflow-Instanz oder zum
FTP-Ziel herstellen kann.
- **Metrics** lassen sich direkt von Prometheus abgegriffen und in Grafana
visualisiert werden so erkennen Sie auf einen Blick, ob regelmäßig Backups
durchgeführt werden, oder ob z. B. die Fehlerrate ansteigt.
**Voraussetzung:** Sie müssen Port `9990` in Ihrer Docker-Umgebung entsprechend
freigeben bzw. mappen, damit Ihr Monitoring-System auf die Endpunkte zugreifen kann
(siehe Port-Mapping im Beispiel aus Abschnitt 2.4).
Ein Backup, das unbemerkt seit Wochen nicht mehr funktioniert, bietet keinen Schutz.
Die Überwachung über Health- und Metrics-Endpunkte ist daher ein integraler
Bestandteil des Konzepts, nicht optional.
---
## 3. Notfall- und Wiederherstellungsfall (Disaster Recovery)
Im Falle eines Disaster-Recovery-Prozesses stellen Sie uns Ihr Backup zur Verfügung, damit Ihr System auf dessen Basis wiederhergestellt werden kann. Dieser Abschnitt beschreibt das Vorgehen nur in Stichpunkten.
Die vollständige technische Dokumentation der
Imixs-Workflow-Architektur ist Open Source und öffentlich einsehbar unter
[github.com/imixs](https://github.com/imixs).
**Grundprinzip der Wiederherstellung:**
- Ihre gesicherten Snapshot-Daten liegen vollständig und unverändert in Ihrem
eigenen Speicher (FTP/Storage) vor.
- Diese Daten liegen in einem offenen, plattformunabhängigen XML-Format vor und
sind nicht an unsere konkrete Infrastruktur gebunden.
- Auf Basis dieser Daten kann eine neue Imixs-Workflow-Instanz (bei Ihnen oder bei
einem anderen Dienstleister) aufgesetzt werden.
- Über die Restore-Funktion der Imixs-Archive-Komponenten werden die Snapshots in
die neue Instanz zurückgespielt jeder Geschäftsvorgang wird dabei inklusive
seiner Historie und aller Dokumente wiederhergestellt.
**Wichtige Stichpunkte für den Ernstfall:**
- Backup-Daten sind vollständig bei Ihnen vorhanden → keine Abhängigkeit von uns
- Wiederherstellung erfordert eine lauffähige Imixs-Workflow-Umgebung (Open Source,
frei verfügbar)
- Die technische Vorgehensweise zum Restore ist Teil der öffentlichen
Imixs-Archive-Dokumentation
- Wir unterstützen Sie im Ernstfall selbstverständlich gerne beim Wiederaufbau
diese Unterstützung ist jedoch **keine Voraussetzung**, da die Daten und das
Wiederherstellungsverfahren vollständig unabhängig von uns nutzbar sind
---
## 4. Zusammenfassung
Mit dem Backup-Mirror bleiben Sie jederzeit Eigentümer Ihrer Geschäftsdaten unabhängig
davon, wie und wo Ihre Instanz betrieben wird. Sie richten den Dienst selbst ein, verwalten
ihn eigenständig und behalten so die volle Kontrolle über Ihre zusätzliche Datenkopie. Genau
diese Unabhängigkeit ist es, die Ihnen im Bedarfsfall den vollständigen Wiederaufbau Ihres
Systems ermöglicht.
Bei Fragen zur Einrichtung oder zur Anforderung Ihrer Mirror-ID kontaktieren Sie uns
gerne.

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

View file

@ -39,12 +39,12 @@
<bpmn2:signal id="Signal_1" name="org.imixs.archive.documents.OCRDocumentAdapter"/>
<bpmn2:signal id="Signal_2" name="org.imixs.ml.workflow.MLAdapter"/>
<bpmn2:collaboration id="Collaboration_1" name="Default Collaboration">
<bpmn2:participant id="Participant_1" name="Inbox" processRef="Process_1">
<bpmn2:participant id="Participant_1" name="Document Import" processRef="Process_1">
<bpmn2:documentation id="documentation_m9vQ5g"/>
</bpmn2:participant>
<bpmn2:participant id="participant_GUMWGQ" name="Default Process" processRef="process_2"/>
</bpmn2:collaboration>
<bpmn2:process definitionalCollaborationRef="Collaboration_1" id="Process_1" isExecutable="false" name="Inbox" processType="Private">
<bpmn2:process definitionalCollaborationRef="Collaboration_1" id="Process_1" isExecutable="false" name="Document Import" processType="Private">
<bpmn2:laneSet id="LaneSet_1" name="Lane Set 1">
<bpmn2:lane id="Lane_2" name="Team">
<bpmn2:flowNodeRef>BoundaryEvent_1</bpmn2:flowNodeRef>
@ -83,7 +83,7 @@
<bpmn2:flowNodeRef>event_Xk1mPA</bpmn2:flowNodeRef>
<bpmn2:flowNodeRef>event_a1P5WQ</bpmn2:flowNodeRef>
<bpmn2:flowNodeRef>dataObject_UIvZkA</bpmn2:flowNodeRef>
<bpmn2:flowNodeRef>dataObject_BbVs7w</bpmn2:flowNodeRef>
<bpmn2:flowNodeRef>task_0ossfw</bpmn2:flowNodeRef>
</bpmn2:lane>
</bpmn2:laneSet>
<bpmn2:intermediateCatchEvent id="IntermediateCatchEvent_2" imixs:activityid="10" name="Start">
@ -135,7 +135,7 @@ Betrag: <itemvalue>_amount</itemvalue> (Brutto € <itemvalue>_amount_brutto</it
</imixs:item>
<imixs:item name="txtactivityresult" type="xs:string">
<imixs:value><![CDATA[<item name="action">home</item>
<item name="process">Front Desk</item>
<item name="process">Global Inbox</item>
]]></imixs:value>
</imixs:item>
<imixs:item name="txtname" type="xs:string">
@ -145,21 +145,21 @@ Betrag: <itemvalue>_amount</itemvalue> (Brutto € <itemvalue>_amount_brutto</it
<imixs:value><![CDATA[0]]></imixs:value>
</imixs:item>
<imixs:item name="rtfresultlog" type="xs:string">
<imixs:value><![CDATA[Rechnungseingang]]></imixs:value>
<imixs:value><![CDATA[Document imported]]></imixs:value>
</imixs:item>
<imixs:item name="keyupdateacl" type="xs:boolean">
<imixs:value>false</imixs:value>
</imixs:item>
</bpmn2:extensionElements>
<bpmn2:documentation id="Documentation_6"><![CDATA[Digitalisierung einer neuen Eingangsrechnung]]></bpmn2:documentation>
<bpmn2:incoming>sequenceFlow_fRPOrw</bpmn2:incoming>
<bpmn2:incoming>sequenceFlow_ShggfA</bpmn2:incoming>
<bpmn2:outgoing>sequenceFlow_4gpPgw</bpmn2:outgoing>
</bpmn2:intermediateCatchEvent>
<bpmn2:startEvent id="StartEvent_1" name="Start">
<bpmn2:documentation id="documentation_MhefQQ"/>
<bpmn2:outgoing>sequenceFlow_fRPOrw</bpmn2:outgoing>
</bpmn2:startEvent>
<bpmn2:task id="Task_2" imixs:processid="100" name="Import">
<bpmn2:task id="Task_2" imixs:processid="110" name="Anaylse Document">
<bpmn2:extensionElements>
<imixs:item name="txteditorid" type="xs:string">
<imixs:value><![CDATA[form_basic]]></imixs:value>
@ -185,6 +185,7 @@ Betrag: <itemvalue>_amount</itemvalue> (Brutto € <itemvalue>_amount_brutto</it
<bpmn2:documentation id="Documentation_13"><![CDATA[<textblock><itemvalue>$workflowgroup</itemvalue> - <itemvalue>$workflowstatus</itemvalue></textblock>]]></bpmn2:documentation>
<bpmn2:incoming>sequenceFlow_4gpPgw</bpmn2:incoming>
<bpmn2:outgoing>sequenceFlow_CbkmwA</bpmn2:outgoing>
<bpmn2:incoming>association_w5HwVg</bpmn2:incoming>
</bpmn2:task>
<bpmn2:intermediateCatchEvent id="IntermediateCatchEvent_3" imixs:activityid="20" name="OCR">
<bpmn2:extensionElements>
@ -314,9 +315,6 @@ Betrag: <itemvalue>_amount</itemvalue> (Brutto € <itemvalue>_amount_brutto</it
<bpmn2:incoming>SequenceFlow_12</bpmn2:incoming>
<bpmn2:documentation id="documentation_gepcjg"/>
</bpmn2:endEvent>
<bpmn2:sequenceFlow id="SequenceFlow_12" sourceRef="Task_4" targetRef="EndEvent_1">
<bpmn2:documentation id="documentation_pphZ2A"/>
</bpmn2:sequenceFlow>
<bpmn2:boundaryEvent attachedToRef="Task_2" id="BoundaryEvent_1" name="">
<bpmn2:outgoing>SequenceFlow_2</bpmn2:outgoing>
<bpmn2:timerEventDefinition id="TimerEventDefinition_1">
@ -363,13 +361,7 @@ Betrag: <itemvalue>_amount</itemvalue> (Brutto € <itemvalue>_amount_brutto</it
Assign invoice to process 'Front Desk']]></bpmn2:text>
<bpmn2:documentation id="documentation_vNKNMA"/>
</bpmn2:textAnnotation>
<bpmn2:sequenceFlow id="sequenceFlow_fRPOrw" sourceRef="StartEvent_1" targetRef="IntermediateCatchEvent_2">
<bpmn2:documentation id="documentation_0j4j6g"/>
</bpmn2:sequenceFlow>
<bpmn2:sequenceFlow id="sequenceFlow_4gpPgw" sourceRef="IntermediateCatchEvent_2" targetRef="Task_2">
<bpmn2:documentation id="documentation_AbaSMw"/>
</bpmn2:sequenceFlow>
<bpmn2:association id="association_hnK1FQ" sourceRef="dataObject_FS1r0Q" targetRef="Task_2">
<bpmn2:association id="association_hnK1FQ" sourceRef="dataObject_FS1r0Q" targetRef="task_0ossfw">
<bpmn2:documentation id="documentation_jpgiPw"/>
</bpmn2:association>
<bpmn2:task id="task_PsBytg" imixs:processid="130" name="Analyse Summary">
@ -563,7 +555,7 @@ Note:
<bpmn2:association id="association_Xrb1Cg" sourceRef="event_yQLmNA" targetRef="dataObject_HHM58Q">
<bpmn2:documentation id="documentation_8W4nQw"/>
</bpmn2:association>
<bpmn2:intermediateCatchEvent id="event_xOeBKg" imixs:activityid="103" name="Start Invoicing">
<bpmn2:intermediateCatchEvent id="event_xOeBKg" imixs:activityid="103" name="Analysis completed">
<bpmn2:extensionElements>
<imixs:item name="keylogtimeformat" type="xs:string">
<imixs:value><![CDATA[2]]></imixs:value>
@ -621,7 +613,7 @@ Note:
<imixs:value><![CDATA[0]]></imixs:value>
</imixs:item>
<imixs:item name="rtfresultlog" type="xs:string">
<imixs:value><![CDATA[Starte Rechnungseingang]]></imixs:value>
<imixs:value><![CDATA[Document analysis completed.]]></imixs:value>
</imixs:item>
<imixs:item name="keyupdateacl" type="xs:boolean">
<imixs:value>false</imixs:value>
@ -1109,13 +1101,6 @@ first one that appears in the document. Do not add any comments or explanation a
<bpmn2:incoming>sequenceFlow_d0zSHA</bpmn2:incoming>
<bpmn2:errorEventDefinition id="errorEventDefinition_oTILNw"/>
</bpmn2:intermediateCatchEvent>
<bpmn2:sequenceFlow id="sequenceFlow_tcjWAA" name="PROMPT Error" sourceRef="gateway_qDAhHw" targetRef="event_9mJrhQ">
<bpmn2:documentation id="documentation_jE0MLA"/>
<bpmn2:conditionExpression id="formalExpression_fidF0g" xsi:type="bpmn2:tFormalExpression"><![CDATA[''!=workitem.getItemValueString('adapter.error_code'); ]]></bpmn2:conditionExpression>
</bpmn2:sequenceFlow>
<bpmn2:sequenceFlow id="sequenceFlow_I8o4DA" sourceRef="gateway_qDAhHw" targetRef="task_PsBytg">
<bpmn2:documentation id="documentation_NJDLLQ"/>
</bpmn2:sequenceFlow>
<bpmn2:exclusiveGateway default="sequenceFlow_bh4DIw" gatewayDirection="Diverging" id="gateway_gd9zQQ" name="">
<bpmn2:documentation id="documentation_0rgWkA"/>
<bpmn2:outgoing>sequenceFlow_I8o4DA</bpmn2:outgoing>
@ -1123,7 +1108,7 @@ first one that appears in the document. Do not add any comments or explanation a
<bpmn2:outgoing>sequenceFlow_bh4DIw</bpmn2:outgoing>
<bpmn2:outgoing>sequenceFlow_d0zSHA</bpmn2:outgoing>
</bpmn2:exclusiveGateway>
<bpmn2:association id="association_w5HwVg" sourceRef="dataObject_UIvZkA" targetRef="task_0YaQ2w">
<bpmn2:association id="association_w5HwVg" sourceRef="dataObject_UIvZkA" targetRef="Task_2">
<bpmn2:documentation id="documentation_Z1YkeA"/>
</bpmn2:association>
<bpmn2:textAnnotation id="TextAnnotation_1">
@ -1156,39 +1141,21 @@ Possible ImageTypes are:
<bpmn2:outgoing>sequenceFlow_eccehA</bpmn2:outgoing>
<bpmn2:incoming>sequenceFlow_p0asUQ</bpmn2:incoming>
</bpmn2:exclusiveGateway>
<bpmn2:sequenceFlow id="sequenceFlow_3YcMGQ" sourceRef="event_Zxhr0w" targetRef="event_wmNwPA">
<bpmn2:documentation id="documentation_hoWA6g"/>
</bpmn2:sequenceFlow>
<bpmn2:sequenceFlow id="sequenceFlow_p0asUQ" sourceRef="event_wmNwPA" targetRef="gateway_MgL04w">
<bpmn2:documentation id="documentation_zd0qsw"/>
</bpmn2:sequenceFlow>
<bpmn2:sequenceFlow id="sequenceFlow_DdWK6A" sourceRef="task_0YaQ2w" targetRef="event_tFxV0w">
<bpmn2:documentation id="documentation_ypSiLQ"/>
</bpmn2:sequenceFlow>
<bpmn2:intermediateThrowEvent id="event_VEvZRQ" name="TIMEOUT">
<bpmn2:documentation id="documentation_xBrycw"/>
<bpmn2:linkEventDefinition id="linkEventDefinition_rtH39g"/>
<bpmn2:incoming>sequenceFlow_KKWo0w</bpmn2:incoming>
</bpmn2:intermediateThrowEvent>
<bpmn2:sequenceFlow id="sequenceFlow_KKWo0w" sourceRef="task_PsBytg" targetRef="event_VEvZRQ">
<bpmn2:documentation id="documentation_D6p3aA"/>
</bpmn2:sequenceFlow>
<bpmn2:intermediateThrowEvent id="event_Xk1mPA" name="TIMEOUT">
<bpmn2:documentation id="documentation_Ck9Khw"/>
<bpmn2:linkEventDefinition id="linkEventDefinition_nYz0NQ"/>
<bpmn2:incoming>sequenceFlow_ofQKHg</bpmn2:incoming>
</bpmn2:intermediateThrowEvent>
<bpmn2:sequenceFlow id="sequenceFlow_ofQKHg" sourceRef="task_uB6BGQ" targetRef="event_Xk1mPA">
<bpmn2:documentation id="documentation_O5Xb6g"/>
</bpmn2:sequenceFlow>
<bpmn2:intermediateThrowEvent id="event_a1P5WQ" name="TIMEOUT">
<bpmn2:documentation id="documentation_QVYmog"/>
<bpmn2:linkEventDefinition id="linkEventDefinition_K9M65g"/>
<bpmn2:incoming>sequenceFlow_CbkmwA</bpmn2:incoming>
</bpmn2:intermediateThrowEvent>
<bpmn2:sequenceFlow id="sequenceFlow_CbkmwA" sourceRef="Task_2" targetRef="event_a1P5WQ">
<bpmn2:documentation id="documentation_FDT0AA"/>
</bpmn2:sequenceFlow>
<bpmn2:dataObject id="dataObject_UIvZkA" imixs:datatype="form-data" name="Form">
<bpmn2:documentation id="documentation_bNoo3Q"><![CDATA[<?xml version="1.0"?>
<imixs-form>
@ -1217,71 +1184,104 @@ Possible ImageTypes are:
</imixs-form>]]></bpmn2:documentation>
<bpmn2:outgoing>association_w5HwVg</bpmn2:outgoing>
</bpmn2:dataObject>
<bpmn2:dataObject id="dataObject_BbVs7w" imixs:datatype="prompt-data" name="Prompt Extract">
<bpmn2:documentation id="documentation_X7T0uA"><![CDATA[<?xml version="1.0" encoding="UTF-8"?>
<PromptDefinition>
<prompt_options>{"n_predict": 4096, "temperature": 0 }</prompt_options>
<prompt role="system"><![CDATA[You are a clerk at the logistic company 'Alexander Global Logistics'. Your task is to check incoming invoices.
Transfer the invoice data into an XML object with the following structure:
<invoice>
<cdtr.name>...</cdtr.name>
<invoice.number>...</invoice.number>
<invoice.date type="date">2024-12-31</invoice.date>
<invoice.duedate type="date">2024-12-31</invoice.duedate>
<invoice.total type="double">1234.00</invoice.total>
<cdtr.iban>...</cdtr.iban>
<cdtr.bic>...</cdtr.bic>
<invoice.positions>...</invoice.positions>
</invoice>
Transfer the individual invoice data to the XML tags, taking into account the following suggestions for mapping:
- Company name ==> "cdtr.name" (the name of the company that issued the invoice document, not the recipient)
- Invoice number ==> "invoice.number"
- Invoice Date ==> "invoice.date"
- Total ==> "invoice.total" (in EUR or if not available in USD or PLN)
- IBAN ==> "cdtr.iban"
- BIC or SWIFT ==> "cdtr.bic"
- Payment date / Due date ==> "invoice.duedate"
- The Reference Number in the format [2 letters][3 letters][4-digit booking period YYMM][3-digit sequence number] ==> "invoice.positions"
Note: Output only the XML object! Don't add explanations or comments. Use only the XML structure specified in this example and do not create any other XML tags. If you don't have data for some fields, leave the corresponding XML tags blank. Format date values (type="date") into the ISO 8601 format (YYYY-MM-DD). Format numbers and amounts (type="double") according to ISO 4217.
<<EXAMPLES_XML>>
]]]]><![CDATA[></prompt>
<prompt role="user"><itemvalue>invoice.summary</itemvalue></prompt>
</PromptDefinition> ]]></bpmn2:documentation>
</bpmn2:dataObject>
<bpmn2:sequenceFlow id="sequenceFlow_naZnAA" sourceRef="event_pDFoXg" targetRef="gateway_qDAhHw">
<bpmn2:documentation id="documentation_8TapMg"/>
<bpmn2:association id="association_Uc6nuQ" sourceRef="task_PsBytg" targetRef="dataObject_UIvZkA">
<bpmn2:documentation id="documentation_bxoEjA"/>
</bpmn2:association>
<bpmn2:association id="association_ApEaCQ" sourceRef="task_uB6BGQ" targetRef="dataObject_UIvZkA">
<bpmn2:documentation id="documentation_WAiEfQ"/>
</bpmn2:association>
<bpmn2:sequenceFlow id="sequenceFlow_tcjWAA" name="PROMPT Error" sourceRef="gateway_qDAhHw" targetRef="event_9mJrhQ">
<bpmn2:documentation id="documentation_jE0MLA"/>
<bpmn2:conditionExpression id="formalExpression_fidF0g" xsi:type="bpmn2:tFormalExpression"><![CDATA[''!=workitem.getItemValueString('adapter.error_code'); ]]></bpmn2:conditionExpression>
</bpmn2:sequenceFlow>
<bpmn2:sequenceFlow id="sequenceFlow_PgyOMw" sourceRef="event_88sCAA" targetRef="event_pDFoXg">
<bpmn2:documentation id="documentation_8vVNCA"/>
<bpmn2:sequenceFlow id="sequenceFlow_I8o4DA" sourceRef="gateway_qDAhHw" targetRef="task_PsBytg">
<bpmn2:documentation id="documentation_NJDLLQ"/>
</bpmn2:sequenceFlow>
<bpmn2:sequenceFlow id="sequenceFlow_d0zSHA" name="DOCUMENT Error" sourceRef="gateway_gd9zQQ" targetRef="event_9mJrhQ">
<bpmn2:documentation id="documentation_AJkXtg"/>
<bpmn2:conditionExpression id="formalExpression_WutmBw" xsi:type="bpmn2:tFormalExpression"><![CDATA[''!=workitem.getItemValueString('adapter.error_code'); ]]></bpmn2:conditionExpression>
</bpmn2:sequenceFlow>
<bpmn2:sequenceFlow id="sequenceFlow_bh4DIw" sourceRef="gateway_gd9zQQ" targetRef="task_uB6BGQ">
<bpmn2:documentation id="documentation_0EzFwA"/>
<bpmn2:sequenceFlow id="sequenceFlow_naZnAA" sourceRef="event_pDFoXg" targetRef="gateway_qDAhHw">
<bpmn2:documentation id="documentation_8TapMg"/>
</bpmn2:sequenceFlow>
<bpmn2:sequenceFlow id="sequenceFlow_3YcMGQ" sourceRef="event_Zxhr0w" targetRef="event_wmNwPA">
<bpmn2:documentation id="documentation_hoWA6g"/>
</bpmn2:sequenceFlow>
<bpmn2:sequenceFlow id="SequenceFlow_12" sourceRef="Task_4" targetRef="EndEvent_1">
<bpmn2:documentation id="documentation_pphZ2A"/>
</bpmn2:sequenceFlow>
<bpmn2:sequenceFlow id="sequenceFlow_A62nqQ" sourceRef="event_4DNGzg" targetRef="task_0YaQ2w">
<bpmn2:documentation id="documentation_IIBe3g"/>
</bpmn2:sequenceFlow>
<bpmn2:sequenceFlow id="sequenceFlow_VlPVJg" sourceRef="IntermediateCatchEvent_3" targetRef="gateway_gd9zQQ">
<bpmn2:documentation id="documentation_mCzUDA"/>
</bpmn2:sequenceFlow>
<bpmn2:task id="task_0ossfw" imixs:processid="100" name="Import">
<bpmn2:extensionElements>
<imixs:item name="txteditorid" type="xs:string">
<imixs:value><![CDATA[form_basic]]></imixs:value>
</imixs:item>
<imixs:item name="txtname" type="xs:string">
<imixs:value><![CDATA[Rechnung erhalten]]></imixs:value>
</imixs:item>
<imixs:item name="txtimageurl" type="xs:string">
<imixs:value><![CDATA[typcn-printer]]></imixs:value>
</imixs:item>
<imixs:item name="txtworkflowsummary" type="xs:string">
<imixs:value><![CDATA[Analysis....]]></imixs:value>
</imixs:item>
<imixs:item name="keyupdateacl" type="xs:boolean">
<imixs:value>true</imixs:value>
</imixs:item>
<imixs:item name="keyownershipfields" type="xs:string"/>
<imixs:item name="keyaddwritefields" type="xs:string"/>
<imixs:item name="txttype" type="xs:string">
<imixs:value><![CDATA[workitem]]></imixs:value>
</imixs:item>
</bpmn2:extensionElements>
<bpmn2:documentation id="Documentation_13"><![CDATA[<textblock><itemvalue>$workflowgroup</itemvalue> - <itemvalue>$workflowstatus</itemvalue></textblock>]]></bpmn2:documentation>
<bpmn2:incoming>sequenceFlow_fRPOrw</bpmn2:incoming>
<bpmn2:outgoing>sequenceFlow_ShggfA</bpmn2:outgoing>
<bpmn2:incoming>association_hnK1FQ</bpmn2:incoming>
</bpmn2:task>
<bpmn2:sequenceFlow id="sequenceFlow_fRPOrw" sourceRef="StartEvent_1" targetRef="task_0ossfw">
<bpmn2:documentation id="documentation_0j4j6g"/>
</bpmn2:sequenceFlow>
<bpmn2:sequenceFlow id="sequenceFlow_ShggfA" sourceRef="task_0ossfw" targetRef="IntermediateCatchEvent_2">
<bpmn2:documentation id="documentation_lRzkXA"/>
</bpmn2:sequenceFlow>
<bpmn2:sequenceFlow id="sequenceFlow_4gpPgw" sourceRef="IntermediateCatchEvent_2" targetRef="Task_2">
<bpmn2:documentation id="documentation_AbaSMw"/>
</bpmn2:sequenceFlow>
<bpmn2:sequenceFlow id="sequenceFlow_KKWo0w" sourceRef="task_PsBytg" targetRef="event_VEvZRQ">
<bpmn2:documentation id="documentation_D6p3aA"/>
</bpmn2:sequenceFlow>
<bpmn2:sequenceFlow id="sequenceFlow_DdWK6A" sourceRef="task_0YaQ2w" targetRef="event_tFxV0w">
<bpmn2:documentation id="documentation_ypSiLQ"/>
</bpmn2:sequenceFlow>
<bpmn2:sequenceFlow id="sequenceFlow_PgyOMw" sourceRef="event_88sCAA" targetRef="event_pDFoXg">
<bpmn2:documentation id="documentation_8vVNCA"/>
</bpmn2:sequenceFlow>
<bpmn2:sequenceFlow id="sequenceFlow_bh4DIw" sourceRef="gateway_gd9zQQ" targetRef="task_uB6BGQ">
<bpmn2:documentation id="documentation_0EzFwA"/>
</bpmn2:sequenceFlow>
<bpmn2:sequenceFlow id="sequenceFlow_Di4BQA" sourceRef="event_T901Jg" targetRef="event_4DNGzg">
<bpmn2:documentation id="documentation_SYe0IA"/>
</bpmn2:sequenceFlow>
<bpmn2:sequenceFlow id="sequenceFlow_ofQKHg" sourceRef="task_uB6BGQ" targetRef="event_Xk1mPA">
<bpmn2:documentation id="documentation_O5Xb6g"/>
</bpmn2:sequenceFlow>
<bpmn2:sequenceFlow id="sequenceFlow_CbkmwA" sourceRef="Task_2" targetRef="event_a1P5WQ">
<bpmn2:documentation id="documentation_FDT0AA"/>
</bpmn2:sequenceFlow>
<bpmn2:sequenceFlow id="SequenceFlow_2" sourceRef="BoundaryEvent_1" targetRef="IntermediateCatchEvent_3">
<bpmn2:documentation id="documentation_yRaNRg"/>
</bpmn2:sequenceFlow>
<bpmn2:sequenceFlow id="sequenceFlow_VlPVJg" sourceRef="IntermediateCatchEvent_3" targetRef="gateway_gd9zQQ">
<bpmn2:documentation id="documentation_mCzUDA"/>
<bpmn2:association id="association_gxPFSg" sourceRef="dataObject_UIvZkA" targetRef="task_0YaQ2w">
<bpmn2:documentation id="documentation_JX90Qg"/>
</bpmn2:association>
<bpmn2:sequenceFlow id="sequenceFlow_p0asUQ" sourceRef="event_wmNwPA" targetRef="gateway_MgL04w">
<bpmn2:documentation id="documentation_zd0qsw"/>
</bpmn2:sequenceFlow>
<bpmn2:sequenceFlow id="sequenceFlow_YMtfiw" sourceRef="event_yQLmNA" targetRef="gateway_MgL04w">
<bpmn2:documentation id="documentation_t74new"/>
@ -1292,18 +1292,12 @@ Note: Output only the XML object! Don't add explanations or comments. Use only t
<bpmn2:sequenceFlow id="sequenceFlow_gXJm0w" sourceRef="event_xOeBKg" targetRef="Task_4">
<bpmn2:documentation id="documentation_9d0URg"/>
</bpmn2:sequenceFlow>
<bpmn2:sequenceFlow id="sequenceFlow_gpPDLg" sourceRef="event_9mJrhQ" targetRef="event_xOeBKg">
<bpmn2:documentation id="documentation_ykXPyg"/>
</bpmn2:sequenceFlow>
<bpmn2:sequenceFlow id="sequenceFlow_eccehA" sourceRef="gateway_MgL04w" targetRef="event_xOeBKg">
<bpmn2:documentation id="documentation_0XAjOQ"/>
</bpmn2:sequenceFlow>
<bpmn2:association id="association_Uc6nuQ" sourceRef="task_PsBytg" targetRef="dataObject_UIvZkA">
<bpmn2:documentation id="documentation_bxoEjA"/>
</bpmn2:association>
<bpmn2:association id="association_ApEaCQ" sourceRef="task_uB6BGQ" targetRef="dataObject_UIvZkA">
<bpmn2:documentation id="documentation_WAiEfQ"/>
</bpmn2:association>
<bpmn2:sequenceFlow id="sequenceFlow_gpPDLg" sourceRef="event_9mJrhQ" targetRef="event_xOeBKg">
<bpmn2:documentation id="documentation_ykXPyg"/>
</bpmn2:sequenceFlow>
</bpmn2:process>
<bpmn2:process id="process_2" name="Imixs AI" processType="Public">
<bpmn2:documentation id="documentation_dDLFbw"/>
@ -1315,10 +1309,10 @@ Note: Output only the XML object! Don't add explanations or comments. Use only t
<bpmndi:BPMNDiagram id="BPMNDiagram_1" name="Default Collaboration Diagram">
<bpmndi:BPMNPlane bpmnElement="Collaboration_1" id="BPMNPlane_1">
<bpmndi:BPMNShape bpmnElement="Participant_1" id="BPMNShape_1" isHorizontal="true">
<dc:Bounds height="970.0" width="2220.0" x="100.0" y="100.0"/>
<dc:Bounds height="970.0" width="2510.0" x="100.0" y="100.0"/>
</bpmndi:BPMNShape>
<bpmndi:BPMNShape bpmnElement="Lane_2" id="BPMNShape_Lane_2" isHorizontal="true">
<dc:Bounds height="970.0" width="2190.0" x="130.0" y="100.0"/>
<dc:Bounds height="970.0" width="2480.0" x="130.0" y="100.0"/>
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="BPMNShape_Task_7">
<dc:Bounds height="50.0" width="110.0" x="0.0" y="0.0"/>
@ -1327,9 +1321,9 @@ Note: Output only the XML object! Don't add explanations or comments. Use only t
</bpmndi:BPMNLabel>
</bpmndi:BPMNShape>
<bpmndi:BPMNShape bpmnElement="IntermediateCatchEvent_2" id="BPMNShape_IntermediateCatchEvent_2">
<dc:Bounds height="36.0" width="36.0" x="297.0" y="527.0"/>
<dc:Bounds height="36.0" width="36.0" x="477.0" y="527.0"/>
<bpmndi:BPMNLabel id="BPMNLabel_5" labelStyle="BPMNLabelStyle_1">
<dc:Bounds height="20.0" width="100.0" x="272.0" y="569.0"/>
<dc:Bounds height="20.0" width="100.0" x="452.0" y="569.0"/>
</bpmndi:BPMNLabel>
</bpmndi:BPMNShape>
<bpmndi:BPMNShape bpmnElement="StartEvent_1" id="BPMNShape_StartEvent_1">
@ -1339,335 +1333,343 @@ Note: Output only the XML object! Don't add explanations or comments. Use only t
</bpmndi:BPMNLabel>
</bpmndi:BPMNShape>
<bpmndi:BPMNShape bpmnElement="Task_2" id="BPMNShape_Task_2">
<dc:Bounds height="50.0" width="110.0" x="390.0" y="520.0"/>
<dc:Bounds height="50.0" width="110.0" x="560.0" y="520.0"/>
</bpmndi:BPMNShape>
<bpmndi:BPMNShape bpmnElement="IntermediateCatchEvent_3" id="BPMNShape_IntermediateCatchEvent_3">
<dc:Bounds height="36.0" width="36.0" x="547.0" y="527.0"/>
<dc:Bounds height="36.0" width="36.0" x="727.0" y="527.0"/>
<bpmndi:BPMNLabel id="BPMNLabel_14" labelStyle="BPMNLabelStyle_1">
<dc:Bounds height="20.0" width="100.0" x="518.5" y="566.0"/>
<dc:Bounds height="20.0" width="100.0" x="698.5" y="566.0"/>
</bpmndi:BPMNLabel>
</bpmndi:BPMNShape>
<bpmndi:BPMNShape bpmnElement="Task_4" id="BPMNShape_Task_4">
<dc:Bounds height="50.0" width="110.0" x="1920.0" y="520.0"/>
<dc:Bounds height="50.0" width="110.0" x="2110.0" y="520.0"/>
</bpmndi:BPMNShape>
<bpmndi:BPMNShape bpmnElement="EndEvent_1" id="BPMNShape_EndEvent_1">
<dc:Bounds height="36.0" width="36.0" x="2117.0" y="527.0"/>
<dc:Bounds height="36.0" width="36.0" x="2297.0" y="527.0"/>
<bpmndi:BPMNLabel id="BPMNLabel_26" labelStyle="BPMNLabelStyle_1">
<dc:Bounds height="20.0" width="100.0" x="2086.0" y="569.0"/>
<dc:Bounds height="20.0" width="100.0" x="2266.0" y="569.0"/>
</bpmndi:BPMNLabel>
</bpmndi:BPMNShape>
<bpmndi:BPMNShape bpmnElement="BoundaryEvent_1" id="BPMNShape_BoundaryEvent_1">
<dc:Bounds height="36.0" width="36.0" x="477.0" y="527.0"/>
<dc:Bounds height="36.0" width="36.0" x="647.0" y="527.0"/>
<bpmndi:BPMNLabel id="BPMNLabel_11" labelStyle="BPMNLabelStyle_1">
<dc:Bounds height="20.0" width="100.0" x="445.0" y="566.0"/>
<dc:Bounds height="20.0" width="100.0" x="615.0" y="566.0"/>
</bpmndi:BPMNLabel>
</bpmndi:BPMNShape>
<bpmndi:BPMNShape bpmnElement="TextAnnotation_1" id="BPMNShape_TextAnnotation_1">
<dc:Bounds height="321.0" width="541.0" x="170.0" y="730.0"/>
<dc:Bounds height="321.0" width="541.0" x="360.0" y="730.0"/>
</bpmndi:BPMNShape>
<bpmndi:BPMNShape bpmnElement="dataObject_UIvZkA" id="BPMNShape_OyWydw">
<dc:Bounds height="50.0" width="35.0" x="1450.0" y="710.0"/>
<dc:Bounds height="50.0" width="35.0" x="780.0" y="640.0"/>
<bpmndi:BPMNLabel id="BPMNLabel_uBpUdg">
<dc:Bounds height="20.0" width="100.0" x="1417.5" y="765.0"/>
<dc:Bounds height="20.0" width="100.0" x="747.5" y="695.0"/>
</bpmndi:BPMNLabel>
</bpmndi:BPMNShape>
<bpmndi:BPMNShape bpmnElement="dataObject_BbVs7w" id="BPMNShape_Y0zosA">
<dc:Bounds height="50.0" width="35.0" x="1724.0" y="686.0"/>
<bpmndi:BPMNLabel id="BPMNLabel_Qcfy9Q">
<dc:Bounds height="20.0" width="100.0" x="1691.5" y="741.0"/>
</bpmndi:BPMNLabel>
<bpmndi:BPMNShape bpmnElement="task_0ossfw" id="BPMNShape_9TVBWQ">
<dc:Bounds height="50.0" width="110.0" x="310.0" y="520.0"/>
</bpmndi:BPMNShape>
<bpmndi:BPMNEdge bpmnElement="SequenceFlow_12" id="BPMNEdge_SequenceFlow_12" sourceElement="BPMNShape_Task_4" targetElement="BPMNShape_EndEvent_1">
<di:waypoint x="2030.0" y="545.0"/>
<di:waypoint x="2117.0" y="545.0"/>
<di:waypoint x="2220.0" y="545.0"/>
<di:waypoint x="2297.0" y="545.0"/>
<bpmndi:BPMNLabel id="BPMNLabel_27"/>
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge bpmnElement="SequenceFlow_2" id="BPMNEdge_SequenceFlow_2" sourceElement="BPMNShape_BoundaryEvent_1" targetElement="BPMNShape_IntermediateCatchEvent_3">
<di:waypoint x="513.0" y="545.0"/>
<di:waypoint x="547.0" y="545.0"/>
<di:waypoint x="683.0" y="545.0"/>
<di:waypoint x="727.0" y="545.0"/>
<bpmndi:BPMNLabel id="BPMNLabel_20"/>
</bpmndi:BPMNEdge>
<bpmndi:BPMNShape bpmnElement="dataObject_FS1r0Q" id="BPMNShape_Cn1HMQ">
<dc:Bounds height="50.0" width="35.0" x="340.0" y="420.0"/>
<dc:Bounds height="50.0" width="35.0" x="350.0" y="410.0"/>
<bpmndi:BPMNLabel id="BPMNLabel_he9OHg">
<dc:Bounds height="20.0" width="100.0" x="307.5" y="475.0"/>
<dc:Bounds height="20.0" width="100.0" x="317.5" y="465.0"/>
</bpmndi:BPMNLabel>
</bpmndi:BPMNShape>
<bpmndi:BPMNShape bpmnElement="task_uB6BGQ" id="BPMNShape_027JKQ">
<dc:Bounds height="50.0" width="110.0" x="740.0" y="520.0"/>
<dc:Bounds height="50.0" width="110.0" x="920.0" y="520.0"/>
</bpmndi:BPMNShape>
<bpmndi:BPMNShape bpmnElement="textAnnotation_CtU05A" id="BPMNShape_b8pQXg">
<dc:Bounds height="107.0" width="403.0" x="190.0" y="190.0"/>
</bpmndi:BPMNShape>
<bpmndi:BPMNEdge bpmnElement="sequenceFlow_fRPOrw" id="BPMNEdge_MS80cw" sourceElement="BPMNShape_StartEvent_1" targetElement="BPMNShape_IntermediateCatchEvent_2">
<bpmndi:BPMNEdge bpmnElement="sequenceFlow_fRPOrw" id="BPMNEdge_MS80cw" sourceElement="BPMNShape_StartEvent_1" targetElement="BPMNShape_9TVBWQ">
<di:waypoint x="243.0" y="545.0"/>
<di:waypoint x="297.0" y="545.0"/>
<di:waypoint x="310.0" y="545.0"/>
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge bpmnElement="sequenceFlow_4gpPgw" id="BPMNEdge_ZiIsnA" sourceElement="BPMNShape_IntermediateCatchEvent_2" targetElement="BPMNShape_Task_2">
<di:waypoint x="333.0" y="545.0"/>
<di:waypoint x="390.0" y="545.0"/>
<di:waypoint x="513.0" y="545.0"/>
<di:waypoint x="560.0" y="545.0"/>
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge bpmnElement="sequenceFlow_VlPVJg" id="BPMNEdge_RLNCCQ" sourceElement="BPMNShape_IntermediateCatchEvent_3" targetElement="BPMNShape_PyGqlg">
<di:waypoint x="583.0" y="545.0"/>
<di:waypoint x="630.0" y="545.0"/>
<di:waypoint x="763.0" y="545.0"/>
<di:waypoint x="820.0" y="545.0"/>
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge bpmnElement="association_hnK1FQ" id="BPMNEdge_d0BSMg" sourceElement="BPMNShape_Cn1HMQ" targetElement="BPMNShape_Task_2">
<di:waypoint x="375.0" y="447.0"/>
<di:waypoint x="423.0" y="447.0"/>
<di:waypoint x="423.0" y="520.0"/>
<bpmndi:BPMNEdge bpmnElement="association_hnK1FQ" id="BPMNEdge_d0BSMg" sourceElement="BPMNShape_Cn1HMQ" targetElement="BPMNShape_9TVBWQ">
<di:waypoint x="368.0" y="460.0"/>
<di:waypoint x="368.0" y="490.0"/>
<di:waypoint x="365.0" y="490.0"/>
<di:waypoint x="365.0" y="520.0"/>
</bpmndi:BPMNEdge>
<bpmndi:BPMNShape bpmnElement="task_PsBytg" id="BPMNShape_AJWuJw">
<dc:Bounds height="50.0" width="110.0" x="1100.0" y="520.0"/>
<dc:Bounds height="50.0" width="110.0" x="1290.0" y="520.0"/>
</bpmndi:BPMNShape>
<bpmndi:BPMNShape bpmnElement="event_Zxhr0w" id="BPMNShape_tDdvzQ">
<dc:Bounds height="36.0" width="36.0" x="1597.0" y="447.0"/>
<dc:Bounds height="36.0" width="36.0" x="1777.0" y="447.0"/>
<bpmndi:BPMNLabel id="BPMNLabel_n8dGow">
<dc:Bounds height="20.0" width="100.0" x="1565.0" y="486.0"/>
<dc:Bounds height="20.0" width="100.0" x="1745.0" y="486.0"/>
</bpmndi:BPMNLabel>
</bpmndi:BPMNShape>
<bpmndi:BPMNShape bpmnElement="dataObject_vVKXIg" id="BPMNShape_xQVfDw">
<dc:Bounds height="50.0" width="35.0" x="1960.0" y="410.0"/>
<dc:Bounds height="50.0" width="35.0" x="2150.0" y="410.0"/>
<bpmndi:BPMNLabel id="BPMNLabel_UK80dg">
<dc:Bounds height="20.0" width="100.0" x="1927.5" y="465.0"/>
<dc:Bounds height="20.0" width="100.0" x="2117.5" y="465.0"/>
</bpmndi:BPMNLabel>
</bpmndi:BPMNShape>
<bpmndi:BPMNEdge bpmnElement="association_NqDnFA" id="BPMNEdge_Hu80mg" sourceElement="BPMNShape_xQVfDw" targetElement="BPMNShape_Task_4">
<di:waypoint x="1978.0" y="460.0"/>
<di:waypoint x="1978.0" y="491.0"/>
<di:waypoint x="1969.0" y="491.0"/>
<di:waypoint x="1969.0" y="520.0"/>
<di:waypoint x="2168.0" y="460.0"/>
<di:waypoint x="2168.0" y="490.0"/>
<di:waypoint x="2165.0" y="490.0"/>
<di:waypoint x="2165.0" y="520.0"/>
</bpmndi:BPMNEdge>
<bpmndi:BPMNShape bpmnElement="event_yQLmNA" id="BPMNShape_sGRa6w">
<dc:Bounds height="36.0" width="36.0" x="1537.0" y="527.0"/>
<dc:Bounds height="36.0" width="36.0" x="1717.0" y="527.0"/>
<bpmndi:BPMNLabel id="BPMNLabel_csHjuw">
<dc:Bounds height="20.0" width="100.0" x="1508.5" y="566.0"/>
<dc:Bounds height="20.0" width="100.0" x="1688.5" y="566.0"/>
</bpmndi:BPMNLabel>
</bpmndi:BPMNShape>
<bpmndi:BPMNShape bpmnElement="task_0YaQ2w" id="BPMNShape_bynHqw">
<dc:Bounds height="50.0" width="110.0" x="1350.0" y="520.0"/>
<dc:Bounds height="50.0" width="110.0" x="1540.0" y="520.0"/>
</bpmndi:BPMNShape>
<bpmndi:BPMNEdge bpmnElement="sequenceFlow_YMtfiw" id="BPMNEdge_aaVXOw" sourceElement="BPMNShape_sGRa6w" targetElement="BPMNShape_3dBYIA">
<di:waypoint x="1573.0" y="545.0"/>
<di:waypoint x="1680.0" y="545.0"/>
<di:waypoint x="1753.0" y="545.0"/>
<di:waypoint x="1860.0" y="545.0"/>
</bpmndi:BPMNEdge>
<bpmndi:BPMNShape bpmnElement="dataObject_HHM58Q" id="BPMNShape_hIerPQ">
<dc:Bounds height="50.0" width="35.0" x="1520.0" y="620.0"/>
<dc:Bounds height="50.0" width="35.0" x="1720.0" y="620.0"/>
<bpmndi:BPMNLabel id="BPMNLabel_QgYnNw">
<dc:Bounds height="20.0" width="100.0" x="1492.5" y="676.0"/>
<dc:Bounds height="20.0" width="100.0" x="1692.5" y="676.0"/>
</bpmndi:BPMNLabel>
</bpmndi:BPMNShape>
<bpmndi:BPMNEdge bpmnElement="association_Xrb1Cg" id="BPMNEdge_fjQJbw" sourceElement="BPMNShape_sGRa6w" targetElement="BPMNShape_hIerPQ">
<di:waypoint x="1555.0" y="563.0"/>
<di:waypoint x="1555.0" y="592.0"/>
<di:waypoint x="1538.0" y="592.0"/>
<di:waypoint x="1538.0" y="620.0"/>
<di:waypoint x="1735.0" y="563.0"/>
<di:waypoint x="1735.0" y="592.0"/>
<di:waypoint x="1738.0" y="592.0"/>
<di:waypoint x="1738.0" y="620.0"/>
</bpmndi:BPMNEdge>
<bpmndi:BPMNShape bpmnElement="event_xOeBKg" id="BPMNShape_nEe3Fw">
<dc:Bounds height="36.0" width="36.0" x="1797.0" y="527.0"/>
<dc:Bounds height="36.0" width="36.0" x="1977.0" y="527.0"/>
<bpmndi:BPMNLabel id="BPMNLabel_NaFTwg">
<dc:Bounds height="20.0" width="100.0" x="1768.5" y="566.0"/>
<dc:Bounds height="20.0" width="100.0" x="1948.5" y="566.0"/>
</bpmndi:BPMNLabel>
</bpmndi:BPMNShape>
<bpmndi:BPMNEdge bpmnElement="sequenceFlow_gXJm0w" id="BPMNEdge_bgxhaA" sourceElement="BPMNShape_nEe3Fw" targetElement="BPMNShape_Task_4">
<di:waypoint x="1833.0" y="545.0"/>
<di:waypoint x="1920.0" y="545.0"/>
<di:waypoint x="2013.0" y="545.0"/>
<di:waypoint x="2110.0" y="545.0"/>
</bpmndi:BPMNEdge>
<bpmndi:BPMNShape bpmnElement="event_pDFoXg" id="BPMNShape_g0M0zg">
<dc:Bounds height="36.0" width="36.0" x="907.0" y="527.0"/>
<dc:Bounds height="36.0" width="36.0" x="1087.0" y="527.0"/>
<bpmndi:BPMNLabel id="BPMNLabel_j0UwmA">
<dc:Bounds height="20.0" width="100.0" x="880.5" y="566.0"/>
<dc:Bounds height="20.0" width="100.0" x="1060.5" y="566.0"/>
</bpmndi:BPMNLabel>
</bpmndi:BPMNShape>
<bpmndi:BPMNShape bpmnElement="dataObject_ZhBiZg" id="BPMNShape_z0cKCQ">
<dc:Bounds height="50.0" width="35.0" x="890.0" y="620.0"/>
<dc:Bounds height="50.0" width="35.0" x="1080.0" y="620.0"/>
<bpmndi:BPMNLabel id="BPMNLabel_YDv9UQ">
<dc:Bounds height="20.0" width="100.0" x="857.5" y="675.0"/>
<dc:Bounds height="20.0" width="100.0" x="1047.5" y="675.0"/>
</bpmndi:BPMNLabel>
</bpmndi:BPMNShape>
<bpmndi:BPMNEdge bpmnElement="association_zuMlDA" id="BPMNEdge_Lx0Sxw" sourceElement="BPMNShape_z0cKCQ" targetElement="BPMNShape_g0M0zg">
<di:waypoint x="908.0" y="620.0"/>
<di:waypoint x="908.0" y="592.0"/>
<di:waypoint x="925.0" y="592.0"/>
<di:waypoint x="925.0" y="563.0"/>
<di:waypoint x="1098.0" y="620.0"/>
<di:waypoint x="1098.0" y="592.0"/>
<di:waypoint x="1105.0" y="592.0"/>
<di:waypoint x="1105.0" y="563.0"/>
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge bpmnElement="sequenceFlow_naZnAA" id="BPMNEdge_p0VSbQ" sourceElement="BPMNShape_g0M0zg" targetElement="BPMNShape_UxYL0A">
<di:waypoint x="943.0" y="545.0"/>
<di:waypoint x="980.0" y="545.0"/>
<di:waypoint x="1123.0" y="545.0"/>
<di:waypoint x="1170.0" y="545.0"/>
</bpmndi:BPMNEdge>
<bpmndi:BPMNShape bpmnElement="event_4DNGzg" id="BPMNShape_JQcpbg">
<dc:Bounds height="36.0" width="36.0" x="1277.0" y="527.0"/>
<dc:Bounds height="36.0" width="36.0" x="1457.0" y="527.0"/>
<bpmndi:BPMNLabel id="BPMNLabel_V5YzNw">
<dc:Bounds height="20.0" width="100.0" x="1248.5" y="566.0"/>
<dc:Bounds height="20.0" width="100.0" x="1428.5" y="566.0"/>
</bpmndi:BPMNLabel>
</bpmndi:BPMNShape>
<bpmndi:BPMNEdge bpmnElement="sequenceFlow_A62nqQ" id="BPMNEdge_l84nPQ" sourceElement="BPMNShape_JQcpbg" targetElement="BPMNShape_bynHqw">
<di:waypoint x="1313.0" y="545.0"/>
<di:waypoint x="1350.0" y="545.0"/>
<di:waypoint x="1493.0" y="545.0"/>
<di:waypoint x="1540.0" y="545.0"/>
</bpmndi:BPMNEdge>
<bpmndi:BPMNShape bpmnElement="dataObject_KPUiiw" id="BPMNShape_PoxSHA">
<dc:Bounds height="50.0" width="35.0" x="1260.0" y="620.0"/>
<dc:Bounds height="50.0" width="35.0" x="1450.0" y="620.0"/>
<bpmndi:BPMNLabel id="BPMNLabel_pIkcsA">
<dc:Bounds height="20.0" width="100.0" x="1227.5" y="675.0"/>
<dc:Bounds height="20.0" width="100.0" x="1417.5" y="675.0"/>
</bpmndi:BPMNLabel>
</bpmndi:BPMNShape>
<bpmndi:BPMNEdge bpmnElement="association_IKW0SQ" id="BPMNEdge_yt0pwA" sourceElement="BPMNShape_PoxSHA" targetElement="BPMNShape_JQcpbg">
<di:waypoint x="1278.0" y="620.0"/>
<di:waypoint x="1278.0" y="592.0"/>
<di:waypoint x="1295.0" y="592.0"/>
<di:waypoint x="1295.0" y="563.0"/>
<di:waypoint x="1468.0" y="620.0"/>
<di:waypoint x="1468.0" y="592.0"/>
<di:waypoint x="1475.0" y="592.0"/>
<di:waypoint x="1475.0" y="563.0"/>
</bpmndi:BPMNEdge>
<bpmndi:BPMNShape bpmnElement="event_wmNwPA" id="BPMNShape_miMI9A">
<dc:Bounds height="36.0" width="36.0" x="1687.0" y="447.0"/>
<dc:Bounds height="36.0" width="36.0" x="1867.0" y="447.0"/>
<bpmndi:BPMNLabel id="BPMNLabel_g8YExg">
<dc:Bounds height="20.0" width="100.0" x="1654.0" y="488.0"/>
<dc:Bounds height="20.0" width="100.0" x="1834.0" y="488.0"/>
</bpmndi:BPMNLabel>
</bpmndi:BPMNShape>
<bpmndi:BPMNShape bpmnElement="event_tFxV0w" id="BPMNShape_gfaqCg">
<dc:Bounds height="36.0" width="36.0" x="1387.0" y="627.0"/>
<dc:Bounds height="36.0" width="36.0" x="1577.0" y="627.0"/>
<bpmndi:BPMNLabel id="BPMNLabel_m00hIA">
<dc:Bounds height="20.0" width="100.0" x="1355.0" y="666.0"/>
<dc:Bounds height="20.0" width="100.0" x="1545.0" y="666.0"/>
</bpmndi:BPMNLabel>
</bpmndi:BPMNShape>
<bpmndi:BPMNShape bpmnElement="event_88sCAA" id="BPMNShape_0FB0cg">
<dc:Bounds height="36.0" width="36.0" x="827.0" y="527.0"/>
<dc:Bounds height="36.0" width="36.0" x="1007.0" y="527.0"/>
<bpmndi:BPMNLabel id="BPMNLabel_OSIhZg">
<dc:Bounds height="20.0" width="100.0" x="795.0" y="566.0"/>
<dc:Bounds height="20.0" width="100.0" x="975.0" y="566.0"/>
</bpmndi:BPMNLabel>
</bpmndi:BPMNShape>
<bpmndi:BPMNShape bpmnElement="event_T901Jg" id="BPMNShape_Jc5h4g">
<dc:Bounds height="36.0" width="36.0" x="1187.0" y="527.0"/>
<dc:Bounds height="36.0" width="36.0" x="1377.0" y="527.0"/>
<bpmndi:BPMNLabel id="BPMNLabel_Y0hU4w">
<dc:Bounds height="20.0" width="100.0" x="1155.0" y="566.0"/>
<dc:Bounds height="20.0" width="100.0" x="1345.0" y="566.0"/>
</bpmndi:BPMNLabel>
</bpmndi:BPMNShape>
<bpmndi:BPMNEdge bpmnElement="sequenceFlow_PgyOMw" id="BPMNEdge_kptDVQ" sourceElement="BPMNShape_0FB0cg" targetElement="BPMNShape_g0M0zg">
<di:waypoint x="863.0" y="545.0"/>
<di:waypoint x="907.0" y="545.0"/>
<di:waypoint x="1043.0" y="545.0"/>
<di:waypoint x="1087.0" y="545.0"/>
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge bpmnElement="sequenceFlow_Di4BQA" id="BPMNEdge_07rOoQ" sourceElement="BPMNShape_Jc5h4g" targetElement="BPMNShape_JQcpbg">
<di:waypoint x="1223.0" y="545.0"/>
<di:waypoint x="1277.0" y="545.0"/>
<di:waypoint x="1413.0" y="545.0"/>
<di:waypoint x="1457.0" y="545.0"/>
</bpmndi:BPMNEdge>
<bpmndi:BPMNShape bpmnElement="event_7rbeVA" id="BPMNShape_ShOR1w">
<dc:Bounds height="36.0" width="36.0" x="1437.0" y="527.0"/>
<dc:Bounds height="36.0" width="36.0" x="1627.0" y="527.0"/>
<bpmndi:BPMNLabel id="BPMNLabel_8q5sXA">
<dc:Bounds height="20.0" width="100.0" x="1405.0" y="566.0"/>
<dc:Bounds height="20.0" width="100.0" x="1585.0" y="566.0"/>
</bpmndi:BPMNLabel>
</bpmndi:BPMNShape>
<bpmndi:BPMNEdge bpmnElement="sequenceFlow_PWXjog" id="BPMNEdge_0u97cA" sourceElement="BPMNShape_ShOR1w" targetElement="BPMNShape_sGRa6w">
<di:waypoint x="1473.0" y="545.0"/>
<di:waypoint x="1537.0" y="545.0"/>
<di:waypoint x="1663.0" y="545.0"/>
<di:waypoint x="1717.0" y="545.0"/>
</bpmndi:BPMNEdge>
<bpmndi:BPMNShape bpmnElement="gateway_qDAhHw" id="BPMNShape_UxYL0A">
<dc:Bounds height="50.0" width="50.0" x="980.0" y="520.0"/>
<dc:Bounds height="50.0" width="50.0" x="1170.0" y="520.0"/>
<bpmndi:BPMNLabel id="BPMNLabel_DNxqOQ">
<dc:Bounds height="20.0" width="100.0" x="955.0" y="573.0"/>
<dc:Bounds height="20.0" width="100.0" x="1145.0" y="573.0"/>
</bpmndi:BPMNLabel>
</bpmndi:BPMNShape>
<bpmndi:BPMNShape bpmnElement="event_9mJrhQ" id="BPMNShape_JG1UQQ">
<dc:Bounds height="36.0" width="36.0" x="1797.0" y="407.0"/>
<dc:Bounds height="36.0" width="36.0" x="1977.0" y="407.0"/>
<bpmndi:BPMNLabel id="BPMNLabel_2BxNjg">
<dc:Bounds height="20.0" width="100.0" x="1768.5" y="446.0"/>
<dc:Bounds height="20.0" width="100.0" x="1948.5" y="446.0"/>
</bpmndi:BPMNLabel>
</bpmndi:BPMNShape>
<bpmndi:BPMNEdge bpmnElement="sequenceFlow_tcjWAA" id="BPMNEdge_fIE5pg" sourceElement="BPMNShape_UxYL0A" targetElement="BPMNShape_JG1UQQ">
<di:waypoint x="1004.0" y="521.0"/>
<di:waypoint x="1004.0" y="425.0"/>
<di:waypoint x="1657.0" y="425.0"/>
<di:waypoint x="1797.0" y="425.0"/>
<di:waypoint x="1189.0" y="526.0"/>
<di:waypoint x="1189.0" y="425.0"/>
<di:waypoint x="1977.0" y="425.0"/>
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge bpmnElement="sequenceFlow_gpPDLg" id="BPMNEdge_oi9YWw" sourceElement="BPMNShape_JG1UQQ" targetElement="BPMNShape_nEe3Fw">
<di:waypoint x="1815.0" y="443.0"/>
<di:waypoint x="1815.0" y="527.0"/>
<di:waypoint x="1995.0" y="443.0"/>
<di:waypoint x="1995.0" y="527.0"/>
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge bpmnElement="sequenceFlow_I8o4DA" id="BPMNEdge_kd3F1g" sourceElement="BPMNShape_UxYL0A" targetElement="BPMNShape_AJWuJw">
<di:waypoint x="1030.0" y="545.0"/>
<di:waypoint x="1100.0" y="545.0"/>
<di:waypoint x="1220.0" y="545.0"/>
<di:waypoint x="1290.0" y="545.0"/>
</bpmndi:BPMNEdge>
<bpmndi:BPMNShape bpmnElement="gateway_gd9zQQ" id="BPMNShape_PyGqlg">
<dc:Bounds height="50.0" width="50.0" x="630.0" y="520.0"/>
<dc:Bounds height="50.0" width="50.0" x="820.0" y="520.0"/>
<bpmndi:BPMNLabel id="BPMNLabel_B6j38A">
<dc:Bounds height="20.0" width="100.0" x="605.0" y="573.0"/>
<dc:Bounds height="20.0" width="100.0" x="795.0" y="573.0"/>
</bpmndi:BPMNLabel>
</bpmndi:BPMNShape>
<bpmndi:BPMNEdge bpmnElement="sequenceFlow_bh4DIw" id="BPMNEdge_cjFGmA" sourceElement="BPMNShape_PyGqlg" targetElement="BPMNShape_027JKQ">
<di:waypoint x="680.0" y="545.0"/>
<di:waypoint x="740.0" y="545.0"/>
<di:waypoint x="870.0" y="545.0"/>
<di:waypoint x="920.0" y="545.0"/>
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge bpmnElement="sequenceFlow_d0zSHA" id="BPMNEdge_YVrWMA" sourceElement="BPMNShape_PyGqlg" targetElement="BPMNShape_JG1UQQ">
<di:waypoint x="655.0" y="520.0"/>
<di:waypoint x="655.0" y="374.0"/>
<di:waypoint x="1815.0" y="374.0"/>
<di:waypoint x="1815.0" y="407.0"/>
<di:waypoint x="845.0" y="520.0"/>
<di:waypoint x="845.0" y="374.0"/>
<di:waypoint x="1995.0" y="374.0"/>
<di:waypoint x="1995.0" y="407.0"/>
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge bpmnElement="association_w5HwVg" id="BPMNEdge_ia3uKg" sourceElement="BPMNShape_OyWydw" targetElement="BPMNShape_bynHqw">
<di:waypoint x="1468.0" y="710.0"/>
<di:waypoint x="1468.0" y="650.0"/>
<di:waypoint x="1405.0" y="650.0"/>
<di:waypoint x="1405.0" y="570.0"/>
<bpmndi:BPMNEdge bpmnElement="association_w5HwVg" id="BPMNEdge_ia3uKg" sourceElement="BPMNShape_OyWydw" targetElement="BPMNShape_Task_2">
<di:waypoint x="780.0" y="665.0"/>
<di:waypoint x="661.0" y="665.0"/>
<di:waypoint x="661.0" y="570.0"/>
</bpmndi:BPMNEdge>
<bpmndi:BPMNShape bpmnElement="gateway_MgL04w" id="BPMNShape_3dBYIA">
<dc:Bounds height="50.0" width="50.0" x="1680.0" y="520.0"/>
<dc:Bounds height="50.0" width="50.0" x="1860.0" y="520.0"/>
<bpmndi:BPMNLabel id="BPMNLabel_RW5mkw">
<dc:Bounds height="20.0" width="100.0" x="1655.0" y="573.0"/>
<dc:Bounds height="20.0" width="100.0" x="1845.0" y="573.0"/>
</bpmndi:BPMNLabel>
</bpmndi:BPMNShape>
<bpmndi:BPMNEdge bpmnElement="sequenceFlow_eccehA" id="BPMNEdge_iW26sQ" sourceElement="BPMNShape_3dBYIA" targetElement="BPMNShape_nEe3Fw">
<di:waypoint x="1730.0" y="545.0"/>
<di:waypoint x="1797.0" y="545.0"/>
<di:waypoint x="1910.0" y="545.0"/>
<di:waypoint x="1977.0" y="545.0"/>
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge bpmnElement="sequenceFlow_3YcMGQ" id="BPMNEdge_15lqUQ" sourceElement="BPMNShape_tDdvzQ" targetElement="BPMNShape_miMI9A">
<di:waypoint x="1633.0" y="465.0"/>
<di:waypoint x="1687.0" y="465.0"/>
<di:waypoint x="1813.0" y="465.0"/>
<di:waypoint x="1867.0" y="465.0"/>
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge bpmnElement="sequenceFlow_p0asUQ" id="BPMNEdge_RDBP5A" sourceElement="BPMNShape_miMI9A" targetElement="BPMNShape_3dBYIA">
<di:waypoint x="1705.0" y="483.0"/>
<di:waypoint x="1705.0" y="520.0"/>
<di:waypoint x="1885.0" y="483.0"/>
<di:waypoint x="1885.0" y="520.0"/>
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge bpmnElement="sequenceFlow_DdWK6A" id="BPMNEdge_0id0Ug" sourceElement="BPMNShape_bynHqw" targetElement="BPMNShape_gfaqCg">
<di:waypoint x="1405.0" y="570.0"/>
<di:waypoint x="1405.0" y="627.0"/>
<di:waypoint x="1595.0" y="570.0"/>
<di:waypoint x="1595.0" y="627.0"/>
</bpmndi:BPMNEdge>
<bpmndi:BPMNShape bpmnElement="event_VEvZRQ" id="BPMNShape_n6wDrA">
<dc:Bounds height="36.0" width="36.0" x="1137.0" y="627.0"/>
<dc:Bounds height="36.0" width="36.0" x="1327.0" y="627.0"/>
<bpmndi:BPMNLabel id="BPMNLabel_sbsk8Q">
<dc:Bounds height="20.0" width="100.0" x="1105.0" y="666.0"/>
<dc:Bounds height="20.0" width="100.0" x="1295.0" y="666.0"/>
</bpmndi:BPMNLabel>
</bpmndi:BPMNShape>
<bpmndi:BPMNEdge bpmnElement="sequenceFlow_KKWo0w" id="BPMNEdge_1nWehg" sourceElement="BPMNShape_AJWuJw" targetElement="BPMNShape_n6wDrA">
<di:waypoint x="1155.0" y="570.0"/>
<di:waypoint x="1155.0" y="627.0"/>
<di:waypoint x="1345.0" y="570.0"/>
<di:waypoint x="1345.0" y="627.0"/>
</bpmndi:BPMNEdge>
<bpmndi:BPMNShape bpmnElement="event_Xk1mPA" id="BPMNShape_KxJPww">
<dc:Bounds height="36.0" width="36.0" x="777.0" y="627.0"/>
<dc:Bounds height="36.0" width="36.0" x="947.0" y="627.0"/>
<bpmndi:BPMNLabel id="BPMNLabel_5QL8XA">
<dc:Bounds height="20.0" width="100.0" x="745.0" y="666.0"/>
<dc:Bounds height="20.0" width="100.0" x="915.0" y="666.0"/>
</bpmndi:BPMNLabel>
</bpmndi:BPMNShape>
<bpmndi:BPMNEdge bpmnElement="sequenceFlow_ofQKHg" id="BPMNEdge_7aqcbA" sourceElement="BPMNShape_027JKQ" targetElement="BPMNShape_KxJPww">
<di:waypoint x="795.0" y="570.0"/>
<di:waypoint x="795.0" y="627.0"/>
<di:waypoint x="975.0" y="570.0"/>
<di:waypoint x="975.0" y="599.0"/>
<di:waypoint x="965.0" y="599.0"/>
<di:waypoint x="965.0" y="627.0"/>
</bpmndi:BPMNEdge>
<bpmndi:BPMNShape bpmnElement="event_a1P5WQ" id="BPMNShape_PPgTzA">
<dc:Bounds height="36.0" width="36.0" x="427.0" y="627.0"/>
<dc:Bounds height="36.0" width="36.0" x="597.0" y="627.0"/>
<bpmndi:BPMNLabel id="BPMNLabel_h9IxUg">
<dc:Bounds height="20.0" width="100.0" x="395.0" y="666.0"/>
<dc:Bounds height="20.0" width="100.0" x="565.0" y="666.0"/>
</bpmndi:BPMNLabel>
</bpmndi:BPMNShape>
<bpmndi:BPMNEdge bpmnElement="sequenceFlow_CbkmwA" id="BPMNEdge_9uuZpA" sourceElement="BPMNShape_Task_2" targetElement="BPMNShape_PPgTzA">
<di:waypoint x="445.0" y="570.0"/>
<di:waypoint x="445.0" y="627.0"/>
<di:waypoint x="615.0" y="570.0"/>
<di:waypoint x="615.0" y="627.0"/>
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge bpmnElement="association_Uc6nuQ" id="BPMNEdge_j0l7hQ" sourceElement="BPMNShape_AJWuJw" targetElement="BPMNShape_OyWydw">
<di:waypoint x="1110.0" y="570.0"/>
<di:waypoint x="1110.0" y="735.0"/>
<di:waypoint x="1450.0" y="735.0"/>
<di:waypoint x="1312.0" y="570.0"/>
<di:waypoint x="1312.0" y="712.0"/>
<di:waypoint x="798.0" y="712.0"/>
<di:waypoint x="798.0" y="690.0"/>
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge bpmnElement="association_ApEaCQ" id="BPMNEdge_Sz93tQ" sourceElement="BPMNShape_027JKQ" targetElement="BPMNShape_OyWydw">
<di:waypoint x="766.0" y="570.0"/>
<di:waypoint x="766.0" y="800.0"/>
<di:waypoint x="1468.0" y="800.0"/>
<di:waypoint x="1468.0" y="760.0"/>
<di:waypoint x="945.0" y="570.0"/>
<di:waypoint x="945.0" y="665.0"/>
<di:waypoint x="815.0" y="665.0"/>
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge bpmnElement="sequenceFlow_ShggfA" id="BPMNEdge_zMQtIQ" sourceElement="BPMNShape_9TVBWQ" targetElement="BPMNShape_IntermediateCatchEvent_2">
<di:waypoint x="420.0" y="545.0"/>
<di:waypoint x="477.0" y="545.0"/>
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge bpmnElement="association_gxPFSg" id="BPMNEdge_WaemZQ" sourceElement="BPMNShape_OyWydw" targetElement="BPMNShape_bynHqw">
<di:waypoint x="798.0" y="690.0"/>
<di:waypoint x="798.0" y="714.0"/>
<di:waypoint x="1595.0" y="714.0"/>
<di:waypoint x="1595.0" y="570.0"/>
</bpmndi:BPMNEdge>
</bpmndi:BPMNPlane>
<bpmndi:BPMNLabelStyle id="BPMNLabelStyle_1">

5
workflow/test.json Normal file
View file

@ -0,0 +1,5 @@
>\n <invoice.currency>...</invoice.currency>\n <cdtr.iban>...</cdtr.iban>\n <cdtr.bic>...</cdtr.bic>\n <invoice.period>...</invoice.period>\n <invoice.positions>...</invoice.positions>\n</data>\n\nField mapping:\n- document.company (text): Company\n- document.type (text): Document Type\n- document.language (text): Language\n- cdtr.name (text): Supplier\n- invoice.number (text): Invoice Number\n- invoice.date (date, format YYYY-MM-DD): Invoice Date\n- invoice.duedate (date, format YYYY-MM-DD): Due Date\n- invoice.total (text): Invoice Total\n- invoice.currency (text): Currency\n- cdtr.iban (text): IBAN\n- cdtr.bic (text): BIC\n- invoice.period (text): Posting period\n- invoice.positions (text): Reference Number\n\nOutput only the XML object above! Do not add explanations or comments, and do not create any XML tags other than those shown. The example values (e.g. \"...\", \"2024-12-31\", \"1234.00\") only illustrate the expected format - if you don't have data for a field, leave the corresponding tag empty.\n\n\nNote: \n- The Reference Number in the format [2 letters][3 letters][4-digit booking period YYMM][3-digit sequence number] ==> \"invoice.positions\"\n- The posting period is the period of the invoice date [YYYYMM] ==> \"invoice.period\"\n\n\n\n\n"
},
{
"role": "user",
"content":"### **Invoice Summary**\n\n#### **1. Vendor Information**\n- **Company Name:** Maersk A/S\n- **Agent for Carrier:** Maersk Deutschland A/S & Co. KG\n- **Address:**\n - Maersk A/S: Esplanaden 50, 1263 Copenhagen K, Denmark\n - Maersk Deutschland A/S & Co. KG: Johanniswall 7, 20095 Hamburg, Germany\n- **Tax ID:** DK53139655\n- **Commercial Register No.:** 32345794\n- **Contact:** Devi Ravichandran\n\n---\n\n#### **2. General Billing Data**\n- **Invoice Type:** Export Invoice\n- **Invoice Number:** 7554697016\n- **Invoice Date:** 2026-08-11\n- **Due Date:** 2026-09-02\n- **Payment Terms:** 21 Days Net\n- **Customer Code:** 10307608\n- **Customer Address:** Alexander Global Logistics GmbH, 2-6 Museumstr., 28195 Bremen, Germany\n- **Vessel/Voyage Reference:** MAERSK MONTE LINZOR/632S\n- **Sailing Date:** 2026-08-12\n- **Arrival Date:** 2026-09-03\n- **Port of Loading:** Bremerhaven, DE\n- **Port of Discharge:** Cartagena, CO\n- **Place of Delivery:** Cartagena, CO\n- **Bill of Lading:** 274378263\n- **Product ID:** MAERSK SPOT\n- **Price Calculation Date (PCD):** 2026-07-15\n\n---\n\n#### **3. Invoice Total Information**\n- **Total Net Amount (EUR):** 1,741.66\n- **Total Taxes (EUR):** 0.00\n- **Total Payable Amount (EUR):** 1,741.66\n- **Total Net Amount (DKK):** 13,181.58 *(Tax specification for reporting only)*\n\n---\n\n#### **4. Payment Summary (Including Bank Data)**\n- **Payment Reference:** 7554697016 / 10307608\n- **Payment Instructions:** Pay without deduction\n\n**EUR Payments:**\n- **Bank:** BNP Paribas\n- **Account No.:** 8027000011\n- **IBAN:** NL06BNPA8027000011\n- **SWIFT/BIC:** BNPANL2A\n\n**US