update business partner
This commit is contained in:
parent
d6ba785002
commit
bdf3c8ba01
6 changed files with 131 additions and 111 deletions
|
|
@ -5,6 +5,11 @@
|
||||||
- Finalizierung Business Partner Interface
|
- Finalizierung Business Partner Interface
|
||||||
- Zoho Schnittstelle
|
- Zoho Schnittstelle
|
||||||
|
|
||||||
|
**Migration**
|
||||||
|
|
||||||
|
- Encoding für CSV Impoort aus cargosoft muss auf `encoding=UTF-8` stehen!
|
||||||
|
- Neues Businesspartner BPMN Modell einspielen
|
||||||
|
|
||||||
### 1.3.3
|
### 1.3.3
|
||||||
|
|
||||||
- Imixs-Archive 3.1.1. Compactor Sevrvice
|
- Imixs-Archive 3.1.1. Compactor Sevrvice
|
||||||
|
|
|
||||||
|
|
@ -9,12 +9,7 @@ In Imixs ist es dann aber möglich zusätzliche Attribute zu einem Businesspartn
|
||||||
- Bankverbindungen
|
- Bankverbindungen
|
||||||
- Emailadressen für Mahnwesen
|
- Emailadressen für Mahnwesen
|
||||||
|
|
||||||
Die Businessparnter werden zentral nur in dem Hauptsystem in Bremen importiert und verwaltet. Damit ein AGL System auf die BusinessPartner zugreifen kann wird eine Rest API Schnittstelle verwendet. Diese kann über Environmentvariablen aktiviert werden:
|
Die Businessparnter werden für jedes System separat importiert und verwaltet.
|
||||||
|
|
||||||
# Rest Service BusinessPartner API
|
|
||||||
WORKFLOW_SERVICE_ENDPOINT: "http://app:8080/api"
|
|
||||||
WORKFLOW_SERVICE_USER: "admin"
|
|
||||||
WORKFLOW_SERVICE_PASSWORD: "xxxxxxxx"
|
|
||||||
|
|
||||||
## BusinessPartner Suche
|
## BusinessPartner Suche
|
||||||
|
|
||||||
|
|
@ -28,7 +23,7 @@ Z.b. kann das als Custom Part in eine Form eingebunden werden:
|
||||||
<item name="bpid" type="custom" path="alexander/businesspartner_search" required="true" label="Businesspartner:" />
|
<item name="bpid" type="custom" path="alexander/businesspartner_search" required="true" label="Businesspartner:" />
|
||||||
```
|
```
|
||||||
|
|
||||||
Das widget legt dann automatisch die felder `bpid` und `bpidname` an.
|
Das widget legt dann automatisch die Items `bpid` und `bpidname` an.
|
||||||
|
|
||||||
Alternativ kann im Backend über die EJB BusinessPartnerService nach bpid gesucht werden:
|
Alternativ kann im Backend über die EJB BusinessPartnerService nach bpid gesucht werden:
|
||||||
|
|
||||||
|
|
@ -40,10 +35,20 @@ Alternativ kann im Backend über die EJB BusinessPartnerService nach bpid gesuch
|
||||||
|
|
||||||
# Daten Migration
|
# Daten Migration
|
||||||
|
|
||||||
|
Der `BusinessPartnerImportService` hängt sich über ein CDI Observer Pattern an den standard CSVImport Service
|
||||||
|
der die Cargosoft Stammdaten aktualisiert. Der BusinessPartnerImportService
|
||||||
|
prüft ob der Workflow schon existiert oder ggf. aktualisiert werden muss.
|
||||||
|
|
||||||
|
Der Service migriert auch die alten zusätzlichen IBAN/BIC felder wenn der Business partner erstmals neu angelegt wird. Falls bei der ersten Migration erkannt wird, dass die IBAN Nummern nicht eindeutig sind wir der BusinessParter mit dem Event 300 angelegt.
|
||||||
|
|
||||||
|
-
|
||||||
|
|
||||||
\_vendor_zip_code
|
\_vendor_zip_code
|
||||||
|
|
||||||
\_vendor_fax
|
\_vendor_fax
|
||||||
|
|
||||||
(type:cargosoftkreditor) AND ($modified:[20010101 TO 20250215])
|
(type:cargosoftkreditor) AND ($modified:[20010101 TO 20250215])
|
||||||
|
|
||||||
Wir müssen gundsätzlich erstmal über all $nosnapshot = true eintragen!
|
## Anmerkungen zu seltsamen Daten
|
||||||
|
|
||||||
|
BP4641 existier jetzt 3 mal mit der Debitoren nummer D14641
|
||||||
|
|
|
||||||
|
|
@ -53,6 +53,7 @@ import org.imixs.workflow.FileData;
|
||||||
import org.imixs.workflow.ItemCollection;
|
import org.imixs.workflow.ItemCollection;
|
||||||
import org.imixs.workflow.engine.DocumentService;
|
import org.imixs.workflow.engine.DocumentService;
|
||||||
import org.imixs.workflow.engine.WorkflowService;
|
import org.imixs.workflow.engine.WorkflowService;
|
||||||
|
import org.imixs.workflow.engine.index.UpdateService;
|
||||||
import org.imixs.workflow.exceptions.AccessDeniedException;
|
import org.imixs.workflow.exceptions.AccessDeniedException;
|
||||||
import org.imixs.workflow.exceptions.ModelException;
|
import org.imixs.workflow.exceptions.ModelException;
|
||||||
import org.imixs.workflow.exceptions.PluginException;
|
import org.imixs.workflow.exceptions.PluginException;
|
||||||
|
|
@ -113,6 +114,9 @@ public class CargosoftMigrationRestService implements Serializable {
|
||||||
@Inject
|
@Inject
|
||||||
MahnlaufService mahnlaufService;
|
MahnlaufService mahnlaufService;
|
||||||
|
|
||||||
|
@Inject
|
||||||
|
UpdateService updateService;
|
||||||
|
|
||||||
@Inject
|
@Inject
|
||||||
TeamService teamService;
|
TeamService teamService;
|
||||||
|
|
||||||
|
|
@ -692,6 +696,9 @@ public class CargosoftMigrationRestService implements Serializable {
|
||||||
totalObjects++;
|
totalObjects++;
|
||||||
if (syncBusinessPartner(cargosoftItemCol)) {
|
if (syncBusinessPartner(cargosoftItemCol)) {
|
||||||
syncs++;
|
syncs++;
|
||||||
|
// Explicit flush the lucene search event log
|
||||||
|
updateService.updateIndex();
|
||||||
|
|
||||||
}
|
}
|
||||||
if (syncs >= maxcount)
|
if (syncs >= maxcount)
|
||||||
break;
|
break;
|
||||||
|
|
@ -808,7 +815,7 @@ public class CargosoftMigrationRestService implements Serializable {
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Hilfsmethode speichert eine cargoosft kreditor object...
|
* Hilfsmethode - löscht ein cargoosoft object...
|
||||||
*
|
*
|
||||||
* @param bpID
|
* @param bpID
|
||||||
* @param messageBuffer
|
* @param messageBuffer
|
||||||
|
|
|
||||||
|
|
@ -65,12 +65,15 @@ import jakarta.enterprise.event.Observes;
|
||||||
* "ON_DOCUMENT_SAVE" reagiert. Hier hängt sich der BusinessPartnerImportService
|
* "ON_DOCUMENT_SAVE" reagiert. Hier hängt sich der BusinessPartnerImportService
|
||||||
* ein und prüft ob der Workflow schon existiert oder ggf. aktualisiert werden
|
* ein und prüft ob der Workflow schon existiert oder ggf. aktualisiert werden
|
||||||
* muss.
|
* muss.
|
||||||
*
|
* <p>
|
||||||
* Der Service migriert auch die alten zusätzlichen IBAN/BIC felder wenn der
|
* Der Service migriert auch die alten zusätzlichen IBAN/BIC felder wenn der
|
||||||
* Business partner erstmals neu angelegt wird.
|
* Business partner erstmals neu angelegt wird.
|
||||||
*
|
* <p>
|
||||||
* The service set also the flag NOSNAPSHOT=true for the crgosoftcreditor
|
* Falls bei der ersten Migration erkannt wird, dass die IBAN Nummern nicht
|
||||||
* document type.
|
* eindeutig sind wir der BusinessParter mit dem Event 300 angelegt.
|
||||||
|
* <p>
|
||||||
|
* Im Cargosoft Entity wird zusätzlich das flag NOSNAPSHOT=true gesetzt. Dies
|
||||||
|
* ist nur eine Performance Optimierung.
|
||||||
*
|
*
|
||||||
* @author rsoika
|
* @author rsoika
|
||||||
*
|
*
|
||||||
|
|
@ -110,90 +113,90 @@ public class BusinessPartnerImportService {
|
||||||
if (event == null || event.getDocument() == null) {
|
if (event == null || event.getDocument() == null) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
// check if source is already completed
|
// check source
|
||||||
if (event.getEventType() == DocumentEvent.ON_DOCUMENT_SAVE) {
|
if (event.getEventType() == DocumentEvent.ON_DOCUMENT_SAVE
|
||||||
// check type!
|
&& "cargosoftkreditor".equals(event.getDocument().getType())) {
|
||||||
if ("cargosoftkreditor".equals(event.getDocument().getType())) {
|
|
||||||
// set NOSNAPSHOT=true
|
|
||||||
event.getDocument().setItemValue(SnapshotService.NOSNAPSHOT, true);
|
|
||||||
|
|
||||||
// run only if we have the model 'businesspartner-*';
|
// set NOSNAPSHOT=true fro cargosoft item (migration)
|
||||||
if (modelService.findVersionsByRegEx("(businesspartner*)").size() == 0) {
|
event.getDocument().setItemValue(SnapshotService.NOSNAPSHOT, true);
|
||||||
// no business partner workflow found
|
|
||||||
return;
|
// run only if we have the model 'businesspartner-*';
|
||||||
|
if (modelService.findVersionsByRegEx("(businesspartner*)").size() == 0) {
|
||||||
|
// no business partner workflow found
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
logger.fine("Verify business partner object....");
|
||||||
|
ItemCollection importDoc = event.getDocument();
|
||||||
|
|
||||||
|
String name = event.getDocument().getItemValueString("name");
|
||||||
|
boolean isCreditor = name.toUpperCase().startsWith("K");
|
||||||
|
String partnerID = InvoiceUtil.buildBPID(name);
|
||||||
|
|
||||||
|
// Prüfen ob es diesen partner schon gibt?
|
||||||
|
ItemCollection businesspartner = lookupBusinessPartner(partnerID);
|
||||||
|
if (businesspartner == null) {
|
||||||
|
businesspartner = createBusinessPartner(partnerID);
|
||||||
|
}
|
||||||
|
ItemCollection oldBussinessPartnerItemColl = (ItemCollection) businesspartner.clone();
|
||||||
|
|
||||||
|
// Update Fields...
|
||||||
|
businesspartner.setItemValue("name", partnerID);
|
||||||
|
businesspartner.setItemValue("partner.id", partnerID);
|
||||||
|
if (isCreditor) {
|
||||||
|
businesspartner.setItemValue("cdtr.number", name);
|
||||||
|
if (businesspartner.isItemEmpty("cdtr.mail")) {
|
||||||
|
businesspartner.setItemValue("cdtr.mail", importDoc.getItemValueString("_vendor_email"));
|
||||||
}
|
}
|
||||||
|
} else {
|
||||||
logger.fine("Verify business partner object....");
|
businesspartner.setItemValue("dbtr.number", name);
|
||||||
ItemCollection importDoc = event.getDocument();
|
if (businesspartner.isItemEmpty("dbtr.mail")) {
|
||||||
|
businesspartner.setItemValue("dbtr.mail", importDoc.getItemValueString("_vendor_email"));
|
||||||
String name = event.getDocument().getItemValueString("name");
|
|
||||||
boolean isCreditor = name.toUpperCase().startsWith("K");
|
|
||||||
String partnerID = InvoiceUtil.buildBPID(name);
|
|
||||||
|
|
||||||
// Prüfen ob es diesen partner schon gibt?
|
|
||||||
ItemCollection businesspartner = lookupBusinessPartner(partnerID);
|
|
||||||
if (businesspartner == null) {
|
|
||||||
businesspartner = createBusinessPartner(partnerID);
|
|
||||||
}
|
|
||||||
ItemCollection oldBussinessPartnerItemColl = (ItemCollection) businesspartner.clone();
|
|
||||||
|
|
||||||
// Update Fields...
|
|
||||||
businesspartner.setItemValue("name", partnerID);
|
|
||||||
businesspartner.setItemValue("partner.id", partnerID);
|
|
||||||
if (isCreditor) {
|
|
||||||
businesspartner.setItemValue("cdtr.number", name);
|
|
||||||
if (businesspartner.isItemEmpty("cdtr.mail")) {
|
|
||||||
businesspartner.setItemValue("cdtr.mail", importDoc.getItemValueString("_vendor_email"));
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
businesspartner.setItemValue("dbtr.number", name);
|
|
||||||
if (businesspartner.isItemEmpty("dbtr.mail")) {
|
|
||||||
businesspartner.setItemValue("dbtr.mail", importDoc.getItemValueString("_vendor_email"));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
businesspartner.setItemValue("partner.country", importDoc.getItemValueString("_vendor_country"));
|
|
||||||
businesspartner.setItemValue("partner.name", importDoc.getItemValueString("_vendor_name"));
|
|
||||||
businesspartner.setItemValue("partner.phone", importDoc.getItemValueString("_vendor_phone"));
|
|
||||||
businesspartner.setItemValue("partner.address", importDoc.getItemValueString("_vendor_str"));
|
|
||||||
businesspartner.setItemValue("partner.zip", importDoc.getItemValueString("_vendor_zip_code"));
|
|
||||||
businesspartner.setItemValue("partner.city", importDoc.getItemValueString("_vendor_city"));
|
|
||||||
|
|
||||||
// hat sich das Objekt verändert?
|
|
||||||
if (!businesspartner.equals(oldBussinessPartnerItemColl)) {
|
|
||||||
|
|
||||||
// Prüfe IBAN auf plausibilität
|
|
||||||
List<ItemCollection> bankList = BusinessPartnerService.getBanks(businesspartner);
|
|
||||||
boolean ibanDublette = false;
|
|
||||||
List<String> dublettenIban = new ArrayList<>();
|
|
||||||
for (ItemCollection bank : bankList) {
|
|
||||||
String iban = bank.getItemValueString("iban");
|
|
||||||
// erkenne fehlerhaften kontonummern
|
|
||||||
if (dublettenIban.contains(iban)) {
|
|
||||||
// ACHTUNG - uneindeutige Bankverbindung
|
|
||||||
ibanDublette = true;
|
|
||||||
} else {
|
|
||||||
dublettenIban.add(iban);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
int eventID = 200; // default
|
|
||||||
// event errechnen
|
|
||||||
if (!businesspartner.hasItem(WorkflowKernel.LASTEVENT)) {
|
|
||||||
// create new!
|
|
||||||
if (ibanDublette) {
|
|
||||||
eventID = 300; // Exception
|
|
||||||
} else {
|
|
||||||
eventID = 100; // update/create
|
|
||||||
}
|
|
||||||
}
|
|
||||||
businesspartner.setEventID(eventID);
|
|
||||||
try {
|
|
||||||
workflowService.processWorkItemByNewTransaction(businesspartner);
|
|
||||||
} catch (AccessDeniedException | ProcessingErrorException | PluginException | ModelException e) {
|
|
||||||
logger.warning("Failed to update Business Partner Object " + name + " - " + e.getMessage());
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
businesspartner.setItemValue("partner.country", importDoc.getItemValueString("_vendor_country"));
|
||||||
|
businesspartner.setItemValue("partner.name", importDoc.getItemValueString("_vendor_name"));
|
||||||
|
businesspartner.setItemValue("partner.phone", importDoc.getItemValueString("_vendor_phone"));
|
||||||
|
businesspartner.setItemValue("partner.address", importDoc.getItemValueString("_vendor_str"));
|
||||||
|
businesspartner.setItemValue("partner.zip", importDoc.getItemValueString("_vendor_zip_code"));
|
||||||
|
businesspartner.setItemValue("partner.city", importDoc.getItemValueString("_vendor_city"));
|
||||||
|
|
||||||
|
// hat sich das Objekt verändert?
|
||||||
|
if (!businesspartner.equals(oldBussinessPartnerItemColl)) {
|
||||||
|
|
||||||
|
// Prüfe IBAN auf plausibilität
|
||||||
|
List<ItemCollection> bankList = BusinessPartnerService.getBanks(businesspartner);
|
||||||
|
boolean ibanDublette = false;
|
||||||
|
List<String> dublettenIban = new ArrayList<>();
|
||||||
|
for (ItemCollection bank : bankList) {
|
||||||
|
String iban = bank.getItemValueString("iban");
|
||||||
|
// erkenne fehlerhaften kontonummern
|
||||||
|
if (dublettenIban.contains(iban)) {
|
||||||
|
// ACHTUNG - uneindeutige Bankverbindung
|
||||||
|
ibanDublette = true;
|
||||||
|
} else {
|
||||||
|
dublettenIban.add(iban);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
int eventID = 200; // default
|
||||||
|
// event errechnen
|
||||||
|
if (!businesspartner.hasItem(WorkflowKernel.LASTEVENT)) {
|
||||||
|
// create new!
|
||||||
|
if (ibanDublette) {
|
||||||
|
eventID = 300; // Exception
|
||||||
|
} else {
|
||||||
|
eventID = 100; // update/create
|
||||||
|
}
|
||||||
|
}
|
||||||
|
businesspartner.setEventID(eventID);
|
||||||
|
try {
|
||||||
|
workflowService.processWorkItemByNewTransaction(businesspartner);
|
||||||
|
} catch (AccessDeniedException | ProcessingErrorException | PluginException | ModelException e) {
|
||||||
|
logger.warning("Failed to update Business Partner Object " + name + " - " + e.getMessage());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -634,9 +634,9 @@
|
||||||
<dc:Bounds height="50.0" width="110.0" x="1360.0" y="270.0"/>
|
<dc:Bounds height="50.0" width="110.0" x="1360.0" y="270.0"/>
|
||||||
</bpmndi:BPMNShape>
|
</bpmndi:BPMNShape>
|
||||||
<bpmndi:BPMNShape bpmnElement="event_aSdkwg" id="BPMNShape_uesqgg">
|
<bpmndi:BPMNShape bpmnElement="event_aSdkwg" id="BPMNShape_uesqgg">
|
||||||
<dc:Bounds height="36.0" width="36.0" x="437.0" y="277.0"/>
|
<dc:Bounds height="36.0" width="36.0" x="457.0" y="277.0"/>
|
||||||
<bpmndi:BPMNLabel id="BPMNLabel_AxKRKQ">
|
<bpmndi:BPMNLabel id="BPMNLabel_AxKRKQ">
|
||||||
<dc:Bounds height="20.0" width="100.0" x="405.0" y="316.0"/>
|
<dc:Bounds height="20.0" width="100.0" x="425.0" y="316.0"/>
|
||||||
</bpmndi:BPMNLabel>
|
</bpmndi:BPMNLabel>
|
||||||
</bpmndi:BPMNShape>
|
</bpmndi:BPMNShape>
|
||||||
<bpmndi:BPMNEdge bpmnElement="sequenceFlow_S9LVXg" id="BPMNEdge_xoCSiA" sourceElement="BPMNShape_CUpR6w" targetElement="BPMNShape_6IZk7Q">
|
<bpmndi:BPMNEdge bpmnElement="sequenceFlow_S9LVXg" id="BPMNEdge_xoCSiA" sourceElement="BPMNShape_CUpR6w" targetElement="BPMNShape_6IZk7Q">
|
||||||
|
|
@ -646,7 +646,7 @@
|
||||||
<bpmndi:BPMNShape bpmnElement="event_Tr0aug" id="BPMNShape_NEaJjA">
|
<bpmndi:BPMNShape bpmnElement="event_Tr0aug" id="BPMNShape_NEaJjA">
|
||||||
<dc:Bounds height="36.0" width="36.0" x="1227.0" y="277.0"/>
|
<dc:Bounds height="36.0" width="36.0" x="1227.0" y="277.0"/>
|
||||||
<bpmndi:BPMNLabel id="BPMNLabel_GkrCTA">
|
<bpmndi:BPMNLabel id="BPMNLabel_GkrCTA">
|
||||||
<dc:Bounds height="20.0" width="100.0" x="1195.0" y="316.0"/>
|
<dc:Bounds height="20.0" width="100.0" x="1193.0" y="258.0"/>
|
||||||
</bpmndi:BPMNLabel>
|
</bpmndi:BPMNLabel>
|
||||||
</bpmndi:BPMNShape>
|
</bpmndi:BPMNShape>
|
||||||
<bpmndi:BPMNEdge bpmnElement="sequenceFlow_1mXO8A" id="BPMNEdge_7CorJA" sourceElement="BPMNShape_NEaJjA" targetElement="BPMNShape_ghujeA">
|
<bpmndi:BPMNEdge bpmnElement="sequenceFlow_1mXO8A" id="BPMNEdge_7CorJA" sourceElement="BPMNShape_NEaJjA" targetElement="BPMNShape_ghujeA">
|
||||||
|
|
@ -703,8 +703,8 @@
|
||||||
</bpmndi:BPMNLabel>
|
</bpmndi:BPMNLabel>
|
||||||
</bpmndi:BPMNShape>
|
</bpmndi:BPMNShape>
|
||||||
<bpmndi:BPMNEdge bpmnElement="sequenceFlow_gC0I9w" id="BPMNEdge_0nCVvg" sourceElement="BPMNShape_T4k09g" targetElement="BPMNShape_ghujeA">
|
<bpmndi:BPMNEdge bpmnElement="sequenceFlow_gC0I9w" id="BPMNEdge_0nCVvg" sourceElement="BPMNShape_T4k09g" targetElement="BPMNShape_ghujeA">
|
||||||
<di:waypoint x="1360.0" y="185.0"/>
|
<di:waypoint x="1363.0" y="193.0"/>
|
||||||
<di:waypoint x="1390.0" y="185.0"/>
|
<di:waypoint x="1390.0" y="193.0"/>
|
||||||
<di:waypoint x="1390.0" y="270.0"/>
|
<di:waypoint x="1390.0" y="270.0"/>
|
||||||
</bpmndi:BPMNEdge>
|
</bpmndi:BPMNEdge>
|
||||||
<bpmndi:BPMNShape bpmnElement="task_delO7Q" id="BPMNShape_rEOMWA">
|
<bpmndi:BPMNShape bpmnElement="task_delO7Q" id="BPMNShape_rEOMWA">
|
||||||
|
|
@ -754,8 +754,8 @@
|
||||||
</bpmndi:BPMNEdge>
|
</bpmndi:BPMNEdge>
|
||||||
<bpmndi:BPMNEdge bpmnElement="sequenceFlow_b0Bj3Q" id="BPMNEdge_CDn41A" sourceElement="BPMNShape_rEOMWA" targetElement="BPMNShape_NEaJjA">
|
<bpmndi:BPMNEdge bpmnElement="sequenceFlow_b0Bj3Q" id="BPMNEdge_CDn41A" sourceElement="BPMNShape_rEOMWA" targetElement="BPMNShape_NEaJjA">
|
||||||
<di:waypoint x="770.0" y="540.0"/>
|
<di:waypoint x="770.0" y="540.0"/>
|
||||||
<di:waypoint x="1240.0" y="540.0"/>
|
<di:waypoint x="1246.0" y="540.0"/>
|
||||||
<di:waypoint x="1240.0" y="312.0"/>
|
<di:waypoint x="1246.0" y="313.0"/>
|
||||||
</bpmndi:BPMNEdge>
|
</bpmndi:BPMNEdge>
|
||||||
<bpmndi:BPMNEdge bpmnElement="sequenceFlow_T5L9aQ" id="BPMNEdge_dAQH1Q" sourceElement="BPMNShape_7JA0nw" targetElement="BPMNShape_FKXJtw">
|
<bpmndi:BPMNEdge bpmnElement="sequenceFlow_T5L9aQ" id="BPMNEdge_dAQH1Q" sourceElement="BPMNShape_7JA0nw" targetElement="BPMNShape_FKXJtw">
|
||||||
<di:waypoint x="770.0" y="295.0"/>
|
<di:waypoint x="770.0" y="295.0"/>
|
||||||
|
|
@ -769,7 +769,7 @@
|
||||||
</bpmndi:BPMNShape>
|
</bpmndi:BPMNShape>
|
||||||
<bpmndi:BPMNEdge bpmnElement="sequenceFlow_jAU3VA" id="BPMNEdge_2qLI2g" sourceElement="BPMNShape_6IZk7Q" targetElement="BPMNShape_uesqgg">
|
<bpmndi:BPMNEdge bpmnElement="sequenceFlow_jAU3VA" id="BPMNEdge_2qLI2g" sourceElement="BPMNShape_6IZk7Q" targetElement="BPMNShape_uesqgg">
|
||||||
<di:waypoint x="390.0" y="295.0"/>
|
<di:waypoint x="390.0" y="295.0"/>
|
||||||
<di:waypoint x="437.0" y="295.0"/>
|
<di:waypoint x="457.0" y="295.0"/>
|
||||||
</bpmndi:BPMNEdge>
|
</bpmndi:BPMNEdge>
|
||||||
<bpmndi:BPMNEdge bpmnElement="sequenceFlow_BHsRkQ" id="BPMNEdge_1LX47g" sourceElement="BPMNShape_mG4csA" targetElement="BPMNShape_rEOMWA">
|
<bpmndi:BPMNEdge bpmnElement="sequenceFlow_BHsRkQ" id="BPMNEdge_1LX47g" sourceElement="BPMNShape_mG4csA" targetElement="BPMNShape_rEOMWA">
|
||||||
<di:waypoint x="593.0" y="535.0"/>
|
<di:waypoint x="593.0" y="535.0"/>
|
||||||
|
|
@ -782,7 +782,7 @@
|
||||||
<di:waypoint x="675.0" y="510.0"/>
|
<di:waypoint x="675.0" y="510.0"/>
|
||||||
</bpmndi:BPMNEdge>
|
</bpmndi:BPMNEdge>
|
||||||
<bpmndi:BPMNEdge bpmnElement="sequenceFlow_8O1EtQ" id="BPMNEdge_JxSLfA" sourceElement="BPMNShape_uesqgg" targetElement="BPMNShape_7JA0nw">
|
<bpmndi:BPMNEdge bpmnElement="sequenceFlow_8O1EtQ" id="BPMNEdge_JxSLfA" sourceElement="BPMNShape_uesqgg" targetElement="BPMNShape_7JA0nw">
|
||||||
<di:waypoint x="473.0" y="295.0"/>
|
<di:waypoint x="493.0" y="295.0"/>
|
||||||
<di:waypoint x="660.0" y="295.0"/>
|
<di:waypoint x="660.0" y="295.0"/>
|
||||||
</bpmndi:BPMNEdge>
|
</bpmndi:BPMNEdge>
|
||||||
<bpmndi:BPMNShape bpmnElement="event_6250fg" id="BPMNShape_v5Xzvg">
|
<bpmndi:BPMNShape bpmnElement="event_6250fg" id="BPMNShape_v5Xzvg">
|
||||||
|
|
|
||||||
|
|
@ -644,13 +644,13 @@
|
||||||
<di:waypoint x="340.0" y="295.0"/>
|
<di:waypoint x="340.0" y="295.0"/>
|
||||||
</bpmndi:BPMNEdge>
|
</bpmndi:BPMNEdge>
|
||||||
<bpmndi:BPMNShape bpmnElement="event_Tr0aug" id="BPMNShape_NEaJjA">
|
<bpmndi:BPMNShape bpmnElement="event_Tr0aug" id="BPMNShape_NEaJjA">
|
||||||
<dc:Bounds height="36.0" width="36.0" x="1227.0" y="277.0"/>
|
<dc:Bounds height="36.0" width="36.0" x="1237.0" y="277.0"/>
|
||||||
<bpmndi:BPMNLabel id="BPMNLabel_GkrCTA">
|
<bpmndi:BPMNLabel id="BPMNLabel_GkrCTA">
|
||||||
<dc:Bounds height="20.0" width="100.0" x="1195.0" y="316.0"/>
|
<dc:Bounds height="20.0" width="100.0" x="1203.0" y="255.0"/>
|
||||||
</bpmndi:BPMNLabel>
|
</bpmndi:BPMNLabel>
|
||||||
</bpmndi:BPMNShape>
|
</bpmndi:BPMNShape>
|
||||||
<bpmndi:BPMNEdge bpmnElement="sequenceFlow_1mXO8A" id="BPMNEdge_7CorJA" sourceElement="BPMNShape_NEaJjA" targetElement="BPMNShape_ghujeA">
|
<bpmndi:BPMNEdge bpmnElement="sequenceFlow_1mXO8A" id="BPMNEdge_7CorJA" sourceElement="BPMNShape_NEaJjA" targetElement="BPMNShape_ghujeA">
|
||||||
<di:waypoint x="1263.0" y="295.0"/>
|
<di:waypoint x="1273.0" y="295.0"/>
|
||||||
<di:waypoint x="1360.0" y="295.0"/>
|
<di:waypoint x="1360.0" y="295.0"/>
|
||||||
</bpmndi:BPMNEdge>
|
</bpmndi:BPMNEdge>
|
||||||
<bpmndi:BPMNEdge bpmnElement="sequenceFlow_rwdWxw" id="BPMNEdge_t88dUw" sourceElement="BPMNShape_ghujeA" targetElement="BPMNShape_85k4rg">
|
<bpmndi:BPMNEdge bpmnElement="sequenceFlow_rwdWxw" id="BPMNEdge_t88dUw" sourceElement="BPMNShape_ghujeA" targetElement="BPMNShape_85k4rg">
|
||||||
|
|
@ -754,8 +754,8 @@
|
||||||
</bpmndi:BPMNEdge>
|
</bpmndi:BPMNEdge>
|
||||||
<bpmndi:BPMNEdge bpmnElement="sequenceFlow_b0Bj3Q" id="BPMNEdge_CDn41A" sourceElement="BPMNShape_rEOMWA" targetElement="BPMNShape_NEaJjA">
|
<bpmndi:BPMNEdge bpmnElement="sequenceFlow_b0Bj3Q" id="BPMNEdge_CDn41A" sourceElement="BPMNShape_rEOMWA" targetElement="BPMNShape_NEaJjA">
|
||||||
<di:waypoint x="770.0" y="540.0"/>
|
<di:waypoint x="770.0" y="540.0"/>
|
||||||
<di:waypoint x="1240.0" y="540.0"/>
|
<di:waypoint x="1254.0" y="540.0"/>
|
||||||
<di:waypoint x="1240.0" y="312.0"/>
|
<di:waypoint x="1254.0" y="313.0"/>
|
||||||
</bpmndi:BPMNEdge>
|
</bpmndi:BPMNEdge>
|
||||||
<bpmndi:BPMNEdge bpmnElement="sequenceFlow_T5L9aQ" id="BPMNEdge_dAQH1Q" sourceElement="BPMNShape_7JA0nw" targetElement="BPMNShape_FKXJtw">
|
<bpmndi:BPMNEdge bpmnElement="sequenceFlow_T5L9aQ" id="BPMNEdge_dAQH1Q" sourceElement="BPMNShape_7JA0nw" targetElement="BPMNShape_FKXJtw">
|
||||||
<di:waypoint x="770.0" y="295.0"/>
|
<di:waypoint x="770.0" y="295.0"/>
|
||||||
|
|
@ -827,7 +827,7 @@
|
||||||
</bpmndi:BPMNEdge>
|
</bpmndi:BPMNEdge>
|
||||||
<bpmndi:BPMNEdge bpmnElement="sequenceFlow_neSsFQ" id="BPMNEdge_b7C0wQ" sourceElement="BPMNShape_VljsIw" targetElement="BPMNShape_NEaJjA">
|
<bpmndi:BPMNEdge bpmnElement="sequenceFlow_neSsFQ" id="BPMNEdge_b7C0wQ" sourceElement="BPMNShape_VljsIw" targetElement="BPMNShape_NEaJjA">
|
||||||
<di:waypoint x="1170.0" y="295.0"/>
|
<di:waypoint x="1170.0" y="295.0"/>
|
||||||
<di:waypoint x="1227.0" y="295.0"/>
|
<di:waypoint x="1237.0" y="295.0"/>
|
||||||
</bpmndi:BPMNEdge>
|
</bpmndi:BPMNEdge>
|
||||||
<bpmndi:BPMNShape bpmnElement="event_AMs05g" id="BPMNShape_rS0hsw">
|
<bpmndi:BPMNShape bpmnElement="event_AMs05g" id="BPMNShape_rS0hsw">
|
||||||
<dc:Bounds height="36.0" width="36.0" x="477.0" y="517.0"/>
|
<dc:Bounds height="36.0" width="36.0" x="477.0" y="517.0"/>
|
||||||
|
|
@ -862,15 +862,15 @@
|
||||||
<di:waypoint x="847.0" y="195.0"/>
|
<di:waypoint x="847.0" y="195.0"/>
|
||||||
</bpmndi:BPMNEdge>
|
</bpmndi:BPMNEdge>
|
||||||
<bpmndi:BPMNShape bpmnElement="event_u8OBFg" id="BPMNShape_Kp730Q">
|
<bpmndi:BPMNShape bpmnElement="event_u8OBFg" id="BPMNShape_Kp730Q">
|
||||||
<dc:Bounds height="36.0" width="36.0" x="1137.0" y="177.0"/>
|
<dc:Bounds height="36.0" width="36.0" x="1147.0" y="177.0"/>
|
||||||
<bpmndi:BPMNLabel id="BPMNLabel_iUQ02A">
|
<bpmndi:BPMNLabel id="BPMNLabel_iUQ02A">
|
||||||
<dc:Bounds height="20.0" width="100.0" x="1105.0" y="216.0"/>
|
<dc:Bounds height="20.0" width="100.0" x="1115.0" y="216.0"/>
|
||||||
</bpmndi:BPMNLabel>
|
</bpmndi:BPMNLabel>
|
||||||
</bpmndi:BPMNShape>
|
</bpmndi:BPMNShape>
|
||||||
<bpmndi:BPMNEdge bpmnElement="sequenceFlow_zd6RWA" id="BPMNEdge_6qKC4A" sourceElement="BPMNShape_VljsIw" targetElement="BPMNShape_Kp730Q">
|
<bpmndi:BPMNEdge bpmnElement="sequenceFlow_zd6RWA" id="BPMNEdge_6qKC4A" sourceElement="BPMNShape_VljsIw" targetElement="BPMNShape_Kp730Q">
|
||||||
<di:waypoint x="1114.0" y="270.0"/>
|
<di:waypoint x="1114.0" y="270.0"/>
|
||||||
<di:waypoint x="1114.0" y="195.0"/>
|
<di:waypoint x="1114.0" y="195.0"/>
|
||||||
<di:waypoint x="1137.0" y="195.0"/>
|
<di:waypoint x="1147.0" y="195.0"/>
|
||||||
</bpmndi:BPMNEdge>
|
</bpmndi:BPMNEdge>
|
||||||
<bpmndi:BPMNEdge bpmnElement="sequenceFlow_rNZ3tw" id="BPMNEdge_zrajzA" sourceElement="BPMNShape_VljsIw" targetElement="BPMNShape_FKXJtw">
|
<bpmndi:BPMNEdge bpmnElement="sequenceFlow_rNZ3tw" id="BPMNEdge_zrajzA" sourceElement="BPMNShape_VljsIw" targetElement="BPMNShape_FKXJtw">
|
||||||
<di:waypoint x="1080.0" y="270.0"/>
|
<di:waypoint x="1080.0" y="270.0"/>
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue