EnsLib.ITK.Framework.Operation.SOAPOperationBase
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
- Adapter
- BinarySOAP
- EncryptionStandard
- EndpointBaseURL
- FaultVocabulary
- LastMessageSentTime
- RequestMessageId
- SignHeaders
- Throttle
- UseITKExtensions
- UserNameToken
- X509CertificateEncrypt
- X509CertificateSign
Method Inventory
- BaseITKSend()
- DetermineAddressing()
- DetermineApplication()
- DetermineAsyncReplyAddresses()
- DetermineInvocationPattern()
- DetermineLogicalURL()
- DeterminePayload()
- DeterminePhysicalURL()
- DetermineServiceProperties()
- DetermineWebServiceClient()
- GenerateResponse()
- OnITKRequest()
- OnRequest()
- PerformThrottle()
- SendWebRequest()
Parameters
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
Properties
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
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).
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()
Methods
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
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
- %AlertStartTime
- %ConfigName
- %ConfigQueueName
- %LastActionTime
- %LastHandledTime
- %LastReportedError
- %QuitTask
- %RequestHeader
- %SessionId
- %SuperSession
- %WarnedLatest
- %isShadow
- AlertGroups
- AlertOnError
- AlertRetryGracePeriod
- ArchiveIO
- BusinessPartner
- DeferResponse
- FailureTimeout
- IOLogEntry
- InactivityTimeout
- NoFailWhileDisconnected
- QueueCountAlert
- QueueWaitAlert
- ReplyCodeActions
- Retry
- RetryCount
- RetryInterval
- SendSuperSession
- SuspendMessage
- ThrottleDelay
Inherited Methods
- %AddToSaveSet()
- %ClassIsLatestVersion()
- %ClassName()
- %ConstructClone()
- %DispatchClassMethod()
- %DispatchGetModified()
- %DispatchGetProperty()
- %DispatchMethod()
- %DispatchSetModified()
- %DispatchSetMultidimProperty()
- %DispatchSetProperty()
- %Extends()
- %GetParameter()
- %IsA()
- %IsModified()
- %New()
- %NormalizeObject()
- %ObjectModified()
- %OnClose()
- %OnNew()
- %OriginalNamespace()
- %PackageName()
- %RemoveFromSaveSet()
- %SerializeObject()
- %SetModified()
- %SuperSessionSet()
- %ValidateObject()
- AdapterName()
- AssignOneSetting()
- CloseIOLogEntry()
- DeferResponse()
- EnumerateSettingsClose()
- EnumerateSettingsExecute()
- EnumerateSettingsFetch()
- GenerateSuperSession()
- GetDeferredResponseToken()
- GetMessageList()
- GetMsgHdrRequestKey()
- GetProductionSettingValue()
- GetProductionSettings()
- GetPropertyConnections()
- GetSettings()
- GetShadowInstance()
- IncludeSuperSession()
- MakeFaultDetail()
- MakeTechnicalNack()
- NewIOLogEntry()
- OnError()
- OnFailureTimeout()
- OnGenerateSuperSession()
- OnGetConnections()
- OnGetReplyAction()
- OnInit()
- OnKeepalive()
- OnMessage()
- OnMonitor()
- OnProductionStart()
- OnProductionStop()
- OnTearDown()
- QueueName()
- SaveIOLogEntry()
- SendAlert()
- SendDeferredResponse()
- SendRequestAsync()
- SendRequestSync()