1. Введение
Постановка задачи: оперативное отслеживание прохождения платежей в учетной системе Oracle E-Business Suite
Целевая группа
: руководители
Требования
:
- Вывод информации на Единый портал Росатома
- Визуализация в виде графиков и диаграмм
- Возможность детализации вплоть до конкретных записей в табличном виде
Автоматическое обновление графиков без необходимости перезагрузки страницы
- Обновление информации в реальном времени, по мере прохождения платежей
- Применение современного инструмента с большим потенциалом
Внедрение системы мониторинга бизнес процессов предприятия должно начинаться с постановки задачи и цели, а также анализа и документирования требований, ограничений и допущений. По результатам проведенного анализа принимается решение о выборе того или иного средства для реализации поставленной задачи.
В Центральном научно-исследовательском институте управления, экономики и информации Федерального агентства по атомной энергии (ФГУП ЦНИИАтоминформ) была поставлена задача мониторинга в реальном времени графика платежей, проходящих в Учетной системе.
Мониторинг будут производить руководители Агентства.
Клиентское место для мониторинга не должно требовать дополнительного прикладного программного обеспечения, кроме системного ПО (Windows + Internet Explorer).
Кроме того, информация должна быть доступна из любой точка Агентства независимо от расположения Учетной системы. Данное требование логично и естественно решается с помощью Единого портала Агентства. Значит, требуется вывод результатов мониторинга на Портал. Т.к. по факту уже внедрен портал Oracle Portal - требуется вывод именно в Oracle Portal.
Что касается представления информации, тут требования достаточно стандартны для задач такого класса - визуальное графическое отображение процесса прохождения платежей с разбивкой по датам, исполнителям, суммам и т.д. Примерный вид приведен на Рис.1.
Рисунок 1. Требования по представлению информации
Дополнительным обязательным условием было возможность детализации любого графика вплоть до конкретных платежных поручений. Также была поставлена задача вывода в область (регион) на портал, среди прочей информации, что накладывало очень желательное требование по автоматическому обновлению только данной области (графиков и диаграмм) без долгой и мерцающей перед глазами перезагрузки всей портальной страницы.
2. Выбор решения
Такой постановке задачи и всем предъявляемым требованиям удовлетворяет средство класса Business Activity Monitoring (BAM) [1].
Принимая во внимание сильные позиции и большой потенциал Oracle (по материалам указанного исследования), а также наличия уже полного пакета продуктов Oracle у заказчика (Oracle E-Business Suite, Oracle Collaboration Suite, Oracle SOA Suite, Oracle Database), было принято решение использовать продукт Oracle BAM для решения поставленной задачи.
С технической точки зрения Oracle BAM представляет собой приложение на Java, выполняющееся в сервере приложений, с репозитарием в БД Oracle. Для открытия и запуска отчетов (мониторинга) с клиентской машины требуется обратиться по установленному URL через Internet Explorer или открыть соответствующую страницу Портала. При этом прозрачно для пользователя загружается небольшой апплет, который берет на себя функции поддержки связи с сервером Oracle BAM, а также позволяет обновлять только измененные данные и графики без обновления страницы целиком.
С точки зрения внутренней архитектуры сервера Oracle BAM можно выделить 4 крупных компонента:
- Enterprise Link
- реализация механизма ETL - Extract Transform and Load : подключение к источникам данных и загрузка данных во внутреннее хранилище
Внутреннее хранилище Oracle BAM реализовано в БД Oracle. Используется для временного хранения информации после ее поступления в BAM с анализируемых систем. Дает возможность агрегирования и анализа исторической информации, в т.ч. накапливаемым итогом.
- Active Data Cache - реализация отчетности "реального времени" : мониторинг внутреннего хранилища на изменение данных и "проталкивание" только измененных данных на визуализацию
- Report Server
(+ Report Cache) - реализация визуализации : кеширование, форматирование и визуализация отслеживаемых данных в виде графиков, таблиц, диаграмм и прочих отчетов
- Event Engine
- реализация уведомлений и предупреждений : обработка событий, исключений, пороговых значений; формирование сигналов, уведомлений, предупреждений и корректирующих воздействий
Рисунок 2. Трехмерная архитектура сервера Oracle BAM
Рисунок 2а. Двухмерная архитектура сервера Oracle BAM
Разработка подсистемы мониторинга на Oracle BAM разбивается на этапы, коррелирующие c внутренней архитектурой сервера.
Задача разбивается на следующие этапы:
- Определение исходных систем и событий для мониторинга
- Разработка показателей для мониторинга
- Подключение к "событийным" моделям систем (Business Event System, Enterprise Message Source)
- Разработка структур для сохранения значений отслеживаемых показателей (другими словами: разработка внутреннего хранилища - фундамента данных для Active Data Cache)
- Создание процесса (плана) обработки и загрузки в хранилище входящих показателей (Enterprise Link Plan)
- Разработка отчетов и панелей для визуального мониторинга (BAM Reports)
3. Проектирование решения
В рассматриваемой задаче мониторинга платежей в режиме реального времени задействованы следующие программные модули:
- OEBS 11.5.10 - модуль Кредиторы
- Oracle BAM 10.1.3
- Oracle Portal 10.1.4
При создании нового платежного поручения в Oracle E-Business Suite информация о нем (номер, дата, размер платежа, поставщик) передается в Oracle BAM и немедленно визуализируется на графическом отчете BAM в Oracle Portal.
В качестве источника данных для BAM использована JMS очередь в БД OEBS.
Функциональная архитектура решения представлена на Рис. 3.
Рисунок 3.
Функциональная архитектура решения для мониторинга платежей
Техническое описание процесса мониторинга :
- При заведении нового платежного поручения в OEBS срабатывает BES событие:
oracle.apps.ap.payment - Создание платежных поручений
[Событие для мониторинга в BAM]
- На данное событие сделано 2 подписки в Business Event System.
1-я подписка наполняет сообщение события данными платежного поручения (номер, дата, размер платежа, поставщик) в формате XML и готовит его для записи в очередь
[Сбор показателей для BAM]
- 2-я подписка на событие передает сформированное сообщение события агенту JMS очереди, на которую "подписан" BAM. Агент публикует полученное сообщение в ассоциированную JMS очередь. [Передача показателей в BAM]
- Как только агент положил сообщение с новым платежом в JMS очередь, сервер Oracle BAM немедленно:
- считывает его - [Enterprise Message Source]
- разбирает на показатели (номер, дата, размер платежа, поставщик) - [XSLT преобразования входящих сообщений]
- и сохраняет в объекте данных "платежи OEBS" внутреннего хранилища Oracle BAM - [план обработки входящих сообщений]
- Active Data Cache (ADC) "замечает" изменение объекта данных "платежи OEBS" и немедленно передает серверу отчетов BAM данные о новом платеже (новую строку объекта данных)
- Сервер отчетов, получив порцию обновленных данных и зная, что данный отчет открыт на просмотр (помните про связь сервера с апплетом на клиентской машине в Internet Explorer!), немедленно передает данные апплету и тот, в свою очередь, обновляет графики и диаграммы отчета в окне Портала.
Таким образом, происходит мониторинг и визуализация прохождения платежей Учетной системы в режиме "реального времени", автоматически, без перезагрузки страницы в браузере.
Рисунок 4.
Пример простого отчета BAM в Портале Агенства (данные скрыты)
Особенности интеграции Oracle BAM в Oracle Portal :
- В рассматриваемой версии Oracle BAM 10.1.3 отсутствует стандартный портлет для вывода BAM в Портал
- В рассматриваемом решении BAM выведен в Портал с использованием iFrame
- Все отчеты и графики BAM (вплоть до размера шрифтов) автоматически масштабируются под текущий размер iFrame области
- С точки зрения авторизации Oracle BAM поддерживает авторизацию по LDAP-каталогу (единый реестр пользователей предприятия). В частности поддерживается OID. Таким образом, любой пользователь портала может всегда зайти на страничку с отчетом BAM при наличии соответствующих привилегий.
- С точки зрения аутентификации Oracle BAM не поддерживает Oracle SSO, по крайней мере, в стандартной конфигурации. Поэтому в качестве ограничения, но и в тоже время дополнительной защиты, при открытии странички портала с отчетом BAM, приходиться вводить пароль еще раз, несмотря на то, что пользователь уже авторизован в портале на данный момент.
4. Реализация решения
Внедрение решения по шагам:
- Сначала необходимо создать JMS-очередь (в данном примере - в БД OEBS), JMS-агента (в BES OEBS) и зарегистрировать JMS-очередь в JNDI на сервере приложений (в данном примере - в standalone OC4J в составе Oracle BAM: \OracleBAM\OC4J\j2ee\).
- Затем в OEBS необходимо создать процедуру сбора показателей платежа и создать подписки BES на событие oracle.apps.ap.payment, одна из которых будет вызывать данную процедуру, а вторая передавать сообщение события JMS агенту
- Далее - настроить BAM:
- в BAM Architect необходимо создать Enterprise Message Source для "подписки" и считывания платежей с JMS очереди. Указать XSLT преобразования входящего платежа.
- в BAM Architect создать объект данных для хранения приходящих из OEBS платежей
- в BAM Enterprise Link -> Design Studio создать план обработки входящего платежа
- в BAM Administrator - запустить созданный план
- в BAM Active Studio - создать отчет в виде графиков и диаграмм платежей.
- Затем нужно вставить в Portal на требуемой страничке iFrame-область, которую направить на созданный в BAM Active Studio отчет.
- Выводы
: Решения для мониторинга бизнес-процессов предприятия становятся все более и более совершенны и удобны для работы. Благодаря гонке вендоров-конкурентов и быстрому росту и взрослению данного сектора, международными аналитическими агенствами сформулированы требования, и выделен класс продуктов для мониторинга бизнеса Business Activity Monitoring. В пользу решения Oracle BAM, относящегося к данному классу, говорит большой его потенциал (согласно исследованию Gartner) и лидирующие позиции на данном рынке на момент приобретения продукта корпорацией Oracle.
После прочтения данной статьи, вероятно, у Вас возникло ощущение, что слепить прототип простейшей системы мониторинга в настоящее время по силам каждому. Благодаря быстрому развитию соответствующих средств класса BAM это действительно реально. Однако построение промышленной системы мониторинга бизнеса и бизнес-процесов, пусть даже и небольшой, требуют глубоких, прежде всего теоретических знаний в данной области и во множестве смежных областей. А самое главное - требует опыта построения и внедрения таких систем, знания подводных камней и "тонких" мест, настройки производительности и многого другого. Такой опыт и знания есть у Консалтинговой Группы "Борлас".
Дополнительно:
Технические аспекты для реализации подобного решения, а также примеры можно почерпнуть в документе [3] на сайте Oracle Technology Network ( otn.oracle.com ). Для построения и просмотра отчетов не обязательно выносить BAM на портал, в режиме прототипа это проще и удобнее делать, просто открывая соответствующую домашнюю страничку Oracle BAM в браузере Internet Explorer.
Фрагменты решения
- Вставка отчета BAM в Oracle Portal
- Запустить BAM Active Studio, открыть созданный отчет, кликнуть Copy Shortcut и скопировать <ссылку на отчет BAM> из открывшегося окна
- Создать в требуемом месте портал новую область и вставить в него отчет BAM в виде iFrame:
<html>
<head>
</head>
<body>
<iframe name="place" src="<ссылка на отчет BAM>"
width="100%" height="500">
</iframe>
</body>
</html> |
- Процедура сбора показателей платежа OEBS
(вызывается из первой подписки BES)
CREATE OR REPLACE PACKAGE APPS.xx_BAM AUTHID CURRENT_USER as
FUNCTION payment_rule(p_subscription_guid in raw,
p_event in out nocopy wf_event_t)
return varchar2;
end xx_BAM;
/
CREATE OR REPLACE PACKAGE BODY xx_BAM as
FUNCTION payment_rule(p_subscription_guid in raw,
p_event in out nocopy wf_event_t)
RETURN varchar2 is
dxml_ctxHandle dbms_xmlquery.ctxType;
clRslt clob;
nPos number;
nTagLength number;
BEGIN
-- Сконструируем данные по организации и товару
dxml_ctxHandle := dbms_xmlquery.NewContext
('select check_number as doc_num,
to_char(check_date,''DD.MM.YYYY HH24:MI:SS'')
as payment_date,amount as
payment_account,vendor_name as supplier
from ap_checks_all where org_id=' //
p_event.GetValueForParameter('ORG_ID')//
' and check_id=' //
p_event.GetValueForParameter('CHECK_ID'));
dbms_xmlquery.UseNullAttributeIndicator(dxml_ctxHandle, true);
-- создаем xml на базе запроса
clRslt := dbms_xmlquery.GetXml(dxml_ctxHandle);
dbms_xmlquery.CloseContext(dxml_ctxHandle);
-- добавляем namespace
nTagLength := Length(dbms_xmlquery.DEFAULT_ROWSETTAG);
nPos := instr(clRslt,
'<' // dbms_xmlquery.DEFAULT_ROWSETTAG // '>');
if nPos > 0 then
clRslt := SubStr(clRslt, 1, nPos + nTagLength) //
' xmlns="http://xmlns.oracle.com/oebsdata"' //
SubStr(clRslt,
nPos + nTagLength + 1,
Length(clRslt) - nPos - nTagLength);
end if;
-- замисываем xml-сообщение в событие
p_event.SetEventData(clRslt);
return 'SUCCESS';
EXCEPTION
when OTHERS then
return 'ERROR';
END payment_rule;
END xx_BAM; |
- Создание первой подписки BES
(вызова процедуры сбора показателей платежа)
- Зайдите в OEBS под SYSADMIN.
- Откройте полномочие "Workflow Administrator Web Applications"->"Business Events" (Администратор потоков операций Web приложений->Бизнес события).
- Встаньте на Subscriptions (Подписки) и создайте подписку со следующими параметрами:
System: <имя системы OEBS>
Source Type: Local
Event Filter: oracle.apps.ap.payment
Phase: 40
Status: Enabled
Rule Data: Key
Action Type: Custom
On Error: Skip to Next
Rule Function PL/SQL: xx_BAM.payment_rule
Owner Name: XX_BAM
Owner Tag: XX_BAM |