jBPM70Ex005_casemgmt
ProcessJPATest.testAddUserTaskToCaseWithStage()
UserTaskCase.bpmn2 : adhoc process
UserTaskWithStageCase.bpmn2 : adhoc process
casemgmt is operated by service classses:
- CaseFileInstance caseFile = caseService.newCaseFileInstance(deploymentUnit.getIdentifier(), USER_TASK_CASE_P_ID, data, roleAssignments);
- get CaseDefinition
- create CaseFileInstanceImpl
- String caseId = caseService.startCase(deploymentUnit.getIdentifier(), USER_TASK_STAGE_CASE_P_ID, caseFile);
- generate caseId
- processService.execute(StartCaseCommand)
- addEventListener to capture events for "RuleFlow-AdHocActivate-" rule match
- Insert caseFile into WorkingMemory
- FireAllRules
- startProcess with CorrelationKey(caseId) : processId = caseDefinitionId (so it's "UserTaskWithStageCase")
- singalEvent for captured events
- CaseInstance cInstance = caseService.getCaseInstance(caseId);
- Use
- Actually, returns the top level process instance for the case id
- Use
- caseService.addDynamicTaskToStage(FIRST_CASE_ID, stage.getId(), caseService.newHumanTaskSpec("First task", "test", "john", null, parameters));
- processService.execute(AddDynamicTaskToStageCommand)
- Add a WorkItem
- processService.execute(AddDynamicTaskToStageCommand)
- Collection
caseProcessInstances = caseRuntimeDataService.getProcessInstancesForCase(caseId, new QueryContext()); - simeply get a prorcessInstance ... runtimeDataService.getProcessInstancesByCorrelationKey()
- caseService.cancelCase(caseId);
- processService.execute(CancelCaseCommand)
- get all process instances
- abort all process instances
- if (destory == true), destroy ksession and mapping
- processService.execute(CancelCaseCommand)
===
What is "Stage"?
It's adhoc subprocess in the process.
Thread [main] (Suspended (breakpoint at line 40 in CaseStageImpl)) owns: KModuleDeploymentService (id=85) CaseStageImpl.<init>(String, String, Collection<AdHocFragment>) line: 40 CaseRuntimeDataServiceImpl.collectCaseStages(String, String, NodeContainer) line: 728 CaseRuntimeDataServiceImpl.onDeploy(DeploymentEvent) line: 167 KModuleDeploymentService(AbstractDeploymentService).notifyOnDeploy(DeploymentUnit, DeployedUnit) line: 96 KModuleDeploymentService(AbstractDeploymentService).commonDeploy(DeploymentUnit, DeployedUnitImpl, RuntimeEnvironment, KieContainer) line: 163 KModuleDeploymentService.deploy(DeploymentUnit) line: 200 ProcessJPATest(AbstractCaseServicesBaseTest).prepareDeploymentUnit() line: 223 ProcessJPATest(AbstractCaseServicesBaseTest).setUp() line: 186 NativeMethodAccessorImpl.invoke0(Method, Object, Object[]) line: not available [native method] NativeMethodAccessorImpl.invoke(Object, Object[]) line: 62 DelegatingMethodAccessorImpl.invoke(Object, Object[]) line: 43 Method.invoke(Object, Object...) line: 497 FrameworkMethod$1.runReflectiveCall() line: 50 FrameworkMethod$1(ReflectiveCallable).run() line: 12 FrameworkMethod.invokeExplosively(Object, Object...) line: 47 RunBefores.evaluate() line: 24 RunAfters.evaluate() line: 27 BlockJUnit4ClassRunner(ParentRunner<T>).runLeaf(Statement, Description, RunNotifier) line: 325 BlockJUnit4ClassRunner.runChild(FrameworkMethod, RunNotifier) line: 78 BlockJUnit4ClassRunner.runChild(Object, RunNotifier) line: 57 ParentRunner$3.run() line: 290 ParentRunner$1.schedule(Runnable) line: 71 BlockJUnit4ClassRunner(ParentRunner<T>).runChildren(RunNotifier) line: 288 ParentRunner<T>.access$000(ParentRunner, RunNotifier) line: 58 ParentRunner$2.evaluate() line: 268 BlockJUnit4ClassRunner(ParentRunner<T>).run(RunNotifier) line: 363 JUnit4TestReference.run(TestExecution) line: 86 TestExecution.run(ITestReference[]) line: 38 RemoteTestRunner.runTests(String[], String, TestExecution) line: 459 RemoteTestRunner.runTests(TestExecution) line: 675 RemoteTestRunner.run() line: 382 RemoteTestRunner.main(String[]) line: 192