This development is sponsored by our partner CNW. Thank you for helping ORIGAM running!
In the past we have been supporting SOAP interface to interact with Data and Workflow services.
We need to port the implementation to .net 5.
Current SOAP proxy is implemented here:
https://github.com/origam/origam-source/tree/master/OrigamEngineWebAPI
We need to implement the same endpoints with their respective methods:
DataService
This is the WSDL we need to support.
<?xml version="1.0" encoding="utf-8"?>
<wsdl:definitions xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:tm="http://microsoft.com/wsdl/mime/textMatching/" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:mime="http://schemas.xmlsoap.org/wsdl/mime/" xmlns:tns="http://asapenginewebapi.advantages.cz/" xmlns:s="http://www.w3.org/2001/XMLSchema" xmlns:soap12="http://schemas.xmlsoap.org/wsdl/soap12/" xmlns:http="http://schemas.xmlsoap.org/wsdl/http/" targetNamespace="http://asapenginewebapi.advantages.cz/" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">
<wsdl:documentation xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">Service used to communicate with ASAP data sources. Using data service you can load, store or quickly lookup data.</wsdl:documentation>
<wsdl:types>
<s:schema elementFormDefault="qualified" targetNamespace="http://asapenginewebapi.advantages.cz/">
<s:element name="LoadData">
<s:complexType>
<s:sequence>
<s:element minOccurs="0" maxOccurs="1" name="dataStructureId" type="s:string" />
<s:element minOccurs="0" maxOccurs="1" name="filterId" type="s:string" />
<s:element minOccurs="0" maxOccurs="1" name="defaultSetId" type="s:string" />
<s:element minOccurs="0" maxOccurs="1" name="sortSetId" type="s:string" />
<s:element minOccurs="0" maxOccurs="1" name="parameters" type="tns:ArrayOfParameter" />
</s:sequence>
</s:complexType>
</s:element>
<s:complexType name="ArrayOfParameter">
<s:sequence>
<s:element minOccurs="0" maxOccurs="unbounded" name="parameter" nillable="true" type="tns:parameter" />
</s:sequence>
</s:complexType>
<s:complexType name="parameter">
<s:sequence>
<s:element minOccurs="0" maxOccurs="1" name="value" />
</s:sequence>
<s:attribute name="name" type="s:string" />
</s:complexType>
<s:element name="LoadDataResponse">
<s:complexType>
<s:sequence>
<s:element minOccurs="0" maxOccurs="1" name="LoadDataResult">
<s:complexType>
<s:sequence>
<s:element ref="s:schema" />
<s:any />
</s:sequence>
</s:complexType>
</s:element>
</s:sequence>
</s:complexType>
</s:element>
<s:element name="LoadData0">
<s:complexType>
<s:sequence>
<s:element minOccurs="0" maxOccurs="1" name="dataStructureId" type="s:string" />
<s:element minOccurs="0" maxOccurs="1" name="filterId" type="s:string" />
<s:element minOccurs="0" maxOccurs="1" name="sortSetId" type="s:string" />
<s:element minOccurs="0" maxOccurs="1" name="defaultSetId" type="s:string" />
</s:sequence>
</s:complexType>
</s:element>
<s:element name="LoadData0Response">
<s:complexType>
<s:sequence>
<s:element minOccurs="0" maxOccurs="1" name="LoadData0Result">
<s:complexType>
<s:sequence>
<s:element ref="s:schema" />
<s:any />
</s:sequence>
</s:complexType>
</s:element>
</s:sequence>
</s:complexType>
</s:element>
<s:element name="LoadData1">
<s:complexType>
<s:sequence>
<s:element minOccurs="0" maxOccurs="1" name="dataStructureId" type="s:string" />
<s:element minOccurs="0" maxOccurs="1" name="filterId" type="s:string" />
<s:element minOccurs="0" maxOccurs="1" name="defaultSetId" type="s:string" />
<s:element minOccurs="0" maxOccurs="1" name="sortSetId" type="s:string" />
<s:element minOccurs="0" maxOccurs="1" name="paramName1" type="s:string" />
<s:element minOccurs="0" maxOccurs="1" name="paramValue1" type="s:string" />
</s:sequence>
</s:complexType>
</s:element>
<s:element name="LoadData1Response">
<s:complexType>
<s:sequence>
<s:element minOccurs="0" maxOccurs="1" name="LoadData1Result">
<s:complexType>
<s:sequence>
<s:element ref="s:schema" />
<s:any />
</s:sequence>
</s:complexType>
</s:element>
</s:sequence>
</s:complexType>
</s:element>
<s:element name="LoadData2">
<s:complexType>
<s:sequence>
<s:element minOccurs="0" maxOccurs="1" name="dataStructureId" type="s:string" />
<s:element minOccurs="0" maxOccurs="1" name="filterId" type="s:string" />
<s:element minOccurs="0" maxOccurs="1" name="defaultSetId" type="s:string" />
<s:element minOccurs="0" maxOccurs="1" name="sortSetId" type="s:string" />
<s:element minOccurs="0" maxOccurs="1" name="paramName1" type="s:string" />
<s:element minOccurs="0" maxOccurs="1" name="paramValue1" type="s:string" />
<s:element minOccurs="0" maxOccurs="1" name="paramName2" type="s:string" />
<s:element minOccurs="0" maxOccurs="1" name="paramValue2" type="s:string" />
</s:sequence>
</s:complexType>
</s:element>
<s:element name="LoadData2Response">
<s:complexType>
<s:sequence>
<s:element minOccurs="0" maxOccurs="1" name="LoadData2Result">
<s:complexType>
<s:sequence>
<s:element ref="s:schema" />
<s:any />
</s:sequence>
</s:complexType>
</s:element>
</s:sequence>
</s:complexType>
</s:element>
<s:element name="ExecuteProcedure">
<s:complexType>
<s:sequence>
<s:element minOccurs="0" maxOccurs="1" name="procedureName" type="s:string" />
<s:element minOccurs="0" maxOccurs="1" name="parameters" type="tns:ArrayOfParameter" />
</s:sequence>
</s:complexType>
</s:element>
<s:element name="ExecuteProcedureResponse">
<s:complexType>
<s:sequence>
<s:element minOccurs="0" maxOccurs="1" name="ExecuteProcedureResult">
<s:complexType>
<s:sequence>
<s:element ref="s:schema" />
<s:any />
</s:sequence>
</s:complexType>
</s:element>
</s:sequence>
</s:complexType>
</s:element>
<s:element name="StoreData">
<s:complexType>
<s:sequence>
<s:element minOccurs="0" maxOccurs="1" name="dataStructureId" type="s:string" />
<s:element minOccurs="0" maxOccurs="1" name="data">
<s:complexType>
<s:sequence>
<s:element ref="s:schema" />
<s:any />
</s:sequence>
</s:complexType>
</s:element>
<s:element minOccurs="1" maxOccurs="1" name="loadActualValuesAfterUpdate" type="s:boolean" />
</s:sequence>
</s:complexType>
</s:element>
<s:element name="StoreDataResponse">
<s:complexType>
<s:sequence>
<s:element minOccurs="0" maxOccurs="1" name="StoreDataResult">
<s:complexType>
<s:sequence>
<s:element ref="s:schema" />
<s:any />
</s:sequence>
</s:complexType>
</s:element>
</s:sequence>
</s:complexType>
</s:element>
<s:element name="StoreXml">
<s:complexType>
<s:sequence>
<s:element minOccurs="0" maxOccurs="1" name="dataStructureId" type="s:string" />
<s:element minOccurs="0" maxOccurs="1" name="xml">
<s:complexType mixed="true">
<s:sequence>
<s:any />
</s:sequence>
</s:complexType>
</s:element>
<s:element minOccurs="1" maxOccurs="1" name="loadActualValuesAfterUpdate" type="s:boolean" />
</s:sequence>
</s:complexType>
</s:element>
<s:element name="StoreXmlResponse">
<s:complexType>
<s:sequence>
<s:element minOccurs="0" maxOccurs="1" name="StoreXmlResult">
<s:complexType>
<s:sequence>
<s:element ref="s:schema" />
<s:any />
</s:sequence>
</s:complexType>
</s:element>
</s:sequence>
</s:complexType>
</s:element>
</s:schema>
</wsdl:types>
<wsdl:message name="LoadDataSoapIn">
<wsdl:part name="parameters" element="tns:LoadData" />
</wsdl:message>
<wsdl:message name="LoadDataSoapOut">
<wsdl:part name="parameters" element="tns:LoadDataResponse" />
</wsdl:message>
<wsdl:message name="LoadData0SoapIn">
<wsdl:part name="parameters" element="tns:LoadData0" />
</wsdl:message>
<wsdl:message name="LoadData0SoapOut">
<wsdl:part name="parameters" element="tns:LoadData0Response" />
</wsdl:message>
<wsdl:message name="LoadData1SoapIn">
<wsdl:part name="parameters" element="tns:LoadData1" />
</wsdl:message>
<wsdl:message name="LoadData1SoapOut">
<wsdl:part name="parameters" element="tns:LoadData1Response" />
</wsdl:message>
<wsdl:message name="LoadData2SoapIn">
<wsdl:part name="parameters" element="tns:LoadData2" />
</wsdl:message>
<wsdl:message name="LoadData2SoapOut">
<wsdl:part name="parameters" element="tns:LoadData2Response" />
</wsdl:message>
<wsdl:message name="ExecuteProcedureSoapIn">
<wsdl:part name="parameters" element="tns:ExecuteProcedure" />
</wsdl:message>
<wsdl:message name="ExecuteProcedureSoapOut">
<wsdl:part name="parameters" element="tns:ExecuteProcedureResponse" />
</wsdl:message>
<wsdl:message name="StoreDataSoapIn">
<wsdl:part name="parameters" element="tns:StoreData" />
</wsdl:message>
<wsdl:message name="StoreDataSoapOut">
<wsdl:part name="parameters" element="tns:StoreDataResponse" />
</wsdl:message>
<wsdl:message name="StoreXmlSoapIn">
<wsdl:part name="parameters" element="tns:StoreXml" />
</wsdl:message>
<wsdl:message name="StoreXmlSoapOut">
<wsdl:part name="parameters" element="tns:StoreXmlResponse" />
</wsdl:message>
<wsdl:portType name="DataServiceSoap">
<wsdl:operation name="LoadData">
<wsdl:documentation xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">Loads data with optionally passing any number of parameters.</wsdl:documentation>
<wsdl:input message="tns:LoadDataSoapIn" />
<wsdl:output message="tns:LoadDataSoapOut" />
</wsdl:operation>
<wsdl:operation name="LoadData">
<wsdl:documentation xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">Loads data without passing any parameters.</wsdl:documentation>
<wsdl:input name="LoadData0" message="tns:LoadData0SoapIn" />
<wsdl:output name="LoadData0" message="tns:LoadData0SoapOut" />
</wsdl:operation>
<wsdl:operation name="LoadData">
<wsdl:documentation xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">Loads data by passing 1 parameter.</wsdl:documentation>
<wsdl:input name="LoadData1" message="tns:LoadData1SoapIn" />
<wsdl:output name="LoadData1" message="tns:LoadData1SoapOut" />
</wsdl:operation>
<wsdl:operation name="LoadData">
<wsdl:documentation xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">Loads data by passing 2 parameters.</wsdl:documentation>
<wsdl:input name="LoadData2" message="tns:LoadData2SoapIn" />
<wsdl:output name="LoadData2" message="tns:LoadData2SoapOut" />
</wsdl:operation>
<wsdl:operation name="ExecuteProcedure">
<wsdl:documentation xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">Executes procedure on the data store.</wsdl:documentation>
<wsdl:input message="tns:ExecuteProcedureSoapIn" />
<wsdl:output message="tns:ExecuteProcedureSoapOut" />
</wsdl:operation>
<wsdl:operation name="StoreData">
<wsdl:documentation xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">Stores data to the data store, optionally returning actual values after storing is completed.</wsdl:documentation>
<wsdl:input message="tns:StoreDataSoapIn" />
<wsdl:output message="tns:StoreDataSoapOut" />
</wsdl:operation>
<wsdl:operation name="StoreXml">
<wsdl:documentation xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">Stores data to the data store, optionally returning actual values after storing is completed.</wsdl:documentation>
<wsdl:input message="tns:StoreXmlSoapIn" />
<wsdl:output message="tns:StoreXmlSoapOut" />
</wsdl:operation>
</wsdl:portType>
<wsdl:binding name="DataServiceSoap" type="tns:DataServiceSoap">
<soap:binding transport="http://schemas.xmlsoap.org/soap/http" />
<wsdl:operation name="LoadData">
<soap:operation soapAction="http://asapenginewebapi.advantages.cz/LoadData" style="document" />
<wsdl:input>
<soap:body use="literal" />
</wsdl:input>
<wsdl:output>
<soap:body use="literal" />
</wsdl:output>
</wsdl:operation>
<wsdl:operation name="LoadData">
<soap:operation soapAction="http://asapenginewebapi.advantages.cz/LoadData0" style="document" />
<wsdl:input name="LoadData0">
<soap:body use="literal" />
</wsdl:input>
<wsdl:output name="LoadData0">
<soap:body use="literal" />
</wsdl:output>
</wsdl:operation>
<wsdl:operation name="LoadData">
<soap:operation soapAction="http://asapenginewebapi.advantages.cz/LoadData1" style="document" />
<wsdl:input name="LoadData1">
<soap:body use="literal" />
</wsdl:input>
<wsdl:output name="LoadData1">
<soap:body use="literal" />
</wsdl:output>
</wsdl:operation>
<wsdl:operation name="LoadData">
<soap:operation soapAction="http://asapenginewebapi.advantages.cz/LoadData2" style="document" />
<wsdl:input name="LoadData2">
<soap:body use="literal" />
</wsdl:input>
<wsdl:output name="LoadData2">
<soap:body use="literal" />
</wsdl:output>
</wsdl:operation>
<wsdl:operation name="ExecuteProcedure">
<soap:operation soapAction="http://asapenginewebapi.advantages.cz/ExecuteProcedure" style="document" />
<wsdl:input>
<soap:body use="literal" />
</wsdl:input>
<wsdl:output>
<soap:body use="literal" />
</wsdl:output>
</wsdl:operation>
<wsdl:operation name="StoreData">
<soap:operation soapAction="http://asapenginewebapi.advantages.cz/StoreData" style="document" />
<wsdl:input>
<soap:body use="literal" />
</wsdl:input>
<wsdl:output>
<soap:body use="literal" />
</wsdl:output>
</wsdl:operation>
<wsdl:operation name="StoreXml">
<soap:operation soapAction="http://asapenginewebapi.advantages.cz/StoreXml" style="document" />
<wsdl:input>
<soap:body use="literal" />
</wsdl:input>
<wsdl:output>
<soap:body use="literal" />
</wsdl:output>
</wsdl:operation>
</wsdl:binding>
<wsdl:binding name="DataServiceSoap12" type="tns:DataServiceSoap">
<soap12:binding transport="http://schemas.xmlsoap.org/soap/http" />
<wsdl:operation name="LoadData">
<soap12:operation soapAction="http://asapenginewebapi.advantages.cz/LoadData" style="document" />
<wsdl:input>
<soap12:body use="literal" />
</wsdl:input>
<wsdl:output>
<soap12:body use="literal" />
</wsdl:output>
</wsdl:operation>
<wsdl:operation name="LoadData">
<soap12:operation soapAction="http://asapenginewebapi.advantages.cz/LoadData0" style="document" />
<wsdl:input name="LoadData0">
<soap12:body use="literal" />
</wsdl:input>
<wsdl:output name="LoadData0">
<soap12:body use="literal" />
</wsdl:output>
</wsdl:operation>
<wsdl:operation name="LoadData">
<soap12:operation soapAction="http://asapenginewebapi.advantages.cz/LoadData1" style="document" />
<wsdl:input name="LoadData1">
<soap12:body use="literal" />
</wsdl:input>
<wsdl:output name="LoadData1">
<soap12:body use="literal" />
</wsdl:output>
</wsdl:operation>
<wsdl:operation name="LoadData">
<soap12:operation soapAction="http://asapenginewebapi.advantages.cz/LoadData2" style="document" />
<wsdl:input name="LoadData2">
<soap12:body use="literal" />
</wsdl:input>
<wsdl:output name="LoadData2">
<soap12:body use="literal" />
</wsdl:output>
</wsdl:operation>
<wsdl:operation name="ExecuteProcedure">
<soap12:operation soapAction="http://asapenginewebapi.advantages.cz/ExecuteProcedure" style="document" />
<wsdl:input>
<soap12:body use="literal" />
</wsdl:input>
<wsdl:output>
<soap12:body use="literal" />
</wsdl:output>
</wsdl:operation>
<wsdl:operation name="StoreData">
<soap12:operation soapAction="http://asapenginewebapi.advantages.cz/StoreData" style="document" />
<wsdl:input>
<soap12:body use="literal" />
</wsdl:input>
<wsdl:output>
<soap12:body use="literal" />
</wsdl:output>
</wsdl:operation>
<wsdl:operation name="StoreXml">
<soap12:operation soapAction="http://asapenginewebapi.advantages.cz/StoreXml" style="document" />
<wsdl:input>
<soap12:body use="literal" />
</wsdl:input>
<wsdl:output>
<soap12:body use="literal" />
</wsdl:output>
</wsdl:operation>
</wsdl:binding>
<wsdl:service name="DataService">
<wsdl:documentation xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">Service used to communicate with ASAP data sources. Using data service you can load, store or quickly lookup data.</wsdl:documentation>
<wsdl:port name="DataServiceSoap" binding="tns:DataServiceSoap">
<soap:address location="http://127.0.0.1/asapws/DataService.asmx" />
</wsdl:port>
<wsdl:port name="DataServiceSoap12" binding="tns:DataServiceSoap12">
<soap12:address location="http://127.0.0.1/asapws/DataService.asmx" />
</wsdl:port>
</wsdl:service>
</wsdl:definitions>
WorkflowService
This is the WSDL we need to support.
<?xml version="1.0" encoding="utf-8"?>
<wsdl:definitions xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:tm="http://microsoft.com/wsdl/mime/textMatching/" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:mime="http://schemas.xmlsoap.org/wsdl/mime/" xmlns:tns="http://asapenginewebapi.advantages.cz/" xmlns:s="http://www.w3.org/2001/XMLSchema" xmlns:soap12="http://schemas.xmlsoap.org/wsdl/soap12/" xmlns:http="http://schemas.xmlsoap.org/wsdl/http/" targetNamespace="http://asapenginewebapi.advantages.cz/" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">
<wsdl:documentation xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">Using this service you can execute workflows defined in the loaded model.</wsdl:documentation>
<wsdl:types>
<s:schema elementFormDefault="qualified" targetNamespace="http://asapenginewebapi.advantages.cz/">
<s:element name="ExecuteWorkflow0">
<s:complexType>
<s:sequence>
<s:element minOccurs="0" maxOccurs="1" name="workflowId" type="s:string" />
</s:sequence>
</s:complexType>
</s:element>
<s:element name="ExecuteWorkflow0Response">
<s:complexType>
<s:sequence>
<s:element minOccurs="0" maxOccurs="1" name="ExecuteWorkflow0Result" />
</s:sequence>
</s:complexType>
</s:element>
<s:element name="ExecuteWorkflow">
<s:complexType>
<s:sequence>
<s:element minOccurs="0" maxOccurs="1" name="workflowId" type="s:string" />
<s:element minOccurs="0" maxOccurs="1" name="parameters" type="tns:ArrayOfParameter" />
</s:sequence>
</s:complexType>
</s:element>
<s:complexType name="ArrayOfParameter">
<s:sequence>
<s:element minOccurs="0" maxOccurs="unbounded" name="parameter" nillable="true" type="tns:parameter" />
</s:sequence>
</s:complexType>
<s:complexType name="parameter">
<s:sequence>
<s:element minOccurs="0" maxOccurs="1" name="value" />
</s:sequence>
<s:attribute name="name" type="s:string" />
</s:complexType>
<s:element name="ExecuteWorkflowResponse">
<s:complexType>
<s:sequence>
<s:element minOccurs="0" maxOccurs="1" name="ExecuteWorkflowResult" />
</s:sequence>
</s:complexType>
</s:element>
<s:element name="ExecuteWorkflow1">
<s:complexType>
<s:sequence>
<s:element minOccurs="0" maxOccurs="1" name="workflowId" type="s:string" />
<s:element minOccurs="0" maxOccurs="1" name="paramName" type="s:string" />
<s:element minOccurs="0" maxOccurs="1" name="paramValue" type="s:string" />
</s:sequence>
</s:complexType>
</s:element>
<s:element name="ExecuteWorkflow1Response">
<s:complexType>
<s:sequence>
<s:element minOccurs="0" maxOccurs="1" name="ExecuteWorkflow1Result" />
</s:sequence>
</s:complexType>
</s:element>
</s:schema>
</wsdl:types>
<wsdl:message name="ExecuteWorkflow0SoapIn">
<wsdl:part name="parameters" element="tns:ExecuteWorkflow0" />
</wsdl:message>
<wsdl:message name="ExecuteWorkflow0SoapOut">
<wsdl:part name="parameters" element="tns:ExecuteWorkflow0Response" />
</wsdl:message>
<wsdl:message name="ExecuteWorkflowSoapIn">
<wsdl:part name="parameters" element="tns:ExecuteWorkflow" />
</wsdl:message>
<wsdl:message name="ExecuteWorkflowSoapOut">
<wsdl:part name="parameters" element="tns:ExecuteWorkflowResponse" />
</wsdl:message>
<wsdl:message name="ExecuteWorkflow1SoapIn">
<wsdl:part name="parameters" element="tns:ExecuteWorkflow1" />
</wsdl:message>
<wsdl:message name="ExecuteWorkflow1SoapOut">
<wsdl:part name="parameters" element="tns:ExecuteWorkflow1Response" />
</wsdl:message>
<wsdl:portType name="WorkflowServiceSoap">
<wsdl:operation name="ExecuteWorkflow">
<wsdl:documentation xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">Executes workflow without passing any parameters.</wsdl:documentation>
<wsdl:input name="ExecuteWorkflow0" message="tns:ExecuteWorkflow0SoapIn" />
<wsdl:output name="ExecuteWorkflow0" message="tns:ExecuteWorkflow0SoapOut" />
</wsdl:operation>
<wsdl:operation name="ExecuteWorkflow">
<wsdl:documentation xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">Executes workflow passing an array of parameters.</wsdl:documentation>
<wsdl:input message="tns:ExecuteWorkflowSoapIn" />
<wsdl:output message="tns:ExecuteWorkflowSoapOut" />
</wsdl:operation>
<wsdl:operation name="ExecuteWorkflow">
<wsdl:documentation xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">Executes workflow passing 1 parameter.</wsdl:documentation>
<wsdl:input name="ExecuteWorkflow1" message="tns:ExecuteWorkflow1SoapIn" />
<wsdl:output name="ExecuteWorkflow1" message="tns:ExecuteWorkflow1SoapOut" />
</wsdl:operation>
</wsdl:portType>
<wsdl:binding name="WorkflowServiceSoap" type="tns:WorkflowServiceSoap">
<soap:binding transport="http://schemas.xmlsoap.org/soap/http" />
<wsdl:operation name="ExecuteWorkflow">
<soap:operation soapAction="http://asapenginewebapi.advantages.cz/ExecuteWorkflow0" style="document" />
<wsdl:input name="ExecuteWorkflow0">
<soap:body use="literal" />
</wsdl:input>
<wsdl:output name="ExecuteWorkflow0">
<soap:body use="literal" />
</wsdl:output>
</wsdl:operation>
<wsdl:operation name="ExecuteWorkflow">
<soap:operation soapAction="http://asapenginewebapi.advantages.cz/ExecuteWorkflow" style="document" />
<wsdl:input>
<soap:body use="literal" />
</wsdl:input>
<wsdl:output>
<soap:body use="literal" />
</wsdl:output>
</wsdl:operation>
<wsdl:operation name="ExecuteWorkflow">
<soap:operation soapAction="http://asapenginewebapi.advantages.cz/ExecuteWorkflow1" style="document" />
<wsdl:input name="ExecuteWorkflow1">
<soap:body use="literal" />
</wsdl:input>
<wsdl:output name="ExecuteWorkflow1">
<soap:body use="literal" />
</wsdl:output>
</wsdl:operation>
</wsdl:binding>
<wsdl:binding name="WorkflowServiceSoap12" type="tns:WorkflowServiceSoap">
<soap12:binding transport="http://schemas.xmlsoap.org/soap/http" />
<wsdl:operation name="ExecuteWorkflow">
<soap12:operation soapAction="http://asapenginewebapi.advantages.cz/ExecuteWorkflow0" style="document" />
<wsdl:input name="ExecuteWorkflow0">
<soap12:body use="literal" />
</wsdl:input>
<wsdl:output name="ExecuteWorkflow0">
<soap12:body use="literal" />
</wsdl:output>
</wsdl:operation>
<wsdl:operation name="ExecuteWorkflow">
<soap12:operation soapAction="http://asapenginewebapi.advantages.cz/ExecuteWorkflow" style="document" />
<wsdl:input>
<soap12:body use="literal" />
</wsdl:input>
<wsdl:output>
<soap12:body use="literal" />
</wsdl:output>
</wsdl:operation>
<wsdl:operation name="ExecuteWorkflow">
<soap12:operation soapAction="http://asapenginewebapi.advantages.cz/ExecuteWorkflow1" style="document" />
<wsdl:input name="ExecuteWorkflow1">
<soap12:body use="literal" />
</wsdl:input>
<wsdl:output name="ExecuteWorkflow1">
<soap12:body use="literal" />
</wsdl:output>
</wsdl:operation>
</wsdl:binding>
<wsdl:service name="WorkflowService">
<wsdl:documentation xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">Using this service you can execute workflows defined in the loaded model.</wsdl:documentation>
<wsdl:port name="WorkflowServiceSoap" binding="tns:WorkflowServiceSoap">
<soap:address location="http://127.0.0.1/asapws/WorkflowService.asmx" />
</wsdl:port>
<wsdl:port name="WorkflowServiceSoap12" binding="tns:WorkflowServiceSoap12">
<soap12:address location="http://127.0.0.1/asapws/WorkflowService.asmx" />
</wsdl:port>
</wsdl:service>
</wsdl:definitions>
Implementation
We should use SoapCore library for the implementation:
We should support the external WSDL definition so the customer could change e.g. the namespaces to their needs.
E.g. while the attached WSDL examples use http://asapenginewebapi.advantages.cz/LoadData
the default should be http://soap.origam.com/LoadData
or something similar. For backwards compatibility it should be possible to use the former, though.
The access to the SOAP functionality should be configurable and turned off by default.