Custom Escalation Java Function указывается в конфигурации задачи для указания по какой логике будет ...
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.
Установка:
- Собрать JAR содержащий класс и положить его в директорию $MW_HOME\soa\soa\modules\oracle.soa.ext_11.1.1
- Запустить ant в директории $MW_HOME\soa\soa\modules\oracle.soa.ext_11.1.1 (вероятно потребуется проинициализировать переменные окружения)
- Перезагрузить soa-сервер для того, чтобы новый класс был доступен серверу (был в classpath).
- Зарегистрировать Task Escalation Function:
- Войти в EM (Enterprise Manager Fusion Middleware Control)
- Перейти в soa-infra -> SOA Administration -> Workflow Properties
- Перейти на закладку Task и добавить наш класс (Add function) следующим образом:
Альтернативный вариант: вместо указанных действий в п.1-2 можно положить скомпилированный класс в директорию
$MW_HOME\soa\soa\modules\oracle.soa.ext_11.1.1\classes
Под эскалацией в Oracle BPM 12c (и в 11g) подразумевается автоматическое переназначение исполнителя ...
Под эскалацией в Oracle BPM 12c (и в 11g) подразумевается автоматическое переназначение исполнителя задачи на другую роль, группу или пользователя (обычно более высокого по иерархии).
Эскалация может производиться:
- автоматически по истечению указанного времени в конфигурации задачи
- пользователем выполнившим действие «Эскалировать» (Escalate), которое может быть доступно:
- Исполнителю задачи (Assignee)
- Владельцу задачи (Owner)
- Администратору (Admin)
Особенности:
- В зависимости от того на ком находится задача на момент эскалации:
- Если это группа или пользователь, то отрабатывает указанная custom escalation java function (если функция не указана, то задача завершится будет ошибкой)
- Если это роль, то выполняется эскалация на указанный в роли Escalation Path (может быть роль, группа, пользователь).
- Последующие эскалации:
- Если в Escalation Path указана роль, то последующая эскалация будет выполнятся на Escalation Path данной роли.
- Если в Escalation Path указан пользователь или группа, то отрабатывает указанная custom escalation java function (если функция не указана, то задача завершится будет ошибкой).
- Для каждой задачи можно задать глубину автоматической эскалации, т.е. кол-во раз которое будет выполнятся эскалация. По истечению указанного количества задача становится просроченной (expired).
... ЛаКьюзы "First Daughter
... ЛаКьюзы "First Daughter
... ЛаКьюзы "First Daughter