diff --git a/backend-diagram-converter/core/src/main/java/org/camunda/community/migration/converter/conversion/UserTaskConversion.java b/backend-diagram-converter/core/src/main/java/org/camunda/community/migration/converter/conversion/UserTaskConversion.java index 63efad15..c4f3a8d9 100644 --- a/backend-diagram-converter/core/src/main/java/org/camunda/community/migration/converter/conversion/UserTaskConversion.java +++ b/backend-diagram-converter/core/src/main/java/org/camunda/community/migration/converter/conversion/UserTaskConversion.java @@ -11,6 +11,9 @@ public class UserTaskConversion extends AbstractTypedConversion= SemanticVersion._8_5.ordinal()) { + context.addConversion(UserTaskConvertible.class, c -> c.setZeebeUserTask(true)); + } else { + context.addConversion(UserTaskConvertible.class, c -> c.setZeebeUserTask(false)); + } + } } diff --git a/backend-diagram-converter/core/src/main/java/org/camunda/community/migration/converter/visitor/impl/eventDefinition/CompensateEventDefinitionVisitor.java b/backend-diagram-converter/core/src/main/java/org/camunda/community/migration/converter/visitor/impl/eventDefinition/CompensateEventDefinitionVisitor.java index c959f84c..95d0cf57 100644 --- a/backend-diagram-converter/core/src/main/java/org/camunda/community/migration/converter/visitor/impl/eventDefinition/CompensateEventDefinitionVisitor.java +++ b/backend-diagram-converter/core/src/main/java/org/camunda/community/migration/converter/visitor/impl/eventDefinition/CompensateEventDefinitionVisitor.java @@ -12,6 +12,9 @@ public String localName() { @Override protected SemanticVersion availableFrom(DomElementVisitorContext context) { + if (isNotEventSubProcessStartEvent(context.getElement())) { + return SemanticVersion._8_5; + } return null; } } diff --git a/backend-diagram-converter/core/src/main/resources/converter-properties.properties b/backend-diagram-converter/core/src/main/resources/converter-properties.properties index 7c0214a0..2aff4dd8 100644 --- a/backend-diagram-converter/core/src/main/resources/converter-properties.properties +++ b/backend-diagram-converter/core/src/main/resources/converter-properties.properties @@ -13,7 +13,7 @@ zeebe-header.resource=resource ## Script format zeebe-header.script-format=language # Zeebe Meta Information -zeebe-platform.version=8.4 +zeebe-platform.version=8.5 # Flags ## Enable Default Job Type usage flag.default-job-type-enabled=true 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 5116b128..12d32d50 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 @@ -594,4 +594,23 @@ void testMessageEventDefinitionOnThrowEvents() { .getTextContent()) .isEqualTo("CatchEvent"); } + + @Test + void testZeebeUserTask() { + BpmnModelInstance modelInstance = loadAndConvert("example-c7_2.bpmn"); + DomElement userTask = modelInstance.getDocument().getElementById("Activity_1b9oq8z"); + assertThat(userTask).isNotNull(); + DomElement extensionElements = + userTask.getChildElementsByNameNs(BPMN, "extensionElements").get(0); + DomElement zeebeUserTask = extensionElements.getChildElementsByNameNs(ZEEBE, "userTask").get(0); + assertThat(zeebeUserTask).isNotNull(); + } + + @Test + void testZeebeUserTask_pre_8_5() { + BpmnModelInstance modelInstance = loadAndConvert("example-c7_2.bpmn", "8.4"); + DomElement userTask = modelInstance.getDocument().getElementById("Activity_1b9oq8z"); + assertThat(userTask).isNotNull(); + assertThat(userTask.getChildElementsByNameNs(BPMN, "extensionElements")).isEmpty(); + } } diff --git a/backend-diagram-converter/core/src/test/java/org/camunda/community/migration/converter/BpmnElementSupportTest.java b/backend-diagram-converter/core/src/test/java/org/camunda/community/migration/converter/BpmnElementSupportTest.java index 6fcfad2f..f43f4f38 100644 --- a/backend-diagram-converter/core/src/test/java/org/camunda/community/migration/converter/BpmnElementSupportTest.java +++ b/backend-diagram-converter/core/src/test/java/org/camunda/community/migration/converter/BpmnElementSupportTest.java @@ -188,10 +188,10 @@ Stream testCompensationEvents() { return eventTypeTest( "Compensation", null, - isNotSupported(result, "CompensationThrowEvent", "Compensate Intermediate Throw Event"), + isSupported(result, "CompensationThrowEvent"), null, - isNotSupported(result, "CompensationEndEndEvent", "Compensate End Event"), - isNotSupported(result, "CompensationAttachedBoundaryEvent", "Compensate Boundary Event"), + isSupported(result, "CompensationEndEndEvent"), + isSupported(result, "CompensationAttachedBoundaryEvent"), null, isNotSupported( result, @@ -253,8 +253,7 @@ Stream testMarkers() { dynamicTest("Sequential Task", isSupported(result, "SequentialTask")), dynamicTest( "Loop Task", isNotSupported(result, "LoopTask", "Standard Loop Characteristics")), - dynamicTest( - "Compensation Task", isNotSupported(result, "CompensationTask", "Compensation Task"))); + dynamicTest("Compensation Task", isSupported(result, "CompensationTask"))); } @TestFactory diff --git a/backend-diagram-converter/core/src/test/java/org/camunda/community/migration/converter/TestUtil.java b/backend-diagram-converter/core/src/test/java/org/camunda/community/migration/converter/TestUtil.java index ca7566cd..d0445427 100644 --- a/backend-diagram-converter/core/src/test/java/org/camunda/community/migration/converter/TestUtil.java +++ b/backend-diagram-converter/core/src/test/java/org/camunda/community/migration/converter/TestUtil.java @@ -32,6 +32,15 @@ public static BpmnModelInstance loadAndConvert(String bpmnFile) { return modelInstance; } + public static BpmnModelInstance loadAndConvert(String bpmnFile, String targetVersion) { + BpmnModelInstance modelInstance = loadModelInstance(bpmnFile); + BpmnConverter converter = BpmnConverterFactory.getInstance().get(); + DefaultConverterProperties properties = new DefaultConverterProperties(); + properties.setPlatformVersion(targetVersion); + converter.convert(modelInstance, ConverterPropertiesFactory.getInstance().merge(properties)); + return modelInstance; + } + public static BpmnDiagramCheckResult loadAndCheck(String bpmnFile) { ConverterProperties properties = ConverterPropertiesFactory.getInstance().get(); return loadAndCheckAgainstVersion(bpmnFile, properties.getPlatformVersion());