Search in sources :

Example 76 with User

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

the class HumanTaskHandlerHelper method parseNotifications.

protected static List<Notification> parseNotifications(String notificationString, List<OrganizationalEntity> businessAdministrators) {
    List<Notification> notifications = new ArrayList<Notification>();
    Map<String, String> parameters = asMap(notificationString);
    if (parameters.containsKey("tousers") || parameters.containsKey("togroups")) {
        String locale = parameters.get("locale");
        if (locale == null) {
            locale = "en-UK";
        }
        EmailNotification emailNotification = TaskModelProvider.getFactory().newEmialNotification();
        notifications.add(emailNotification);
        emailNotification.setBusinessAdministrators(businessAdministrators);
        Map<Language, EmailNotificationHeader> emailHeaders = new HashMap<Language, EmailNotificationHeader>();
        List<I18NText> subjects = new ArrayList<I18NText>();
        List<I18NText> names = new ArrayList<I18NText>();
        List<OrganizationalEntity> notificationRecipients = new ArrayList<OrganizationalEntity>();
        EmailNotificationHeader emailHeader = TaskModelProvider.getFactory().newEmailNotificationHeader();
        emailHeader.setBody(parameters.get("body"));
        emailHeader.setFrom(parameters.get("from"));
        emailHeader.setReplyTo(parameters.get("replyto"));
        emailHeader.setLanguage(locale);
        emailHeader.setSubject(parameters.get("subject"));
        Language lang = TaskModelProvider.getFactory().newLanguage();
        lang.setMapkey(locale);
        emailHeaders.put(lang, emailHeader);
        I18NText subject = TaskModelProvider.getFactory().newI18NText();
        ((InternalI18NText) subject).setLanguage(locale);
        ((InternalI18NText) subject).setText(emailHeader.getSubject());
        ;
        subjects.add(subject);
        names.add(subject);
        String recipients = parameters.get("tousers");
        if (recipients != null && recipients.trim().length() > 0) {
            String[] recipientsIds = recipients.split(ATTRIBUTES_ELEMENTS_SEPARATOR);
            for (String id : recipientsIds) {
                User user = TaskModelProvider.getFactory().newUser();
                ((InternalOrganizationalEntity) user).setId(id.trim());
                notificationRecipients.add(user);
            }
        }
        String groupRecipients = parameters.get("togroups");
        if (groupRecipients != null && groupRecipients.trim().length() > 0) {
            String[] groupRecipientsIds = groupRecipients.split(ATTRIBUTES_ELEMENTS_SEPARATOR);
            for (String id : groupRecipientsIds) {
                Group group = TaskModelProvider.getFactory().newGroup();
                ((InternalOrganizationalEntity) group).setId(id.trim());
                notificationRecipients.add(group);
            }
        }
        emailNotification.setEmailHeaders(emailHeaders);
        emailNotification.setNames(names);
        emailNotification.setRecipients(notificationRecipients);
        emailNotification.setSubjects(subjects);
    }
    return notifications;
}
Also used : Group(org.kie.api.task.model.Group) I18NText(org.kie.api.task.model.I18NText) InternalI18NText(org.kie.internal.task.api.model.InternalI18NText) User(org.kie.api.task.model.User) EmailNotificationHeader(org.kie.internal.task.api.model.EmailNotificationHeader) OrganizationalEntity(org.kie.api.task.model.OrganizationalEntity) InternalOrganizationalEntity(org.kie.internal.task.api.model.InternalOrganizationalEntity) HashMap(java.util.HashMap) InternalI18NText(org.kie.internal.task.api.model.InternalI18NText) ArrayList(java.util.ArrayList) EmailNotification(org.kie.internal.task.api.model.EmailNotification) InternalOrganizationalEntity(org.kie.internal.task.api.model.InternalOrganizationalEntity) Notification(org.kie.internal.task.api.model.Notification) EmailNotification(org.kie.internal.task.api.model.EmailNotification) Language(org.kie.internal.task.api.model.Language)

Example 77 with User

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

the class DBUserInfoImplTest method testGetMembersForGroup.

@Test
public void testGetMembersForGroup() {
    DBUserInfoImpl userInfo = new DBUserInfoImpl(props);
    Iterator<OrganizationalEntity> members = userInfo.getMembersForGroup(PM);
    Assertions.assertThat(members.hasNext()).isTrue();
    User user = (User) members.next();
    Assertions.assertThat(user.getId()).isEqualTo(JOHN.getId());
}
Also used : User(org.kie.api.task.model.User) OrganizationalEntity(org.kie.api.task.model.OrganizationalEntity) Test(org.junit.Test)

Example 78 with User

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

the class LDAPUserInfoImplTest method testGetMembersForGroup.

private void testGetMembersForGroup(boolean emptyGroup, boolean customAttribute, boolean distinguishedName) {
    Properties properties = createUserInfoProperties();
    if (customAttribute) {
        properties.setProperty(LDAPUserInfoImpl.MEMBER_ATTR_ID, "representative");
    }
    if (distinguishedName) {
        properties.setProperty(LDAPUserInfoImpl.IS_ENTITY_ID_DN, "true");
    }
    UserInfo ldapUserInfo = new LDAPUserInfoImpl(properties);
    Group group;
    if (distinguishedName) {
        group = emptyGroup ? USER_DN : MANAGER_DN;
    } else {
        group = emptyGroup ? USER : MANAGER;
    }
    Iterator<OrganizationalEntity> iterator = ldapUserInfo.getMembersForGroup(group);
    if (emptyGroup) {
        Assertions.assertThat(iterator.hasNext()).isFalse();
        return;
    }
    Assertions.assertThat(iterator.hasNext()).isTrue();
    User user = (User) iterator.next();
    if (customAttribute) {
        Assertions.assertThat(user.getId()).isEqualTo(MARY_DN.getId());
    } else {
        Assertions.assertThat(user.getId()).isEqualTo(JOHN_DN.getId());
    }
    Assertions.assertThat(iterator.hasNext()).isFalse();
}
Also used : Group(org.kie.api.task.model.Group) User(org.kie.api.task.model.User) OrganizationalEntity(org.kie.api.task.model.OrganizationalEntity) UserInfo(org.kie.internal.task.api.UserInfo) Properties(java.util.Properties)

Example 79 with User

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

the class MVELLifeCycleManagerTest method testClaimIsAllowedExcludedOwner.

/**
 * Tests that a user who is in the ExcludedOwners list of the {@link Task task's) {@link PeopleAssignments peopleAssignment's) object is
 * not allowed to execute operations on the given task. We expect to get a {@link PermissionDeniedException}.
 */
@Test(expected = PermissionDeniedException.class)
public void testClaimIsAllowedExcludedOwner() {
    User testUser = new UserImpl("BB8");
    List<String> testGroupIds = new ArrayList<>();
    testGroupIds.add("testGroup1");
    // Create the task.
    String str = "(with (new Task()) { priority = 55, taskData = (with( new TaskData()) { status = Status.Created } ), ";
    str += "peopleAssignments = (with ( new PeopleAssignments() ) { excludedOwners = [new User('BB8')], potentialOwners = [new Group('testGroup1')]}),";
    str += "name =  'This is my task name' })";
    InternalTask task = (InternalTask) TaskFactory.evalTask(new StringReader(str));
    // Test whether we can claim the task. This should not be possible.
    Operation operation = Operation.Claim;
    List<OperationCommand> operationCommands = new ArrayList<>();
    OperationCommand operationCommand = new OperationCommand();
    // Set the list of user-types (e.g. PotentialOwners, BusinessAdministrators, etc.) that are allowed to execute this operation.
    List<Allowed> allowed = new ArrayList<>();
    // We should only allow PotentialOwner in this test (we're claiming a task).
    allowed.add(Allowed.PotentialOwner);
    operationCommand.setAllowed(allowed);
    // Set the status that is required to be able to execute this operation.
    List<Status> status = new ArrayList<>();
    // Before we claim a task, the status is "Created".
    status.add(Status.Created);
    operationCommand.setStatus(status);
    operationCommands.add(operationCommand);
    // We don't need "targetEntity" and "entities" for this test.
    MVELLifeCycleManager taskLcManager = new MVELLifeCycleManager();
    taskLcManager.evalCommand(operation, operationCommands, task, testUser, null, testGroupIds, null);
}
Also used : Status(org.kie.api.task.model.Status) User(org.kie.api.task.model.User) InternalTask(org.kie.internal.task.api.model.InternalTask) ArrayList(java.util.ArrayList) Operation(org.kie.internal.task.api.model.Operation) UserImpl(org.jbpm.services.task.impl.model.UserImpl) StringReader(java.io.StringReader) Test(org.junit.Test)

Example 80 with User

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

the class MVELLifeCycleManagerTest method testDelegateIsAllowedExcludedOwnerBusinessAdministrator.

/**
 * Tests that a user who is in the ExcludedOwners list of the {@link Task task's) {@link PeopleAssignments peopleAssignment's) object IS
 * allowed to execute operations on the given task IF the person is also a Business Administrator.
 */
@Test
public void testDelegateIsAllowedExcludedOwnerBusinessAdministrator() {
    User testUser = new UserImpl("BB8");
    List<String> testGroupIds = new ArrayList<>();
    testGroupIds.add("testGroup1");
    // Create the task.
    String str = "(with (new Task()) { priority = 55, taskData = (with( new TaskData()) { status = Status.Ready } ), ";
    str += "peopleAssignments = (with ( new PeopleAssignments() ) { excludedOwners = [new User('BB8')], potentialOwners = [new Group('testGroup1')], businessAdministrators = [new User('BB8')]}),";
    str += "name =  'This is my task name' })";
    InternalTask task = (InternalTask) TaskFactory.evalTask(new StringReader(str));
    /*
		 * Test whether we can delegate the task. Because the user is a BusinessAdministrator, this should be possible, even if the owner is
		 * in the ExcludedOwners list.
		 */
    Operation operation = Operation.Delegate;
    List<OperationCommand> operationCommands = new ArrayList<>();
    OperationCommand operationCommand = new OperationCommand();
    // Set the list of user-types (e.g. PotentialOwners, BusinessAdministrators, etc.) that are allowed to execute this operation.
    List<Allowed> allowed = new ArrayList<>();
    // We should only allow PotentialOwner in this test (we're claiming a task).
    allowed.add(Allowed.PotentialOwner);
    allowed.add(Allowed.BusinessAdministrator);
    operationCommand.setAllowed(allowed);
    // Set the status that is required to be able to execute this operation.
    List<Status> status = new ArrayList<>();
    // Before we claim a task, the status is "Created".
    status.add(Status.Ready);
    operationCommand.setStatus(status);
    operationCommands.add(operationCommand);
    // We don't need "targetEntity" and "entities" for this test.
    MVELLifeCycleManager taskLcManager = new MVELLifeCycleManager();
    taskLcManager.evalCommand(operation, operationCommands, task, testUser, null, testGroupIds, null);
}
Also used : Status(org.kie.api.task.model.Status) User(org.kie.api.task.model.User) InternalTask(org.kie.internal.task.api.model.InternalTask) ArrayList(java.util.ArrayList) Operation(org.kie.internal.task.api.model.Operation) UserImpl(org.jbpm.services.task.impl.model.UserImpl) StringReader(java.io.StringReader) Test(org.junit.Test)

Aggregations

User (org.kie.api.task.model.User)83 OrganizationalEntity (org.kie.api.task.model.OrganizationalEntity)52 Test (org.junit.Test)44 InternalTask (org.kie.internal.task.api.model.InternalTask)38 ArrayList (java.util.ArrayList)35 InternalOrganizationalEntity (org.kie.internal.task.api.model.InternalOrganizationalEntity)33 Task (org.kie.api.task.model.Task)31 Group (org.kie.api.task.model.Group)27 InternalPeopleAssignments (org.kie.internal.task.api.model.InternalPeopleAssignments)27 InternalTaskData (org.kie.internal.task.api.model.InternalTaskData)20 StringReader (java.io.StringReader)17 HashMap (java.util.HashMap)14 InputStreamReader (java.io.InputStreamReader)11 Reader (java.io.Reader)11 WorkItemImpl (org.drools.core.process.instance.impl.WorkItemImpl)11 ContentData (org.kie.internal.task.api.model.ContentData)11 InternalContent (org.kie.internal.task.api.model.InternalContent)11 Date (java.util.Date)10 List (java.util.List)10 CountDownTaskEventListener (org.jbpm.services.task.util.CountDownTaskEventListener)10