package org.jboss.seam.drools; import java.util.List; import org.drools.WorkingMemory; import org.jbpm.graph.exe.ExecutionContext; import org.jbpm.taskmgmt.def.AssignmentHandler; import org.jbpm.taskmgmt.exe.Assignable; /** * A jBPM AssignmentHandler that delegates to a Drools WorkingMemory * held in a Seam context variable. * * @author Jeff Delong * @author Gavin King * */ public class DroolsAssignmentHandler extends DroolsHandler implements AssignmentHandler { private static final long serialVersionUID = -7114640047036854546L; public String workingMemoryName; public List<String> assertObjects; public List<String> retractObjects; public String startProcessId; public void assign(Assignable assignable, ExecutionContext executionContext) throws Exception { WorkingMemory workingMemory = getWorkingMemory(workingMemoryName, assertObjects, retractObjects, executionContext); workingMemory.setGlobal( "assignable", assignable ); if(startProcessId != null && startProcessId.trim().length() > 0 ) { workingMemory.startProcess(startProcessId); } workingMemory.fireAllRules(); } }