Business rules are the part of InterSystems Ensemble production solution which allow nontechnical users to change the behavior of Ensemble business processes at specific decision points.
When testing a new routing rule, one frequently encountered problem is that messages that seem like they should be getting routed to a target component are not getting routed. This article aims to describe how to determine why the message didn't get routed.
1. Check the Event Log for the router to make sure there wasn't an error evaluating the rule or running any transformations referenced by the rule. If there was, debug that error first.
Have a question about the new Rule Editor within 2024.1... How are you able to edit the Target, it shows greyed out and when I click on the field it does not allow me to edit the field.
I would like to understand before I give my team a presentation tomorrow about if we should upgrade or not. Thanks
We are in the process of upgrading to 2023.1 for InterSystems Health Connect, and the Business Rule Engine editor is very difficult to use compared to 2022.1. It's difficult to scan over the rules as it all looks the same style with barely any distinction between rules, constraints, conditions, whens etc. There's also tonnes of whitespace, and searching on the page is hit and miss (using Ctrl + F) . I can see the previous editor is still available when you modify the URL, but I'm wondering if we can set it to be the default editor, and if this is something supported.
I'm working on a complex piece of rules that needs to check each OBX and evaluate if 3 of the fields match certain criteria. I've tried to achieve this using a Foreach loop, which does work, however it is not as clean as I wanted it. I was hoping I could assign temp variables inside the foreach loop to make the rules more easier to read, for example @testCode @resultText. This is not support as you can only assign inside a when condition. Before I raise this as an idea, i wondered if there was an alternative way to achieve the same thing?
We have a case where we have 1 message coming in, but then sending two messages out to the same location. Even with FIFO sometimes the messages get out of sequence depending on what is need to be done to the message in the DTL before send. Is it possible to call sleep or Halt or write some kind of a function to put a pause in a routing rule between two sends?
I have a rule to throw a message when there is an error. I want to prevent send the email if the origin of the error is the API to send the email
This is my rule
Now, If there is any error in any process, it works, but if there is an error in MyProduct.BO.SendEmail it is trying to send the error again, and it is a infinite loop.
Is there any way to check what is the origin and don't process if the origin is MyProduct.BO.SendEmail?
We have a situation where we want to detect and ignore documents/records at the earliest possible point based on certain criteria. We have an existing "CDA Preprocessor" in the workflow which is an XSL transform. This is what our contractors are planning to utilize to "filter" these documents. This doesn't really make sense to me. I see XSLT as a way to manipulate the contents of a document and filter certain peices of data. In my brain, I would use an Ensemble business rule to detect the criteria and route the document as necessary.
Is there a difference in outcome between the two screengrabs below?
In both cases, when certain conditions are met, a transformation is called and the output sent on to two targets. In the first case we surmise the transformation is called twice, and the output of the first run sent to the first target, the output of the second run to the second target. In the second case we surmise the transformation is called once, and the output duplicated and sent to the two targets.
Thing is, in rule 2, the operation succeeds, the message reachs BO HL7, but in rule 1 it does not go through. In rule 1, I have two different conditions, but they are linked by an OR and one of the conditions is simply IF 1=1.
Do you guys have any clue on why rule 1 does not reach BO HL7?
I need to route a message synchronously to multiple targets using a routing rule.
In IRIS I built a general routing rule set, made up of a couple of rules. For one Rule in particular, and based on a common condition, I want to send the incoming message to 2 different targets. (no transformation is used)
I can select, in the single SEND action, multiple target names, or, I can create consecutive SEND actions, one after the other, each sending to their specific target.
Ran into an issue this morning, that I am having a hard time trying to track down what might have caused the issue. We have a Business Rule that sends HL7 ADT to a Business Process that inserts the data into a MS SQL Server using a Custom Business Operation (SQL Outbound Adapter).
I am currently trying to add a condition to a routing rule that uses the %Source property of a routing rule. Unfortunately I am getting compile errors when I use the "%", and if I get PROPERTY DOES NOT EXIST if I try and use any of field. I have tried referencing the messages as "Message." , "Record.", "FullRecordMapClassName." , "Document." . Does anyone know how to reference the properties of a record map in a routing rule, or if it is even possible? Thanks!
Does anyone have experience in creating a Business Routing Rule using Exists function?
I've used the comma delimited 'In' function, but I would like more manageability. Entering and remove items from a look up table would be much easier to manage then changing the comma delimited string.
I have a use case where for new born I want to send HL7 messages to different business operation. I created the business rule but in condition I am struggling to put syntax something similar to this
https://www.youtube.com/embed/SZBRm4rtue8 [This is an embedded link, but you cannot view embedded content directly on the site because you have declined the cookies necessary to access it. To view embedded content, you would need to accept all cookies in your Cookies Settings]