Advertisement
AmeliaEnslin

workflow

Sep 1st, 2016
86
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 8.13 KB | None | 0 0
  1. <?xml version="1.0" encoding="UTF-8"?>
  2.  
  3. <process-definition xmlns="urn:jbpm.org:jpdl-3.1" name="kswf:submitapprove">
  4. <swimlane name="initiator" />
  5.  
  6. <start-state name="start">
  7. <task name="kswf:submitDoc" swimlane="initiator" />
  8. <transition name="" to="Submit" />
  9. </start-state>
  10.  
  11. <swimlane name="assignee">
  12. <assignment actor-id="#{bpm_assignee.properties['cm:userName']}"/>
  13. </swimlane>
  14.  
  15. <node name="Submit">
  16. <transition name="" to="Document Review"></transition>
  17. </node>
  18.  
  19. <task-node name="Document Review">
  20. <task name="kswf:reviewDoc" swimlane="assignee" />
  21. <event type="node-enter">
  22. <action class="org.alfresco.repo.workflow.jbpm.AlfrescoJavaScript">
  23. <script>
  24. var docList = "\t";
  25. for (var i = 0; i &lt; bpm_package.children.length; i++)
  26. {
  27. docList += bpm_package.children[i].displayPath + "/" + bpm_package.children[i].properties["cm:name"] + "\n\t";
  28. }
  29. var email = actions.create("mail");
  30. email.parameters.subject = "New Alfresco Task";
  31. email.parameters.to = bpm_assignee.properties["cm:email"];
  32. email.parameters.from = "alfresco@kses.net";
  33. email.parameters.text = "You have been assigned to review the following documents by \"";
  34. email.parameters.text += initiator.properties["cm:userName"] + "\":\n\n" + docList;
  35. email.parameters.text += "\n\nPlease check your Alfresco task list.";
  36. email.execute(bpm_package);
  37. </script>
  38. </action>
  39. </event>
  40. <transition name="approve" to="Approved" />
  41. <transition name="reject" to="Revise" />
  42. </task-node>
  43.  
  44. <node name="Approved">
  45. <event type="node-enter">
  46. <action class="org.alfresco.repo.workflow.jbpm.AlfrescoJavaScript">
  47. <script>
  48. <variable name="kswf_comment" access="read,write" />
  49. <variable name="bpm_package" access="read" />
  50. <variable name="bpm_assignee" access="read" />
  51. <variable name="initiator" access="read" />
  52. <expression>
  53. var docList = "\t";
  54. for (var i = 0; i &lt; bpm_package.children.length; i++)
  55. {
  56. docList += bpm_package.children[i].displayPath + "/" + bpm_package.children[i].properties["cm:name"] + "\n\t";
  57.  
  58. bpm_package.children[i].properties["ks:status"] = "Approved";
  59. bpm_package.children[i].properties["ks:reviewComment"] = kswf_comment;
  60. bpm_package.children[i].save();
  61.  
  62. var workingCopy = bpm_package.children[i].checkout();
  63. workingCopy.checkin("Document approved by " + bpm_assignee.properties["cm:userName"], true);
  64.  
  65. /* get name without extension */
  66. var cmname = bpm_package.children[i].properties["cm:name"];
  67. var idx = cmname.length - 1;
  68. if(cmname.lastIndexOf(".") > 0)
  69. {
  70. idx = cmname.lastIndexOf(".");
  71. }
  72. var docname = cmname.substr(0, idx);
  73.  
  74. /* find space where released documents live */
  75. var drafts = bpm_package.children[i].parent;
  76. var docroot = drafts.parent;
  77. var dest = docroot.childByNamePath("Released");
  78.  
  79. /* see if document was created previously. if not, do initial version bump */
  80. var transdoc = dest.childByNamePath(docname + ".pdf");
  81. var bumpver = false;
  82. if(transdoc == null)
  83. {
  84. bumpver = true;
  85. }
  86.  
  87. /* transform to pdf */
  88. var trans = actions.create("transform");
  89. trans.parameters["destination-folder"] = dest;
  90. trans.parameters["assoc-type"] = "{http://www.alfresco.org/model/content/1.0}contains";
  91. trans.parameters["assoc-name"] = "{http://www.alfresco.org/model/content/1.0}" + bpm_package.children[i].properties["cm:name"];
  92. trans.parameters["mime-type"] = "application/pdf";
  93. trans.execute(bpm_package.children[i]);
  94.  
  95. /* update properties */
  96. transdoc = dest.childByNamePath(docname + ".pdf");
  97. if(transdoc != null)
  98. {
  99. if(bumpver == true)
  100. {
  101. workingCopy = transdoc.checkout();
  102. workingCopy.checkin("Initial version.", true);
  103. }
  104. workingCopy = transdoc.checkout();
  105. workingCopy.properties["ks:status"] = "Approved";
  106. workingCopy.properties["ks:reviewComment"] = kswf_comment;
  107. workingCopy.save();
  108. workingCopy.checkin("Document approved by " + bpm_assignee.properties["cm:userName"], true);
  109. }
  110. }
  111. var email = actions.create("mail");
  112. email.parameters.subject = "Alfresco Task Update: Approved";
  113. email.parameters.to = initiator.properties["cm:email"];
  114. email.parameters.from = "alfresco@kses.net";
  115. email.parameters.text = "The following documents were approved by \"" + bpm_assignee.properties["cm:userName"] + "\":\n\n" + docList;
  116. email.parameters.text += "\nComments:\n" + kswf_comment;
  117. email.execute(bpm_package);
  118. </expression>
  119. </script>
  120. </action>
  121. </event>
  122.  
  123. <transition name="" to="endstate"></transition>
  124. </node>
  125.  
  126. <task-node name="Revise">
  127. <task name="kswf:reviseDoc" swimlane="initiator"></task>
  128. <event type="node-enter">
  129. <action class="org.alfresco.repo.workflow.jbpm.AlfrescoJavaScript">
  130. <script>
  131. <variable name="kswf_comment" access="read,write" />
  132. <variable name="bpm_package" access="read" />
  133. <variable name="bpm_assignee" access="read" />
  134. <variable name="initiator" access="read" />
  135. <expression>
  136. var docList = "\t";
  137. for (var i = 0; i &lt; bpm_package.children.length; i++)
  138. {
  139. docList += bpm_package.children[i].displayPath + "/" + bpm_package.children[i].properties["cm:name"] + "\n\t";
  140.  
  141. bpm_package.children[i].properties["ks:status"] = "Rejected";
  142. bpm_package.children[i].properties["ks:reviewComment"] = kswf_comment;
  143. bpm_package.children[i].save();
  144. var workingCopy = bpm_package.children[i].checkout();
  145. workingCopy.checkin("Document rejected by " + bpm_assignee.properties["cm:userName"], false);
  146. }
  147.  
  148. var email = actions.create("mail");
  149. email.parameters.subject = "Alfresco Task Update: Rejected";
  150. email.parameters.to = initiator.properties["cm:email"];
  151. email.parameters.from = "alfresco@kses.net";
  152. email.parameters.text = "The following documents were rejected by \"" + bpm_assignee.properties["cm:userName"] + "\":\n\n" + docList;
  153. email.parameters.text += "\nComments:\n" + kswf_comment;
  154. email.execute(bpm_package);
  155. </expression>
  156. </script>
  157. </action>
  158. </event>
  159. <transition name="submit" to="Submit"></transition>
  160. <transition name="done" to="endstate"></transition>
  161. </task-node>
  162.  
  163. <end-state name="endstate" />
  164.  
  165. </process-definition>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement