rule "ReportableRule1"
dialect "mvel"
when
rp : repoio( country == null )
then
rp.setOrigBuySellFlag( "E" );
System.out.println("This is the exception of rule1");
end.
嗨史蒂夫,这是我们创建的示例规则。其他规则也几乎相同。
KieServices ks = KieServices.Factory.get();
KieContainer kContainer = ks.getKieClasspathContainer();
KieSession kSession = kContainer.newKieSession("ksession-rules");
当我们使用 KIE API 时,我的主要课程有此代码。是否有任何其他方式来设计快速处理的规则。下一个只是设置和获取。这是我设置和获取的主要课程。
public static final void main(String[] args) {
try {
// load up the knowledge base
KieServices ks = KieServices.Factory.get();
KieContainer kContainer = ks.getKieClasspathContainer();
KieSession kSession = kContainer.newKieSession("ksession-rules");
// go !
HRFReportableVO rp=new HRFReportableVO();
rp.setDefaultSystemFlag("true");
rp.setDefaultCntrPartyFlag("true");
rp.setSecurity("NL0010060257");
rp.setTradeType("SALES_TRADER");
rp.setTradeSubType("ALLOC_BLOCK");
rp.setBoClientAcctId("fsd");
rp.setSubtypec(null);
rp.setSysClientAccId("DROPCTL2");
rp.checkFutureDate("2013-12-27", "2012-01-03");
rp.setCountryOfInc("DEU");
rp.setTransactiontype("S");
String abc="-50.90";
double amount = Double.parseDouble(abc);
rp.setInvalidQuantity(amount);
rp.setActid("xsd");
rp.setDealerID("SBILGB2LXXX");
rp.setMonth(0);
rp.setYear(2012);
rp.setChecktrade(1);
rp.setCounterPart(14);
rp.setCountry("AFG");
rp.setSystem(14);
rp.matchDate("yyyy-MM-dd", "12-12-2013");
rp.checkDate("2013-12-12");
rp.setTypc("GOVT");
rp.setInsttypc("SEC");
//rp.setTradeDate(null);
//rp.setTradeDate(new Date(System.currentTimeMillis()));
rp.setOrigBuySellFlag("A");
rp.setLglEntyCd("2");
rp.setIscrcy("EUR");
rp.setIscntry("GBR");
rp.setGermany_reportable_flag("Y");
kSession.insert(rp);
kSession.fireAllRules();
System.out.println(rp.getExceptionDescription());
System.out.println(rp.getFlag());
} catch (Throwable t) {
t.printStackTrace();
}
}
我们已将 Drool 规则与 Talend ETL 集成。Talend ETL 开发人员说他已经通过使用类似于我在主类中显示的代码的 Setter 和 getters 方法将值传递给 Drool 规则。这里的问题是我们的经理说 Drool 将一条记录与规则进行比较,然后给出该记录的结果。他要求我以这样的方式更改代码,使 Drool 获取更多记录并大量给出结果,以便处理变得更快。