JBoss Community

jBPM5.1 : Setting Process Variable from code(Using API)

created by Sandeep Sapra in jBPM - View the full discussion

Description :

I am trying to create a business process having two tasks :

a) Enter Comments Task to be entered by author and

b) Verify comments Task : To approve or reject comments entered by author.

If the comments are approved the process will end and if it is rejected , control will flow back to user task to enter comments by author.

 

Approve is set in BPMN by setting a process variable : approvalStatus as 1 and for reject it i set to 0.

Eg:

<conditionExpression xsi:type="tFormalExpression" language="http://www.java.com/java" >

return approvalStatus.equals("1");

</conditionExpression>

 

Problem:

 

While starting the process, approvalStatus is set to 0 intially as :

            Map<String, Object> params = new HashMap<String, Object>();

            params.put("approvalStatus", "0");         

         // start a new process instance

            pi = ksession.startProcess("com.sample.bpmn.comments",params);

 

 

I am then trying to set the process variable as 1 or 0 (depending on approve or reject) inside the code , but the same is not happening.

Can anyone please tell if I am missing something or is there any other way to do so?

 

Code Snippet:

 

//Some Code here.....................

   String approvalStatusValue="0";

   if(isCommentsApproved)

              approvalStatusValue="1";

  else

      approvalStatusValue="0";

            

                Map<String, Object> results = new HashMap<String, Object>();

                results.put("approvalStatus", approvalStatusValue);

                ContentData contentData = new ContentData();

                contentData = new ContentData();

                contentData.setAccessType(AccessType.Inline);

                ByteArrayOutputStream bos = new ByteArrayOutputStream();

                ObjectOutputStream out;

                try {

                    out = new ObjectOutputStream(bos);

                    out.writeObject(results);

                    out.close();

                    contentData = new ContentData();

                    contentData.setContent(bos.toByteArray());

                    contentData.setAccessType(AccessType.Inline);

                } catch (IOException e) {

                    e.printStackTrace();

                }

               

               

                taskClient.complete(task1.getId(), "mary", contentData, taskOperationHandler);

 

Thanks and Regards,

Sandeep

Reply to this message by going to Community

Start a new discussion in jBPM at Community