天翎MyApps技术社区 - 低代码平台 | 流程管理系统 | BPM软件

 找回密码
 注册成为天翎用户
查看: 3054|回复: 0

[流程-操作] 终止流程(流程终止需要触发另外的审批流程)

[复制链接]
karrman 发表于 2015-6-10 12:49:35 | 显示全部楼层 |阅读模式
A:对于系统现有的功能,终止流程是在流程图-审批人设置中,勾选“允许审批人终止流程”,但是无法做到终止流程后,触发针对终止的操作,触发流程,当审批通过后,才允许流程被终止;

在表单中,需要添加操作按钮类型为“无”,在动作执行脚本中放如下代码,主要传当前文档id,当前节点id这两个字段;同时隐藏脚本中,需要跟进当前id是否在走流程的记录中(非完成状态),如果为是,则隐藏,否则可以被多次触发;
         (function(){
                  var domain = getDomainid();
        var application = getApplication();
                 var doc1=getCurrentDocument();
                var relation_id=doc1.getId();
                var appno=doc1.getItemValueAsString("申请单号");
                var params1 = getParamsTable();
                var currid=params1.getParameterAsString("_currid")
                var formProcess = new Packages.cn.myapps.core.dynaform.form.ejb.FormProcessBean();//申明表单业务处理类

        var form = formProcess.doViewByFormName("被终止流程",getApplication());  //根据表单名查询出表单(被终止流程为对应的插入记录的表单名)

        var userProcess = createProcess("cn.myapps.core.user.ejb.UserProcess");

        var user = userProcess.getUserByLoginno("wgs",getDomainid());//根据用户名查询表单的创建者(wgs为对应的作者登录名)

        var webuser = new Packages.cn.myapps.core.user.action.WebUser(user);

        var process = getDocumentProcess();//申明文档业务处理类

        var doc = process.doNew(form,webuser,new Packages.cn.myapps.base.action.ParamsTable());//创建记录
        var uuid = new Packages.cn.myapps.util.sequence.Sequence();
                 doc.setId(uuid.getSequence());
        doc.setFlowid("11e5-0e7f-ac94b3f6-90d6-ff870a13c83e");//flowid为对应的流程Id.
                doc.setAuthor(getWebUser());
        doc.setIstmp(false);
        doc.setApplicationid(application);
        doc.setLastmodifier(getWebUser().getId());
        doc.setDomainid(domain);
                doc.addStringItem("申请单号",appno);
                doc.addStringItem("relation_id",relation_id);//relation_id为被终止的文档记录id
                doc.setStateLabel("未提交");
                doc.addStringItem("currid",currid);//currid为当前流程节点id

        var params =new Packages.cn.myapps.base.action.ParamsTable();
               

        params.setParameter("_flowid", "11e5-0e7f-ac94b3f6-90d6-ff870a13c83e")//为对应的流程Id.
        process.doCreate(doc);
                println("sddddddddd");
        process.doStartFlowOrUpdate(doc,params,webuser);//启动流程
                return "";
                })()
        2、申请终止流程,会新增记录到具体表单,并触发该表单走流程,改字段至少包含被终止的文档记录id和流程节点;在终止流程到审批完成的最后线上,放执行脚本:



                                
                                  (function(){
                                        var relation_id =getCurrentDocument().getItemValueAsString("relation_id");
                                        var doc=findDocument(relation_id);
                                        if(doc != null){
                                        //当前流程实例ID
                                        var instance = doc.getState();
                                        var flowStateId=doc.getStateid();//当前流程实例ID
                                        var currid=getCurrentDocument().getItemValueAsString("currid");
                                       
                                        var fd = instance.getFlowVO().toFlowDiagram();
                                       
                                        var update = false;
                                        var currNode = fd.getElementByID(currid);
                                       
                                        var endNode = new Packages.cn.myapps.core.workflow.element.EndNode(fd);
                                       
                                       
                                        var label = "终止";
                                        endNode.name = label;
                                        //
                                        endNode.id= "terminate_id";
                                        println("endNode0000000000="+endNode);
                                        var nodeRTProcess =  new Packages.cn.myapps.core.workflow.storage.runtime.ejb.NodeRTProcess(getApplication());
                                        //var nodeRTProcess = createProcess("cn.myapps.core.workflow.storage.runtime.ejb.NodeRTProcessBean");
                                        println("instance1111111111111111111111111="+instance.isComplete());
                                        println("instance2222222222222222222222222="+instance.isTerminated());
                                        if(!instance.isComplete() && !instance.isTerminated()){
                                                if(instance.getNoderts()!=null && instance.getNoderts().size()>0){
                                                        for (var iterator = instance.getNoderts().iterator(); iterator.hasNext();) {
                                                                var nodert = iterator.next();
                                                                nodeRTProcess.doRemove(nodert.getId());
                                                                //nodeRTProcess.doRemoveByFlowStateRT(flowStateId);
                                                                println("nodert1111111111111111111111="+nodert);
                                                        }
                                                        instance.getNoderts().clear();
                                                        update = true;
                                                }
                                        }
                                       
                                        if(update){
                                                var actionTime = new Packages.java.util.Date();
                                                var attitude = "";
                                                //更新流程实例
                                                var user=getWebUser();
                                                instance.setAuditdate(actionTime);
                                                instance.setAuditorList("");
                                                instance.setAuditorNames("");
                                                instance.setAudituser(user.getId());
                                                instance.setTerminated(true);
                                                instance.setLastFlowOperation("8");
                                                instance.setLastModified(actionTime);
                                                instance.setLastModifierId(user.getId());
                                                instance.setNoderts(new Packages.java.util.ArrayList());
                                                instance.setStateLabel(label);
                                                var st=new Packages.cn.myapps.core.workflow.engine.StateMachine();
                                                st.getFlowStateRTProcess(doc.getApplicationid()).doUpdate(instance);
                                                //更新流程历史
                                                st.updatePreviousRelationHIS(instance, currNode, user, actionTime);
                                                st.createOrUpdateRelationHIS(instance, currNode, endNode, user, actionTime, attitude,"", "8");
                                                //更新文档
                                       
                                                var proxy = getDocumentProcess();
        
                                                doc.setAuditdate(actionTime);
                                                doc.setAuditorList("");
                                                doc.setAuditorNames("");
                                                doc.setAudituser(user.getId());
                                                doc.setLastFlowOperation("8");
                                                doc.setLastmodified(actionTime);
                                                doc.setLastmodifier(user.getId());
                                                doc.setStateLabel(label);
                                                proxy.doCreateOrUpdate(doc, user);
                                                //更新图片
                                                st.updateImage(instance);
                                                println("st2222222222222222222222222222="+st);
                                        }
                                }
                                return "";
                                })()

流程终止.jpg

本版积分规则

QQ|手机版|天翎MyApps技术社区 ( 粤ICP备11093750号 )

GMT+8, 2026-8-12 05:38

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表