デシジョンテーブルを利用することによって、エクセルでルールを書くことができます。
public static final void main(String[] args) {
try {
final DecisionTableConfiguration dtableconfiguration
= KnowledgeBuilderFactory.newDecisionTableConfiguration();
dtableconfiguration.setInputType( DecisionTableInputType.XLS );
final KnowledgeBuilder kbuilder
= KnowledgeBuilderFactory.newKnowledgeBuilder();
kbuilder.add( ResourceFactory.newClassPathResource( "dt1/DrinkOrNot.xls", DrinkOrNot.class ),
ResourceType.DTABLE,
dtableconfiguration );
final KnowledgeBase kbase = KnowledgeBaseFactory.newKnowledgeBase();
kbase.addKnowledgePackages( kbuilder.getKnowledgePackages() );
StatefulKnowledgeSession ksession
= kbase.newStatefulKnowledgeSession();
KnowledgeRuntimeLogger logger
= KnowledgeRuntimeLoggerFactory.newFileLogger(ksession, "dt1");
// ルールを実行
ksession.insert(new Profile("uzr",31));
ksession.fireAllRules();
ksession.insert(new Profile("hoge",19));
ksession.fireAllRules();
ksession.dispose();
logger.close();
} catch (Throwable t) {
t.printStackTrace();
}
}
- 感想
- 効率的にも、見易さ的にもdrlよりもこちらで書くようにしたほうが断然よさそうです。