14
14
15
15
import static org .assertj .core .api .Assertions .assertThat ;
16
16
17
- import org .flowable .cmmn .api .runtime .PlanItemInstanceState ;
18
17
import org .flowable .cmmn .engine .CmmnEngine ;
19
18
import org .flowable .cmmn .engine .CmmnEngines ;
20
- import org .flowable .cmmn .engine .impl .history .async .CmmnAsyncHistoryConstants ;
21
19
import org .flowable .cmmn .engine .test .impl .CmmnJobTestHelper ;
22
20
import org .flowable .common .engine .api .async .AsyncTaskExecutor ;
23
21
import org .flowable .engine .ProcessEngine ;
24
22
import org .flowable .engine .ProcessEngineConfiguration ;
25
- import org .flowable .engine .impl .history . async . HistoryJsonConstants ;
26
- import org .flowable .job .api . HistoryJob ;
23
+ import org .flowable .engine .impl .util . CommandContextUtil ;
24
+ import org .flowable .job .service . HistoryJobService ;
27
25
import org .flowable .job .service .JobServiceConfiguration ;
28
26
import org .flowable .job .service .impl .asyncexecutor .AsyncExecutor ;
27
+ import org .flowable .job .service .impl .persistence .entity .HistoryJobEntity ;
29
28
import org .junit .After ;
30
29
import org .junit .Before ;
31
30
import org .junit .Test ;
@@ -54,9 +53,6 @@ public void cleanup() {
54
53
.createDeploymentQuery ()
55
54
.list ()
56
55
.forEach (deployment -> cmmnEngine .getCmmnRepositoryService ().deleteDeployment (deployment .getId (), true ));
57
- // Execute history jobs for the delete deployments
58
- processEngine .getManagementService ().createHistoryJobQuery ().list ()
59
- .forEach (historyJob -> processEngine .getManagementService ().executeHistoryJob (historyJob .getId ()));
60
56
61
57
cmmnEngine .close ();
62
58
processEngine .close ();
@@ -79,66 +75,48 @@ public void testSharedAsyncHistoryExecutor() {
79
75
assertThat (processEngine .getProcessEngineConfiguration ().getAsyncHistoryExecutor ().getJobServiceConfiguration ().getHistoryJobExecutionScope ())
80
76
.isEqualTo (JobServiceConfiguration .JOB_EXECUTION_SCOPE_ALL );
81
77
82
- // 2 job handlers / engine
83
- assertThat (processEngineAsyncExecutor .getJobServiceConfiguration ().getHistoryJobHandlers ()).hasSize (4 );
84
-
85
- // Deploy and start test processes/cases
86
- // Trigger one plan item instance to start the process
87
- processEngine .getRepositoryService ().createDeployment ().addClasspathResource ("org/flowable/cmmn/test/oneTaskProcess.bpmn20.xml" ).deploy ();
88
- cmmnEngine .getCmmnRepositoryService ().createDeployment ()
89
- .addClasspathResource ("org/flowable/cmmn/test/ProcessTaskTest.testOneTaskProcessNonBlocking.cmmn" ).deploy ();
90
- cmmnEngine .getCmmnRuntimeService ().createCaseInstanceBuilder ().caseDefinitionKey ("myCase" ).start ();
91
- cmmnEngine .getCmmnRuntimeService ().triggerPlanItemInstance (
92
- cmmnEngine .getCmmnRuntimeService ().createPlanItemInstanceQuery ().planItemInstanceState (PlanItemInstanceState .ACTIVE ).singleResult ().getId ());
93
-
94
- // As async history is enabled, there should be no historical entries yet, but there should be history jobs
95
- assertThat (cmmnEngine .getCmmnHistoryService ().createHistoricCaseInstanceQuery ().count ()).isZero ();
96
- assertThat (processEngine .getHistoryService ().createHistoricProcessInstanceQuery ().count ()).isZero ();
97
-
98
- // 3 history jobs expected:
99
- // - one for the case instance start
100
- // - one for the plan item instance trigger
101
- // - one for the process instance start
102
- assertThat (cmmnEngine .getCmmnManagementService ().createHistoryJobQuery ().count ()).isEqualTo (3 );
103
- assertThat (processEngine .getManagementService ().createHistoryJobQuery ().count ()).isEqualTo (3 );
104
-
105
- // Expected 2 jobs originating from the cmmn engine and 1 for the process engine
106
- int cmmnHistoryJobs = 0 ;
107
- int bpmnHistoryJobs = 0 ;
108
- for (HistoryJob historyJob : cmmnEngine .getCmmnManagementService ().createHistoryJobQuery ().list ()) {
109
- if (historyJob .getJobHandlerType ().equals (CmmnAsyncHistoryConstants .JOB_HANDLER_TYPE_DEFAULT_ASYNC_HISTORY )
110
- || historyJob .getJobHandlerType ().equals (CmmnAsyncHistoryConstants .JOB_HANDLER_TYPE_DEFAULT_ASYNC_HISTORY_ZIPPED )) {
111
- cmmnHistoryJobs ++;
112
- } else if (historyJob .getJobHandlerType ().equals (HistoryJsonConstants .JOB_HANDLER_TYPE_DEFAULT_ASYNC_HISTORY )
113
- || historyJob .getJobHandlerType ().equals (HistoryJsonConstants .JOB_HANDLER_TYPE_DEFAULT_ASYNC_HISTORY_ZIPPED )) {
114
- bpmnHistoryJobs ++;
115
- }
116
-
117
- // Execution scope should be all (see the CmmnEngineConfigurator)
118
- assertThat (historyJob .getScopeType ()).isEqualTo (JobServiceConfiguration .JOB_EXECUTION_SCOPE_ALL );
119
- }
120
- assertThat (bpmnHistoryJobs ).isEqualTo (1 );
121
- assertThat (cmmnHistoryJobs ).isEqualTo (2 );
78
+ // 1 job handlers / engine
79
+ assertThat (processEngineAsyncExecutor .getJobServiceConfiguration ().getHistoryJobHandlers ())
80
+ .containsOnlyKeys ("bpmn-test-history-job-handler" , "cmmn-test-history-job-handler" );
81
+
82
+ processEngine .getManagementService ()
83
+ .executeCommand (commandContext -> {
84
+ HistoryJobService historyJobService = CommandContextUtil .getProcessEngineConfiguration (commandContext )
85
+ .getJobServiceConfiguration ()
86
+ .getHistoryJobService ();
87
+
88
+ HistoryJobEntity historyJob = historyJobService .createHistoryJob ();
89
+ historyJob .setScopeType (JobServiceConfiguration .JOB_EXECUTION_SCOPE_ALL );
90
+ historyJob .setJobHandlerType ("bpmn-test-history-job-handler" );
91
+ historyJob .setRetries (3 );
92
+ historyJob .setCreateTime (commandContext .getClock ().getCurrentTime ());
93
+ historyJobService .scheduleHistoryJob (historyJob );
94
+ return null ;
95
+ });
96
+
97
+ cmmnEngine .getCmmnEngineConfiguration ()
98
+ .getCommandExecutor ()
99
+ .execute (commandContext -> {
100
+ HistoryJobService historyJobService = org .flowable .cmmn .engine .impl .util .CommandContextUtil .getCmmnEngineConfiguration (commandContext )
101
+ .getJobServiceConfiguration ()
102
+ .getHistoryJobService ();
103
+
104
+ HistoryJobEntity historyJob = historyJobService .createHistoryJob ();
105
+ historyJob .setScopeType (JobServiceConfiguration .JOB_EXECUTION_SCOPE_ALL );
106
+ historyJob .setJobHandlerType ("cmmn-test-history-job-handler" );
107
+ historyJob .setRetries (3 );
108
+ historyJob .setCreateTime (commandContext .getClock ().getCurrentTime ());
109
+ historyJobService .scheduleHistoryJob (historyJob );
110
+ return null ;
111
+ });
112
+
113
+ assertThat (cmmnEngine .getCmmnManagementService ().createHistoryJobQuery ().count ()).isEqualTo (2 );
114
+ assertThat (processEngine .getManagementService ().createHistoryJobQuery ().count ()).isEqualTo (2 );
122
115
123
116
// Starting the async history executor should process all of these
124
117
CmmnJobTestHelper .waitForAsyncHistoryExecutorToProcessAllJobs (cmmnEngine .getCmmnEngineConfiguration (), 10000L , 200L , true );
125
118
126
- assertThat (cmmnEngine .getCmmnHistoryService ().createHistoricCaseInstanceQuery ().count ()).isEqualTo (1 );
127
- assertThat (processEngine .getHistoryService ().createHistoricProcessInstanceQuery ().count ()).isEqualTo (1 );
128
119
assertThat (cmmnEngine .getCmmnManagementService ().createHistoryJobQuery ().count ()).isZero ();
129
120
assertThat (processEngine .getManagementService ().createHistoryJobQuery ().count ()).isZero ();
130
121
}
131
-
132
- @ Test
133
- public void testProcessAsyncHistoryNotChanged () {
134
- // This test validates that the shared async history executor does not intervene when running a process regularly
135
- processEngine .getRepositoryService ().createDeployment ().addClasspathResource ("org/flowable/cmmn/test/oneTaskProcess.bpmn20.xml" ).deploy ();
136
- processEngine .getRuntimeService ().startProcessInstanceByKey ("oneTask" );
137
- assertThat (processEngine .getManagementService ().createHistoryJobQuery ().count ()).isEqualTo (1 );
138
-
139
- HistoryJob historyJob = processEngine .getManagementService ().createHistoryJobQuery ().singleResult ();
140
- assertThat (historyJob .getJobHandlerType ()).isEqualTo (HistoryJsonConstants .JOB_HANDLER_TYPE_DEFAULT_ASYNC_HISTORY );
141
- processEngine .getManagementService ().executeHistoryJob (historyJob .getId ());
142
- }
143
-
144
122
}
0 commit comments