【myApps/OBPM版本号】:v5.0- sp1
【浏览器类型】:360
【联系方式-QQ】:991466514
【联系电话】: 请留下您的联系电话,以便技术同事更好解决您的问题
【问题描述】:
遇到了分支节点并行流程,想要的是提交后,对应的节点审批人登录后,其对应的签字按钮会显示,不属于他的签字按钮不显示,其中用到了两个函数:
//1111111111函数1:
//当前流程处理节点其中有signname时返回false;否则返回true;
//可用于设置签字按钮只在signname流程节点可使用
function readonly_sign(signname){
var rtn=true;
var nodename = "";
var curDoc = getCurrentDocument();
// println("curDoc========"+curDoc)
var state_la = curDoc.getStateLabel();
println("state_la--------"+state_la)
var userid = getWebUser().getId();
var uservo = getWebUser();
var acotrid="";
if(isNotNull(state_la)&&curDoc.getState()!=null){
var actors = curDoc.getState().getActors();
println("curDoc========"+actors)
if (actors != null) {
for(var it = actors.iterator(); it.hasNext(); ) {
var actor = it.next();
acotrid += actor.getActorid()+";";
}
//println("acotrid========"+acotrid)
//println("userid========"+userid)
if(acotrid.indexOf(userid)>=0){
//var uservo = getUserById(userid);
var webUser = Packages.cn.myapps.base.web.WebUser(uservo);
var nodeRt = Packages.cn.myapps.runtime.workflow.engine.StateMachine.getCurrUserNodeRT(curDoc,webUser);
if(nodeRt != null){
nodename = nodeRt.getName();
println("nodename========"+nodename)
}
}
}
}
if(signname.equals(nodename)){
rtn=false;
}
//println("sss==="+signname+"+++nnn==="+nodename);
return rtn;
}
//22222222函数2:
//field_name签章字段,为空时返回false;不为空返回true;
//用于签章按钮签章后隐藏
function hide_sign(field_name){
var value = getItemValueAsString(field_name);
println("value+++++++"+value)
var retvar = true;
if(value==null || value.trim().length()<=0) {
retvar = false;
}
return retvar;
}
-----------------分割线-------
//签字按钮隐藏条件脚本:
var bool=false;
#include "sys_sign_and_seal";
var bol1 = hide_sign('经办项目负责人');
var bol2 = readonly_sign("施工单位项目经理");
if(bol1==true ||bol2==true ){
bool= true;
}
bool;
该方式在M3版本是可行的,在5.0版本如果流程无分支的话也是可以的,但是有分支的话就有如下问题:
①经办人分别提给两个分支节点(安全和质量)之后,对应的审批人A,B登录后签字按钮都不显示,这时候得到的acotrid正常来说应该是A和B的userid,但是print出来后是上一个提交者的userid,然后诡异的来了,后台保存下业务表单后,A和B再点进表单,签字按钮就出现了,也能print正常的这俩人的acotrid了:
②然后A,B继续提给对应的负责人的时候,①描述的问题依然存在,而且,当图里圈起来的两个节点是同一个审批人的话,比方质量技术人员和安全人员先后提给了C,则审批人C会出现两条待办,回退的饿时候,任选一条点进去,回退的时候都显示后提交的那根线,也就是安全人员那条,只有将这条回退过去后,另一个待办再退才显示另一个线(质量技术人员)
说简单点
①acotrid获取不到正确的值,是脚本问题还是新版本bug,该如何解决
②分支流程中不同审批节点是相同审批人的话,回退的时候只显示后提交那根线是不是也是bug?
|