bpmDefinitionNodeSet.jsp 13 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301
  1. <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
  2. <%@include file="/commons/include/html_doctype.html" %>
  3. <html>
  4. <head>
  5. <title>流程定义明细</title>
  6. <%@include file="/commons/include/form.jsp" %>
  7. <%-- <link href="${ctx}/styles/default/css/jquery.qtip.css" rel="stylesheet" />
  8. <link href="${ctx}/styles/default/css/definition.node.css" rel="stylesheet" /> --%>
  9. <f:link href="jquery.qtip.css"></f:link>
  10. <f:link href="definition.node.css"></f:link>
  11. <script type="text/javascript" src="${ctx}/js/hotent/platform/bpm/SignRuleWindow.js" ></script>
  12. <script type="text/javascript" src="${ctx}/js/hotent/platform/bpm/FlowRuleWindow.js" ></script>
  13. <script type="text/javascript" src="${ctx}/js/hotent/platform/bpm/FlowVarWindow.js" ></script>
  14. <script type="text/javascript" src="${ctx}/js/hotent/platform/bpm/ForkConditionWindow.js" ></script>
  15. <script type="text/javascript" src="${ctx}/js/hotent/platform/bpm/FlowEventWindow.js" ></script>
  16. <script type="text/javascript" src="${ctx}/js/hotent/platform/bpm/FlowForkJoinWindow.js" ></script>
  17. <script type="text/javascript" src="${ctx}/js/hotent/platform/bpm/FlowMessageWindow.js" ></script>
  18. <script type="text/javascript" src="${ctx}/js/hotent/platform/bpm/FlowReminderWindow.js" ></script>
  19. <script type="text/javascript" src="${ctx}/js/hotent/platform/bpm/FlowApprovalItemWindow.js" ></script>
  20. <script type="text/javascript" src="${ctx}/js/hotent/platform/bpm/ViewSubFlowWindow.js" ></script>
  21. <script type="text/javascript" src="${ctx}/js/hotent/platform/bpm/BpmNodeSetWindows.js" ></script>
  22. <script type="text/javascript" src="${ctx}/js/jquery/plugins/jquery.qtip.js" ></script>
  23. <script type="text/javascript" src="${ctx}/js/hotent/platform/bpm/FlowOrgUserScopeWindow.js" ></script>
  24. <script type="text/javascript">
  25. var defId ="${bpmDefinition.defId}";
  26. var actDefId ="${bpmDefinition.actDefId}";
  27. var deployId= "${bpmDefinition.actDeployId}";
  28. var parentActDefId = "${parentActDefId}";
  29. var defKey = "${bpmDefinition.defKey}";
  30. var menu;
  31. //判断参数是否加载
  32. var isOtherParamFrm=false;
  33. var currentObj=null;
  34. $(function (){
  35. setContainerHeightWidth();
  36. $("div.flowNode").each(function(){
  37. $(this).bind({mouseenter:function(){
  38. currentObj=$(this);
  39. }});
  40. currentObj=$(this);
  41. var type=currentObj.attr("type"),
  42. title=currentObj.attr("title"),
  43. id=currentObj.attr("id");
  44. var items= getItems(id,type);
  45. if(!items)return;
  46. if(items.length==0)return;
  47. var item,html=['<div class="edui-menu-body">'];
  48. while(item=items.pop()){
  49. if(item.id=='-'){
  50. html.push('<div class="edui-menuitem edui-menuseparator"><div class="edui-menuseparator-inner"></div></div>');
  51. }
  52. else{
  53. html.push('<div class="edui-menuitem edui-for-'+item.id+'" onmouseover="$(this).addClass(\'edui-state-hover\')" onmouseout="$(this).removeClass(\'edui-state-hover\')" onclick="clickHandler(this.id)" id="'+item.id+'"><div class="edui-box edui-icon"></div><div class="edui-box edui-label edui-menuitem-label">'+item.text+'</div></div>');
  54. }
  55. }
  56. html.push('</div>');
  57. $(this).qtip({
  58. content:{
  59. text:html.join(''),
  60. title:{
  61. text:title
  62. }
  63. },
  64. position: {
  65. at:'center',
  66. target:'event',
  67. adjust: {
  68. x:-15,
  69. y:-15
  70. },
  71. viewport: $(window)
  72. },
  73. show:{
  74. effect: function(offset) {
  75. $(this).slideDown(200);
  76. }
  77. },
  78. hide: {
  79. event:'click mouseleave',
  80. leave: false,
  81. fixed:true,
  82. delay:300
  83. },
  84. style: {
  85. classes:'ui-tooltip-light ui-tooltip-shadow'
  86. }
  87. });
  88. });
  89. // var swidth = ${shapeMeta.width};
  90. // var width= $(document.body).width();//浏览器当前窗口文档body的高度
  91. // if(swidth>width)
  92. // $('.panel-container').css('width','${shapeMeta.width}px');
  93. });
  94. function setContainerHeightWidth(){
  95. var h=document.documentElement.clientHeight ;
  96. var w=$(".panel-container").width();
  97. $("#divContainer").height(h-120).width(w);
  98. }
  99. function getItems(id,type) {
  100. var items=[];
  101. switch(type){
  102. case "startEvent":
  103. items= [
  104. {id:"nodeMsgTemp",text:"节点信息模板"},
  105. {id:"nodeSql",text:"节点sql设置"},
  106. {id:'-'},
  107. {id:'flowEvent', text: '事件设置'}
  108. /* {id:"triggerNewFlow",text:"触发新流程设置"} */
  109. ];
  110. break;
  111. /*
  112. case "subStartEvent":
  113. items= [ {id:'flowEvent', text: '事件设置'}];
  114. break;
  115. */
  116. case "endEvent":
  117. items= [
  118. {id:"nodeMsgTemp",text:"节点信息模板"},
  119. {id:"nodeSql",text:"节点sql设置"},
  120. {id:'-'},
  121. {id:'flowEvent', text: '事件设置'}
  122. /* {id:"triggerNewFlow",text:"触发新流程设置"} */
  123. ];
  124. break;
  125. case "parallelGateway":
  126. items= [];
  127. break;
  128. case "inclusiveGateway":
  129. case "exclusiveGateway":
  130. items= [{id:'flowCodition', text: '设置分支条件' }];
  131. break;
  132. case "multiUserTask":
  133. items= [{id:'-'},
  134. {id:"nodeMsgTemp",text:"节点信息模板"},
  135. {id:"nodeSql",text:"节点sql设置"},
  136. {id:'-'},
  137. {id:'flowRule', text: '跳转规则设置' },
  138. {id:'flowVote', text: '会签投票规则设置' },
  139. {id:'-'},
  140. {id:'flowEvent', text: '事件设置' },
  141. {id:'flowDue', text: '任务催办设置' },
  142. {id:'-'},
  143. {id:'flowOrgUser', text: '人员选择器设置' },
  144. {id:'informType',text:'通知方式'}];
  145. break;
  146. case "userTask":
  147. if(isFirstNode(id)){
  148. items= [{id:'-'},
  149. {id:"nodeMsgTemp",text:"节点信息模板"},
  150. {id:"nodeSql",text:"节点sql设置"},
  151. {id:'-'},
  152. {id:'flowRule', text: '跳转规则设置' },
  153. {id:'flowEvent', text: '事件设置' },
  154. {id:'-'},
  155. {id:'flowDue', text: '任务催办设置' },
  156. {id:'-'},
  157. {id:'flowOrgUser', text: '人员选择器设置' },
  158. {id:'informType',text:'通知方式'}];
  159. }else{
  160. items= [
  161. {id:'-'},
  162. {id:"nodeMsgTemp",text:"节点信息模板"},
  163. {id:"nodeSql",text:"节点sql设置"},
  164. {id:'-'},
  165. {id:'flowRule', text: '跳转规则设置' },
  166. {id:'flowEvent', text: '事件设置' },
  167. {id:'-'},
  168. {id:'flowDue', text: '任务催办设置' },
  169. {id:'flowForkJoin', text: '流程分发汇总' },
  170. {id:'-'},
  171. {id:'flowOrgUser', text: '人员选择器设置' },
  172. {id:"triggerNewFlow",text:"触发新流程设置"},
  173. {id:'informType',text:'通知方式'}];
  174. }
  175. break;
  176. case "webService":
  177. items= [{id:'webServiceSet',text:'WebService设置'}];
  178. break;
  179. case "email":
  180. items= [{id:'flowMessage', text: '消息参数' }];
  181. break;
  182. case "script":
  183. items= [{id:'flowEvent', text: '设置脚本' }];
  184. break;
  185. case "callActivity":
  186. items= [
  187. {id: 'viewSubFlow',text: '查看调用子流程示意图'},
  188. {id: 'flowSet', text: '设置子流程'}];
  189. break;
  190. case "subProcess":
  191. items= [{id: 'flowEvent',text: '事件设置'}];
  192. break;
  193. }
  194. return items;
  195. }
  196. function isFirstNode(id){
  197. var isFirst = false;
  198. $("input.firstNode").each(function(){
  199. var nodeId = $(this).val();
  200. if(id==nodeId){
  201. isFirst = true;
  202. }
  203. });
  204. return isFirst;
  205. }
  206. var signRule;
  207. var flowRule;
  208. var forkCondition;
  209. function clickHandler(itemId){
  210. //节点类型
  211. var type=currentObj.attr("type");
  212. //任务id
  213. var activitiId=currentObj.attr("id");
  214. var activityName=currentObj.attr("title");
  215. if(itemId=="flowVote" && type=="multiUserTask"){
  216. SignRuleWindow({actDefId:actDefId,activitiId:activitiId,defId:defId});
  217. }
  218. else if(itemId=="flowRule"){
  219. FlowRuleWindow({deployId:deployId,actDefId:actDefId,nodeId:activitiId,nodeName:activityName,parentActDefId:parentActDefId});
  220. }
  221. else if(itemId=="webServiceSet"){
  222. //alert("webservice设置");
  223. FlowWebServiceWindow({actDefId:actDefId,nodeId:activitiId,defId:defId});
  224. }
  225. else if(itemId=="flowCodition"){
  226. ForkConditionWindow({defId:defId,deployId:deployId,nodeId:activitiId,parentActDefId:parentActDefId});
  227. }
  228. else if(itemId=="flowMessage"){
  229. FlowMessageWindow({actDefId:actDefId,nodeId:activitiId});
  230. }
  231. else if(itemId=="flowEvent"){
  232. //开始事件 后置脚本 type startEvent
  233. //结束事件 前置脚本 endEvent
  234. //用户任务 多实例任务 前后 userTask multiUserTask
  235. //脚本节点 脚本节点 script
  236. FlowEventWindow({type:type,actDefId:actDefId,activitiId:activitiId,defId:defId,parentActDefId:parentActDefId});
  237. }
  238. else if(itemId=="flowDue"){
  239. FlowReminderWindow({actDefId:actDefId,nodeId:activitiId,parentActDefId:parentActDefId});
  240. }else if(itemId=="flowForkJoin"){
  241. FlowForkJoinWindow({actDefId:actDefId,nodeId:activitiId,activityName:activityName});
  242. }else if(itemId=="flowOrgUser"){ // 选择器设置
  243. FlowOrgUserScopeWindow({nodeId:activitiId,defId:defId,actDefId:actDefId,parentActDefId:parentActDefId});
  244. }else if(itemId=="viewSubFlow"){
  245. ViewSubFlowWindow({nodeId:activitiId,defId:defId,actDefId:actDefId});
  246. }else if(itemId=="informType"){
  247. InformTypeWindow({nodeId:activitiId,defId:defId,actDefId:actDefId,parentActDefId:parentActDefId});
  248. }else if(itemId=="triggerNewFlow"){
  249. TriggerNewFlowWindow({nodeId:activitiId,defId:defId,defKey:defKey,actDefId:actDefId});
  250. }else if(itemId=="flowSet"){
  251. FlowSetWindow({nodeId:activitiId,defId:defId,actDefId:actDefId});
  252. }else if(itemId=="nodeSql"){
  253. BpmNodeSqlWindow({nodeId:activitiId,actDefId:actDefId});
  254. }else if(itemId=="nodeMsgTemp"){
  255. NodeMsgTempWindow({nodeId:activitiId,defId:defId,parentDefId:""});
  256. }
  257. }
  258. </script>
  259. <style type="text/css">
  260. div.flowNode{cursor:pointer;}
  261. </style>
  262. </head>
  263. <body>
  264. <div class="panel">
  265. <jsp:include page="incDefinitionHead.jsp">
  266. <jsp:param value="节点设置" name="title"/>
  267. </jsp:include>
  268. <div id="panel-container" class="panel-container" >
  269. <f:tab curTab="nodeSet" tabName="flow"/>
  270. <div id="divContainer" style="overflow: auto;" >
  271. <div style=" margin:20px auto 0;position: relative;background:url('${ctx}/bpmImage?deployId=${bpmDefinition.actDeployId}') no-repeat;width:${shapeMeta.width}px;height:${shapeMeta.height+100}px;">
  272. ${shapeMeta.xml}
  273. </div>
  274. </div>
  275. </div>
  276. <!-- 第一个节点 -->
  277. <div style="display:none;">
  278. <c:forEach items="${flowNodeList}" var="flowNode">
  279. <input type="text" class="firstNode" value="${flowNode.nodeId}"/>
  280. </c:forEach>
  281. </div>
  282. </div>
  283. </body>
  284. </html>