使用场景:流程节点有A—>B—>c—>D—>E,当表单从A流转至B/C/D/E等任意节点,被回退到A节点,此时再次提交不再通过已审批节点,直接提交到执行回退操作节点。- //提交按钮动作执行前
- (function(){
- var remark = "";
- var typr = getParameter("_flowType");
- var currentId =""
- var user=getWebUser();
- var process = getDocumentProcess();
- var doc=getCurrentDocument();
- var st=new Packages.cn.myapps.runtime.workflow.engine.StateMachine();
- //var st=new Packages.cn.myapps.core.workflow.engine.StateMachine();//1.6
- var nodert = st.getCurrUserNodeRT(doc,user);
- if("81".equals(typr)){
- if(nodert != '' && nodert != null){
- currentId = nodert.getNodeid();
- doc.findItem("回退节点id").setValue(currentId);//把回退节点的id存到表单上
- println("回退进来");
- println("currentId---------"+currentId);
- process.doUpdate(doc);
- }
- }
- return remark;
- })()
- //提交按钮动作执行后
- (function(){
- var remark = "";
- var doc=getCurrentDocument();
- //FlowStateRT instance 流程实例
- var instance=doc.getState();
- var currentId="";
- if(instance!=null){
- //节点集合,当前到达的节点
- var noderts=instance.getNoderts();
- if(noderts!=null){
- var iter =noderts.iterator();
- if(iter != null && iter.hasNext()){
- var noder = iter.next();
- currentId=noder.getNodeid(); //当前节点id
- }
- }
- }
- println("id---->"+currentId);
- var typr = getParameter("_flowType");
- if("80".equals(typr)){
- //println("提交进来");
- var nextFlowId=doc.getItemValueAsString("回退节点id");
- if(!"".equals(nextFlowId)){
- //println("回退后第一提交");
- var flowid="";
- var flowoption = "86";
- var comment = "回退后系统自动流转";
- var user=getWebUser();
- var doc=getCurrentDocument();
- var nextNodeId = new Array();
- nextNodeId[0] = nextFlowId;
- var process = getDocumentProcess();
- var params = createParamsTable();
- params.setParameter("_flowid", flowid);
- if(currentId!= "" && currentId!= null){
- //println("currentId--->23"+currentId);
- process.doFlow(doc,params,currentId,nextNodeId,flowoption,comment,user); //流程干预让流程到回退哪里
- doc.findItem("回退节点id").setValue(""); //清空回退节点id
- process.doUpdate(doc);
- }
- }
- }
- return remark;
- })();
复制代码 |