No, the reason I think of it this way is because it is presented as an action. What you are presented with is identical to what you see for a “full rule” with a scripted action. It is presented as a “script”, with a MIME type, which can be “run” by pressing the button in the bottom. It is also stored as an action, so when you look in the REST API explorer, it is also clearly shown as an action. In short, it’s “identical” to a scripted action in every way, except that it isn’t really that at all. It’s the source code for making the rule, not the code that is executed when the rule run.
I don’t know how you came to that conclusion. Again, don’t equate file-based rules with SimpleRules - they aren’t the same thing at all. The original DSL rules aren’t SimpleRules, are you saying that those aren’t file based? Also, you can make “full rules” using whatever scripting language you want from files. It doesn’t have anything to do with files, it has to do with “a more convenient way to write rules” from scripting languages (and there’s nothing wrong with that).
Rule and RuleImpl are both older and “more foundational”, to me this is very clear from looking at the structure. The history backs this up:
Rulewas initially created as an interface 2015-03-11- Then, at 2015-11-24,
Rulewas converted form an interface into a class, and this was “the original rule”. - At 2017-04-28,
SimpleRulecame into existence, then as a subclass ofRulewhich was a class, with the description: “convenience Rule class with a action handler. This allows to define Rules which have a execution block.” - Later, at 2018-06-38, the
Ruleclass was split into aRuleinterface and aRuleImplclass which basically are the ones we have today.SimpleRulewas changed from a subclass into aRuleimplementation.
I don’t know why this is so important to you, but I think any attemt to make them “equal” is futile. Rule is the definition, SimpleRule is an implementation that takes some liberties where it sacrifices compliance for convenience. It does so by “hacking” the action module, which is why the execute method of SimpleRule, that is key to the way it is used by scripting languages, still today ends up as an action.
There is nothing the UI or any other part of the system can do about this “link” to action - it’s in the SimpleRule implementation. I get that you don’t think it makes sense, logically, to view it as an action, but you can’t blame the UI, or anything else, for showing it like an action when it is in fact implemented as an action. The “adaptations” in the UI to make SimpleRule “less confusing” is just that - adaptions, they don’t change the fundamentals. In this isn’t just a technicality, as a consequence of the implementation, it also acts like an action. By that I mean that there are triggers and conditions that decide when to run the rule, and only when the rule is run, when the actions are executed, is the execute method of SimpleRule executed.
So, it doesn’t really matter if the helper library “shuffles the deck” and puts some things as triggers and conditions. These are still “regular” just as with any other rule. What isn’t “regular” is the action, and that’s where whatever code which havn’t resulted in a trigger or condition, is found.




