[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