[rules-users] Problems with result mapping for custom workitems
Mauricio Salatino
salaboy at gmail.com
Wed Apr 21 14:06:41 EDT 2010
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
<manuel.payet at capgemini.com>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
> rules-users at lists.jboss.org
> https://lists.jboss.org/mailman/listinfo/rules-users
>
--
- http://salaboy.wordpress.com
- http://www.jbug.com.ar
- Salatino "Salaboy" Mauricio -
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.jboss.org/pipermail/rules-users/attachments/20100421/c41c5c0f/attachment.html
More information about the rules-users
mailing list