Сегодня 29 апреля, понедельник ГлавнаяНовостиО проектеЛичный кабинетПомощьКонтакты Сделать стартовойКарта сайтаНаписать администрации
Поиск по сайту
 
Ваше мнение
Какой рейтинг вас больше интересует?
 
 
 
 
 
Проголосовало: 7272
Кнопка
BlogRider.ru - Каталог блогов Рунета
получить код
Записки Oracle-ойда
Записки Oracle-ойда
Голосов: 1
Адрес блога: http://stan1slav.blogspot.com/
Добавлен: 2011-07-16 14:20:30 блограйдером stan1slav
Принадлежит блограйдеру stan1slav
 

Пользовательские задачи Oracle BPM 12c: пример реализации ограничения перечня пользователей для операции "Делегирование"

2015-11-08 09:52:00 (читать в оригинале)

По умолчанию задачу в Oracle BPM можно переназначить или делегировать на любого пользователя, роль и группу. Но можно ограничить этот перечень создав класс в BPM-проекте (в терминах JDeveloper), который реализует интерфейс oracle.bpel.services.workflow.task.IRestrictedAssignmentCallback.

Рассмотрим пример в котором нужно ограничить перечень пользователей для операции "Делегирование" следующим образом:
  • Если исполнителем задачи является группа или роль, то делегировать можно только пользователям из состава этой группы или роли;
  • Если исполнителем задачи является пользователь, то делегировать нельзя (пустой перечень доступных для делегирования пользователей).
Пример кода:
 import java.util.ArrayList;  
import java.util.Collections;
import java.util.List;
import java.util.Map;

import oracle.bpel.services.workflow.IWorkflowConstants;
import oracle.bpel.services.workflow.task.IRestrictedAssignees;
import oracle.bpel.services.workflow.task.IRestrictedAssignmentCallback;
import oracle.bpel.services.workflow.task.impl.RestrictedAssignees;
import oracle.bpel.services.workflow.task.impl.TaskAssignee;
import oracle.bpel.services.workflow.task.model.Task;

import oracle.tip.pc.services.common.ServiceFactory;
import oracle.tip.pc.services.identity.BPMAppRole;
import oracle.tip.pc.services.identity.BPMAuthorizationService;
import oracle.tip.pc.services.identity.BPMGroup;
import oracle.tip.pc.services.identity.BPMIdentityService;
import oracle.tip.pc.services.identity.BPMUser;

import oracle.bpel.services.workflow.task.model.IdentityType;

public class RestrictedAssignmentCallbackImpl implements IRestrictedAssignmentCallback {

public IRestrictedAssignees getPermittedAssignees(Task task, Map map, String currentUser, String identityContext,
String operation) {
List assignees = new ArrayList();
if (operation.equals(IRestrictedAssignmentCallback.OperationType.REASSIGN.toString())) {
//TODO реализовать логику для операции "Переназначение"
} else if (operation.equals(IRestrictedAssignmentCallback.OperationType.DELEGATE.toString())) {
try {
BPMIdentityService idenService = getIdentityServiceInstance(identityContext);
List<IdentityType> assigneesList = task.getSystemAttributes().getAssignees();
for (IdentityType assignee : assigneesList) {
if (IWorkflowConstants.IDENTITY_TYPE_GROUP.equals(assignee.getType())) {
List<BPMUser> usersInGroup =
idenService.getParticipantsToGroup(assignee.getDisplayName(), true);
for (BPMUser user : usersInGroup) {
assignees.add(new TaskAssignee(user.getName(), IWorkflowConstants.IDENTITY_TYPE_USER));
}
} else if (IWorkflowConstants.IDENTITY_TYPE_APPLICATION_ROLE.equals(assignee.getType())) {
List<BPMUser> usersInGroup =
idenService.getParticipantsToAppRole(assignee.getDisplayName(),
task.getApplicationContext(), false);
for (BPMUser user : usersInGroup) {
assignees.add(new TaskAssignee(user.getName(), IWorkflowConstants.IDENTITY_TYPE_USER));
}
} else if (IWorkflowConstants.IDENTITY_TYPE_USER.equals(assignee.getType())) {
// Пустой список
return new RestrictedAssignees(new ArrayList(), true);
}
}

} catch (Exception ex) {
ex.printStackTrace();
}
}

if (!assignees.isEmpty()) {
return new RestrictedAssignees(assignees, true);
}

return null;
}

public List<IRestrictedAssignmentCallback.OperationType> getRestrictedOperations(Task task, Map map,
String currentUser,
String identityContext) {
return Collections.emptyList();
}

private BPMAuthorizationService getAuthorizationService(String realmName) {
return ServiceFactory.getAuthorizationServiceInstance(realmName);
}

private BPMIdentityService getIdentityServiceInstance(String realmName) {
return ServiceFactory.getIdentityServiceInstance(realmName);
}
}


Тэги: bpm, fmw, soa, suite

 


Самый-самый блог
Блогер ЖЖ все стерпит
ЖЖ все стерпит
по количеству голосов (152) в категории «Истории»


Загрузка...Загрузка...
BlogRider.ru не имеет отношения к публикуемым в записях блогов материалам. Все записи
взяты из открытых общедоступных источников и являются собственностью их авторов.