Advertisement
Guest User

workflow

a guest
Dec 7th, 2016
80
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 11.94 KB | None | 0 0
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <definitions xmlns="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:activiti="http://activiti.org/bpmn" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:omgdc="http://www.omg.org/spec/DD/20100524/DC" xmlns:omgdi="http://www.omg.org/spec/DD/20100524/DI" typeLanguage="http://www.w3.org/2001/XMLSchema" expressionLanguage="http://www.w3.org/1999/XPath" targetNamespace="http://www.activiti.org/test">
  3. <process id="myProcess" name="My process" isExecutable="true">
  4. <startEvent id="alfrescoStartevent1" name="Alfresco start" activiti:formKey="wf:submitReviewTask">
  5. <extensionElements>
  6. <activiti:executionListener event="start" class="org.alfresco.repo.workflow.activiti.tasklistener.ScriptTaskListener">
  7. <activiti:field name="script">
  8. <activiti:string><![CDATA[var node = companyhome.childByNamePath[0].parent;
  9. node.setOwner("cm:creator"); // owner is now 'the creator of the document'
  10. node.takeOwnership(); // currently authenticated user running script is 'admin'
  11. model.owner = node.getOwner();]]></activiti:string>
  12. </activiti:field>
  13. </activiti:executionListener>
  14. </extensionElements>
  15. </startEvent>
  16. <userTask id="alfrescoUsertask1" name="Alfresco User Task" activiti:formKey="wf:activitiReviewTask">
  17. <extensionElements>
  18. <activiti:taskListener event="node-enter" class="org.alfresco.repo.workflow.activiti.tasklistener.ScriptTaskListener">
  19. <activiti:field name="script">
  20. <activiti:string><![CDATA[var docList = "\t";
  21. for (var i = 0; i &lt; bpm_package.children.length; i++)
  22. {
  23. docList += bpm_package.children[i].displayPath + "/" + bpm_package.children[i].properties["cm:name"] + "\n\t";
  24. }
  25. var email = actions.create("mail");
  26. email.parameters.subject = "New Alfresco Task";
  27. email.parameters.to = bpm_assignee.properties["cm:email"];
  28. email.parameters.from = "alfresco@kses.net";
  29. email.parameters.text = "You have been assigned to review the following documents by \"";
  30. email.parameters.text += initiator.properties["cm:userName"] + "\":\n\n" + docList;
  31. email.parameters.text += "\n\nPlease check your Alfresco task list.";
  32. email.execute(bpm_package);]]></activiti:string>
  33. </activiti:field>
  34. </activiti:taskListener>
  35. </extensionElements>
  36. </userTask>
  37. <sequenceFlow id="flow1" sourceRef="alfrescoStartevent1" targetRef="alfrescoUsertask1"></sequenceFlow>
  38. <parallelGateway id="parallelgateway1" name="Parallel Gateway"></parallelGateway>
  39. <sequenceFlow id="flow2" sourceRef="alfrescoUsertask1" targetRef="parallelgateway1"></sequenceFlow>
  40. <userTask id="alfrescoUsertask2" name="Approve" activiti:formKey="wf:approvedTask">
  41. <extensionElements>
  42. <activiti:taskListener event="complete" class="org.alfresco.repo.workflow.activiti.tasklistener.ScriptTaskListener">
  43. <activiti:field name="script">
  44. <activiti:string><![CDATA[var docList = "\t";
  45. for (var i = 0; i &lt; bpm_package.children.length; i++)
  46. {
  47. docList += bpm_package.children[i].displayPath + "/" + bpm_package.children[i].properties["cm:name"] + "\n\t";
  48.  
  49. bpm_package.children[i].properties["ks:status"] = "Approved";
  50. bpm_package.children[i].properties["ks:reviewComment"] = kswf_comment;
  51. bpm_package.children[i].save();
  52.  
  53. var workingCopy = bpm_package.children[i].checkout();
  54. workingCopy.checkin("Document approved by " + bpm_assignee.properties["cm:userName"], true);
  55.  
  56. /* get name without extension */
  57. var cmname = bpm_package.children[i].properties["cm:name"];
  58. var idx = cmname.length - 1;
  59. if(cmname.lastIndexOf(".") > 0)
  60. {
  61. idx = cmname.lastIndexOf(".");
  62. }
  63. var docname = cmname.substr(0, idx);
  64.  
  65. /* find space where released documents live */
  66. var drafts = bpm_package.children[i].parent;
  67. var docroot = drafts.parent;
  68. var dest = docroot.childByNamePath("Released");
  69.  
  70. /* see if document was created previously. if not, do initial version bump */
  71. var transdoc = dest.childByNamePath(docname + ".pdf");
  72. var bumpver = false;
  73. if(transdoc == null)
  74. {
  75. bumpver = true;
  76. }
  77.  
  78. /* transform to pdf */
  79. var trans = actions.create("transform");
  80. trans.parameters["destination-folder"] = dest;
  81. trans.parameters["assoc-type"] = "{http://www.alfresco.org/model/content/1.0}contains";
  82. trans.parameters["assoc-name"] = "{http://www.alfresco.org/model/content/1.0}" + bpm_package.children[i].properties["cm:name"];
  83. trans.parameters["mime-type"] = "application/pdf";
  84. trans.execute(bpm_package.children[i]);
  85.  
  86. /* update properties */
  87. transdoc = dest.childByNamePath(docname + ".pdf");
  88. if(transdoc != null)
  89. {
  90. if(bumpver == true)
  91. {
  92. workingCopy = transdoc.checkout();
  93. workingCopy.checkin("Initial version.", true);
  94. }
  95. workingCopy = transdoc.checkout();
  96. workingCopy.properties["ks:status"] = "Approved";
  97. workingCopy.properties["ks:reviewComment"] = kswf_comment;
  98. workingCopy.save();
  99. workingCopy.checkin("Document approved by " + bpm_assignee.properties["cm:userName"], true);
  100. }
  101. }
  102. var email = actions.create("mail");
  103. email.parameters.subject = "Alfresco Task Update: Approved";
  104. email.parameters.to = initiator.properties["cm:email"];
  105. email.parameters.from = "alfresco@kses.net";
  106. email.parameters.text = "The following documents were approved by \"" + bpm_assignee.properties["cm:userName"] + "\":\n\n" + docList;
  107. email.parameters.text += "\nComments:\n" + kswf_comment;
  108. email.execute(bpm_package);]]></activiti:string>
  109. </activiti:field>
  110. </activiti:taskListener>
  111. </extensionElements>
  112. </userTask>
  113. <userTask id="alfrescoUsertask3" name="Reject" activiti:formKey="wf:rejectedTask">
  114. <extensionElements>
  115. <activiti:taskListener event="complete" class="org.alfresco.repo.workflow.activiti.tasklistener.ScriptTaskListener">
  116. <activiti:field name="script">
  117. <activiti:string><![CDATA[var docList = "\t";
  118. for (var i = 0; i &lt; bpm_package.children.length; i++)
  119. {
  120. docList += bpm_package.children[i].displayPath + "/" + bpm_package.children[i].properties["cm:name"] + "\n\t";
  121.  
  122. bpm_package.children[i].properties["ks:status"] = "Rejected";
  123. bpm_package.children[i].properties["ks:reviewComment"] = kswf_comment;
  124. bpm_package.children[i].save();
  125. var workingCopy = bpm_package.children[i].checkout();
  126. workingCopy.checkin("Document rejected by " + bpm_assignee.properties["cm:userName"], false);
  127. }
  128.  
  129. var email = actions.create("mail");
  130. email.parameters.subject = "Alfresco Task Update: Rejected";
  131. email.parameters.to = initiator.properties["cm:email"];
  132. email.parameters.from = "alfresco@kses.net";
  133. email.parameters.text = "The following documents were rejected by \"" + bpm_assignee.properties["cm:userName"] + "\":\n\n" + docList;
  134. email.parameters.text += "\nComments:\n" + kswf_comment;
  135. email.execute(bpm_package);]]></activiti:string>
  136. </activiti:field>
  137. </activiti:taskListener>
  138. </extensionElements>
  139. </userTask>
  140. <sequenceFlow id="flow4" sourceRef="parallelgateway1" targetRef="alfrescoUsertask3"></sequenceFlow>
  141. <sequenceFlow id="flow5" sourceRef="parallelgateway1" targetRef="alfrescoUsertask2"></sequenceFlow>
  142. <endEvent id="endevent1" name="End"></endEvent>
  143. <sequenceFlow id="flow8" sourceRef="alfrescoUsertask3" targetRef="endevent1"></sequenceFlow>
  144. <sequenceFlow id="flow9" sourceRef="alfrescoUsertask2" targetRef="endevent1"></sequenceFlow>
  145. </process>
  146. <bpmndi:BPMNDiagram id="BPMNDiagram_myProcess">
  147. <bpmndi:BPMNPlane bpmnElement="myProcess" id="BPMNPlane_myProcess">
  148. <bpmndi:BPMNShape bpmnElement="alfrescoStartevent1" id="BPMNShape_alfrescoStartevent1">
  149. <omgdc:Bounds height="35.0" width="35.0" x="280.0" y="230.0"></omgdc:Bounds>
  150. </bpmndi:BPMNShape>
  151. <bpmndi:BPMNShape bpmnElement="alfrescoUsertask1" id="BPMNShape_alfrescoUsertask1">
  152. <omgdc:Bounds height="55.0" width="105.0" x="380.0" y="220.0"></omgdc:Bounds>
  153. </bpmndi:BPMNShape>
  154. <bpmndi:BPMNShape bpmnElement="parallelgateway1" id="BPMNShape_parallelgateway1">
  155. <omgdc:Bounds height="40.0" width="40.0" x="530.0" y="227.0"></omgdc:Bounds>
  156. </bpmndi:BPMNShape>
  157. <bpmndi:BPMNShape bpmnElement="alfrescoUsertask2" id="BPMNShape_alfrescoUsertask2">
  158. <omgdc:Bounds height="55.0" width="105.0" x="580.0" y="140.0"></omgdc:Bounds>
  159. </bpmndi:BPMNShape>
  160. <bpmndi:BPMNShape bpmnElement="alfrescoUsertask3" id="BPMNShape_alfrescoUsertask3">
  161. <omgdc:Bounds height="55.0" width="105.0" x="580.0" y="300.0"></omgdc:Bounds>
  162. </bpmndi:BPMNShape>
  163. <bpmndi:BPMNShape bpmnElement="endevent1" id="BPMNShape_endevent1">
  164. <omgdc:Bounds height="35.0" width="35.0" x="755.0" y="310.0"></omgdc:Bounds>
  165. </bpmndi:BPMNShape>
  166. <bpmndi:BPMNEdge bpmnElement="flow1" id="BPMNEdge_flow1">
  167. <omgdi:waypoint x="315.0" y="247.0"></omgdi:waypoint>
  168. <omgdi:waypoint x="380.0" y="247.0"></omgdi:waypoint>
  169. </bpmndi:BPMNEdge>
  170. <bpmndi:BPMNEdge bpmnElement="flow2" id="BPMNEdge_flow2">
  171. <omgdi:waypoint x="485.0" y="247.0"></omgdi:waypoint>
  172. <omgdi:waypoint x="530.0" y="247.0"></omgdi:waypoint>
  173. </bpmndi:BPMNEdge>
  174. <bpmndi:BPMNEdge bpmnElement="flow4" id="BPMNEdge_flow4">
  175. <omgdi:waypoint x="550.0" y="267.0"></omgdi:waypoint>
  176. <omgdi:waypoint x="550.0" y="327.0"></omgdi:waypoint>
  177. <omgdi:waypoint x="580.0" y="327.0"></omgdi:waypoint>
  178. </bpmndi:BPMNEdge>
  179. <bpmndi:BPMNEdge bpmnElement="flow5" id="BPMNEdge_flow5">
  180. <omgdi:waypoint x="550.0" y="227.0"></omgdi:waypoint>
  181. <omgdi:waypoint x="550.0" y="167.0"></omgdi:waypoint>
  182. <omgdi:waypoint x="580.0" y="167.0"></omgdi:waypoint>
  183. </bpmndi:BPMNEdge>
  184. <bpmndi:BPMNEdge bpmnElement="flow8" id="BPMNEdge_flow8">
  185. <omgdi:waypoint x="685.0" y="327.0"></omgdi:waypoint>
  186. <omgdi:waypoint x="755.0" y="327.0"></omgdi:waypoint>
  187. </bpmndi:BPMNEdge>
  188. <bpmndi:BPMNEdge bpmnElement="flow9" id="BPMNEdge_flow9">
  189. <omgdi:waypoint x="632.0" y="195.0"></omgdi:waypoint>
  190. <omgdi:waypoint x="772.0" y="310.0"></omgdi:waypoint>
  191. </bpmndi:BPMNEdge>
  192. </bpmndi:BPMNPlane>
  193. </bpmndi:BPMNDiagram>
  194. </definitions>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement