JBoss Community

Re: Task Human - Parameter Mapping

created by TC ONG in jBPM - View the full discussion

I figured it out now.

 

Step 1: Create a variable in your process. (I use userComms, it's my POJO)

https://community.jboss.org/servlet/JiveServlet/downloadImage/2-729764-18391/310-158/Screen+shot+2012-04-13+at+1.27.17+PM.png

Step 2: In the Human Task Parameter Mapping, map my variable to "Content".

(I always have this problem doing this. See https://community.jboss.org/message/729763#729763 )

https://community.jboss.org/servlet/JiveServlet/downloadImage/2-729764-18392/450-113/Screen+shot+2012-04-13+at+1.29.21+PM.png

 

Step 3: [Optional] In the On Entry Action of the Human Task, I set the value of my POJO. You can do it any way you like.

Question: is the kcontext.setVariable() necessary?

userComms = new UserComms();

userComms.setQuestion("Hello World~!");

 

kcontext.setVariable("userComms", userComms);

 

Step 4: Compile and run our process.

 

Step 5: Accessing your variable from the task's "Content"

                              BlockingGetTaskResponseHandler taskResponseHandler = new BlockingGetTaskResponseHandler();

                              taskClient.getTask(task1.getId(), taskResponseHandler);

                              Task task = taskResponseHandler.getTask();

                              long documentContentId = task.getTaskData().getDocumentContentId();

 

                              UserComms userComms = new UserComms();

                              BlockingGetContentResponseHandler contentResponseHandler = new BlockingGetContentResponseHandler();

                              taskClient.getContent(documentContentId, contentResponseHandler);

                              Content content = contentResponseHandler.getContent();

           

            if (content != null){

                ByteArrayInputStream bais = new ByteArrayInputStream(content.getContent());

                ObjectInputStream ois;

 

                try {

                    ois = new ObjectInputStream(bais);

                    Object obj = ois.readObject();

                    System.out.println("Object = " + obj.getClass());  // will return an empty string if not mapped properly

                    if(obj instanceof UserComms) {

                        userComms =(UserComms) obj;

                        System.out.println(userComms.getQuestion());

                    }

                } catch (IOException e) {

                    e.printStackTrace();

               } catch (ClassNotFoundException e) {

                    e.printStackTrace();

 

                }

            }

 

And I got my POJO from the Content.

Happy. :)

Reply to this message by going to Community

Start a new discussion in jBPM at Community