From 7957ecc077d146fec894ff194263e28a1c313aa4 Mon Sep 17 00:00:00 2001 From: Jonathan Lukas Date: Wed, 13 Mar 2024 07:04:43 +0100 Subject: [PATCH] fixed timer event implementations (#794) --- .../AbstractTimerExpressionVisitor.java | 14 ++ .../visitor/impl/TimeCycleVisitor.java | 4 +- .../visitor/impl/TimeDateVisitor.java | 5 +- .../visitor/impl/TimeDurationVisitor.java | 4 +- .../converter/BpmnConverterTest.java | 20 +- .../core/src/test/resources/README.md | 12 -- .../test/resources/flexible-timer-event.bpmn | 186 ++++++++++++++++-- 7 files changed, 200 insertions(+), 45 deletions(-) delete mode 100644 backend-diagram-converter/core/src/test/resources/README.md diff --git a/backend-diagram-converter/core/src/main/java/org/camunda/community/migration/converter/visitor/AbstractTimerExpressionVisitor.java b/backend-diagram-converter/core/src/main/java/org/camunda/community/migration/converter/visitor/AbstractTimerExpressionVisitor.java index 6d726698..a080915c 100644 --- a/backend-diagram-converter/core/src/main/java/org/camunda/community/migration/converter/visitor/AbstractTimerExpressionVisitor.java +++ b/backend-diagram-converter/core/src/main/java/org/camunda/community/migration/converter/visitor/AbstractTimerExpressionVisitor.java @@ -1,5 +1,7 @@ package org.camunda.community.migration.converter.visitor; +import static org.camunda.community.migration.converter.NamespaceUri.*; + import java.util.Objects; import org.camunda.bpm.model.xml.instance.DomElement; import org.camunda.community.migration.converter.DomElementVisitorContext; @@ -37,6 +39,18 @@ protected boolean isStartEvent(DomElement element) { && !isEventSubprocess(element); } + protected boolean isNonInterruptingIntermediate(DomElement element) { + String cancelActivity = + element.getParentElement().getParentElement().getAttribute(BPMN, "cancelActivity"); + return Boolean.FALSE.toString().equals(cancelActivity); + } + + protected boolean isNonInterruptingStart(DomElement element) { + String isInterrupting = + element.getParentElement().getParentElement().getAttribute(BPMN, "isInterrupting"); + return Boolean.FALSE.toString().equals(isInterrupting); + } + protected boolean isIntermediateEvent(DomElement element) { return element .getParentElement() diff --git a/backend-diagram-converter/core/src/main/java/org/camunda/community/migration/converter/visitor/impl/TimeCycleVisitor.java b/backend-diagram-converter/core/src/main/java/org/camunda/community/migration/converter/visitor/impl/TimeCycleVisitor.java index 7bd5f228..fdb2ca62 100644 --- a/backend-diagram-converter/core/src/main/java/org/camunda/community/migration/converter/visitor/impl/TimeCycleVisitor.java +++ b/backend-diagram-converter/core/src/main/java/org/camunda/community/migration/converter/visitor/impl/TimeCycleVisitor.java @@ -8,7 +8,9 @@ public class TimeCycleVisitor extends AbstractTimerExpressionVisitor { @Override protected SemanticVersion availableFrom(DomElementVisitorContext context) { - if (isStartEvent(context.getElement())) { + if (isStartEvent(context.getElement()) + || isNonInterruptingIntermediate(context.getElement()) + || isNonInterruptingStart(context.getElement())) { return SemanticVersion._8_0; } return null; diff --git a/backend-diagram-converter/core/src/main/java/org/camunda/community/migration/converter/visitor/impl/TimeDateVisitor.java b/backend-diagram-converter/core/src/main/java/org/camunda/community/migration/converter/visitor/impl/TimeDateVisitor.java index 03d952f2..88352bd3 100644 --- a/backend-diagram-converter/core/src/main/java/org/camunda/community/migration/converter/visitor/impl/TimeDateVisitor.java +++ b/backend-diagram-converter/core/src/main/java/org/camunda/community/migration/converter/visitor/impl/TimeDateVisitor.java @@ -8,10 +8,7 @@ public class TimeDateVisitor extends AbstractTimerExpressionVisitor { @Override protected SemanticVersion availableFrom(DomElementVisitorContext context) { - if (isStartEvent(context.getElement()) || isEventSubprocess(context.getElement())) { - return SemanticVersion._8_0; - } - return null; + return SemanticVersion._8_0; } @Override diff --git a/backend-diagram-converter/core/src/main/java/org/camunda/community/migration/converter/visitor/impl/TimeDurationVisitor.java b/backend-diagram-converter/core/src/main/java/org/camunda/community/migration/converter/visitor/impl/TimeDurationVisitor.java index 1ec4a43c..04cada96 100644 --- a/backend-diagram-converter/core/src/main/java/org/camunda/community/migration/converter/visitor/impl/TimeDurationVisitor.java +++ b/backend-diagram-converter/core/src/main/java/org/camunda/community/migration/converter/visitor/impl/TimeDurationVisitor.java @@ -9,7 +9,9 @@ public class TimeDurationVisitor extends AbstractTimerExpressionVisitor { @Override protected SemanticVersion availableFrom(DomElementVisitorContext context) { - if (isBoundaryEvent(context.getElement()) || isIntermediateEvent(context.getElement())) { + if (isBoundaryEvent(context.getElement()) + || isIntermediateEvent(context.getElement()) + || isEventSubprocess(context.getElement())) { return SemanticVersion._8_0; } return null; diff --git a/backend-diagram-converter/core/src/test/java/org/camunda/community/migration/converter/BpmnConverterTest.java b/backend-diagram-converter/core/src/test/java/org/camunda/community/migration/converter/BpmnConverterTest.java index 540b5286..dd0fc89a 100644 --- a/backend-diagram-converter/core/src/test/java/org/camunda/community/migration/converter/BpmnConverterTest.java +++ b/backend-diagram-converter/core/src/test/java/org/camunda/community/migration/converter/BpmnConverterTest.java @@ -462,20 +462,28 @@ void testTimerEvents(String elementId, String expectedExpression) { value = { // start events "CycleStartEvent,true", - "DurationStartEvent1,false", + "DurationStartEvent,false", "DateStartEvent,true", // intermediate events "FlexibleDurationEvent,true", - "FlexibleDateEvent,false", + "FlexibleDateEvent,true", "FlexibleCycleEvent,false", // boundary events "DurationBoundaryEvent,true", - "DateBoundaryEvent,false", + "DateBoundaryEvent,true", "CycleBoundaryEvent,false", + // boundary events non-interrupting + "DurationNonInterruptingBoundaryEvent,true", + "DateNonInterruptingBoundaryEvent,true", + "CycleNonInterruptingBoundaryEvent,true", // event sub process - "DateStartEvent1,true", - "DurationStartEvent,false", - "CycleStartEvent1,false" + "DateEventSubprocessStartEvent,true", + "DurationEventSubprocessStartEvent,true", + "CycleEventSubprocessStartEvent,false", + // event sub process non-interrupting + "DateEventSubprocessNonInterruptingStartEvent,true", + "DurationEventSubprocessNonInterruptingStartEvent,true", + "CycleEventSubprocessNonInterruptingStartEvent,true" }) void testTimerEventMessages(String elementId, boolean allowed) { BpmnDiagramCheckResult result = loadAndCheck("flexible-timer-event.bpmn"); diff --git a/backend-diagram-converter/core/src/test/resources/README.md b/backend-diagram-converter/core/src/test/resources/README.md deleted file mode 100644 index 22c105f2..00000000 --- a/backend-diagram-converter/core/src/test/resources/README.md +++ /dev/null @@ -1,12 +0,0 @@ -# Validation - -This part contains different process use cases to validate the migration. - -Each directory is a use case. It contains all information to explain the use case and the expected result. - -# Overview - -| Use case | Description | Status | -|------------|------------------------------------|-------------| -| Simple User task| One user task, no process variable | In progress | - diff --git a/backend-diagram-converter/core/src/test/resources/flexible-timer-event.bpmn b/backend-diagram-converter/core/src/test/resources/flexible-timer-event.bpmn index 1678be59..949c2259 100644 --- a/backend-diagram-converter/core/src/test/resources/flexible-timer-event.bpmn +++ b/backend-diagram-converter/core/src/test/resources/flexible-timer-event.bpmn @@ -1,5 +1,5 @@ - + @@ -14,6 +14,9 @@ Flow_0xfzu6j Flow_13tpsg8 Flow_18ozylp + Flow_12cl7jz + Flow_10k0b0x + Flow_0kngvsj @@ -96,7 +99,7 @@ - + Flow_03b4jcm ${date} @@ -105,10 +108,10 @@ Flow_03b4jcm - + - + Flow_0qjy2aj ${duration} @@ -117,10 +120,10 @@ Flow_0qjy2aj - + - + Flow_0069vhm ${cycle} @@ -129,7 +132,7 @@ Flow_0069vhm - + Flow_194hewa @@ -143,7 +146,7 @@ ${cycle} - + Flow_194hewa @@ -152,12 +155,69 @@ Flow_08i9ku5 - + Flow_0ugq2cb ${duration} + + + Flow_12btdbv + + + + Flow_12btdbv + + ${date} + + + + + + Flow_008eofr + + + + Flow_008eofr + + ${duration} + + + + + + Flow_0hm6mok + + + + Flow_0hm6mok + + ${cycle} + + + + + Flow_0kngvsj + + ${boundaryDuration} + + + + Flow_10k0b0x + + ${boundaryDate} + + + + Flow_12cl7jz + + ${boundaryCycle} + + + + + @@ -213,19 +273,13 @@ - - - - - - - + - + @@ -238,10 +292,10 @@ - + - + @@ -254,10 +308,10 @@ - + - + @@ -282,6 +336,60 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -300,6 +408,24 @@ + + + + + + + + + + + + + + + + + + @@ -378,6 +504,24 @@ + + + + + + + + + + + + + + + + + +