use of org.kie.api.task.model.Task in project jbpm by kiegroup.
the class UserTaskServiceImpl method getTaskOutputContentByTaskId.
@SuppressWarnings("unchecked")
@Override
public Map<String, Object> getTaskOutputContentByTaskId(String deploymentId, Long taskId) {
UserTaskInstanceDesc task = dataService.getTaskById(taskId);
validateTask(deploymentId, taskId, task);
RuntimeManager manager = getRuntimeManager(task);
if (manager == null) {
logger.warn("Cannot find runtime manager for task {}", taskId);
return null;
}
RuntimeEngine engine = manager.getRuntimeEngine(ProcessInstanceIdContext.get(task.getProcessInstanceId()));
try {
TaskService taskService = engine.getTaskService();
// perform actual operation
Task taskInstanceById = taskService.getTaskById(taskId);
long documentContentId = taskInstanceById.getTaskData().getOutputContentId();
if (documentContentId > 0) {
Content contentById = taskService.getContentById(documentContentId);
if (contentById == null) {
return new HashMap<String, Object>();
}
ContentMarshallerContext ctx = TaskContentRegistry.get().getMarshallerContext(task.getDeploymentId());
Object unmarshall = ContentMarshallerHelper.unmarshall(contentById.getContent(), ctx.getEnvironment(), ctx.getClassloader());
Map<String, Object> data = (Map<String, Object>) unmarshall;
for (Object variable : data.values()) {
if (variable instanceof LazyLoaded<?>) {
((LazyLoaded<?>) variable).load();
}
}
return data;
}
return new HashMap<String, Object>();
} finally {
disposeRuntimeEngine(manager, engine);
}
}
use of org.kie.api.task.model.Task in project jbpm by kiegroup.
the class CancelTaskDeadlineCommand method execute.
@Override
public Void execute(Context cntxt) {
TaskContext context = (TaskContext) cntxt;
Task task = context.getTaskQueryService().getTaskInstanceById(taskId);
if (!isBusinessAdmin(userId, task.getPeopleAssignments().getBusinessAdministrators(), context)) {
throw new PermissionDeniedException("User " + userId + " is not business admin of task " + taskId);
}
logger.debug("About to cancel deadline {} on a task {}", deadlineId, task);
Deadlines deadlines = ((InternalTask) task).getDeadlines();
DeadlineType type = DeadlineType.START;
Deadline deadline = deadlines.getStartDeadlines().stream().filter(d -> deadlineId.equals(d.getId())).findFirst().orElse(null);
if (deadline == null) {
deadline = deadlines.getEndDeadlines().stream().filter(d -> deadlineId.equals(d.getId())).findFirst().orElse(null);
type = DeadlineType.END;
}
TaskPersistenceContext persistenceContext = context.getPersistenceContext();
TaskDeadlinesService deadlinesService = context.getTaskDeadlinesService();
deadlinesService.unschedule(taskId, deadline, type);
persistenceContext.removeDeadline(deadline);
return null;
}
use of org.kie.api.task.model.Task in project jbpm by kiegroup.
the class DistincVsJoinPerformanceTest method addTask.
private TaskImpl addTask(long workItemId, long procInstId, String busAdmin, String potOwner, String name, String deploymentId) {
String str = "(with (new Task()) { priority = 55, taskData = (with( new TaskData()) { } ), ";
String potOwnerType = potOwner.equals("Hideo") ? "User" : "Group";
str += "peopleAssignments = (with ( new PeopleAssignments() ) { " + "taskStakeholders = [new User('" + stakeHolder + "')]," + "businessAdministrators = [new User('" + busAdmin + "')]," + "potentialOwners = [new " + potOwnerType + "('" + potOwner + "')]" + " }),";
str += "name = '" + name + "' })";
Task taskImpl = TaskFactory.evalTask(new StringReader(str));
((InternalTaskData) taskImpl.getTaskData()).setWorkItemId(workItemId);
((InternalTaskData) taskImpl.getTaskData()).setProcessInstanceId(procInstId);
((InternalTaskData) taskImpl.getTaskData()).setDeploymentId(deploymentId);
taskService.addTask(taskImpl, new HashMap<String, Object>());
assertNotNull("Null task id", taskImpl.getId());
return (TaskImpl) taskImpl;
}
use of org.kie.api.task.model.Task in project jbpm by kiegroup.
the class TaskQueryBuilderLocalTest method testGetTasksByVariousFields.
@Test
public void testGetTasksByVariousFields() {
Task[] tasks = new Task[12];
List<Long> workItemIds = new ArrayList<Long>();
List<Long> procInstIds = new ArrayList<Long>();
List<Long> taskIds = new ArrayList<Long>();
List<String> busAdmins = new ArrayList<String>();
List<String> potOwners = new ArrayList<String>();
List<Status> statuses = new ArrayList<Status>();
statuses.add(Status.Reserved);
TaskImpl taskImpl;
Long firstTaskId;
{
long workItemId = 23;
long procInstId = 101;
String busAdmin = "Wintermute";
String potOwner = "Maelcum";
taskImpl = addTask(workItemId, procInstId, busAdmin, potOwner, "This is my task name", null);
firstTaskId = taskImpl.getId();
taskIds.add(firstTaskId);
assertEquals(potOwner, taskImpl.getTaskData().getActualOwner().getId());
tasks[0] = taskImpl;
procInstIds.add(procInstId);
workItemIds.add(workItemId);
busAdmins.add(busAdmin);
potOwners.add(potOwner);
}
List<TaskSummary> results = taskService.taskSummaryQuery(stakeHolder).build().getResultList();
assertFalse("No tasks retrieved!", results.isEmpty());
results = taskService.taskSummaryQuery(stakeHolder).workItemId(getUnboxedArray(workItemIds)).build().getResultList();
assertEquals("List of tasks: work item id", 1, results.size());
{
long workItemId = 25;
long procInstId = 103;
String busAdmin = "Neuromancer";
String potOwner = "Hideo";
taskImpl = addTask(workItemId, procInstId, busAdmin, potOwner, "This is my task name", null);
taskIds.add(taskImpl.getId());
assertEquals(potOwner, taskImpl.getTaskData().getActualOwner().getId());
// start task
taskService.start(taskImpl.getId(), potOwner);
tasks[1] = (Task) taskService.getTaskById(taskImpl.getId());
statuses.add(tasks[1].getTaskData().getStatus());
procInstIds.add(procInstId);
workItemIds.add(workItemId);
busAdmins.add(busAdmin);
potOwners.add(potOwner);
}
{
// Add one more task, just to make sure things are working well
long workItemId = 57;
long procInstId = 111;
String busAdmin = "reviewer";
String potOwner = "translator";
String deploymentId = "armitage";
String name = "Koude Bevel";
taskImpl = addTask(workItemId, procInstId, busAdmin, potOwner, name, deploymentId);
assertEquals(potOwner, taskImpl.getTaskData().getActualOwner().getId());
taskService.start(taskImpl.getId(), potOwner);
taskService.fail(taskImpl.getId(), busAdmin, null);
}
// everything
results = taskService.taskSummaryQuery(stakeHolder).build().getResultList();
assertEquals("List of tasks: everything", 3, results.size());
testOrderByTaskIdAscending(results);
// max results
results = taskService.taskSummaryQuery(stakeHolder).maxResults(2).build().getResultList();
assertEquals("List of tasks: max results", 2, results.size());
testOrderByTaskIdAscending(results);
assertEquals("Did not order when returning tasks (first task id: " + results.get(0).getId(), firstTaskId.longValue(), results.get(0).getId().longValue());
// single param tests
results = taskService.taskSummaryQuery(stakeHolder).workItemId(getUnboxedArray(workItemIds)).build().getResultList();
assertEquals("List of tasks: work item ids", 2, results.size());
testOrderByTaskIdAscending(results);
results = taskService.taskSummaryQuery(stakeHolder).taskId(getUnboxedArray(taskIds)).build().getResultList();
assertEquals("List of tasks: task ids", 2, results.size());
testOrderByTaskIdAscending(results);
results = taskService.taskSummaryQuery(stakeHolder).processInstanceId(getUnboxedArray(procInstIds)).build().getResultList();
assertEquals("List of tasks: process instance ids", 2, results.size());
testOrderByTaskIdAscending(results);
results = taskService.taskSummaryQuery(stakeHolder).businessAdmin(busAdmins.toArray(new String[0])).build().getResultList();
assertEquals("List of tasks: bus admins", 2, results.size());
testOrderByTaskIdAscending(results);
results = taskService.taskSummaryQuery(stakeHolder).potentialOwner(potOwners.toArray(new String[0])).build().getResultList();
assertEquals("List of tasks: pot owners", 2, results.size());
testOrderByTaskIdAscending(results);
results = taskService.taskSummaryQuery(stakeHolder).actualOwner(potOwners.toArray(new String[0])).build().getResultList();
assertEquals("List of tasks: task owners", 2, results.size());
testOrderByTaskIdAscending(results);
results = taskService.taskSummaryQuery(stakeHolder).status(statuses.toArray(new Status[0])).build().getResultList();
assertEquals("List of tasks: status", 2, results.size());
testOrderByTaskIdAscending(results);
// work item id and/or task id
List<Long> testLongList = new ArrayList<Long>();
testLongList.add(workItemIds.get(0));
List<Long> testLongListTwo = new ArrayList<Long>();
testLongListTwo.add(taskIds.get(1));
results = taskService.taskSummaryQuery(stakeHolder).and().workItemId(getUnboxedArray(testLongList)).taskId(getUnboxedArray(testLongListTwo)).build().getResultList();
assertEquals("List of tasks", 0, results.size());
results = taskService.taskSummaryQuery(stakeHolder).or().workItemId(getUnboxedArray(testLongList)).taskId(getUnboxedArray(testLongListTwo)).build().getResultList();
assertEquals("List of tasks", 2, results.size());
testOrderByTaskIdAscending(results);
// task id and/or process instance id
testLongList.clear();
testLongList.add(procInstIds.get(1));
results = taskService.taskSummaryQuery(stakeHolder).or().taskId(getUnboxedArray(testLongListTwo)).processInstanceId(getUnboxedArray(testLongList)).build().getResultList();
assertEquals("List of tasks", 1, results.size());
testOrderByTaskIdAscending(results);
results = taskService.taskSummaryQuery(stakeHolder).and().taskId(getUnboxedArray(testLongListTwo)).processInstanceId(getUnboxedArray(testLongList)).build().getResultList();
assertEquals("List of tasks", 1, results.size());
testOrderByTaskIdAscending(results);
// process instance id and/or bus admin
List<String> testStringList = new ArrayList<String>();
testStringList.add(busAdmins.get(0));
results = taskService.taskSummaryQuery(stakeHolder).and().processInstanceId(getUnboxedArray(testLongList)).businessAdmin(testStringList.toArray(new String[0])).build().getResultList();
assertEquals("List of tasks", 0, results.size());
results = taskService.taskSummaryQuery(stakeHolder).or().processInstanceId(getUnboxedArray(testLongList)).businessAdmin(testStringList.toArray(new String[0])).build().getResultList();
assertEquals("List of tasks", 2, results.size());
testOrderByTaskIdAscending(results);
// bus admin and/or pot owner
testStringList.clear();
testStringList.add(busAdmins.get(1));
List<String> testStringListTwo = new ArrayList<String>();
testStringListTwo.add(potOwners.get(0));
results = taskService.taskSummaryQuery(stakeHolder).and().businessAdmin(testStringList.toArray(new String[0])).potentialOwner(testStringListTwo.toArray(new String[0])).build().getResultList();
assertEquals("List of tasks", 0, results.size());
results = taskService.taskSummaryQuery(stakeHolder).or().businessAdmin(testStringList.toArray(new String[0])).potentialOwner(testStringListTwo.toArray(new String[0])).build().getResultList();
assertEquals("List of tasks", 2, results.size());
testOrderByTaskIdAscending(results);
// pot owner and/or task owner
testStringList.clear();
testStringList.add(tasks[1].getTaskData().getActualOwner().getId());
results = taskService.taskSummaryQuery(stakeHolder).and().potentialOwner(testStringListTwo.toArray(new String[0])).actualOwner(testStringList.toArray(new String[0])).build().getResultList();
assertEquals("List of tasks", 0, results.size());
results = taskService.taskSummaryQuery(stakeHolder).or().potentialOwner(testStringListTwo.toArray(new String[0])).actualOwner(testStringList.toArray(new String[0])).build().getResultList();
assertEquals("List of tasks", 2, results.size());
testOrderByTaskIdAscending(results);
// task owner and/or status
List<Status> testStatusList = new ArrayList<Status>();
testStatusList.add(statuses.get(0));
results = taskService.taskSummaryQuery(stakeHolder).and().actualOwner(testStringList.toArray(new String[0])).status(testStatusList.toArray(new Status[0])).build().getResultList();
assertEquals("List of tasks", 0, results.size());
results = taskService.taskSummaryQuery(stakeHolder).or().actualOwner(testStringList.toArray(new String[0])).status(testStatusList.toArray(new Status[0])).build().getResultList();
assertEquals("List of tasks", 2, results.size());
testOrderByTaskIdAscending(results);
}
use of org.kie.api.task.model.Task in project jbpm by kiegroup.
the class TaskQueryBuilderLocalTest method addTask.
private TaskImpl addTask(long workItemId, long procInstId, String busAdmin, String potOwner, String name, String deploymentId) {
String str = "(with (new Task()) { priority = 55, taskData = (with( new TaskData()) { } ), ";
str += "peopleAssignments = (with ( new PeopleAssignments() ) { " + "taskStakeholders = [new User('" + stakeHolder + "')]," + "businessAdministrators = [new User('" + busAdmin + "')]," + "potentialOwners = [new User('" + potOwner + "')]" + " }),";
str += "name = '" + name + "' })";
Task taskImpl = TaskFactory.evalTask(new StringReader(str));
((InternalTaskData) taskImpl.getTaskData()).setWorkItemId(workItemId);
((InternalTaskData) taskImpl.getTaskData()).setProcessInstanceId(procInstId);
((InternalTaskData) taskImpl.getTaskData()).setDeploymentId(deploymentId);
taskService.addTask(taskImpl, new HashMap<String, Object>());
assertNotNull("Null task id", taskImpl.getId());
return (TaskImpl) taskImpl;
}
Aggregations