abstract class Ens.BusinessService
extends Ens.Host, Ens.Util.IOLogger
This is a Business Service class.
parameter APPDATAKEY = "ProcessInputAsync";
parameter SETTINGS = "GenerateSuperSessionID:Additional,AlertGracePeriod:Alerting";
List of properties can be set as settings in the configuration file
format is a comma separated list of property names
property %AlertStartTime
as %Numeric [ InitialExpression = 0 ];
property %OutsideCreated
as %String;
IO device name if created by CreateBusinessService from a CSP TCP job
property %PreserveSession
as %Boolean [ InitialExpression = 0 ];
Put all inputs from this service into a single session
property %ProcessInputCalled
as %Boolean [ Calculated ];
Deprecated - use %WaitForNextCallInterval
property %RequestHeader
as Ens.MessageHeader;
property %SuperSessionCreatedBeforeSession
as %Boolean [ InitialExpression = 0 ];
This is used to indicate if the %SuperSession has been created from the inbound request
and ought not to be cleared as part of %PreserveSession actions
property %WaitForNextCallInterval
as %Boolean [ InitialExpression = 1 ];
Used to be named %ProcessInputCalled, with inverse sense
property AlertGracePeriod
as %Numeric(MINVAL=0) [ InitialExpression = 0 ];
When AlertOnError is True, refrain from alerting if it is not from ProcessInput() and the Service succeeds again within this number of seconds
property GenerateSuperSessionID
as %Boolean [ InitialExpression = 0 ];
If this setting is enabled then generate a Super Session ID.
See method GenerateSuperSession() and user call back method OnGenerateSuperSession()in Ens.Host
method ForceSessionId()
as %Status
Pre-allocate a request header object and an ID for it to represent a fresh session even before we get around to sending our first request.
When we do get around to making our first SendRequest... call it will use this pre-allocated header.
method OnError(pStatus As %Status)
as %Boolean
Override this method to provide custom error handling. Return 0 means skip standard AlertOnError behavior.
method OnProcessInput(pInput As %RegisteredObject, Output pOutput As %RegisteredObject, ByRef pHint As %String)
as %Status
Override this method to process incoming data. Do not call SendRequestSync/Async() from outside this method (e.g. in a SOAP Service or a CSP page).
method OnTearDown()
as %Status
This user callback method is called from %OnClose()
method PopulateSuperSession()
as %Status
Generate a Super Session ID if it is currently empty and setting to generate enabled.
method SendAlert(pAlertRequest As Ens.AlertRequest)
as %Status
Use this method to send an alert message
method SendRequestAsync(pTargetDispatchName As %String, pRequest As %Library.Persistent, pDescription As %String = "")
as %Status
Use this method to dispatch a business invocation asynchronously
method SendRequestSync(pTargetDispatchName As %String, pRequest As %Library.Persistent, ByRef pResponse As %Library.Persistent, pTimeout As %Numeric = -1, pDescription As %String = "", ByRef pSendSyncHandling As %String)
as %Status
Use this method to dispatch a business invocation synchronously