· Jun 10, 2022

How to programmatically decide whether a session have unresolved errors in Interoperability?


My client is using IRIS 2021.1 Interoperability and they want to highlight the sessions with unresolved(without resent and completed operations) errors so their maintenance team can have a list of unresolved sessions to check against.

When I'm working on it, it seems to be it is is difficult to decide whether a session have unresolved errors. For example,

enter image description here

in this session, the entry async request is labelled as error after the following dispatches was resent and completed. So it is not correct to decide with the entry. Does it mean that we'll need to fetch all messages from a session and traverse the messages flow, depending on the status of all downstream messages to decided whether the session need to be handled?

I wonder what solution could be used to fulfill this requirement? Thanks.

Product version: IRIS 2021.1
Discussion (2)1
Log in or sign up to continue

Hi Nicky,

In cases like this, I think it is as you suggested: the only way is to inspect the session, and search for a message with status Completed. If found, the message with status Error has been already dealt with (resent and processed successfully).

In order to do that, one needs to do some programming: start with some  some basic SQL search of Ens.MessageHeader using indexed properties to first narrow the result set small enough and then, for each session found, use SQL to find errored messages and then corresponding resent messages (if any). 

And in case the program finds some sessions with messages that are not yet resent, it could call a method of Ens.MessageHeader to resend the message.

If the program is done correctly, it could be safely rerun, and it would resend only messages that needs to be resent.

I hope this helps