import prozess
This commit is contained in:
parent
302e4e5b08
commit
cde1b2a2eb
2 changed files with 298 additions and 17 deletions
|
|
@ -0,0 +1,180 @@
|
|||
/*
|
||||
* Imixs-Workflow
|
||||
*
|
||||
* Copyright (C) 2001-2020 Imixs Software Solutions GmbH,
|
||||
* http://www.imixs.com
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU General Public License
|
||||
* as published by the Free Software Foundation; either version 2
|
||||
* of the License, or (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* General Public License for more details.
|
||||
*
|
||||
* You can receive a copy of the GNU General Public
|
||||
* License at http://www.gnu.org/licenses/gpl.html
|
||||
*
|
||||
* Project:
|
||||
* https://www.imixs.org
|
||||
* https://github.com/imixs/imixs-workflow
|
||||
*
|
||||
* Contributors:
|
||||
* Imixs Software Solutions GmbH - Project Management
|
||||
* Ralph Soika - Software Developer
|
||||
*/
|
||||
|
||||
package com.alexanderlogistics.xml;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.logging.Logger;
|
||||
|
||||
import org.imixs.workflow.ItemCollection;
|
||||
import org.imixs.workflow.engine.DocumentEvent;
|
||||
import org.imixs.workflow.engine.DocumentService;
|
||||
import org.imixs.workflow.engine.ModelService;
|
||||
import org.imixs.workflow.engine.WorkflowService;
|
||||
import org.imixs.workflow.exceptions.AccessDeniedException;
|
||||
import org.imixs.workflow.exceptions.ModelException;
|
||||
import org.imixs.workflow.exceptions.PluginException;
|
||||
import org.imixs.workflow.exceptions.ProcessingErrorException;
|
||||
import org.imixs.workflow.exceptions.QueryException;
|
||||
|
||||
import com.alexanderlogistics.InvoiceUtil;
|
||||
|
||||
import jakarta.ejb.EJB;
|
||||
import jakarta.ejb.Stateless;
|
||||
import jakarta.enterprise.event.Observes;
|
||||
|
||||
/**
|
||||
* Der BusinessPartnerImportService hängt sich an den standard CSVImport Service
|
||||
* der die Cargosoft Stammdaten aktualisiert.
|
||||
* Es ist ein simples Observer Pattern das auf das Document Event
|
||||
* "ON_DOCUMENT_SAVE" reagiert. Hier hängt sich der BusinessPartnerImportService
|
||||
* ein und prüft ob der Workflow schon existiert oder ggf. aktualisiert werden
|
||||
* muss.
|
||||
*
|
||||
*
|
||||
* @author rsoika
|
||||
*
|
||||
*/
|
||||
@Stateless
|
||||
public class BusinessPartnerImportService {
|
||||
|
||||
private static Logger logger = Logger.getLogger(BusinessPartnerImportService.class.getName());
|
||||
public static final String OPTION_MANDANT_ID = "mandant.id";
|
||||
public static final String DATE_FORMAT = "yyyy-MM-dd'T'HH:mm:ss";
|
||||
public static final String REGEX_IMPORTTEXTPATTERN = "^R[1-8] .*$";
|
||||
|
||||
@EJB
|
||||
WorkflowService workflowService;
|
||||
|
||||
@EJB
|
||||
DocumentService documentService;
|
||||
|
||||
@EJB
|
||||
ModelService modelService;
|
||||
|
||||
/**
|
||||
* Die Methode reagiert auf das CDI DocumentEvent beim Import von cargosoft
|
||||
* cargosoftkreditor documenten.
|
||||
*
|
||||
*
|
||||
*/
|
||||
public void onEvent(@Observes DocumentEvent event) {
|
||||
|
||||
if (event == null || event.getDocument() == null) {
|
||||
return;
|
||||
}
|
||||
// check if source is already completed
|
||||
if (event.getEventType() == DocumentEvent.ON_DOCUMENT_SAVE) {
|
||||
// check type!
|
||||
if ("cargosoftkreditor".equals(event.getDocument().getType())) {
|
||||
logger.info("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();
|
||||
}
|
||||
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.email")) {
|
||||
businesspartner.setItemValue("cdtr.email", importDoc.getItemValueString("_vendor_email"));
|
||||
}
|
||||
} else {
|
||||
businesspartner.setItemValue("dbtr.number", name);
|
||||
if (businesspartner.isItemEmpty("dbtr.email")) {
|
||||
businesspartner.setItemValue("dbtr.email", 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)) {
|
||||
businesspartner.event(201); // update/create
|
||||
try {
|
||||
workflowService.processWorkItemByNewTransaction(businesspartner);
|
||||
} catch (AccessDeniedException | ProcessingErrorException | PluginException | ModelException e) {
|
||||
logger.warning("Failed to update Business Partner Object " + name + " - " + e.getMessage());
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* Erstellt ein neues leeres Business Partner Object
|
||||
*
|
||||
* @return
|
||||
*/
|
||||
private ItemCollection createBusinessPartner() {
|
||||
ItemCollection businessPartner = new ItemCollection();
|
||||
businessPartner.setType("workitem");
|
||||
businessPartner.setWorkflowGroup("Business Partner");
|
||||
businessPartner.task(1000);
|
||||
|
||||
return businessPartner;
|
||||
}
|
||||
|
||||
/**
|
||||
* Sucht nach einem Business partner
|
||||
*
|
||||
* @param id
|
||||
* @return
|
||||
*/
|
||||
private ItemCollection lookupBusinessPartner(String id) {
|
||||
String query = "(type:workitem OR type:workitemarchive) AND ($modelversion:businesspartner*) AND (name:" + id
|
||||
+ ")";
|
||||
|
||||
try {
|
||||
List<ItemCollection> result = documentService.find(query, 1, 0, null, false);
|
||||
if (result.size() > 0) {
|
||||
return result.get(0);
|
||||
}
|
||||
} catch (QueryException e) {
|
||||
logger.warning("Failed to query businesspartner: " + query + " - Error: " + e.getMessage());
|
||||
|
||||
}
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
|
@ -21,6 +21,8 @@
|
|||
<imixs:value><![CDATA[org.imixs.workflow.engine.plugins.IntervalPlugin]]></imixs:value>
|
||||
<imixs:value><![CDATA[org.imixs.workflow.engine.plugins.MailPlugin]]></imixs:value>
|
||||
<imixs:value><![CDATA[org.imixs.workflow.engine.plugins.ResultPlugin]]></imixs:value>
|
||||
<imixs:value><![CDATA[org.imixs.marty.team.TeamPlugin]]></imixs:value>
|
||||
<imixs:value><![CDATA[org.imixs.marty.plugins.SequenceNumberPlugin]]></imixs:value>
|
||||
</imixs:item>
|
||||
<imixs:item name="txtfieldmapping" type="xs:string">
|
||||
<imixs:value><![CDATA[Creator|$creator]]></imixs:value>
|
||||
|
|
@ -44,6 +46,9 @@
|
|||
<bpmn2:flowNodeRef>event_Tr0aug</bpmn2:flowNodeRef>
|
||||
<bpmn2:flowNodeRef>dataObject_UQIXAQ</bpmn2:flowNodeRef>
|
||||
<bpmn2:flowNodeRef>event_vwH0cA</bpmn2:flowNodeRef>
|
||||
<bpmn2:flowNodeRef>textAnnotation_LyGTCw</bpmn2:flowNodeRef>
|
||||
<bpmn2:flowNodeRef>event_TuyuwQ</bpmn2:flowNodeRef>
|
||||
<bpmn2:flowNodeRef>event_h0Kk5g</bpmn2:flowNodeRef>
|
||||
</bpmn2:lane>
|
||||
</bpmn2:laneSet>
|
||||
<bpmn2:task id="task_ToMZaQ" imixs:processid="1000" name="Neuanlage">
|
||||
|
|
@ -65,20 +70,47 @@
|
|||
<bpmn2:documentation id="documentation_Tzm1bw"/>
|
||||
</bpmn2:sequenceFlow>
|
||||
<bpmn2:task id="task_Q80A1Q" imixs:processid="1100" name="Aktiv">
|
||||
<bpmn2:extensionElements/>
|
||||
<bpmn2:extensionElements>
|
||||
<imixs:item name="txtimageurl" type="xs:string">
|
||||
<imixs:value><![CDATA[typcn-user|typcn-tick,imixs-success]]></imixs:value>
|
||||
</imixs:item>
|
||||
<imixs:item name="txtworkflowsummary" type="xs:string">
|
||||
<imixs:value><![CDATA[<itemvalue>partner.name</itemvalue> (<itemvalue>partner.id</itemvalue>)]]></imixs:value>
|
||||
</imixs:item>
|
||||
</bpmn2:extensionElements>
|
||||
<bpmn2:documentation id="documentation_M7b42w"/>
|
||||
<bpmn2:incoming>sequenceFlow_knUYpQ</bpmn2:incoming>
|
||||
<bpmn2:outgoing>sequenceFlow_2uNvPw</bpmn2:outgoing>
|
||||
<bpmn2:outgoing>sequenceFlow_NNbMhg</bpmn2:outgoing>
|
||||
<bpmn2:incoming>sequenceFlow_avahXg</bpmn2:incoming>
|
||||
<bpmn2:incoming>sequenceFlow_9atLFA</bpmn2:incoming>
|
||||
</bpmn2:task>
|
||||
<bpmn2:task id="task_B8Pi7A" imixs:processid="1800" name="Gesperrt">
|
||||
<bpmn2:extensionElements/>
|
||||
<bpmn2:extensionElements>
|
||||
<imixs:item name="txtworkflowsummary" type="xs:string">
|
||||
<imixs:value><![CDATA[<itemvalue>partner.name</itemvalue> (<itemvalue>partner.id</itemvalue>)]]></imixs:value>
|
||||
</imixs:item>
|
||||
<imixs:item name="txtimageurl" type="xs:string">
|
||||
<imixs:value><![CDATA[typcn-user|typcn-times,imixs-error]]></imixs:value>
|
||||
</imixs:item>
|
||||
</bpmn2:extensionElements>
|
||||
<bpmn2:documentation id="documentation_0B9wKQ"/>
|
||||
<bpmn2:incoming>sequenceFlow_1mXO8A</bpmn2:incoming>
|
||||
<bpmn2:outgoing>sequenceFlow_rwdWxw</bpmn2:outgoing>
|
||||
<bpmn2:incoming>sequenceFlow_gC0I9w</bpmn2:incoming>
|
||||
</bpmn2:task>
|
||||
<bpmn2:intermediateCatchEvent id="event_aSdkwg" imixs:activityid="10" name="Aktivieren">
|
||||
<bpmn2:intermediateCatchEvent id="event_aSdkwg" imixs:activityid="201" name="[import]">
|
||||
<bpmn2:extensionElements>
|
||||
<imixs:item name="keypublicresult" type="xs:string">
|
||||
<imixs:value><![CDATA[0]]></imixs:value>
|
||||
</imixs:item>
|
||||
<imixs:item name="rtfresultlog" type="xs:string">
|
||||
<imixs:value><![CDATA[Business Partner aus Cargosoft Importiert]]></imixs:value>
|
||||
</imixs:item>
|
||||
<imixs:item name="txtactivityresult" type="xs:string">
|
||||
<imixs:value><![CDATA[<item name="process">Partnermanagement</item>]]></imixs:value>
|
||||
</imixs:item>
|
||||
</bpmn2:extensionElements>
|
||||
<bpmn2:documentation id="documentation_5409Kg"/>
|
||||
<bpmn2:incoming>sequenceFlow_S9LVXg</bpmn2:incoming>
|
||||
<bpmn2:outgoing>sequenceFlow_knUYpQ</bpmn2:outgoing>
|
||||
|
|
@ -119,25 +151,26 @@
|
|||
<item name="partner.id" type="text" span="4" readonly="true" label="Partner ID:"/>
|
||||
</imixs-form-section>
|
||||
|
||||
<imixs-form-section columns="1" label="Adresse">
|
||||
<imixs-form-section columns="1" label="Adresse" readonly="true">
|
||||
<item name="partner.address" type="text" span="8" required="false" label="Adresse:" />
|
||||
<item name="partner.address.sub1" type="text" span="4" required="false" label="Zusatz" />
|
||||
<item name="partner.country" type="custom" path="country" span="4" readonly="false" label="Land:" />
|
||||
<item name="partner.zip" type="text" span="1" required="false" label="PLZ:" />
|
||||
<item name="partner.city" type="text" span="7" required="false" label="Stadt:" />
|
||||
<item name="partner.language" type="text" readonly="false" span="4" label="Sprache:" />
|
||||
<item name="partner.phone" type="text" readonly="false" span="4" label="Tel.:" />
|
||||
</imixs-form-section>
|
||||
|
||||
|
||||
<imixs-form-section columns="1" label="Rechnungseingang ">
|
||||
<item name="cdtr.number" type="text" span="2" readonly="true" label="Kreditoren Nr.:" />
|
||||
<item name="cdtr.mail" type="text" span="4" readonly="false" label="E-Mail:" />
|
||||
<item name="cdtr.email" type="text" span="4" readonly="false" label="E-Mail:" />
|
||||
<item name="cdtr.creditperiod" type="text" span="2" readonly="false" label="Zahlungsziel (Tage):" />
|
||||
</imixs-form-section>
|
||||
|
||||
<imixs-form-section columns="1" label="Rechnungsausgang ">
|
||||
<item name="dbtr.number" type="text" span="2" readonly="true" label="Debitoren Nr.:" />
|
||||
<item name="dbtr.mail" type="text" span="4" readonly="false" label="E-Mail SOA/Mahnungen:" />
|
||||
<item name="dbtr.email" type="text" span="4" readonly="false" label="E-Mail SOA/Mahnungen:" />
|
||||
<item name="dbtr.creditperiod" type="text" span="2" readonly="false" label="Zahlungsziel (Tage):" />
|
||||
</imixs-form-section>
|
||||
|
||||
|
|
@ -159,13 +192,50 @@
|
|||
<bpmn2:association id="association_mpLQEQ" sourceRef="dataObject_UQIXAQ" targetRef="task_Q80A1Q">
|
||||
<bpmn2:documentation id="documentation_oVnaJw"/>
|
||||
</bpmn2:association>
|
||||
<bpmn2:textAnnotation id="textAnnotation_LyGTCw" textFormat="">
|
||||
<bpmn2:text id="text_M05BXg"><![CDATA[Neuanalge erfolgt über den Cargosoft CSV Import im BusinessPartnerImportService]]></bpmn2:text>
|
||||
<bpmn2:documentation id="documentation_wdTBKA"/>
|
||||
</bpmn2:textAnnotation>
|
||||
<bpmn2:association id="association_83sZPw" sourceRef="event_aSdkwg" targetRef="textAnnotation_LyGTCw">
|
||||
<bpmn2:documentation id="documentation_FKcIcg"/>
|
||||
</bpmn2:association>
|
||||
<bpmn2:intermediateCatchEvent id="event_TuyuwQ" imixs:activityid="201" name="[update]">
|
||||
<bpmn2:extensionElements>
|
||||
<imixs:item name="keypublicresult" type="xs:string">
|
||||
<imixs:value><![CDATA[0]]></imixs:value>
|
||||
</imixs:item>
|
||||
<imixs:item name="txtactivityresult" type="xs:string">
|
||||
<imixs:value><![CDATA[Business Partner aktualisiert aus Cargosoft ]]></imixs:value>
|
||||
</imixs:item>
|
||||
</bpmn2:extensionElements>
|
||||
<bpmn2:documentation id="documentation_wy3OSA"/>
|
||||
<bpmn2:outgoing>sequenceFlow_9atLFA</bpmn2:outgoing>
|
||||
</bpmn2:intermediateCatchEvent>
|
||||
<bpmn2:sequenceFlow id="sequenceFlow_9atLFA" sourceRef="event_TuyuwQ" targetRef="task_Q80A1Q">
|
||||
<bpmn2:documentation id="documentation_LHM8vg"/>
|
||||
</bpmn2:sequenceFlow>
|
||||
<bpmn2:intermediateCatchEvent id="event_h0Kk5g" imixs:activityid="201" name="[update]">
|
||||
<bpmn2:extensionElements>
|
||||
<imixs:item name="keypublicresult" type="xs:string">
|
||||
<imixs:value><![CDATA[0]]></imixs:value>
|
||||
</imixs:item>
|
||||
<imixs:item name="txtactivityresult" type="xs:string">
|
||||
<imixs:value><![CDATA[Business Partner aktualisiert aus Cargosoft ]]></imixs:value>
|
||||
</imixs:item>
|
||||
</bpmn2:extensionElements>
|
||||
<bpmn2:documentation id="documentation_AnqGdA"/>
|
||||
<bpmn2:outgoing>sequenceFlow_gC0I9w</bpmn2:outgoing>
|
||||
</bpmn2:intermediateCatchEvent>
|
||||
<bpmn2:sequenceFlow id="sequenceFlow_gC0I9w" sourceRef="event_h0Kk5g" targetRef="task_B8Pi7A">
|
||||
<bpmn2:documentation id="documentation_gfdNnQ"/>
|
||||
</bpmn2:sequenceFlow>
|
||||
</bpmn2:process>
|
||||
<bpmndi:BPMNDiagram id="BPMNDiagram_1" name="OpenBPMN Diagram">
|
||||
<bpmndi:BPMNPlane bpmnElement="collaboration_1" id="BPMNPlane_1">
|
||||
<bpmndi:BPMNShape bpmnElement="event_WmkBvw" id="BPMNShape_heefeQ">
|
||||
<dc:Bounds height="36.0" width="36.0" x="57.0" y="167.0"/>
|
||||
<dc:Bounds height="36.0" width="36.0" x="77.0" y="167.0"/>
|
||||
<bpmndi:BPMNLabel id="BPMNLabel_6qfN6w">
|
||||
<dc:Bounds height="20.0" width="100.0" x="25.0" y="206.0"/>
|
||||
<dc:Bounds height="20.0" width="100.0" x="45.0" y="206.0"/>
|
||||
</bpmndi:BPMNLabel>
|
||||
</bpmndi:BPMNShape>
|
||||
<bpmndi:BPMNShape bpmnElement="event_1clvlg" id="BPMNShape_85k4rg">
|
||||
|
|
@ -178,13 +248,13 @@
|
|||
<dc:Bounds height="50.0" width="110.0" x="200.0" y="160.0"/>
|
||||
</bpmndi:BPMNShape>
|
||||
<bpmndi:BPMNShape bpmnElement="participant_oxb3dg" id="BPMNShape_mqlDUA">
|
||||
<dc:Bounds height="360.0" width="1110.0" x="-30.0" y="40.0"/>
|
||||
<dc:Bounds height="550.0" width="1420.0" x="-30.0" y="40.0"/>
|
||||
</bpmndi:BPMNShape>
|
||||
<bpmndi:BPMNShape bpmnElement="lane_Zxa2TA" id="BPMNShape_Lane_1cDN5A">
|
||||
<dc:Bounds height="360.0" width="1080.0" x="0.0" y="40.0"/>
|
||||
<dc:Bounds height="550.0" width="1390.0" x="0.0" y="40.0"/>
|
||||
</bpmndi:BPMNShape>
|
||||
<bpmndi:BPMNEdge bpmnElement="sequenceFlow_25otUg" id="BPMNEdge_NHnc3g" sourceElement="BPMNShape_heefeQ" targetElement="BPMNShape_CUpR6w">
|
||||
<di:waypoint x="93.0" y="185.0"/>
|
||||
<di:waypoint x="113.0" y="185.0"/>
|
||||
<di:waypoint x="200.0" y="185.0"/>
|
||||
</bpmndi:BPMNEdge>
|
||||
<bpmndi:BPMNShape bpmnElement="task_Q80A1Q" id="BPMNShape_7JA0nw">
|
||||
|
|
@ -242,16 +312,15 @@
|
|||
<di:waypoint x="380.0" y="80.0"/>
|
||||
</bpmndi:BPMNEdge>
|
||||
<bpmndi:BPMNShape bpmnElement="event_vwH0cA" id="BPMNShape_OXGg8Q">
|
||||
<dc:Bounds height="36.0" width="36.0" x="427.0" y="237.0"/>
|
||||
<dc:Bounds height="36.0" width="36.0" x="657.0" y="67.0"/>
|
||||
<bpmndi:BPMNLabel id="BPMNLabel_KaHfJQ">
|
||||
<dc:Bounds height="20.0" width="100.0" x="395.0" y="276.0"/>
|
||||
<dc:Bounds height="20.0" width="100.0" x="625.0" y="106.0"/>
|
||||
</bpmndi:BPMNLabel>
|
||||
</bpmndi:BPMNShape>
|
||||
<bpmndi:BPMNEdge bpmnElement="sequenceFlow_avahXg" id="BPMNEdge_odMtvQ" sourceElement="BPMNShape_OXGg8Q" targetElement="BPMNShape_7JA0nw">
|
||||
<di:waypoint x="462.0" y="260.0"/>
|
||||
<di:waypoint x="480.0" y="260.0"/>
|
||||
<di:waypoint x="480.0" y="185.0"/>
|
||||
<di:waypoint x="490.0" y="185.0"/>
|
||||
<di:waypoint x="665.0" y="100.0"/>
|
||||
<di:waypoint x="575.0" y="100.0"/>
|
||||
<di:waypoint x="575.0" y="160.0"/>
|
||||
</bpmndi:BPMNEdge>
|
||||
<bpmndi:BPMNEdge bpmnElement="association_uvV8uA" id="BPMNEdge_3Mtxfw" sourceElement="BPMNShape_mqlDUA" targetElement="BPMNShape_7JA0nw">
|
||||
<di:waypoint x="525.0" y="220.0"/>
|
||||
|
|
@ -262,6 +331,38 @@
|
|||
<di:waypoint x="550.0" y="80.0"/>
|
||||
<di:waypoint x="550.0" y="160.0"/>
|
||||
</bpmndi:BPMNEdge>
|
||||
<bpmndi:BPMNShape bpmnElement="textAnnotation_LyGTCw" id="BPMNShape_SbxnGw">
|
||||
<dc:Bounds height="85.0" width="228.0" x="60.0" y="300.0"/>
|
||||
</bpmndi:BPMNShape>
|
||||
<bpmndi:BPMNEdge bpmnElement="association_83sZPw" id="BPMNEdge_p0XWxg" sourceElement="BPMNShape_uesqgg" targetElement="BPMNShape_SbxnGw">
|
||||
<di:waypoint x="395.0" y="203.0"/>
|
||||
<di:waypoint x="395.0" y="345.0"/>
|
||||
<di:waypoint x="288.0" y="345.0"/>
|
||||
</bpmndi:BPMNEdge>
|
||||
<bpmndi:BPMNShape bpmnElement="event_TuyuwQ" id="BPMNShape_fTy7mg">
|
||||
<dc:Bounds height="36.0" width="36.0" x="447.0" y="237.0"/>
|
||||
<bpmndi:BPMNLabel id="BPMNLabel_033n1A">
|
||||
<dc:Bounds height="20.0" width="100.0" x="415.0" y="276.0"/>
|
||||
</bpmndi:BPMNLabel>
|
||||
</bpmndi:BPMNShape>
|
||||
<bpmndi:BPMNEdge bpmnElement="sequenceFlow_9atLFA" id="BPMNEdge_BC4pwQ" sourceElement="BPMNShape_fTy7mg" targetElement="BPMNShape_7JA0nw">
|
||||
<di:waypoint x="465.0" y="237.0"/>
|
||||
<di:waypoint x="465.0" y="225.0"/>
|
||||
<di:waypoint x="520.0" y="225.0"/>
|
||||
<di:waypoint x="520.0" y="210.0"/>
|
||||
</bpmndi:BPMNEdge>
|
||||
<bpmndi:BPMNShape bpmnElement="event_h0Kk5g" id="BPMNShape_T4k09g">
|
||||
<dc:Bounds height="36.0" width="36.0" x="497.0" y="427.0"/>
|
||||
<bpmndi:BPMNLabel id="BPMNLabel_lX0KlA">
|
||||
<dc:Bounds height="20.0" width="100.0" x="465.0" y="466.0"/>
|
||||
</bpmndi:BPMNLabel>
|
||||
</bpmndi:BPMNShape>
|
||||
<bpmndi:BPMNEdge bpmnElement="sequenceFlow_gC0I9w" id="BPMNEdge_0nCVvg" sourceElement="BPMNShape_T4k09g" targetElement="BPMNShape_ghujeA">
|
||||
<di:waypoint x="515.0" y="427.0"/>
|
||||
<di:waypoint x="515.0" y="400.0"/>
|
||||
<di:waypoint x="545.0" y="400.0"/>
|
||||
<di:waypoint x="545.0" y="370.0"/>
|
||||
</bpmndi:BPMNEdge>
|
||||
</bpmndi:BPMNPlane>
|
||||
</bpmndi:BPMNDiagram>
|
||||
</bpmn2:definitions>
|
||||
|
|
|
|||
Loading…
Reference in a new issue