Mark, This was a really useful post, going into some detail on behaviour and the underlying reasoning for the Drools implementation, especially the 6.X stuff. I've removed a whole bunch of salience mess as a result as well, which is always good for code quality.
A question though - if rules in multiple different files become eligble for firing "at the same time", is their ordering something that is readily predictable? Thanks Borris On Monday 28/07/2014 17:11, Mark Proctor wrote: > Phreak is just depth + load order, so it’s not a big change, all it does is > remove the degree of arbitrary behaviour you were relying on for performance. > Depth in 5x meant rules with the same salience were executed in an arbitrary > order, it seems this arbitrary order was not so arbitrary in your case and > makes an impact on performance - but as it’s arbitrary the repeatability of > this cannot be ensured, even across environments let alone versions. In 6x > this is no longer arbitrary, which will allow people more predictability in > their rule executions. Load order is also much easier for people to > understand and deal with, and often avoids the need to use salience at all - > it’s also how people’s brains tend to think. Rules higher up in the file, > fire first. We recommend one “agenda-group” per file, so that it’s easy to > keep control of those orders. Salience can still over-ride this; but over > time we have further ideas to completely remove the need for salience. This > didn’t make much sense in 5x as load order was not preserved between kbase > updates, so if you add rules later you lose the load order. In 6x we fixed > this, so load order is always preserved between versions, an thus adding this > enhancement makes sense. > _______________________________________________ rules-users mailing list rules-users@lists.jboss.org https://lists.jboss.org/mailman/listinfo/rules-users