Search in sources :

Example 36 with Task

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);
    }
}
Also used : RuntimeEngine(org.kie.api.runtime.manager.RuntimeEngine) Task(org.kie.api.task.model.Task) HashMap(java.util.HashMap) InternalTaskService(org.kie.internal.task.api.InternalTaskService) UserTaskService(org.jbpm.services.api.UserTaskService) TaskService(org.kie.api.task.TaskService) RuntimeManager(org.kie.api.runtime.manager.RuntimeManager) InternalRuntimeManager(org.kie.internal.runtime.manager.InternalRuntimeManager) LazyLoaded(org.kie.internal.utils.LazyLoaded) Content(org.kie.api.task.model.Content) UserTaskInstanceDesc(org.jbpm.services.api.model.UserTaskInstanceDesc) HashMap(java.util.HashMap) Map(java.util.Map) ContentMarshallerContext(org.kie.internal.task.api.ContentMarshallerContext)

Example 37 with Task

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;
}
Also used : DeadlineType(org.kie.internal.task.api.TaskDeadlinesService.DeadlineType) Logger(org.slf4j.Logger) Task(org.kie.api.task.model.Task) LoggerFactory(org.slf4j.LoggerFactory) UserGroupCallbackTaskCommand(org.jbpm.services.task.commands.UserGroupCallbackTaskCommand) TaskDeadlinesService(org.kie.internal.task.api.TaskDeadlinesService) Context(org.kie.api.runtime.Context) PermissionDeniedException(org.jbpm.services.task.exception.PermissionDeniedException) InternalTask(org.kie.internal.task.api.model.InternalTask) TaskContext(org.jbpm.services.task.commands.TaskContext) TaskPersistenceContext(org.kie.internal.task.api.TaskPersistenceContext) Deadline(org.kie.internal.task.api.model.Deadline) Deadlines(org.kie.internal.task.api.model.Deadlines) DeadlineType(org.kie.internal.task.api.TaskDeadlinesService.DeadlineType) Task(org.kie.api.task.model.Task) InternalTask(org.kie.internal.task.api.model.InternalTask) TaskContext(org.jbpm.services.task.commands.TaskContext) Deadlines(org.kie.internal.task.api.model.Deadlines) InternalTask(org.kie.internal.task.api.model.InternalTask) TaskDeadlinesService(org.kie.internal.task.api.TaskDeadlinesService) Deadline(org.kie.internal.task.api.model.Deadline) PermissionDeniedException(org.jbpm.services.task.exception.PermissionDeniedException) TaskPersistenceContext(org.kie.internal.task.api.TaskPersistenceContext)

Example 38 with Task

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;
}
Also used : Task(org.kie.api.task.model.Task) TaskImpl(org.jbpm.services.task.impl.model.TaskImpl) StringReader(java.io.StringReader) InternalTaskData(org.kie.internal.task.api.model.InternalTaskData)

Example 39 with Task

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);
}
Also used : Status(org.kie.api.task.model.Status) Task(org.kie.api.task.model.Task) TaskImpl(org.jbpm.services.task.impl.model.TaskImpl) ArrayList(java.util.ArrayList) TaskSummary(org.kie.api.task.model.TaskSummary) HumanTaskServicesBaseTest(org.jbpm.services.task.HumanTaskServicesBaseTest) Test(org.junit.Test)

Example 40 with Task

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;
}
Also used : Task(org.kie.api.task.model.Task) TaskImpl(org.jbpm.services.task.impl.model.TaskImpl) StringReader(java.io.StringReader) InternalTaskData(org.kie.internal.task.api.model.InternalTaskData)

Aggregations

Task (org.kie.api.task.model.Task)327 Test (org.junit.Test)212 InternalTask (org.kie.internal.task.api.model.InternalTask)164 StringReader (java.io.StringReader)140 TaskSummary (org.kie.api.task.model.TaskSummary)91 HashMap (java.util.HashMap)56 ArrayList (java.util.ArrayList)54 OrganizationalEntity (org.kie.api.task.model.OrganizationalEntity)34 Content (org.kie.api.task.model.Content)32 PermissionDeniedException (org.jbpm.services.task.exception.PermissionDeniedException)31 User (org.kie.api.task.model.User)31 TaskPersistenceContext (org.kie.internal.task.api.TaskPersistenceContext)31 AuditTask (org.kie.internal.task.api.AuditTask)28 Date (java.util.Date)27 HumanTaskServicesBaseTest (org.jbpm.services.task.HumanTaskServicesBaseTest)27 TaskFluent (org.jbpm.services.task.utils.TaskFluent)26 Map (java.util.Map)24 InternalTaskData (org.kie.internal.task.api.model.InternalTaskData)22 AuditTaskImpl (org.jbpm.services.task.audit.impl.model.AuditTaskImpl)20 AbstractBaseTest (org.jbpm.test.util.AbstractBaseTest)20