protected void addPolicyRule(DroolsPolicyRule uriPolicyRule) { InputStream templateStream = DroolsPolicy.class.getClassLoader().getResourceAsStream("templates/DroolsPolicyTemplate.drl"); DroolsPolicyTemplateDataProvider tdp = new DroolsPolicyTemplateDataProvider(uriPolicyRule); DataProviderCompiler converter = new DataProviderCompiler(); String drl = converter.compile(tdp, templateStream); if (log.isDebugEnabled()) { log.debug("------------ ADDING NEW POLICY RULE INTO DROOLS ENGINE ----------------------"); log.debug(drl); log.debug("------------ END NEW POLICY RULE ------------------"); } // Then add it into drools RuleBase addPackage(drl); }
@Override public String marshal(final RuleModel model) { //Build rule final String ruleTemplate = marshalRule(model); log.debug("ruleTemplate:\n{}", ruleTemplate); log.debug("generated template:\n{}", ruleTemplate); final DataProvider dataProvider = chooseDataProvider(model); final DataProviderCompiler tplCompiler = new DataProviderCompiler(); final InputStream templateStream = new ByteArrayInputStream(ruleTemplate.getBytes(IoUtils.UTF8_CHARSET)); final DefaultTemplateContainer tc = new DefaultTemplateContainer(templateStream, false); final TemplateDataListener listener = new TemplateDataListener(tc, false); final String generatedDrl = tplCompiler.compile(dataProvider, listener); log.debug("generated drl:\n{}", generatedDrl); return generatedDrl; }
public static void main(String[] args) { InputStream template = RuleTemplateArrayDemo.class.getResourceAsStream("/com/template/template.drt"); DataProvider dataProvider = new ArrayDataProvider(new String[][]{ {"1", "Tom"}, {"2", "Lucy"} }); DataProviderCompiler compiler = new DataProviderCompiler(); String drl = compiler.compile(dataProvider, template); KieSession kieSession = getKieSessionByDrl(drl); Person person = new Person(1,""); kieSession.insert(person); kieSession.fireAllRules(); System.out.println("Person's username is " + person.getUsername()); }