[rules-users] Problems with result mapping for custom workitems

Mauricio Salatino salaboy at gmail.com
Wed Apr 21 14:09:44 EDT 2010


Sorry, I didn't see that you are using it.
Can you show us how your WorkModel class looks like?

On Wed, Apr 21, 2010 at 2:06 PM, Mauricio Salatino <salaboy at gmail.com>wrote:

> 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 -
>



-- 
- 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/044ee13f/attachment.html 


More information about the rules-users mailing list