Пример организации интеграции ELMA с внешней системой (веб-сервис ELMA, SOA Connector)

Контекст процесса:

С помощью веб-сервиса можно запускать экземпляры процессов в системе ELMA из других приложений. В статье рассмотрен пример автоматического запуска процесса "Оформление заказа" при заполнении формы заказа на сайте.

Рис. 1. Графическая модель процесса
  

Рис. 2. Контекст процесса
  

Для возможности запуска процесса из внешней системы необходимо в настройках процесса:     
  • установить вариант запуска Из внешних систем. Установленное свойство Вручную, позволяет пользователям запускать процесс из веб-части ELMA при наличии соответствующих прав;    
  • сгенерировать или указать вручную токен процесса;    
  • установить флажок Веб-сервис.  

   Рис. 3. Настройка вариантов запуска процесса

Форма заказа на сайте выглядит следующим образом (исходный код формы приложен к статье):

   Рис. 4. Форма задачи во внешней системе

При нажатии Отправить выполняется 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 будет запущен процесс "Оформление заказа".

Прикрепленные файлы