WarrenPY 发表于 2023-10-17 15:07:59

如何合理的动态设置流程并行处理人

本帖最后由 WarrenPY 于 2023-10-17 15:09 编辑

我在调试一个用章流程的需求,特别的地方在于,用章流程表单里,包含了业务条章、合同章、法人章、公章,这个是一个多选项,因为持章的是不同的员工,所以在盖章流程的时候,会根据这个多选项的值给不同的持章员工生成不同的代办。

我直接通过配置没有直接配出来,我打算通过脚本来实现,但是在官网文档没有没找到一个可以参考的sample,我想知道有没有类似的脚本或者文档可以读一下?

论坛管理员 发表于 2023-10-18 09:43:18

您可以通过群组来做,组织管理里做几个群组,群组名称就是您章的名称,然后配置对应的成员就是印章的管理员
再通过您表单选择的什么章来查找对应的管理员作为处理人

WarrenPY 发表于 2023-10-18 10:45:18

嗯,用群组看起来是一个可行的方案,因为我之前用的是职位来做的,但是因为相同的职位会跨越部门甚至是公司(因为我的组织结构里公司上面还有个集团),能选择的人又只能是自己所在公司里的,所以配置流程的时候,每次配处理人就有点头痛。
在什么地方能找到这种类型的js sample呢,我想这个会有点帮助。

论坛管理员 发表于 2023-10-19 09:17:40


WarrenPY 发表于 2023-10-23 15:44:43

本帖最后由 WarrenPY 于 2023-10-23 15:47 编辑

var goodsManageMembers = this.org.getGroup('物资管理').personList;

// --
var creatorUnitLevelName = this.workContext.getWork().creatorUnitLevelName;
var _bGroupLevelName = creatorUnitLevelName.substr(0, creatorUnitLevelName.indexOf('/'));
var _bCompanyLevelName = creatorUnitLevelName.substr(0, creatorUnitLevelName.indexOf('/', _bGroupLevelName.length + 1));

var levelOneMatchedGoodsManager = null;
var levelTwoMatchedGoodsManager = null;
var levelThreeMatchedGoodsManager = null;

for (var i = 0; i < goodsManageMembers.length; i++) {
    var personId = goodsManageMembers;
    var personAllUnits = this.org.listAllSupUnitWithPerson(personId);
    for (var j = 0; j < goodsManageMembers.length; j++) {
      var personUnit = personAllUnits;
      if (!personUnit) {
            continue;
      }
      if (personUnit.level === 1 && personUnit.levelName === _bGroupLevelName) {
            levelOneMatchedGoodsManager = personId;
      }
      if (personUnit.level === 2 && personUnit.levelName === _bCompanyLevelName) {
            levelTwoMatchedGoodsManager = personId;
      }
      if (personUnit.level === 3 && personUnit.levelName === creatorUnitLevelName) {
            levelThreeMatchedGoodsManager = personId;
      }
    }
}

if (levelThreeMatchedGoodsManager) {
    var targetGoodsManagerIdentityList = this.org.listIdentityWithPerson(levelThreeMatchedGoodsManager);
    for (var k = 0; k < targetGoodsManagerIdentityList.length; k++) {
      var targetGoodsManagerIdentity = targetGoodsManagerIdentityList;
      if (targetGoodsManagerIdentity) {
            if (targetGoodsManagerIdentity.unitLevelName === creatorUnitLevelName
                || targetGoodsManagerIdentity.unitLevelName.indexOf(_bCompanyLevelName) >= 0
            ) {
                return ;
            }
      }
    }
}


return [];

乱写一通,看起来可以,就是需要一直print去调试,有点脑壳痛。而且ES6的写法也是不支持的
页: [1]
查看完整版本: 如何合理的动态设置流程并行处理人