суббота, 31 октября 2015 г.

Пользовательские задачи Oracle BPM 12c: эскалация

Под эскалацией в 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).

четверг, 4 июня 2015 г.

Декодирование xsd:base64Binary в xsd:string

Цель:
При использовании JMS Adapter для получения текстового сообщения в формате XML, для которого XSD не известна, используется опция "Native format translation is not required (Schema is Opaque)". В этом случае входящее сообщение будет содержать элемент типа xsd:base64Binary, содержащий закодированное в base64 полученное сообщение.
Решение:
Т.к. в Oracle SOA Suite 11g отсутствует XSLT или XPATH-функции, позволяющая декодировать base64, поэтому можно использовать активность "Java Embedding" для решения данной задачи.
Итак, в BPEL-процессе есть две переменные:
 <!-- входная переменная из JMS Adapter -->
 <variable name="encoded_Input" messageType="ns1:Consume_Message_msg"/>  
 <!-- переменная в которую декодируем base64 -->
 <variable name="decoded_Input" type="xsd:string"/>
Добавляем в BPEL-процесс активность "Java Embedding" содержащую следующий код:
 try {      
     oracle.xml.parser.v2.XMLElement input = (oracle.xml.parser.v2.XMLElement) getVariableData("encoded_Input", "opaque");
     String input_str = input.getTextContent();   
     oracle.soa.common.util.Base64Decoder decoder = new oracle.soa.common.util.Base64Decoder();        
     String decoded = null;       
     decoded = decoder.decode(input_str);   
     setVariableData("decoded_Input", decoded);      
 } catch (Exception e) {  
     addAuditTrailEntry("EXCEPTION OCCURRED: " + e.toString());  
 }  

Альтернативный вариант - создание собственной XSLT или XPATH-функции для декодирования base64.

четверг, 16 апреля 2015 г.

Освоение Oracle BPM

Требуется:
Выполнить простейший tutorial с Oracle Technology NetworkДалее выполнить tutorial по одной из следующих книг:
  • Getting Started with Oracle BPM Suite 11gR1
  • Oracle BPM Suite 11g Developer's Cookbook
Изучить "продвинутые" аспекты по книге: 
  • Oracle BPM Suite 11g Advanced BPMN Topics
Полезные ссылки:

суббота, 4 октября 2014 г.

Пятая часть освоения SOA

Требуется изучить:

Выполнить задание:

  • Сенсоры и BAM:
    • По книге Getting Started With Oracle SOA Suite 11gR1 изучить и выполнить задания по главе 16 (посвящённой Oracle BAM);
    • Сделать композит (с BPEL-процессом), который будет вызывать внешний сервис (который нужно так же реализовать). Этот внешний сервис периодически возвращает ошибку (например такая логика: если минута в текущем времени четная, то вернуть ошибку). Нужно сделать отчёт средствами Oracle BAM содержащий информацию по общему кол-ву запущенных инстансов и сколько из них с ошибками
  • REST:
    • Сделать композит взаимодействующий с RESTful-сервисом (сам RESTful-сервис создайте его любым удобным средством).

пятница, 3 октября 2014 г.

Четвертая часть освоения SOA

Требуется изучить:


Выполнить задание:

  • MDS: задеплоить в MDS артефакты (XSD, WSDL, fault policy file) и сделать простой композит использующий данные артефакты.
  • Resequencing: сделать композит иллюстрирующий работу  всех вариантов Resequencing – Standard, FIFO, Best effort.
  • EDN
    • Сделать композит с WS-интерфейсом, который генерирует событие (EDN), а другой композит слушает это событие и записывает информацию в БД. 
    • Сделать отдельный композит который слушает события от HumanTask (в качестве композита с HumanTask предлагаю взять таковой из tutorial) и записать информацию (как минимум: идентификатор задачи, кто сделал (логина достаточно), что сделал (действие) и когда сделал(время)) в БД