use of org.activiti.engine.history.HistoricTaskInstance in project Activiti by Activiti.
the class HistoricTaskInstanceEntityManager method deleteHistoricTaskInstanceById.
public void deleteHistoricTaskInstanceById(String taskId) {
if (getHistoryManager().isHistoryEnabled()) {
HistoricTaskInstanceEntity historicTaskInstance = findHistoricTaskInstanceById(taskId);
if (historicTaskInstance != null) {
CommandContext commandContext = Context.getCommandContext();
List<HistoricTaskInstance> subTasks = findHistoricTasksByParentTaskId(taskId);
for (HistoricTaskInstance subTask : subTasks) {
deleteHistoricTaskInstanceById(subTask.getId());
}
commandContext.getHistoricDetailEntityManager().deleteHistoricDetailsByTaskId(taskId);
commandContext.getHistoricVariableInstanceEntityManager().deleteHistoricVariableInstancesByTaskId(taskId);
commandContext.getCommentEntityManager().deleteCommentsByTaskId(taskId);
commandContext.getAttachmentEntityManager().deleteAttachmentsByTaskId(taskId);
commandContext.getHistoricIdentityLinkEntityManager().deleteHistoricIdentityLinksByTaskId(taskId);
getDbSqlSession().delete(historicTaskInstance);
}
}
}
use of org.activiti.engine.history.HistoricTaskInstance in project Activiti by Activiti.
the class HistoricTaskInstanceTest method testHistoricTaskInstance.
@Deployment
public void testHistoricTaskInstance() throws Exception {
Map<String, Object> varMap = new HashMap<String, Object>();
varMap.put("formKeyVar", "expressionFormKey");
String processInstanceId = runtimeService.startProcessInstanceByKey("HistoricTaskInstanceTest", varMap).getId();
SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy hh:mm:ss");
// Set priority to non-default value
Task runtimeTask = taskService.createTaskQuery().processInstanceId(processInstanceId).singleResult();
runtimeTask.setPriority(1234);
// Set due-date
Date dueDate = sdf.parse("01/02/2003 04:05:06");
runtimeTask.setDueDate(dueDate);
taskService.saveTask(runtimeTask);
String taskId = runtimeTask.getId();
String taskDefinitionKey = runtimeTask.getTaskDefinitionKey();
assertEquals(1, historyService.createHistoricTaskInstanceQuery().count());
HistoricTaskInstance historicTaskInstance = historyService.createHistoricTaskInstanceQuery().singleResult();
assertEquals(taskId, historicTaskInstance.getId());
assertEquals(1234, historicTaskInstance.getPriority());
assertEquals("Clean up", historicTaskInstance.getName());
assertEquals("Schedule an engineering meeting for next week with the new hire.", historicTaskInstance.getDescription());
assertEquals(dueDate, historicTaskInstance.getDueDate());
assertEquals("kermit", historicTaskInstance.getAssignee());
assertEquals(taskDefinitionKey, historicTaskInstance.getTaskDefinitionKey());
assertEquals("expressionFormKey", historicTaskInstance.getFormKey());
assertNull(historicTaskInstance.getEndTime());
assertNull(historicTaskInstance.getDurationInMillis());
assertNull(historicTaskInstance.getWorkTimeInMillis());
runtimeService.setVariable(processInstanceId, "deadline", "yesterday");
taskService.claim(taskId, "kermit");
assertEquals(1, historyService.createHistoricTaskInstanceQuery().count());
historicTaskInstance = historyService.createHistoricTaskInstanceQuery().singleResult();
assertNotNull(historicTaskInstance.getClaimTime());
assertNull(historicTaskInstance.getWorkTimeInMillis());
assertEquals("expressionFormKey", historicTaskInstance.getFormKey());
taskService.complete(taskId);
assertEquals(1, historyService.createHistoricTaskInstanceQuery().count());
historicTaskInstance = historyService.createHistoricTaskInstanceQuery().singleResult();
assertEquals(taskId, historicTaskInstance.getId());
assertEquals(1234, historicTaskInstance.getPriority());
assertEquals("Clean up", historicTaskInstance.getName());
assertEquals("Schedule an engineering meeting for next week with the new hire.", historicTaskInstance.getDescription());
assertEquals(dueDate, historicTaskInstance.getDueDate());
assertEquals("kermit", historicTaskInstance.getAssignee());
assertEquals(TaskEntity.DELETE_REASON_COMPLETED, historicTaskInstance.getDeleteReason());
assertEquals(taskDefinitionKey, historicTaskInstance.getTaskDefinitionKey());
assertEquals("expressionFormKey", historicTaskInstance.getFormKey());
assertNotNull(historicTaskInstance.getEndTime());
assertNotNull(historicTaskInstance.getDurationInMillis());
assertNotNull(historicTaskInstance.getClaimTime());
assertNotNull(historicTaskInstance.getWorkTimeInMillis());
historyService.deleteHistoricTaskInstance(taskId);
assertEquals(0, historyService.createHistoricTaskInstanceQuery().count());
}
use of org.activiti.engine.history.HistoricTaskInstance in project Activiti by Activiti.
the class HistoricTaskInstanceTest method testHistoricTaskInstanceQuery.
@Deployment
public void testHistoricTaskInstanceQuery() throws Exception {
Calendar start = Calendar.getInstance();
start.set(Calendar.MILLISECOND, 0);
processEngineConfiguration.getClock().setCurrentTime(start.getTime());
// First instance is finished
ProcessInstance finishedInstance = runtimeService.startProcessInstanceByKey("HistoricTaskQueryTest", "myBusinessKey");
processEngineConfiguration.getClock().reset();
// Set priority to non-default value
Task task = taskService.createTaskQuery().processInstanceId(finishedInstance.getId()).singleResult();
task.setPriority(1234);
task.setOwner("fozzie");
Date dueDate = new SimpleDateFormat("dd/MM/yyyy hh:mm:ss").parse("01/02/2003 04:05:06");
task.setDueDate(dueDate);
taskService.saveTask(task);
taskService.addUserIdentityLink(task.getId(), "gonzo", "someType");
// Complete the task
String taskId = task.getId();
taskService.complete(taskId);
// Task id
assertEquals(1, historyService.createHistoricTaskInstanceQuery().taskId(taskId).count());
assertEquals(0, historyService.createHistoricTaskInstanceQuery().taskId("unexistingtaskid").count());
// Name
assertEquals(1, historyService.createHistoricTaskInstanceQuery().taskName("Clean up").count());
assertEquals(0, historyService.createHistoricTaskInstanceQuery().taskName("unexistingname").count());
assertEquals(1, historyService.createHistoricTaskInstanceQuery().taskNameLike("Clean u%").count());
assertEquals(1, historyService.createHistoricTaskInstanceQuery().taskNameLike("%lean up").count());
assertEquals(1, historyService.createHistoricTaskInstanceQuery().taskNameLike("%lean u%").count());
assertEquals(0, historyService.createHistoricTaskInstanceQuery().taskNameLike("%unexistingname%").count());
// Description
assertEquals(1, historyService.createHistoricTaskInstanceQuery().taskDescription("Historic task description").count());
assertEquals(0, historyService.createHistoricTaskInstanceQuery().taskDescription("unexistingdescription").count());
assertEquals(1, historyService.createHistoricTaskInstanceQuery().taskDescriptionLike("%task description").count());
assertEquals(1, historyService.createHistoricTaskInstanceQuery().taskDescriptionLike("Historic task %").count());
assertEquals(1, historyService.createHistoricTaskInstanceQuery().taskDescriptionLike("%task%").count());
assertEquals(0, historyService.createHistoricTaskInstanceQuery().taskDescriptionLike("%unexistingdescripton%").count());
// Execution id
assertEquals(1, historyService.createHistoricTaskInstanceQuery().executionId(finishedInstance.getId()).count());
assertEquals(0, historyService.createHistoricTaskInstanceQuery().executionId("unexistingexecution").count());
// Process instance id
assertEquals(1, historyService.createHistoricTaskInstanceQuery().processInstanceId(finishedInstance.getId()).count());
assertEquals(0, historyService.createHistoricTaskInstanceQuery().processInstanceId("unexistingid").count());
// Process instance business key
assertEquals(1, historyService.createHistoricTaskInstanceQuery().processInstanceBusinessKey("myBusinessKey").count());
assertEquals(0, historyService.createHistoricTaskInstanceQuery().processInstanceBusinessKey("unexistingKey").count());
// Process definition id
assertEquals(1, historyService.createHistoricTaskInstanceQuery().processDefinitionId(finishedInstance.getProcessDefinitionId()).count());
assertEquals(0, historyService.createHistoricTaskInstanceQuery().processDefinitionId("unexistingdefinitionid").count());
// Process definition name
assertEquals(1, historyService.createHistoricTaskInstanceQuery().processDefinitionName("Historic task query test process").count());
assertEquals(0, historyService.createHistoricTaskInstanceQuery().processDefinitionName("unexistingdefinitionname").count());
// Process definition key
assertEquals(1, historyService.createHistoricTaskInstanceQuery().processDefinitionKey("HistoricTaskQueryTest").count());
assertEquals(0, historyService.createHistoricTaskInstanceQuery().processDefinitionKey("unexistingdefinitionkey").count());
// Process definition key in
List<String> includeIds = new ArrayList<String>();
assertEquals(1, historyService.createHistoricTaskInstanceQuery().processDefinitionKeyIn(includeIds).count());
includeIds.add("unexistingProcessDefinition");
assertEquals(0, historyService.createHistoricTaskInstanceQuery().processDefinitionKeyIn(includeIds).count());
includeIds.add("HistoricTaskQueryTest");
assertEquals(1, historyService.createHistoricProcessInstanceQuery().processDefinitionKeyIn(includeIds).count());
// Form key
HistoricTaskInstance historicTask = historyService.createHistoricTaskInstanceQuery().processInstanceId(finishedInstance.getId()).singleResult();
assertEquals("testFormKey", historicTask.getFormKey());
// Assignee
assertEquals(1, historyService.createHistoricTaskInstanceQuery().taskAssignee("kermit").count());
assertEquals(0, historyService.createHistoricTaskInstanceQuery().taskAssignee("johndoe").count());
assertEquals(1, historyService.createHistoricTaskInstanceQuery().taskAssigneeLike("%ermit").count());
assertEquals(1, historyService.createHistoricTaskInstanceQuery().taskAssigneeLike("kermi%").count());
assertEquals(1, historyService.createHistoricTaskInstanceQuery().taskAssigneeLike("%ermi%").count());
assertEquals(0, historyService.createHistoricTaskInstanceQuery().taskAssigneeLike("%johndoe%").count());
// Delete reason
assertEquals(1, historyService.createHistoricTaskInstanceQuery().taskDeleteReason(TaskEntity.DELETE_REASON_COMPLETED).count());
assertEquals(0, historyService.createHistoricTaskInstanceQuery().taskDeleteReason("deleted").count());
// Task definition ID
assertEquals(1, historyService.createHistoricTaskInstanceQuery().taskDefinitionKey("task").count());
assertEquals(0, historyService.createHistoricTaskInstanceQuery().taskDefinitionKey("unexistingkey").count());
// Task priority
assertEquals(1, historyService.createHistoricTaskInstanceQuery().taskPriority(1234).count());
assertEquals(0, historyService.createHistoricTaskInstanceQuery().taskPriority(5678).count());
assertEquals(1, historyService.createHistoricTaskInstanceQuery().taskMinPriority(1234).count());
assertEquals(1, historyService.createHistoricTaskInstanceQuery().taskMinPriority(1000).count());
assertEquals(0, historyService.createHistoricTaskInstanceQuery().taskMinPriority(1300).count());
assertEquals(1, historyService.createHistoricTaskInstanceQuery().taskMaxPriority(1234).count());
assertEquals(1, historyService.createHistoricTaskInstanceQuery().taskMaxPriority(1300).count());
assertEquals(0, historyService.createHistoricTaskInstanceQuery().taskMaxPriority(1000).count());
// Due date
Calendar anHourAgo = Calendar.getInstance();
anHourAgo.setTime(dueDate);
anHourAgo.add(Calendar.HOUR, -1);
Calendar anHourLater = Calendar.getInstance();
anHourLater.setTime(dueDate);
anHourLater.add(Calendar.HOUR, 1);
assertEquals(1, historyService.createHistoricTaskInstanceQuery().taskDueDate(dueDate).count());
assertEquals(0, historyService.createHistoricTaskInstanceQuery().taskDueDate(anHourAgo.getTime()).count());
assertEquals(0, historyService.createHistoricTaskInstanceQuery().taskDueDate(anHourLater.getTime()).count());
// Due date before
assertEquals(1, historyService.createHistoricTaskInstanceQuery().taskDueBefore(anHourLater.getTime()).count());
assertEquals(0, historyService.createHistoricTaskInstanceQuery().taskDueBefore(anHourAgo.getTime()).count());
// Due date after
assertEquals(1, historyService.createHistoricTaskInstanceQuery().taskDueAfter(anHourAgo.getTime()).count());
assertEquals(0, historyService.createHistoricTaskInstanceQuery().taskDueAfter(anHourLater.getTime()).count());
anHourAgo = new GregorianCalendar();
anHourAgo.setTime(start.getTime());
anHourAgo.add(Calendar.HOUR, -1);
anHourLater = Calendar.getInstance();
anHourLater.setTime(start.getTime());
anHourLater.add(Calendar.HOUR, 1);
// Start date
assertEquals(1, historyService.createHistoricTaskInstanceQuery().taskCreatedOn(start.getTime()).count());
assertEquals(0, historyService.createHistoricTaskInstanceQuery().taskCreatedOn(anHourAgo.getTime()).count());
assertEquals(1, historyService.createHistoricTaskInstanceQuery().taskCreatedAfter(anHourAgo.getTime()).count());
assertEquals(0, historyService.createHistoricTaskInstanceQuery().taskCreatedAfter(anHourLater.getTime()).count());
assertEquals(0, historyService.createHistoricTaskInstanceQuery().taskCreatedBefore(anHourAgo.getTime()).count());
assertEquals(1, historyService.createHistoricTaskInstanceQuery().taskCreatedBefore(anHourLater.getTime()).count());
// Completed date
assertEquals(1, historyService.createHistoricTaskInstanceQuery().taskCompletedAfter(anHourAgo.getTime()).count());
assertEquals(0, historyService.createHistoricTaskInstanceQuery().taskCompletedAfter(anHourLater.getTime()).count());
assertEquals(0, historyService.createHistoricTaskInstanceQuery().taskCompletedBefore(anHourAgo.getTime()).count());
assertEquals(1, historyService.createHistoricTaskInstanceQuery().taskCompletedBefore(anHourLater.getTime()).count());
// Filter based on identity-links
// Assignee is involved
assertEquals(1, historyService.createHistoricTaskInstanceQuery().taskInvolvedUser("kermit").count());
// Owner is involved
assertEquals(1, historyService.createHistoricTaskInstanceQuery().taskInvolvedUser("fozzie").count());
// Manually involved person
assertEquals(1, historyService.createHistoricTaskInstanceQuery().taskInvolvedUser("gonzo").count());
// Finished and Unfinished - Add anther other instance that has a running task (unfinished)
runtimeService.startProcessInstanceByKey("HistoricTaskQueryTest");
assertEquals(1, historyService.createHistoricTaskInstanceQuery().finished().count());
assertEquals(1, historyService.createHistoricTaskInstanceQuery().unfinished().count());
}
use of org.activiti.engine.history.HistoricTaskInstance in project Activiti by Activiti.
the class HistoricTaskInstanceUpdateTest method testHistoricTaskInstanceUpdate.
@Deployment
public void testHistoricTaskInstanceUpdate() {
runtimeService.startProcessInstanceByKey("HistoricTaskInstanceTest").getId();
Task task = taskService.createTaskQuery().singleResult();
// Update and save the task's fields before it is finished
task.setPriority(12345);
task.setDescription("Updated description");
task.setName("Updated name");
task.setAssignee("gonzo");
taskService.saveTask(task);
taskService.complete(task.getId());
assertEquals(1, historyService.createHistoricTaskInstanceQuery().count());
HistoricTaskInstance historicTaskInstance = historyService.createHistoricTaskInstanceQuery().singleResult();
assertEquals("Updated name", historicTaskInstance.getName());
assertEquals("Updated description", historicTaskInstance.getDescription());
assertEquals("gonzo", historicTaskInstance.getAssignee());
assertEquals("task", historicTaskInstance.getTaskDefinitionKey());
// Validate fix of ACT-1923: updating assignee to null should be reflected in history
ProcessInstance secondInstance = runtimeService.startProcessInstanceByKey("HistoricTaskInstanceTest");
task = taskService.createTaskQuery().singleResult();
task.setDescription(null);
task.setName(null);
task.setAssignee(null);
taskService.saveTask(task);
taskService.complete(task.getId());
assertEquals(1, historyService.createHistoricTaskInstanceQuery().processInstanceId(secondInstance.getId()).count());
historicTaskInstance = historyService.createHistoricTaskInstanceQuery().processInstanceId(secondInstance.getId()).singleResult();
assertNull(historicTaskInstance.getName());
assertNull(historicTaskInstance.getDescription());
assertNull(historicTaskInstance.getAssignee());
}
use of org.activiti.engine.history.HistoricTaskInstance in project Activiti by Activiti.
the class PlaybackProcessStartTest method userTaskCheckStatus.
public void userTaskCheckStatus() {
final HistoricProcessInstance historicProcessInstance = historyService.createHistoricProcessInstanceQuery().finished().singleResult();
assertNotNull(historicProcessInstance);
assertEquals("oneTaskProcessBusinessKey", historicProcessInstance.getBusinessKey());
HistoricTaskInstance historicTaskInstance = historyService.createHistoricTaskInstanceQuery().taskDefinitionKey("userTask").singleResult();
assertEquals("user1", historicTaskInstance.getAssignee());
}
Aggregations