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