In this post, we will see how to use BPM java api to add comments to human tasks.
Task Service provides different methods to add comments to a human task as shown below. I will show you how to make use of the method accepting CommentType as argument and using other methods is simple and straight forward.
import oracle.bpel.services.workflow.task.model.CommentType; import oracle.bpel.services.workflow.task.model.ObjectFactory; public void addCommentToTask(String taskId, String approverComments) { IWorkflowContext wfCtx = null; try { //creating the commenttype CommentType comments = (new ObjectFactory()).createCommentType(); comments.setComment(approverComments); //get the admin workflow context wfCtx = getAdminWorkflowContext(); getWfServiceClient().getTaskService().addComment(wfCtx, taskId, comments); } catch (Exception ex) { System.out.println("in addCommentToTask exception"); ex.printStackTrace(); } }
Get the child taskid using roottaskid which has to be passed to the above method.
select roottaskid, taskid, state,assignees,tasknumber from wftask where roottaskid = ‘c033ea46-d632-4f4b-acf8-21b2cad709d8’
After executing the above method, we can check the comments using the following sql query.
select * from wfcomments where taskid = ‘c033ea46-d632-4f4b-acf8-21b2cad709d8’
Following piece of code demonstrates the approach to use Task object to add the comment.
public void addCommentToTask(String taskId, String approverComments) { IWorkflowContext wfCtx = null; try { //creating the commenttype CommentType comments = (new ObjectFactory()).createCommentType(); comments.setComment(approverComments); //get the admin workflow context wfCtx = getAdminWorkflowContext(); Task qryTask = getWfServiceClient().getTaskQueryService().getTaskDetailsById(wfCtx, taskId); getWfServiceClient().getTaskService().addComment(wfCtx, qryTask, comments); } catch (Exception ex) { System.out.println("in addCommentToTask exception"); ex.printStackTrace(); } }
Following is another approach of adding task comments using TaskService.updateTask method.
public void addCommentUsingTaskUpdate(String taskId, String approverComments) { IWorkflowContext wfCtx = null; try { //creating the commenttype CommentType comments = (new ObjectFactory()).createCommentType(); comments.setComment(approverComments); //get the admin workflow context wfCtx = getAdminWorkflowContext(); Task qryTask = getWfServiceClient().getTaskQueryService().getTaskDetailsById(wfCtx, taskId); qryTask.addUserComment(comments); getWfServiceClient().getTaskService().updateTask(wfCtx, qryTask); } catch (Exception ex) { System.out.println("in addCommentUsingTaskUpdate exception"); ex.printStackTrace(); } }
Observations:
- RootTaskId also can be used to add the comments.
- By default, Admin, Assignees, Owner, Creator, Approvers and Reviewers will have the write access and this can be modified in Access tab of human task definition as shown below.
- When a user attempt to add comments who does not have access, we will observe the following error in logs. We can reproduce this issue by turning off the write access for Approvers and Assignees in Access tab of human task. Also create the workflowContext using the user siva as siva is the assigness and approver here.
<Nov 14, 2017, 2:45:36,118 PM IST> <Error> <oracle.soa.services.workflow.persistency> <BEA-000000> <<.> exception.code:30327
exception.type: ERROR
exception.severity: 2
exception.name: Current user does not have the ADD privilege on task attribute: COMMENTS.
exception.description: Current user siva does not have ADD privilege for COMMENTS on task with taskI
d b4ce32d1-d2e9-4f73-abc0-18c1447facf4.
exception.fix: Grant the ADD access for the current user/role. If the error persists, contact Oracle Support Services.
Thanks for sharing this great information I am impressed by the information that you have on this blog. Same as your blog i found another one Oracle SOA Interview Questions and Answers
. Actually, I was looking for the same information on internet for
Oracle SOA Training and came across your blog. I am impressed by the information that you have on this blog. It shows how well you understand this subject, you can learn more about Oracle SOA Tutorial also.
Thanks for sharing the information about java and keep updating us. This information is really useful to me.
SMConsultant