Skip to content

Commit

Permalink
Merge branch 'main' of github.com:flowable/flowable-engine
Browse files Browse the repository at this point in the history
  • Loading branch information
tijsrademakers committed Apr 11, 2024
2 parents e82e4d4 + 35d6a54 commit 60bae4f
Show file tree
Hide file tree
Showing 4 changed files with 108 additions and 1 deletion.
Original file line number Diff line number Diff line change
Expand Up @@ -1094,7 +1094,7 @@ protected void terminatePlanItemInstance(PlanItemInstanceEntity planItemInstance
if (planItemInstance.getReferenceId() != null) {
cmmnEngineConfiguration.getProcessInstanceService().deleteProcessInstance(planItemInstance.getReferenceId());
}

} else if (planItemDefinition instanceof EventListener) {

if (planItemDefinition instanceof TimerEventListener) {
Expand All @@ -1121,6 +1121,10 @@ protected void terminatePlanItemInstance(PlanItemInstanceEntity planItemInstance
}
}
}
} else if (planItemDefinition instanceof CaseTask) {
if (planItemInstance.getReferenceId() != null) {
cmmnEngineConfiguration.getCmmnRuntimeService().deleteCaseInstance(planItemInstance.getReferenceId());
}
}
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5791,6 +5791,33 @@ void migrateCaseInstancesWithMarkAsActiveBasedOnCondition() {
.doesNotContain("Event Listener");
}


@Test
void withCaseTaskWhichWillBeTerminated() {
// Arrange
CaseDefinition subcaseDefinition = deployCaseDefinition("test1", "org/flowable/cmmn/test/migration/one-task.cmmn.xml");
deployCaseDefinition("test2", "org/flowable/cmmn/test/migration/case-with-subcase.cmmn.xml");
CaseInstance caseInstance = cmmnRuntimeService.createCaseInstanceBuilder().caseDefinitionKey("testParentCase").start();
CaseDefinition destinationDefinition = deployCaseDefinition("test2", "org/flowable/cmmn/test/migration/case-without-subcase.cmmn.xml");

// Act
cmmnMigrationService.createCaseInstanceMigrationBuilder()
.migrateToCaseDefinition(destinationDefinition.getId())
.addTerminatePlanItemDefinitionMapping(PlanItemDefinitionMappingBuilder.createTerminatePlanItemDefinitionMappingFor("cmmnTask_1"))
.migrate(caseInstance.getId());

// Assert
HistoricPlanItemInstance cmmnTask1 = cmmnHistoryService.createHistoricPlanItemInstanceQuery()
.planItemInstanceCaseInstanceId(caseInstance.getId())
.planItemInstanceDefinitionId("cmmnTask_1")
.singleResult();
assertThat(cmmnTask1.getState()).isEqualTo(PlanItemInstanceState.TERMINATED);
long subcaseInstances = cmmnRuntimeService.createCaseInstanceQuery()
.caseDefinitionId(subcaseDefinition.getId())
.count();
assertThat(subcaseInstances).isEqualTo(0);
}

protected class CustomTenantProvider implements DefaultTenantProvider {

@Override
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
<?xml version="1.0" encoding="UTF-8"?>
<definitions xmlns="http://www.omg.org/spec/CMMN/20151109/MODEL" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:flowable="http://flowable.org/cmmn" xmlns:cmmndi="http://www.omg.org/spec/CMMN/20151109/CMMNDI" xmlns:dc="http://www.omg.org/spec/CMMN/20151109/DC" xmlns:di="http://www.omg.org/spec/CMMN/20151109/DI" xmlns:design="http://flowable.org/design" targetNamespace="http://flowable.org/cmmn" design:palette="flowable-work-case-palette">
<case id="testParentCase" name="Test Parent Case" flowable:initiatorVariableName="initiator" flowable:candidateStarterGroups="flowableUser">
<casePlanModel id="onecaseplanmodel1" name="Case plan model" flowable:formFieldValidation="false">
<extensionElements>
<flowable:default-menu-navigation-size><![CDATA[expanded]]></flowable:default-menu-navigation-size>
<flowable:work-form-field-validation><![CDATA[false]]></flowable:work-form-field-validation>
<design:stencilid><![CDATA[CasePlanModel]]></design:stencilid>
</extensionElements>
<planItem id="planItemcmmnTask_1" name="Case task" definitionRef="cmmnTask_1"></planItem>
<planItem id="planItemcmmnTask_2" name="Parent Task" definitionRef="cmmnTask_2"></planItem>
<caseTask id="cmmnTask_1" name="Case task" flowable:fallbackToDefaultTenant="true" flowable:sameDeployment="true">
<extensionElements>
<design:stencilid><![CDATA[CaseTask]]></design:stencilid>
<design:stencilsuperid><![CDATA[Task]]></design:stencilsuperid>
</extensionElements>
<caseRefExpression><![CDATA[testCase]]></caseRefExpression>
</caseTask>
<humanTask id="cmmnTask_2" name="Parent Task" flowable:assignee="${initiator}" flowable:formFieldValidation="false">
<extensionElements>
<flowable:task-candidates-type><![CDATA[all]]></flowable:task-candidates-type>
<design:stencilid><![CDATA[HumanTask]]></design:stencilid>
<design:stencilsuperid><![CDATA[Task]]></design:stencilsuperid>
</extensionElements>
</humanTask>
</casePlanModel>
</case>
<cmmndi:CMMNDI>
<cmmndi:CMMNDiagram id="CMMNDiagram_testParentCase">
<cmmndi:CMMNShape id="CMMNShape_onecaseplanmodel1" cmmnElementRef="onecaseplanmodel1">
<dc:Bounds height="679.0" width="830.0" x="270.0" y="120.0"></dc:Bounds>
<cmmndi:CMMNLabel></cmmndi:CMMNLabel>
</cmmndi:CMMNShape>
<cmmndi:CMMNShape id="CMMNShape_planItemcmmnTask_1" cmmnElementRef="planItemcmmnTask_1">
<dc:Bounds height="80.0" width="100.0" x="395.0" y="216.0"></dc:Bounds>
<cmmndi:CMMNLabel></cmmndi:CMMNLabel>
</cmmndi:CMMNShape>
<cmmndi:CMMNShape id="CMMNShape_planItemcmmnTask_2" cmmnElementRef="planItemcmmnTask_2">
<dc:Bounds height="80.0" width="100.0" x="585.0" y="216.0"></dc:Bounds>
<cmmndi:CMMNLabel></cmmndi:CMMNLabel>
</cmmndi:CMMNShape>
</cmmndi:CMMNDiagram>
</cmmndi:CMMNDI>
</definitions>
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
<?xml version="1.0" encoding="UTF-8"?>
<definitions xmlns="http://www.omg.org/spec/CMMN/20151109/MODEL" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:flowable="http://flowable.org/cmmn" xmlns:cmmndi="http://www.omg.org/spec/CMMN/20151109/CMMNDI" xmlns:dc="http://www.omg.org/spec/CMMN/20151109/DC" xmlns:di="http://www.omg.org/spec/CMMN/20151109/DI" xmlns:design="http://flowable.org/design" targetNamespace="http://flowable.org/cmmn" design:palette="flowable-work-case-palette">
<case id="testParentCase" name="Test Parent Case" flowable:initiatorVariableName="initiator" flowable:candidateStarterGroups="flowableUser">
<casePlanModel id="onecaseplanmodel1" name="Case plan model" flowable:formFieldValidation="false">
<extensionElements>
<flowable:default-menu-navigation-size><![CDATA[expanded]]></flowable:default-menu-navigation-size>
<flowable:work-form-field-validation><![CDATA[false]]></flowable:work-form-field-validation>
<design:stencilid><![CDATA[CasePlanModel]]></design:stencilid>
</extensionElements>
<planItem id="planItemcmmnTask_2" name="Parent Task" definitionRef="cmmnTask_2"></planItem>
<humanTask id="cmmnTask_2" name="Parent Task" flowable:assignee="${initiator}" flowable:formFieldValidation="false">
<extensionElements>
<flowable:task-candidates-type><![CDATA[all]]></flowable:task-candidates-type>
<design:stencilid><![CDATA[HumanTask]]></design:stencilid>
<design:stencilsuperid><![CDATA[Task]]></design:stencilsuperid>
</extensionElements>
</humanTask>
</casePlanModel>
</case>
<cmmndi:CMMNDI>
<cmmndi:CMMNDiagram id="CMMNDiagram_testParentCase">
<cmmndi:CMMNShape id="CMMNShape_onecaseplanmodel1" cmmnElementRef="onecaseplanmodel1">
<dc:Bounds height="679.0" width="830.0" x="270.0" y="120.0"></dc:Bounds>
<cmmndi:CMMNLabel></cmmndi:CMMNLabel>
</cmmndi:CMMNShape>
<cmmndi:CMMNShape id="CMMNShape_planItemcmmnTask_2" cmmnElementRef="planItemcmmnTask_2">
<dc:Bounds height="80.0" width="100.0" x="585.0" y="216.0"></dc:Bounds>
<cmmndi:CMMNLabel></cmmndi:CMMNLabel>
</cmmndi:CMMNShape>
</cmmndi:CMMNDiagram>
</cmmndi:CMMNDI>
</definitions>

0 comments on commit 60bae4f

Please sign in to comment.