|
||||||||||
| PREV NEXT | FRAMES NO FRAMES | |||||||||
See:
Description
| Knowledge Base API | |
|---|---|
| org.drools | The KnowledgeBase and its factory. |
| Builder API | |
|---|---|
| org.drools.builder | The builder package is responsible for building knowledge definitions from artifact resources. |
| Definition API | |
|---|---|
| org.drools.definition | All classes to create definitions, as built by the KnowledgeBuilder from artifact resources, can be found here. |
| org.drools.definition.process | The classes that make up a Process definition. |
| org.drools.definition.rule | The classes that make up a Rule definition. |
| org.drools.definition.type | |
| Event API | |
|---|---|
| org.drools.event | Drools has a comprehensive event api for all parts of the platform. |
| org.drools.event.io | |
| org.drools.event.knowledgeagent | |
| org.drools.event.knowledgebase | Events emitted while updating the definitions in the KnowledgeBase. |
| org.drools.event.process | Events emitted while process instances are executing. |
| org.drools.event.rule | Events emitted while Rules are executing. |
| Runtime API | |
|---|---|
| org.drools.runtime | The runtime engine classes, including StatefulKnowledgeSession and StatelessKnowledgeSession. |
| org.drools.runtime.conf | |
| org.drools.runtime.help | |
| org.drools.runtime.process | The process runtime classes. |
| org.drools.runtime.rule | The rule runtime classes. |
| Time API | |
|---|---|
| org.drools.time | Classes related to Time in Drools. |
| Other Packages | |
|---|---|
| org.drools.agent | The KnowlegeAgent provides automatic loading, caching and re-loading, of resources and is configured from a properties files. |
| org.drools.agent.conf | |
| org.drools.builder.conf | |
| org.drools.builder.help | Providers helper classes that can be used during building. |
| org.drools.command | |
| org.drools.concurrent | |
| org.drools.conf | |
| org.drools.io | io library for working with Resources See ResourceFactory for more details |
| org.drools.logger | Logger classes use to log the KnowledgeRuntime's execution. |
| org.drools.management | |
| org.drools.marshalling | Marshalling classes are used to marshall and unmarshal StatefulKnowledgeSessions See MarshallerFactory for more detailed information. |
| org.drools.osgi.api | |
| org.drools.persistence.jpa | |
| org.drools.task.service | |
Drools & jBPM provide an knowledge-centric API, where rules and processes are first class citizens.
The most common interfaces you will use are:
Factory classes, with static methods, provide instances of the above interfaces. A pluggable provider approach is used to allow provider implementations to be wired up to the factories at runtime. The Factories you will most commonly used are:
A Typical example to load a rule resource.
KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder();
kbuilder.add( ResourceFactory.newUrlResource( url ),
ResourceType.DRL );
if ( kbuilder.hasErrors() ) {
System.err.println( builder.getErrors().toString() );
}
KnowledgeBase kbase = KnowledgeBaseFactory.newKnowledgeBase();
kbase.addKnowledgePackages( builder.getKnowledgePackages() );
StatefulKnowledgeSession ksession = knowledgeBase.newStatefulKnowledgeSession();
ksession.insert( new Fibonacci( 10 ) );
ksession.fireAllRules();
ksession.dispose();
A Typical example to load a process resource. Notice the ResourceType is changed to BPMN2 in this example.
KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder();
kbuilder.add( ResourceFactory.newUrlResource( url ),
ResourceType.BPMN2 );
KnowledgeBase kbase = kbuilder.newKnowledgeBase();
StatefulKnowledgeSession ksession = knowledgeBase.newStatefulKnowledgeSession();
ksession.startProcess( "Buy Order Process" );
ksession.dispose();
'kbuilder', 'kbase', 'ksession' are the variable identifiers often used, the k prefix is for 'knowledge'.
It is also possible to configure a KnowledgeBase using configuration, via a xml change set, instead of programmatically. Here is a simple change set:
<change-set xmlns='http://drools.org/drools-5.0/change-set'
xmlns:xs='http://www.w3.org/2001/XMLSchema-instance'
xs:schemaLocation='http://drools.org/drools-5.0/change-set change-set-5.0.xsd' >
<add>
<resource source='classpath:org/domain/someRules.drl' type='DRL' />
<resource source='classpath:org/domain/myProcess.bpmn2' type='BPMN2' />
</add>
</change-set>
And it is added just like any other ResourceType
KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder();
kbuilder.add( ResourceFactory.newUrlResource( url ),
ResourceType.ChangeSet );
The majority of knowledge API is considered stable and should not change, experimental classes and API's will be marked as such.
|
||||||||||
| PREV NEXT | FRAMES NO FRAMES | |||||||||