1 /**
2 * Tools for Drools
3 * @author kevin
4 * @version Date: 2009-7-7 Time: 10:34:58
5 */
6 public class DroolsUtil {
7 private KnowledgeAgent kagent;
8 private static DroolsUtil instance;
9
10 /**
11 * return the default agent with name "agent" and interval "5"
12 */
13 private DroolsUtil(){
14 this.kagent = getKnowledgeAgent("agent","5");
15 }
16
17 /**
18 * return the agent with the specified name and interval
19 * @param agentName The name of the agent
20 * @param interval The interval to scan resources
21 */
22 private DroolsUtil(String agentName,String interval){
23 this.kagent = getKnowledgeAgent(agentName,interval);
24 }
25
26 /**
27 * return the instance with default agent
28 * @return DroolsUtil's instance
29 */
30 public static DroolsUtil getInstance(){
31 if(instance == null){
32 instance = new DroolsUtil();
33 }
34 return instance;
35 }
36
37 /**
38 * return the instance with agent which is given specified name and interval
39 * @param agentName The name of the agent
40 * @param interval The interval to scan resources
41 * @return DroolsUtil's instance
42 */
43 public static DroolsUtil getInstance(String agentName,String interval){
44 if(instance == null){
45 instance = new DroolsUtil(agentName,interval);
46 }
47 return instance;
48 }
49
50 /**
51 * Get the KnowledgeAgent and make it scan the resources per 5 seconds
52 * @param agentName The name of the agent
53 * @param interval The interval to scan resources
54 * @return KnowledgeAgent
55 */
56 public KnowledgeAgent getKnowledgeAgent(String agentName,String interval){
57 ResourceChangeScannerConfiguration sconf = ResourceFactory.getResourceChangeScannerService().newResourceChangeScannerConfiguration();
58 sconf.setProperty("drools.resource.scanner.interval",interval);
59 ResourceFactory.getResourceChangeScannerService().configure(sconf);
60 ResourceFactory.getResourceChangeScannerService().start();
61 ResourceFactory.getResourceChangeNotifierService().start();
62 KnowledgeAgentConfiguration aconf = KnowledgeAgentFactory.newKnowledgeAgentConfiguration();
63 aconf.setProperty("drools.agent.scanDirectories","true");
64 aconf.setProperty("drools.agent.newInstance","true");
65 KnowledgeAgent kagent = KnowledgeAgentFactory.newKnowledgeAgent(agentName,aconf);
66 kagent.applyChangeSet(ResourceFactory.newClassPathResource("resource.xml"));
67 return kagent;
68 }
69
70 /**
71 * Get the KnowledgeBase
72 * @return KnowledgeBase
73 */
74 public KnowledgeBase getKnowledgeBase(){
75 return kagent.getKnowledgeBase();
76 }
77
78 /**
79 * Get the StatefulKnowledgeSession
80 * @return StatefulKnowledgeSession
81 */
82 public StatefulKnowledgeSession getStatefulKnowledgeSession(){
83 return getKnowledgeBase().newStatefulKnowledgeSession();
84 }
85
86 /**
87 * Get the StatelessKnowledgeSession
88 * @return StatelessKnowledgeSession
89 */
90 public StatelessKnowledgeSession getStatelessKnowledgeSession(){
91 return getKnowledgeBase().newStatelessKnowledgeSession();
92 }
93
94 }