Search in sources :

Example 26 with Status

use of org.kie.api.task.model.Status in project jbpm by kiegroup.

the class BAMTaskEventListener method updateTask.

protected BAMTaskSummaryImpl updateTask(TaskEvent event, Status newStatus, BAMTaskWorker worker) {
    BAMTaskSummaryImpl result = null;
    Task ti = event.getTask();
    TaskPersistenceContext persistenceContext = getPersistenceContext(((TaskContext) event.getTaskContext()).getPersistenceContext());
    try {
        if (ti == null) {
            logger.error("The task instance does not exist.");
            return result;
        }
        Status status = newStatus != null ? newStatus : ti.getTaskData().getStatus();
        result = persistenceContext.queryStringWithParametersInTransaction("select bts from BAMTaskSummaryImpl bts where bts.taskId=:taskId", true, persistenceContext.addParametersToMap("taskId", ti.getId()), BAMTaskSummaryImpl.class);
        if (result == null) {
            logger.warn("Unable find bam task entry for task id {} '{}', skipping bam task update", ti.getId(), ti.getName());
            return null;
        }
        result.setStatus(status.toString());
        if (ti.getTaskData().getActualOwner() != null) {
            result.setUserId(ti.getTaskData().getActualOwner().getId());
        }
        if (worker != null)
            worker.updateTask(result, ti);
        persistenceContext.merge(result);
        return result;
    } finally {
        cleanup(persistenceContext);
    }
}
Also used : Status(org.kie.api.task.model.Status) Task(org.kie.api.task.model.Task) BAMTaskSummaryImpl(org.jbpm.services.task.audit.impl.model.BAMTaskSummaryImpl) TaskPersistenceContext(org.kie.internal.task.api.TaskPersistenceContext)

Example 27 with Status

use of org.kie.api.task.model.Status in project jbpm by kiegroup.

the class GetTasksByVariableNameCommand method execute.

public List<TaskSummary> execute(Context cntxt) {
    TaskContext context = (TaskContext) cntxt;
    doCallbackUserOperation(userId, context);
    if (statuses == null) {
        statuses = new ArrayList<Status>();
        statuses.add(Status.Ready);
        statuses.add(Status.InProgress);
        statuses.add(Status.Reserved);
    }
    if (groupIds == null) {
        groupIds = doUserGroupCallbackOperation(userId, null, context);
        if (groupIds == null) {
            groupIds = new ArrayList<String>();
        }
    }
    TaskPersistenceContext persistenceContext = context.getPersistenceContext();
    List<TaskSummary> tasks = (List<TaskSummary>) persistenceContext.queryWithParametersInTransaction("TasksByStatusByVariableName", persistenceContext.addParametersToMap("userId", userId, "groupIds", groupIds, "variableName", variableName, "status", statuses), ClassUtil.<List<TaskSummary>>castClass(List.class));
    return tasks;
}
Also used : Status(org.kie.api.task.model.Status) TaskContext(org.jbpm.services.task.commands.TaskContext) TaskSummary(org.kie.api.task.model.TaskSummary) ArrayList(java.util.ArrayList) List(java.util.List) TaskPersistenceContext(org.kie.internal.task.api.TaskPersistenceContext)

Example 28 with Status

use of org.kie.api.task.model.Status in project jbpm by kiegroup.

the class CaseServiceImplTest method testCaseRolesWithQueries.

@Test
public void testCaseRolesWithQueries() {
    Map<String, OrganizationalEntity> roleAssignments = new HashMap<>();
    roleAssignments.put("owner", new UserImpl("john"));
    roleAssignments.put("contact", new GroupImpl("HR"));
    Map<String, Object> data = new HashMap<>();
    data.put("s", "description");
    CaseFileInstance caseFile = caseService.newCaseFileInstance(deploymentUnit.getIdentifier(), USER_TASK_CASE_P_ID, data, roleAssignments);
    String caseId = caseService.startCase(deploymentUnit.getIdentifier(), USER_TASK_CASE_P_ID, caseFile);
    assertNotNull(caseId);
    assertEquals(HR_CASE_ID, caseId);
    try {
        CaseInstance cInstance = caseService.getCaseInstance(caseId);
        assertNotNull(cInstance);
        assertEquals(HR_CASE_ID, cInstance.getCaseId());
        assertEquals(CaseStatus.OPEN.getId(), cInstance.getStatus().intValue());
        assertEquals(deploymentUnit.getIdentifier(), cInstance.getDeploymentId());
        // only john is now included in case roles
        Collection<CaseInstance> instances = caseRuntimeDataService.getCaseInstancesAnyRole(null, new QueryContext());
        assertNotNull(instances);
        assertEquals(0, instances.size());
        List<CaseStatus> status = Arrays.asList(CaseStatus.CANCELLED);
        instances = caseRuntimeDataService.getCaseInstancesAnyRole(status, new QueryContext());
        assertNotNull(instances);
        assertFalse("Opened case was returned when searching for cancelled case instances.", instances.stream().anyMatch(n -> n.getCaseId().equals(caseId)));
        status = Arrays.asList(CaseStatus.OPEN);
        instances = caseRuntimeDataService.getCaseInstancesAnyRole(status, new QueryContext());
        assertNotNull(instances);
        assertEquals(1, instances.size());
        instances = caseRuntimeDataService.getCaseInstancesByRole(null, status, new QueryContext());
        assertNotNull(instances);
        assertEquals(0, instances.size());
        instances = caseRuntimeDataService.getCaseInstancesByRole("owner", status, new QueryContext());
        assertNotNull(instances);
        assertEquals(1, instances.size());
        identityProvider.setName("mary");
        instances = caseRuntimeDataService.getCaseInstancesByRole("owner", status, new QueryContext());
        assertNotNull(instances);
        assertEquals("Mary shouldn't be owner of any opened case instance.", 0, instances.size());
        identityProvider.setRoles(Arrays.asList("HR"));
        instances = caseRuntimeDataService.getCaseInstancesByRole("contact", status, new QueryContext());
        assertNotNull(instances);
        assertEquals(1, instances.size());
    } catch (Exception e) {
        logger.error("Unexpected error {}", e.getMessage(), e);
        fail("Unexpected exception " + e.getMessage());
    } finally {
        identityProvider.setName("john");
        if (caseId != null) {
            caseService.cancelCase(caseId);
        }
    }
}
Also used : TaskSummary(org.kie.api.task.model.TaskSummary) Arrays(java.util.Arrays) CaseDefinition(org.jbpm.casemgmt.api.model.CaseDefinition) Date(java.util.Date) CommentSortBy(org.jbpm.casemgmt.api.model.instance.CommentSortBy) Assertions.assertThat(org.assertj.core.api.Assertions.assertThat) CaseFileInstance(org.jbpm.casemgmt.api.model.instance.CaseFileInstance) LoggerFactory(org.slf4j.LoggerFactory) CaseAssignment(org.kie.api.runtime.process.CaseAssignment) CommentInstance(org.jbpm.casemgmt.api.model.instance.CommentInstance) DocumentImpl(org.jbpm.document.service.impl.DocumentImpl) OrganizationalEntity(org.kie.api.task.model.OrganizationalEntity) Collectors.toMap(java.util.stream.Collectors.toMap) Map(java.util.Map) ProcessInstanceDesc(org.jbpm.services.api.model.ProcessInstanceDesc) KieInternalServices(org.kie.internal.KieInternalServices) Assertions(org.assertj.core.api.Assertions) AuthorizationManager(org.jbpm.casemgmt.api.auth.AuthorizationManager) CaseMilestoneInstance(org.jbpm.casemgmt.api.model.instance.CaseMilestoneInstance) CaseCommentNotFoundException(org.jbpm.casemgmt.api.CaseCommentNotFoundException) Collection(java.util.Collection) UUID(java.util.UUID) QueryContext(org.kie.api.runtime.query.QueryContext) CaseFileItem(org.jbpm.casemgmt.api.model.CaseFileItem) List(java.util.List) Assertions.fail(org.assertj.core.api.Assertions.fail) Assert.assertFalse(org.junit.Assert.assertFalse) AdHocFragment(org.jbpm.casemgmt.api.model.AdHocFragment) Person(org.jbpm.bpmn2.objects.Person) AdHocFragmentNotFoundException(org.jbpm.casemgmt.api.AdHocFragmentNotFoundException) Status(org.kie.api.task.model.Status) UserImpl(org.jbpm.services.task.impl.model.UserImpl) CaseNotFoundException(org.jbpm.casemgmt.api.CaseNotFoundException) HashMap(java.util.HashMap) QueryFilter(org.kie.internal.query.QueryFilter) ArrayList(java.util.ArrayList) CaseStageInstance(org.jbpm.casemgmt.api.model.instance.CaseStageInstance) CaseInstance(org.jbpm.casemgmt.api.model.instance.CaseInstance) StageStatus(org.jbpm.casemgmt.api.model.instance.StageStatus) CaseInstanceImpl(org.jbpm.casemgmt.impl.model.instance.CaseInstanceImpl) CaseStage(org.jbpm.casemgmt.api.model.CaseStage) Logger(org.slf4j.Logger) Iterator(java.util.Iterator) VariableDesc(org.jbpm.services.api.model.VariableDesc) CorrelationKey(org.kie.internal.process.CorrelationKey) Assert.assertNotNull(org.junit.Assert.assertNotNull) AbstractCaseServicesBaseTest(org.jbpm.casemgmt.impl.util.AbstractCaseServicesBaseTest) Assert.assertTrue(org.junit.Assert.assertTrue) Test(org.junit.Test) GroupImpl(org.jbpm.services.task.impl.model.GroupImpl) MilestoneStatus(org.jbpm.casemgmt.api.model.instance.MilestoneStatus) NodeInstanceDesc(org.jbpm.services.api.model.NodeInstanceDesc) Assert.assertNull(org.junit.Assert.assertNull) TaskNotFoundException(org.jbpm.services.api.TaskNotFoundException) CaseStatus(org.jbpm.casemgmt.api.model.CaseStatus) Document(org.jbpm.document.Document) EchoService(org.jbpm.casemgmt.impl.objects.EchoService) Collections(java.util.Collections) CaseActiveException(org.jbpm.casemgmt.api.CaseActiveException) Assert.assertEquals(org.junit.Assert.assertEquals) OrganizationalEntity(org.kie.api.task.model.OrganizationalEntity) HashMap(java.util.HashMap) QueryContext(org.kie.api.runtime.query.QueryContext) CaseCommentNotFoundException(org.jbpm.casemgmt.api.CaseCommentNotFoundException) AdHocFragmentNotFoundException(org.jbpm.casemgmt.api.AdHocFragmentNotFoundException) CaseNotFoundException(org.jbpm.casemgmt.api.CaseNotFoundException) TaskNotFoundException(org.jbpm.services.api.TaskNotFoundException) CaseActiveException(org.jbpm.casemgmt.api.CaseActiveException) CaseFileInstance(org.jbpm.casemgmt.api.model.instance.CaseFileInstance) CaseInstance(org.jbpm.casemgmt.api.model.instance.CaseInstance) GroupImpl(org.jbpm.services.task.impl.model.GroupImpl) CaseStatus(org.jbpm.casemgmt.api.model.CaseStatus) UserImpl(org.jbpm.services.task.impl.model.UserImpl) AbstractCaseServicesBaseTest(org.jbpm.casemgmt.impl.util.AbstractCaseServicesBaseTest) Test(org.junit.Test)

Example 29 with Status

use of org.kie.api.task.model.Status in project jbpm by kiegroup.

the class AddTaskCommand method initializeTask.

private void initializeTask(Task task) {
    Status assignedStatus = null;
    if (task.getPeopleAssignments() != null && task.getPeopleAssignments().getPotentialOwners() != null && task.getPeopleAssignments().getPotentialOwners().size() == 1) {
        // if there is a single potential owner, assign and set status to Reserved
        OrganizationalEntity potentialOwner = task.getPeopleAssignments().getPotentialOwners().get(0);
        // if there is a single potential user owner, assign and set status to Reserved
        if (potentialOwner instanceof User) {
            ((InternalTaskData) task.getTaskData()).setActualOwner((User) potentialOwner);
            assignedStatus = Status.Reserved;
        }
        // If there is a group set as potentialOwners, set the status to Ready ??
        if (potentialOwner instanceof Group) {
            assignedStatus = Status.Ready;
        }
    } else if (task.getPeopleAssignments() != null && task.getPeopleAssignments().getPotentialOwners() != null && task.getPeopleAssignments().getPotentialOwners().size() > 1) {
        // multiple potential owners, so set to Ready so one can claim.
        assignedStatus = Status.Ready;
    } else {
    // @TODO: we have no potential owners
    }
    if (assignedStatus != null) {
        ((InternalTaskData) task.getTaskData()).setStatus(assignedStatus);
    }
}
Also used : Status(org.kie.api.task.model.Status) Group(org.kie.api.task.model.Group) User(org.kie.api.task.model.User) OrganizationalEntity(org.kie.api.task.model.OrganizationalEntity) InternalTaskData(org.kie.internal.task.api.model.InternalTaskData)

Example 30 with Status

use of org.kie.api.task.model.Status in project jbpm by kiegroup.

the class TaskQueryServiceBaseTest method testGetTasksOwnedByExpirationDateBeforeSpecifiedDate.

@Test
public void testGetTasksOwnedByExpirationDateBeforeSpecifiedDate() {
    // should be included in result
    String str = "(with (new Task()) { priority = 55, taskData = (with( new TaskData()) {";
    str += "expirationTime = new java.text.SimpleDateFormat(\"yyyy-MM-dd\").parse(\"2011-10-15\") } ), ";
    str += "peopleAssignments = (with ( new PeopleAssignments() ) { potentialOwners = [new User('Bobba Fet')],businessAdministrators = [ new User('Administrator') ], }),";
    str += "name =  'This is my task name' })";
    Task task = TaskFactory.evalTask(new StringReader(str));
    taskService.addTask(task, new HashMap<String, Object>());
    // should be included in result
    str = "(with (new Task()) { priority = 55, taskData = (with( new TaskData()) {";
    str += "expirationTime = new java.text.SimpleDateFormat(\"yyyy-MM-dd\").parse(\"2013-04-15\") } ), ";
    str += "peopleAssignments = (with ( new PeopleAssignments() ) { potentialOwners = [new User('Bobba Fet')],businessAdministrators = [ new User('Administrator') ], }),";
    str += "name =  'This is my task name' })";
    task = TaskFactory.evalTask(new StringReader(str));
    taskService.addTask(task, new HashMap<String, Object>());
    // should not be included in result -> date is not before, it equals
    str = "(with (new Task()) { priority = 55, taskData = (with( new TaskData()) {";
    str += "expirationTime = new java.text.SimpleDateFormat(\"yyyy-MM-dd\").parse(\"2013-04-16\") } ), ";
    str += "peopleAssignments = (with ( new PeopleAssignments() ) { potentialOwners = [new User('Bobba Fet')],businessAdministrators = [ new User('Administrator') ], }),";
    str += "name =  'This is my task name' })";
    task = TaskFactory.evalTask(new StringReader(str));
    taskService.addTask(task, new HashMap<String, Object>());
    // should not be included in result -> date is after not before
    str = "(with (new Task()) { priority = 55, taskData = (with( new TaskData()) {";
    str += "expirationTime = new java.text.SimpleDateFormat(\"yyyy-MM-dd\").parse(\"2013-08-16\") } ), ";
    str += "peopleAssignments = (with ( new PeopleAssignments() ) { potentialOwners = [new User('Bobba Fet')],businessAdministrators = [ new User('Administrator') ], }),";
    str += "name =  'This is my task name' })";
    task = TaskFactory.evalTask(new StringReader(str));
    taskService.addTask(task, new HashMap<String, Object>());
    // should not be included in result -> userId is different
    str = "(with (new Task()) { priority = 55, taskData = (with( new TaskData()) {";
    str += "expirationTime = new java.text.SimpleDateFormat(\"yyyy-MM-dd\").parse(\"2013-01-15\") } ), ";
    str += "peopleAssignments = (with ( new PeopleAssignments() ) { potentialOwners = [new User('Darth Vader')],businessAdministrators = [ new User('Administrator') ], }),";
    str += "name =  'This is my task name' })";
    task = TaskFactory.evalTask(new StringReader(str));
    taskService.addTask(task, new HashMap<String, Object>());
    Date dateSpecified = createDate("2013-04-16");
    List<Status> statuses = new ArrayList<Status>();
    statuses.addAll(Arrays.asList(new Status[] { Status.Created, Status.Ready, Status.Reserved, Status.InProgress }));
    List<TaskSummary> tasks = taskService.getTasksOwnedByExpirationDateBeforeSpecifiedDate("Bobba Fet", statuses, dateSpecified);
    assertEquals(2, tasks.size());
    for (TaskSummary taskSummary : tasks) {
        assertTrue("Expected user 'Bobba Fet'!", taskSummary.getActualOwnerId().contains("Bobba Fet"));
        // the expiration date should be before the specified date
        assertTrue("Expiration date needs to be before the specified date!", taskSummary.getExpirationTime().compareTo(dateSpecified) < 0);
    }
}
Also used : Status(org.kie.api.task.model.Status) Task(org.kie.api.task.model.Task) InternalTask(org.kie.internal.task.api.model.InternalTask) StringReader(java.io.StringReader) ArrayList(java.util.ArrayList) TaskSummary(org.kie.api.task.model.TaskSummary) Date(java.util.Date) Test(org.junit.Test)

Aggregations

Status (org.kie.api.task.model.Status)60 ArrayList (java.util.ArrayList)50 TaskSummary (org.kie.api.task.model.TaskSummary)49 Test (org.junit.Test)44 Task (org.kie.api.task.model.Task)19 HashMap (java.util.HashMap)16 ProcessInstance (org.kie.api.runtime.process.ProcessInstance)16 InternalTask (org.kie.internal.task.api.model.InternalTask)16 StringReader (java.io.StringReader)15 KieSession (org.kie.api.runtime.KieSession)14 QueryFilter (org.kie.internal.query.QueryFilter)14 RuntimeEngine (org.kie.api.runtime.manager.RuntimeEngine)10 QueryContext (org.kie.api.runtime.query.QueryContext)10 AbstractKieServicesBaseTest (org.jbpm.kie.test.util.AbstractKieServicesBaseTest)9 Date (java.util.Date)8 ProcessInstanceDesc (org.jbpm.services.api.model.ProcessInstanceDesc)8 TaskService (org.kie.api.task.TaskService)7 List (java.util.List)5 Properties (java.util.Properties)4 JBossUserGroupCallbackImpl (org.jbpm.services.task.identity.JBossUserGroupCallbackImpl)4