流程编辑器bpmnjs的改造4:点击按钮设置审批人

文章描述了一种前端页面中设置审批人的方法,通过打开规则设置页面,点击确定后将审批人信息更新到列表并保存到JSON对象。审批规则保存时与模型一同存储,避免重复遍历。当保存时,JSON对象转换为字符串存储在模型的特定字段中。
摘要由CSDN通过智能技术生成

前端页面按照规则指定审批人,思路是:

  1. 点击按钮打开一个取数规则的设置页面

//审批人点击事件响应
function taskApproverSelect() {
window.currentTaskApprover=getTaskApprover();
    window.$.modal.openFull("流程节点审批人选择", "/act/definition/model/userTaskApprover");
}

这里面的taskApproverSelect() 就是设计器里面指定的那个调用函数了

  1. 点击确定,接收设定规则集

//设置审批人
function setApprover(approver){
if(approver.isNew){
//如果是第一次设置,加入到列表中
        usertaskApprover.push(approver);
        approver.isNew=false;
    }else{
//更新节点审批人信息
        for(var i=0;i<usertaskApprover.length;i++){
if(usertaskApprover[i].code==approver.code){
usertaskApprover[i]=approver;
            }
        }
    }

var realCode="approver"+approver.id;
    //var label=(approver.filters.length>1)?"<已选集合["+approver.filters.length+"]>":approver.filters[0].filter.description;
    const modeling = this.bpmnModeler.get('modeling');
    if(currentTaskShape){
        modeling.updateProperties(currentTaskShape, {
approver: approver.code,
            assignee: "${"+realCode+"_assignee}",
            candidateUsers: "${"+realCode+"_candidateUsers}",
            candidateGroups:""
        });
        if(!approver.filters || approver.filters.length==0){
            modeling.updateProperties(currentTaskShape, {
approver:"",
                assignee:"",
                candidateUsers:"",
                candidateGroups:""
            });
        }
    } else if(addedTask) {
        modeling.updateProperties(addedTask, {
approver: approver.code,
            assignee: "${"+realCode+"_assignee}",
            candidateUsers: "${"+realCode+"_candidateUsers}",
            candidateGroups:""
        });
        if(!approver.filters || approver.filters.length==0){
            modeling.updateProperties(addedTask, {
approver:"",
                assignee:"",
                candidateUsers:"",
                candidateGroups:""
            });
        }
    } else {
window.$.modal.alert("异常了,请手动填写");
    }

window.currentTaskApprover=approver;
}
//设置审批人
function setApprover(approver){
if(approver.isNew){
//如果是第一次设置,加入到列表中
        usertaskApprover.push(approver);
        approver.isNew=false;
    }else{
//更新节点审批人信息
        for(var i=0;i<usertaskApprover.length;i++){
if(usertaskApprover[i].code==approver.code){
usertaskApprover[i]=approver;
            }
        }
    }

var realCode="approver"+approver.id;
    //var label=(approver.filters.length>1)?"<已选集合["+approver.filters.length+"]>":approver.filters[0].filter.description;
    const modeling = this.bpmnModeler.get('modeling');
    if(currentTaskShape){
        modeling.updateProperties(currentTaskShape, {
approver: approver.code,
            assignee: "${"+realCode+"_assignee}",
            candidateUsers: "${"+realCode+"_candidateUsers}",
            candidateGroups:""
        });
        if(!approver.filters || approver.filters.length==0){
            modeling.updateProperties(currentTaskShape, {
approver:"",
                assignee:"",
                candidateUsers:"",
                candidateGroups:""
            });
        }
    } else if(addedTask) {
        modeling.updateProperties(addedTask, {
approver: approver.code,
            assignee: "${"+realCode+"_assignee}",
            candidateUsers: "${"+realCode+"_candidateUsers}",
            candidateGroups:""
        });
        if(!approver.filters || approver.filters.length==0){
            modeling.updateProperties(addedTask, {
approver:"",
                assignee:"",
                candidateUsers:"",
                candidateGroups:""
            });
        }
    } else {
window.$.modal.alert("异常了,请手动填写");
    }

window.currentTaskApprover=approver;
}

规则指定后,存到一个json对象里面,保存的时候将它直接和模型一起保存,这样的好处是,不必每次指定节点审批人的时候都去遍历所有节点什么的。

这个json对象大概长这个样子:

{id:123,type:'指定用户',filte:{description:'指定用户',userlist:admin}}

自己自由定义,反正自己明白,能解析就行了。

3、保存,将json转为字符串保存到模型的指定字段里面。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值