@Override public int compare( org.kie.api.runtime.manager.audit.ProcessInstanceLog o1, org.kie.api.runtime.manager.audit.ProcessInstanceLog o2 ) { return o1.getDuration().compareTo(o2.getDuration()); } }
protected String nodeName(NodeInstance nodeInstance) { try { return nodeInstance.getNodeName(); } catch (IllegalStateException e) { NodeInstanceLog nodeInstanceLog = (NodeInstanceLog) ((NodeInstanceImpl) nodeInstance).getMetaData("NodeInstanceLog"); if (nodeInstanceLog != null) { return nodeInstanceLog.getNodeName(); } return ""; } }
@Override public void dispose() { if (!this.disposed) { // first call listeners and then dispose itself for (DisposeListener listener : listeners) { listener.onDispose(this); } if (ksession != null) { try { ksession.dispose(); } catch(IllegalStateException e){ // do nothing most likely ksession was already disposed } catch (Exception e) { e.printStackTrace(); } } if (auditService != null) { auditService.dispose(); } this.disposed = true; } }
protected void assertMigratedProcessInstance(String processId, long processInstanceId, int status) { ProcessInstanceLog instance = auditService.findProcessInstance(processInstanceId); assertNotNull(instance); assertEquals(processId, instance.getProcessId()); assertEquals(DEPLOYMENT_ID_V2, instance.getExternalId()); assertEquals(status, instance.getStatus().intValue()); }
VariableInstanceLog log = (VariableInstanceLog) builder.buildEvent(event); ((org.jbpm.process.audit.VariableInstanceLog)processVariable).setProcessId(log.getProcessId()); ((org.jbpm.process.audit.VariableInstanceLog)processVariable).setProcessInstanceId(log.getProcessInstanceId()); ((org.jbpm.process.audit.VariableInstanceLog)processVariable).setDate(log.getDate()); ((org.jbpm.process.audit.VariableInstanceLog)processVariable).setExternalId(log.getExternalId()); ((org.jbpm.process.audit.VariableInstanceLog)processVariable).setOldValue(log.getOldValue()); ((org.jbpm.process.audit.VariableInstanceLog)processVariable).setVariableInstanceId(log.getVariableInstanceId());
AuditService auditService = runtime.getAuditService(); ProcessInstanceLog log = auditService.findProcessInstance(pi.getId()); assertEquals(ProcessInstance.STATE_COMPLETED, log.getStatus().intValue()); auditService.dispose(); manager.disposeRuntimeEngine(runtime);
List<? extends ProcessInstanceLog> logs = logService.findActiveProcessInstances("ParentProcess"); assertNotNull(logs); assertEquals(0, logs.size()); logs = logService.findActiveProcessInstances("SubProcess"); assertNotNull(logs); assertEquals(1, logs.size()); logs = logService.findProcessInstances("ParentProcess"); assertNotNull(logs); assertEquals(1, logs.size()); assertEquals(ProcessInstance.STATE_ABORTED, (int)logs.get(0).getStatus()); logs = logService.findProcessInstances("SubProcess"); assertNotNull(logs); assertEquals(1, logs.size()); assertEquals(ProcessInstance.STATE_ACTIVE, (int)logs.get(0).getStatus());
List<? extends ProcessInstanceLog> throwProcessLogs = auditService.findProcessInstances("com.sample.bpmn.hello"); List<? extends ProcessInstanceLog> catchProcessLogs = auditService.findProcessInstances("com.sample.bpmn.Second"); assertEquals(ProcessInstance.STATE_COMPLETED, throwProcessLogs.get(0).getStatus().intValue()); assertEquals(ProcessInstance.STATE_COMPLETED, catchProcessLogs.get(0).getStatus().intValue());
@Test public void testErrorThrowOfChildProcessOnParent() { RuntimeEnvironment environment = RuntimeEnvironmentBuilder.Factory.get() .newDefaultBuilder() .userGroupCallback(userGroupCallback) .addAsset(ResourceFactory.newClassPathResource("reusable-subprocess/ParentError.bpmn2"), ResourceType.BPMN2) .addAsset(ResourceFactory.newClassPathResource("reusable-subprocess/ChildError.bpmn2"), ResourceType.BPMN2) .get(); manager = RuntimeManagerFactory.Factory.get().newPerProcessInstanceRuntimeManager(environment); assertNotNull(manager); RuntimeEngine runtime = manager.getRuntimeEngine(EmptyContext.get()); KieSession ksession = runtime.getKieSession(); assertNotNull(ksession); ksession.startProcess("ParentError"); List<? extends ProcessInstanceLog> processInstanceLogs = runtime.getAuditService().findProcessInstances(); assertEquals(2, processInstanceLogs.size()); for (ProcessInstanceLog log : processInstanceLogs) { if (log.getProcessId().equals("ParentError")) { assertEquals(ProcessInstance.STATE_COMPLETED, log.getStatus().intValue()); } else if(log.getProcessId().equals("ChildError")) { assertEquals(ProcessInstance.STATE_ABORTED, log.getStatus().intValue()); } } manager.disposeRuntimeEngine(runtime); manager.close(); } @Test
List<? extends ProcessInstanceLog> logs = logService.findActiveProcessInstances("ParentProcess"); assertNotNull(logs); assertEquals(0, logs.size()); logs = logService.findActiveProcessInstances("SubProcess"); assertNotNull(logs); assertEquals(0, logs.size()); logs = logService.findProcessInstances("ParentProcess"); assertNotNull(logs); assertEquals(1, logs.size()); String externalId = logs.get(0).getExternalId(); assertEquals(manager.getIdentifier(), externalId); logs = logService.findProcessInstances("SubProcess"); assertNotNull(logs); assertEquals(1, logs.size()); externalId = logs.get(0).getExternalId(); assertEquals(manager.getIdentifier(), externalId);
assertEquals(ProcessInstance.STATE_COMPLETED, pi1Log.getStatus().intValue()); assertEquals(ProcessInstance.STATE_ACTIVE, pi2Log.getStatus().intValue()); pi2Log = auditService.findProcessInstance(processInstance2.getId()); assertNotNull(pi2Log); assertEquals(ProcessInstance.STATE_COMPLETED, pi2Log.getStatus().intValue());
logs = query.getResultList(); assertEquals("Only 1 log expected", 1, logs.size()); assertEquals("Incorrect variable val", "val-a", logs.get(0).getValue()); assertEquals("Incorrect variable old val", "oldVal-4", logs.get(0).getOldValue());
@Test public void testDeleteVarInstanceInfoLogByTimestamp() { int p = 0; Date date = vilTestData[p++].getDate(); List<org.kie.api.runtime.manager.audit.VariableInstanceLog> vars = this.variableInstanceLogQuery().date(date).build().getResultList(); assertEquals(2, vars.size()); VariableInstanceLogDeleteBuilder updateBuilder = this.variableInstanceLogDelete().date(vars.get(0).getDate()); int result = updateBuilder.build().execute(); assertEquals(2, result); }
@Test public void testDeleteProcessInstanceInfoLogByTimestamp() { int p = 0; Date endDate = pilTestData[p++].getEnd(); List<org.kie.api.runtime.manager.audit.ProcessInstanceLog> logs = this.processInstanceLogQuery().endDate(endDate).build().getResultList(); assertEquals(1, logs.size()); ProcessInstanceLogDeleteBuilder updateBuilder = this.processInstanceLogDelete().endDate(logs.get(0).getEnd()); int result = updateBuilder.build().execute(); assertEquals(1, result); }
@Test public void testDeleteNodeInstanceInfoLogByTimestamp() { int p = 0; Date date = nilTestData[p++].getDate(); List<org.kie.api.runtime.manager.audit.NodeInstanceLog> logs = this.nodeInstanceLogQuery().date(date).build().getResultList(); assertEquals(2, logs.size()); NodeInstanceLogDeleteBuilder updateBuilder = this.nodeInstanceLogDelete().date(logs.get(0).getDate()); int result = updateBuilder.build().execute(); assertEquals(2, result); }
List<? extends ProcessInstanceLog> logs = logService.findActiveProcessInstances("DependentParentProcess"); assertNotNull(logs); assertEquals(0, logs.size()); logs = logService.findActiveProcessInstances("DependentSubProcess"); assertNotNull(logs); assertEquals(0, logs.size()); logs = logService.findProcessInstances("DependentParentProcess"); assertNotNull(logs); assertEquals(1, logs.size()); assertEquals(ProcessInstance.STATE_ABORTED, (int)logs.get(0).getStatus()); logs = logService.findProcessInstances("DependentSubProcess"); assertNotNull(logs); assertEquals(1, logs.size()); assertEquals(ProcessInstance.STATE_ABORTED, (int)logs.get(0).getStatus());
@Test public void testEventSignalingBetweenProcessesWithPeristence() { RuntimeEnvironment environment = RuntimeEnvironmentBuilder.Factory.get() .newDefaultBuilder() .userGroupCallback(userGroupCallback) .addAsset(ResourceFactory.newClassPathResource("events/throw-an-event.bpmn"), ResourceType.BPMN2) .addAsset(ResourceFactory.newClassPathResource("events/start-on-event.bpmn"), ResourceType.BPMN2) .get(); manager = RuntimeManagerFactory.Factory.get().newPerProcessInstanceRuntimeManager(environment); assertNotNull(manager); RuntimeEngine runtime = manager.getRuntimeEngine(EmptyContext.get()); KieSession ksession = runtime.getKieSession(); assertNotNull(ksession); ksession.startProcess("com.sample.bpmn.hello"); AuditService auditService = runtime.getAuditService(); List<? extends ProcessInstanceLog> throwProcessLogs = auditService.findProcessInstances("com.sample.bpmn.hello"); List<? extends ProcessInstanceLog> catchProcessLogs = auditService.findProcessInstances("com.sample.bpmn.Second"); assertNotNull(throwProcessLogs); assertEquals(1, throwProcessLogs.size()); assertEquals(ProcessInstance.STATE_COMPLETED, throwProcessLogs.get(0).getStatus().intValue()); assertNotNull(catchProcessLogs); assertEquals(1, catchProcessLogs.size()); assertEquals(ProcessInstance.STATE_COMPLETED, catchProcessLogs.get(0).getStatus().intValue()); manager.disposeRuntimeEngine(runtime); manager.close(); }
private void testAdHocSubprocess() { RuntimeEngine runtime1 = manager.getRuntimeEngine(ProcessInstanceIdContext.get()); KieSession ksession1 = runtime1.getKieSession(); assertNotNull(ksession1); ProcessInstance processInstance = ksession1.startProcess("jbpm-abort-ht-issue.ad-hoc-abort-ht"); manager.disposeRuntimeEngine(runtime1); // then signal via first manager, should only signal instances owned by that manager runtime1 = manager.getRuntimeEngine(ProcessInstanceIdContext.get(processInstance.getId())); ksession1 = runtime1.getKieSession(); ksession1.addEventListener(new TaskCleanUpProcessEventListener(runtime1.getTaskService())); ksession1.signalEvent("Milestone", null, processInstance.getId()); manager.disposeRuntimeEngine(runtime1); JPAAuditLogService auditService = new JPAAuditLogService(emf); // process instance 1 should be completed by signal ProcessInstanceLog pi1Log = auditService.findProcessInstance(processInstance.getId()); assertNotNull(pi1Log); assertEquals(ProcessInstance.STATE_COMPLETED, pi1Log.getStatus().intValue()); auditService.dispose(); // close manager which will close session maintained by the manager manager.close(); }
static void verifyMaxMinDuration( List<org.kie.api.runtime.manager.audit.ProcessInstanceLog> procInstLogs, int test, long... maxOrMin ) { for( org.kie.api.runtime.manager.audit.ProcessInstanceLog log : procInstLogs ) { assertNotNull( "Duration is null" , log.getDuration() ); long dur = log.getDuration(); if( test == MAX ) { assertTrue( "Duration " + dur + " is larger than max " + maxOrMin[0] + ": " + dur, dur <= maxOrMin[0] ); } else if( test == MIN ) { assertTrue( "Duration " + dur + " is smaller than min " + maxOrMin[0], dur >= maxOrMin[0] ); } else { // BOTH assertTrue( "Duration " + dur + " is smaller than min " + maxOrMin[0], dur >= maxOrMin[0] ); assertTrue( "Duration " + dur + " is larger than max " + maxOrMin[1], dur <= maxOrMin[1] ); } } }
List<? extends ProcessInstanceLog> throwProcessLogs = auditService.findProcessInstances("com.sample.bpmn.hello"); List<? extends ProcessInstanceLog> catchProcessLogs = auditService.findProcessInstances("com.sample.bpmn.Second"); assertEquals(ProcessInstance.STATE_COMPLETED, throwProcessLogs.get(0).getStatus().intValue()); assertEquals(ProcessInstance.STATE_COMPLETED, catchProcessLogs.get(0).getStatus().intValue());