[ELMA3] Пример организации интеграции ELMA с внешней системой (веб-сервис ELMA, SOA Connector)
Контекст процесса:
С помощью веб-сервиса можно запускать экземпляры процессов в системе ELMA из других приложений. В статье рассмотрен пример автоматического запуска процесса "Оформление заказа" при заполнении формы заказа на сайте.
Рис. 2. Контекст процесса
- установить вариант запуска Из внешних систем. Установленное свойство Вручную, позволяет пользователям запускать процесс из веб-части ELMA при наличии соответствующих прав;
- сгенерировать или указать вручную токен процесса;
- установить флажок Веб-сервис.
Форма заказа на сайте выглядит следующим образом (исходный код формы приложен к статье):

При нажатии Отправить выполняется php-скрипт, который посылает SOAP-запрос:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 | <?php $userName = "admin" ; //логин пользователя от которого будет запущен процесс $password = "" ; //пароль пользователя от которого будет запущен процесс $token = "6e8e72fb-0178-4d8c-a84d-d354debe4de9" ; //токен процесса $instanceName = $_POST [’company’]; //название экземпляра процесса $data = new stdClass(); $data ->Items = new stdClass(); $data ->Items->WebDataItem = array (); // Формируем массив контекстных переменных. $data ->Items->WebDataItem[0] = array ( "Name" => "NazvanieOrganizacii" , "Value" => $_POST [’company’]); $data ->Items->WebDataItem[1] = array ( "Name" => "FIOKontaktnogoLica" , "Value" => $_POST [’fio’]); $data ->Items->WebDataItem[2] = array ( "Name" => "VersiyaProgrammnogoProdukta" , "Value" => $_POST [’version’]); $data ->Items->WebDataItem[3] = array ( "Name" => "KolichestvoLicenziy" , "Value" => $_POST [’licence’]); $data ->Items->WebDataItem[4] = array ( "Name" => "TelefonKontaktnogoLica" , "Value" => $_POST [’phone’]); $data ->Items->WebDataItem[5] = array ( "Name" => "Adres" , "Value" => $_POST [’adres’]); // Массив параметров необходимых для запуска процесса $parameters = array ( "userName" => $userName , "password" => $password , "token" => $token , "instanceName" => $instanceName , "data" => $data ); if ( $_POST [’Run_Workflow’]) { // Создание SOAP-клиента по WSDL $client = new SoapClient( "URL?WSDL" , array ( "location" => "URL" )); //Вызов метода Run для запуска экземпляра процесса $client ->Run( $parameters ); echo "Спасибо за заказ! В ближайшее время с Вами свяжется наш специалист." ; } ?> |
В скрипте получаем значения с формы заказа, конструктору класса SoapClient передаем URL WSDL-документа и получаем объект для работы с нужным веб-сервисом. В ELMA WSDL-документ находится по адресу http://<URL требуемой системы>/Modules/EleWise.ELMA.Workflow.Processes.Web/WFPWebService.asmx?WSDL (<URL требуемой системы> – необходимо заменить на ваш URL системы). Затем вызываем метод этого объекта, имя которого совпадает с именем самого метода веб-сервиса и передаем в него входные параметры. Для запуска процесса используется метод Run.
В результате после заполнения клиентом формы заказа в системе ELMA будет запущен процесс "Оформление заказа".