use of org.jbpm.services.api.model.NodeInstanceDesc in project jbpm by kiegroup.
the class RuntimeDataServiceTest method testGetProcessInstanceHistory.
@Test
public void testGetProcessInstanceHistory() throws IOException {
// BZ1048741
assertNotNull(managerFactory);
String id = "custom-manager";
AbstractAuditLogger auditLogger = AuditLoggerFactory.newJPAInstance();
ServicesAwareAuditEventBuilder auditEventBuilder = new ServicesAwareAuditEventBuilder();
auditEventBuilder.setIdentityProvider(new TestIdentifyProviderCDI());
auditEventBuilder.setDeploymentUnitId(id);
auditLogger.setBuilder(auditEventBuilder);
RuntimeEnvironmentBuilder builder = RuntimeEnvironmentBuilder.Factory.get().newDefaultBuilder().entityManagerFactory(emf).registerableItemsFactory(InjectableRegisterableItemsFactory.getFactory(beanManager, auditLogger));
builder.addAsset(ResourceFactory.newClassPathResource("repo/processes/general/hello.bpmn"), ResourceType.BPMN2);
RuntimeManager manager = managerFactory.newSingletonRuntimeManager(builder.get(), id);
RuntimeEngine runtime = manager.getRuntimeEngine(EmptyContext.get());
KieSession ksession = runtime.getKieSession();
ProcessInstance processInstance = ksession.startProcess("hello");
Collection<NodeInstanceDesc> nodeInstanceLogs = runtimeDataService.getProcessInstanceHistoryCompleted(processInstance.getId(), new QueryContext());
// assert if logs are ordered by log.id ASC
Iterator<NodeInstanceDesc> iterator = nodeInstanceLogs.iterator();
NodeInstanceDesc log0 = iterator.next();
assertEquals("End", log0.getName());
NodeInstanceDesc log1 = iterator.next();
assertEquals("Hello", log1.getName());
NodeInstanceDesc log2 = iterator.next();
assertEquals("Start", log2.getName());
Collection<NodeInstanceDesc> fullNodeInstanceLogs = runtimeDataService.getProcessInstanceFullHistory(processInstance.getId(), new QueryContext());
// assert if logs are ordered by log.date DESC, log.id DESC
Iterator<NodeInstanceDesc> fullIterator = fullNodeInstanceLogs.iterator();
NodeInstanceDesc fullLog0 = fullIterator.next();
assertEquals("Start", fullLog0.getName());
assertEquals(true, fullLog0.isCompleted());
NodeInstanceDesc fullLog1 = fullIterator.next();
assertEquals("Hello", fullLog1.getName());
assertEquals(true, fullLog1.isCompleted());
NodeInstanceDesc fullLog2 = fullIterator.next();
assertEquals("End", fullLog2.getName());
assertEquals(true, fullLog2.isCompleted());
NodeInstanceDesc fullLog3 = fullIterator.next();
assertEquals("End", fullLog3.getName());
assertEquals(false, fullLog3.isCompleted());
NodeInstanceDesc fullLog4 = fullIterator.next();
assertEquals("Hello", fullLog4.getName());
assertEquals(false, fullLog4.isCompleted());
NodeInstanceDesc fullLog5 = fullIterator.next();
assertEquals("Start", fullLog5.getName());
assertEquals(false, fullLog5.isCompleted());
manager.close();
}
use of org.jbpm.services.api.model.NodeInstanceDesc in project jbpm by kiegroup.
the class ProcessServiceImpl method abortWorkItem.
@Override
public void abortWorkItem(Long id) {
NodeInstanceDesc nodeDesc = dataService.getNodeInstanceForWorkItem(id);
if (nodeDesc == null) {
throw new WorkItemNotFoundException("Work item with id " + id + " was not found");
}
abortWorkItem(nodeDesc.getDeploymentId(), nodeDesc.getProcessInstanceId(), id);
}
use of org.jbpm.services.api.model.NodeInstanceDesc in project jbpm by kiegroup.
the class ProcessServiceImpl method getWorkItemByProcessInstance.
@Override
public List<WorkItem> getWorkItemByProcessInstance(String deploymentId, Long processInstanceId) {
DeployedUnit deployedUnit = deploymentService.getDeployedUnit(deploymentId);
if (deployedUnit == null) {
throw new DeploymentNotFoundException("No deployments available for " + deploymentId);
}
RuntimeManager manager = deployedUnit.getRuntimeManager();
RuntimeEngine engine = manager.getRuntimeEngine(ProcessInstanceIdContext.get(processInstanceId));
try {
KieSession ksession = engine.getKieSession();
List<WorkItem> workItems = new ArrayList<>();
Collection<NodeInstanceDesc> nodes = dataService.getProcessInstanceHistoryActive(processInstanceId, null);
for (NodeInstanceDesc node : nodes) {
if (node.getWorkItemId() != null) {
workItems.add(((WorkItemManager) ksession.getWorkItemManager()).getWorkItem(node.getWorkItemId()));
}
}
return workItems;
} catch (SessionNotFoundException e) {
throw new ProcessInstanceNotFoundException("Process instance with id " + processInstanceId + " was not found", e);
} finally {
disposeRuntimeEngine(manager, engine);
}
}
use of org.jbpm.services.api.model.NodeInstanceDesc in project jbpm by kiegroup.
the class ProcessServiceEJBIntegrationTest method testStartProcessAndCompleteWorkItemAfterDeactivation.
@Test
public void testStartProcessAndCompleteWorkItemAfterDeactivation() {
assertNotNull(deploymentService);
KModuleDeploymentUnit deploymentUnit = new KModuleDeploymentUnit(GROUP_ID, ARTIFACT_ID, VERSION);
deploymentService.deploy(deploymentUnit);
units.add(deploymentUnit);
boolean isDeployed = deploymentService.isDeployed(deploymentUnit.getIdentifier());
assertTrue(isDeployed);
assertNotNull(processService);
long processInstanceId = processService.startProcess(deploymentUnit.getIdentifier(), "org.jbpm.writedocument");
assertNotNull(processInstanceId);
ProcessInstance pi = processService.getProcessInstance(processInstanceId);
assertNotNull(pi);
deploymentService.deactivate(deploymentUnit.getIdentifier());
Collection<NodeInstanceDesc> activeNodes = runtimeDataService.getProcessInstanceHistoryActive(processInstanceId, new QueryContext());
assertNotNull(activeNodes);
assertEquals(1, activeNodes.size());
assertEquals("Write a Document", activeNodes.iterator().next().getName());
Map<String, Object> outcome = new HashMap<String, Object>();
outcome.put("Result", "here is my first document");
processService.completeWorkItem(activeNodes.iterator().next().getWorkItemId(), outcome);
activeNodes = runtimeDataService.getProcessInstanceHistoryActive(processInstanceId, new QueryContext());
assertNotNull(activeNodes);
assertEquals(2, activeNodes.size());
Object variableValue = processService.getProcessInstanceVariable(processInstanceId, "approval_document");
assertNotNull(variableValue);
assertTrue(variableValue instanceof String);
assertEquals("here is my first document", variableValue);
processService.abortProcessInstance(processInstanceId);
pi = processService.getProcessInstance(processInstanceId);
assertNull(pi);
}
use of org.jbpm.services.api.model.NodeInstanceDesc in project jbpm by kiegroup.
the class ProcessServiceEJBIntegrationTest method testStartProcessAndGetWorkItem.
@Test
public void testStartProcessAndGetWorkItem() {
assertNotNull(deploymentService);
KModuleDeploymentUnit deploymentUnit = new KModuleDeploymentUnit(GROUP_ID, ARTIFACT_ID, VERSION);
deploymentService.deploy(deploymentUnit);
units.add(deploymentUnit);
boolean isDeployed = deploymentService.isDeployed(deploymentUnit.getIdentifier());
assertTrue(isDeployed);
assertNotNull(processService);
long processInstanceId = processService.startProcess(deploymentUnit.getIdentifier(), "org.jbpm.writedocument");
assertNotNull(processInstanceId);
ProcessInstance pi = processService.getProcessInstance(processInstanceId);
assertNotNull(pi);
Collection<NodeInstanceDesc> activeNodes = runtimeDataService.getProcessInstanceHistoryActive(processInstanceId, new QueryContext());
assertNotNull(activeNodes);
assertEquals(1, activeNodes.size());
assertEquals("Write a Document", activeNodes.iterator().next().getName());
WorkItem wi = processService.getWorkItem(activeNodes.iterator().next().getWorkItemId());
assertNotNull(wi);
assertEquals("Human Task", wi.getName());
assertEquals("Write a Document", wi.getParameter("NodeName"));
processService.abortProcessInstance(processInstanceId);
pi = processService.getProcessInstance(processInstanceId);
assertNull(pi);
}
Aggregations