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
Наш марафон поддержали новые спонсоры и выделили замечательные призы. А призовой фонд у нас уже ...
Рекламный ролик бродвейской постановки мюзикла "Dames at Sea"
Компания Google запустила в тестовом режиме программируемую наружную рекламу, используя для этого ...