the completeWorkItem method receives a Map with the results. You need to populate that map, in order the mapping works.
On Wed, Apr 21, 2010 at 1:22 PM, PAYET, Manuel <[email protected]>wrote: > Hello everyone, I have a problem using result mapping in custom workitems > when I try to set an attribute of an object as one of the result: > I make the following mapping in Result Mapping of my workitem: > > Parameter Variable > message workmodel.message > > > and all I have is > > Could not find variable scope for variable workmodel.message > when trying to complete Work Item workitem_test > Continuing without setting variable. > > > I hope, someone can help me, I tried all that I could think about... > you will find below all my project, sorry for the long post...: > > > > /forum/src/main/java/mpayet/test/forum/App.java > ======================================================================= > package mpayet.test.forum; > > import java.util.HashMap; > import java.util.Map; > > import org.drools.KnowledgeBase; > import org.drools.KnowledgeBaseFactory; > import org.drools.builder.KnowledgeBuilder; > import org.drools.builder.KnowledgeBuilderError; > import org.drools.builder.KnowledgeBuilderErrors; > import org.drools.builder.KnowledgeBuilderFactory; > import org.drools.builder.ResourceType; > import org.drools.io.ResourceFactory; > import org.drools.runtime.StatefulKnowledgeSession; > > import workDefinitions.WorkitemTest; > import workDefinitions.Workmodel; > > /** > * Hello world! > * > */ > public class App { > public static void main(String[] args) throws Exception { > System.out.println("Hello World!"); > KnowledgeBase kbase = readKnowledgeBase(); > StatefulKnowledgeSession session = > kbase.newStatefulKnowledgeSession(); > final Map<String, Object> map = new HashMap<String, > Object>(); > map.put("workmodel", new Workmodel()); > > session.getWorkItemManager().registerWorkItemHandler("workitem_test", new > WorkitemTest(session)); > session.startProcess("flow", map); > } > > private static KnowledgeBase readKnowledgeBase() throws Exception { > > final KnowledgeBuilder kbuilder = KnowledgeBuilderFactory > .newKnowledgeBuilder(); > > kbuilder.add(ResourceFactory.newClassPathResource("flow.rf"), > ResourceType.DRF); > > KnowledgeBuilderErrors errors = kbuilder.getErrors(); > if (errors.size() > 0) { > for (KnowledgeBuilderError error : errors) { > System.err.println(error); > } > throw new IllegalArgumentException("Could not parse > knowledge."); > } > KnowledgeBase kbase = > KnowledgeBaseFactory.newKnowledgeBase(); > kbase.addKnowledgePackages(kbuilder.getKnowledgePackages()); > > return kbase; > } > } > ======================================================================= > > > > > /forum/src/main/java/workDefinitions/WorkitemTest.java > ======================================================================= > package workDefinitions; > > import java.util.HashMap; > import java.util.Map; > > 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 WorkitemTest implements WorkItemHandler { > > final StatefulKnowledgeSession session; > > public WorkitemTest(final StatefulKnowledgeSession session) { > this.session = session; > } > > public void abortWorkItem(WorkItem workItem, WorkItemManager > manager) { > > } > > public void executeWorkItem(WorkItem workItem, WorkItemManager > manager) { > > final Map<String, Object> mapResult = new HashMap<String, > Object>(); > mapResult.put("message", "message"); > mapResult.put("nombre", 1); > manager.completeWorkItem(workItem.getId(), mapResult); > } > } > ======================================================================= > > > > > > /forum/src/main/java/workDefinitions/Workmodel.java > ======================================================================= > package workDefinitions; > > public class Workmodel { > private String message; > > public String getMessage() { > return message; > } > > public void setMessage(String message) { > this.message = message; > } > > } > ======================================================================= > > > > > > /forum/src/main/java/META-INF/DefinitionsWorkitem.conf > ======================================================================= > import org.drools.process.core.datatype.impl.type.StringDataType; > import org.drools.process.core.datatype.impl.type.IntegerDataType; > > [ > // exemple de workitem > [ > "name" : "workitem_test", > "parameters" : [ > "typeObjet" : new StringDataType(), > "nombre" : new IntegerDataType() > ], > "displayName" : "workitem test", > "icon" : "icons/icone_service.gif" > ] > > ] > ======================================================================= > > > > > > /forum/src/main/java/flow.rf > ======================================================================= > <?xml version="1.0" encoding="UTF-8"?> > <process xmlns="http://drools.org/drools-5.0/process" > xmlns:xs="http://www.w3.org/2001/XMLSchema-instance" > > xs:schemaLocation="http://drools.org/drools-5.0/processdrools-processes-5.0.xsd" > type="RuleFlow" name="flow" id="flow" > package-name="com.mpayet.test" routerLayout="1" > > > <header> > <imports> > <import name="workDefinitions.Workmodel" /> > </imports> > <variables> > <variable name="workmodel" > > <type > name="org.drools.process.core.datatype.impl.type.ObjectDataType" > className="workDefinitions.Workmodel" /> > </variable> > </variables> > </header> > > <nodes> > <actionNode id="13" name="affichage variable" x="16" y="176" width="161" > height="48" > > <action type="expression" dialect="mvel" >var model > =(Workmodel)context.getVariable("workmodel") > System.out.println(model.message)</action> > </actionNode> > <end id="8" name="End" x="72" y="256" width="48" height="48" /> > <start id="1" name="Start" x="72" y="16" width="48" height="48" /> > <workItem id="20" name="workitem test" x="46" y="97" width="100" > height="48" > > <work name="workitem_test" > > <parameter name="nombre" > > <type > name="org.drools.process.core.datatype.impl.type.IntegerDataType" /> > </parameter> > <parameter name="typeObjet" > > <type > name="org.drools.process.core.datatype.impl.type.StringDataType" /> > </parameter> > </work> > <mapping type="out" from="message" to="workmodel.message" /> > </workItem> > </nodes> > > <connections> > <connection from="20" to="13" /> > <connection from="13" to="8" /> > <connection from="1" to="20" /> > </connections> > > </process> > ===================================================================== > > > > Thank you very much if you took the time to think about my problem, > Manuel PAYET > > > > > > > This message contains information that may be privileged or confidential > and is the property of the Capgemini Group. It is > intended only for the person to whom it is addressed. If you are not the > intended recipient, you are not authorized to > read, print, retain, copy, disseminate, distribute, or use this message or > any part thereof. If you receive this message > in error, please notify the sender immediately and delete all copies of > this message. > > > _______________________________________________ > rules-users mailing list > [email protected] > https://lists.jboss.org/mailman/listinfo/rules-users > -- - http://salaboy.wordpress.com - http://www.jbug.com.ar - Salatino "Salaboy" Mauricio -
_______________________________________________ rules-users mailing list [email protected] https://lists.jboss.org/mailman/listinfo/rules-users
