Skip to main content


class EnsLib.ITK.Framework.Operation.SOAPOperationBase extends Ens.BusinessOperation, EnsLib.ITK.Framework.SOAPCommon

This class is the base class for sending an ITK message. This class does all the work in constructing and sending the message. Derived classes must provide some of the details, which may be hard coded values or other details it gets from somewhere.

Property Inventory

Method Inventory


parameter ADAPTER = EnsLib.SOAP.OutboundAdapter;
Inherited description: The type of adapter used to communicate with external systems
parameter INVOCATION = Queue;
Inherited description: 2 modes: Queue, InProc
parameter SETTINGS = EndpointBaseURL,FaultVocabulary,UserNameToken,EncryptionStandard,Throttle,SignHeaders,X509CertificateSign,X509CertificateEncrypt,UseITKExtensions,BinarySOAP;
Inherited description: List of properties can be set as settings in the configuration file format is a comma separated list of property names


property Adapter as EnsLib.SOAP.OutboundAdapter;
Inherited description: The adapter instance
Property methods: AdapterGet(), AdapterGetSwizzled(), AdapterIsValid(), AdapterNewObject(), AdapterSet()
property BinarySOAP as %Boolean [ InitialExpression = 0 ];
Property methods: BinarySOAPDisplayToLogical(), BinarySOAPGet(), BinarySOAPIsValid(), BinarySOAPLogicalToDisplay(), BinarySOAPNormalize(), BinarySOAPSet()
property EncryptionStandard as %String (VALUELIST = ",128-Bit,256-Bit,None") [ InitialExpression = "None" , Required ];
Property methods: EncryptionStandardDisplayToLogical(), EncryptionStandardGet(), EncryptionStandardIsValid(), EncryptionStandardLogicalToDisplay(), EncryptionStandardLogicalToOdbc(), EncryptionStandardNormalize(), EncryptionStandardSet()
property EndpointBaseURL as %String;
The base URL of this Business Operation.
E.g. http://server:port/
Absolute URLs of individual services will be
constructed by concatinating this with relative
paths drawn from the subsscriber capability registry
Property methods: EndpointBaseURLDisplayToLogical(), EndpointBaseURLGet(), EndpointBaseURLIsValid(), EndpointBaseURLLogicalToDisplay(), EndpointBaseURLLogicalToOdbc(), EndpointBaseURLNormalize(), EndpointBaseURLSet()
property FaultVocabulary as %String [ Required ];
Vocabulary to use for creating fault messages from this Service.
Property methods: FaultVocabularyDisplayToLogical(), FaultVocabularyGet(), FaultVocabularyIsValid(), FaultVocabularyLogicalToDisplay(), FaultVocabularyLogicalToOdbc(), FaultVocabularyNormalize(), FaultVocabularySet()
property LastMessageSentTime as %String;
Property methods: LastMessageSentTimeDisplayToLogical(), LastMessageSentTimeGet(), LastMessageSentTimeIsValid(), LastMessageSentTimeLogicalToDisplay(), LastMessageSentTimeLogicalToOdbc(), LastMessageSentTimeNormalize(), LastMessageSentTimeSet()
property RequestMessageId as %String;
Property methods: RequestMessageIdDisplayToLogical(), RequestMessageIdGet(), RequestMessageIdIsValid(), RequestMessageIdLogicalToDisplay(), RequestMessageIdLogicalToOdbc(), RequestMessageIdNormalize(), RequestMessageIdSet()
property SignHeaders as %Integer (MINVAL = 0) [ InitialExpression = 0 , Required ];
Which SOAP sections to sign. 'None' will result in no signed sections.

Codes for individual segments are as follows:
None 0
SoapBody 1
Timestamp 2
Addressing 508
Action 4
FaultTo 8
From 16
MessageId 32
RelatesTo 64
ReplyTo 128
To 256

If mutiple sections are signed, specify sum of individual codes.
E.g. if Timestamp, Action and From are signed, use 22 (2+4+16).
Property methods: SignHeadersDisplayToLogical(), SignHeadersGet(), SignHeadersIsValid(), SignHeadersLogicalToDisplay(), SignHeadersNormalize(), SignHeadersSet()
property Throttle as %Integer (MINVAL = 0) [ InitialExpression = 0 ];
Minimum time interval (in seconds) between two messages. E.g. for 10 messages/minute, set this to 6. This applies to both Asynch and Synch messages and that too only when Subscription Pull is False.
Property methods: ThrottleDisplayToLogical(), ThrottleGet(), ThrottleIsValid(), ThrottleLogicalToDisplay(), ThrottleNormalize(), ThrottleSet()
property UseITKExtensions as %Boolean [ InitialExpression = 1 ];
Optimise communication with application by using any available ITK SOAP extensions
Property methods: UseITKExtensionsDisplayToLogical(), UseITKExtensionsGet(), UseITKExtensionsIsValid(), UseITKExtensionsLogicalToDisplay(), UseITKExtensionsNormalize(), UseITKExtensionsSet()
property UserNameToken as %String;
This will be used as the UserNameToken in the outgoing SOAP Message if X509CertificateSign is not specified.
Property methods: UserNameTokenDisplayToLogical(), UserNameTokenGet(), UserNameTokenIsValid(), UserNameTokenLogicalToDisplay(), UserNameTokenLogicalToOdbc(), UserNameTokenNormalize(), UserNameTokenSet()
property X509CertificateEncrypt as %String;
This will be used for Body Encryption
Property methods: X509CertificateEncryptDisplayToLogical(), X509CertificateEncryptGet(), X509CertificateEncryptIsValid(), X509CertificateEncryptLogicalToDisplay(), X509CertificateEncryptLogicalToOdbc(), X509CertificateEncryptNormalize(), X509CertificateEncryptSet()
property X509CertificateSign as %String;
This will be used for Signing
Property methods: X509CertificateSignDisplayToLogical(), X509CertificateSignGet(), X509CertificateSignIsValid(), X509CertificateSignLogicalToDisplay(), X509CertificateSignLogicalToOdbc(), X509CertificateSignNormalize(), X509CertificateSignSet()


method BaseITKSend(pAction As %String, pClientClass As %String, pUrl As %String, pClient As %SOAP.WebClient, pOneWay As %Boolean, pPayload As %CharacterStream, ByRef pResponse As %CharacterStream) as %Status
This is the base itk send operation that can be called if you have prepared all the input. This is not directly exposed as a Business Operation method because it does not handle errors (it is expected the caller will handle errors) Please note, the WebServiceClientClass and WebServiceURL and properties are directly set on the adapter. It is the callers responsibility to reset these as required.
method DetermineAddressing(pRequest As EnsLib.ITK.Framework.RequestBase, ByRef fromUrl As %String, ByRef relatesTo As %String) as %Status
This method determines the URL to send request into This must be implemented by the derived class
method DetermineApplication(pRequest As EnsLib.ITK.Framework.RequestBase, ByRef appName As %String) as %Status
This method determines the application the business operation represents
method DetermineAsyncReplyAddresses(ByRef pReplyTo As %String, ByRef pFaultTo As %String) as %Status
This is called when forming the SOAP header if we have an asynchronous request.
abstract method DetermineInvocationPattern(pRequest As EnsLib.ITK.Framework.RequestBase, ByRef pattern As %String) as %Status
This method determines the invocation pattern for the request. This must be implemented by the derived class
abstract method DetermineLogicalURL(pRequest As EnsLib.ITK.Framework.RequestBase, ByRef url As %String) as %Status
This method determines the logical url to send the request into This must be implemented by the derived class
abstract method DeterminePayload(pRequest As EnsLib.ITK.Framework.RequestData, ByRef payload As %Stream.Object) as %Status
This method determines the payload. This is either as per the request or if the request status is not OK then it forms a fault payload. This must be implemented by the derived class
abstract method DeterminePhysicalURL(pRequest As EnsLib.ITK.Framework.RequestBase, ByRef url As %String) as %Status
The method determines the physical url to send the request into This must be implemented by the derived class
method DetermineServiceProperties(pRequest As EnsLib.ITK.Framework.RequestBase, ByRef action As %String, ByRef behaviourType As %String) as %Status
This method determines the action and behaviour type for the message
method DetermineWebServiceClient(pService As %String, ByRef clientClass As %String) as %Status
This method determines the web service client class to create The default is based on whether we are using a binary soap message or not, but this can be overridden as required.
abstract method GenerateResponse(pRequest As EnsLib.ITK.Framework.RequestBase, pResponseInvocationPattern As %String, pBehaviourType As %String, sourceApplication As %String) as EnsLib.ITK.Framework.ResponseBase
This method builds a response message and populates it with specifics relevant to the context This method must be implemented by the derived class
method OnITKRequest(pStatus As %Status, pRequest As EnsLib.ITK.Framework.RequestData, tMessageId As %String, tBehaviourType As %String) as %Status
This is called after the request message has been sent via an EnsLib.ITK.Framework.RequestData operation. It is not called otherwise
method OnRequest(pStatus As %Status, pAction As %String, pOneWay As %Boolean, ByRef pResponse As %CharacterStream) as %Status
This is called after the request has been sent in the base class
method PerformThrottle() as %Status
Perform any throttling. The base class performs a simply throttle based on min time between requests and hangs the operation to ensure that minimum is reached.
method SendWebRequest(pRequest As EnsLib.ITK.Framework.RequestBase, pResponse As EnsLib.ITK.Framework.ResponseBase) as %Status
This method forms the SOAP request step by step given an ITKRequest from the framework. This is not directly exposed on message map and it is up to the derived class to do this if it wishes. Note: The goto OnExit code mimics the old method to little changes!!!

Inherited Members

Inherited Properties

Inherited Methods


FeedbackOpens in a new tab