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;
}
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());
}
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();
}
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);
}
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);
}
Aggregations