When a SOAP request is detected, the dispatcher is responsible for invoking the business rules associated with the requested method.
Dispatch-Request. If Not Method-Namespace-Is-OK Move "env:client" To FaultCode Move "bis:WrongNamespace" To FaultString Move "Wrong namespace for this interface" To FaultDetail Perform Indicate-Hard-Fault Else Evaluate True When Method-Is-Find Perform Process-Find-Method When Other Move "env:client" To FaultCode Move "bis:WrongMethod" To FaultString Move "Method invoked is unknown to this interface" To FaultDetail Perform Indicate-Hard-Fault End-Evaluate End-If. Stop Run. Process-Find-Method. open input office-code-file. move spaces to output-parameters of Find--method-parameters. if office-code-success move desired-company-name of input-parameters of Find--method-parameters to company-name of office-code-file start office-code-file key Not < company-name of office-code-file invalid key move "Not Found" to result of Find--method-parameters not invalid key read office-code-file next at end move "Not Found" to result of Find--method-parameters not at end move corr office-code-record to output-parameters of Find--method-parameters end-read end-start else move "Unrecoverable Error" to result of Find--method-parameters end-if. perform Issue-response. Issue-Response. XML EXPORT FILE SOAP-Request-Response *> data item to export from BIS-Exchange-File-Name *> exported document file name "SOAP-Request-Response" *> model data-name "cobol_to_soap.xsl". *> stylesheet for transform If Not XML-OK Go To Z. Call "B$WriteResponse" Using BIS-Response-SessionComplete Giving BIS-Status If Not BIS-OK Go To Z.
After an import of a request, the method-name field contains the requested method (folded to lower case) and the input (and input-output) parameters have been stored in the appropriate --method-parameters area. (This again is the result of the style sheet using the naming conventions described earlier.) The dispatching code checks for some errors (for example, being called erroneously by a client wanting to use a different service) and then uses EVALUATE method-name to invoke business rules appropriate to the method. After the business rules execute (the paragraph Process-Find-Method in the example), the SOAP response is exported to the exchange file (once again, the style sheet uses the method-name along with the naming conventions to 'know' which output-parameters contain the desired result data) and B$WriteResponse is called to notify the request handler that the response is in the exchange file; the request handler will send the contents of the exchange file to the client.