Introducing a small but powerful PeopleSoft bolt-on that makes web services very easy. If you have a SQL statement, you can turn that into a web service in PeopleSoft in a few minutes.Read More & Purchase
OnRouteReceive handler allows you to run some pre-processing filtering code before the actual “real” handler code triggers to prevent the data from getting to the handlers that would process the message. This type of handler is not often implemented. This can be thought of as a “filter” event that allows you to have seperate logic for filtering the message. You could place this same logic in your normal
OnRequest handler as well. This just allows you to seperate out the logic in different layers. A good use of this handler could be some sort of custom authentication.
OnRouteReceive method returns a boolean value to determine if this node could accept this message. The
OnRouteReceive can inspect the
message object passed as it’s only paramter to look at the data.
truethen the message is passed to the
OnRequesthandler for a Synchronous SO.
falsethen the Integration Gateway will return a message that resembles this:
HTTP/1.1 200 status: 200 date: Sun, 29 Oct 2017 16:34:49 GMT content-length: 413 content-type: text/xml; charset=UTF-8 transactionid: 1506b539-bcc7-11e7-8c89-f1fdee7c0e02 <?xml version="1.0"?> <IBResponse type="error"> <DefaultTitle>Integration Broker Response</DefaultTitle> <StatusCode>20</StatusCode> <MessageSet>158</MessageSet> <MessageID>957</MessageID> <DefaultMessage>OnRouteReceive for message %1 did not accept the request on node %2.</DefaultMessage> <MessageParameters> <Parameter>CHG_SYNC_UTEST</Parameter> <Parameter>PSFT_HR</Parameter> </MessageParameters> </IBResponse>
The basic implementation of the
OnRouteReceive handler looks like this.
import PS_PT:Integration:IRouter; class syncUTestRouter implements PS_PT:Integration:IRouter method OnRouteReceive(&message As Message) Returns boolean; end-class; method OnRouteReceive /+ &message as Message +/ /+ Returns Boolean +/ /+ Extends/implements PS_PT:Integration:IRouter.OnRouteReceive +/ Return true; end-method;
You would never actually implement a handler in production that look like that. You would actually have some code that is parsing the inbound
&message parameters and performing some logic to determine if the local processing database should accept this message.
Important: This does NOT seem to fire on local operation instances. It only triggers for external nodes.
OnRouteReceive will pass in a message to your derived application class method. The return should be a Boolean. FALSE = The Operation will not run locally TRUE = The Operation will run locally.
interface IRouter method OnRouteSend(&message As Message) Returns integer; method OnRouteReceive(&message As Message) Returns boolean; method OnError(&request As Message); property array of any destinationNodes; end-interface;