ADF разработчик должен уметь не только разрабатывать ADF приложения, но и полноценные BPM решения.
В этой статье, мы разработаем BPM процесс, с помощью Oracle SOA Suite. Если он у вас не установлен, то сначала изучите эту статью : Установка и настройка Oracle SOA Suite
Итак, BPM - это подход к моделированию, автоматизации, управлению и оптимизации бизнес-процессов в рамках организационных подразделений, систем и приложений.
Создадим простой процесс по принятия студента в университет.
Что бы его создать, нам нужно пройти следующие этапы:
В нашем процессе будут участвовать всегда три человека:секретарь деканата вводящий студента, декан и ректор( с них будет требоваться одобрение).
Процесс получается такой :
Теперь нам нужно создать пользователей. Это делается в http://localhost:7001/console в разделе Security Realms( как это делается показано на рисунках ниже).
Создайте три пользователя
После создания пользователей, нам необходимо их связать с ролям. Для этого нужно вернуться в компонент Organization. Выбрать роль , нажать на лупу в разделе Members и выбрать созданного пользователя.
Соответствие ролей к пользователям должно быть следующее:
Мы создали процесс и формы. Теперь нам необходимо создать условия для Exclusive и создать сервис для компонента Service, который будет добавлять студента в БД.
Условия создаются не в самой Exclusive, а в Sequence Flow отходящих от него. Нажмите два раза по Sequence Flow который отходит от Exclusive "Проверка проходил ли по баллам" к User Task "Согласование Декана". В появившемся окне перейдите во вкладку "Properties". Поменяйте тип на "Condition", выберите Expression: XPath Exp, нажмите на Expression Builder и наберите там bpmn:getDataObject('Exam')>20 . Теперь если переменная Exam больше 20, то процесс пойдет по этому Sequence Flow. Таким же способом установите condition для Sequence Flow после Exclusive согласования декана с Expression: Simple Exp и значением ApproveD = = true(если декан согласовал то продолжить работу), и для Sequence Flow после Exclusive согласования ректора с Expression: Simple Exp и значением ApproveR == true(если ректор согласовал то продолжить работу) .
Теперь откройте composite.xml нашего основного проекта. Там отображается наш бизнес процесс и компоненты которые с ним связаны. Найдите в Component Palette компонент Database Adapter и перенесите его в композит.
Дальше можно нажать Finish. Сервис создан. Теперь этот сервис прикрепим к процессу. Для этого вернемся в него и откроем свойства компонента Service. В ней откройте вкладку Implementation.Выберите Type:Service Call, и выберите созданный нами сервис
После этого нужно передать в сервис данные о студенте. Для этого нажмите на Data Association, и сопоставьте созданные бизнес объекты с элементами сервиса как указано на рисунке ниже:
В созданном соединении в свойстве xADatasourceName пропишите JNDI name созданного вами Data Sorce для подключения к базе (jdbc/local) и нажмите Ввод(иначе не сохраняется).
В появившемся окне выберите Application Server
В следующем окне указывается деплоить ли проекты привязанные к основному. У нас это наши формы, так что их нужно выбрать.
Появилось рабочее пространство.Для нас важны две вкладки:
Найдите на вкладе Заявки наш процесс и нажмите по нему. Если процесс был разработан правильно, то появится первая наша форма. Введите данные по абитуриенту и нажмите "Отправить"
В этой статье, мы разработаем BPM процесс, с помощью Oracle SOA Suite. Если он у вас не установлен, то сначала изучите эту статью : Установка и настройка Oracle SOA Suite
Итак, BPM - это подход к моделированию, автоматизации, управлению и оптимизации бизнес-процессов в рамках организационных подразделений, систем и приложений.
Создадим простой процесс по принятия студента в университет.
Что бы его создать, нам нужно пройти следующие этапы:
- Моделирование бизнес-процесса.
- Создание Ролей и пользователей
- Создание процесса.
- Создание бизнес объектов(Data object и Bussines object)
- Создание Human Task
- Создание форм
- Разработка процесса
- Deploy процесса.
- Тестирование процесса
Моделирование бизнес-процесса.
Для создания процесса "обрисуем" наше решение:В нашем процессе будут участвовать всегда три человека:секретарь деканата вводящий студента, декан и ректор( с них будет требоваться одобрение).
Процесс получается такой :
- Секретарь вводит данные абитуриента и его средний бал за экзамены
- Если средний был больше 20, то данные передаются на одобрение в деканат( иначе абитуриент не принят)
- Если Декан согласовывает принятие абитуриента, то данные передаются на одобрение в ректорат(иначе абитуриент не принят)
- Если Ректор согласовывает принятие абитуриента, то абитуриент принят и данные записываются в БД( иначе абитуриент не принят)
Создание Ролей и пользователей
Для начала создадим BPM приложение.
При моделировании мы определили кто будет участвовать в процессе(Секретарь, Декан, Ректор). Теперь нам нужно создать пользователей и роли для них в JDeveloper.
Управление ролям происходит в компоненте Organization во вкладке Roles.
Создайте три роли:
- Sekretariat
- Dekanat
- Rektorat
Теперь нам нужно создать пользователей. Это делается в http://localhost:7001/console в разделе Security Realms( как это делается показано на рисунках ниже).
Создайте три пользователя
- Sekretar
- Dekan
- Rektor
После создания пользователей, нам необходимо их связать с ролям. Для этого нужно вернуться в компонент Organization. Выбрать роль , нажать на лупу в разделе Members и выбрать созданного пользователя.
Соответствие ролей к пользователям должно быть следующее:
- Sekretariat-Sekretar
- Dekanat-Dekan
- Rektor-Rektor
Создание процесса.
Создав роли и пользователей, можно приступить к созданию процесса .Сначала нужно отобразить эти роли в следующем порядке(Sekretariat-Dekanat-Rektorat).
Роль по умолчанию(Role) меняется двойным нажатием по ней.
Что бы добавить новую роль, нужно нажать правой кнопкой в свободной области процесса
После добавления ролей, создадим непосредственной сам процесс.
Нам понадобятся 5 компонентов(они находятся в панели Component Palette) :
- Initiator - компонент типа Human Task для инициирования процесса и создания формы. Он будет использоваться в роли Sekretariat для инициирования процесса и формы Ввода данных.
- User Task - компонент типа Human Task для создания форм.Они будут использоваться в ролях Dekanat и Rektorat для форм согласования.
- Service - компонент для добавления сервисов в процесс. Этот компонент будет использоваться в роли Rektorat для добавления студента в БД.
- Exclusive - компонент для создания условий.Этот компонент будет использоваться во всех ролях для реагирования системы на вводимые данные пользователями.
- Sequence Flow - компонент для связывания компонент.
При помощи этих компонент создайте процесс нарисованный на рисунке снизу:
Создание бизнес объектов(Data object и Bussines object)
Создав процесс, нам нужно создать бизнес объекты которые участвуют в нем.
Нам необходимо создать:
- Surname (String) -фамилия абитуриента
- Name (String) - имя абитуриента
- Patronomyc (String) - отчество абитуриента
- DateBirth(DateTime)- день рождения абитуриента
- Exam(Real) - средний балл за экзамены
- ApproveD(Boolean)- переменная типа Boolean для согласования поступления абитуриента с Деканом
- ApproveR(Boolean)- переменная типа Boolean для согласования поступления абитуриента с Ректором
Эти объекты для процесса создаются в панели Structure (нижний левый угол). Нужно нажать правой кнопкой мыши по Process Data Objects->New.
Создание Human Task
В Oracle BPM для того что бы создать формы для взаимодействия с пользователем необходимо сначала у User Task создать Human Task, а потом на его основе сгенерировать форму . Нам нужно создать три Human Task для нашего процесса (для каждого User Task) со следующими параметрами
User Task для роли Sekretariat:
Имя Human Task: HumanTaskSekretar
Outcome: Submit
Параметры Human Task (переменные используемые в форме):
- Surname (Editable)
- Name (Editable)
- Patronomyc (Editable)
- DateBirth(Editable)
- Exam(Editable)
User Task для роли Dekanat:
Имя Human Task: HumanTaskDekanat
Outcome: OK
Параметры Human Task :
- Surname
- Name
- Patronomyc
- DateBirth
- Exam
- ApproveD(Editable)
User Task для роли Rektorat:
Имя Human Task: HumanTaskRektorat
Outcome: OK
Параметры Human Task :
- Surname
- Name
- Patronomyc
- DateBirth
- Exam
- ApproveD
- ApproveR(Editable)
Как создать Human Task показано на рисунках ниже:
Создание форм
После создания Human Task-ов мы можем приступить к созданию форм.
Для этого нужно нажать по User Task правой кнопкой и выбрать Open Human Task
В открывшемся Human Task отображаются все параметры. На их основе можно создать форму. Это делается нажатием на Create Form в левом верхнем углу и выбором либо AutoGenerate Task Form(необходимо дать название проекта, остальное сформируется автоматически), либо Launch Task Fom Wizard( форма формируется по указанным вами параметрам). Выберем автоматическое формирование.
В созданной форме нам нужен только блок Contents и кнопки(остальные можно удалить).
Сформируйте три формы.
Разработка процесса
Условия создаются не в самой Exclusive, а в Sequence Flow отходящих от него. Нажмите два раза по Sequence Flow который отходит от Exclusive "Проверка проходил ли по баллам" к User Task "Согласование Декана". В появившемся окне перейдите во вкладку "Properties". Поменяйте тип на "Condition", выберите Expression: XPath Exp, нажмите на Expression Builder и наберите там bpmn:getDataObject('Exam')>20 . Теперь если переменная Exam больше 20, то процесс пойдет по этому Sequence Flow. Таким же способом установите condition для Sequence Flow после Exclusive согласования декана с Expression: Simple Exp и значением ApproveD = = true(если декан согласовал то продолжить работу), и для Sequence Flow после Exclusive согласования ректора с Expression: Simple Exp и значением ApproveR == true(если ректор согласовал то продолжить работу) .
Теперь нам необходимо создать сервис для добавления студента в базу.Для этого сначала создадим таблицу в базе:
CREATE TABLE STUDENTS
(
SURNAME VARCHAR2(100)
, NAME VARCHAR2(100)
, PATRONOMYC VARCHAR2(100)
, DATEBIRTH DATE
);
В появившемся окне введите имя будущего сервиса.Например InsesrtStudent
Далее в появившемся окне выберите Connection в котором находится ваша таблица(если отсутствует создайте ее). в JNDI name укажите имя вашей базы данных
В окне выбора типа операции выберите Insert Only
В следующем окне нажмите Import Tables и добавьте необходимую таблицу
Теперь нам нужно создать прописанный нами ранее JNDI eis/DB/localhost. Для этого сначала создайте Data Source в http://localhost:7001/console для соединения с вашей базой .
Далее нам нужно создать Connnection pool в DB Adapter c именем который мы указывали в JNDI name при создании сервиса (eis/DB/localhost)
Готово. Напоследок можно немного улучшить формы декана и ректора. Автоматически сформированные поля для согласования переконвертировать в SelectBooleanCheckBox
Deploy процесса
Для деплоя, нажмите правой кнопкой по проекту где находится процесс и выберите пункт Deploy
В следующем окне определяется версия проекта и метод деплоя( перезаписывать ли предыдущий проект)
В следующем окне указывается деплоить ли проекты привязанные к основному. У нас это наши формы, так что их нужно выбрать.
Далее выберите необходимый сервер для развертывания, а в нем доступный SOA сервер и жмите Finish
Тестирование процесса
Процесс установлен и задеплоен. Теперь проверим его работу. Процессы, после развертывания отображаются по адресу http://localhost:7001/bpm/workspace . Это рабочее пространство бизнес процессов. Первый участник процесса Sekretar. Заходим : )
Появилось рабочее пространство.Для нас важны две вкладки:
- Представления - активные задачи текущего пользователя
- Заявки - Приложения доступные для данного пользователя
Найдите на вкладе Заявки наш процесс и нажмите по нему. Если процесс был разработан правильно, то появится первая наша форма. Введите данные по абитуриенту и нажмите "Отправить"
Если вы ввели средний бал за экзамен больше 20, то следующий участник процесса Dekan.Войдите в рабочее пространство под ним. На вкладке Представления должно появиться задача для согласования деканом абитуриента. Если по ней нажать появится сама форма
Если Декан согласовал, то следующий участник процесса Rektor .Войдите в рабочее пространство под ним. На вкладке Представления должно появиться задача для согласования ректором абитуриента. Если по ней нажать появится сама форма
Если Ректор согласовал, то в базу добавляется абитуриент и становится студентом : )
Проверить работу каждого процесса можно по адресу http://localhost:7001/em. Найдите там наш проект и нажмите по нему. В открывшемся окне находится список экземпляров процесса.Если по ним нажать, то открывается окно с трэйсингом процесса.
Зеленым светом отображается путь, по которому двигался процесс.
Комментариев нет:
Отправить комментарий