Question
ED Coder · Nov 11, 2020

Is there a way to pass an acknowledgement from an Business operation to a Business service?

Is there a way to send an acknowledgement received from a business operation to the sending system that feeds into my business service?

Below is an example of my production? How can I set it up to send the Ack from 'send' to be the Ack for 'input' to be sent back?

00
0 8 92 1

Replies

When you send request from BS to BO use SendRequestSync (and not SendRequestAsync). This way you can get a response back.

Thank you Eduard, but how do I set the SendRequestSync?

Hey, this should be controllable using the Service setting of AckMode:

Control of ACK handling. The options are:
  • Never: Do not send back any ACK.
  • Immediate: Send back (commit) ACK reply message immediately upon receipt of the inbound message.
  • Application: If message passes validation, wait for ACK from target config item and forward it back when it arrives.
  • MSH-determined: Send back ACK reply messages as requested in the MSH header of the incoming message.
  • Byte: Send back an immediate single ACK-code byte instead of an ACK message. Byte ASCII code 6 = 'OK', ASCII code 21 = 'Error'

In your case, you'll be interested in the Application ACK.

Which Service are you referring to?

Haven't seen this setting in default InterSystems IRIS adapters.

Sorry, I had made an assumption that the OP was working with HL7, and the "Input" in the screenshot would be based on EnsLib.HL7.Service.TCPService.

my input is EnsLib.HL7.Service.TCPService and my BO  - send is EnsLib.HL7.Operation.TCPOperation. Can I still use it? I see that my input has the option for ACk setting. Will your method work if I set it to Application?

Then in that case, I believe so.

My expectation is that setting the AckMode of your service to "Application" should send your operation the HL7 message and then wait for the ACK your Operation gets to then use as an ACK to the sending application.

Thank you so much Julian... Much appreciated.