forked from rbmonster/learning-note
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
7 changed files
with
140 additions
and
1 deletion.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
File renamed without changes.
File renamed without changes
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,100 @@ | ||
package com.other.ruleengine; | ||
|
||
import org.kie.api.KieServices; | ||
import org.kie.api.event.rule.DebugAgendaEventListener; | ||
import org.kie.api.event.rule.DebugRuleRuntimeEventListener; | ||
import org.kie.api.logger.KieRuntimeLogger; | ||
import org.kie.api.runtime.KieContainer; | ||
import org.kie.api.runtime.KieSession; | ||
|
||
import java.util.ArrayList; | ||
import java.util.List; | ||
|
||
public class HelloWorld { | ||
|
||
public static final void main(final String[] args) { | ||
// From the kie services, a container is created from the classpath | ||
KieServices ks = KieServices.get(); | ||
|
||
KieContainer kc = ks.getKieClasspathContainer(); | ||
|
||
execute( ks, kc ); | ||
} | ||
|
||
public static void execute( KieServices ks, KieContainer kc ) { | ||
// From the container, a session is created based on | ||
// its definition and configuration in the META-INF/kmodule.xml file | ||
KieSession ksession = kc.newKieSession("HelloWorldKS"); | ||
|
||
// Once the session is created, the application can interact with it | ||
// In this case it is setting a global as defined in the | ||
// org/drools/examples/helloworld/HelloWorld.drl file | ||
ksession.setGlobal( "list", new ArrayList<Object>() ); | ||
|
||
// The application can also setup listeners | ||
ksession.addEventListener( new DebugAgendaEventListener() ); | ||
ksession.addEventListener( new DebugRuleRuntimeEventListener() ); | ||
|
||
// Set up a file based audit logger | ||
KieRuntimeLogger logger = ks.getLoggers().newFileLogger( ksession, "./helloworld" ); | ||
|
||
// To set up a ThreadedFileLogger, so that the audit view reflects events whilst debugging, | ||
// uncomment the next line | ||
// KieRuntimeLogger logger = ks.getLoggers().newThreadedFileLogger( ksession, "./helloworld", 1000 ); | ||
|
||
// The application can insert facts into the session | ||
final Message message = new Message(); | ||
message.setMessage( "Hello World" ); | ||
message.setStatus( Message.HELLO ); | ||
ksession.insert( message ); | ||
|
||
// and fire the rules | ||
ksession.fireAllRules(); | ||
|
||
// Close logger | ||
logger.close(); | ||
|
||
// and then dispose the session | ||
ksession.dispose(); | ||
} | ||
|
||
public static class Message { | ||
public static final int HELLO = 0; | ||
public static final int GOODBYE = 1; | ||
|
||
private String message; | ||
|
||
private int status; | ||
|
||
public Message() { | ||
|
||
} | ||
|
||
public String getMessage() { | ||
return this.message; | ||
} | ||
|
||
public void setMessage(final String message) { | ||
this.message = message; | ||
} | ||
|
||
public int getStatus() { | ||
return this.status; | ||
} | ||
|
||
public void setStatus(final int status) { | ||
this.status = status; | ||
} | ||
|
||
public static Message doSomething(Message message) { | ||
return message; | ||
} | ||
|
||
public boolean isSomething(String msg, | ||
List<Object> list) { | ||
list.add( this ); | ||
return this.message.equals( msg ); | ||
} | ||
} | ||
|
||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,7 @@ | ||
<?xml version="1.0" encoding="UTF-8"?> | ||
<kmodule xmlns="http://www.drools.org/xsd/kmodule"> | ||
<kbase name="rules"> | ||
<ksession name="HelloWorldKS"/> | ||
</kbase> | ||
|
||
</kmodule> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,12 @@ | ||
import com.other.ruleengine.HelloWorld | ||
|
||
dialect "mvel" | ||
|
||
rule "Hello World" | ||
when | ||
m : Message( status == Message.HELLO, message : message ) | ||
then | ||
System.out.println( message ); | ||
modify ( m ) { message = "Goodbye cruel world", | ||
status = Message.GOODBYE }; | ||
end |