前端页面按照规则指定审批人,思路是:
点击按钮打开一个取数规则的设置页面
//审批人点击事件响应
function taskApproverSelect() {
window.currentTaskApprover=getTaskApprover();
window.$.modal.openFull("流程节点审批人选择", "/act/definition/model/userTaskApprover");
}
这里面的taskApproverSelect() 就是设计器里面指定的那个调用函数了
![](https://i-blog.csdnimg.cn/blog_migrate/c8544ab2c82fcf1d7bb35e675fdc9c5f.png)
点击确定,接收设定规则集
//设置审批人
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转为字符串保存到模型的指定字段里面。