The TCPIP Handshake sample demonstrates how you can implement the three-way handshake that is expected by the client. The sample shows you how to use this handshake to allow the client to cancel the request after the request has been sent, but before the server starts to process it.
The three-way handshake for sending the reply message can also be used to provide a level of transactional quality of service. This sample can be extended to allow the client to roll back the service either by sending negative acknowledgments, or by failing to send an acknowledgment to the reply message.
The current service interface that is called by this sample is non-transactional. Therefore, a new service interface must be set up that allows rollback. Use either of the following options to set up a service that allows rollback:
For example, if the service is implemented as an SAP BAPI, use an SAPRequest node to call that BAPI. Using an SAPRequest node ensures that the BAPI is included in the transaction for the message flow. Therefore, if the client sends a negative acknowledgment, throwing an exception causes the transaction to be rolled back.
For example, to extend the TCPIP Handshake sample when you are using WebSphere MQ to call the service, that is, you are using the invokeMQService subflow, you can add a third queue that can be used to signal to the WebSphere MQ server application that a particular execution of that service must be rolled back. You can add an Output node (Rollback) to the sendReply subflow. The Timeout terminal of the TCPIPServerReceive node and the Alternate terminal of the CheckAckAndMakeConf node must both be wired to the Rollback node. The invokeMQService subflow connects the Rollback node to an MQOutput node, by using a transformation node to convert the message to XML.
sendReply subflow
invokeMQService subflow
TCPIPMQVeneer flow