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

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

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


  

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


  
Для возможности запуска процесса из внешней системы необходимо в настройках процесса:     
  • установить вариант запуска Из внешних систем. Установленное свойство Вручную, позволяет пользователям запускать процесс из веб-части 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 будет запущен процесс "Оформление заказа".

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