Synopsis: I need to "sideline" messages for subsequent selection and data enrichment while maintaining manageability within the Ensemble framework.
Messages will arrive in Ensemble via a Business Service. In a Business Process, those matching certain criteria will generate a query and be "sidelined" for the response, which will arrive via a separate Business Service. The response may take some time. Once received it will trigger the data enrichment, but they're not guaranteed to arrive in FIFO order. I'll need to select the message(s) that match the response, update them with the returned data, forward them to a Business Operation and mark them as "completed" in the work queue. The order of the delivery of the enriched messages is not important; they must be sent as soon as they're populated with the enrichment data received.
My initial design is to build a persistent class with indexed properties needed for selection/retrieval, along with one defined as type EnsLib.HL7.Message* for the message to be enriched. My problem with this design is that these "work queue" messages exist outside of the Ensemble management/monitoring framework and a custom management mechanism will be required to monitor and maintain the work queue.
Am I missing some inherent functionality in Ensemble that supports this requirement natively? I don't want to reinvent the wheel ...
*EDIT: Actually, the message object type may vary in the future, but the initial project requires HL7v2.