/** * Copyright 2010 JBoss Inc * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.drools.examples.ruleflow; import org.drools.KnowledgeBase; import org.drools.KnowledgeBaseFactory; import org.drools.builder.KnowledgeBuilder; import org.drools.builder.KnowledgeBuilderFactory; import org.drools.builder.ResourceType; import org.drools.io.ResourceFactory; import org.drools.runtime.StatefulKnowledgeSession; import org.drools.runtime.process.WorkItem; import org.drools.runtime.process.WorkItemHandler; import org.drools.runtime.process.WorkItemManager; public class WorkItemExample { public static final void main(String[] args) { try { KnowledgeBase knowledgeBase = readRule(); StatefulKnowledgeSession ksession = knowledgeBase.newStatefulKnowledgeSession(); // logging all work items to System.out WorkItemHandler handler = new WorkItemHandler() { public void executeWorkItem(WorkItem workItem, WorkItemManager manager) { System.out.println("Executing work item " + workItem); manager.completeWorkItem(workItem.getId(), null); } public void abortWorkItem(WorkItem workItem, WorkItemManager manager) { // Do nothing } }; ksession.getWorkItemManager().registerWorkItemHandler( "Email", handler ); ksession.getWorkItemManager().registerWorkItemHandler( "Log", handler ); ksession.startProcess( "com.sample.ruleflow" ); ksession.fireAllRules(); } catch ( Throwable t ) { t.printStackTrace(); } } private static KnowledgeBase readRule() throws Exception { KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder(); kbuilder.add( ResourceFactory.newClassPathResource( "workitems.rf", WorkItemExample.class ), ResourceType.DRF ); KnowledgeBase kbase = KnowledgeBaseFactory.newKnowledgeBase(); kbase.addKnowledgePackages( kbuilder.getKnowledgePackages() ); return kbase; } }