11 мая компанией ELMA был выпущен новый релиз системы ELMA – релиз имеет красивый номер 3.0.3. Среди множества новинок версии отдельно хочется выделить появление обновленного модуля SOA Connector. Ранее модуль SOA Connector существовал в виде внешнего компонента и приобретался отдельно, теперь же, в ELMA 3.0.3 он является неотъемлемой частью программы и не требует отдельной установки. Что такое SOA Connector, для чего он нужен, чем новая версия модуля отличается от старой (последней версией системы ELMA, которая осуществляла работу с SOA Connector, была ELMA 2.5), и для чего все это вообще нужно пользователю – об этом я и хочу поговорить в этот раз.
При внедрении в организации систем автоматизации процессов, далеко не всегда имеет смысл пытаться покрыть этой системой всё и вся в организации. Иногда это и вовсе невозможно. Условно можно разделить такие случаи на две группы. К первой группе можно отнести ситуации, когда в организации уже есть какая-либо настроенная и налаженная система автоматизации (а то и несколько). Например, если в организации используется сложная, уже отлаженная и эффективно функционирующая конфигурация системы 1С: Предприятие, то переносить ее в BPMS-систему может быть просто нецелесообразно – на реализацию этой затеи уйдет много времени, сил и средств. И если для практически стандартной программы 1С: Предприятие в ELMA существует специальный модуль интеграции, то в случае с другими системами вопрос их взаимодействия с ELMA оставался открытым. Ко второй группе случаев, в которых BPMS-система просто не может полностью покрыть некоторые процессы организации, относятся ситуации, в которых имеется необходимость решения специфических задач, по своей сути выходящих за рамки BPMS-системы. Например, если в работе процесса требуется задействовать некоторое узкоспециальное ПО, скажем, программу для архитектурного проектирования. Очевидно, что разработчик BPMS-системы не должен заниматься написанием для своей программы модулей подобного рода.
Модуль SOA Connector был специально разработан компанией ELMA для избавления от проблем, которые могли бы проявляться при случаях, описанных выше: отсутствие контроля со стороны BPMS-системы может привести к «расхлябыванию процесса», отсутствию его прозрачности, ослаблению управления и другим типичным ошибкам. Способом уйти от данной ситуации и использовать мощь четкой регламентации бизнес-процессов в полной мере является модуль SOA Connector.
Рис. 1. Взаимодействие ELMA и внешней системы через SOA Connector. В ELMA 3 SOA Connector является частью системы, а не отдельным модулем.
SOA Connector представляет собой программный интерфейс, позволяющий интегрировать различные приложения с системой ELMA, используя всю мощь и гибкость технологии веб-сервисов. То есть, по сути, SOA Connector выступает в качестве своего рода переводчика, который позволяет ELMA и другой системе словно говорить на одном языке, понимать друг друга, а самое главное, он обеспечивает эффективное взаимодействие этих систем (рис. 1). Система ELMA может быть интегрирована со сторонними информационными системами, построенными с использованием архитектуры SOA. Архитектура SOA (в переводе – «сервис-ориентированная архитектура») предполагает модульный подход к разработке ПО, при котором взаимодействие компонентов системы осуществляется посредством стандартизированных интерфейсов. При этом сами компоненты могут быть слабо связанными, что развязывает разработчику руки – в единый комплекс можно объединить совершенно разные решения и даже использовать при этом программы сторонних разработчиков, не заботясь и не задумываясь о принципах их функционирования.
Программные комплексы, построенные с использованием SOA архитектуры, обычно реализованы как набор веб-служб. При этом взаимодействие систем осуществляется через стандартный протокол SOAP. Поддержка данного протокола осуществляется всеми современными платформами: от Java и .NET до 1С. Некоторые системы используют другие протоколы взаимодействия, но в случае ELMA используется именно SOAP – наиболее распространенный стандарт. Подобная организация работы систем позволяет приложениям для получения определенных результатов использовать сервисы, даже не зная, каким образом эти сервисы выполняют свою задачу. При этом сервисы так же заранее ничего не знают о приложении, которое их вызывает. Главное, что подобная организация позволяет добиваться результатов минимальными усилиями – не требуется доводка и взаимная подгонка программ, использование стандартных интерфейсов их взаимодействия устраняет подобные проблемы.
Что это дает пользователю ELMA и как это работает? Благодаря возможностям интеграции, внешнее приложение, поддерживающее стандарты SOA, сможет, например, запускать бизнес-процессы в системе ELMA, получать или посылать в них некоторую информацию. Рассмотрим на реальных примерах.
Рис. 2. Заполнение формы заказа на веб-сайте компании.
Представим некоторую организацию, имеющую сайт, на котором используется система автоматического приема заказов: в специальной форме клиент вводит информацию о продукте или услуге, которую хочет приобрести (рис. 2). После нажатия клиентом кнопки «Отправить», сотрудники организации должны приступить к обработке заказа. О необходимости обработки нового заказа в большинстве подобных случаев менеджеры узнают в письме на электронной почте, которое генерируется веб-сайтом при отправке пользовательских форм. При этом не стоит забывать, что обработка заказа – сложный процесс, требующий четкой регламентации, правильного и своевременного выполнения. Если сотрудники организации будут долго или неточно выполнять свои обязанности – это скажется на качестве оказываемой услуги и приведет к недовольству клиента. Поэтому данный бизнес-процесс желательно контролировать BPMS-системой, однако управление сайтами в общем случае выходит за рамки ее возможностей – эта задача попросту не является профильной. Конечно, можно довольствоваться бизнес-процессом, в котором его участникам будут ставиться задачи ручного выполнения своих обязанностей: в случае получения письма с заявкой на своем почтовом ящике, менеджер вручную запускает бизнес-процесс обработки заявки, вручную вводит в параметры процесса все данные, полученные из письма, и отчитывается перед системой по факту выполнения каждого его шага. При этом BPMS-система остается как бы в стороне, а степень автоматизации процесса остается очень низкой.
В случае с ELMA данную задачу можно решить просто и эффективно! Благодаря возможностям SOA Connector сайт организации и ELMA будут активно взаимодействовать: после заполнения клиентом формы на сайте и ее отправки, вместо отправки обычного письма на электронную почту менеджера компании сайт автоматически посылает данные в систему ELMA, где так же автоматически запускается бизнес-процесс обработки заявки (рис. 3). При этом бизнес-процесс уже будет содержать все необходимые параметры (имя клиента, контактные данные, параметры заказа), полученные от клиента – ручной ввод данных менеджером не потребуется. Подобным образом можно проводить через ELMA все необходимые операции на сайте организации – это позволит выполнять все процессы по регламенту, а также собирать, хранить и анализировать информацию по этим операциям в одном месте.
Рис. 3. Страница задачи ELMA, выполняемой в рамках бизнес процесса. Данный бизнес-процесс был запущен веб-приложением.
Использование в приведенном примере модуля SOA Connector позволило добиться следующих положительных результатов:
-
Запуск бизнес-процессов в системе ELMA возможен извне системы. При этом в качестве инициатора процесса может выступать кто угодно – для этого не обязательно быть зарегистрированным пользователем системы. В коде веб-сервиса, который будет запущен реальным инициатором процесса (например, посетителем сайта, отправившем форму с заказом), произойдет подстановка логина и пароля некоторого реального пользователя системы ELMA (например, менеджера по продажам), который и будет выступать в качестве инициатора процесса для системы. Таким образом, со стороны системы ELMA данный процесс ничем не будет отличаться от процессов, запущенных внутри системы, а это значит, что управление и работа с такими процессами будет осуществляться для пользователей ELMA стандартным и привычным образом.
-
Процесс был запущен с уже настроенным набором параметров. Так, в приведенном примере процесс получил сведения о клиенте (имя, контактные данные) и сведения о заказе. Менеджеру не придется вносить эти данные вручную – это экономит время сотрудника и позволяет оградиться от возможных ошибок ручного переноса данных. После перестройки процесса к такому виду (интеграция ELMA и внешнего приложения через SOA Connector) может оказаться, что участие некоторых сотрудников в процессе и вовсе не потребуется.
-
Весь процесс обработки заказа был полностью проведен через систему ELMA, а это значит, что данные о заказе будут учтены при составлении отчетов системы.
Работа внешних программ с процессами системы ELMA осуществляется посредством токенов - уникальных ключей для типов бизнес-процессов. В Дизайнере ELMA (специальное приложение для моделирования бизнес-процессов, объектов системы, отчетов и т. д.) для каждого бизнес-процесса можно сгенерировать свой токен (рис. 4). При этом пользователь может выбрать, какой способ запуска бизнес-процесса будет использоваться: допускается запуск веб-запросами (поддерживаются и HTTP-GET, и HTTP-POST запросы) и через веб-сервисы.
Рис. 4. Генерация токена при регистрации бизнес-процесса.
Возможность использования веб-запросов появилась в последней версии ELMA (в ELMA 2.5 можно было использовать только веб-сервисы) и значительно упростила механизм запуска бизнес-процессов ELMA извне системы – не нужно заниматься написанием кода и долго разбираться в веб-сервисах. Особого внимания заслуживают GET-запросы, как наиболее простые в использовании, ведь все что нужно для создания GET-запроса – это получить токен бизнес-процесса и, используя его, сформировать нужную ссылку. При необходимости к тексту ссылки также простым перечислением добавляются имена и начальные значения параметров, которые требуется передать в бизнес-процесс. Полученная в результате ссылка выглядит примерно так:
Код
http://elmaserveraddress.com/Processes/ProcessHeader/RunByWebQuery/cd9e966f-8364-423c-80a1-550de613233d?ClientName=Иван&ClientSurname=Петров&Goods=Сахар&Quality=1&Quantity=50 |
В этой ссылке можно условно увидеть три части (рис. 5): первая часть содержит путь к веб-серверу ELMA, вторая хранит токен бизнес-процесса (cd9e966f-8364-423c-80a1-550de613233d), третья часть опциональна (ClientName=Иван&ClientSurname=Петров&Goods=Сахар&Quality=1&Quantity=50) – она хранит список начальных параметров бизнес-процесса, разделенных символом амперсанда. Вторая и третья части запроса разделены знаком вопроса. Создание подобной ссылки вручную занимает буквально считанные минуты. Имея минимальные навыки программирования веб-приложений, можно автоматически генерировать подобные ссылки на основе данных из пользовательских форм или на основе каких-либо других параметров.
Рис. 5. Структура GET-запроса, при помощи которого можно инициировать запуск бизнес-процесса.
Эту ссылку можно использовать в любом возможном месте – перейдя по ней, пользователь должен будет ввести свой логин и пароль в системе ELMA, после чего будет запущен бизнес-процесс. Если данный пользователь выступает исполнителем первой задачи процесса, то автоматически будет отображена страница задачи.
Простота использования веб-запросов, к сожалению, выливается в некоторые недостатки и весьма ограниченные возможности. Во-первых, при помощи такого метода вы можете только запускать процессы, возможность получения данных о процессах и другие команды выполнять подобным образом нельзя. Во-вторых, отсутствует возможность запуска процесса сторонним участником, не зарегистрированным в системе – как отмечалось ранее, для запуска процесса потребуется ввод логина и пароля ELMA (передача этих данных осуществляется только веб-сервисом). Во многих случаях эти ограничения не играют какой-либо роли, учитывая простоту создания GET-запросов, но если вам потребуются большие возможности, используйте веб-сервис, при помощи которого можно получать очень интересные результаты.
В приведенном ранее примере автоматического запуска бизнес-процесса с параметрами, определенными в форме веб-сайта, уже использовались веб-сервисы – именно с их помощью осуществлялся обмен данными между ELMA и веб-сайтом (конечно, при непосредственном участии SOA Connector!). Кроме возможности при помощи веб-сервиса автоматически запустить бизнес-процессы извне системы, большое применение может найти возможность получить извне информацию о выполняемых бизнес-процессах. Например, можно получить информацию о статусах выполняемых процессов, узнать параметры их выполнения или получить некоторые данные из их контекста.
Возвращаясь к примеру с формой заказа на сайте, можно доработать его за счет автоматической подстановки в поля формы значений по умолчанию и текстовых подсказок (рис. 6). Конечно, значения по умолчанию могут быть определены разработчиком веб-сайта, но разумнее получать эти данные из бизнес-процесса – в этом случае при изменении бизнес-процесса не придется делать двойную работу еще и на сайте (кроме того, в суматохе можно забыть поправить формы на сайте, тогда посетители сайта будут использовать в качестве шаблона заранее неверную, устаревшую информацию – в случае автоматической обработки данных скриптами, это может быть критично). Разумеется, полученные из бизнес-процесса данные контекста могут быть использованы не только для автоматической подстановки в поля формы – их можно использовать где угодно.
Рис. 6. Форма на сайте имеет текстовые подсказки, загруженные из бизнес-процесса ELMA.
Конечная схема взаимодействия ELMA, веб-сайта и клиента приведена на рисунке 7.
Рис. 7. Схема использования SOA Connector при обработке заказов через сайт.
1 – клиент отправляет сайту запрос на загрузку страницы. 2 – сайт через веб-сервис SOA Connector посылает запрос на получение данных контекста из бизнес-процесса ELMA. 3 – данные контекста бизнес-процесса посылаются системой ELMA веб-сайту для подстановки в форму страницы в качестве значений по умолчанию. 4 – сайт посылает клиенту сгенерированную на основании полученных данных страницу. 5 - клиент заполняет форму и отправляет введенные данные на сайт. 6 – сайт отправляет системе ELMA полученные данные и инициирует запуск бизнес-процесса обработки заказа (с уже определенными параметрами).
Вообще, работа с веб-сервисом ELMA осуществляется при помощи его методов. Список методов веб-сервиса, доступных в системе на сегодняшний день, достаточно впечатляющий. Два метода – метод запуска бизнес-процессов и метод получения контекста бизнес-процесса – уже были рассмотрены ранее. Полный список доступных методов веб-сервиса и описание этих методов можно просмотреть на странице веб-сервиса (рис.8 – адрес_сервера/Modules/EleWise.ELMA.Workflow.Processes.Web/WFPWebService.asmx).
Рис.8. Страница веб-сервиса ELMA.
На момент написания данного поста здесь числится девять методов:
-
ExecuteTask. Позволяет запустить определенную задачу. При этом можно сразу определить некоторые параметры задачи, например, определить срок выполнения задачи, исполнителя, приоритет и т. д.
-
GetActiveTasks. Позволяет получить список задач пользователя, выполнение которых в данный момент еще не завершено. Кроме названия задач, возвращаются также даты создания и срок завершения задачи, имя исполнителя и другие параметры задачи.
-
GetStatus. Позволяет получить статус определенного экземпляра процесса. Например, при помощи данного метода можно узнать, завершилось выполнение экземпляра некоторого процесса или нет.
-
LoadContext. Позволяет получить значения контекстных переменных бизнес-процесса. Пример использования данного метода был рассмотрен – с помощью метода LoadContext осуществлялся импорт значений полей формы из контекста бизнес-процесса.
-
Run. Позволяет запустить выполнение нового экземпляра бизнес-процесса. Пример использования данного метода был приведен первым.
-
SaveContext. Позволяет загрузить в контекстные переменные запущенного бизнес-процесса необходимые значения. То есть по сути это метод, обратный методу LoadContext.
-
SendMessage и SendMessageToInstance. Позволяет отправить сообщение в бизнес-процесс. В бизнес-процессах системы ELMA вы можете использовать специальный блок «Ожидание сообщения»; когда выполнение процесса доходит до данного блока, процесс временно останавливается, пока не будет получено сообщение определенного вида. В теле сообщения осуществляется передача параметров, которые после получения можно использовать в процессе. Различие между методами SendMessage и SendMessageToInstance заключается в том, что при отправке сообщения первым методом, сообщение может получить любой экземпляр бизнес-процесса, во втором же случае указывается конкретный экземпляр бизнес-процесса, и сообщение предназначается только ему.
-
Terminate. Позволяет завершить выполнение конкретного экземпляра бизнес-процесса. Автоматически можно подставить причину, по которой процесс пришлось принудительно завершить.
Таким образом, можно констатировать факт, что веб-сервис ELMA имеет большое количество методов, позволяющих осуществлять с бизнес-процессами самые различные действия, находясь вне системы – в предыдущей версии системы ELMA методов веб-сервиса было значительно меньше. Особую ценность представляют методы запуска процессов, загрузки и сохранения контекста процессов и методы отсылки сообщений, благодаря которым внешняя система может практически полноценно управлять выполняемым бизнес-процессом ELMA. Для возможности выполнения методов пользователь, который указан в параметрах запроса метода и от имени которого осуществляется выполнение действия, должен иметь права на выполнение соответствующего действия.
Подводя итоги, можно сказать, что благодаря появлению обновленного модуля SOA Connector, система ELMA 3 получила сильный инструмент, позволяющий ей стать центром информационной системы организации, объединяющим самые различные и разнородные программные системы. При этом стоит отметить, что разработчики компании ELMA сделали акцент не только на широте возможностей SOA Connector (В первую очередь, это увеличение возможностей использования веб-сервисов), но и на простоте его использования (Появилась возможность использования веб-запросов, которые легко составляются вручную без знания навыков программирования. Особенно просты в использовании веб-запросы HTML-GET, которые могут быть запущены прямо из адресной строки браузера).