update
This commit is contained in:
parent
259373053f
commit
6545f76f43
5 changed files with 145 additions and 129 deletions
|
|
@ -56,14 +56,12 @@ services:
|
||||||
###############################################
|
###############################################
|
||||||
# Tika OCR Service
|
# Tika OCR Service
|
||||||
###############################################
|
###############################################
|
||||||
# tika:
|
tika:
|
||||||
# #image: apache/tika:latest
|
image: apache/tika:3.2.0.0-full
|
||||||
# #image: apache/tika:1.24.1-full
|
environment:
|
||||||
# image: apache/tika:2.4.1-full
|
TZ: "Europe/Berlin"
|
||||||
# environment:
|
ports:
|
||||||
# TZ: "Europe/Berlin"
|
- "9998:9998"
|
||||||
# ports:
|
|
||||||
# - "9998:9998"
|
|
||||||
|
|
||||||
##################
|
##################
|
||||||
# Exporter Service
|
# Exporter Service
|
||||||
|
|
|
||||||
|
|
@ -101,109 +101,93 @@ public class InvoicePlugin extends AbstractPlugin {
|
||||||
|
|
||||||
boolean isPublicEvent = !("0".equals(event.getItemValueString("keypublicresult")));
|
boolean isPublicEvent = !("0".equals(event.getItemValueString("keypublicresult")));
|
||||||
|
|
||||||
// Payment.type muss immer eingetragne werden!
|
if (isPublicEvent) {
|
||||||
if (isPublicEvent && workitem.getTaskID() >= TASK_ERFASSUNG && workitem.getEventID() < 900) {
|
validateInvoiceNumber(workitem);
|
||||||
if (workitem.getItemValueString("payment.type").trim().isEmpty()) {
|
validateBuchungsperiode(workitem.getItemValueString(InvoiceUtil.ITEM_INVOICE_PERIOD));
|
||||||
// throw a plugin exception!
|
checkIBANNumber(workitem);
|
||||||
String message = resourceBundleHandler.findMessage("ERROR_MISSING_PAYMENT");
|
|
||||||
throw new PluginException(InvoicePlugin.class.getName(), ERROR_MISSING_DATA, message);
|
|
||||||
}
|
|
||||||
// doppelte Rechnungsnummer prüfen
|
|
||||||
if (workitem.getTaskID() == TASK_ERFASSUNG) {
|
|
||||||
validateInvoiceNumber(workitem);
|
|
||||||
checkIBANNumber(workitem);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (workitem.getTaskID() == TASK_ERFASSUNG || ((workitem.getTaskID() == TASK_SACHPRUEFUNG
|
// Cargosoft Kreditorennnummer prüfen
|
||||||
|| workitem.getTaskID() == TASK_SACHPRUEFUNG_DELEGATION)
|
if (isCargoRechnung(workitem)) {
|
||||||
&& workitem.getEventID() == EVENT_FREIGEBEN)) {
|
validateCargosoftCdtrNumber(workitem);
|
||||||
// Buchungsperiode auf plausi prüfen
|
|
||||||
if (isCargoRechnung(workitem) && "workitem".equals(workitem.getType())) {
|
|
||||||
validateBuchungsperiode(workitem.getItemValueString(InvoiceUtil.ITEM_INVOICE_PERIOD));
|
|
||||||
}
|
|
||||||
// Cargosoft Kreditorennnummer prüfen
|
|
||||||
if (isCargoRechnung(workitem)) {
|
|
||||||
validateCargosoftCdtrNumber(workitem);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// die prüfung der positionsnummern und Category erfolgt nur im Status
|
// die prüfung der positionsnummern und Category erfolgt nur im Status
|
||||||
// Sachprüfung (5200) und nur beim Freigeben (20)!
|
// Sachprüfung (5200) und nur beim Freigeben (20)!
|
||||||
if (isCargoRechnung(workitem)
|
if (((workitem.getTaskID() == TASK_SACHPRUEFUNG
|
||||||
&& ((workitem.getTaskID() == TASK_SACHPRUEFUNG || workitem.getTaskID() == TASK_SACHPRUEFUNG_DELEGATION)
|
|| workitem.getTaskID() == TASK_SACHPRUEFUNG_DELEGATION)
|
||||||
&& workitem.getEventID() == EVENT_FREIGEBEN)) {
|
&& workitem.getEventID() == EVENT_FREIGEBEN)) {
|
||||||
List<ItemCollection> childs = InvoiceUtil.explodeChildList(workitem);
|
List<ItemCollection> childs = InvoiceUtil.explodeChildList(workitem);
|
||||||
for (ItemCollection posItem : childs) {
|
for (ItemCollection posItem : childs) {
|
||||||
if (posItem.getItemValueString("name").trim().isEmpty()) {
|
if (posItem.getItemValueString("name").trim().isEmpty()) {
|
||||||
// throw a plugin exception - because name is missing!
|
// throw a plugin exception - because name is missing!
|
||||||
String message = resourceBundleHandler.findMessage("ERROR_MISSING_POSNO");
|
String message = resourceBundleHandler.findMessage("ERROR_MISSING_POSNO");
|
||||||
message = message.replace("{1}", posItem.getItemValueString("numpos"));
|
message = message.replace("{1}", posItem.getItemValueString("numpos"));
|
||||||
throw new PluginException(InvoicePlugin.class.getName(), ERROR_MISSING_DATA, message);
|
throw new PluginException(InvoicePlugin.class.getName(), ERROR_MISSING_DATA, message);
|
||||||
}
|
}
|
||||||
|
|
||||||
// validate pos for regex pattern 'XX-YYY-####-###'
|
// validate pos for regex pattern 'XX-YYY-####-###'
|
||||||
if (!posItem.getItemValueString("name").matches(invoicePositionsPattern)) {
|
if (!posItem.getItemValueString("name").matches(invoicePositionsPattern)) {
|
||||||
// throw a plugin exception - because name is missing!
|
// throw a plugin exception - because name is missing!
|
||||||
String message = resourceBundleHandler.findMessage("ERROR_FORMAT_POSNO");
|
String message = resourceBundleHandler.findMessage("ERROR_FORMAT_POSNO");
|
||||||
message = message.replace("{1}", posItem.getItemValueString("numpos"));
|
message = message.replace("{1}", posItem.getItemValueString("numpos"));
|
||||||
throw new PluginException(InvoicePlugin.class.getName(), ERROR_MISSING_DATA, message);
|
throw new PluginException(InvoicePlugin.class.getName(), ERROR_MISSING_DATA, message);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (posItem.getItemValueString("category").trim().isEmpty()) {
|
if (posItem.getItemValueString("category").trim().isEmpty()) {
|
||||||
// throw a plugin exception - because name is missing!
|
// throw a plugin exception - because name is missing!
|
||||||
String message = resourceBundleHandler.findMessage("ERROR_MISSING_CATEGORY");
|
String message = resourceBundleHandler.findMessage("ERROR_MISSING_CATEGORY");
|
||||||
message = message.replace("{1}", posItem.getItemValueString("numpos"));
|
message = message.replace("{1}", posItem.getItemValueString("numpos"));
|
||||||
throw new PluginException(InvoicePlugin.class.getName(), ERROR_MISSING_DATA,
|
throw new PluginException(InvoicePlugin.class.getName(), ERROR_MISSING_DATA,
|
||||||
"Eingabefehler - Die Leistungsart in Zeile " + posItem.getItemValueString("numpos")
|
"Eingabefehler - Die Leistungsart in Zeile " + posItem.getItemValueString("numpos")
|
||||||
+ " muss ausgefüllt sein!");
|
+ " muss ausgefüllt sein!");
|
||||||
}
|
}
|
||||||
|
|
||||||
if (posItem.getItemValueString("tax").trim().isEmpty()) {
|
if (posItem.getItemValueString("tax").trim().isEmpty()) {
|
||||||
// throw a plugin exception - because name is missing!
|
// throw a plugin exception - because name is missing!
|
||||||
String message = resourceBundleHandler.findMessage("ERROR_MISSING_TAX");
|
String message = resourceBundleHandler.findMessage("ERROR_MISSING_TAX");
|
||||||
message = message.replace("{1}", posItem.getItemValueString("numpos"));
|
message = message.replace("{1}", posItem.getItemValueString("numpos"));
|
||||||
throw new PluginException(InvoicePlugin.class.getName(), ERROR_MISSING_DATA, message);
|
throw new PluginException(InvoicePlugin.class.getName(), ERROR_MISSING_DATA, message);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (posItem.getItemValueFloat("amount") == 0) {
|
if (posItem.getItemValueFloat("amount") == 0) {
|
||||||
// throw a plugin exception - because name is missing!
|
// throw a plugin exception - because name is missing!
|
||||||
String message = resourceBundleHandler.findMessage("ERROR_MISSING_NET");
|
String message = resourceBundleHandler.findMessage("ERROR_MISSING_NET");
|
||||||
message = message.replace("{1}", posItem.getItemValueString("numpos"));
|
message = message.replace("{1}", posItem.getItemValueString("numpos"));
|
||||||
throw new PluginException(InvoicePlugin.class.getName(), ERROR_MISSING_DATA, message);
|
throw new PluginException(InvoicePlugin.class.getName(), ERROR_MISSING_DATA, message);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Buchunsperiode
|
// Buchunsperiode
|
||||||
if (!posItem.getItemValueString(InvoiceUtil.ITEM_INVOICE_PERIOD).trim().isEmpty()) {
|
if (!posItem.getItemValueString(InvoiceUtil.ITEM_INVOICE_PERIOD).trim().isEmpty()) {
|
||||||
validateBuchungsperiode(posItem.getItemValueString(InvoiceUtil.ITEM_INVOICE_PERIOD));
|
validateBuchungsperiode(posItem.getItemValueString(InvoiceUtil.ITEM_INVOICE_PERIOD));
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
// Ergaenzung 18.05.2021:
|
|
||||||
// es kann vorkommen, das die Anwender abweichende Buchungsperioden eingeben so
|
|
||||||
// das die Hauptbuchungsperiode gar ncht merh vorkommt. Das darf aber nicht der
|
|
||||||
// fall sein.
|
|
||||||
// Im folgenden überprüfen wir ob eine Buchungszeile vorkommt in der keine oder
|
|
||||||
// die Hauptbuchunsperiode ausgewählt wurde. Ist das nicht der Fal gibt es eine
|
|
||||||
// Fehlermeldung für den Anwendere
|
|
||||||
if (isCargoRechnung(workitem) && childs.size() > 0) {
|
|
||||||
String hauptBuchungsperiode = workitem.getItemValueString("invoice.period");
|
|
||||||
boolean buchungsperiodenValid = false;
|
|
||||||
for (ItemCollection posItem : childs) {
|
|
||||||
String posBuchungsperiode = posItem.getItemValueString("invoice.period");
|
|
||||||
if (posBuchungsperiode.isEmpty() || posBuchungsperiode.equals(hauptBuchungsperiode)) {
|
|
||||||
// alles fein!
|
|
||||||
buchungsperiodenValid = true;
|
|
||||||
}
|
}
|
||||||
}
|
|
||||||
if (buchungsperiodenValid == false) {
|
// Ergaenzung 18.05.2021:
|
||||||
// fehlerhafte Buchungsperioden.
|
// es kann vorkommen, das die Anwender abweichende Buchungsperioden eingeben so
|
||||||
String message = resourceBundleHandler.findMessage("ERROR_MAIN_BOOKING_PERIOD");
|
// das die Hauptbuchungsperiode gar ncht merh vorkommt. Das darf aber nicht der
|
||||||
throw new PluginException(InvoicePlugin.class.getName(), ERROR_MISSING_DATA, message);
|
// fall sein.
|
||||||
|
// Im folgenden überprüfen wir ob eine Buchungszeile vorkommt in der keine oder
|
||||||
|
// die Hauptbuchunsperiode ausgewählt wurde. Ist das nicht der Fal gibt es eine
|
||||||
|
// Fehlermeldung für den Anwendere
|
||||||
|
if (childs.size() > 0) {
|
||||||
|
String hauptBuchungsperiode = workitem.getItemValueString("invoice.period");
|
||||||
|
boolean buchungsperiodenValid = false;
|
||||||
|
for (ItemCollection posItem : childs) {
|
||||||
|
String posBuchungsperiode = posItem.getItemValueString("invoice.period");
|
||||||
|
if (posBuchungsperiode.isEmpty() || posBuchungsperiode.equals(hauptBuchungsperiode)) {
|
||||||
|
// alles fein!
|
||||||
|
buchungsperiodenValid = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (buchungsperiodenValid == false) {
|
||||||
|
// fehlerhafte Buchungsperioden.
|
||||||
|
String message = resourceBundleHandler.findMessage("ERROR_MAIN_BOOKING_PERIOD");
|
||||||
|
throw new PluginException(InvoicePlugin.class.getName(), ERROR_MISSING_DATA, message);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return workitem;
|
return workitem;
|
||||||
|
|
@ -309,7 +293,7 @@ public class InvoicePlugin extends AbstractPlugin {
|
||||||
// wenn _invoicenumber_duplicate bereits gesetzt ist - dann geht es ohne prüfung
|
// wenn _invoicenumber_duplicate bereits gesetzt ist - dann geht es ohne prüfung
|
||||||
// weiter
|
// weiter
|
||||||
if (!invoiceNumberDuplicate.isEmpty()) {
|
if (!invoiceNumberDuplicate.isEmpty()) {
|
||||||
logger.warning("...validateion skipped by user with duplicate invoice number: " + invoiceNumber);
|
logger.warning("...validation skipped by user with duplicate invoice number: " + invoiceNumber);
|
||||||
} else {
|
} else {
|
||||||
|
|
||||||
// set _invoicenumber_duplicate - dadurch wird die warnmeldung ausgegeben und
|
// set _invoicenumber_duplicate - dadurch wird die warnmeldung ausgegeben und
|
||||||
|
|
@ -335,7 +319,7 @@ public class InvoicePlugin extends AbstractPlugin {
|
||||||
* Datensatz übertragen. Dadurch muss man nicht extra die Kreditoren Verwaltung
|
* Datensatz übertragen. Dadurch muss man nicht extra die Kreditoren Verwaltung
|
||||||
* aufrufen. Es ist ein art selbst-lernendes System.
|
* aufrufen. Es ist ein art selbst-lernendes System.
|
||||||
* <p>
|
* <p>
|
||||||
* Die Mehtode ruft eine Plugin Exception aus um den User zu fragen ob er das
|
* Die Methode ruft eine Plugin Exception aus um den User zu fragen ob er das
|
||||||
* möchte.
|
* möchte.
|
||||||
*
|
*
|
||||||
* @throws PluginException
|
* @throws PluginException
|
||||||
|
|
|
||||||
|
|
@ -2,24 +2,39 @@
|
||||||
xmlns:f="http://xmlns.jcp.org/jsf/core" xmlns:c="http://xmlns.jcp.org/jsp/jstl/core"
|
xmlns:f="http://xmlns.jcp.org/jsf/core" xmlns:c="http://xmlns.jcp.org/jsp/jstl/core"
|
||||||
xmlns:h="http://xmlns.jcp.org/jsf/html">
|
xmlns:h="http://xmlns.jcp.org/jsf/html">
|
||||||
|
|
||||||
|
<ui:remove>
|
||||||
|
<!-- Selection by space
|
||||||
|
|
||||||
<ui:fragment rendered="#{!readonly}">
|
USAGE: options=default-selection;
|
||||||
<h:selectOneMenu required="#{required?validationController.required:false}"
|
pre select the current users default section (first section the user is member of)
|
||||||
value="#{workflowController.workitem.item['space.ref']}">
|
|
||||||
<f:selectItem itemLabel=""></f:selectItem>
|
options=byprocess;
|
||||||
<c:forEach
|
only sections assigned to the current process are displayed.
|
||||||
items="#{byprocess?teamController.getSpacesByProcessId(workflowController.workitem.item['process.ref']):teamController.spaces}"
|
|
||||||
var="space">
|
-->
|
||||||
<f:selectItem itemLabel="#{space.item['space.name']}" itemValue="#{space.item['$UniqueID']}">
|
</ui:remove>
|
||||||
</f:selectItem>
|
|
||||||
</c:forEach>
|
<f:subview id="spacerefinput-view">
|
||||||
<f:ajax render="#{formComponents.clientId}" execute="#{formComponents.clientId}"
|
<ui:param name="default_selection" value="#{options.indexOf('default-selection') ge 0}"></ui:param>
|
||||||
onevent="initFaelligkeit" />
|
<ui:param name="space_ref"
|
||||||
</h:selectOneMenu>
|
value="#{default_selection ? spaceRefFormController.setDefaultSpace(workflowController.workitem,options):''}" />
|
||||||
</ui:fragment>
|
<!-- (DO NOT REMOVE) default selection = #{space_ref} -->
|
||||||
<ui:fragment rendered="#{readonly}">
|
<ui:fragment rendered="#{!readonly}">
|
||||||
<h:outputText value="#{workitem.item['space.name']}">
|
<h:selectOneMenu style="" required="#{required?validationController.required:false}"
|
||||||
</h:outputText>
|
noSelectionOption="true" value="#{workflowController.workitem.item['space.ref']}">
|
||||||
</ui:fragment>
|
<f:selectItem itemLabel=" - " itemValue="-"></f:selectItem>
|
||||||
|
<c:forEach items="#{spaceRefFormController.getSpaces(workflowController.workitem, options)}"
|
||||||
|
var="space">
|
||||||
|
<f:selectItem itemLabel="#{space.item['name']}" itemValue="#{space.item['$UniqueID']}">
|
||||||
|
</f:selectItem>
|
||||||
|
</c:forEach>
|
||||||
|
</h:selectOneMenu>
|
||||||
|
</ui:fragment>
|
||||||
|
<ui:fragment rendered="#{readonly}">
|
||||||
|
<h:outputText rendered="#{! empty workitem.item['space.parent.name']}"
|
||||||
|
value="#{workflowController.workitem.item['space.parent.name']} ⇒ "></h:outputText>
|
||||||
|
<h:outputText value="#{workflowController.workitem.item['space.name']}"></h:outputText>
|
||||||
|
</ui:fragment>
|
||||||
|
</f:subview>
|
||||||
|
|
||||||
</ui:composition>
|
</ui:composition>
|
||||||
|
|
@ -0,0 +1,25 @@
|
||||||
|
<ui:composition xmlns="http://www.w3.org/1999/xhtml" xmlns:ui="http://xmlns.jcp.org/jsf/facelets"
|
||||||
|
xmlns:f="http://xmlns.jcp.org/jsf/core" xmlns:c="http://xmlns.jcp.org/jsp/jstl/core"
|
||||||
|
xmlns:h="http://xmlns.jcp.org/jsf/html">
|
||||||
|
|
||||||
|
|
||||||
|
<ui:fragment rendered="#{!readonly}">
|
||||||
|
<h:selectOneMenu required="#{required?validationController.required:false}"
|
||||||
|
value="#{workflowController.workitem.item['space.ref']}">
|
||||||
|
<f:selectItem itemLabel=""></f:selectItem>
|
||||||
|
<c:forEach
|
||||||
|
items="#{byprocess?teamController.getSpacesByProcessId(workflowController.workitem.item['process.ref']):teamController.spaces}"
|
||||||
|
var="space">
|
||||||
|
<f:selectItem itemLabel="#{space.item['space.name']}" itemValue="#{space.item['$UniqueID']}">
|
||||||
|
</f:selectItem>
|
||||||
|
</c:forEach>
|
||||||
|
<f:ajax render="#{formComponents.clientId}" execute="#{formComponents.clientId}"
|
||||||
|
onevent="initFaelligkeit" />
|
||||||
|
</h:selectOneMenu>
|
||||||
|
</ui:fragment>
|
||||||
|
<ui:fragment rendered="#{readonly}">
|
||||||
|
<h:outputText value="#{workitem.item['space.name']}">
|
||||||
|
</h:outputText>
|
||||||
|
</ui:fragment>
|
||||||
|
|
||||||
|
</ui:composition>
|
||||||
|
|
@ -3242,13 +3242,6 @@ result.isValid=true;
|
||||||
<item name="invoice.currency" type="custom" required="true" path="alexander/currency_in" label="Währung:" />
|
<item name="invoice.currency" type="custom" required="true" path="alexander/currency_in" label="Währung:" />
|
||||||
</imixs-form-section>
|
</imixs-form-section>
|
||||||
|
|
||||||
<imixs-form-section columns="4">
|
|
||||||
<item name="invoice.ttc" type="text" label="Transaction Type Code:" />
|
|
||||||
<item name="invoice.spc" type="text" label="Sender Purpose Code:" />
|
|
||||||
<item name="invoice.lcc" type="text" label="Local Clearing Code:" />
|
|
||||||
<item name="invoice.rpc" type="text" label="Receiver Purpose code:" />
|
|
||||||
</imixs-form-section>
|
|
||||||
|
|
||||||
|
|
||||||
<imixs-form-section columns="2">
|
<imixs-form-section columns="2">
|
||||||
<item name="cdtr.iban" type="text" label="IBAN:" />
|
<item name="cdtr.iban" type="text" label="IBAN:" />
|
||||||
|
|
@ -3258,7 +3251,7 @@ result.isValid=true;
|
||||||
<imixs-form-section columns="2">
|
<imixs-form-section columns="2">
|
||||||
<item name="invoice.period" type="text" required="false" label="Buchungsperiode (yyyymm):" />
|
<item name="invoice.period" type="text" required="false" label="Buchungsperiode (yyyymm):" />
|
||||||
<item name="" type="custom" path="alexander/zahlungsart" label="Zahlungsart:"/>
|
<item name="" type="custom" path="alexander/zahlungsart" label="Zahlungsart:"/>
|
||||||
<item name="" type="custom" path="spaceref" label="Bereich:" required="true" />
|
<item name="" type="custom" path="alexander/spaceref" label="Bereich:" required="true" />
|
||||||
<item name="" type="custom" path="alexander/sachbearbeiter" label="Sachbearbeiter:"
|
<item name="" type="custom" path="alexander/sachbearbeiter" label="Sachbearbeiter:"
|
||||||
hide="#{!teamController.isManagerOf(workflowController.workitem.item['process.ref'])}" /> />
|
hide="#{!teamController.isManagerOf(workflowController.workitem.item['process.ref'])}" /> />
|
||||||
</imixs-form-section>
|
</imixs-form-section>
|
||||||
|
|
@ -3831,10 +3824,10 @@ Export erfolgt über eine asynchrone Verarbeitung im Modell 'cargosoft-export']]
|
||||||
<imixs:value><![CDATA[<ml-config name="status">suggest</ml-config>
|
<imixs:value><![CDATA[<ml-config name="status">suggest</ml-config>
|
||||||
<validation name="required">false</validation>
|
<validation name="required">false</validation>
|
||||||
<model>
|
<model>
|
||||||
<version>rechnungseingang-sachrechnung-de-1.0</version>
|
<version>(^rechnungseingang-sachrechnung-[a-z]{2,3}-\d+(?:\.\d+)?$)</version>
|
||||||
<task>5001</task>
|
<task>5001</task>
|
||||||
<event>980</event>
|
<event>980</event>
|
||||||
</model>]]></imixs:value>
|
</model>]]></imixs:value>
|
||||||
</imixs:item>
|
</imixs:item>
|
||||||
<imixs:item name="txtname" type="xs:string">
|
<imixs:item name="txtname" type="xs:string">
|
||||||
<imixs:value><![CDATA[Anweisen]]></imixs:value>
|
<imixs:value><![CDATA[Anweisen]]></imixs:value>
|
||||||
|
|
@ -4450,6 +4443,7 @@ Export erfolgt über eine asynchrone Verarbeitung im Modell 'cargosoft-export']]
|
||||||
<bpmndi:BPMNEdge bpmnElement="SequenceFlow_48" id="BPMNEdge_SequenceFlow_49" sourceElement="BPMNShape_IntermediateCatchEvent_22" targetElement="BPMNShape_IntermediateThrowEvent_3">
|
<bpmndi:BPMNEdge bpmnElement="SequenceFlow_48" id="BPMNEdge_SequenceFlow_49" sourceElement="BPMNShape_IntermediateCatchEvent_22" targetElement="BPMNShape_IntermediateThrowEvent_3">
|
||||||
<bpmndi:BPMNLabel id="BPMNLabel_127"/>
|
<bpmndi:BPMNLabel id="BPMNLabel_127"/>
|
||||||
<di:waypoint x="783.0" y="105.0"/>
|
<di:waypoint x="783.0" y="105.0"/>
|
||||||
|
<di:waypoint x="840.0" y="105.0"/>
|
||||||
<di:waypoint x="897.0" y="105.0"/>
|
<di:waypoint x="897.0" y="105.0"/>
|
||||||
</bpmndi:BPMNEdge>
|
</bpmndi:BPMNEdge>
|
||||||
<bpmndi:BPMNEdge bpmnElement="SequenceFlow_2" id="BPMNEdge_SequenceFlow_3" sourceElement="BPMNShape_IntermediateCatchEvent_17" targetElement="BPMNShape_Task_10">
|
<bpmndi:BPMNEdge bpmnElement="SequenceFlow_2" id="BPMNEdge_SequenceFlow_3" sourceElement="BPMNShape_IntermediateCatchEvent_17" targetElement="BPMNShape_Task_10">
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue