デシジョンテーブル サンプルプログラム

デシジョンテーブルを利用することによって、エクセルでルールを書くことができます。

	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よりもこちらで書くようにしたほうが断然よさそうです。