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

Пользовательские задачи Oracle BPM 12c: Custom Escalation Java Function

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

Custom Escalation Java Function указывается в конфигурации задачи для указания по какой логике будет выполняться эскалация для пользователей и групп (для ролей не используется!).

Custom Escalation Java Function рассмотрим на примере:
 package oracle.bpel.services.workflow.assignment.dynamic;  

import java.util.List;
import java.util.Map;

import oracle.bpel.services.workflow.task.model.Task;
import oracle.bpel.services.workflow.assignment.dynamic.DynamicAssignmentException;

import oracle.tip.pc.services.common.ServiceFactory;
import oracle.tip.pc.services.identity.BPMAuthorizationService;

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;
/*
* Обеспечивает эскалацию на владельца задачи.
*/
public class OwnerEscalation implements IDynamicTaskEscalationFunction {
public String defaultUser;

@Override
public String getTaskEscalationUser(Task task) throws DynamicAssignmentException {
String ownerRole = task.getOwnerRole();
String ownerGroup = task.getOwnerGroup();
String ownerUser = task.getOwnerUser();
if (ownerRole != null) {
try {
BPMAuthorizationService idenService = ServiceFactory.getIdentityServiceInstance();
List<BPMUser> usersInRole =
idenService.getParticipantsToAppRole(ownerRole, task.getApplicationContext(), false);
if (usersInRole.size() > 0) {
// Берём первого пользователя
return usersInRole.get(0).getName();
}
} catch (Exception ex) {
ex.printStackTrace();
}
} else if (ownerGroup != null) {
try {
BPMAuthorizationService idenService = ServiceFactory.getIdentityServiceInstance();
List<BPMUser> usersInGroup = idenService.getParticipantsToGroup(ownerGroup, true);
if (usersInGroup.size() > 0) {
// Берём первого пользователя
return usersInGroup.get(0).getName();
}
} catch (Exception ex) {
ex.printStackTrace();
}
} else if (ownerUser != null) {
return ownerUser;
}
return defaultUser;
}

@Override
public String getTaskEscalationUser(String string) throws DynamicAssignmentException {
return defaultUser;
}

@Override
public void setInitParams(Map map) throws DynamicAssignmentException {
// Добавляем параметр указывающий на какого пользователя проводить эскалацию,
// если владелец задачи (Owner) не указан
defaultUser=(String)map.get("DEFAULT_USER");
}

@Override
public String getFunctionName() {
return "OWNER_ESCALATION";
}

@Override
public String getDescription() {
return "Escalation to task owner";
}
}

Логика данного примера:
Если у задачи определён владелец (Owner), то эскалация будет выполняться на владельца. Иначе, на пользователя указанного в конфигурации как DEFAULT_USER

Важно:

  • Класс должен быть в пакете oracle.bpel.services.workflow.assignment.dynamic.

Установка:

  1. Собрать JAR содержащий класс и положить его в директорию $MW_HOME\soa\soa\modules\oracle.soa.ext_11.1.1
  2. Запустить ant в директории $MW_HOME\soa\soa\modules\oracle.soa.ext_11.1.1 (вероятно потребуется проинициализировать переменные окружения)
  3. Перезагрузить soa-сервер для того, чтобы новый класс был доступен серверу (был в classpath).
  4. Зарегистрировать Task Escalation Function:
    1. Войти в EM (Enterprise Manager Fusion Middleware Control)
    2. Перейти в soa-infra -> SOA Administration -> Workflow Properties
    3. Перейти на закладку Task и добавить наш класс (Add function) следующим образом:
Альтернативный вариант: вместо указанных действий в п.1-2 можно положить скомпилированный класс в директорию $MW_HOME\soa\soa\modules\oracle.soa.ext_11.1.1\classes

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

 


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


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