qwe 发表于 2021-8-16 18:09:57

创建脚本后不生效的问题请教

首先,在流程应用中创建了一个脚本,如下图,主要是为了向上层组织查找领导。
https://www.o2oa.net:443/x_file_assemble_control/jaxrs/file/f360f7ff-8f2c-4a16-8a84-6208e82f844c/download/stream

2. 在流程的审批人节点,配置处理人,脚本中内容如下(表单上生效能输出期望的审批人信息,但流程配置后,流转不下去):
https://www.o2oa.net:443/x_file_assemble_control/jaxrs/file/826d9800-0705-42ea-9520-6d012c0486d2/download/stream
3. 请问以上是有什么问题吗?为什么表单上写了,输出了期望的信息。然后流程中配置脚本后,却不能流转?更神奇的是,如果把输出的结果直接赋值(如下边的代码)就可以流转。
这种可以流转:
var checkers=[{
    "unitOrder": 99975000,
    "matchUnitName": "智能xx业务部",
    "matchUnitLevelName": "测试/智能xx业务部",
    "matchUnitLevel": 2,
    "matchUnitOrder": 99975000,
    "matchUnitDutyName": "总监",
    "matchUnitDutyId": "3a1939b5-0231-4af9-878b-ed27c29b09fc",
    "matchUnitDutyNumber": 1,
    "name": "陈某",
    "unique": "118790a6-71d5-4ab0-b0b8-60ef81b8741e",
    "distinguishedName": "陈某@118790a6-71d5-4ab0-b0b8-60ef81b8741e@I",
    "person": "陈某@ChenMou@P",
    "unit": "智能xx业务部@91@U",
    "unitName": "智能xx业务部",
    "unitLevel": 2,
    "unitLevelName": "测试/智能xx业务部",
    "orderNumber": 0
},
{
    "unitOrder": 99975000,
    "matchUnitName": "智能xx业务部",
    "matchUnitLevelName": "测试/智能xx业务部",
    "matchUnitLevel": 2,
    "matchUnitOrder": 99975000,
    "matchUnitDutyName": "分管高管",
    "matchUnitDutyId": "22db812f-d567-49df-bf51-88c3de2e6b7f",
    "matchUnitDutyNumber": 1,
    "name": "向某",
    "unique": "a8820bcd-2666-4d7a-8203-d394333e4e63",
    "distinguishedName": "向某@a8820bcd-2666-4d7a-8203-d394333e4e63@I",
    "person": "向某@XiangMou@P",
    "unit": "智能xx业务部@91@U",
    "unitName": "智能xx业务部",
    "unitLevel": 2,
    "unitLevelName": "测试/智能xx业务部",
    "orderNumber": 0
}];
这种也可以流转://var tt=["陈某@118790a6-71d5-4ab0-b0b8-60ef81b8741e@I","向某@a8820bcd-2666-4d7a-8203-d394333e4e63@I"];
但是调用脚本里的方法如下,后却不可以流转,是为啥?
this.include("getWorkersByUpUnit2");
//流程实例对象数据
var work = this.workContext.getWork();
//拟稿人
var creator = work.creatorIdentity;
//拟稿人所在组织
var unit = work.creatorUnitDn;
var dutys = ["副总监", "总监"];
var checkers=this.getAuditorListByDutyAndUnits2(dutys, unit);
if (checkers.length > 0) {
return checkers;
}
else {
    return creator;
}

qwe 发表于 2021-8-16 18:12:36

补充一下第一张图,自定义脚本中的代码,请帮忙看看到底是为啥:
//批量查询某组织中多个职务对应的身份数组
this.define("getAuditorListByDutyAndUnits2", function (dts, ut) {
    var leaders = [];
    for (var d = 0; d < dts.length; d++) {
      var arr=this.getAuditorByDutyAndUnit2(dts, ut);
      for(var i=0;i<arr.length;i++){
         leaders.push(arr);
      }
    }
    return leaders;
}.bind(this));

//查询某组织某职务对应的身份
this.define("getAuditorByDutyAndUnit2", function (dt, ut) {
    var result = [];
    //所在组织的所有职务
    var dutyNameList = this.org.listDutyNameWithUnit(ut);
    if (dutyNameList.contains(dt)) { //当前组织包含所需职务
      var identityList = this.org.getDuty(dt, ut);
      result.push(identityList);
    }
    else {
      //向上级追溯
      var supunits = this.org.listSupUnit(ut, false, false); //直接上级
      var tmp=[];
      if (supunits.length > 0 && supunits.level > 1) {
            result=tmp.concat(this.getAuditorByDutyAndUnit2(dt, supunits));
      }
    }
    return result;
}.bind(this));

论坛管理员 发表于 2021-8-17 09:51:03

您好:服务器后台脚本,应该是无法引入前端脚本的!

qwe 发表于 2021-8-17 15:36:28

您好,不使用引入的方法,直接在脚本处定义js方法也不能生效。请问这种需求一般怎么实现?

论坛管理员 发表于 2021-8-18 14:45:43

您可以加
print("调式")
看看到底执行到哪一步不对!

qwe 发表于 2021-8-20 20:16:35

谢谢
页: [1]
查看完整版本: 创建脚本后不生效的问题请教