This commit is contained in:
Nicolas Héron 2016-05-17 14:49:41 +02:00
commit c9209dc9a5
105 changed files with 2390 additions and 839 deletions

View file

@ -1,34 +1,34 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<module org.jetbrains.idea.maven.project.MavenProjectsManager.isMavenModule="true" type="JAVA_MODULE" version="4"> <module org.jetbrains.idea.maven.project.MavenProjectsManager.isMavenModule="true" type="JAVA_MODULE" version="4">
<component name="NewModuleRootManager" inherit-compiler-output="false"> <component name="NewModuleRootManager" LANGUAGE_LEVEL="JDK_1_7" inherit-compiler-output="false">
<output url="file://$MODULE_DIR$/target/classes" /> <output url="file://$MODULE_DIR$/target/classes" />
<output-test url="file://$MODULE_DIR$/target/test-classes" /> <output-test url="file://$MODULE_DIR$/target/test-classes" />
<content url="file://$MODULE_DIR$"> <content url="file://$MODULE_DIR$">
<sourceFolder url="file://$MODULE_DIR$/src/main/java" isTestSource="false" /> <sourceFolder url="file://$MODULE_DIR$/src/main/java" isTestSource="false" />
<sourceFolder url="file://$MODULE_DIR$/src/test/java" isTestSource="true" /> <sourceFolder url="file://$MODULE_DIR$/src/test/java" isTestSource="true" />
<sourceFolder url="file://$MODULE_DIR$/src/test/resources" type="java-test-resource" /> <sourceFolder url="file://$MODULE_DIR$/src/test/resources" type="java-test-resource" />
<sourceFolder url="file://$MODULE_DIR$/src/main/resources" type="java-resource" />
<excludeFolder url="file://$MODULE_DIR$/target" /> <excludeFolder url="file://$MODULE_DIR$/target" />
</content> </content>
<orderEntry type="inheritedJdk" /> <orderEntry type="inheritedJdk" />
<orderEntry type="sourceFolder" forTests="false" /> <orderEntry type="sourceFolder" forTests="false" />
<orderEntry type="library" name="Maven: org.drools:drools-compiler:5.6.0.Final" level="project" /> <orderEntry type="library" name="Maven: org.drools:drools-compiler:6.4.0.Final" level="project" />
<orderEntry type="library" name="Maven: org.drools:drools-core:5.6.0.Final" level="project" /> <orderEntry type="library" name="Maven: org.drools:drools-core:6.4.0.Final" level="project" />
<orderEntry type="library" name="Maven: org.drools:knowledge-api:5.6.0.Final" level="project" /> <orderEntry type="library" name="Maven: commons-codec:commons-codec:1.4" level="project" />
<orderEntry type="library" name="Maven: org.drools:knowledge-internal-api:5.6.0.Final" level="project" /> <orderEntry type="library" name="Maven: org.kie:kie-internal:6.4.0.Final" level="project" />
<orderEntry type="library" name="Maven: org.antlr:antlr-runtime:3.3" level="project" /> <orderEntry type="library" name="Maven: org.antlr:antlr-runtime:3.5" level="project" />
<orderEntry type="library" name="Maven: org.antlr:antlr:3.3" level="project" /> <orderEntry type="library" name="Maven: org.mvel:mvel2:2.2.8.Final" level="project" />
<orderEntry type="library" name="Maven: org.antlr:stringtemplate:3.2.1" level="project" /> <orderEntry type="library" name="Maven: com.thoughtworks.xstream:xstream:1.4.7" level="project" />
<orderEntry type="library" name="Maven: antlr:antlr:2.7.7" level="project" />
<orderEntry type="library" name="Maven: org.mvel:mvel2:2.1.8.Final" level="project" />
<orderEntry type="library" name="Maven: com.thoughtworks.xstream:xstream:1.4.1" level="project" />
<orderEntry type="library" name="Maven: xmlpull:xmlpull:1.1.3.1" level="project" /> <orderEntry type="library" name="Maven: xmlpull:xmlpull:1.1.3.1" level="project" />
<orderEntry type="library" name="Maven: xpp3:xpp3_min:1.1.4c" level="project" /> <orderEntry type="library" name="Maven: xpp3:xpp3_min:1.1.4c" level="project" />
<orderEntry type="library" name="Maven: org.slf4j:slf4j-api:1.6.4" level="project" /> <orderEntry type="library" name="Maven: com.google.protobuf:protobuf-java:2.6.0" level="project" />
<orderEntry type="library" name="Maven: org.slf4j:slf4j-api:1.7.2" level="project" />
<orderEntry type="library" name="Maven: org.eclipse.jdt.core.compiler:ecj:3.5.1" level="project" /> <orderEntry type="library" name="Maven: org.eclipse.jdt.core.compiler:ecj:3.5.1" level="project" />
<orderEntry type="library" name="Maven: org.jbpm:jbpm-bpmn2:5.5.0.Final" level="project" /> <orderEntry type="library" name="Maven: org.jbpm:jbpm-bpmn2:6.4.0.Final" level="project" />
<orderEntry type="library" name="Maven: org.jbpm:jbpm-flow-builder:5.5.0.Final" level="project" /> <orderEntry type="library" name="Maven: org.jbpm:jbpm-flow-builder:6.4.0.Final" level="project" />
<orderEntry type="library" name="Maven: org.jbpm:jbpm-flow:5.5.0.Final" level="project" /> <orderEntry type="library" name="Maven: org.jbpm:jbpm-flow:6.4.0.Final" level="project" />
<orderEntry type="library" name="Maven: com.google.protobuf:protobuf-java:2.5.0" level="project" /> <orderEntry type="library" name="Maven: joda-time:joda-time:2.2" level="project" />
<orderEntry type="library" scope="TEST" name="Maven: junit:junit:4.5" level="project" /> <orderEntry type="library" scope="TEST" name="Maven: junit:junit:4.5" level="project" />
<orderEntry type="library" name="Maven: org.kie:kie-api:6.4.0.Final" level="project" />
</component> </component>
</module> </module>

View file

@ -0,0 +1,33 @@
<?xml version="1.0" encoding="UTF-8"?>
<module org.jetbrains.idea.maven.project.MavenProjectsManager.isMavenModule="true" type="JAVA_MODULE" version="4">
<component name="NewModuleRootManager" LANGUAGE_LEVEL="JDK_1_7" inherit-compiler-output="false">
<output url="file://$MODULE_DIR$/target/classes" />
<output-test url="file://$MODULE_DIR$/target/test-classes" />
<content url="file://$MODULE_DIR$">
<sourceFolder url="file://$MODULE_DIR$/src/main/java" isTestSource="false" />
<sourceFolder url="file://$MODULE_DIR$/src/main/resources" type="java-resource" />
<sourceFolder url="file://$MODULE_DIR$/src/test/java" isTestSource="true" />
<excludeFolder url="file://$MODULE_DIR$/target" />
</content>
<orderEntry type="inheritedJdk" />
<orderEntry type="sourceFolder" forTests="false" />
<orderEntry type="library" name="Maven: org.drools:drools-compiler:6.4.0.Final" level="project" />
<orderEntry type="library" name="Maven: org.drools:drools-core:6.4.0.Final" level="project" />
<orderEntry type="library" name="Maven: commons-codec:commons-codec:1.4" level="project" />
<orderEntry type="library" name="Maven: org.kie:kie-internal:6.4.0.Final" level="project" />
<orderEntry type="library" name="Maven: org.antlr:antlr-runtime:3.5" level="project" />
<orderEntry type="library" name="Maven: org.mvel:mvel2:2.2.8.Final" level="project" />
<orderEntry type="library" name="Maven: com.thoughtworks.xstream:xstream:1.4.7" level="project" />
<orderEntry type="library" name="Maven: xmlpull:xmlpull:1.1.3.1" level="project" />
<orderEntry type="library" name="Maven: xpp3:xpp3_min:1.1.4c" level="project" />
<orderEntry type="library" name="Maven: com.google.protobuf:protobuf-java:2.6.0" level="project" />
<orderEntry type="library" name="Maven: org.slf4j:slf4j-api:1.7.2" level="project" />
<orderEntry type="library" name="Maven: org.eclipse.jdt.core.compiler:ecj:3.5.1" level="project" />
<orderEntry type="library" name="Maven: org.jbpm:jbpm-bpmn2:6.4.0.Final" level="project" />
<orderEntry type="library" name="Maven: org.jbpm:jbpm-flow-builder:6.4.0.Final" level="project" />
<orderEntry type="library" name="Maven: org.jbpm:jbpm-flow:6.4.0.Final" level="project" />
<orderEntry type="library" name="Maven: joda-time:joda-time:2.2" level="project" />
<orderEntry type="library" scope="TEST" name="Maven: junit:junit:4.5" level="project" />
<orderEntry type="library" name="Maven: org.kie:kie-api:6.4.0.Final" level="project" />
</component>
</module>

View file

@ -0,0 +1,38 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://maven.apache.org/POM/4.0.0"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<parent>
<artifactId>AccountProject</artifactId>
<groupId>com.pymma-software.droolscourse</groupId>
<version>2.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>drools-lesson-pojo</artifactId>
<dependencies>
<dependency>
<groupId>org.drools</groupId>
<artifactId>drools-compiler</artifactId>
</dependency>
<dependency>
<groupId>org.eclipse.jdt.core.compiler</groupId>
<artifactId>ecj</artifactId>
</dependency>
<dependency>
<groupId>org.jbpm</groupId>
<artifactId>jbpm-bpmn2</artifactId>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.kie</groupId>
<artifactId>kie-api</artifactId>
</dependency>
</dependencies>
</project>

View file

@ -0,0 +1,45 @@
package droolscours;
public class Account {
private long accountno;
private double balance;
public Account(long accountno, double balance) {
super();
this.accountno = accountno;
this.balance = balance;
}
public Account() {
super();
// TODO Auto-generated constructor stub
}
public long getAccountno() {
return accountno;
}
public void setAccountno(long accountno) {
this.accountno = accountno;
}
public double getBalance() {
return balance;
}
public void setBalance(double balance) {
this.balance = balance;
}
@Override
public String toString() {
// TODO Auto-generated method stub
StringBuffer buff = new StringBuffer();
buff.append("-----Account-----)\n");
buff.append("Account no " + this.accountno + "\n");
buff.append("Balance " + this.balance + "\n");
buff.append("-----End Account-)");
return buff.toString();
}
}

View file

@ -0,0 +1,59 @@
package droolscours;
import java.text.DateFormat;
import java.util.Date;
public class AccountingPeriod {
private Date startDate;
private Date endDate;
public AccountingPeriod() {
super();
// TODO Auto-generated constructor stub
}
public AccountingPeriod(Date startDate, Date endDate) {
super();
this.startDate = startDate;
this.endDate = endDate;
}
public Date getStartDate() {
return startDate;
}
public void setStartDate(Date start) {
this.startDate = start;
}
public Date getEndDate() {
return endDate;
}
public void setEndDate(Date end) {
this.endDate = end;
}
@Override
public String toString() {
// TODO Auto-generated method stub
StringBuffer buff = new StringBuffer();
buff.append("-----AccountingPeriod-----)\n");
if (this.startDate != null) {
buff.append("StartDate "
+ DateFormat.getDateInstance().format(this.startDate)
+ "\n");
} else {
buff.append("No start date was set\n");
}
if (this.endDate != null) {
buff.append("EndDate "
+ DateFormat.getDateInstance().format(this.endDate) + "\n");
} else {
buff.append("No ens date was set\n");
}
buff.append("-----End AccountingPeriod -)");
return buff.toString();
}
}

View file

@ -0,0 +1,78 @@
package droolscours;
import java.text.DateFormat;
import java.util.Date;
public class CashFlow {
public static int CREDIT = 1;
public static int DEBIT = 2;
private Date mvtDate;
private double amount;
private int type;
private long accountNo;
public CashFlow(Date mvtDate, double amount, int type, long accountNo) {
super();
this.mvtDate = mvtDate;
this.amount = amount;
this.type = type;
this.accountNo = accountNo;
}
public CashFlow() {
super();
// TODO Auto-generated constructor stub
}
public Date getMvtDate() {
return mvtDate;
}
public void setMvtDate(Date date) {
this.mvtDate = date;
}
public double getAmount() {
return amount;
}
public void setAmount(double amount) {
this.amount = amount;
}
public int getType() {
return type;
}
public void setType(int type) {
this.type = type;
}
public long getAccountNo() {
return accountNo;
}
public void setAccountNo(long accountNo) {
this.accountNo = accountNo;
}
@Override
public String toString() {
// TODO Auto-generated method stub
StringBuffer buff = new StringBuffer();
buff.append("-----CashFlow-----)\n");
buff.append("Account no=" + this.accountNo + "\n");
if (this.mvtDate != null) {
buff.append("Mouvement Date= "
+ DateFormat.getDateInstance().format(this.mvtDate)
+ "\n");
} else {
buff.append("No Mouvement date was set\n");
}
buff.append("Mouvement Amount=" + this.amount + "\n");
buff.append("-----CashFlow end--)");
return buff.toString();
}
}

View file

@ -0,0 +1,55 @@
package droolscours;
public class Customer {
private String name;
private String surname;
private String country;
public Customer(String name, String surname, String country) {
super();
this.name = name;
this.surname = surname;
this.country = country;
}
public Customer() {
super();
// TODO Auto-generated constructor stub
}
public String getCountry() {
return country;
}
public void setCountry(String country) {
this.country = country;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getSurname() {
return surname;
}
public void setSurname(String surname) {
this.surname = surname;
}
@Override
public String toString() {
StringBuffer buff = new StringBuffer();
buff.append("-----Customer-----)\n");
buff.append("Name=" + this.name + "\n");
buff.append("Surname Name=" + this.surname + "\n");
buff.append("Country=" + this.country + "\n");
buff.append("-----Customer end-)");
return buff.toString();
}
}

View file

@ -0,0 +1,25 @@
package droolscours;
public class PrivateAccount extends Account {
private Customer owner;
public Customer getOwner() {
return owner;
}
public void setOwner(Customer owner) {
this.owner = owner;
}
@Override
public String toString() {
StringBuffer buff = new StringBuffer();
buff.append("-----Private Account-)");
buff.append(super.toString());
if (this.owner != null) {
buff.append(this.owner.toString());
}
buff.append("-----Private Account end-)");
return buff.toString();
}
}

View file

@ -0,0 +1,18 @@
package droolscours.service;
import droolscours.Customer;
import java.util.ArrayList;
import java.util.List;
public class CustomerService {
public List<Customer> getListCustomer() {
List<Customer> result = new ArrayList<Customer>();
result.add(new Customer("Héron", "Nicolas", "Fr"));
result.add(new Customer("Héron", "James", "GB"));
result.add(new Customer("Héron", "Nicolas", "GB"));
return result;
}
}

View file

@ -0,0 +1,12 @@
package droolscours.util;
public class OutputDisplay {
public OutputDisplay() {
}
public void showText(String someText) {
long time = System.currentTimeMillis();
System.out.println("time=" + time + "-" + someText);
}
}

View file

@ -0,0 +1,19 @@
package util;
import java.text.SimpleDateFormat;
import java.util.Date;
public class DateHelper {
public static String sFormat = "yyyy-MM-dd";
public static Date getDate(String sDate) throws Exception {
SimpleDateFormat sdf = new SimpleDateFormat(sFormat);
return sdf.parse(sDate);
}
public static Date getDate(String sDate, String anotherFormat)
throws Exception {
SimpleDateFormat sdf = new SimpleDateFormat(anotherFormat);
return sdf.parse(sDate);
}
}

View file

@ -0,0 +1,105 @@
package util;
import org.kie.api.KieServices;
import org.kie.api.event.rule.*;
import org.kie.api.runtime.KieContainer;
import org.kie.api.runtime.KieSession;
import org.kie.api.runtime.StatelessKieSession;
public class KnowledgeSessionHelper {
public static KieContainer createRuleBase() {
KieServices ks = KieServices.Factory.get();
KieContainer kieContainer = ks.getKieClasspathContainer();
return kieContainer;
}
public static StatelessKieSession getStatelessKnowledgeSession(KieContainer kieContainer, String sessionName) {
StatelessKieSession kSession = kieContainer.newStatelessKieSession(sessionName);
return kSession;
}
public static KieSession getStatefulKnowledgeSession(KieContainer kieContainer, String sessionName) {
KieSession kSession = kieContainer.newKieSession(sessionName);
return kSession;
}
public static KieSession getStatefulKnowledgeSessionWithCallback(
KieContainer kieContainer, String sessionName) {
KieSession session = getStatefulKnowledgeSession(kieContainer, sessionName);
session.addEventListener(new RuleRuntimeEventListener() {
public void objectInserted(ObjectInsertedEvent event) {
System.out.println("Object inserted \n"
+ event.getObject().toString());
}
public void objectUpdated(ObjectUpdatedEvent event) {
System.out.println("Object was updated \n"
+ "new Content \n" + event.getObject().toString());
}
public void objectDeleted(ObjectDeletedEvent event) {
System.out.println("Object retracted \n"
+ event.getOldObject().toString());
}
});
session.addEventListener(new AgendaEventListener() {
public void matchCreated(MatchCreatedEvent event) {
System.out.println("The rule "
+ event.getMatch().getRule().getName()
+ " can be fired in agenda");
}
public void matchCancelled(MatchCancelledEvent event) {
System.out.println("The rule "
+ event.getMatch().getRule().getName()
+ " cannot b in agenda");
}
public void beforeMatchFired(BeforeMatchFiredEvent event) {
System.out.println("The rule "
+ event.getMatch().getRule().getName()
+ " will be fired");
}
public void afterMatchFired(AfterMatchFiredEvent event) {
System.out.println("The rule "
+ event.getMatch().getRule().getName()
+ " has be fired");
}
public void agendaGroupPopped(AgendaGroupPoppedEvent event) {
}
public void agendaGroupPushed(AgendaGroupPushedEvent event) {
}
public void beforeRuleFlowGroupActivated(RuleFlowGroupActivatedEvent event) {
}
public void afterRuleFlowGroupActivated(RuleFlowGroupActivatedEvent event) {
}
public void beforeRuleFlowGroupDeactivated(RuleFlowGroupDeactivatedEvent event) {
}
public void afterRuleFlowGroupDeactivated(RuleFlowGroupDeactivatedEvent event) {
}
});
return session;
}
}

View file

@ -0,0 +1,35 @@
<?xml version="1.0" encoding="UTF-8"?>
<module org.jetbrains.idea.maven.project.MavenProjectsManager.isMavenModule="true" type="JAVA_MODULE" version="4">
<component name="NewModuleRootManager" LANGUAGE_LEVEL="JDK_1_7" inherit-compiler-output="false">
<output url="file://$MODULE_DIR$/target/classes" />
<output-test url="file://$MODULE_DIR$/target/test-classes" />
<content url="file://$MODULE_DIR$">
<sourceFolder url="file://$MODULE_DIR$/src/main/java" isTestSource="false" />
<sourceFolder url="file://$MODULE_DIR$/src/main/resources" type="java-resource" />
<sourceFolder url="file://$MODULE_DIR$/src/test/java" isTestSource="true" />
<excludeFolder url="file://$MODULE_DIR$/target" />
<excludeFolder url="file://$MODULE_DIR$/../../drools-lesson1/target" />
</content>
<orderEntry type="inheritedJdk" />
<orderEntry type="sourceFolder" forTests="false" />
<orderEntry type="library" name="Maven: org.drools:drools-compiler:6.4.0.Final" level="project" />
<orderEntry type="library" name="Maven: org.drools:drools-core:6.4.0.Final" level="project" />
<orderEntry type="library" name="Maven: commons-codec:commons-codec:1.4" level="project" />
<orderEntry type="library" name="Maven: org.kie:kie-internal:6.4.0.Final" level="project" />
<orderEntry type="library" name="Maven: org.antlr:antlr-runtime:3.5" level="project" />
<orderEntry type="library" name="Maven: org.mvel:mvel2:2.2.8.Final" level="project" />
<orderEntry type="library" name="Maven: com.thoughtworks.xstream:xstream:1.4.7" level="project" />
<orderEntry type="library" name="Maven: xmlpull:xmlpull:1.1.3.1" level="project" />
<orderEntry type="library" name="Maven: xpp3:xpp3_min:1.1.4c" level="project" />
<orderEntry type="library" name="Maven: com.google.protobuf:protobuf-java:2.6.0" level="project" />
<orderEntry type="library" name="Maven: org.slf4j:slf4j-api:1.7.2" level="project" />
<orderEntry type="library" name="Maven: org.eclipse.jdt.core.compiler:ecj:3.5.1" level="project" />
<orderEntry type="library" name="Maven: org.jbpm:jbpm-bpmn2:6.4.0.Final" level="project" />
<orderEntry type="library" name="Maven: org.jbpm:jbpm-flow-builder:6.4.0.Final" level="project" />
<orderEntry type="library" name="Maven: org.jbpm:jbpm-flow:6.4.0.Final" level="project" />
<orderEntry type="library" name="Maven: joda-time:joda-time:2.2" level="project" />
<orderEntry type="library" scope="TEST" name="Maven: junit:junit:4.5" level="project" />
<orderEntry type="library" name="Maven: org.kie:kie-api:6.4.0.Final" level="project" />
<orderEntry type="module" module-name="drools-lesson-pojo" />
</component>
</module>

View file

@ -0,0 +1,43 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://maven.apache.org/POM/4.0.0"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<parent>
<artifactId>AccountProject</artifactId>
<groupId>com.pymma-software.droolscourse</groupId>
<version>2.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>drools-lesson1</artifactId>
<dependencies>
<dependency>
<groupId>org.drools</groupId>
<artifactId>drools-compiler</artifactId>
</dependency>
<dependency>
<groupId>org.eclipse.jdt.core.compiler</groupId>
<artifactId>ecj</artifactId>
</dependency>
<dependency>
<groupId>org.jbpm</groupId>
<artifactId>jbpm-bpmn2</artifactId>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.kie</groupId>
<artifactId>kie-api</artifactId>
</dependency>
<dependency>
<groupId>com.pymma-software.droolscourse</groupId>
<artifactId>drools-lesson-pojo</artifactId>
<version>${project.version}</version>
</dependency>
</dependencies>
</project>

View file

@ -0,0 +1,8 @@
<?xml version="1.0" encoding="UTF-8"?>
<kmodule xmlns="http://jboss.org/kie/6.0.0/kmodule">
<kbase name="lesson1" packages="lesson1">
<ksession name="lesson1-session"/>
</kbase>
</kmodule>

View file

@ -0,0 +1,52 @@
//#created on: 30 oct. 2010
package cours
//list any import classes here.
import droolscours.Account;
import droolscours.Customer;
import droolscours.AccountingPeriod;
import droolscours.PrivateAccount;
import droolscours.CashFlow;
import droolscours.util.OutputDisplay;
//declare any global variables here
global OutputDisplay showResult;
rule "Your First Rule"
when
Account( )
then
System.out.println("The bank account exists");
end
rule "Your First Rule revisited with Global"
when
Customer()
then
showResult.showText("A customer exists");
end
rule "Your First Rule revisited AccountingPeriod"
when
CashFlow( )
then
showResult.showText("The CashFlow exists, inserting an accounting Period");
AccountingPeriod newPeriod = new AccountingPeriod();
insert (newPeriod);
end
rule "Rule on AccountingPeriod that are inserting"
when
AccountingPeriod ()
then
showResult.showText("Accounting period exists");
end

View file

@ -0,0 +1,163 @@
package droolscours;
import droolscours.util.OutputDisplay;
import org.junit.BeforeClass;
import org.junit.Test;
import org.kie.api.event.rule.ObjectDeletedEvent;
import org.kie.api.event.rule.ObjectInsertedEvent;
import org.kie.api.event.rule.ObjectUpdatedEvent;
import org.kie.api.event.rule.RuleRuntimeEventListener;
import org.kie.api.runtime.KieContainer;
import org.kie.api.runtime.KieSession;
import org.kie.api.runtime.StatelessKieSession;
import org.kie.api.runtime.rule.FactHandle;
import util.KnowledgeSessionHelper;
public class Testlesson1 {
static KieContainer kieContainer;
StatelessKieSession sessionStateless = null;
KieSession sessionStatefull = null;
@BeforeClass
public static void beforeClass() {
kieContainer = KnowledgeSessionHelper.createRuleBase();
}
@Test
public void testRuleOneFactWithoutFact() {
sessionStatefull = KnowledgeSessionHelper
.getStatefulKnowledgeSession(kieContainer, "lesson1-session");
sessionStatefull.fireAllRules();
System.out.println("Did you see something ?");
}
@Test
public void testRuleOneFactWithFact() {
sessionStatefull = KnowledgeSessionHelper
.getStatefulKnowledgeSession(kieContainer, "lesson1-session");
Account a = new Account();
sessionStatefull.insert(a);
sessionStatefull.fireAllRules();
System.out.println("So you saw something ;)");
}
@Test
public void testRuleOneFactWithFactAndUsageOfGlobal() {
sessionStatefull = KnowledgeSessionHelper
.getStatefulKnowledgeSession(kieContainer, "lesson1-session");
Customer a = new Customer();
OutputDisplay display = new OutputDisplay();
sessionStatefull.setGlobal("showResult", display);
sessionStatefull.insert(a);
sessionStatefull.fireAllRules();
System.out.println("So you saw something ;)");
}
@Test
public void testRuleOneFactWithFactAndUsageOfGlobalAndCallBack() {
sessionStatefull = KnowledgeSessionHelper
.getStatefulKnowledgeSession(kieContainer, "lesson1-session");
sessionStatefull.addEventListener(new RuleRuntimeEventListener() {
public void objectInserted(ObjectInsertedEvent event) {
System.out.println("Object inserted \n"
+ event.getObject().toString());
}
public void objectUpdated(ObjectUpdatedEvent event) {
System.out.println("Object was updated \n"
+ "new Content \n" + event.getObject().toString());
}
public void objectDeleted(ObjectDeletedEvent event) {
System.out.println("Object retracted \n"
+ event.getOldObject().toString());
}
});
Customer a = new Customer();
a.setName("Heron");
FactHandle handlea = sessionStatefull.insert(a);
a.setSurname("Nicolas");
sessionStatefull.update(handlea, a);
sessionStatefull.delete(handlea);
sessionStatefull.fireAllRules();
System.out.println("So you saw something ;)");
}
@Test
public void testRuleOneFactFireConditionStep1() {
sessionStatefull = KnowledgeSessionHelper
.getStatefulKnowledgeSession(kieContainer, "lesson1-session");
Account a = new Account();
FactHandle handlea = sessionStatefull.insert(a);
System.out.println("First fireAllRules");
sessionStatefull.fireAllRules();
System.out.println("Second fireAllRules");
sessionStatefull.fireAllRules();
System.out.println("Did A rule be fired");
}
@Test
public void testRuleOneFactFireConditionStep2() {
sessionStatefull = KnowledgeSessionHelper
.getStatefulKnowledgeSession(kieContainer, "lesson1-session");
Account a = new Account();
FactHandle handlea = sessionStatefull.insert(a);
System.out.println("First fireAllRules");
sessionStatefull.fireAllRules();
System.out.println("Updating fact");
sessionStatefull.update(handlea, a);
System.out.println("Second fireAllRules");
sessionStatefull.fireAllRules();
System.out.println("Did A rule be fired");
}
@Test
public void testRuleOneFactThatInsertObject() {
sessionStatefull = KnowledgeSessionHelper
.getStatefulKnowledgeSession(kieContainer, "lesson1-session");
OutputDisplay display = new OutputDisplay();
sessionStatefull.setGlobal("showResult", display);
sessionStatefull.addEventListener(new RuleRuntimeEventListener() {
public void objectInserted(ObjectInsertedEvent event) {
System.out.println("Object inserted \n"
+ event.getObject().toString());
}
public void objectUpdated(ObjectUpdatedEvent event) {
System.out.println("Object was updated \n"
+ "new Content \n" + event.getObject().toString());
}
public void objectDeleted(ObjectDeletedEvent event) {
System.out.println("Object retracted \n"
+ event.getOldObject().toString());
}
});
CashFlow a = new CashFlow();
FactHandle handlea = sessionStatefull.insert(a);
sessionStatefull.fireAllRules();
}
@Test
public void testRuleOneFactWithFactAndAllCallbacks() {
sessionStatefull = KnowledgeSessionHelper
.getStatefulKnowledgeSessionWithCallback(kieContainer, "lesson1-session");
OutputDisplay display = new OutputDisplay();
sessionStatefull.setGlobal("showResult", display);
Account a = new Account();
sessionStatefull.insert(a);
sessionStatefull.fireAllRules();
CashFlow b = new CashFlow();
FactHandle handlea = sessionStatefull.insert(b);
sessionStatefull.fireAllRules();
System.out.println("So you saw something ;)");
}
}

View file

@ -0,0 +1,34 @@
<?xml version="1.0" encoding="UTF-8"?>
<module org.jetbrains.idea.maven.project.MavenProjectsManager.isMavenModule="true" version="4">
<component name="NewModuleRootManager" LANGUAGE_LEVEL="JDK_1_7" inherit-compiler-output="false">
<output url="file://$MODULE_DIR$/target/classes" />
<output-test url="file://$MODULE_DIR$/target/test-classes" />
<content url="file://$MODULE_DIR$">
<sourceFolder url="file://$MODULE_DIR$/src/main/java" isTestSource="false" />
<sourceFolder url="file://$MODULE_DIR$/src/main/resources" type="java-resource" />
<sourceFolder url="file://$MODULE_DIR$/src/test/java" isTestSource="true" />
<excludeFolder url="file://$MODULE_DIR$/target" />
</content>
<orderEntry type="inheritedJdk" />
<orderEntry type="sourceFolder" forTests="false" />
<orderEntry type="library" name="Maven: org.drools:drools-compiler:6.4.0.Final" level="project" />
<orderEntry type="library" name="Maven: org.drools:drools-core:6.4.0.Final" level="project" />
<orderEntry type="library" name="Maven: commons-codec:commons-codec:1.4" level="project" />
<orderEntry type="library" name="Maven: org.kie:kie-internal:6.4.0.Final" level="project" />
<orderEntry type="library" name="Maven: org.antlr:antlr-runtime:3.5" level="project" />
<orderEntry type="library" name="Maven: org.mvel:mvel2:2.2.8.Final" level="project" />
<orderEntry type="library" name="Maven: com.thoughtworks.xstream:xstream:1.4.7" level="project" />
<orderEntry type="library" name="Maven: xmlpull:xmlpull:1.1.3.1" level="project" />
<orderEntry type="library" name="Maven: xpp3:xpp3_min:1.1.4c" level="project" />
<orderEntry type="library" name="Maven: com.google.protobuf:protobuf-java:2.6.0" level="project" />
<orderEntry type="library" name="Maven: org.slf4j:slf4j-api:1.7.2" level="project" />
<orderEntry type="library" name="Maven: org.eclipse.jdt.core.compiler:ecj:3.5.1" level="project" />
<orderEntry type="library" name="Maven: org.jbpm:jbpm-bpmn2:6.4.0.Final" level="project" />
<orderEntry type="library" name="Maven: org.jbpm:jbpm-flow-builder:6.4.0.Final" level="project" />
<orderEntry type="library" name="Maven: org.jbpm:jbpm-flow:6.4.0.Final" level="project" />
<orderEntry type="library" name="Maven: joda-time:joda-time:2.2" level="project" />
<orderEntry type="library" scope="TEST" name="Maven: junit:junit:4.5" level="project" />
<orderEntry type="library" name="Maven: org.kie:kie-api:6.4.0.Final" level="project" />
<orderEntry type="module" module-name="drools-lesson-pojo" />
</component>
</module>

View file

@ -0,0 +1,43 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://maven.apache.org/POM/4.0.0"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<parent>
<artifactId>AccountProject</artifactId>
<groupId>com.pymma-software.droolscourse</groupId>
<version>2.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>drools-lesson2</artifactId>
<dependencies>
<dependency>
<groupId>org.drools</groupId>
<artifactId>drools-compiler</artifactId>
</dependency>
<dependency>
<groupId>org.eclipse.jdt.core.compiler</groupId>
<artifactId>ecj</artifactId>
</dependency>
<dependency>
<groupId>org.jbpm</groupId>
<artifactId>jbpm-bpmn2</artifactId>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.kie</groupId>
<artifactId>kie-api</artifactId>
</dependency>
<dependency>
<groupId>com.pymma-software.droolscourse</groupId>
<artifactId>drools-lesson-pojo</artifactId>
<version>${project.version}</version>
</dependency>
</dependencies>
</project>

View file

@ -0,0 +1,8 @@
<?xml version="1.0" encoding="UTF-8"?>
<kmodule xmlns="http://jboss.org/kie/6.0.0/kmodule">
<kbase name="lesson2" packages="lesson2">
<ksession name="lesson2-session"/>
</kbase>
</kmodule>

View file

@ -0,0 +1,34 @@
//#created on: 30 oct. 2010
package cours
//#list any import classes here.
import droolscours.Account;
import droolscours.AccountingPeriod;
import droolscours.CashFlow;
import droolscours.util.OutputDisplay;
//#declare any global variables here
global OutputDisplay showResult;
rule "Account and accounting period both exist"
when
Account( )
AccountingPeriod( )
then
showResult.showText("Un compte est un accountingperiod existe");
end
rule "Credit rule"
when
$cash :CashFlow( $no : accountNo ,type == CashFlow.CREDIT )
$acc : Account(accountno ==$no )
then
$acc.setBalance($acc.getBalance()+$cash.getAmount());
showResult.showText("le compte no "+$no+ " a maintenant une valeur de "+$acc.getBalance());
end

View file

@ -0,0 +1,80 @@
package droolscours;
import droolscours.util.OutputDisplay;
import org.junit.BeforeClass;
import org.junit.Test;
import org.kie.api.runtime.KieContainer;
import org.kie.api.runtime.KieSession;
import org.kie.api.runtime.StatelessKieSession;
import util.DateHelper;
import util.KnowledgeSessionHelper;
public class Testlesson2 {
static KieContainer kieContainer;
StatelessKieSession sessionStateless = null;
KieSession sessionStatefull = null;
@BeforeClass
public static void beforeClass(){
kieContainer=KnowledgeSessionHelper.createRuleBase();
}
@Test
public void testdeuxFait1() {
sessionStatefull = KnowledgeSessionHelper
.getStatefulKnowledgeSessionWithCallback(kieContainer,"lesson2-session");
OutputDisplay display = new OutputDisplay();
sessionStatefull.setGlobal("showResult", display);
Account a = new Account();
sessionStatefull.insert(a);
AccountingPeriod period = new AccountingPeriod();
sessionStatefull.insert(period);
sessionStatefull.fireAllRules();
}
@Test
public void testdeuxFait2() throws Exception {
sessionStatefull = KnowledgeSessionHelper
.getStatefulKnowledgeSessionWithCallback(kieContainer,"lesson2-session");
OutputDisplay display = new OutputDisplay();
sessionStatefull.setGlobal("showResult", display);
Account a = new Account();
a.setAccountno(1);
a.setBalance(0);
sessionStatefull.insert(a);
CashFlow cash1 = new CashFlow();
cash1.setAccountNo(1);
cash1.setAmount(1000);
cash1.setMvtDate(DateHelper.getDate("2010-01-15"));
cash1.setType(CashFlow.CREDIT);
sessionStatefull.insert(cash1);
sessionStatefull.fireAllRules();
junit.framework.Assert.assertTrue(a.getBalance()==1000);
}
@Test
public void testdeuxFait3() throws Exception {
sessionStatefull = KnowledgeSessionHelper
.getStatefulKnowledgeSessionWithCallback(kieContainer,"lesson2-session");
OutputDisplay display = new OutputDisplay();
sessionStatefull.setGlobal("showResult", display);
Account a = new Account();
a.setAccountno(1);
a.setBalance(0);
sessionStatefull.insert(a);
CashFlow cash1 = new CashFlow();
cash1.setAccountNo(1);
cash1.setAmount(1000);
cash1.setMvtDate(DateHelper.getDate("2010-01-15"));
cash1.setType(CashFlow.CREDIT);
sessionStatefull.insert(cash1);
CashFlow cash2 = new CashFlow();
cash2.setAccountNo(2);
cash2.setAmount(1000);
cash2.setMvtDate(DateHelper.getDate("2010-01-15"));
cash2.setType(CashFlow.CREDIT);
sessionStatefull.insert(cash2);
sessionStatefull.fireAllRules();
junit.framework.Assert.assertTrue(a.getBalance()==1000);
}
}

View file

@ -0,0 +1,34 @@
<?xml version="1.0" encoding="UTF-8"?>
<module org.jetbrains.idea.maven.project.MavenProjectsManager.isMavenModule="true" type="JAVA_MODULE" version="4">
<component name="NewModuleRootManager" LANGUAGE_LEVEL="JDK_1_7" inherit-compiler-output="false">
<output url="file://$MODULE_DIR$/target/classes" />
<output-test url="file://$MODULE_DIR$/target/test-classes" />
<content url="file://$MODULE_DIR$">
<sourceFolder url="file://$MODULE_DIR$/src/main/java" isTestSource="false" />
<sourceFolder url="file://$MODULE_DIR$/src/main/resources" type="java-resource" />
<sourceFolder url="file://$MODULE_DIR$/src/test/java" isTestSource="true" />
<excludeFolder url="file://$MODULE_DIR$/target" />
</content>
<orderEntry type="inheritedJdk" />
<orderEntry type="sourceFolder" forTests="false" />
<orderEntry type="library" name="Maven: org.drools:drools-compiler:6.4.0.Final" level="project" />
<orderEntry type="library" name="Maven: org.drools:drools-core:6.4.0.Final" level="project" />
<orderEntry type="library" name="Maven: commons-codec:commons-codec:1.4" level="project" />
<orderEntry type="library" name="Maven: org.kie:kie-internal:6.4.0.Final" level="project" />
<orderEntry type="library" name="Maven: org.antlr:antlr-runtime:3.5" level="project" />
<orderEntry type="library" name="Maven: org.mvel:mvel2:2.2.8.Final" level="project" />
<orderEntry type="library" name="Maven: com.thoughtworks.xstream:xstream:1.4.7" level="project" />
<orderEntry type="library" name="Maven: xmlpull:xmlpull:1.1.3.1" level="project" />
<orderEntry type="library" name="Maven: xpp3:xpp3_min:1.1.4c" level="project" />
<orderEntry type="library" name="Maven: com.google.protobuf:protobuf-java:2.6.0" level="project" />
<orderEntry type="library" name="Maven: org.slf4j:slf4j-api:1.7.2" level="project" />
<orderEntry type="library" name="Maven: org.eclipse.jdt.core.compiler:ecj:3.5.1" level="project" />
<orderEntry type="library" name="Maven: org.jbpm:jbpm-bpmn2:6.4.0.Final" level="project" />
<orderEntry type="library" name="Maven: org.jbpm:jbpm-flow-builder:6.4.0.Final" level="project" />
<orderEntry type="library" name="Maven: org.jbpm:jbpm-flow:6.4.0.Final" level="project" />
<orderEntry type="library" name="Maven: joda-time:joda-time:2.2" level="project" />
<orderEntry type="library" scope="TEST" name="Maven: junit:junit:4.5" level="project" />
<orderEntry type="library" name="Maven: org.kie:kie-api:6.4.0.Final" level="project" />
<orderEntry type="module" module-name="drools-lesson-pojo" />
</component>
</module>

View file

@ -0,0 +1,43 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://maven.apache.org/POM/4.0.0"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<parent>
<artifactId>AccountProject</artifactId>
<groupId>com.pymma-software.droolscourse</groupId>
<version>2.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>drools-lesson3</artifactId>
<dependencies>
<dependency>
<groupId>org.drools</groupId>
<artifactId>drools-compiler</artifactId>
</dependency>
<dependency>
<groupId>org.eclipse.jdt.core.compiler</groupId>
<artifactId>ecj</artifactId>
</dependency>
<dependency>
<groupId>org.jbpm</groupId>
<artifactId>jbpm-bpmn2</artifactId>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.kie</groupId>
<artifactId>kie-api</artifactId>
</dependency>
<dependency>
<groupId>com.pymma-software.droolscourse</groupId>
<artifactId>drools-lesson-pojo</artifactId>
<version>${project.version}</version>
</dependency>
</dependencies>
</project>

View file

@ -0,0 +1,8 @@
<?xml version="1.0" encoding="UTF-8"?>
<kmodule xmlns="http://jboss.org/kie/6.0.0/kmodule">
<kbase name="lesson3" packages="lesson3">
<ksession name="lesson3-session"/>
</kbase>
</kmodule>

View file

@ -0,0 +1,22 @@
//#created on: 30 oct. 2010
package cours
//list any import classes here.
import droolscours.Account;
import droolscours.util.OutputDisplay;
//#declare any global variables here
global OutputDisplay showResult;
rule "Your First Rule revisited"
when
Account( )
then
showResult.showText("Le compte existe donc déjà");
end

View file

@ -0,0 +1,28 @@
package droolscours;
import org.junit.BeforeClass;
import org.junit.Test;
import org.kie.api.runtime.KieContainer;
import org.kie.api.runtime.KieSession;
import org.kie.api.runtime.StatelessKieSession;
import util.KnowledgeSessionHelper;
public class Testlesson3 {
static KieContainer kieContainer;
StatelessKieSession sessionStateless = null;
KieSession sessionStatefull = null;
@BeforeClass
public static void beforeClass(){
kieContainer=KnowledgeSessionHelper.createRuleBase();
}
@Test
public void testUnFaitSansFait() {
sessionStatefull = KnowledgeSessionHelper
.getStatefulKnowledgeSession(kieContainer,"lesson3-session");
sessionStatefull.fireAllRules();
System.out.println("Did you see something ?");
}
}

View file

@ -0,0 +1,34 @@
<?xml version="1.0" encoding="UTF-8"?>
<module org.jetbrains.idea.maven.project.MavenProjectsManager.isMavenModule="true" type="JAVA_MODULE" version="4">
<component name="NewModuleRootManager" LANGUAGE_LEVEL="JDK_1_7" inherit-compiler-output="false">
<output url="file://$MODULE_DIR$/target/classes" />
<output-test url="file://$MODULE_DIR$/target/test-classes" />
<content url="file://$MODULE_DIR$">
<sourceFolder url="file://$MODULE_DIR$/src/main/java" isTestSource="false" />
<sourceFolder url="file://$MODULE_DIR$/src/main/resources" type="java-resource" />
<sourceFolder url="file://$MODULE_DIR$/src/test/java" isTestSource="true" />
<excludeFolder url="file://$MODULE_DIR$/target" />
</content>
<orderEntry type="inheritedJdk" />
<orderEntry type="sourceFolder" forTests="false" />
<orderEntry type="library" name="Maven: org.drools:drools-compiler:6.4.0.Final" level="project" />
<orderEntry type="library" name="Maven: org.drools:drools-core:6.4.0.Final" level="project" />
<orderEntry type="library" name="Maven: commons-codec:commons-codec:1.4" level="project" />
<orderEntry type="library" name="Maven: org.kie:kie-internal:6.4.0.Final" level="project" />
<orderEntry type="library" name="Maven: org.antlr:antlr-runtime:3.5" level="project" />
<orderEntry type="library" name="Maven: org.mvel:mvel2:2.2.8.Final" level="project" />
<orderEntry type="library" name="Maven: com.thoughtworks.xstream:xstream:1.4.7" level="project" />
<orderEntry type="library" name="Maven: xmlpull:xmlpull:1.1.3.1" level="project" />
<orderEntry type="library" name="Maven: xpp3:xpp3_min:1.1.4c" level="project" />
<orderEntry type="library" name="Maven: com.google.protobuf:protobuf-java:2.6.0" level="project" />
<orderEntry type="library" name="Maven: org.slf4j:slf4j-api:1.7.2" level="project" />
<orderEntry type="library" name="Maven: org.eclipse.jdt.core.compiler:ecj:3.5.1" level="project" />
<orderEntry type="library" name="Maven: org.jbpm:jbpm-bpmn2:6.4.0.Final" level="project" />
<orderEntry type="library" name="Maven: org.jbpm:jbpm-flow-builder:6.4.0.Final" level="project" />
<orderEntry type="library" name="Maven: org.jbpm:jbpm-flow:6.4.0.Final" level="project" />
<orderEntry type="library" name="Maven: joda-time:joda-time:2.2" level="project" />
<orderEntry type="library" scope="TEST" name="Maven: junit:junit:4.5" level="project" />
<orderEntry type="library" name="Maven: org.kie:kie-api:6.4.0.Final" level="project" />
<orderEntry type="module" module-name="drools-lesson-pojo" />
</component>
</module>

View file

@ -0,0 +1,43 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://maven.apache.org/POM/4.0.0"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<parent>
<artifactId>AccountProject</artifactId>
<groupId>com.pymma-software.droolscourse</groupId>
<version>2.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>drools-lesson4</artifactId>
<dependencies>
<dependency>
<groupId>org.drools</groupId>
<artifactId>drools-compiler</artifactId>
</dependency>
<dependency>
<groupId>org.eclipse.jdt.core.compiler</groupId>
<artifactId>ecj</artifactId>
</dependency>
<dependency>
<groupId>org.jbpm</groupId>
<artifactId>jbpm-bpmn2</artifactId>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.kie</groupId>
<artifactId>kie-api</artifactId>
</dependency>
<dependency>
<groupId>com.pymma-software.droolscourse</groupId>
<artifactId>drools-lesson-pojo</artifactId>
<version>${project.version}</version>
</dependency>
</dependencies>
</project>

View file

@ -0,0 +1,8 @@
<?xml version="1.0" encoding="UTF-8"?>
<kmodule xmlns="http://jboss.org/kie/6.0.0/kmodule">
<kbase name="lesson2" packages="lesson2">
<ksession name="lesson2-session"/>
</kbase>
</kmodule>

View file

@ -0,0 +1,22 @@
//#created on: 30 oct. 2010
package cours
//list any import classes here.
import droolscours.Account;
import droolscours.util.OutputDisplay;
//#declare any global variables here
global OutputDisplay showResult;
rule "Your First Rule revisited"
when
Account( )
then
showResult.showText("Le compte existe donc déjà");
end

View file

@ -0,0 +1,28 @@
package droolscours;
import org.junit.BeforeClass;
import org.junit.Test;
import org.kie.api.runtime.KieContainer;
import org.kie.api.runtime.KieSession;
import org.kie.api.runtime.StatelessKieSession;
import util.KnowledgeSessionHelper;
public class Testlesson4 {
static KieContainer kieContainer;
StatelessKieSession sessionStateless = null;
KieSession sessionStatefull = null;
@BeforeClass
public static void beforeClass(){
kieContainer=KnowledgeSessionHelper.createRuleBase();
}
@Test
public void testUnFaitSansFait() {
sessionStatefull = KnowledgeSessionHelper
.getStatefulKnowledgeSession(kieContainer,"lesson1-session");
sessionStatefull.fireAllRules();
System.out.println("Did you see something ?");
}
}

View file

@ -0,0 +1,34 @@
<?xml version="1.0" encoding="UTF-8"?>
<module org.jetbrains.idea.maven.project.MavenProjectsManager.isMavenModule="true" type="JAVA_MODULE" version="4">
<component name="NewModuleRootManager" LANGUAGE_LEVEL="JDK_1_7" inherit-compiler-output="false">
<output url="file://$MODULE_DIR$/target/classes" />
<output-test url="file://$MODULE_DIR$/target/test-classes" />
<content url="file://$MODULE_DIR$">
<sourceFolder url="file://$MODULE_DIR$/src/main/java" isTestSource="false" />
<sourceFolder url="file://$MODULE_DIR$/src/main/resources" type="java-resource" />
<sourceFolder url="file://$MODULE_DIR$/src/test/java" isTestSource="true" />
<excludeFolder url="file://$MODULE_DIR$/target" />
</content>
<orderEntry type="inheritedJdk" />
<orderEntry type="sourceFolder" forTests="false" />
<orderEntry type="library" name="Maven: org.drools:drools-compiler:6.4.0.Final" level="project" />
<orderEntry type="library" name="Maven: org.drools:drools-core:6.4.0.Final" level="project" />
<orderEntry type="library" name="Maven: commons-codec:commons-codec:1.4" level="project" />
<orderEntry type="library" name="Maven: org.kie:kie-internal:6.4.0.Final" level="project" />
<orderEntry type="library" name="Maven: org.antlr:antlr-runtime:3.5" level="project" />
<orderEntry type="library" name="Maven: org.mvel:mvel2:2.2.8.Final" level="project" />
<orderEntry type="library" name="Maven: com.thoughtworks.xstream:xstream:1.4.7" level="project" />
<orderEntry type="library" name="Maven: xmlpull:xmlpull:1.1.3.1" level="project" />
<orderEntry type="library" name="Maven: xpp3:xpp3_min:1.1.4c" level="project" />
<orderEntry type="library" name="Maven: com.google.protobuf:protobuf-java:2.6.0" level="project" />
<orderEntry type="library" name="Maven: org.slf4j:slf4j-api:1.7.2" level="project" />
<orderEntry type="library" name="Maven: org.eclipse.jdt.core.compiler:ecj:3.5.1" level="project" />
<orderEntry type="library" name="Maven: org.jbpm:jbpm-bpmn2:6.4.0.Final" level="project" />
<orderEntry type="library" name="Maven: org.jbpm:jbpm-flow-builder:6.4.0.Final" level="project" />
<orderEntry type="library" name="Maven: org.jbpm:jbpm-flow:6.4.0.Final" level="project" />
<orderEntry type="library" name="Maven: joda-time:joda-time:2.2" level="project" />
<orderEntry type="library" scope="TEST" name="Maven: junit:junit:4.5" level="project" />
<orderEntry type="library" name="Maven: org.kie:kie-api:6.4.0.Final" level="project" />
<orderEntry type="module" module-name="drools-lesson-pojo" />
</component>
</module>

View file

@ -0,0 +1,43 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://maven.apache.org/POM/4.0.0"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<parent>
<artifactId>AccountProject</artifactId>
<groupId>com.pymma-software.droolscourse</groupId>
<version>2.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>drools-lesson5</artifactId>
<dependencies>
<dependency>
<groupId>org.drools</groupId>
<artifactId>drools-compiler</artifactId>
</dependency>
<dependency>
<groupId>org.eclipse.jdt.core.compiler</groupId>
<artifactId>ecj</artifactId>
</dependency>
<dependency>
<groupId>org.jbpm</groupId>
<artifactId>jbpm-bpmn2</artifactId>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.kie</groupId>
<artifactId>kie-api</artifactId>
</dependency>
<dependency>
<groupId>com.pymma-software.droolscourse</groupId>
<artifactId>drools-lesson-pojo</artifactId>
<version>${project.version}</version>
</dependency>
</dependencies>
</project>

View file

@ -0,0 +1,8 @@
<?xml version="1.0" encoding="UTF-8"?>
<kmodule xmlns="http://jboss.org/kie/6.0.0/kmodule">
<kbase name="lesson5" packages="lesson5">
<ksession name="lesson5-session"/>
</kbase>
</kmodule>

View file

@ -0,0 +1,22 @@
//#created on: 30 oct. 2010
package cours
//list any import classes here.
import droolscours.Account;
import droolscours.util.OutputDisplay;
//#declare any global variables here
global OutputDisplay showResult;
rule "Your First Rule revisited"
when
Account( )
then
showResult.showText("Le compte existe donc déjà");
end

View file

@ -0,0 +1,28 @@
package droolscours;
import org.junit.BeforeClass;
import org.junit.Test;
import org.kie.api.runtime.KieContainer;
import org.kie.api.runtime.KieSession;
import org.kie.api.runtime.StatelessKieSession;
import util.KnowledgeSessionHelper;
public class Testlesson5 {
static KieContainer kieContainer;
StatelessKieSession sessionStateless = null;
KieSession sessionStatefull = null;
@BeforeClass
public static void beforeClass(){
kieContainer=KnowledgeSessionHelper.createRuleBase();
}
@Test
public void testUnFaitSansFait() {
sessionStatefull = KnowledgeSessionHelper
.getStatefulKnowledgeSession(kieContainer,"lesson1-session");
sessionStatefull.fireAllRules();
System.out.println("Did you see something ?");
}
}

View file

@ -0,0 +1,34 @@
<?xml version="1.0" encoding="UTF-8"?>
<module org.jetbrains.idea.maven.project.MavenProjectsManager.isMavenModule="true" type="JAVA_MODULE" version="4">
<component name="NewModuleRootManager" LANGUAGE_LEVEL="JDK_1_7" inherit-compiler-output="false">
<output url="file://$MODULE_DIR$/target/classes" />
<output-test url="file://$MODULE_DIR$/target/test-classes" />
<content url="file://$MODULE_DIR$">
<sourceFolder url="file://$MODULE_DIR$/src/main/java" isTestSource="false" />
<sourceFolder url="file://$MODULE_DIR$/src/main/resources" type="java-resource" />
<sourceFolder url="file://$MODULE_DIR$/src/test/java" isTestSource="true" />
<excludeFolder url="file://$MODULE_DIR$/target" />
</content>
<orderEntry type="inheritedJdk" />
<orderEntry type="sourceFolder" forTests="false" />
<orderEntry type="library" name="Maven: org.drools:drools-compiler:6.4.0.Final" level="project" />
<orderEntry type="library" name="Maven: org.drools:drools-core:6.4.0.Final" level="project" />
<orderEntry type="library" name="Maven: commons-codec:commons-codec:1.4" level="project" />
<orderEntry type="library" name="Maven: org.kie:kie-internal:6.4.0.Final" level="project" />
<orderEntry type="library" name="Maven: org.antlr:antlr-runtime:3.5" level="project" />
<orderEntry type="library" name="Maven: org.mvel:mvel2:2.2.8.Final" level="project" />
<orderEntry type="library" name="Maven: com.thoughtworks.xstream:xstream:1.4.7" level="project" />
<orderEntry type="library" name="Maven: xmlpull:xmlpull:1.1.3.1" level="project" />
<orderEntry type="library" name="Maven: xpp3:xpp3_min:1.1.4c" level="project" />
<orderEntry type="library" name="Maven: com.google.protobuf:protobuf-java:2.6.0" level="project" />
<orderEntry type="library" name="Maven: org.slf4j:slf4j-api:1.7.2" level="project" />
<orderEntry type="library" name="Maven: org.eclipse.jdt.core.compiler:ecj:3.5.1" level="project" />
<orderEntry type="library" name="Maven: org.jbpm:jbpm-bpmn2:6.4.0.Final" level="project" />
<orderEntry type="library" name="Maven: org.jbpm:jbpm-flow-builder:6.4.0.Final" level="project" />
<orderEntry type="library" name="Maven: org.jbpm:jbpm-flow:6.4.0.Final" level="project" />
<orderEntry type="library" name="Maven: joda-time:joda-time:2.2" level="project" />
<orderEntry type="library" scope="TEST" name="Maven: junit:junit:4.5" level="project" />
<orderEntry type="library" name="Maven: org.kie:kie-api:6.4.0.Final" level="project" />
<orderEntry type="module" module-name="drools-lesson-pojo" />
</component>
</module>

View file

@ -0,0 +1,43 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://maven.apache.org/POM/4.0.0"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<parent>
<artifactId>AccountProject</artifactId>
<groupId>com.pymma-software.droolscourse</groupId>
<version>2.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>drools-lesson6</artifactId>
<dependencies>
<dependency>
<groupId>org.drools</groupId>
<artifactId>drools-compiler</artifactId>
</dependency>
<dependency>
<groupId>org.eclipse.jdt.core.compiler</groupId>
<artifactId>ecj</artifactId>
</dependency>
<dependency>
<groupId>org.jbpm</groupId>
<artifactId>jbpm-bpmn2</artifactId>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.kie</groupId>
<artifactId>kie-api</artifactId>
</dependency>
<dependency>
<groupId>com.pymma-software.droolscourse</groupId>
<artifactId>drools-lesson-pojo</artifactId>
<version>${project.version}</version>
</dependency>
</dependencies>
</project>

View file

@ -0,0 +1,8 @@
<?xml version="1.0" encoding="UTF-8"?>
<kmodule xmlns="http://jboss.org/kie/6.0.0/kmodule">
<kbase name="lesson6" packages="lesson6">
<ksession name="lesson6-session"/>
</kbase>
</kmodule>

View file

@ -0,0 +1,22 @@
//#created on: 30 oct. 2010
package cours
//list any import classes here.
import droolscours.Account;
import droolscours.util.OutputDisplay;
//#declare any global variables here
global OutputDisplay showResult;
rule "Your First Rule revisited"
when
Account( )
then
showResult.showText("Le compte existe donc déjà");
end

View file

@ -0,0 +1,28 @@
package droolscours;
import org.junit.BeforeClass;
import org.junit.Test;
import org.kie.api.runtime.KieContainer;
import org.kie.api.runtime.KieSession;
import org.kie.api.runtime.StatelessKieSession;
import util.KnowledgeSessionHelper;
public class Testlesson6 {
static KieContainer kieContainer;
StatelessKieSession sessionStateless = null;
KieSession sessionStatefull = null;
@BeforeClass
public static void beforeClass(){
kieContainer=KnowledgeSessionHelper.createRuleBase();
}
@Test
public void testUnFaitSansFait() {
sessionStatefull = KnowledgeSessionHelper
.getStatefulKnowledgeSession(kieContainer,"lesson1-session");
sessionStatefull.fireAllRules();
System.out.println("Did you see something ?");
}
}

View file

@ -0,0 +1,34 @@
<?xml version="1.0" encoding="UTF-8"?>
<module org.jetbrains.idea.maven.project.MavenProjectsManager.isMavenModule="true" type="JAVA_MODULE" version="4">
<component name="NewModuleRootManager" LANGUAGE_LEVEL="JDK_1_7" inherit-compiler-output="false">
<output url="file://$MODULE_DIR$/target/classes" />
<output-test url="file://$MODULE_DIR$/target/test-classes" />
<content url="file://$MODULE_DIR$">
<sourceFolder url="file://$MODULE_DIR$/src/main/java" isTestSource="false" />
<sourceFolder url="file://$MODULE_DIR$/src/main/resources" type="java-resource" />
<sourceFolder url="file://$MODULE_DIR$/src/test/java" isTestSource="true" />
<excludeFolder url="file://$MODULE_DIR$/target" />
</content>
<orderEntry type="inheritedJdk" />
<orderEntry type="sourceFolder" forTests="false" />
<orderEntry type="library" name="Maven: org.drools:drools-compiler:6.4.0.Final" level="project" />
<orderEntry type="library" name="Maven: org.drools:drools-core:6.4.0.Final" level="project" />
<orderEntry type="library" name="Maven: commons-codec:commons-codec:1.4" level="project" />
<orderEntry type="library" name="Maven: org.kie:kie-internal:6.4.0.Final" level="project" />
<orderEntry type="library" name="Maven: org.antlr:antlr-runtime:3.5" level="project" />
<orderEntry type="library" name="Maven: org.mvel:mvel2:2.2.8.Final" level="project" />
<orderEntry type="library" name="Maven: com.thoughtworks.xstream:xstream:1.4.7" level="project" />
<orderEntry type="library" name="Maven: xmlpull:xmlpull:1.1.3.1" level="project" />
<orderEntry type="library" name="Maven: xpp3:xpp3_min:1.1.4c" level="project" />
<orderEntry type="library" name="Maven: com.google.protobuf:protobuf-java:2.6.0" level="project" />
<orderEntry type="library" name="Maven: org.slf4j:slf4j-api:1.7.2" level="project" />
<orderEntry type="library" name="Maven: org.eclipse.jdt.core.compiler:ecj:3.5.1" level="project" />
<orderEntry type="library" name="Maven: org.jbpm:jbpm-bpmn2:6.4.0.Final" level="project" />
<orderEntry type="library" name="Maven: org.jbpm:jbpm-flow-builder:6.4.0.Final" level="project" />
<orderEntry type="library" name="Maven: org.jbpm:jbpm-flow:6.4.0.Final" level="project" />
<orderEntry type="library" name="Maven: joda-time:joda-time:2.2" level="project" />
<orderEntry type="library" scope="TEST" name="Maven: junit:junit:4.5" level="project" />
<orderEntry type="library" name="Maven: org.kie:kie-api:6.4.0.Final" level="project" />
<orderEntry type="module" module-name="drools-lesson-pojo" />
</component>
</module>

View file

@ -0,0 +1,43 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://maven.apache.org/POM/4.0.0"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<parent>
<artifactId>AccountProject</artifactId>
<groupId>com.pymma-software.droolscourse</groupId>
<version>2.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>drools-lesson7</artifactId>
<dependencies>
<dependency>
<groupId>org.drools</groupId>
<artifactId>drools-compiler</artifactId>
</dependency>
<dependency>
<groupId>org.eclipse.jdt.core.compiler</groupId>
<artifactId>ecj</artifactId>
</dependency>
<dependency>
<groupId>org.jbpm</groupId>
<artifactId>jbpm-bpmn2</artifactId>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.kie</groupId>
<artifactId>kie-api</artifactId>
</dependency>
<dependency>
<groupId>com.pymma-software.droolscourse</groupId>
<artifactId>drools-lesson-pojo</artifactId>
<version>${project.version}</version>
</dependency>
</dependencies>
</project>

View file

@ -0,0 +1,8 @@
<?xml version="1.0" encoding="UTF-8"?>
<kmodule xmlns="http://jboss.org/kie/6.0.0/kmodule">
<kbase name="lesson7" packages="lesson7">
<ksession name="lesson7-session"/>
</kbase>
</kmodule>

View file

@ -0,0 +1,22 @@
//#created on: 30 oct. 2010
package cours
//list any import classes here.
import droolscours.Account;
import droolscours.util.OutputDisplay;
//#declare any global variables here
global OutputDisplay showResult;
rule "Your First Rule revisited"
when
Account( )
then
showResult.showText("Le compte existe donc déjà");
end

View file

@ -0,0 +1,28 @@
package droolscours;
import org.junit.BeforeClass;
import org.junit.Test;
import org.kie.api.runtime.KieContainer;
import org.kie.api.runtime.KieSession;
import org.kie.api.runtime.StatelessKieSession;
import util.KnowledgeSessionHelper;
public class Testlesson7 {
static KieContainer kieContainer;
StatelessKieSession sessionStateless = null;
KieSession sessionStatefull = null;
@BeforeClass
public static void beforeClass(){
kieContainer=KnowledgeSessionHelper.createRuleBase();
}
@Test
public void testUnFaitSansFait() {
sessionStatefull = KnowledgeSessionHelper
.getStatefulKnowledgeSession(kieContainer,"lesson1-session");
sessionStatefull.fireAllRules();
System.out.println("Did you see something ?");
}
}

View file

@ -0,0 +1,34 @@
<?xml version="1.0" encoding="UTF-8"?>
<module org.jetbrains.idea.maven.project.MavenProjectsManager.isMavenModule="true" type="JAVA_MODULE" version="4">
<component name="NewModuleRootManager" LANGUAGE_LEVEL="JDK_1_7" inherit-compiler-output="false">
<output url="file://$MODULE_DIR$/target/classes" />
<output-test url="file://$MODULE_DIR$/target/test-classes" />
<content url="file://$MODULE_DIR$">
<sourceFolder url="file://$MODULE_DIR$/src/main/java" isTestSource="false" />
<sourceFolder url="file://$MODULE_DIR$/src/main/resources" type="java-resource" />
<sourceFolder url="file://$MODULE_DIR$/src/test/java" isTestSource="true" />
<excludeFolder url="file://$MODULE_DIR$/target" />
</content>
<orderEntry type="inheritedJdk" />
<orderEntry type="sourceFolder" forTests="false" />
<orderEntry type="library" name="Maven: org.drools:drools-compiler:6.4.0.Final" level="project" />
<orderEntry type="library" name="Maven: org.drools:drools-core:6.4.0.Final" level="project" />
<orderEntry type="library" name="Maven: commons-codec:commons-codec:1.4" level="project" />
<orderEntry type="library" name="Maven: org.kie:kie-internal:6.4.0.Final" level="project" />
<orderEntry type="library" name="Maven: org.antlr:antlr-runtime:3.5" level="project" />
<orderEntry type="library" name="Maven: org.mvel:mvel2:2.2.8.Final" level="project" />
<orderEntry type="library" name="Maven: com.thoughtworks.xstream:xstream:1.4.7" level="project" />
<orderEntry type="library" name="Maven: xmlpull:xmlpull:1.1.3.1" level="project" />
<orderEntry type="library" name="Maven: xpp3:xpp3_min:1.1.4c" level="project" />
<orderEntry type="library" name="Maven: com.google.protobuf:protobuf-java:2.6.0" level="project" />
<orderEntry type="library" name="Maven: org.slf4j:slf4j-api:1.7.2" level="project" />
<orderEntry type="library" name="Maven: org.eclipse.jdt.core.compiler:ecj:3.5.1" level="project" />
<orderEntry type="library" name="Maven: org.jbpm:jbpm-bpmn2:6.4.0.Final" level="project" />
<orderEntry type="library" name="Maven: org.jbpm:jbpm-flow-builder:6.4.0.Final" level="project" />
<orderEntry type="library" name="Maven: org.jbpm:jbpm-flow:6.4.0.Final" level="project" />
<orderEntry type="library" name="Maven: joda-time:joda-time:2.2" level="project" />
<orderEntry type="library" scope="TEST" name="Maven: junit:junit:4.5" level="project" />
<orderEntry type="library" name="Maven: org.kie:kie-api:6.4.0.Final" level="project" />
<orderEntry type="module" module-name="drools-lesson-pojo" />
</component>
</module>

View file

@ -0,0 +1,43 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://maven.apache.org/POM/4.0.0"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<parent>
<artifactId>AccountProject</artifactId>
<groupId>com.pymma-software.droolscourse</groupId>
<version>2.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>drools-lesson8</artifactId>
<dependencies>
<dependency>
<groupId>org.drools</groupId>
<artifactId>drools-compiler</artifactId>
</dependency>
<dependency>
<groupId>org.eclipse.jdt.core.compiler</groupId>
<artifactId>ecj</artifactId>
</dependency>
<dependency>
<groupId>org.jbpm</groupId>
<artifactId>jbpm-bpmn2</artifactId>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.kie</groupId>
<artifactId>kie-api</artifactId>
</dependency>
<dependency>
<groupId>com.pymma-software.droolscourse</groupId>
<artifactId>drools-lesson-pojo</artifactId>
<version>${project.version}</version>
</dependency>
</dependencies>
</project>

View file

@ -0,0 +1,8 @@
<?xml version="1.0" encoding="UTF-8"?>
<kmodule xmlns="http://jboss.org/kie/6.0.0/kmodule">
<kbase name="lesson8" packages="lesson8">
<ksession name="lesson8-session"/>
</kbase>
</kmodule>

View file

@ -0,0 +1,22 @@
//#created on: 30 oct. 2010
package cours
//list any import classes here.
import droolscours.Account;
import droolscours.util.OutputDisplay;
//#declare any global variables here
global OutputDisplay showResult;
rule "Your First Rule revisited"
when
Account( )
then
showResult.showText("Le compte existe donc déjà");
end

View file

@ -0,0 +1,28 @@
package droolscours;
import org.junit.BeforeClass;
import org.junit.Test;
import org.kie.api.runtime.KieContainer;
import org.kie.api.runtime.KieSession;
import org.kie.api.runtime.StatelessKieSession;
import util.KnowledgeSessionHelper;
public class Testlesson8 {
static KieContainer kieContainer;
StatelessKieSession sessionStateless = null;
KieSession sessionStatefull = null;
@BeforeClass
public static void beforeClass(){
kieContainer=KnowledgeSessionHelper.createRuleBase();
}
@Test
public void testUnFaitSansFait() {
sessionStatefull = KnowledgeSessionHelper
.getStatefulKnowledgeSession(kieContainer,"lesson1-session");
sessionStatefull.fireAllRules();
System.out.println("Did you see something ?");
}
}

View file

@ -0,0 +1,35 @@
<?xml version="1.0" encoding="UTF-8"?>
<module org.jetbrains.idea.maven.project.MavenProjectsManager.isMavenModule="true" type="JAVA_MODULE" version="4">
<component name="NewModuleRootManager" LANGUAGE_LEVEL="JDK_1_5" inherit-compiler-output="false">
<output url="file://$MODULE_DIR$/target/classes" />
<output-test url="file://$MODULE_DIR$/target/test-classes" />
<content url="file://$MODULE_DIR$">
<sourceFolder url="file://$MODULE_DIR$/src/main/java" isTestSource="false" />
<sourceFolder url="file://$MODULE_DIR$/src/main/resources" type="java-resource" />
<sourceFolder url="file://$MODULE_DIR$/src/test/java" isTestSource="true" />
<excludeFolder url="file://$MODULE_DIR$/target" />
<excludeFolder url="file://$MODULE_DIR$/../../drools-lesson1/target" />
</content>
<orderEntry type="inheritedJdk" />
<orderEntry type="sourceFolder" forTests="false" />
<orderEntry type="library" name="Maven: org.drools:drools-compiler:6.4.0.Final" level="project" />
<orderEntry type="library" name="Maven: org.drools:drools-core:6.4.0.Final" level="project" />
<orderEntry type="library" name="Maven: commons-codec:commons-codec:1.4" level="project" />
<orderEntry type="library" name="Maven: org.kie:kie-internal:6.4.0.Final" level="project" />
<orderEntry type="library" name="Maven: org.antlr:antlr-runtime:3.5" level="project" />
<orderEntry type="library" name="Maven: org.mvel:mvel2:2.2.8.Final" level="project" />
<orderEntry type="library" name="Maven: com.thoughtworks.xstream:xstream:1.4.7" level="project" />
<orderEntry type="library" name="Maven: xmlpull:xmlpull:1.1.3.1" level="project" />
<orderEntry type="library" name="Maven: xpp3:xpp3_min:1.1.4c" level="project" />
<orderEntry type="library" name="Maven: com.google.protobuf:protobuf-java:2.6.0" level="project" />
<orderEntry type="library" name="Maven: org.slf4j:slf4j-api:1.7.2" level="project" />
<orderEntry type="library" name="Maven: org.eclipse.jdt.core.compiler:ecj:3.5.1" level="project" />
<orderEntry type="library" name="Maven: org.jbpm:jbpm-bpmn2:6.4.0.Final" level="project" />
<orderEntry type="library" name="Maven: org.jbpm:jbpm-flow-builder:6.4.0.Final" level="project" />
<orderEntry type="library" name="Maven: org.jbpm:jbpm-flow:6.4.0.Final" level="project" />
<orderEntry type="library" name="Maven: joda-time:joda-time:2.2" level="project" />
<orderEntry type="library" scope="TEST" name="Maven: junit:junit:4.5" level="project" />
<orderEntry type="library" name="Maven: org.kie:kie-api:6.4.0.Final" level="project" />
<orderEntry type="module" module-name="drools-lesson-pojo" />
</component>
</module>

View file

@ -0,0 +1,43 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://maven.apache.org/POM/4.0.0"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<parent>
<artifactId>AccountProject</artifactId>
<groupId>com.pymma-software.droolscourse</groupId>
<version>2.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>drools-lesson1</artifactId>
<dependencies>
<dependency>
<groupId>org.drools</groupId>
<artifactId>drools-compiler</artifactId>
</dependency>
<dependency>
<groupId>org.eclipse.jdt.core.compiler</groupId>
<artifactId>ecj</artifactId>
</dependency>
<dependency>
<groupId>org.jbpm</groupId>
<artifactId>jbpm-bpmn2</artifactId>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.kie</groupId>
<artifactId>kie-api</artifactId>
</dependency>
<dependency>
<groupId>com.pymma-software.droolscourse</groupId>
<artifactId>drools-lesson-pojo</artifactId>
<version>${project.version}</version>
</dependency>
</dependencies>
</project>

View file

@ -0,0 +1,8 @@
<?xml version="1.0" encoding="UTF-8"?>
<kmodule xmlns="http://jboss.org/kie/6.0.0/kmodule">
<kbase name="simplesample" packages="simplesample">
<ksession name="simplesample-session"/>
</kbase>
</kmodule>

View file

@ -0,0 +1,17 @@
package simplesample
import droolscours.Account;
import droolscours.AccountingPeriod;
import droolscours.CashFlow;
import droolscours.util.OutputDisplay;
global OutputDisplay showResults;
rule "Credit Rule"
when
acco: Account( no : accountno )
period : AccountingPeriod(s : startDate , e: endDate )
act : CashFlow( type == CashFlow.CREDIT ,mvtDate >= s && mvtDate <=e ,accountNo ==no)
then
acco.setBalance(acco.getBalance()+act.getAmount());
showResults.showText("The new balance is now "+acco.getBalance());
end

View file

@ -0,0 +1,66 @@
package droolscours;
import droolscours.util.OutputDisplay;
import org.junit.Assert;
import org.junit.BeforeClass;
import org.junit.Test;
import org.kie.api.event.rule.ObjectDeletedEvent;
import org.kie.api.event.rule.ObjectInsertedEvent;
import org.kie.api.event.rule.ObjectUpdatedEvent;
import org.kie.api.event.rule.RuleRuntimeEventListener;
import org.kie.api.runtime.KieContainer;
import org.kie.api.runtime.KieSession;
import org.kie.api.runtime.StatelessKieSession;
import org.omg.CORBA.portable.OutputStream;
import util.DateHelper;
import util.KnowledgeSessionHelper;
public class PremierEssai {
StatelessKieSession sessionStateless = null;
KieSession sessionStatefull = null;
static KieContainer kieContainer;
@BeforeClass
public static void beforeClass(){
kieContainer=KnowledgeSessionHelper.createRuleBase();
}
@Test
public void testSimple() throws Exception {
sessionStatefull = KnowledgeSessionHelper
.getStatefulKnowledgeSession(kieContainer,"simplesample-session");
sessionStatefull.addEventListener(new RuleRuntimeEventListener() {
public void objectInserted(ObjectInsertedEvent event) {
System.out.println("Object inserted \n"
+ event.getObject().toString());
}
public void objectUpdated(ObjectUpdatedEvent event) {
System.out.println("Object was updated \n"
+ "new Content \n" + event.getObject().toString());
}
public void objectDeleted(ObjectDeletedEvent event) {
System.out.println("Object retracted \n"
+ event.getOldObject().toString());
}
});
OutputDisplay showResult = new OutputDisplay();
sessionStatefull.setGlobal("showResults",showResult);
Account account = new Account();
account.setAccountno(1);
sessionStatefull.insert(account);
AccountingPeriod period = new AccountingPeriod();
period.setStartDate(DateHelper.getDate("2010-01-01"));
period.setEndDate(DateHelper.getDate("2010-03-31"));
sessionStatefull.insert(period);
CashFlow action1 = new CashFlow();
action1.setAccountNo(1);
action1.setAmount(1000);
action1.setType(CashFlow.CREDIT);
action1.setMvtDate(DateHelper.getDate("2010-01-02"));
sessionStatefull.insert(action1);
sessionStatefull.fireAllRules();
Assert.assertTrue(account.getBalance() == 1000);
}
}

View file

@ -0,0 +1,8 @@
<?xml version="1.0" encoding="UTF-8"?>
<kmodule xmlns="http://jboss.org/kie/6.0.0/kmodule">
<kbase name="simplesample" packages="simplesample">
<ksession name="simplesample-session"/>
</kbase>
</kmodule>

View file

@ -0,0 +1,17 @@
package simplesample
import droolscours.Account;
import droolscours.AccountingPeriod;
import droolscours.CashFlow;
import droolscours.util.OutputDisplay;
global OutputDisplay showResults;
rule "Credit Rule"
when
acco: Account( no : accountno )
period : AccountingPeriod(s : startDate , e: endDate )
act : CashFlow( type == CashFlow.CREDIT ,mvtDate >= s && mvtDate <=e ,accountNo ==no)
then
acco.setBalance(acco.getBalance()+act.getAmount());
showResults.showText("The new balance is now "+acco.getBalance());
end

View file

@ -0,0 +1,10 @@
<?xml version="1.0" encoding="UTF-8"?>
<javadocOptions>
<docletArtifacts>
<docletArtifact/>
</docletArtifacts>
<tagletArtifacts>
<tagletArtifact/>
</tagletArtifacts>
<javadocResourcesDirectory>src/main/javadoc</javadocResourcesDirectory>
</javadocOptions>

View file

@ -0,0 +1,5 @@
#Generated by Maven
#Thu May 12 17:05:58 CEST 2016
version=2.0-SNAPSHOT
groupId=com.pymma-software.droolscourse
artifactId=drools-lesson1

View file

@ -0,0 +1,2 @@
droolscours/PremierEssai.class
droolscours/PremierEssai$1.class

View file

@ -0,0 +1 @@
/Users/nheron/workspace-chtiJBUG/chtijbug-6.3/droolscourse/AccountProject/drools-lesson1/src/test/java/droolscours/PremierEssai.java

View file

@ -1,4 +1,4 @@
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" <project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://maven.apache.org/POM/4.0.0"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion> <modelVersion>4.0.0</modelVersion>
<parent> <parent>
@ -8,7 +8,19 @@
</parent> </parent>
<artifactId>AccountProject</artifactId> <artifactId>AccountProject</artifactId>
<name>Accounting project</name> <name>Accounting project</name>
<packaging>pom</packaging>
<description>Accounting project</description> <description>Accounting project</description>
<modules>
<module>drools-lesson1</module>
<module>drools-lesson2</module>
<module>drools-lesson3</module>
<module>drools-lesson4</module>
<module>drools-lesson5</module>
<module>drools-lesson6</module>
<module>drools-lesson7</module>
<module>drools-lesson8</module>
<module>drools-lesson-pojo</module>
</modules>
<build> <build>
<plugins> <plugins>
<plugin> <plugin>
@ -26,8 +38,45 @@
<configuration> <configuration>
</configuration> </configuration>
</plugin> </plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.2</version>
<configuration>
<source>1.7</source>
<target>1.7</target>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.18.1</version>
</plugin>
<!--plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-gpg-plugin</artifactId>
<executions>
<execution>
<id>sign-artifacts</id>
<phase>verify</phase>
<goals>
<goal>sign</goal>
</goals>
</execution>
</executions>
</plugin-->
</plugins> </plugins>
<pluginManagement>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.18.1</version>
</plugin>
</plugins>
</pluginManagement>
</build> </build>
<dependencies> <dependencies>
@ -48,6 +97,10 @@
<artifactId>junit</artifactId> <artifactId>junit</artifactId>
<scope>test</scope> <scope>test</scope>
</dependency> </dependency>
<dependency>
<groupId>org.kie</groupId>
<artifactId>kie-api</artifactId>
</dependency>
</dependencies> </dependencies>
</project> </project>

View file

@ -1,80 +0,0 @@
package com.sample;
import org.drools.KnowledgeBase;
import org.drools.KnowledgeBaseFactory;
import org.drools.builder.KnowledgeBuilder;
import org.drools.builder.KnowledgeBuilderError;
import org.drools.builder.KnowledgeBuilderErrors;
import org.drools.builder.KnowledgeBuilderFactory;
import org.drools.builder.ResourceType;
import org.drools.io.ResourceFactory;
import org.drools.logger.KnowledgeRuntimeLogger;
import org.drools.logger.KnowledgeRuntimeLoggerFactory;
import org.drools.runtime.StatefulKnowledgeSession;
/**
* This is a sample class to launch a rule.
*/
public class DroolsTest {
public static final void main(String[] args) {
try {
// load up the knowledge base
KnowledgeBase kbase = readKnowledgeBase();
StatefulKnowledgeSession ksession = kbase.newStatefulKnowledgeSession();
KnowledgeRuntimeLogger logger = KnowledgeRuntimeLoggerFactory.newFileLogger(ksession, "test");
// go !
Message message = new Message();
message.setMessage("Hello World");
message.setStatus(Message.HELLO);
ksession.insert(message);
ksession.fireAllRules();
logger.close();
} catch (Throwable t) {
t.printStackTrace();
}
}
private static KnowledgeBase readKnowledgeBase() throws Exception {
KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder();
kbuilder.add(ResourceFactory.newClassPathResource("Sample.drl"), ResourceType.DRL);
KnowledgeBuilderErrors errors = kbuilder.getErrors();
if (errors.size() > 0) {
for (KnowledgeBuilderError error: errors) {
System.err.println(error);
}
throw new IllegalArgumentException("Could not parse knowledge.");
}
KnowledgeBase kbase = KnowledgeBaseFactory.newKnowledgeBase();
kbase.addKnowledgePackages(kbuilder.getKnowledgePackages());
return kbase;
}
public static class Message {
public static final int HELLO = 0;
public static final int GOODBYE = 1;
private String message;
private int status;
public String getMessage() {
return this.message;
}
public void setMessage(String message) {
this.message = message;
}
public int getStatus() {
return this.status;
}
public void setStatus(int status) {
this.status = status;
}
}
}

View file

@ -1,44 +0,0 @@
package droolscours;
public class Account {
private long accountno;
private double balance;
public long getAccountno() {
return accountno;
}
public void setAccountno(long accountno) {
this.accountno = accountno;
}
public double getBalance() {
return balance;
}
public void setBalance(double balance) {
this.balance = balance;
}
@Override
public String toString() {
// TODO Auto-generated method stub
StringBuffer buff = new StringBuffer();
buff.append("-----Account-----)\n");
buff.append("Account no " + this.accountno + "\n");
buff.append("Balance " + this.balance + "\n");
buff.append("-----End Account-)");
return buff.toString();
}
public Account(long accountno, double balance) {
super();
this.accountno = accountno;
this.balance = balance;
}
public Account() {
super();
// TODO Auto-generated constructor stub
}
}

View file

@ -1,60 +0,0 @@
package droolscours;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Date;
public class AccountingPeriod {
private Date startDate;
private Date endDate;
public Date getStartDate() {
return startDate;
}
public void setStartDate(Date start) {
this.startDate = start;
}
public Date getEndDate() {
return endDate;
}
public void setEndDate(Date end) {
this.endDate = end;
}
public AccountingPeriod() {
super();
// TODO Auto-generated constructor stub
}
@Override
public String toString() {
// TODO Auto-generated method stub
StringBuffer buff = new StringBuffer();
buff.append("-----AccountingPeriod-----)\n");
if (this.startDate != null) {
buff.append("StartDate "
+ DateFormat.getDateInstance().format(this.startDate)
+ "\n");
}else{
buff.append("No start date was set\n");
}
if (this.endDate != null) {
buff.append("EndDate "
+ DateFormat.getDateInstance().format(this.endDate) + "\n");
}else {
buff.append("No ens date was set\n");
}
buff.append("-----End AccountingPeriod -)");
return buff.toString();
}
public AccountingPeriod(Date startDate, Date endDate) {
super();
this.startDate = startDate;
this.endDate = endDate;
}
}

View file

@ -1,78 +0,0 @@
package droolscours;
import java.text.DateFormat;
import java.util.Date;
public class CashFlow {
private Date mvtDate;
private double amount;
private int type;
private long accountNo;
public static int CREDIT = 1;
public static int DEBIT = 2;
public Date getMvtDate() {
return mvtDate;
}
public void setMvtDate(Date date) {
this.mvtDate = date;
}
public double getAmount() {
return amount;
}
public void setAmount(double amount) {
this.amount = amount;
}
public int getType() {
return type;
}
public void setType(int type) {
this.type = type;
}
public long getAccountNo() {
return accountNo;
}
public void setAccountNo(long accountNo) {
this.accountNo = accountNo;
}
@Override
public String toString() {
// TODO Auto-generated method stub
StringBuffer buff = new StringBuffer();
buff.append("-----CashFlow-----)\n");
buff.append("Account no="+this.accountNo+"\n");
if (this.mvtDate != null) {
buff.append("Mouvement Date= "
+ DateFormat.getDateInstance().format(this.mvtDate)
+ "\n");
}else{
buff.append("No Mouvement date was set\n");
}
buff.append("Mouvement Amount="+this.amount+"\n");
buff.append("-----CashFlow end--)");
return buff.toString();
}
public CashFlow(Date mvtDate, double amount, int type, long accountNo) {
super();
this.mvtDate = mvtDate;
this.amount = amount;
this.type = type;
this.accountNo = accountNo;
}
public CashFlow() {
super();
// TODO Auto-generated constructor stub
}
}

View file

@ -1,46 +0,0 @@
package droolscours;
public class Customer {
private String name;
private String surname;
private String country;
public String getCountry() {
return country;
}
public void setCountry(String country) {
this.country = country;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getSurname() {
return surname;
}
public void setSurname(String surname) {
this.surname = surname;
}
@Override
public String toString() {
StringBuffer buff = new StringBuffer();
buff.append("-----Customer-----)\n");
buff.append("Name=" + this.name + "\n");
buff.append("Surname Name=" + this.surname + "\n");
buff.append("Country=" + this.country + "\n");
buff.append("-----Customer end-)");
return buff.toString();
}
public Customer(String name, String surname, String country) {
super();
this.name = name;
this.surname = surname;
this.country = country;
}
public Customer() {
super();
// TODO Auto-generated constructor stub
}
}

View file

@ -1,23 +0,0 @@
package droolscours;
public class PrivateAccount extends Account {
private Customer owner;
public Customer getOwner() {
return owner;
}
public void setOwner(Customer owner) {
this.owner = owner;
}
@Override
public String toString() {
StringBuffer buff = new StringBuffer();
buff.append("-----Private Account-)");
buff.append(super.toString());
buff.append(this.owner.toString());
buff.append("-----Private Account end-)");
return buff.toString();
}
}

View file

@ -1,18 +0,0 @@
package droolscours.service;
import java.util.ArrayList;
import java.util.List;
import droolscours.Customer;
public class CustomerService {
public List<Customer> getListCustomer(){
List<Customer> result = new ArrayList<Customer>();
result.add(new Customer("Héron", "Nicolas", "Fr"));
result.add(new Customer("Héron", "James", "GB"));
result.add(new Customer("Héron", "Nicolas", "GB"));
return result;
}
}

View file

@ -1,20 +0,0 @@
package util;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
public class DateHelper {
public static String sFormat = "yyyy-MM-dd";
public static Date getDate(String sDate) throws Exception {
SimpleDateFormat sdf = new SimpleDateFormat(sFormat);
return sdf.parse(sDate);
}
public static Date getDate(String sDate, String anotherFormat)
throws Exception {
SimpleDateFormat sdf = new SimpleDateFormat(anotherFormat);
return sdf.parse(sDate);
}
}

View file

@ -1,137 +0,0 @@
package util;
import org.drools.KnowledgeBase;
import org.drools.KnowledgeBaseFactory;
import org.drools.builder.KnowledgeBuilder;
import org.drools.builder.KnowledgeBuilderError;
import org.drools.builder.KnowledgeBuilderErrors;
import org.drools.builder.KnowledgeBuilderFactory;
import org.drools.builder.ResourceType;
import org.drools.event.rule.DefaultAgendaEventListener;
import org.drools.event.rule.ActivationCancelledEvent;
import org.drools.event.rule.ActivationCreatedEvent;
import org.drools.event.rule.AfterActivationFiredEvent;
import org.drools.event.rule.AgendaGroupPoppedEvent;
import org.drools.event.rule.AgendaGroupPushedEvent;
import org.drools.event.rule.BeforeActivationFiredEvent;
import org.drools.event.rule.ObjectInsertedEvent;
import org.drools.event.rule.ObjectRetractedEvent;
import org.drools.event.rule.ObjectUpdatedEvent;
import org.drools.event.rule.WorkingMemoryEventListener;
import org.drools.io.ResourceFactory;
import org.drools.runtime.StatefulKnowledgeSession;
import org.drools.runtime.StatelessKnowledgeSession;
public class KnowledgeSessionHelper {
private static KnowledgeBase createRuleBase(String drlFile) {
KnowledgeBase ruleBase = null;
KnowledgeBuilder kbuilder = KnowledgeBuilderFactory
.newKnowledgeBuilder();
kbuilder.add(ResourceFactory.newClassPathResource(drlFile),
ResourceType.DRL);
KnowledgeBuilderErrors errors = kbuilder.getErrors();
if (errors.size() > 0) {
for (KnowledgeBuilderError error : errors) {
System.err.println(error);
}
throw new IllegalArgumentException(
"Probleme a la lecture du fichier.");
}
ruleBase = KnowledgeBaseFactory.newKnowledgeBase();
ruleBase.addKnowledgePackages(kbuilder.getKnowledgePackages());
return ruleBase;
}
public static StatelessKnowledgeSession getStatelessKnowledgeSession(
String drlFile) {
KnowledgeBase ruleBase = createRuleBase(drlFile);
return ruleBase.newStatelessKnowledgeSession();
}
public static StatefulKnowledgeSession getStatefulKnowledgeSession(
String drlFile) {
KnowledgeBase ruleBase = createRuleBase(drlFile);
return ruleBase.newStatefulKnowledgeSession();
}
public static StatefulKnowledgeSession getStatefulKnowledgeSessionWithCallback(
String drlFile) {
StatefulKnowledgeSession session = getStatefulKnowledgeSession(drlFile);
session.addEventListener(new WorkingMemoryEventListener() {
//@Override
public void objectUpdated(ObjectUpdatedEvent arg0) {
System.out.println("Object mise à jour \n"
+ "Nouvelles valeurs \n" + arg0.getObject().toString());
}
//@Override
public void objectRetracted(ObjectRetractedEvent arg0) {
System.out.println("Object retiré \n"
+ arg0.getOldObject().toString());
}
//@Override
public void objectInserted(ObjectInsertedEvent arg0) {
System.out.println("Object inséré \n"
+ arg0.getObject().toString());
}
});
session.addEventListener(new DefaultAgendaEventListener() {
@Override
public void beforeActivationFired(BeforeActivationFiredEvent arg0) {
System.out.println("La règle "
+ arg0.getActivation().getRule().getName()
+ " va être déclenchée");
}
@Override
public void agendaGroupPushed(AgendaGroupPushedEvent arg0) {
}
@Override
public void agendaGroupPopped(AgendaGroupPoppedEvent arg0) {
}
@Override
public void afterActivationFired(AfterActivationFiredEvent arg0) {
System.out.println("La règle "
+ arg0.getActivation().getRule().getName()
+ " a êté déclenchée");
}
@Override
public void activationCreated(ActivationCreatedEvent arg0) {
// TODO Auto-generated method stub
}
@Override
public void activationCancelled(ActivationCancelledEvent arg0) {
}
});
return session;
}
public static StatefulKnowledgeSession getStatefulKnowledgeSession(
String drlFile,String rfFile) {
KnowledgeBase ruleBase = null;
KnowledgeBuilder kbuilder = KnowledgeBuilderFactory
.newKnowledgeBuilder();
kbuilder.add(ResourceFactory.newClassPathResource(drlFile),
ResourceType.DRL);
kbuilder.add(ResourceFactory.newClassPathResource(rfFile),
ResourceType.DRF);
KnowledgeBuilderErrors errors = kbuilder.getErrors();
if (errors.size() > 0) {
for (KnowledgeBuilderError error : errors) {
System.err.println(error);
}
throw new IllegalArgumentException(
"Probleme a la lecture du fichier.");
}
ruleBase = KnowledgeBaseFactory.newKnowledgeBase();
ruleBase.addKnowledgePackages(kbuilder.getKnowledgePackages());
return ruleBase.newStatefulKnowledgeSession();
}
}

View file

@ -0,0 +1,48 @@
<?xml version="1.0" encoding="UTF-8"?>
<kmodule xmlns="http://jboss.org/kie/6.0.0/kmodule">
<kbase name="sample" packages="sample">
<ksession name="sample-session"/>
</kbase>
<kbase name="simplesample" packages="simplesample">
<ksession name="simplesample-session"/>
</kbase>
<kbase name="part1" packages="part1">
<ksession name="part1-rules"/>
</kbase>
<kbase name="part2" packages="part2">
<ksession name="part2-rules"/>
</kbase>
<kbase name="part3" packages="part3">
<ksession name="part3-rules"/>
</kbase>
<kbase name="part4" packages="part4">
<ksession name="part4-rules"/>
</kbase>
<kbase name="part5" packages="part5">
<ksession name="part5-rules"/>
</kbase>
<kbase name="part6" packages="part6">
<ksession name="part6-rules"/>
</kbase>
<kbase name="part7" packages="part7">
<ksession name="part7-rules"/>
</kbase>
<kbase name="demo" packages="demo">
<ksession name="demo-rules"/>
</kbase>
<kbase name="demo-global" packages="demo-global">
<ksession name="demo-global-rules"/>
</kbase>
<kbase name="demo-insertupdatedelete" packages="demo-insertupdatedelete">
<ksession name="demo-insertupdatedelete-rules"/>
</kbase>
<kbase name="demo-ruleflow1" packages="demo-ruleflow1">
<ksession name="demo-ruleflow1-rules"/>
</kbase>
<kbase name="demo-ruleflow2" packages="demo-ruleflow2">
<ksession name="demo-ruleflow2-rules"/>
</kbase>
<kbase name="demo-ruleflow3" packages="demo-ruleflow3">
<ksession name="demo-ruleflow3-rules"/>
</kbase>
</kmodule>

View file

@ -1,51 +1,48 @@
package droolscours; package droolscours;
import org.drools.event.rule.ObjectInsertedEvent;
import org.drools.event.rule.ObjectRetractedEvent;
import org.drools.event.rule.ObjectUpdatedEvent;
import org.drools.event.rule.WorkingMemoryEventListener;
import org.drools.runtime.StatefulKnowledgeSession;
import org.drools.runtime.StatelessKnowledgeSession;
import org.junit.Assert; import org.junit.Assert;
import org.junit.BeforeClass;
import org.junit.Test; import org.junit.Test;
import org.kie.api.event.rule.ObjectDeletedEvent;
import org.kie.api.event.rule.ObjectInsertedEvent;
import org.kie.api.event.rule.ObjectUpdatedEvent;
import org.kie.api.event.rule.RuleRuntimeEventListener;
import org.kie.api.runtime.KieContainer;
import org.kie.api.runtime.KieSession;
import org.kie.api.runtime.StatelessKieSession;
import util.DateHelper; import util.DateHelper;
import util.KnowledgeSessionHelper; import util.KnowledgeSessionHelper;
public class PremierEssai { public class PremierEssai {
StatelessKnowledgeSession sessionStateless = null; static KieContainer kieContainer;
StatefulKnowledgeSession sessionStatefull = null; StatelessKieSession sessionStateless = null;
KieSession sessionStatefull = null;
@Test @BeforeClass
public void test1() { public static void beforeClass() {
sessionStateless = KnowledgeSessionHelper kieContainer = KnowledgeSessionHelper.createRuleBase();
.getStatelessKnowledgeSession("Sample.drl");
sessionStateless.execute(new String("Hello"));
} }
@Test @Test
public void testSimple() throws Exception { public void testSimple() throws Exception {
sessionStatefull = KnowledgeSessionHelper sessionStatefull = KnowledgeSessionHelper
.getStatefulKnowledgeSession("SimpleSample.drl"); .getStatefulKnowledgeSession(kieContainer, "simplesample-session");
sessionStatefull.addEventListener(new WorkingMemoryEventListener() { sessionStatefull.addEventListener(new RuleRuntimeEventListener() {
//@Override public void objectInserted(ObjectInsertedEvent event) {
public void objectUpdated(ObjectUpdatedEvent arg0) { System.out.println("Object inserted \n"
System.out.println("Object mise à jour \n" + event.getObject().toString());
+ "Nouvelles valeurs \n" + arg0.getObject().toString());
} }
//@Override public void objectUpdated(ObjectUpdatedEvent event) {
public void objectRetracted(ObjectRetractedEvent arg0) { System.out.println("Object was updated \n"
System.out.println("Object retiré \n" + "new Content \n" + event.getObject().toString());
+ arg0.getOldObject().toString());
} }
//Override public void objectDeleted(ObjectDeletedEvent event) {
public void objectInserted(ObjectInsertedEvent arg0) { System.out.println("Object retracted \n"
System.out.println("Object inséré \n" + event.getOldObject().toString());
+ arg0.getObject().toString());
} }
}); });
Account account = new Account(); Account account = new Account();

View file

@ -1,16 +1,23 @@
package droolscours; package droolscours;
import org.drools.runtime.StatefulKnowledgeSession; import droolscours.util.OutputDisplay;
import org.junit.After; import org.junit.After;
import org.junit.Before; import org.junit.Before;
import org.junit.BeforeClass;
import org.junit.Test; import org.junit.Test;
import org.kie.api.runtime.KieContainer;
import org.kie.api.runtime.KieSession;
import util.KnowledgeSessionHelper; import util.KnowledgeSessionHelper;
import util.OutputDisplay;
public class TestRuleFlow { public class TestRuleFlow {
StatefulKnowledgeSession sessionStatefull = null; static KieContainer kieContainer;
KieSession sessionStatefull = null;
@BeforeClass
public static void beforeClass() {
kieContainer = KnowledgeSessionHelper.createRuleBase();
}
@Before @Before
public void setUp() throws Exception { public void setUp() throws Exception {
@ -25,9 +32,9 @@ public class TestRuleFlow {
@Test @Test
public void testdeuxFait1() { public void testdeuxFait1() {
sessionStatefull = KnowledgeSessionHelper sessionStatefull = KnowledgeSessionHelper
.getStatefulKnowledgeSession("demo-ruleflow.drl","RuleFlow1.rf"); .getStatefulKnowledgeSession(kieContainer, "demo-ruleflow1-rules");
OutputDisplay display = new OutputDisplay(); OutputDisplay display = new OutputDisplay();
sessionStatefull.setGlobal("result", display); sessionStatefull.setGlobal("showResult", display);
Account a = new Account(); Account a = new Account();
sessionStatefull.insert(a); sessionStatefull.insert(a);
AccountingPeriod period = new AccountingPeriod(); AccountingPeriod period = new AccountingPeriod();
@ -38,9 +45,9 @@ public class TestRuleFlow {
@Test @Test
public void testdeuxFait2() { public void testdeuxFait2() {
sessionStatefull = KnowledgeSessionHelper sessionStatefull = KnowledgeSessionHelper
.getStatefulKnowledgeSession("demo-ruleflow2.drl","RuleFlow2.rf"); .getStatefulKnowledgeSession(kieContainer, "demo-ruleflow2-rules");
OutputDisplay display = new OutputDisplay(); OutputDisplay display = new OutputDisplay();
sessionStatefull.setGlobal("result", display); sessionStatefull.setGlobal("showResult", display);
Account a = new Account(); Account a = new Account();
sessionStatefull.insert(a); sessionStatefull.insert(a);
AccountingPeriod period = new AccountingPeriod(); AccountingPeriod period = new AccountingPeriod();
@ -50,9 +57,9 @@ public class TestRuleFlow {
@Test @Test
public void testdeuxFait3() { public void testdeuxFait3() {
sessionStatefull = KnowledgeSessionHelper sessionStatefull = KnowledgeSessionHelper
.getStatefulKnowledgeSession("demo-ruleflow3.drl","RuleFlow3.rf"); .getStatefulKnowledgeSession(kieContainer, "demo-ruleflow3-rules");
OutputDisplay display = new OutputDisplay(); OutputDisplay display = new OutputDisplay();
sessionStatefull.setGlobal("result", display); sessionStatefull.setGlobal("showResult", display);
Account a = new Account(); Account a = new Account();
a.setBalance(1500); a.setBalance(1500);
sessionStatefull.insert(a); sessionStatefull.insert(a);

View file

@ -1,138 +0,0 @@
package droolscours;
import org.drools.event.rule.ObjectInsertedEvent;
import org.drools.event.rule.ObjectRetractedEvent;
import org.drools.event.rule.ObjectUpdatedEvent;
import org.drools.event.rule.WorkingMemoryEventListener;
import org.drools.runtime.StatefulKnowledgeSession;
import org.drools.runtime.rule.FactHandle;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import util.KnowledgeSessionHelper;
import util.OutputDisplay;
public class TestUnFait {
StatefulKnowledgeSession sessionStatefull = null;
@Before
public void setUp() throws Exception {
System.out.println("------------Before------------");
}
@After
public void tearDown() throws Exception {
System.out.println("------------Après ------------");
}
@Test
public void testUnFaitSansFait() {
sessionStatefull = KnowledgeSessionHelper
.getStatefulKnowledgeSession("demo.drl");
sessionStatefull.fireAllRules();
System.out.println("Avez-vous vu quelquechose ?");
}
@Test
public void testUnFaitAvecAccountCommeFait() {
sessionStatefull = KnowledgeSessionHelper
.getStatefulKnowledgeSession("demo.drl");
Account a = new Account();
sessionStatefull.insert(a);
sessionStatefull.fireAllRules();
System.out.println("Vous avez donc vu quelquechose ;)");
}
@Test
public void testUnFaitAvecAccountCommeFaitGlobal() {
sessionStatefull = KnowledgeSessionHelper
.getStatefulKnowledgeSession("demo-global.drl");
Account a = new Account();
OutputDisplay display = new OutputDisplay();
sessionStatefull.setGlobal("result", display);
sessionStatefull.insert(a);
sessionStatefull.fireAllRules();
System.out.println("Vous avez donc vu quelquechose ;)");
}
@Test
public void testUnFaitAvecAccountCommeFaitGlobalEtAvecCallBack() {
sessionStatefull = KnowledgeSessionHelper
.getStatefulKnowledgeSession("demo.drl");
sessionStatefull.addEventListener(new WorkingMemoryEventListener() {
//@Override
public void objectUpdated(ObjectUpdatedEvent arg0) {
System.out.println("Object mise à jour \n"
+ "Nouvelles valeurs \n" + arg0.getObject().toString());
}
//@Override
public void objectRetracted(ObjectRetractedEvent arg0) {
System.out.println("Object retiré \n"
+ arg0.getOldObject().toString());
}
//@Override
public void objectInserted(ObjectInsertedEvent arg0) {
System.out.println("Object inséré \n"
+ arg0.getObject().toString());
}
});
Account a = new Account();
a.setAccountno(0);
FactHandle handlea = sessionStatefull.insert(a);
a.setAccountno(100);
sessionStatefull.update(handlea, a);
sessionStatefull.retract(handlea);
sessionStatefull.fireAllRules();
System.out.println("Vous avez donc vu quelquechose ;)");
}
@Test
public void testUnFaitAvecAccountRDGDeclenchement1() {
sessionStatefull = KnowledgeSessionHelper
.getStatefulKnowledgeSession("demo.drl");
Account a = new Account();
FactHandle handlea = sessionStatefull.insert(a);
sessionStatefull.fireAllRules();
sessionStatefull.fireAllRules();
}
@Test
public void testUnFaitAvecAccountRDGDeclenchement2() {
sessionStatefull = KnowledgeSessionHelper
.getStatefulKnowledgeSession("demo.drl");
Account a = new Account();
FactHandle handlea = sessionStatefull.insert(a);
sessionStatefull.fireAllRules();
sessionStatefull.update(handlea, a);
sessionStatefull.fireAllRules();
}
@Test
public void testUnFaitAvecAccountInsert() {
sessionStatefull = KnowledgeSessionHelper
.getStatefulKnowledgeSession("demo-insertupdatedelete.drl");
OutputDisplay display = new OutputDisplay();
sessionStatefull.setGlobal("result", display);
sessionStatefull.addEventListener(new WorkingMemoryEventListener() {
//@Override
public void objectUpdated(ObjectUpdatedEvent arg0) {
System.out.println("Object mise à jour \n"
+ "Nouvelles valeurs \n" + arg0.getObject().toString());
}
//@Override
public void objectRetracted(ObjectRetractedEvent arg0) {
System.out.println("Object retiré \n"
+ arg0.getOldObject().toString());
}
//@Override
public void objectInserted(ObjectInsertedEvent arg0) {
System.out.println("Object inséré \n"
+ arg0.getObject().toString());
}
});
Account a = new Account();
FactHandle handlea = sessionStatefull.insert(a);
sessionStatefull.fireAllRules();
}
}

View file

@ -1,20 +1,27 @@
package droolscours; package droolscours;
import droolscours.service.CustomerService; import droolscours.service.CustomerService;
import droolscours.util.OutputDisplay;
import junit.framework.Assert; import junit.framework.Assert;
import org.drools.runtime.StatefulKnowledgeSession;
import org.drools.runtime.rule.FactHandle;
import org.junit.After; import org.junit.After;
import org.junit.Before; import org.junit.Before;
import org.junit.BeforeClass;
import org.junit.Test; import org.junit.Test;
import org.kie.api.runtime.KieContainer;
import org.kie.api.runtime.KieSession;
import org.kie.api.runtime.rule.FactHandle;
import util.DateHelper; import util.DateHelper;
import util.KnowledgeSessionHelper; import util.KnowledgeSessionHelper;
import util.OutputDisplay;
public class Testlanguage { public class Testlanguage {
StatefulKnowledgeSession sessionStatefull = null; static KieContainer kieContainer;
KieSession sessionStatefull = null;
@BeforeClass
public static void beforeClass() {
kieContainer = KnowledgeSessionHelper.createRuleBase();
}
@Before @Before
public void setUp() throws Exception { public void setUp() throws Exception {
System.out.println("------------Before------------"); System.out.println("------------Before------------");
@ -28,10 +35,10 @@ public class Testlanguage {
@Test @Test
public void testdeuxFait1() { public void testdeuxFait1() {
sessionStatefull = KnowledgeSessionHelper sessionStatefull = KnowledgeSessionHelper
.getStatefulKnowledgeSessionWithCallback("demo-Language.drl"); .getStatefulKnowledgeSessionWithCallback(kieContainer, "part1-rules");
OutputDisplay display = new OutputDisplay(); OutputDisplay display = new OutputDisplay();
sessionStatefull.setGlobal("result", display); sessionStatefull.setGlobal("showResult", display);
Account a = new Account(); Account a = new Account();
sessionStatefull.insert(a); sessionStatefull.insert(a);
AccountingPeriod period = new AccountingPeriod(); AccountingPeriod period = new AccountingPeriod();
@ -42,9 +49,9 @@ public class Testlanguage {
@Test @Test
public void testdeuxFait2() throws Exception { public void testdeuxFait2() throws Exception {
sessionStatefull = KnowledgeSessionHelper sessionStatefull = KnowledgeSessionHelper
.getStatefulKnowledgeSessionWithCallback("demo-Language.drl"); .getStatefulKnowledgeSessionWithCallback(kieContainer, "part1-rules");
OutputDisplay display = new OutputDisplay(); OutputDisplay display = new OutputDisplay();
sessionStatefull.setGlobal("result", display); sessionStatefull.setGlobal("showResult", display);
Account a = new Account(); Account a = new Account();
a.setAccountno(1); a.setAccountno(1);
a.setBalance(0); a.setBalance(0);
@ -61,9 +68,9 @@ public class Testlanguage {
@Test @Test
public void testdeuxFait3() throws Exception { public void testdeuxFait3() throws Exception {
sessionStatefull = KnowledgeSessionHelper sessionStatefull = KnowledgeSessionHelper
.getStatefulKnowledgeSessionWithCallback("demo-Language.drl"); .getStatefulKnowledgeSessionWithCallback(kieContainer, "part1-rules");
OutputDisplay display = new OutputDisplay(); OutputDisplay display = new OutputDisplay();
sessionStatefull.setGlobal("result", display); sessionStatefull.setGlobal("showResult", display);
Account a = new Account(); Account a = new Account();
a.setAccountno(1); a.setAccountno(1);
a.setBalance(0); a.setBalance(0);
@ -86,9 +93,9 @@ public class Testlanguage {
@Test @Test
public void testdeuxFait4() throws Exception { public void testdeuxFait4() throws Exception {
sessionStatefull = KnowledgeSessionHelper sessionStatefull = KnowledgeSessionHelper
.getStatefulKnowledgeSessionWithCallback("demo-Language2.drl"); .getStatefulKnowledgeSessionWithCallback(kieContainer, "part2-rules");
OutputDisplay display = new OutputDisplay(); OutputDisplay display = new OutputDisplay();
sessionStatefull.setGlobal("result", display); sessionStatefull.setGlobal("showResult", display);
Account a = new Account(); Account a = new Account();
a.setAccountno(1); a.setAccountno(1);
a.setBalance(0); a.setBalance(0);
@ -121,9 +128,9 @@ public class Testlanguage {
@Test @Test
public void testdeuxFait5() throws Exception { public void testdeuxFait5() throws Exception {
sessionStatefull = KnowledgeSessionHelper sessionStatefull = KnowledgeSessionHelper
.getStatefulKnowledgeSessionWithCallback("demo-Language3.drl"); .getStatefulKnowledgeSessionWithCallback(kieContainer, "part3-rules");
OutputDisplay display = new OutputDisplay(); OutputDisplay display = new OutputDisplay();
sessionStatefull.setGlobal("result", display); sessionStatefull.setGlobal("showResult", display);
Customer customer = new Customer(); Customer customer = new Customer();
customer.setName("Héron"); customer.setName("Héron");
customer.setSurname("Nicolas"); customer.setSurname("Nicolas");
@ -135,9 +142,9 @@ public class Testlanguage {
@Test @Test
public void testdeuxFait6() throws Exception { public void testdeuxFait6() throws Exception {
sessionStatefull = KnowledgeSessionHelper sessionStatefull = KnowledgeSessionHelper
.getStatefulKnowledgeSessionWithCallback("demo-Language3.drl"); .getStatefulKnowledgeSessionWithCallback(kieContainer, "part3-rules");
OutputDisplay display = new OutputDisplay(); OutputDisplay display = new OutputDisplay();
sessionStatefull.setGlobal("result", display); sessionStatefull.setGlobal("showResult", display);
Customer customer = new Customer(); Customer customer = new Customer();
customer.setName("Héron"); customer.setName("Héron");
customer.setSurname("Nicolas"); customer.setSurname("Nicolas");
@ -151,9 +158,9 @@ public class Testlanguage {
@Test @Test
public void testdeuxFait7() throws Exception { public void testdeuxFait7() throws Exception {
sessionStatefull = KnowledgeSessionHelper sessionStatefull = KnowledgeSessionHelper
.getStatefulKnowledgeSessionWithCallback("demo-Language3.drl"); .getStatefulKnowledgeSessionWithCallback(kieContainer, "part3-rules");
OutputDisplay display = new OutputDisplay(); OutputDisplay display = new OutputDisplay();
sessionStatefull.setGlobal("result", display); sessionStatefull.setGlobal("showResult", display);
Account pAccount = new Account(); Account pAccount = new Account();
sessionStatefull.insert(pAccount); sessionStatefull.insert(pAccount);
sessionStatefull.fireAllRules(); sessionStatefull.fireAllRules();
@ -161,9 +168,9 @@ public class Testlanguage {
@Test @Test
public void testdeuxFait8() throws Exception { public void testdeuxFait8() throws Exception {
sessionStatefull = KnowledgeSessionHelper sessionStatefull = KnowledgeSessionHelper
.getStatefulKnowledgeSessionWithCallback("demo-Language3.drl"); .getStatefulKnowledgeSessionWithCallback(kieContainer, "part3-rules");
OutputDisplay display = new OutputDisplay(); OutputDisplay display = new OutputDisplay();
sessionStatefull.setGlobal("result", display); sessionStatefull.setGlobal("showResult", display);
Account pAccount = new Account(); Account pAccount = new Account();
sessionStatefull.insert(pAccount); sessionStatefull.insert(pAccount);
sessionStatefull.fireAllRules(); sessionStatefull.fireAllRules();
@ -171,9 +178,9 @@ public class Testlanguage {
@Test @Test
public void testdeuxFait9() throws Exception { public void testdeuxFait9() throws Exception {
sessionStatefull = KnowledgeSessionHelper sessionStatefull = KnowledgeSessionHelper
.getStatefulKnowledgeSessionWithCallback("demo-Language4.drl"); .getStatefulKnowledgeSessionWithCallback(kieContainer, "part4-rules");
OutputDisplay display = new OutputDisplay(); OutputDisplay display = new OutputDisplay();
sessionStatefull.setGlobal("result", display); sessionStatefull.setGlobal("showResult", display);
Account a = new Account(); Account a = new Account();
a.setAccountno(1); a.setAccountno(1);
a.setBalance(0); a.setBalance(0);
@ -206,9 +213,9 @@ public class Testlanguage {
@Test @Test
public void testdeuxFait10() throws Exception { public void testdeuxFait10() throws Exception {
sessionStatefull = KnowledgeSessionHelper sessionStatefull = KnowledgeSessionHelper
.getStatefulKnowledgeSessionWithCallback("demo-Language5.drl"); .getStatefulKnowledgeSessionWithCallback(kieContainer, "part5-rules");
OutputDisplay display = new OutputDisplay(); OutputDisplay display = new OutputDisplay();
sessionStatefull.setGlobal("result", display); sessionStatefull.setGlobal("showResult", display);
sessionStatefull.setGlobal("serviceCustomer", new CustomerService()); sessionStatefull.setGlobal("serviceCustomer", new CustomerService());
Customer c = new Customer("Héron","Nicolas","A"); Customer c = new Customer("Héron","Nicolas","A");
sessionStatefull.insert(c); sessionStatefull.insert(c);
@ -217,9 +224,9 @@ public class Testlanguage {
@Test @Test
public void testdeuxFait11() throws Exception { public void testdeuxFait11() throws Exception {
sessionStatefull = KnowledgeSessionHelper sessionStatefull = KnowledgeSessionHelper
.getStatefulKnowledgeSessionWithCallback("demo-Language6.drl"); .getStatefulKnowledgeSessionWithCallback(kieContainer, "part6-rules");
OutputDisplay display = new OutputDisplay(); OutputDisplay display = new OutputDisplay();
sessionStatefull.setGlobal("result", display); sessionStatefull.setGlobal("showResult", display);
Account a = new Account(); Account a = new Account();
a.setAccountno(1); a.setAccountno(1);
a.setBalance(0); a.setBalance(0);
@ -233,16 +240,17 @@ public class Testlanguage {
@Test @Test
public void testdeuxFait12() throws Exception { public void testdeuxFait12() throws Exception {
sessionStatefull = KnowledgeSessionHelper sessionStatefull = KnowledgeSessionHelper
.getStatefulKnowledgeSessionWithCallback("demo-Language7.drl"); .getStatefulKnowledgeSessionWithCallback(kieContainer, "part7-rules");
OutputDisplay display = new OutputDisplay(); OutputDisplay display = new OutputDisplay();
sessionStatefull.setGlobal("result", display); sessionStatefull.setGlobal("showResult", display);
sessionStatefull.insert(new Account(1,0)); sessionStatefull.insert(new Account(1,0));
FactHandle fa = sessionStatefull.insert(new CashFlow(DateHelper.getDate("2010-01-15"), 1000, CashFlow.CREDIT, 1)); FactHandle fa = sessionStatefull.insert(new CashFlow(DateHelper.getDate("2010-01-15"), 1000, CashFlow.CREDIT, 1));
sessionStatefull.insert(new CashFlow(DateHelper.getDate("2010-02-15"),500,CashFlow.DEBIT,1)); sessionStatefull.insert(new CashFlow(DateHelper.getDate("2010-02-15"),500,CashFlow.DEBIT,1));
sessionStatefull.insert(new CashFlow(DateHelper.getDate("2010-04-15"),1000,CashFlow.CREDIT,1)); sessionStatefull.insert(new CashFlow(DateHelper.getDate("2010-04-15"),1000,CashFlow.CREDIT,1));
sessionStatefull.insert(new AccountingPeriod(DateHelper.getDate("2010-01-01"),DateHelper.getDate("2010-12-31"))); sessionStatefull.insert(new AccountingPeriod(DateHelper.getDate("2010-01-01"),DateHelper.getDate("2010-12-31")));
sessionStatefull.fireAllRules(); sessionStatefull.fireAllRules();
sessionStatefull.retract(fa); sessionStatefull.delete(fa);
sessionStatefull.fireAllRules(); sessionStatefull.fireAllRules();
} }
} }

View file

@ -1,20 +0,0 @@
package com.sample
import com.sample.DroolsTest.Message;
rule "Hello World"
when
m : Message( status == Message.HELLO, myMessage : message )
then
System.out.println( m.getMessage() );
m.setMessage( "Goodbye cruel world" );
m.setStatus( Message.GOODBYE );
update( m );
end
rule "GoodBye"
when
Message( status == Message.GOODBYE, myMessage : message )
then
System.out.println( myMessage );
end

View file

@ -3,20 +3,19 @@ package cours
//list any import classes here. //list any import classes here.
import droolscours.Account; import droolscours.Account;
import util.OutputDisplay; import droolscours.util.OutputDisplay;
//#declare any global variables here //#declare any global variables here
global OutputDisplay result; global OutputDisplay showResult;
rule "Your First Rule revisited" rule "Your First Rule revisited"
when when
Account( ) Account( )
then then
result.showText("Le compte existe donc déjà"); showResult.showText("Le compte existe donc déjà");
end end

View file

@ -3,15 +3,15 @@ package cours
//#list any import classes here. //#list any import classes here.
import droolscours.Account; import droolscours.Account;
import droolscours.AccountingPeriod; import droolscours.AccountingPeriod;
import util.OutputDisplay; import droolscours.util.OutputDisplay;
//#declare any global variables here //#declare any global variables here
global OutputDisplay result; global OutputDisplay showResult;
rule "Your First Rule revisited" rule "Your First Rule revisited"
when when
Account( ) Account( )
then then
result.showText("Le compte existe donc déjà"); showResult.showText("Le compte existe donc déjà");
AccountingPeriod newPeriod = new AccountingPeriod(); AccountingPeriod newPeriod = new AccountingPeriod();
insert (newPeriod); insert (newPeriod);
end end
@ -19,5 +19,5 @@ rule "Rule on Period"
when when
AccountingPeriod () AccountingPeriod ()
then then
result.showText("Période de compte existe"); showResult.showText("Période de compte existe");
end end

View file

@ -5,12 +5,12 @@ package cours
import droolscours.Account; import droolscours.Account;
import droolscours.AccountingPeriod; import droolscours.AccountingPeriod;
import droolscours.CashFlow; import droolscours.CashFlow;
import util.OutputDisplay; import droolscours.util.OutputDisplay;
//#declare any global variables here //#declare any global variables here
global OutputDisplay result; global OutputDisplay showResult;
rule "Account group1" rule "Account group1"
@ -18,7 +18,7 @@ rule "Account group1"
when when
Account( ) Account( )
then then
result.showText("Account in Group1"); showResult.showText("Account in Group1");
end end
rule "Account group2" rule "Account group2"
@ -26,7 +26,7 @@ rule "Account group2"
when when
Account( ) Account( )
then then
result.showText("Account in Group2"); showResult.showText("Account in Group2");
end end

View file

@ -5,17 +5,18 @@ package cours
import droolscours.Account; import droolscours.Account;
import droolscours.AccountingPeriod; import droolscours.AccountingPeriod;
import droolscours.CashFlow; import droolscours.CashFlow;
import util.OutputDisplay; import droolscours.util.OutputDisplay;
//#declare any global variables here //#declare any global variables here
global OutputDisplay result; global OutputDisplay showResult;
rule "start process" rule "start process"
when when
then then
kcontext.getKnowledgeRuntime().startProcess("RF2"); kcontext.getKieRuntime().startProcess("RF2");
end end
rule "Account group1" rule "Account group1"
@ -23,7 +24,7 @@ rule "Account group1"
when when
Account( ) Account( )
then then
result.showText("Account in Group1"); showResult.showText("Account in Group1");
end end
rule "Account group2" rule "Account group2"
@ -31,7 +32,7 @@ rule "Account group2"
when when
Account( ) Account( )
then then
result.showText("Account in Group2"); showResult.showText("Account in Group2");
end end

View file

@ -5,17 +5,17 @@ package cours
import droolscours.Account; import droolscours.Account;
import droolscours.AccountingPeriod; import droolscours.AccountingPeriod;
import droolscours.CashFlow; import droolscours.CashFlow;
import util.OutputDisplay; import droolscours.util.OutputDisplay;
//#declare any global variables here //#declare any global variables here
global OutputDisplay result; global OutputDisplay showResult;
rule "start process" rule "start process"
when when
then then
kcontext.getKnowledgeRuntime().startProcess("RF3"); kcontext.getKieRuntime().startProcess("RF3");
end end
rule "Account group1" rule "Account group1"
@ -23,7 +23,7 @@ rule "Account group1"
when when
Account(balance > 0 ) Account(balance > 0 )
then then
result.showText("Account in Group1 > 1000 "); showResult.showText("Account in Group1 > 1000 ");
end end
rule "Account group2" rule "Account group2"
@ -31,7 +31,7 @@ rule "Account group2"
when when
Account( ) Account( )
then then
result.showText("Account in Group2 < 1000"); showResult.showText("Account in Group2 < 1000");
end end

View file

@ -3,12 +3,12 @@ package cours
//list any import classes here. //list any import classes here.
import droolscours.Account; import droolscours.Account;
import util.OutputDisplay; import droolscours.util.OutputDisplay;
//declare any global variables here //declare any global variables here
global OutputDisplay result; global OutputDisplay showResult;
rule "Your First Rule" rule "Your First Rule"

View file

@ -5,12 +5,12 @@ package cours
import droolscours.Account; import droolscours.Account;
import droolscours.AccountingPeriod; import droolscours.AccountingPeriod;
import droolscours.CashFlow; import droolscours.CashFlow;
import util.OutputDisplay; import droolscours.util.OutputDisplay;
//#declare any global variables here //#declare any global variables here
global OutputDisplay result; global OutputDisplay showResult;
rule "Account and accounting period both exist" rule "Account and accounting period both exist"
@ -19,7 +19,7 @@ rule "Account and accounting period both exist"
Account( ) Account( )
AccountingPeriod( ) AccountingPeriod( )
then then
result.showText("Un compte est un accountingperiod existe"); showResult.showText("Un compte est un accountingperiod existe");
end end
rule "Credit rule" rule "Credit rule"
@ -29,6 +29,6 @@ rule "Credit rule"
$acc : Account(accountno ==$no ) $acc : Account(accountno ==$no )
then then
$acc.setBalance($acc.getBalance()+$cash.getAmount()); $acc.setBalance($acc.getBalance()+$cash.getAmount());
result.showText("le compte no "+$no+ " a maintenant une valeur de "+$acc.getBalance()); showResult.showText("le compte no "+$no+ " a maintenant une valeur de "+$acc.getBalance());
end end

View file

@ -5,9 +5,9 @@ package cours
import droolscours.Account; import droolscours.Account;
import droolscours.AccountingPeriod; import droolscours.AccountingPeriod;
import droolscours.CashFlow; import droolscours.CashFlow;
import util.OutputDisplay; import droolscours.util.OutputDisplay;
global OutputDisplay result; global OutputDisplay showResult;
rule "Credit rule" rule "Credit rule"
@ -17,7 +17,7 @@ rule "Credit rule"
$period : AccountingPeriod( startDate <= $aDate && endDate >= $aDate) $period : AccountingPeriod( startDate <= $aDate && endDate >= $aDate)
then then
$acc.setBalance($acc.getBalance()+$cash.getAmount()); $acc.setBalance($acc.getBalance()+$cash.getAmount());
result.showText("le compte no "+$no+ " a maintenant une valeur de "+$acc.getBalance()); showResult.showText("le compte no "+$no+ " a maintenant une valeur de "+$acc.getBalance());
end end
rule "Debit rule" rule "Debit rule"
@ -27,6 +27,6 @@ rule "Debit rule"
$period : AccountingPeriod( startDate <= $aDate && endDate >= $aDate) $period : AccountingPeriod( startDate <= $aDate && endDate >= $aDate)
then then
$acc.setBalance($acc.getBalance()-$cash.getAmount()); $acc.setBalance($acc.getBalance()-$cash.getAmount());
result.showText("le compte no "+$no+ " a maintenant une valeur de "+$acc.getBalance()); showResult.showText("le compte no "+$no+ " a maintenant une valeur de "+$acc.getBalance());
end end

View file

@ -7,9 +7,9 @@ import droolscours.AccountingPeriod;
import droolscours.CashFlow; import droolscours.CashFlow;
import droolscours.PrivateAccount; import droolscours.PrivateAccount;
import droolscours.Customer; import droolscours.Customer;
import util.OutputDisplay; import droolscours.util.OutputDisplay;
//#declare any global variables here //#declare any global variables here
global OutputDisplay result; global OutputDisplay showResult;
rule "Le cashFlow est du crédit ou du débit" rule "Le cashFlow est du crédit ou du débit"
@ -17,7 +17,7 @@ rule "Le cashFlow est du crédit ou du débit"
$cash :CashFlow(type in ( CashFlow.DEBIT,CashFlow.CREDIT) ) $cash :CashFlow(type in ( CashFlow.DEBIT,CashFlow.CREDIT) )
then then
result.showText("Cash Flow est un crédit ou un débit"); showResult.showText("Cash Flow est un crédit ou un débit");
end end
rule "Accessor" rule "Accessor"
@ -25,7 +25,7 @@ rule "Accessor"
$cash :PrivateAccount( owner.name =="Héron" ) $cash :PrivateAccount( owner.name =="Héron" )
then then
result.showText("Account is owned by Héron"); showResult.showText("Account is owned by Héron");
end end
rule "infixAnd" rule "infixAnd"
when when
@ -35,17 +35,17 @@ rule "infixAnd"
then then
result.showText("Person lives in GB or US"); showResult.showText("Person lives in GB or US");
end end
rule "no customer" rule "no customer"
when when
not Customer( ) not Customer( )
then then
result.showText("No customer"); showResult.showText("No customer");
end end
rule "Exists" rule "Exists"
when when
exists Account( ) exists Account( )
then then
result.showText("Account exists"); showResult.showText("Account exists");
end end

View file

@ -7,9 +7,9 @@ import droolscours.AccountingPeriod;
import droolscours.CashFlow; import droolscours.CashFlow;
import droolscours.PrivateAccount; import droolscours.PrivateAccount;
import droolscours.Customer; import droolscours.Customer;
import util.OutputDisplay; import droolscours.util.OutputDisplay;
//#declare any global variables here //#declare any global variables here
global OutputDisplay result; global OutputDisplay showResult;
rule "ForAll" rule "ForAll"
@ -19,7 +19,7 @@ rule "ForAll"
CashFlow( accountNo == $no) CashFlow( accountNo == $no)
) )
then then
result.showText("All mouvements concerns all account "); showResult.showText("All mouvements concerns all account ");
end end
rule "ForAll2" rule "ForAll2"
when when
@ -28,5 +28,5 @@ rule "ForAll2"
CashFlow( accountNo == $no) CashFlow( accountNo == $no)
then then
result.showText("All mouvements concerns only one account "); showResult.showText("All mouvements concerns only one account ");
end end

View file

@ -8,9 +8,9 @@ import droolscours.CashFlow;
import droolscours.PrivateAccount; import droolscours.PrivateAccount;
import droolscours.Customer; import droolscours.Customer;
import droolscours.service.CustomerService; import droolscours.service.CustomerService;
import util.OutputDisplay; import droolscours.util.OutputDisplay;
//#declare any global variables here //#declare any global variables here
global OutputDisplay result; global OutputDisplay showResult;
global CustomerService serviceCustomer; global CustomerService serviceCustomer;
rule "ForAll" rule "ForAll"
@ -18,5 +18,5 @@ rule "ForAll"
$c : Customer() $c : Customer()
$cc : Customer(name ==$c.name,surname==$c.surname,country !=$c.country) from serviceCustomer.getListCustomer(); $cc : Customer(name ==$c.name,surname==$c.surname,country !=$c.country) from serviceCustomer.getListCustomer();
then then
result.showText("Found same customer in 2 countries"); showResult.showText("Found same customer in 2 countries");
end end

View file

@ -9,9 +9,9 @@ import droolscours.PrivateAccount;
import droolscours.Customer; import droolscours.Customer;
import droolscours.service.CustomerService; import droolscours.service.CustomerService;
import java.util.ArrayList; import java.util.ArrayList;
import util.OutputDisplay; import droolscours.util.OutputDisplay;
//#declare any global variables here //#declare any global variables here
global OutputDisplay result; global OutputDisplay showResult;
global CustomerService serviceCustomer; global CustomerService serviceCustomer;
rule "More then 2 CashFlow Line" rule "More then 2 CashFlow Line"
@ -22,12 +22,12 @@ rule "More then 2 CashFlow Line"
from collect( CashFlow( mvtDate >= $sDate && mvtDate <= $eDate,accountNo == $acc ) ) from collect( CashFlow( mvtDate >= $sDate && mvtDate <= $eDate,accountNo == $acc ) )
then then
result.showText("Found more than 2 CashFlow Lines"); showResult.showText("Found more than 2 CashFlow Lines");
result.showText("<<<<<<<<<<"); showResult.showText("<<<<<<<<<<");
for (Object ff : $number){ for (Object ff : $number){
result.showText(ff.toString()); showResult.showText(ff.toString());
} }
result.showText(">>>>>>>>>>>>>>>>"); showResult.showText(">>>>>>>>>>>>>>>>");
end end
rule "Numbers of CashFlow Line" rule "Numbers of CashFlow Line"
@ -38,5 +38,5 @@ rule "Numbers of CashFlow Line"
from collect( CashFlow( mvtDate >= $sDate && mvtDate <= $eDate,accountNo == $acc ) ) from collect( CashFlow( mvtDate >= $sDate && mvtDate <= $eDate,accountNo == $acc ) )
then then
result.showText("Found "+$number+" more than 2 CashFlow Lines"); showResult.showText("Found "+$number+" more than 2 CashFlow Lines");
end end

View file

@ -9,9 +9,9 @@ import droolscours.PrivateAccount;
import droolscours.Customer; import droolscours.Customer;
import droolscours.service.CustomerService; import droolscours.service.CustomerService;
import java.util.ArrayList; import java.util.ArrayList;
import util.OutputDisplay; import droolscours.util.OutputDisplay;
//#declare any global variables here //#declare any global variables here
global OutputDisplay result; global OutputDisplay showResult;
global CustomerService serviceCustomer; global CustomerService serviceCustomer;
@ -33,6 +33,6 @@ rule "Credit and Debit Rule"
result( total ) ) result( total ) )
then then
result.showText(" Found "+$totalCredit+" as a credit"); showResult.showText(" Found "+$totalCredit+" as a credit");
result.showText(" Found "+$totalDebit+" as a debit"); showResult.showText(" Found "+$totalDebit+" as a debit");
end end

View file

@ -1,6 +1,5 @@
package com.sample package com.sample
import com.sample.DroolsTest.Message;
import droolscours.Account; import droolscours.Account;
import droolscours.AccountingPeriod; import droolscours.AccountingPeriod;
import droolscours.CashFlow; import droolscours.CashFlow;

Some files were not shown because too many files have changed in this diff Show more