среда, 20 февраля 2013 г.

Повторение учебного примера "Getting Started with Oracle BPM Suite11gR1". Часть 2

В этой части я расскажу о проблеме, которая возникла у меня при повторении учебного примера, приведенного в разделе 13  книги "Getting Started with Oracle BPM Suite11gR1".
В этом разделе предполагается, что читатель создаст два бизнес-индикатора и настроит информационную панель для их просмотра. 
Раздел называется "Tutorial: Using standard and custom dashboards for the Request Quote process".

Все прекрасно получалось и соответствовало учебному примеру до момента создания custom dashboard. Информационную панель, в соответствии с рекомендациями книги, я создал, но данные, которые я ожидал там увидеть, в ней не отображались.

ТУ проблему, на которую я натолкнулся, можно обойти несколькими способами, НО ... Ведь по документации должно работать и так... Из-за этого я настойчиво копал и разбирался с проблемой. Заключается эта проблема в следующем:

1. Для BPMпроцесса можно определить бизнес-индикаторы, которые измерения (dimension) и факты (Measure) 




Процедура создания бизнес-индикаторов подробно описана в учебном примере. 
Как я понял, смысл этих индикаторов - подготовка интересующих пользователя или аналитика данных, которые расчитываются на том или ином этапе процесса и сохранение этих данных в специальных таблицах базы данных. 
А поооотооом..., когда возникнет необходимость получить ту или иную количественную информацию о процессе или о результатах работы процесса, аналитик (не сам конечно, а с помощью средств анализа) обратиться уже к подготовленным данным, записанным в таблицы базы данных, вместо того, чтобы лазить по XMLданным, хранящимся в экземплярах выполненных или выполняющихся процессом. 
Вроде бы все просто.

2. Далее, после того, как мы определили индикаторы, нам необходимо выбрать место в процессе, где они будут заполняться.
Для этого создается шаг процесса, в котором производится заполнение измерений и фактов
Вот этот  шаг

А вот заполнение измерений и фактов.


3. Далее в учебном примере предлагают создать measurement mark
Из описания я для себя понял, что measurement mark - это "такая штука", нужная ВОТ для чего... 
Аналитические данные процесса (то, что пишется в базу данных) по умолчанию (умолчание конечно можно изменить) не захватываются после автоматических активностей. На рисунке ниже видно свойство активности, с помощью которого можно управлять генерацией аналитических данных после выполнения активности.


 В примере говориться, что если Вы хотите отслеживать данные сразу, как только они введены, то Вам необходимо на переход после автоматической активности установить  measurement mark. На рисунке ниже показано, как это сделано.


4. Прекрасно... Теперь (по моим ожиданиям) можно создать информационную панель (custom dashboards) и с наблюдать за изменением индикатора В ТОТ МОМЕНТ, когда выполниться операция заполнения индикатора.
Параметры созданной панели приведены ниже.


5. Панель я создал, но данных НИКАКИХ не увидел.
И только после того, как выполнил НЕАВТОМАТИЧЕСКУЮ активность после активности, в которой присваиваются значения бизнес-индикаторам, я увидел график в инфопанели.


Первой мыслью моей было -"блин, опять я где-то не тот флажек поставил или еще что-то пропустил"... Два дня я искал причину такого поведения, но так ничего найти и не смог ((((
Вроде бы все четко написано, "ЧТОБЫ ДАННЫЕ БЫЛИ ЗАХВАЧЕНЫ, НАДО УСТАНОВИТЬ measurement mark". Но данные не захватываются и не отображаются в дашбоарде, пока не выполняется следующая после measurement mark неавтоматическия активность. Обойти эту проблему можно так:
    - присвоить значения бизнес-индикаторам на выходе из активности "Enter Quote Details". Тогда они сразу появятся в инфо-панели (проверял, работает)
    - установить у автоматической активности признак генерации аналитических данных (проверял, работает).
Но, если эту проблему обходить, то ЗАЧЕМ ТОГДА НУЖНА measurement mark??? Непонятно...

Как я проверял, что правильно все сделал...:
- сначала я решил проверить процесс. Дошел ли он до нужной точки и выполнил ли он требуемые активности. Мало ли... Может какая-то ошибка возникла при выполнении активности "Assign Indiсators". Заглянул в EM... Посмотрел... Нет. Вроде все нормально


- потом я решил посмотреть, что записывается в базу данных при выполнении активностей. Что происходит при захвате значений бизнес-индикаторов? Для process analytics в схеме SOAINFRA существуют специальные таблицы с префиксом BPM_CUBE...
Интересующая меня информация записывается в таблицу BPM_CUBE_TASKPERFORMANCE.
Если посмотреть, что содержится в таблице по интересующему меня процессу, то можно можно увидеть примерно следующее:
 SELECT t2.processname, t1.activityname, t1.activitytype, t1.label, t0.FLEXSTRING01,
         t0.FLEXNUMBERRANGE01,
         t0.FLEXNUMBER02 
    FROM BPM_CUBE_TASKPERFORMANCE t0, BPM_CUBE_PROCESS t2, BPM_CUBE_ACTIVITY t1
   WHERE      t1.PROCESSID = t2.PROCESSID
          and t0.PROCESSID = t1.PROCESSID
          AND t0.ACTIVITYID = t1.ACTIVITYID
          and componentinstanceid=50007

Результаты получились следующие:


Видно, что данные в measurement mark захвачены. Нужная мне информация сохранена в трех последних колонках. 
Можно сделать вывод, что (скорее всего) данные для анализа подготовлены правильно.
Остается только попробовать разобраться с дашбоардом. Только как с ним разобраться, если он представляет собой закрытую систему?

- Разборки с дашбоардом. 
Я решил попробовать так... Если дашбоард отображает сведения из базы данных, то должен он это делать на основе результатов какого-то запроса. И запрос этот можно найти в V$SQLAREA

select sql_text, executions from v$sqlarea where parsing_schema_name = 'SOA_SOAINFRA' 
and sql_text like '%BPM_CUBE_TASKPERFORMANCE%' order by executions;

Я помотрел результаты приведенного выше запроса, потом несколько раз обновил информационную панель и еще раз выполнил запрос. После этого по разнице в поле EXECUTIONS я нашел тот запрос, результаты которого отображатся в интересующей меня информационной панели.
ВОТ ОН

  SELECT t0.FLEXSTRING01,
         t0.FLEXNUMBERRANGE01,
         AVG (t0.FLEXNUMBER02),
         COUNT (t0.FLEXNUMBER02)
    FROM BPM_CUBE_TASKPERFORMANCE t0, BPM_CUBE_PROCESS t2, BPM_CUBE_ACTIVITY t1
   WHERE (    (    (    (    (t2.UNDEPLOYDATE IS NULL)
                         AND (t0.DISCRIMINATOR IS NULL))
                    AND (t1.ACTIVITYTYPE NOT IN (:1, :2, :3, :4, :5)))
               AND (    (    (    (    (t2.DOMAINNAME = :6)
                                   AND (t2.COMPOSITENAME = :7))
                              AND (t2.SCALABEL = :8))
                         AND (t2.REVISION = :9))
                    AND (t2.PROCESSNAME = :10)))
          AND (    (t1.PROCESSID = t2.PROCESSID)
               AND (    (t0.PROCESSID = t1.PROCESSID)
                    AND (t0.ACTIVITYID = t1.ACTIVITYID))))
GROUP BY t0.FLEXSTRING01, t0.FLEXNUMBERRANGE01
ORDER BY t0.FLEXSTRING01 ASC, t0.FLEXNUMBERRANGE01 ASC



Условие, которое меня заинтересовало, выделено в запросе жирным шрифтом. 

Значения bindпеременных были мной получены из представления V$SQL_BIND_CAPTURE
select * from V$SQL_BIND_CAPTURE where sql_id = '6nj6tuy59tv9f'


И выяснилось, что в качестве переменных 1, 2, 3, 4, 5 в запрос подставляются значения
'MEASUREMENT_START',
'MEASUREMENT_STOP',
'MEASUREMENT_START_STOP',
'MEASUREMENT_COUNTER',
'SUBPROCESS'


С такими параметрами, естественно, в результатах запроса будут отсутствовать данные, полученные в указанной мною measurement mark.
Более того, все данные, которые получаются в ЛЮБОЙ measurement mark, будут исключаться из результатов dashboard.

Вот что мне удалось выяснить. К сожалению, мне так и не удалось понять, в следствие чего такая ситуация возникла. Мною ли где-то была допущена ошибка или найденная проблема - баг. 
Пока ответа у меня на этот вопрос нет.
  


пятница, 15 февраля 2013 г.

Повторение учебного примера "Getting Started with Oracle BPM Suite11gR1". Часть 1

Работая над одним проектом, я уже несколько лет проектирую SOA-системы. До недавнего времени я использовал Oracle SOA Suite, а конкретно - Oracle BPEL Server.
В начале 2013 года у меня появилось немног освободного времени, которое я посвятил изучению еще одного ораклового сьюта, используемого при разработке SOAприложений - Oracle BPM Suite.
Для самостоятельного "поверхностного" ознакомления с этой платформой написана неплохая книга - "Getting Started with Oracle BPM Suite 11gR1" Heidi Buelow, Manoj Das, Manas Deb, Prasen Palvankar, Meera Srinivasan ISBN 978-1-849681-68-1
С ее помощью можно за несколько дней получить начальные навыки проектирования, имитационного моделирования и развертывания бизнес-процессов.
Однако, даже имея подробные пошаговые инструкции в книге, без "грабель" пройти весь путь мне не удалось. Ну и чтобы не получать по носу второй раз, развертывая в будущем (если понадобиться) инфраструктуру BPM Suite уже для разработки или для исполнения бизнес-процессов у Заказчика, я решил сохранить перечень "граблей".

1. Установка маппингов между ролью BPMN и ролью LDAP (Mapping swim lane roles to LDAP roles).
При пропытке связать роль BPM с объектом LDAP (группой, пользователем или APPролью) я столкнулся с проблемой получения информации от  LDAP, встроенного в Weblogic-сервер.
В окне IdentytyLookup при выборе сервера приложений не отображался Realm...



  
Как ни странно, но оказалось, что для получения данных о пользователях и группах нужен запущенный managed server SOA. А он у меня, как раз был застоплен и был запущен только AdminServer.
 
2. Перенос спроектированного процесса в репозитарий MDS для работы с проектом в BPM Composer 

Для переноса проекта в репозитарий MDS необходимо настроить BPM MDS Connection
Однако, при нормально настроенном соединении SOA MDS, тестирование BPM MDS Connection приводило к ошибке.
Я разворачивал SOA и BPM Suite на виртуальной машине и для виртуальных машин нашел на оракловом форуме рекомендацию, в соответствии с которой необходимо настроить Listen Address для soa_server в консоли WLS.
После выполнения этой рекомендации и рестарта soa_server тест при создании соединения прошел и удалось экспортировать проект в BPM MDS.


Рекомендации на форуме Oracle

Что впечатлило:
1. Результаты симуляции (simulation results)
Сравнение стоимости по ролям - наглядно видно, кто РАБОТАЕТ, а кто находится в ОЖИДАНИИ. Диаграмма стоимости ресурсов наглядно показывает этот факт.



Все остальное, включая этапы Implementation & Deploy прошли без особых проблем.
Пока я остановился на главе 13  "Process Analytics and Business Activity Monitoring".
Впечатленими о следующих частях книги и проблемами (если они возникнут)  поделюсь в следующей записи.
Остались главы:

Chapter 13: Process Analytics and Business Activity Monitoring
Chapter 14: Using Business Rules
Chapter 15: Using Human Task Patterns and Other Concepts
Chapter 16: User Interface Development for Human Tasks
Chapter 17: Events and Exception Handling
Chapter 18: Customizing and Extending Process Spaces
Chapter 19: Administering the BPM Environment