use of org.activiti.engine.history.HistoricProcessInstance in project Activiti by Activiti.
the class AdminCompletedInstancesPanel method initDefinitionsTable.
protected void initDefinitionsTable() {
if (instanceList == null || instanceList.isEmpty()) {
noMembersTable = new Label(i18nManager.getMessage(Messages.ADMIN_COMPLETED_NONE_FOUND));
definitionsLayout.addComponent(noMembersTable);
} else {
completedDefinitions = new HashMap<String, ManagementProcessDefinition>();
for (HistoricProcessInstance instance : instanceList) {
String processDefinitionId = instance.getProcessDefinitionId();
ManagementProcessDefinition managementDefinition = null;
if (completedDefinitions.containsKey(processDefinitionId)) {
managementDefinition = completedDefinitions.get(processDefinitionId);
} else {
ProcessDefinition definition = repositoryService.createProcessDefinitionQuery().processDefinitionId(processDefinitionId).singleResult();
if (definition == null) {
// this process has a missing definition - skip
continue;
}
managementDefinition = new ManagementProcessDefinition();
managementDefinition.processDefinition = definition;
managementDefinition.runningInstances = new ArrayList<HistoricProcessInstance>();
completedDefinitions.put(definition.getId(), managementDefinition);
}
managementDefinition.runningInstances.add(instance);
}
definitionsTable = new Table();
definitionsTable.setWidth(100, UNITS_PERCENTAGE);
definitionsTable.setHeight(250, UNITS_PIXELS);
definitionsTable.setEditable(false);
definitionsTable.setImmediate(true);
definitionsTable.setSelectable(true);
definitionsTable.setSortDisabled(false);
definitionsTable.addContainerProperty("id", String.class, null, i18nManager.getMessage(Messages.PROCESS_INSTANCE_ID), null, Table.ALIGN_LEFT);
definitionsTable.addContainerProperty("name", String.class, null, i18nManager.getMessage(Messages.PROCESS_INSTANCE_NAME), null, Table.ALIGN_LEFT);
definitionsTable.addContainerProperty("nr of instances", String.class, null, i18nManager.getMessage(Messages.ADMIN_NR_INSTANCES), null, Table.ALIGN_LEFT);
for (ManagementProcessDefinition managementDefinition : completedDefinitions.values()) {
definitionsTable.addItem(new String[] { managementDefinition.processDefinition.getId(), managementDefinition.processDefinition.getName(), String.valueOf(managementDefinition.runningInstances.size()) }, managementDefinition.processDefinition.getId());
}
definitionsTable.addListener(new Property.ValueChangeListener() {
private static final long serialVersionUID = 1L;
public void valueChange(ValueChangeEvent event) {
// the value of the property is the itemId of the table entry
Item item = definitionsTable.getItem(event.getProperty().getValue());
if (item != null) {
String definitionId = (String) item.getItemProperty("id").getValue();
selectedManagementDefinition = completedDefinitions.get(definitionId);
refreshInstancesTable();
}
}
});
definitionsLayout.addComponent(definitionsTable);
}
}
use of org.activiti.engine.history.HistoricProcessInstance in project Activiti by Activiti.
the class HistoricProcessInstanceCommentResource method getComment.
@RequestMapping(value = "/history/historic-process-instances/{processInstanceId}/comments/{commentId}", method = RequestMethod.GET, produces = "application/json")
public CommentResponse getComment(@PathVariable("processInstanceId") String processInstanceId, @PathVariable("commentId") String commentId, HttpServletRequest request) {
HistoricProcessInstance instance = getHistoricProcessInstanceFromRequest(processInstanceId);
Comment comment = taskService.getComment(commentId);
if (comment == null || comment.getProcessInstanceId() == null || !comment.getProcessInstanceId().equals(instance.getId())) {
throw new ActivitiObjectNotFoundException("Process instance '" + instance.getId() + "' doesn't have a comment with id '" + commentId + "'.", Comment.class);
}
return restResponseFactory.createRestComment(comment);
}
use of org.activiti.engine.history.HistoricProcessInstance in project Activiti by Activiti.
the class HistoricProcessInstanceVariableDataResource method getVariableFromRequest.
public RestVariable getVariableFromRequest(boolean includeBinary, String processInstanceId, String variableName, HttpServletRequest request) {
HistoricProcessInstance processObject = historyService.createHistoricProcessInstanceQuery().processInstanceId(processInstanceId).includeProcessVariables().singleResult();
if (processObject == null) {
throw new ActivitiObjectNotFoundException("Historic process instance '" + processInstanceId + "' couldn't be found.", HistoricProcessInstanceEntity.class);
}
Object value = processObject.getProcessVariables().get(variableName);
if (value == null) {
throw new ActivitiObjectNotFoundException("Historic process instance '" + processInstanceId + "' variable value for " + variableName + " couldn't be found.", VariableInstanceEntity.class);
} else {
return restResponseFactory.createRestVariable(variableName, value, null, processInstanceId, RestResponseFactory.VARIABLE_HISTORY_PROCESS, includeBinary);
}
}
use of org.activiti.engine.history.HistoricProcessInstance in project Activiti by Activiti.
the class DeleteProcessInstanceTest method testNoEndTimeSet.
@Deployment
public void testNoEndTimeSet() {
//Note that the instance with a Task Type of "user" is being started.
log.info("Starting an instance of \"Demo Partial Deletion\" with a Task Type of \"user\".");
//Set the inputs for the first process instance, which we will be able to completely delete.
Map<String, Object> inputParamsUser = new HashMap<String, Object>();
inputParamsUser.put("taskType", "user");
//Start the process instance & ensure it's started.
ProcessInstance instanceUser = runtimeService.startProcessInstanceByKey("DemoPartialDeletion", inputParamsUser);
assertNotNull(instanceUser);
log.info("Process instance (of process model " + instanceUser.getProcessDefinitionId() + ") started with id: " + instanceUser.getId() + ".");
//Assert that the process instance is active.
Execution executionUser = runtimeService.createExecutionQuery().processInstanceId(instanceUser.getProcessInstanceId()).singleResult();
assertFalse(executionUser.isEnded());
//Assert that a user task is available for claiming.
Task taskUser = taskService.createTaskQuery().processInstanceId(instanceUser.getProcessInstanceId()).singleResult();
assertNotNull(taskUser);
//Delete the process instance.
runtimeService.deleteProcessInstance(instanceUser.getId(), null);
if (processEngineConfiguration.getHistoryLevel().isAtLeast(HistoryLevel.ACTIVITY)) {
//Retrieve the HistoricProcessInstance and assert that there is an end time.
HistoricProcessInstance hInstanceUser = historyService.createHistoricProcessInstanceQuery().processInstanceId(instanceUser.getId()).singleResult();
assertNotNull(hInstanceUser.getEndTime());
log.info("End time for the deleted instance of \"Demo Partial Deletion\" that was started with a Task Type of \"user\": " + hInstanceUser.getEndTime() + ".");
log.info("Successfully deleted the instance of \"Demo Partial Deletion\" that was started with a Task Type of \"user\".");
}
//Note that the instance with a Task Type of "java" is being started.
log.info("Starting an instance of \"Demo Partial Deletion\" with a Task Type of \"java\".");
//Set the inputs for the second process instance, which we will NOT be able to completely delete.
Map<String, Object> inputParamsJava = new HashMap<String, Object>();
inputParamsJava.put("taskType", "java");
//Start the process instance & ensure it's started.
ProcessInstance instanceJava = runtimeService.startProcessInstanceByKey("DemoPartialDeletion", inputParamsJava);
assertNotNull(instanceJava);
log.info("Process instance (of process model " + instanceJava.getProcessDefinitionId() + ") started with id: " + instanceJava.getId() + ".");
//Assert that the process instance is active.
Execution executionJava = runtimeService.createExecutionQuery().processInstanceId(instanceJava.getProcessInstanceId()).singleResult();
assertFalse(executionJava.isEnded());
// Try to execute job 3 times
Job jobJava = managementService.createJobQuery().processInstanceId(instanceJava.getId()).singleResult();
assertNotNull(jobJava);
try {
managementService.executeJob(jobJava.getId());
fail("Expected exception");
} catch (Exception e) {
// expected
}
try {
managementService.executeJob(jobJava.getId());
fail("Expected exception");
} catch (Exception e) {
// expected
}
try {
managementService.executeJob(jobJava.getId());
fail("Expected exception");
} catch (Exception e) {
// expected
}
//Assert that there is a failed job.
jobJava = managementService.createJobQuery().processInstanceId(instanceJava.getId()).singleResult();
assertNotNull(jobJava);
assertEquals(0, jobJava.getRetries());
//Delete the process instance.
runtimeService.deleteProcessInstance(instanceJava.getId(), null);
if (processEngineConfiguration.getHistoryLevel().isAtLeast(HistoryLevel.ACTIVITY)) {
//Retrieve the HistoricProcessInstance and assert that there is no end time.
HistoricProcessInstance hInstanceJava = historyService.createHistoricProcessInstanceQuery().processInstanceId(instanceJava.getId()).singleResult();
assertNotNull(hInstanceJava.getEndTime());
}
}
use of org.activiti.engine.history.HistoricProcessInstance in project Activiti by Activiti.
the class HistoricProcessInstanceTest method testNameAndTenantIdSetWhenFetchingVariables.
/**
* Validation for https://activiti.atlassian.net/browse/ACT-2182
*/
public void testNameAndTenantIdSetWhenFetchingVariables() {
String tenantId = "testTenantId";
String processInstanceName = "myProcessInstance";
String deploymentId = repositoryService.createDeployment().addClasspathResource("org/activiti/engine/test/history/oneTaskProcess.bpmn20.xml").tenantId(tenantId).deploy().getId();
Map<String, Object> vars = new HashMap<String, Object>();
vars.put("name", "Kermit");
vars.put("age", 60);
ProcessInstance processInstance = runtimeService.startProcessInstanceByKeyAndTenantId("oneTaskProcess", vars, tenantId);
runtimeService.setProcessInstanceName(processInstance.getId(), processInstanceName);
// Verify name and tenant id (didnt work on mssql and db2) on process instance
List<ProcessInstance> processInstances = runtimeService.createProcessInstanceQuery().includeProcessVariables().list();
assertEquals(1, processInstances.size());
processInstance = processInstances.get(0);
assertEquals(processInstanceName, processInstance.getName());
assertEquals(tenantId, processInstance.getTenantId());
Map<String, Object> processInstanceVars = processInstance.getProcessVariables();
assertEquals(2, processInstanceVars.size());
assertEquals("Kermit", processInstanceVars.get("name"));
assertEquals(60, processInstanceVars.get("age"));
// Verify name and tenant id (didnt work on mssql and db2) on historic process instance
List<HistoricProcessInstance> historicProcessInstances = historyService.createHistoricProcessInstanceQuery().includeProcessVariables().list();
assertEquals(1, historicProcessInstances.size());
HistoricProcessInstance historicProcessInstance = historicProcessInstances.get(0);
// Verify name and tenant id (didnt work on mssql and db2) on process instance
assertEquals(processInstanceName, historicProcessInstance.getName());
assertEquals(tenantId, historicProcessInstance.getTenantId());
Map<String, Object> historicProcessInstanceVars = historicProcessInstance.getProcessVariables();
assertEquals(2, historicProcessInstanceVars.size());
assertEquals("Kermit", historicProcessInstanceVars.get("name"));
assertEquals(60, historicProcessInstanceVars.get("age"));
// cleanup
repositoryService.deleteDeployment(deploymentId, true);
}
Aggregations