ProcessInstanceLog pil = new ProcessInstanceLog(randomLong(), randomString()); pil.setDuration(randomLong()); pil.setExternalId(randomString()); pil.setIdentity(randomString()); pil.setOutcome(randomString()); pil.setParentProcessInstanceId(randomLong()); pil.setProcessId(randomString()); pil.setProcessName(randomString()); pil.setProcessVersion(randomString()); pil.setStatus(random.nextInt()); pil.setStart(cal.getTime()); cal.add(Calendar.DAY_OF_YEAR, 1); pil.setEnd(cal.getTime()); switch(i) { case 1: testData[i-1].setDuration(testData[i].getDuration()); break; case 2: testData[i-1].setEnd(testData[i].getEnd()); break; case 3: testData[i-1].setIdentity(testData[i].getIdentity()); break; case 4: testData[i-1].setProcessId(testData[i].getProcessId()); break; case 5:
@Override public AuditEvent buildEvent(ProcessCompletedEvent pce, Object log) { ProcessInstanceImpl pi = (ProcessInstanceImpl) pce.getProcessInstance(); ProcessInstanceLog logEvent = null; if (log != null) { logEvent = (ProcessInstanceLog) log; } else { logEvent = new ProcessInstanceLog(pi.getId(), pi.getProcessId()); } logEvent.setOutcome(pi.getOutcome()); logEvent.setStatus(pi.getState()); logEvent.setEnd(pce.getEventDate()); logEvent.setDuration(logEvent.getEnd().getTime() - logEvent.getStart().getTime()); logEvent.setProcessInstanceDescription( pi.getDescription() ); logEvent.setSlaCompliance(pi.getSlaCompliance()); return logEvent; }
private ProcessInstanceLog buildCompletedProcessInstance(long processInstanceId) { ProcessInstanceLog pil = new ProcessInstanceLog(processInstanceId, "test"); pil.setDuration(0L); pil.setExternalId("none"); pil.setIdentity("none"); pil.setOutcome(""); pil.setParentProcessInstanceId(-1L); pil.setProcessId("test"); pil.setProcessName("test process"); pil.setProcessVersion("1"); pil.setStatus(2); pil.setStart(null); pil.setEnd(null); return pil; } }
case AbstractAuditLogger.AFTER_NODE_ENTER_EVENT_TYPE: NodeInstanceLog nodeAfterEnterEvent = (NodeInstanceLog) event; if (nodeAfterEnterEvent.getWorkItemId() != null) { List<NodeInstanceLog> result = em.createQuery( "from NodeInstanceLog as log where log.nodeInstanceId = :nodeId and log.type = 0") .setParameter("nodeId", nodeAfterEnterEvent.getNodeInstanceId()).getResultList(); log.setWorkItemId(nodeAfterEnterEvent.getWorkItemId()); List<ProcessInstanceLog> result = em.createQuery( "from ProcessInstanceLog as log where log.processInstanceId = :piId and log.end is null") .setParameter("piId", processCompletedEvent.getProcessInstanceId()).getResultList(); log.setOutcome(processCompletedEvent.getOutcome()); log.setStatus(processCompletedEvent.getStatus()); log.setEnd(processCompletedEvent.getEnd()); log.setDuration(processCompletedEvent.getDuration());
public static void runTestLogger3(KieSession session, AuditLogService auditLogService) { session.getWorkItemManager().registerWorkItemHandler("Human Task", new SystemOutWorkItemHandler()); // record the initial count to compare to later List<ProcessInstanceLog> processInstances = auditLogService.findProcessInstances("com.sample.ruleflow"); int initialProcessInstanceSize = processInstances.size(); // start process instance long processInstanceId = session.startProcess("com.sample.ruleflow2").getId(); logger.debug("Checking process instances for process 'com.sample.ruleflow2'"); processInstances = auditLogService.findProcessInstances("com.sample.ruleflow2"); Assertions.assertThat(processInstances.size()).isEqualTo(initialProcessInstanceSize + 1); ProcessInstanceLog processInstance = processInstances.get(initialProcessInstanceSize); logger.debug("{} -> {} - {}", processInstance.toString(), processInstance.getStart(), processInstance.getEnd()); Assertions.assertThat(processInstance.getStart()).isNotNull(); Assertions.assertThat(processInstance.getEnd()).isNotNull().withFailMessage("ProcessInstanceLog does not contain end date."); Assertions.assertThat(processInstance.getProcessInstanceId().longValue()).isEqualTo(processInstanceId); Assertions.assertThat(processInstance.getProcessId()).isEqualTo("com.sample.ruleflow2"); List<NodeInstanceLog> nodeInstances = auditLogService.findNodeInstances(processInstanceId); for (NodeInstanceLog nodeInstance: nodeInstances) { logger.debug("{} -> {}", nodeInstance.toString(), nodeInstance.getDate()); Assertions.assertThat(processInstance.getProcessInstanceId().longValue()).isEqualTo(processInstanceId); Assertions.assertThat(processInstance.getProcessId()).isEqualTo("com.sample.ruleflow2"); Assertions.assertThat(nodeInstance.getDate()).isNotNull(); } Assertions.assertThat(nodeInstances.size()).isEqualTo(14); auditLogService.clear(); }
List<ProcessInstanceLog> processInstances = auditLogService.findProcessInstances("com.sample.ruleflow"); int initialProcessInstanceSize = processInstances.size(); list.add("Three"); params.put("list", list); long processInstanceId = session.startProcess("com.sample.ruleflow3", params).getId(); List<VariableInstanceLog> varLogs = auditLogService.findVariableInstancesByName("s", true) ; Assertions.assertThat(varLogs).isNotEmpty(); Assertions.assertThat(varLogs.size()).isEqualTo(1); session.getWorkItemManager().completeWorkItem(workItemId, results); processInstances = auditLogService.findProcessInstances("com.sample.ruleflow3"); Assertions.assertThat(processInstances.size()).isEqualTo(initialProcessInstanceSize + 1); ProcessInstanceLog processInstance = processInstances.get(initialProcessInstanceSize); logger.debug("{} -> {} - {}", processInstance.toString(), processInstance.getStart(), processInstance.getEnd()); Assertions.assertThat(processInstance.getStart()).isNotNull(); Assertions.assertThat(processInstance.getEnd()).isNotNull().withFailMessage("ProcessInstanceLog does not contain end date."); Assertions.assertThat(processInstance.getProcessInstanceId().longValue()).isEqualTo(processInstanceId); Assertions.assertThat(processInstance.getProcessId()).isEqualTo("com.sample.ruleflow3"); List<VariableInstanceLog> variableInstances = auditLogService.findVariableInstances(processInstanceId); Assertions.assertThat(variableInstances.size()).isEqualTo(11); for (VariableInstanceLog variableInstance: variableInstances) { logger.debug(variableInstance.toString()); Assertions.assertThat(processInstance.getProcessInstanceId().longValue()).isEqualTo(processInstanceId); Assertions.assertThat(processInstance.getProcessId()).isEqualTo("com.sample.ruleflow3"); Assertions.assertThat(variableInstance.getDate()).isNotNull();
public static void runTestLogger4LargeVariable(KieSession session, AuditLogService auditLogService) throws Exception { session.getWorkItemManager().registerWorkItemHandler("Human Task", new WorkItemHandler() { public void executeWorkItem(WorkItem workItem, WorkItemManager manager) { Map<String, Object> results = new HashMap<String, Object>(); List<ProcessInstanceLog> processInstances = auditLogService.findProcessInstances("com.sample.ruleflow3"); int initialProcessInstanceSize = processInstances.size(); long processInstanceId = session.startProcess("com.sample.ruleflow3", params).getId(); processInstances = auditLogService.findProcessInstances("com.sample.ruleflow3"); int expected = initialProcessInstanceSize + 1; Assertions.assertThat(processInstances.size()).isEqualTo(expected).withFailMessage(String.format("Expected %d ProcessInstanceLog instances, not %d", expected, processInstances.size())); ProcessInstanceLog processInstance = processInstances.get(initialProcessInstanceSize); logger.debug("{} -> {} - {}",processInstance.toString(), processInstance.getStart(), processInstance.getEnd()); Assertions.assertThat(processInstance.getStart()).isNotNull(); Assertions.assertThat(processInstance.getEnd()).isNotNull().withFailMessage("ProcessInstanceLog does not contain end date."); Assertions.assertThat(processInstance.getProcessInstanceId().longValue()).isEqualTo(processInstanceId); Assertions.assertThat(processInstance.getProcessId()).isEqualTo("com.sample.ruleflow3"); List<VariableInstanceLog> variableInstances = auditLogService.findVariableInstances(processInstanceId); Assertions.assertThat(variableInstances.size()).isEqualTo(8); for (VariableInstanceLog variableInstance: variableInstances) { logger.debug(variableInstance.toString()); Assertions.assertThat(processInstance.getProcessInstanceId().longValue()).isEqualTo(processInstanceId); Assertions.assertThat(processInstance.getProcessId()).isEqualTo("com.sample.ruleflow3"); Assertions.assertThat(variableInstance.getDate()).isNotNull();
Object result = ksession.execute(cmd); assertNotNull( "Command result is empty!", result ); assertTrue( result instanceof List ); assertEquals( "Log list size is incorrect.", 1, logList.size() ); ProcessInstanceLog log = logList.get(0); assertEquals(log.getProcessInstanceId().longValue(), processInstance.getId()); assertEquals(log.getProcessId(), processInstance.getProcessId()); assertEquals( "Log list size is incorrect.", 1, logList.size() ); log = logList.get(0); assertEquals("Process instance id", log.getProcessInstanceId().longValue(), processInstance.getId()); assertEquals("Process id", log.getProcessId(), processInstance.getProcessId()); assertEquals("Status", log.getStatus().intValue(), ProcessInstance.STATE_ACTIVE ); cmd = new FindProcessInstanceCommand(processInstance.getId()); assertTrue( result instanceof ProcessInstanceLog ); log = (ProcessInstanceLog) result; assertEquals(log.getProcessInstanceId().longValue(), processInstance.getId()); assertEquals(log.getProcessId(), processInstance.getProcessId()); result = ksession.execute(cmd); assertEquals( "There should be no more logs", 0, logService.findProcessInstances().size() );
@Test public void testAuditLog() throws Exception { KieSession ksession = getKieSession(); final ProcessInstance processInstance = ksession.startProcess(SAMPLE_HELLO_PROCESS_ID); RuntimeManager manager = getManager(); RuntimeEngine engine = getEngine(); AuditLogService logService = getLogService(); ProcessInstanceLog instanceLog = logService.findProcessInstance(processInstance.getId()); assertNotNull(instanceLog); assertEquals(ProcessInstance.STATE_ACTIVE, instanceLog.getStatus().intValue()); ksession.abortProcessInstance(processInstance.getId()); instanceLog = logService.findProcessInstance(processInstance.getId()); assertNotNull(instanceLog); assertEquals(ProcessInstance.STATE_ABORTED, instanceLog.getStatus().intValue()); manager.disposeRuntimeEngine(engine); }
ksession = createKnowledgeSession(kbase); TestWorkItemHandler workItemHandler = new TestWorkItemHandler(); ksession.getWorkItemManager().registerWorkItemHandler("Human Task", workItemHandler); ProcessInstance processInstance = ksession.startProcess("ParentProcess", params); assertProcessInstanceActive(processInstance); assertNotEquals("Child process instance must be different", processInstance.getId(), childPI); ksession.abortProcessInstance(childPI); assertProcessInstanceFinished(processInstance, ksession); ProcessInstanceLog log = logService.findProcessInstance(childPI); assertNotNull(log); assertEquals(ProcessInstance.STATE_ABORTED, log.getStatus().intValue()); log = logService.findProcessInstance(processInstance.getId()); assertNotNull(log); assertEquals("Parent process should be completed and not aborted", ProcessInstance.STATE_COMPLETED, log.getStatus().intValue());
@Test public void testLogger3() { long processInstanceId = startProcess("com.sample.ruleflow2").getId(); logger.debug("Checking process instances for process 'com.sample.ruleflow2'"); List<ProcessInstanceLog> processInstances = logService.findProcessInstances("com.sample.ruleflow2"); assertEquals(1, processInstances.size()); ProcessInstanceLog processInstance = processInstances.get(0); logger.debug("{}", processInstance); logger.debug(" -> {} - {} ", processInstance.getStart(), processInstance.getEnd()); assertNotNull(processInstance.getStart()); assertNotNull(processInstance.getEnd()); assertEquals(processInstanceId, processInstance.getProcessInstanceId().longValue()); assertEquals("com.sample.ruleflow2", processInstance.getProcessId()); List<NodeInstanceLog> nodeInstances = logService.findNodeInstances(processInstanceId); for (NodeInstanceLog nodeInstance: nodeInstances) { logger.debug("{}", nodeInstance); logger.debug(" -> {}", nodeInstance.getDate()); assertEquals(processInstanceId, processInstance.getProcessInstanceId().longValue()); assertEquals("com.sample.ruleflow2", processInstance.getProcessId()); assertNotNull(nodeInstance.getDate()); } assertEquals(14, nodeInstances.size()); logService.clear(); }
long processInstanceId = ksession.startProcess(PROCESS_ID).getId(); ProcessInstanceLog processInstance = processInstances.get(initialProcessInstanceSize); logger.debug( "{} -> {} - {}",processInstance.toString(), processInstance.getStart(), processInstance.getEnd()); assertNotNull(processInstance.getStart()); assertNotNull("ProcessInstanceLog does not contain end date.", processInstance.getEnd()); assertEquals(processInstanceId, processInstance.getProcessInstanceId().longValue()); assertEquals(PROCESS_ID, processInstance.getProcessId()); List<NodeInstanceLog> nodeInstances = setAuditLogServiceAndExecute(new FindNodeInstancesCommand(processInstanceId)); assertEquals(6, nodeInstances.size());
ProcessInstanceLog pLog = new ProcessInstanceLog(23, "process"); pLog.setDuration(2000l); pLog.setEnd(new Date()); pLog.setExternalId("domain"); pLog.setIdentity("id"); pLog.setOutcome("error"); pLog.setParentProcessInstanceId(42); pLog.setProcessName("name"); pLog.setProcessVersion("1-SNAP"); pLog.setStatus(2); idField = ProcessInstanceLog.class.getDeclaredField("id"); idField.setAccessible(true); NodeInstanceLog nLog = new NodeInstanceLog(0, 23, "process", "nodeInst", "node", "wally"); idField = NodeInstanceLog.class.getDeclaredField("id"); idField.setAccessible(true); dateField.setAccessible(true); dateField.set(nLog, new Date()); nLog.setNodeType("type"); nLog.setWorkItemId(88l); nLog.setConnection("connex"); nLog.setExternalId("domain");
protected boolean assertProcessInstanceState(int state, ProcessInstance processInstance) { if (sessionPersistence) { ProcessInstanceLog log = logService.findProcessInstance(processInstance.getId()); if (log != null) { return log.getStatus() == state; } } else { return processInstance.getState() == state; } return false; }
@Override public AuditEvent buildEvent(ProcessStartedEvent pse) { ProcessInstanceImpl pi = (ProcessInstanceImpl) pse.getProcessInstance(); ProcessInstanceLog log = new ProcessInstanceLog(pi.getId(), pi.getProcessId()); log.setExternalId(""+((KieSession) pse.getKieRuntime()).getIdentifier()); log.setProcessName(pi.getProcess().getName()); log.setProcessVersion(pi.getProcess().getVersion()); log.setStatus(ProcessInstance.STATE_ACTIVE); log.setProcessInstanceDescription( pi.getDescription() ); log.setProcessType(((WorkflowProcess)pi.getProcess()).getProcessType()); log.setSlaCompliance(pi.getSlaCompliance()); log.setSlaDueDate(pi.getSlaDueDate()); // store correlation key in its external form CorrelationKey correlationKey = (CorrelationKey) pi.getMetaData().get("CorrelationKey"); if (correlationKey != null) { log.setCorrelationKey(correlationKey.toExternalForm()); } long parentProcessInstanceId = (Long) pi.getMetaData().getOrDefault("ParentProcessInstanceId", -1L); log.setParentProcessInstanceId( parentProcessInstanceId ); return log; }
Assume.assumeFalse(getType().equals(TestType.YAML)); ProcessInstanceLog origLog = new ProcessInstanceLog(54, "org.hospital.patient.triage"); origLog.setDuration(65l); origLog.setEnd(new Date((new Date()).getTime() + 1000)); origLog.setExternalId("testDomainId"); origLog.setIdentity("identityNotMemory"); origLog.setProcessName("org.process.not.technical"); origLog.setProcessVersion("v3.14");
params.put("candidate", "johny"); ProcessInstance processInstance = ksession.startProcess("hiring", params); List<ProcessInstanceLog> findProcessInstances = auditLogService.findProcessInstances(); for(ProcessInstanceLog pi : findProcessInstances){ System.out.println("Process Instance: "+pi.getProcessName() + " - Version: "+pi.getProcessVersion() + " - Started at: "+pi.getStart());
@Test public void simpleProcessInstanceLogQueryBuilderTest() { int p = 0; long duration = pilTestData[p++].getDuration(); ProcessInstanceLogQueryBuilder builder = this.processInstanceLogQuery().duration(duration); List<org.kie.api.runtime.manager.audit.ProcessInstanceLog> resultList Date end = pilTestData[p++].getEnd(); builder = this.processInstanceLogQuery().endDate(end); resultList = builder.build().getResultList(); String identity = pilTestData[p++].getIdentity(); builder = this.processInstanceLogQuery().identity(identity); resultList = builder.build().getResultList(); String processId = pilTestData[p++].getProcessId(); builder = this.processInstanceLogQuery().processId(processId); resultList = builder.build().getResultList(); long processInstanceId = pilTestData[p++].getProcessInstanceId(); builder = this.processInstanceLogQuery().processInstanceId(processInstanceId); resultList = builder.build().getResultList(); String processName = pilTestData[p++].getProcessName(); builder = this.processInstanceLogQuery().processName(processName); resultList = builder.build().getResultList(); String version = pilTestData[p++].getProcessVersion(); builder = this.processInstanceLogQuery().processVersion(version); resultList = builder.build().getResultList();
@Test public void testLogger2() { // start process instance startProcess("com.sample.ruleflow"); startProcess("com.sample.ruleflow"); logger.debug("Checking process instances for process 'com.sample.ruleflow'"); List<ProcessInstanceLog> processInstances = logService.findProcessInstances("com.sample.ruleflow"); assertEquals(2, processInstances.size()); for (ProcessInstanceLog processInstance: processInstances) { logger.debug("{}", processInstance); logger.debug(" -> {} - {}", processInstance.getStart(), processInstance.getEnd()); List<NodeInstanceLog> nodeInstances = logService.findNodeInstances(processInstance.getProcessInstanceId()); for (NodeInstanceLog nodeInstance: nodeInstances) { logger.debug("{}", nodeInstance); logger.debug(" -> {}", nodeInstance.getDate()); } assertEquals(6, nodeInstances.size()); assertRuleFlowSampleLogsSorting(nodeInstances, processInstance.getProcessInstanceId()); } logService.clear(); }
int nodeSignals = 0; for (NodeInstanceLog niLog : nodeInstancesViolations) { RuntimeManager runtimeManager = RuntimeManagerRegistry.get().getManager(niLog.getExternalId()); if (runtimeManager == null) { logger.debug("No runtime manager found for {}, not able to send SLA violation signal", niLog.getExternalId()); continue; RuntimeEngine engine = runtimeManager.getRuntimeEngine(ProcessInstanceIdContext.get(niLog.getProcessInstanceId())); engine.getKieSession().signalEvent("slaViolation:" + niLog.getNodeInstanceId(), null, niLog.getProcessInstanceId()); nodeSignals++; } catch (Exception e) { int processSignals = 0; for (ProcessInstanceLog piLog : processInstancesViolations) { RuntimeManager runtimeManager = RuntimeManagerRegistry.get().getManager(piLog.getExternalId()); if (runtimeManager == null) { logger.debug("No runtime manager found for {}, not able to send SLA violation signal", piLog.getExternalId()); continue; RuntimeEngine engine = runtimeManager.getRuntimeEngine(ProcessInstanceIdContext.get(piLog.getProcessInstanceId())); engine.getKieSession().signalEvent("slaViolation", null, piLog.getProcessInstanceId()); processSignals++; } catch (Exception e) { logger.warn("Unexpected error when signalig process instance {} about SLA violation {}", piLog.getProcessInstanceId(), e.getMessage(), e); } finally { runtimeManager.disposeRuntimeEngine(engine);