Drools的编码建议
- 所有的规则文件(.drl )应统一放在一个规定的文件夹里面,如(rules文件夹 )
- 规则文件(.drl)的 package 应和调用java的 package一致。
- 书写的每个规则,应尽量加上注释。注释要清晰明了,言简意赅 。
- 同一类型的对象,尽量放在一个规则文件里,如所有Customer类型的对象,尽量放在一个规则文件里 。这样做的好处是:当WorkingMemery的fact对象变化时,可以控制规则的触发条件。 同时,该对象的所有规则在同一个文件,也方便维护。
- 规则结果部分(RHS),尽量不要有条件语句,如if(…),尽量不要有复杂的逻辑和深层 次的嵌套语句;
- 每条规则语句,最好都加上salience属性,第一条值最大,第二条次之,依次下去…
- 每条规则执行结束,都应该加上打印日志的静态方法,此方法,统一封装提供。
- 面对复杂的规则时,尽量使用aganda-group组属性,同时,设置lock-on-active为true
- Drools的默认 dialect “java”,开发中,我们尽量避免使用dialect “mvel”