Примеры SOAP-запросов веб-сервиса
Ниже приведены примеры SOAP-запросов к веб-сервису.
Метод Run
Данный метод реализует запуск бизнес-процесса системы ELMA. Внешнее приложение отправляет веб-сервису ELMA, расположенному по адресу http://127.0.0.1:8000/Modules/EleWise.ELMA.Workflow.Processes.Web/WFPWebService, SOAP-запрос версии SOAP 1.1 следующего содержания:
POST http://127.0.0.1:8000/Modules/EleWise.ELMA.Workflow.Processes.Web/WFPWebService.asmx HTTP/1.1
Accept-Encoding: gzip,deflate
Content-Type: text/xml;charset=UTF-8
SOAPAction: "http://www.elma-bpm.ru/WFPWebService/Run"
Content-Length: 495
Host: 127.0.0.1:8000
Connection: Keep-Alive
User-Agent: Apache-HttpClient/4.1.1 (java 1.5)
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:wfp="http://www.elma-bpm.ru/WFPWebService/">
<soapenv:Header/>
<soapenv:Body>
<wfp:Run>
<wfp:userName>admin</wfp:userName>
<wfp:password>omepassword</wfp:password>
<wfp:token>d07f82c4-0065-4f95-bb25-05f4008e7cc5</wfp:token>
<wfp:instanceName>Плоттер в отдел маркетинга</wfp:instanceName>
<wfp:data>
<wfp:Items>
<wfp:WebDataItem>
<wfp:Name>Nazvanie</wfp:Name>
<wfp:Value>Плоттер в отдел маркетинга</wfp:Value>
</wfp:WebDataItem>
<wfp:WebDataItem>
<wfp:Name>OpisanieZakaza</wfp:Name>
<wfp:Value>Нужен для печати плакатов, нагрузка 100 листов формата А1 в неделю</wfp:Value>
</wfp:WebDataItem>
</wfp:Items>
</wfp:data>
</wfp:Run>
</soapenv:Body>
</soapenv:Envelope>
Данный запрос приведет к запуску экземпляра процесса, имеющего токен d07f82c4-0065-4f95-bb25-05f4008e7cc5. Запуск процесса производится от имени пользователя admin, имеющего пароль omepassword. Экземпляр запускаемого процесса будет иметь имя "Плоттер в отдел маркетинга". В процесс будут переданы параметры Nazvanie и OpisanieZakaza, имеющие значения "Плоттер в отдел маркетинга" и "Нужен для печати плакатов, нагрузка 100 листов формата А1 в неделю" соответственно.
При успешном запуске экземпляра процесса, в ответ на такой запрос, веб-сервис ELMA отправит внешнему веб-приложению SOAP-ответ со следующим содержимым:
HTTP/1.1 200 OK
Cache-Control: private, max-age=0
Content-Type: text/xml; charset=utf-8
Content-Length: 345
Connection: Close
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<soap:Body>
<RunResponse xmlns="http://www.elma-bpm.ru/WFPWebService/">
<RunResult>280</RunResult>
</RunResponse>
</soap:Body>
</soap:Envelope>
В поле RunResult содержится идентификатор экземпляра процесса.
Метод LoadContext
Данный метод позволяет получить значения контекстных переменных экземпляра процесса. Для его реализации внешнее веб-приложение отправляет веб-сервису ELMA, расположенному по адресу http://127.0.0.1:8000/Modules/EleWise.ELMA.Workflow.Processes.Web/WFPWebService.asmx, следующий SOAP-запрос версии SOAP 1.2:
POST http://127.0.0.1:8000/Modules/EleWise.ELMA.Workflow.Processes.Web/WFPWebService.asmx HTTP/1.1
Accept-Encoding: gzip,deflate
Content-Type: application/soap+xml;charset=UTF-8;action="http://www.elma-bpm.ru/WFPWebService/LoadContext"
Content-Length: 371
Host: 127.0.0.1:8000
Connection: Keep-Alive
User-Agent: Apache-HttpClient/4.1.1 (java 1.5)
<soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope" xmlns:wfp="http://www.elma-bpm.ru/WFPWebService/">
<soap:Header/>
<soap:Body>
<wfp:LoadContext>
<wfp:userName>admin</wfp:userName>
<wfp:password>2342123</wfp:password>
<wfp:instanceId>280</wfp:instanceId>
</wfp:LoadContext>
</soap:Body>
</soap:Envelope>
При этом будет выполнен вход в систему под учетной записью admin с паролем 2342123. Загружается содержимое контекста экземпляра бизнес-процесса, имеющего instanceId = 280. В ответ веб-сервис отправит следующее SOAP-сообщение:
HTTP/1.1 200 OK
X-AspNet-Version: 4.0.30319
Cache-Control: private, max-age=0
Content-Type: application/soap+xml; charset=utf-8
Content-Length: 2974
Connection: Close
<soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<soap:Body>
<LoadContextResponse xmlns="http://www.elma-bpm.ru/WFPWebService/">
<LoadContextResult>
<Items>
<WebDataItem>
<Name>Id</Name>
<Value>67</Value>
<DataArray/>
</WebDataItem>
<WebDataItem>
<Name>TypeUid</Name>
<Value>16850358-e1b6-4d4d-8ae6-eb5de067727c</Value>
<DataArray/>
</WebDataItem>
<WebDataItem>
<Name>WorkflowInstance</Name>
<Data>
<Items>
<WebDataItem>
<Name>Id</Name>
<Value>280</Value>
<DataArray/>
</WebDataItem>
<WebDataItem>
<Name>TypeUid</Name>
<Value>37ca54ae-c16f-4100-b25d-760adc1e2bd7</Value>
<DataArray/>
</WebDataItem>
<WebDataItem>
<Name>Uid</Name>
<Value>529cd5ca-33d5-4064-a1cf-9d7a1125034c</Value>
<DataArray/>
</WebDataItem>
<WebDataItem>
<Name>Name</Name>
<Value>Плоттер в отдел маркетинга</Value>
<DataArray/>
</WebDataItem>
</Items>
</Data>
<DataArray/>
</WebDataItem>
<WebDataItem>
<Name>Uid</Name>
<Value>5a7d427c-ed05-42bf-ac7d-0c03c3973b3d</Value>
<DataArray/>
</WebDataItem>
<WebDataItem>
<Name>Iniciator</Name>
<Data>
<Items>
<WebDataItem>
<Name>Id</Name>
<Value>1</Value>
<DataArray/>
</WebDataItem>
<WebDataItem>
<Name>TypeUid</Name>
<Value>18faf3ae-03c9-4e64-b02a-95dd63e54c4d</Value>
<DataArray/>
</WebDataItem>
<WebDataItem>
<Name>Uid</Name>
<Value>c218a7eb-1e45-4056-bf84-c6818a1dabd6</Value>
<DataArray/>
</WebDataItem>
<WebDataItem>
<Name>Name</Name>
<Value>Данилов Сергей Игоревич</Value>
<DataArray/>
</WebDataItem>
</Items>
</Data>
<DataArray/>
</WebDataItem>
<WebDataItem>
<Name>Nazvanie</Name>
<Value>Плоттер в отдел маркетинга</Value>
<DataArray/>
</WebDataItem>
<WebDataItem>
<Name>OpisanieZakaza</Name>
<Value>Нужен для печати плакатов, нагрузка 100 листов формата А1 в неделю</Value>
<DataArray/>
</WebDataItem>
<WebDataItem>
<Name>Summa</Name>
<Value/>
<DataArray/>
</WebDataItem>
<WebDataItem>
<Name>SummaSNDS</Name>
<DataArray/>
</WebDataItem>
<WebDataItem>
<Name>NeobhodimayaData</Name>
<Value/>
<DataArray/>
</WebDataItem>
<WebDataItem>
<Name>TipOplaty</Name>
<DataArray/>
</WebDataItem>
<WebDataItem>
<Name>VozmozhnayaDataOplaty</Name>
<Value/>
<DataArray/>
</WebDataItem>
<WebDataItem>
<Name>DataZakaza</Name>
<Value/>
<DataArray/>
</WebDataItem>
<WebDataItem>
<Name>DataDostavki</Name>
<Value/>
<DataArray/>
</WebDataItem>
<WebDataItem>
<Name>PrichinaOtkaza</Name>
<Value/>
<DataArray/>
</WebDataItem>
<WebDataItem>
<Name>ZaderzhkaVypolneniyaProcessa</Name>
<Value/>
<DataArray/>
</WebDataItem>
<WebDataItem>
<Name>PechatnayaFormaZayavki</Name>
<DataArray/>
</WebDataItem>
<WebDataItem>
<Name>PrichinaIzmeneniyaSummy</Name>
<Value/>
<DataArray/>
</WebDataItem>
<WebDataItem>
<Name>WorkflowInstanceStatus</Name>
<DataArray/>
</WebDataItem>
<WebDataItem>
<Name>ParametryZayavki</Name>
<DataArray/>
</WebDataItem>
</Items>
</LoadContextResult>
</LoadContextResponse>
</soap:Body>
</soap:Envelope>
Параметры выводятся в полях WebDataItem. Поле Name содержит имя параметра, поле Value – его значение.
См. также: