Now to turn this into templates, a few more moving parts are needed (TBD), but basically it involved crafing the templates, locking them (and giving them sensible names) and then allowing people to create rules based on these templates....

All things Artificial Intelligence related: Rules, Processes, Events, Agents, Planning, Ontologies and more :)
Frozen areas to make GUI templates...
Applying Complex Event Processing (CEP) with a Stateful Rules Engine for Real-Time Intelligence TS-4475
Fedex GIS demo at ESRI (Powered by Drools Fusion)
"BPMN 2.0 – Marriage Made In Heaven or Trough of Disillusionment" or "Why Software development is like String theory" (BPMfocus)
"Drools Flow as a growing
subset of BPMN 2.0"
Our BPMN 2.0 submission passed four key votes and is on track to be an OMG “alpha” specification by the fall. [...] So what’s next? The general membership vote will take 6-8 weeks [...]. We expect this to happen by September. We expect the Finalization Task Force to take up to a year to complete. [...] So what does this mean in plain English? In the FTF phase, implementers (tool vendors) will point out technical problems, but for the most part, what you see now is what you are going to get.So, now that the BPMN 2.0 spec is starting to stabilize, the time has come to show how we are going to support BPMN 2.0 in Drools Flow.
<?xml version="1.0" encoding="UTF-8"?>
<definitions id="Definition"
targetNamespace="http://www.jboss.org/drools"
typeLanguage="http://www.java.com/javaTypes"
expressionLanguage="http://www.mvel.org/2.0"
xmlns="http://schema.omg.org/spec/BPMN/2.0"
xmlns:xs="http://www.w3.org/2001/XMLSchema-instance"
xs:schemaLocation="http://schema.omg.org/spec/BPMN/2.0 BPMN20.xsd"
xmlns:tns="http://www.jboss.org/drools">
<itemdefinition id="employeeId" structureref="java.lang.String">
<resource id="Employee" name="Employee Resource">
<process id="Evaluation" name="Evaluation Process">
<!-- process variables -->
<property id="employee" itemsubjectref="tns:employeeId">
<!-- nodes -->
<startevent id="StartProcess">
<usertask id="Self_Evaluation">
<potentialowner resourceref="tns:Employee">
<resourceassignmentexpression>
<formalexpression>#{employee}</formalexpression>
</resourceassignmentexpression>
</potentialowner>
</usertask>
<parallelgateway id="Diverge" gatewaydirection="diverging">
<usertask id="Project_Manager_Evaluation">
<potentialowner resourceref="tns:Employee">
<resourceassignmentexpression>
<formalexpression>john</formalexpression>
</resourceassignmentexpression>
</potentialowner>
</usertask>
<usertask id="HR_Manager_Evaluation">
<potentialowner resourceref="tns:Employee">
<resourceassignmentexpression>
<formalexpression>mary</formalexpression>
</resourceassignmentexpression>
</potentialowner>
</usertask>
<parallelgateway id="Converge" gatewaydirection="converging">
<endevent id="EndProcess">
<!-- connections -->
<sequenceflow sourceref="StartProcess" targetref="Self_Evaluation">
<sequenceflow sourceref="Self_Evaluation" targetref="Diverge">
<sequenceflow sourceref="Diverge" targetref="Project_Manager_Evaluation">
<sequenceflow sourceref="Diverge" targetref="HR_Manager_Evaluation">
<sequenceflow sourceref="Project_Manager_Evaluation" targetref="Converge">
<sequenceflow sourceref="HR_Manager_Evaluation" targetref="Converge">
<sequenceflow sourceref="Converge" targetref="EndProcess">
</process>
</definitions>
Drools Flow and BPMN2
Just a reminder that Edson and myself will be at ORF09 in Dallas again this year. This conference has grown and is now a 5 day event, with a lot of big names. I've reproduced the full agenda below:
October Rules Fest 2009
Agenda
Monday | October 26, Tutorials, Day One Conference | ||
12:00 - 14:00 | Registration | ||
13:00 - 14:00 | Introduction to Rule Harvesting and Knowledge Acquisition, Rolando Hernandez: ORF Founder & BIZRULES Manny Gandarillas: Bank of America | Tutorial | |
![]() | |||
14:00 - 15:00 | Introduction to Inference Engines Lawrence Terrill: EBDX | Tutorial | |
![]() | |||
15:00 - 15:30 | Q&A and Bio Break | ||
![]() | |||
15:30 - 16:30 | Introuction to the Rete Algorithm Lawrence Terrill: EBDX | Tutorial | |
![]() | |||
16:30 - 17:30 | Rule Testing Techniques: White Box, Gray Box, Black Box and Crazy Box Testing Greg Barton: ORF Founder & Southwest Airlines | Tutorial | |
![]() | |||
17:30 - 18:00 | Tutorial Wrapup / Q&A | ||
Tuesday | October 27, Day Two Conference | Subject | |
7:00 - 11:00 | Registration | ||
![]() | |||
7:45 - 8:00 | Welcome and Introductions James Owen, ORF Founder & KBSC | ||
![]() | |||
8:00 - 8:50 | A Model-Driven approach for validating rules, documenting requirements, defining system specifications and replacing useless cases Rolando Hernandez: ORF Founder & BIZRULES | Knowledge Acquisition | |
![]() | |||
9:00 - 9:50 | Truth versus Useful Lies Dr. Daniel Lavine: University of Texas - Arlington | Rule Theory | |
![]() | |||
10:00 - 10:50 | Enterprise Architecture 201-A: Creating the Information Age Enterprise John Zachman: Zachman International | Architecture | |
![]() | |||
11:00 - 11:50 | Enterprise Architecture 201-B: Creating the Information Age Enterprise Dr. Leon Kappelman, North Texas University | Architecture | |
12:00 - 13:30 | Lunch | ||
13:30 - 14:20 | SINFERS: The Implementation of a Practical and Modern Rule-Based Expert System Jason Morris: Morris Technical Solutions, LLC | Rulebased App | |
![]() | |||
14:30 - 15:20 | Graph-Based Knowledgebases & Rules Luke Voss, Mindview Labs | Rulebased Theory | |
![]() | |||
15:30 - 16:20 | Early Alert System at Southwest Airlines Greg Barton, ORF Founder & Southwest Airlines Mark Sturdivant, Southwest Airlines | CEP/Rulesbased App | |
![]() | |||
16:30 - 17:20 | Automated Verification Testing for Propositional Logic Systems Dr. Rick Hicks: EZ-Xpert | Testing | |
![]() | |||
17:30 - 18:00 | Q&A - Rolando Hernandez, Dr. Daniel Lavin, John Zachman, Dr. Leon Kappelman, Jason Morris, Luke Voss, Greg Barton, Dr. Rick Hicks | ||
19:00 - 21:00 | Pub Night, Location - Walt Garrison Bar | ||
Wednesday | October 28, Day Three Conference | Subject | |
7:00 - 11:00 | Registration | ||
![]() | |||
8:00 - 8:50 | Agile Business Rule Development: a tautology or an oxymoron? Dr. Hafedh Milir, University of Montréal Québec | Rule Architecture | |
![]() | |||
9:00 - 9:50 | Rule Classification First Eric Charpentier: Primatek | Rule Architecture | |
![]() | |||
10:00 - 10:50 | Introduction to Rulebased Forecasting: Updating an Earlier Concept James Owen: ORF Founder & KnowledgeBased System Corporation | Rulebased App | |
![]() | |||
11:00 - 11:50 | Playing With the Rules: Participatory Modeling and Network Gaming Through a Rules Engine Andrew Waterman, El Colegio de la Frontera Sur | Rulebased App | |
12:00 - 13:30 | Lunch | ||
13:30 - 14:20 | Production Rule Systems - Where do we go from here? Mark Proctor, Drools | Rule Theory | |
![]() | |||
14:30 - 15:20 | Measuring Your Rules' KPIs Carole Ann Berlioz-Matignon: FICO | Architecture & Performance | |
![]() | |||
15:30 - 16:20 | Designing a System of Rulebased Agents Luke Voss: Mindview Labs | Rule Theory | |
![]() | |||
16:30 - 17:20 | Extending General Purpose Engines with Domain Specific Resources Edson Tirelli: Drools | Rulebase Design | |
![]() | |||
17:30 - 18:00 | Q&A - Dr. Hafedh Milir, Eric Charpentier, James Owen, Andrew Waterman, Mark Proctor, Carole Ann Berlioz-Matignon, Luke Voss, Edson Tirelli | ||
19:00 - 21:00 | Pub Night, Location - Walt Garrison Bar | ||
Thursday | October 29, Day Four Conference | Subject | |
7:00 - 11:00 | Registration | ||
![]() | |||
8:00 - 8:50 | Programming Rules Using a Constraints-Embedded Spreadsheet Interface Dr. Gopal Gupta, University of Texas Dallas | Rulebased Theory | |
![]() | |||
9:00 - 9:50 | Rules Violations and Over-Constrained Problems Dr Jacob Feldman: Open Rules | Rulebased Design | |
![]() | |||
10:00 - 11:50 | Business Rules in the Cloud Carlos Serrano-Morales: FICO | Architeture | |
![]() | |||
11:00 - 11:50 | Rule Patterns and Features in Modern Forward Chaining Engines: Rules Beyond Business Rules David Holz: HRSI | Rulebased Theory | |
12:00 - 13:30 | Lunch | ||
13:30 - 14:20 | Generating Rules from UML Daniel Brookshier: No Magic | Rulebased Tools | |
![]() | |||
14:30 - 15:20 | Temporal Reasoning: A Requirement for Complex Event Processing Edson Tirelli: Drools | CEP | |
![]() | |||
15:30 - 16:20 | Building Domain-Specific Languages for Rulebased Systems Luke Voss, Mindview Labs | Rulebased Design | |
![]() | |||
16:30 - 17:20 | What's Different About Rules in CEP? Paul Vincent: Tibco, CTO Business Rules and CEP | CEP | |
![]() | |||
17:30 - 18:00 | Q&A - Dr. Gopal Gupta, Dr Jacob Feldman, Carlos Seranno-Morales, David Holz, Daniel Brookshier, Edson Tirelli, Luke Voss, Paul Vincent | ||
19:00 - 21:00 | Pub Night, Walt Garrison Bar | ||
Friday | October 30, Day Five Conference | Subject | |
![]() | |||
8:00 - 8:50 | The CLIPS Implementation of the Rete Pattern Matching Algorithm Gary Riley: Gary Riley Consulting | Rulebased Theory | |
![]() | |||
9:00 - 9:50 | A Survey of Complex-Event Processing Models Charles Young: Solid Soft | CEP Theory | |
![]() | |||
10:00 - 10:50 | Distributed Programming with Rule Engines Mark Proctor: Drools | Rulebased App | |
![]() | |||
11:00 - 11:50 | Closely Coupled Parallel Rulesbases Dr. Charles Forgy: Production Systems Technology, Founder/ Inventor of Rete Algorithm | Rulebased Theory | |
![]() | |||
12:00 - 13:00 | Q&A - All Speakers | ||
13:00 - 14:00 | Lunch / Depart Conference |
October Rules Festival 2009
BSG London User Group July09 meeting slides
The next JBug is being held on Friday 17th July. Attending the JBug at BSG will be a fantastic opportunity to:
The JBug is a regular gathering of JBoss Professional and other Open Source product users, developers, technical managers and architects. It provides a forum that enables users and customers to get together and discuss new technologies, development methodologies, interesting use cases and similar technical topics. At each meeting, different speakers will present on topics that can be suggested by the group.
The agenda for the JBug has now been finalised and it will focus on open source business rules management system and JBoss BRMS. Presentations include:
Drools User Group Meeting - London 17th of July
1..1 SimulationAll the steps, from all paths, are added to a priority queue which is ordered by the temporal distance, and allows us to incrementally execute the engine using a time slicing approach. The simulator pops of the steps from the queue in turn. For each Step it increments the engine clock and then executes all the Step's Commands.
1..n Paths
1..n Steps
1..n Commands
new InsertObjectCommand( new Person( "darth", 97 ) )Commands can be grouped together, especially Assertion commands, via test groups. The test groups are mapped to JUnit "test methods", so as they pass or fail using a specialised JUnit Runner the Eclipse GUI is updated - as illustrated in the above image, showing two passed test groups named "test1" and "test2".
cmds.add( new SetVariableCommand( "path1",Creates a StatefulKnowledgeSession and assigns it to the identifier "ksession" in the Context for "path1". The KnowledgeContextResolveFromContextCommand adapts the targeted Command telling it that the KnowledgeBase to be used for the command can be retrieved from the Context using the identifier "kbase". The null arguments could be used to specify a KnowledgeBuilder of StatefulKnowledgeSession if the Command required it:
"kbase",
new NewKnowledgeBaseCommand( null ) ) );
cmds.add( new SetVariableCommand( "path1",Now that we have the StatefulKnowledgeSession assigned to the "ksession" identifier we can insert objects into it. Again we used the adapter command to tell it to execute the InsertObjectCommand using the "ksession" instance - the null arguments are the positions used to specify a Knowledgebuilder or KnowledgeBase if the Command required it:
"ksession",
new KnowledgeContextResolveFromContextCommand(
new NewStatefulKnowledgeSessionCommand( ksessionConf ),
null,
"kbase",
null ) ) );
cmds.add( new KnowledgeContextResolveFromContextCommand(While the identifier manipulation Commands and Command adapters add a fair amount of verbosity to the api, they also create a very flexible Simulation environment. Tooling will be added that will hide this verbosity and reduce complexity, making it much more palatable.
new InsertObjectCommand( new Person( "yoda", 98 ) ),
null,
null,
"ksession" ) );
Drools Simulation and Test framework
JBoss Tools 3.1 - Easy Drools installation on Cocoa 64-bit (ekke)
http://www.packtpub.com/article/drools-jboss-rules-5.0-flow-part2In this two-part article by Michal Bali, we'll look at Drools flow in detail by building a loan approval process. In the first part we covered: faults, subflows, and decisions.
In this part of the article we'll cover: Transfer Funds work Item, human tasks, and other aspects of ruleflow."
Drools JBoss Rules 5.0 Flow (Part 2)
http://www.packtpub.com/article/drools-jboss-rules-5.0-flow-part1Every non-trivial business process needs to make complex decisions. A rule engine is the ideal place for these decisions to happen. However, it is impractical to invoke a rule engine from a standard workflow engine. Instead, if we take a rule engine and add workflow capabilities, we have an ideal tool to model complex business processes—Drools Flow.
In this two-part article by Michal Bali, we'll look at Drools flow in detail. We'll build a loan approval process and cover the advanced concepts of a ruleflow like faults, subflows, and decisions."
Drools JBoss Rules 5.0 Flow (Part 1)
A take on Drools Boot Camp 09...
Drools Job requested - Buenos Aires Argentina
when
#some conditions go here, or none if you like
then
Question question = new Question();
question.setId("flight");
question.setAnswerType("text");
question.setPreLabel("Flight number / Name of ship");
insertLogical(question);
The above says that when the "stayingInNZ" question is answered (to "not true") then ask them for another country etc...
rule "next country"
when
Question(id == "stayingInNZ", answer != "true");
then
Question question = new Question();
question.setId("countryNext");
question.setAnswerType("text");
question.setPreLabel("or");
insertLogical(question);
end
Introducing a new smart forms tool: Drools Advisor