cancel
Showing results for 
Search instead for 
Did you mean: 

Workflow comments on document comments

crono40
Champ on-the-rise
Champ on-the-rise
Hello,

I'm using a workflow to validate documents. When users approve or reject a document, they can comment it. I would like to get this comment and put then in the comment of the document.

I supposed i can get workflow comments with the [bpm:comment] property but i don't know how i can create a comment in a document, using Javascript.

Waiting for your help.

Thanks Smiley Happy
4 REPLIES 4

yogeshpj
Star Contributor
Star Contributor
I am assuming that you have some custom property on document for storing comment.

Using javascript api you can easily achieve that.

Please refer the link  http://wiki.alfresco.com/wiki/4.0_JavaScript_API and section  "Modifying and Creating API".

It may help to you.

crono40
Champ on-the-rise
Champ on-the-rise
Hum not really yogeshPJ

In fact I want to retrieve the task comments to put it in the Document comment (in Alfresco Share). However, i saw that we can't get back task comments in workflow context (related this <a href="http://forums.alfresco.com/forum/developer-discussions/workflow/problems-accessing-bpmcomment-variab...">post</a> ).

I updated my workflow file definition (parallel-review.bpmn20.xml) .I know how to create comment on document using JS but for the moment, I'm just trying to put the comment in the document description.

var taskId = "activiti$" + task.getId();bpm_package.children[j].properties['cm:description']+= workflow.getTask(taskId).getProperties()["bpm:comment"];‍‍‍‍


and this

 <expression>   comment = ""; if (token.comments.size() > 0)   comment = token.comments.get(0).message; </expression> <variable name="comment" access="write"/> bpm_package.children[j].properties['cm:description'] = comment; bpm_package.children[j].save();‍‍‍‍‍‍‍‍‍‍


But it still not working. Someone could help me please ? Thanks a lot.

yogeshpj
Star Contributor
Star Contributor
It seems that comment value is not assigned properly.
can you please try below code ?

<expression>
   comment = "";
if (token.comments.size() > 0)
   comment = token.comments.get(0).message;
</expression>
<variable name="comment" access="write"/>
var doc= bpm_package.children[j];
doc.properties['cm:description'] = comment;
doc.save();

crono40
Champ on-the-rise
Champ on-the-rise
I tried with your example but still not working. I had the following error message :

org.activiti.engine.ActivitiException: Exception while invoking TaskListener: Exception while invoking TaskListener: 05110042 Failed to execute supplied script: 05110041 ReferenceError: "token" n'est pas défini (AlfrescoJS#36)

My approve task looks like this :

<userTask id="approved" name="Document Approved"            activiti:formKey="wf:approvedParallelTask" >            <documentation>                The document was reviewed and approved.            </documentation>            <extensionElements>               <activiti:taskListener event="create" class="org.alfresco.repo.workflow.activiti.tasklistener.ScriptTaskListener">                  <activiti:field name="script">                     <activiti:string>                        if (typeof bpm_workflowDueDate != 'undefined') task.dueDate = bpm_workflowDueDate                        if (typeof bpm_workflowPriority != 'undefined') task.priority = bpm_workflowPriority;                                                // Set parallel review params on task, to be kept in history                        task.setVariableLocal('wf_reviewerCount', wf_reviewerCount);                        task.setVariableLocal('wf_requiredPercent', wf_requiredPercent);                        task.setVariableLocal('wf_actualPercent', wf_actualPercent);                        task.setVariableLocal('wf_approveCount', wf_approveCount);                                    for(var j=0; j&lt;bpm_package.children.length; j++)                  {                                             if(bpm_package.children[j].properties['cm:description'] == "EN COURS D'APPROBATION")                        {                           if(wf_actualPercent == 100)                           {                                 bpm_package.children[j].properties['cm:description'] = "APPLICABLE";                                 bpm_package.children[j].save();                                                                  var doc = bpm_package.children[j];                                                         doc.addAspect("cm:versionable");                                 var tmp = doc.checkout();                                 doc = tmp.checkin("Document applicable",true);                                 bpm_package.children[j] = doc                           }                        }                        else                        {                           if(wf_actualPercent == 100)                           {                                 bpm_package.children[j].properties['cm:description'] = "EN COURS D'APPROBATION";                                 bpm_package.children[j].save();                           }                        }                        var comment = "";                        if (token.comments.size() > 0)                        comment = token.comments.get(0).message;                        var doc= bpm_package.children[j];                        doc.properties['cm:description'] = comment;                        doc.save();                                                                                          }                                       </activiti:string>                  </activiti:field>               </activiti:taskListener>            </extensionElements>‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍


Any ideas ??