class EnsLib.ebXML.Operation.SOAPOperation
extends Ens.BusinessOperation, EnsLib.ebXML.Operation.AbstractOperationDelegate
ebXML outbound SOAP operation
parameter ADAPTER = "EnsLib.SOAP.OutboundAdapter";
The type of adapter used to communicate with external systems
parameter INVOCATION = "Queue";
2 modes: Queue, InProc
parameter OPERATIONDELEGATE = "EnsLib.ebXML.Operation.AbstractOperationDelegate";
parameter SETTINGS = "CustomSOAPAction,OperationDelegateClass,MessageTypeClass,MessageWithPayloadTypeClass,ValidateManifest,Allow202WithContent,HandleErrorListAsFatal,-WebServiceClientClass";
List of properties can be set as settings in the configuration file
format is a comma separated list of property names
parameter WEBSERVICECLIENTCLASS = "EnsLib.ebXML.Operation.SOAPServiceClient";
Web services client class
property Allow202WithContent
as %Boolean [ InitialExpression = 1 ];
Allow HTTP 202 response to have content (note: this is non-standard)
property CustomSOAPAction
as %String(MAXLEN=512);
Custom SOAPAction header (defaults to ebXML)
property HandleErrorListAsFatal
as %Boolean [ InitialExpression = 1 ];
Flag to convert an ebXML ErrorList into a %Status
property MessageTypeClass
as Ens.DataType.Class(EXTENDS="EnsLib.ebXML.Message") [ InitialExpression = "EnsLib.ebXML.Message",Required ];
Default ebXML message type
property MessageWithPayloadTypeClass
as Ens.DataType.Class(EXTENDS="EnsLib.ebXML.MessageWithPayload") [ InitialExpression = "EnsLib.ebXML.MessageWithPayload",Required ];
Default ebXML message type
property OperationDelegate
as EnsLib.ebXML.Operation.AbstractOperationDelegate [ InitialExpression = $this ];
property OperationDelegateClass
as Ens.DataType.Class(EXTENDS="EnsLib.ebXML.Operation.AbstractOperationDelegate");
Name of a class that implements the EnsLib.ebXML.Operation.AbstractOperationDelegate interface that we can call to do routing
property ValidateManifest
as %Boolean [ InitialExpression = 0 ];
Flag to enable validation of the Manifest for messages with payload
method %OnNew(pConfigName As %RegisteredObject)
as %Status
Because we implement a delegate, we must "fix" %OnNew otherwise, we get the implementation from Ens.AbstractDelegate
and not the one from Ens.Host which is required.
method CreateNewMessage()
as EnsLib.ebXML.Message
Construct a new instance of an ebXML message (no payload)
method CreateNewMessageWithPayload()
as EnsLib.ebXML.MessageWithPayload
Construct a new instance of an ebXML message with payload
method OnInit()
as %Status
This user callback method is called just after %OnNew()
method ProcessTargetMHSResponse(pSender As %RegisteredObject, pRequest As EnsLib.ebXML.Message, ByRef pResponse As EnsLib.ebXML.Message)
as %Status
Default implemention of the response processing
method RouteMessageToTargetMHS(pSender As %RegisteredObject, ByRef pRequest As EnsLib.ebXML.Message, ByRef pTargetUrl As %String, ByRef pSOAPAction As %String)
as %Status
Default implementation for the routing delegate
method SendMessage(pRequest As EnsLib.ebXML.Message, ByRef pResponse As EnsLib.ebXML.Message)
as %Status
Send an ebXML message to a remote MHS via an HTTP POST operation (note that since ebXML messages are packaged
in a SOAP wrapper, this will look like a web service request, although it's technically not). Depending on
the presence of a SyncReply SOAP header, we may get a response from the remote MHS, or just nothing.