package com.hp.drools.odm.demo;
import java.util.ArrayList;
import org.drools.RuleBase;
import org.drools.StatefulSession;
import com.hp.drools.odm.DrlContent;
import com.hp.drools.odm.GlobalStatements;
import com.hp.drools.odm.ImportStatements;
import com.hp.drools.odm.RawRightHeadSide;
import com.hp.drools.odm.RightHeadSideStatementBuilder;
import com.hp.drools.odm.Rule;
import com.hp.drools.odm.SimpleAndLeftHeadSide;
import com.hp.drools.util.CollectionUtil;
import com.hp.drools.util.DroolsGlobal;
import com.hp.drools.util.DroolsRuleBaseCache;
import com.hp.drools.util.DroolsUtil;
import com.hp.drools.util.ICollectionObjectJob;
public class Demo {
@SuppressWarnings("unchecked")
public static void main(String[] args) {
// initial fact object
Lot lot1 = new Lot();
lot1.setLotId("A001.1");
lot1.setStatus("running");
lot1.setWaferQty(new Integer(24));
Lot lot2 = new Lot();
lot2.setLotId("A002.1");
lot2.setStatus("Wait NP");
lot2.setWaferQty(new Integer(25));
Stage stage1 = new Stage();
stage1.setStageId("S001.1");
stage1.setName("mask");
Stage stage2 = new Stage();
stage2.setStageId("S002.1");
stage2.setName("wash");
// construct rule content
ImportStatements importStatements = new ImportStatements();
importStatements.addImportClass(Lot.class);
importStatements.addImportClass(Stage.class);
importStatements.addImportClass(ActionB.class);
GlobalStatements globalStatements = new GlobalStatements();
ArrayList actionExecuteRule1 = new ArrayList();
globalStatements.addGlobalVariable("actionExecuteRule1", actionExecuteRule1.getClass());
SimpleAndLeftHeadSide lhs = new SimpleAndLeftHeadSide();
ArrayList lotWaferQtys = new ArrayList();
lotWaferQtys.add(new Integer(24));
lotWaferQtys.add(new Integer(25));
ArrayList lotIds = new ArrayList();
lotIds.add("A001.1");
lotIds.add("A002.1");
lhs.addConditionElement(new Question("lot", "Lot", "status", "==", "running").convertToDrlConditionElement());
//lhs.addConditionElement(new Question("lot1", "Lot", "waferQty", ">=", new Integer(24)).convertToDrlConditionElement());
//lhs.addConditionElement(new Question(null, "Lot", "waferQty", "in", lotWaferQtys).convertToDrlConditionElement());
lhs.addConditionElement(new Question(null, "Lot", "lotId", "not in", lotIds).convertToDrlConditionElement());
lhs.addConditionElement(new Question("stage", "Stage", "name", "==", "wash").convertToDrlConditionElement());
RightHeadSideStatementBuilder rightHeadSideStatementBuilder
= new RightHeadSideStatementBuilder();
rightHeadSideStatementBuilder.addStatment("System.out.println(\"lot.id=\" + $lot.getLotId());");
rightHeadSideStatementBuilder.addStatment("System.out.println(\"lot.status=\" + $lot.getStatus());");
rightHeadSideStatementBuilder.addStatment("System.out.println(\"lot.waferQty=\" + $lot.getWaferQty());");
// rightHeadSideStatementBuilder.addStatment("System.out.println(\"lot1.id=\" + $lot.getLotId());");
// rightHeadSideStatementBuilder.addStatment("System.out.println(\"lot1.status=\" + $lot1.getStatus());");
// rightHeadSideStatementBuilder.addStatment("System.out.println(\"lot1.waferQty=\" + $lot1.getWaferQty());");
rightHeadSideStatementBuilder.addStatment("System.out.println(\"stage.id=\" + $stage.getStageId());");
rightHeadSideStatementBuilder.addStatment("System.out.println(\"stage.name=\" + $stage.getName());");
rightHeadSideStatementBuilder.addStatment("actionExecuteRule1.add(new ActionB());");
RawRightHeadSide rhs = new RawRightHeadSide(rightHeadSideStatementBuilder.toString());
Rule rule = new Rule("Auto Generate Rule", lhs, rhs);
DrlContent drlContent = new DrlContent("com.hp.drools.odm.demo");
drlContent.setImportStatements(importStatements);
drlContent.setGlobalStatements(globalStatements);
drlContent.addRule(rule);
System.out.println(drlContent.convertToDrlContent());
// fire rule to run
String ruleBaseKey = "demo";
RuleBase ruleBase = DroolsRuleBaseCache.addRuleBaseByContent(ruleBaseKey,
new String[] {drlContent.convertToDrlContent()});
StatefulSession statefulSession = DroolsUtil.getSession(ruleBase);
DroolsGlobal actionExecuteRule1Global = new DroolsGlobal();
actionExecuteRule1Global.setVariableName("actionExecuteRule1");
actionExecuteRule1Global.setVariableObject(actionExecuteRule1);
DroolsUtil.setGlobal(statefulSession, actionExecuteRule1Global);
DroolsUtil.insertFact(statefulSession, lot1);
DroolsUtil.insertFact(statefulSession, lot2);
DroolsUtil.insertFact(statefulSession, stage1);
DroolsUtil.insertFact(statefulSession, stage2);
DroolsUtil.fireAllRules(statefulSession);
CollectionUtil.doJobForEachObject(actionExecuteRule1, new ICollectionObjectJob() {
public void job(int objectIndex, Object objectInCollection) {
AbstractAction action = (AbstractAction) objectInCollection;
action.action();
}
});
DroolsUtil.dispose(statefulSession);
// lhs = new SimpleAndLeftHeadSide();
// lhs.addConditionElement(new Question("lot", "Lot", "status", "==", "Wait NP").convertToDrlConditionElement());
// lhs.addConditionElement(new Question(null, "Lot", "waferQty", ">=", new Integer(24)).convertToDrlConditionElement());
// lhs.addConditionElement(new Question("stage", "Stage", "name", "==", "mask").convertToDrlConditionElement());
//
// rule.setLhs(lhs);
//
// System.out.println(drlContent.convertToDrlContent());
//
//
// actionExecuteRule1.clear();
//
// // fire rule to run
// ruleBaseKey = "demo";
// ruleBase = DroolsRuleBaseCache.refreshRuleBaseByContent(ruleBaseKey,
// new String[] {drlContent.convertToDrlContent()});
//
// statefulSession = DroolsUtil.getSession(ruleBase);
//
// actionExecuteRule1Global = new DroolsGlobal();
// actionExecuteRule1Global.setVariableName("actionExecuteRule1");
// actionExecuteRule1Global.setVariableObject(actionExecuteRule1);
// DroolsUtil.setGlobal(statefulSession, actionExecuteRule1Global);
//
// DroolsUtil.insertFact(statefulSession, lot1);
// DroolsUtil.insertFact(statefulSession, lot2);
// DroolsUtil.insertFact(statefulSession, stage1);
// DroolsUtil.insertFact(statefulSession, stage2);
//
// DroolsUtil.fireAllRules(statefulSession);
//
// CollectionUtil.doJobForEachObject(actionExecuteRule1, new ICollectionObjectJob() {
//
// public void job(int objectIndex, Object objectInCollection) {
// AbstractAction action = (AbstractAction) objectInCollection;
// action.action();
// }
// });
//
// DroolsUtil.dispose(statefulSession);
}
}
没有合适的资源?快使用搜索试试~ 我知道了~
资源详情
资源评论
资源推荐
收起资源包目录
Drools.rar (84个子文件)
Drools
.project 382B
bin
src
com
hp
drools
exception
DroolsException.java 285B
odm
ObjectTypeExpression.java 205B
AbstractLeftHeadSide.java 127B
SimpleAndLeftHeadSide.java 1KB
RawRightHeadSide.java 660B
Rule.java 2KB
ObjectTypeRawExpression.java 606B
DrlContent.java 3KB
ObjectTypeInExpression.java 3KB
RightHeadSideStatementBuilder.java 438B
ObjectTypeLiteralExpression.java 5KB
GlobalStatements.java 1KB
AbstractConditionElement.java 2KB
ImportStatements.java 1KB
Operator.java 665B
AbstractRightHeadSide.java 128B
demo
ActionA.java 154B
ActionC.java 154B
Demo.java 7KB
Stage.java 348B
ActionB.java 154B
Question.java 2KB
AbstractAction.java 112B
Lot.java 510B
util
DroolsUtil.java 2KB
DroolsGlobal.java 462B
StringUtil.java 179B
TimeDebug.java 771B
CollectionUtil.java 656B
DroolsRuleBaseCache.java 5KB
ICollectionObjectJob.java 139B
demo
attribute
Duration.java 912B
NoLoop.java 855B
ActivationGroup.java 882B
AgendaGroup.java 870B
Salience.java 861B
bean
Address.java 1KB
Person.java 1KB
Car.java 854B
rhs
Query.java 1024B
lhs
ObjectEqual.java 858B
LogicCircuit.java 714B
Exists.java 845B
Forall.java 946B
From.java 1KB
MemberOf.java 1KB
Pattern.java 846B
Contains.java 1KB
Matches.java 846B
BeanMethodCall.java 867B
DateCompare.java 1KB
MultiRestriction.java 875B
In.java 833B
Global.java 2KB
odm
Comment.java 697B
drl
attribute
Salience.drl 612B
Duration.drl 420B
ActivationGroup.drl 658B
NoLoop.drl 355B
AgendaGroup.drl 421B
rhs
Query.drl 263B
lhs
In.drl 227B
ObjectEqual.drl 252B
Contains.drl 518B
Forall.drl 342B
DateCompare.drl 394B
Matches.drl 315B
MultiRestriction.drl 340B
Pattern.drl 450B
From.drl 254B
Exists.drl 239B
BeanMethodCall.drl 335B
LogicCircuit.drl 267B
MemberOf.drl 523B
Comment.drl 233B
Function.drl 544B
Global.drl 504B
odm
Address.drl 0B
Global2.drl 334B
Function.java 696B
service
impl
MailServiceImpl.java 233B
MailService.java 98B
.classpath 1KB
lib
共 84 条
- 1
cowboy1114
- 粉丝: 0
- 资源: 10
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
评论0