@@ -378,6 +378,67 @@ void withSimpleOneTaskCaseIntroducingNewTaskWithSentryLinkedToFirstTask() {
378
378
}
379
379
}
380
380
}
381
+
382
+ @ Test
383
+ void withSimpleOneTaskCaseChangingOnlyTaskProperties () {
384
+ // Arrange
385
+ deployCaseDefinition ("test1" , "org/flowable/cmmn/test/migration/one-task.cmmn.xml" );
386
+ CaseInstance caseInstance = cmmnRuntimeService .createCaseInstanceBuilder ().caseDefinitionKey ("testCase" ).start ();
387
+ CaseDefinition destinationDefinition = deployCaseDefinition ("test1" , "org/flowable/cmmn/test/migration/one-task-new-properties.cmmn.xml" );
388
+
389
+ // Act
390
+ cmmnMigrationService .createCaseInstanceMigrationBuilder ()
391
+ .migrateToCaseDefinition (destinationDefinition .getId ())
392
+ .migrate (caseInstance .getId ());
393
+
394
+ // Assert
395
+ CaseInstance caseInstanceAfterMigration = cmmnRuntimeService .createCaseInstanceQuery ()
396
+ .caseInstanceId (caseInstance .getId ())
397
+ .singleResult ();
398
+ assertThat (caseInstanceAfterMigration .getCaseDefinitionId ()).isEqualTo (destinationDefinition .getId ());
399
+ List <PlanItemInstance > planItemInstances = cmmnRuntimeService .createPlanItemInstanceQuery ()
400
+ .caseInstanceId (caseInstance .getId ())
401
+ .list ();
402
+ assertThat (planItemInstances ).hasSize (1 );
403
+ Map <String , List <PlanItemInstance >> planItemsByElementId = planItemInstances .stream ()
404
+ .collect (Collectors .groupingBy (PlanItemInstance ::getElementId ));
405
+ PlanItemInstance planItem1 = planItemsByElementId .get ("planItem1" ).get (0 );
406
+ assertThat (planItem1 .getCaseDefinitionId ()).isEqualTo (destinationDefinition .getId ());
407
+ assertThat (planItem1 .getName ()).isEqualTo ("Task 1" );
408
+ assertThat (planItem1 .getState ()).isEqualTo (PlanItemInstanceState .ACTIVE );
409
+
410
+ Task task = cmmnTaskService .createTaskQuery ().caseInstanceId (caseInstance .getId ()).singleResult ();
411
+ assertThat (task .getTaskDefinitionKey ()).isEqualTo ("humanTask1" );
412
+ assertThat (task .getName ()).isEqualTo ("Task 2" );
413
+ assertThat (task .getFormKey ()).isEqualTo ("myForm" );
414
+ assertThat (task .getCategory ()).isEqualTo ("myCategory" );
415
+ assertThat (task .getDescription ()).isEqualTo ("Example description" );
416
+ assertThat (task .getScopeDefinitionId ()).isEqualTo (destinationDefinition .getId ());
417
+ cmmnTaskService .complete (task .getId ());
418
+
419
+ assertThat (cmmnRuntimeService .createCaseInstanceQuery ().caseInstanceId (caseInstance .getId ()).count ()).isZero ();
420
+
421
+ if (CmmnHistoryTestHelper .isHistoryLevelAtLeast (HistoryLevel .ACTIVITY , cmmnEngineConfiguration )) {
422
+ assertThat (cmmnHistoryService .createHistoricCaseInstanceQuery ().caseInstanceId (caseInstance .getId ()).count ()).isEqualTo (1 );
423
+ assertThat (cmmnHistoryService .createHistoricCaseInstanceQuery ().caseInstanceId (caseInstance .getId ()).singleResult ().getCaseDefinitionId ())
424
+ .isEqualTo (destinationDefinition .getId ());
425
+
426
+ List <HistoricPlanItemInstance > historicPlanItemInstances = cmmnHistoryService .createHistoricPlanItemInstanceQuery ()
427
+ .planItemInstanceCaseInstanceId (caseInstance .getId ()).list ();
428
+ assertThat (historicPlanItemInstances ).hasSize (1 );
429
+ assertThat (historicPlanItemInstances .get (0 ).getCaseDefinitionId ()).isEqualTo (destinationDefinition .getId ());
430
+
431
+ List <HistoricTaskInstance > historicTasks = cmmnHistoryService .createHistoricTaskInstanceQuery ().caseInstanceId (caseInstance .getId ()).list ();
432
+ assertThat (historicTasks ).hasSize (1 );
433
+ for (HistoricTaskInstance historicTask : historicTasks ) {
434
+ assertThat (historicTask .getScopeDefinitionId ()).isEqualTo (destinationDefinition .getId ());
435
+ assertThat (historicTask .getName ()).isEqualTo ("Task 2" );
436
+ assertThat (historicTask .getFormKey ()).isEqualTo ("myForm" );
437
+ assertThat (historicTask .getCategory ()).isEqualTo ("myCategory" );
438
+ assertThat (historicTask .getDescription ()).isEqualTo ("Example description" );
439
+ }
440
+ }
441
+ }
381
442
382
443
@ Test
383
444
void withTwoTasksIntroducingANewStageAroundSecondTask () {
@@ -488,6 +549,92 @@ void withTwoTasksIntroducingANewStageAroundSecondTaskAndSecondTaskActive() {
488
549
assertThat (planItem3 .getPlanItemDefinitionId ()).isEqualTo ("expandedStage1" );
489
550
assertThat (planItem3 .getState ()).isEqualTo (PlanItemInstanceState .ACTIVE );
490
551
}
552
+
553
+ @ Test
554
+ void withTwoTasksCaseChangingTaskProperties () {
555
+ // Arrange
556
+ deployCaseDefinition ("test1" , "org/flowable/cmmn/test/migration/one-task.cmmn.xml" );
557
+ CaseInstance caseInstance = cmmnRuntimeService .createCaseInstanceBuilder ().caseDefinitionKey ("testCase" ).start ();
558
+ CaseDefinition destinationDefinition = deployCaseDefinition ("test1" , "org/flowable/cmmn/test/migration/two-task-new-properties.cmmn.xml" );
559
+
560
+ // Act
561
+ cmmnMigrationService .createCaseInstanceMigrationBuilder ()
562
+ .migrateToCaseDefinition (destinationDefinition .getId ())
563
+ .addActivatePlanItemDefinitionMapping (PlanItemDefinitionMappingBuilder .createActivatePlanItemDefinitionMappingFor ("humanTask2" ))
564
+ .migrate (caseInstance .getId ());
565
+
566
+ // Assert
567
+ CaseInstance caseInstanceAfterMigration = cmmnRuntimeService .createCaseInstanceQuery ()
568
+ .caseInstanceId (caseInstance .getId ())
569
+ .singleResult ();
570
+ assertThat (caseInstanceAfterMigration .getCaseDefinitionId ()).isEqualTo (destinationDefinition .getId ());
571
+ List <PlanItemInstance > planItemInstances = cmmnRuntimeService .createPlanItemInstanceQuery ()
572
+ .caseInstanceId (caseInstance .getId ())
573
+ .list ();
574
+ assertThat (planItemInstances ).hasSize (2 );
575
+ Map <String , List <PlanItemInstance >> planItemsByElementId = planItemInstances .stream ()
576
+ .collect (Collectors .groupingBy (PlanItemInstance ::getElementId ));
577
+ PlanItemInstance planItem1 = planItemsByElementId .get ("planItem1" ).get (0 );
578
+ assertThat (planItem1 .getCaseDefinitionId ()).isEqualTo (destinationDefinition .getId ());
579
+ assertThat (planItem1 .getName ()).isEqualTo ("Task 1" );
580
+ assertThat (planItem1 .getState ()).isEqualTo (PlanItemInstanceState .ACTIVE );
581
+
582
+ Task task = cmmnTaskService .createTaskQuery ().caseInstanceId (caseInstance .getId ()).taskDefinitionKey ("humanTask1" ).singleResult ();
583
+ assertThat (task .getTaskDefinitionKey ()).isEqualTo ("humanTask1" );
584
+ assertThat (task .getName ()).isEqualTo ("Task 2" );
585
+ assertThat (task .getFormKey ()).isEqualTo ("myForm" );
586
+ assertThat (task .getCategory ()).isEqualTo ("myCategory" );
587
+ assertThat (task .getDescription ()).isEqualTo ("Example description" );
588
+ assertThat (task .getScopeDefinitionId ()).isEqualTo (destinationDefinition .getId ());
589
+ cmmnTaskService .complete (task .getId ());
590
+
591
+ PlanItemInstance planItem2 = planItemsByElementId .get ("planItem2" ).get (0 );
592
+ assertThat (planItem2 .getCaseDefinitionId ()).isEqualTo (destinationDefinition .getId ());
593
+ assertThat (planItem2 .getName ()).isEqualTo ("Task 3" );
594
+ assertThat (planItem2 .getState ()).isEqualTo (PlanItemInstanceState .ACTIVE );
595
+
596
+ task = cmmnTaskService .createTaskQuery ().caseInstanceId (caseInstance .getId ()).singleResult ();
597
+ assertThat (task .getTaskDefinitionKey ()).isEqualTo ("humanTask2" );
598
+ assertThat (task .getName ()).isEqualTo ("Task 3" );
599
+ assertThat (task .getFormKey ()).isEqualTo ("myForm2" );
600
+ assertThat (task .getCategory ()).isEqualTo ("myCategory2" );
601
+ assertThat (task .getDescription ()).isEqualTo ("Example description2" );
602
+ assertThat (task .getScopeDefinitionId ()).isEqualTo (destinationDefinition .getId ());
603
+ cmmnTaskService .complete (task .getId ());
604
+
605
+ assertThat (cmmnRuntimeService .createCaseInstanceQuery ().caseInstanceId (caseInstance .getId ()).count ()).isZero ();
606
+
607
+ if (CmmnHistoryTestHelper .isHistoryLevelAtLeast (HistoryLevel .ACTIVITY , cmmnEngineConfiguration )) {
608
+ assertThat (cmmnHistoryService .createHistoricCaseInstanceQuery ().caseInstanceId (caseInstance .getId ()).count ()).isEqualTo (1 );
609
+ assertThat (cmmnHistoryService .createHistoricCaseInstanceQuery ().caseInstanceId (caseInstance .getId ()).singleResult ().getCaseDefinitionId ())
610
+ .isEqualTo (destinationDefinition .getId ());
611
+
612
+ List <HistoricPlanItemInstance > historicPlanItemInstances = cmmnHistoryService .createHistoricPlanItemInstanceQuery ()
613
+ .planItemInstanceCaseInstanceId (caseInstance .getId ()).list ();
614
+ assertThat (historicPlanItemInstances ).hasSize (2 );
615
+ assertThat (historicPlanItemInstances .get (0 ).getCaseDefinitionId ()).isEqualTo (destinationDefinition .getId ());
616
+ assertThat (historicPlanItemInstances .get (1 ).getCaseDefinitionId ()).isEqualTo (destinationDefinition .getId ());
617
+
618
+ List <HistoricTaskInstance > historicTasks = cmmnHistoryService .createHistoricTaskInstanceQuery ().caseInstanceId (caseInstance .getId ()).list ();
619
+ assertThat (historicTasks ).hasSize (2 );
620
+ for (HistoricTaskInstance historicTask : historicTasks ) {
621
+ assertThat (historicTask .getScopeDefinitionId ()).isEqualTo (destinationDefinition .getId ());
622
+
623
+ if ("humanTask1" .equals (historicTask .getTaskDefinitionKey ())) {
624
+ assertThat (historicTask .getName ()).isEqualTo ("Task 2" );
625
+ assertThat (historicTask .getFormKey ()).isEqualTo ("myForm" );
626
+ assertThat (historicTask .getCategory ()).isEqualTo ("myCategory" );
627
+ assertThat (historicTask .getDescription ()).isEqualTo ("Example description" );
628
+
629
+ } else {
630
+ assertThat (historicTask .getName ()).isEqualTo ("Task 3" );
631
+ assertThat (historicTask .getFormKey ()).isEqualTo ("myForm2" );
632
+ assertThat (historicTask .getCategory ()).isEqualTo ("myCategory2" );
633
+ assertThat (historicTask .getDescription ()).isEqualTo ("Example description2" );
634
+ }
635
+ }
636
+ }
637
+ }
491
638
492
639
@ Test
493
640
void withSimpleOneTaskCaseIntroducingNewTaskWithConditionalSentryNotActivated () {
0 commit comments