Lets create a simple Drools example using Maven
- Open Eclipse IDE
- File -> New maven project
- choose the simple maven project
- enter the Group Id and Artifact Id as below
- Group ID : com.droolstutorials.examples.drools
- Artifact ID : Drools6.2Example
- click Finish.
A pom.xml will be created in the project .
Add the below dependencies to it.
<dependencies> <dependency> <groupId>org.drools</groupId> <artifactId>drools-compiler</artifactId> <version>6.0.0.CR1</version> </dependency> <dependency> <groupId>org.drools</groupId> <artifactId>drools-core</artifactId> <version>6.0.0.CR1</version> </dependency> </dependencies>Your final pom.xml will look like this.
Lets first create a package as below
- src.main.java.com.droolstutorials.examples.drools.controller
- RulesExecutor
package com.droolstutorials.examples.drools.controller;
import org.kie.api.KieServices;
import org.kie.api.builder.KieBuilder;
import org.kie.api.builder.KieFileSystem;
import org.kie.api.builder.KieRepository;
import org.kie.api.builder.Message.Level;
import org.kie.api.io.KieResources;
import org.kie.api.io.Resource;
import org.kie.api.runtime.KieContainer;
import org.kie.api.runtime.KieSession;
public class RulesExecutor {
public void runRules(String[] rules, Object[] employees) {
KieServices kieServices = KieServices.Factory.get();
KieResources kieResources = kieServices.getResources();
KieFileSystem kieFileSystem = kieServices.newKieFileSystem();
KieRepository kieRepository = kieServices.getRepository();
for (String ruleFile : rules) {
Resource resource = kieResources.newClassPathResource(ruleFile);
kieFileSystem.write(
"src/main/resources/com/droolstutorials/examples/drools/"
+ ruleFile, resource);
}
KieBuilder kb = kieServices.newKieBuilder(kieFileSystem);
kb.buildAll();
if (kb.getResults().hasMessages(Level.ERROR)) {
throw new RuntimeException("Build Errors:\n"
+ kb.getResults().toString());
}
KieContainer kContainer = kieServices.newKieContainer(kieRepository
.getDefaultReleaseId());
KieSession kSession = kContainer.newKieSession();
for (Object emp : employees) {
kSession.insert(emp);
}
System.out.println("rules int "+kSession.fireAllRules());
}
}
Lets now create a package as below
- src.main.java.com.droolstutorials.examples.drools.model
- Employee
package com.droolstutorials.examples.drools.model;
public class Employee {
private String name;
private String type;
public Employee(String name, String type) {
this.name = name;
this.type = type;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getType() {
return type;
}
public void setAge(String type) {
this.type = type;
}
}
public class Employee {
private String name;
private String type;
public Employee(String name, String type) {
this.name = name;
this.type = type;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getType() {
return type;
}
public void setAge(String type) {
this.type = type;
}
}
Lets now create a package as below
- src.main.resources
- Employee.drl
import com.droolstutorials.examples.drools.model.Employee
dialect "mvel"
rule "onsite"
when
$employee : Employee(type.equals("onsite"))
then
System.out.println("onsite :: "+$employee.name);
end
rule "name without a"
when
$employee : Employee(!name.contains("a"))
then
System.out.println("name without a :: "+$employee.name);
end
Now its time for creating the Main class to test it.
Create the main class in the below locaton
- src.main.java.com.droolstutorials.examples.drools
package com.droolstutorials.examples.drools;
import com.droolstutorials.examples.drools.controller.RulesExecutor;
import com.droolstutorials.examples.drools.model.Employee;
public class Main
{
public static void main(String[] args)
{
RulesExecutor runner = new RulesExecutor();
String valStr="";
Employee naren = new Employee("Narendar", "onsite");
Employee karthi = new Employee("KarthiK", "offshore");
Employee ehfaj = new Employee("Ehfaj", "onsite");
Employee bala = new Employee("Bala", "offshore");
Employee pintu = new Employee("Pintu", "offshore");
String[] rules = { "Employee.drl" };
Object[] employees = {naren, karthi, ehfaj, bala, pintu};
runner.runRules(rules,employees);
}
}
import com.droolstutorials.examples.drools.controller.RulesExecutor;
import com.droolstutorials.examples.drools.model.Employee;
public class Main
{
public static void main(String[] args)
{
RulesExecutor runner = new RulesExecutor();
String valStr="";
Employee naren = new Employee("Narendar", "onsite");
Employee karthi = new Employee("KarthiK", "offshore");
Employee ehfaj = new Employee("Ehfaj", "onsite");
Employee bala = new Employee("Bala", "offshore");
Employee pintu = new Employee("Pintu", "offshore");
String[] rules = { "Employee.drl" };
Object[] employees = {naren, karthi, ehfaj, bala, pintu};
runner.runRules(rules,employees);
}
}
Now run the Main as java application and you can see the drools rules getting executed.
Happy Drooling...


No comments:
Post a Comment