I've been playing with the new Ruleflow stuff in 4.0MR2 - which is cool - and it's raised a couple of questions and observations that I hope other users can answer.
1. Is there a way of specifying a constraint(s) on a Split node. I can see the Split node type property can be given an AND value, but there seems to be no way of specifying which output connections(s) should be traversed after the split. I quick peek at the source code did reveal that the core ruleflow stuff seems to have constraint attributes in the split node implementation, so is this still a "Todo", or is there a way of specifying constraints in
4.0MR2 release?
2. Am I correct in assuming that a rule can only ever belong to a single RuleFlowGroup node (i.e. ruleset), as the rules in a RuleFlowGroup seem to be specified by a rules (single) ruleflowgroup attribute? It appears that if you want to reuse a rule in another RuleFlowGroup node in the ruleflow then you have to redefine a copy of the rule and give it a different ruleflowgroup attribute. However, if a rule could belong to several ruleflow groups then you could reuse a rule in other RuleFlowGroup nodes in the same ruleflow, or even in a different ruleflow. In some the applications I've developed with commercial rules engines, it's common to have a number of ruleflows that implement different parts of a system, but where all the rules are defined against a common model, thus allowing some reuse of rules.
3. The Eclipse GUI ruleflow builder doesn't seem to allow loops in the flow. It may sound a bit perverse, but is there any reason why loops should not allowed (assuming the rule modeler is aware of the potential of infinite loops etc)? I've implemented applications with commercial rules engines, where looping in the ruleflow has proved useful. As I said, it may sound perverse, but several commercial rules engines are getting to the point where the ruleflow tools are essentially Business Process Management Systems (BPMS). These systems mix rules and process control flow, such as split conditions, looping and much more, to define applications within a single framework, but that's a whole different topic.
Thanks
Shahad