查看: 7377|回复: 4

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

升级   0.85%

3

主题

8

回帖

85

积分

注册会员

Rank: 2

积分
85
发表于 2023-10-17 15:07:59 | 显示全部楼层 |阅读模式
本帖最后由 WarrenPY 于 2023-10-17 15:09 编辑

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

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

使用道具 举报

升级   100%

139

主题

1万

回帖

4万

积分

超级版主

Rank: 8Rank: 8

积分
41458
发表于 2023-10-18 09:43:18 | 显示全部楼层
您可以通过群组来做,组织管理里做几个群组,群组名称就是您章的名称,然后配置对应的成员就是印章的管理员
再通过您表单选择的什么章来查找对应的管理员作为处理人
回复

使用道具 举报

升级   0.85%

3

主题

8

回帖

85

积分

注册会员

Rank: 2

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

使用道具 举报

升级   100%

139

主题

1万

回帖

4万

积分

超级版主

Rank: 8Rank: 8

积分
41458
发表于 2023-10-19 09:17:40 | 显示全部楼层

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

升级   0.85%

3

主题

8

回帖

85

积分

注册会员

Rank: 2

积分
85
发表于 2023-10-23 15:44:43 | 显示全部楼层
本帖最后由 WarrenPY 于 2023-10-23 15:47 编辑

[JavaScript] 纯文本查看 复制代码
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[i];
    var personAllUnits = this.org.listAllSupUnitWithPerson(personId);
    for (var j = 0; j < goodsManageMembers.length; j++) {
        var personUnit = personAllUnits[j];
        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[k];
        if (targetGoodsManagerIdentity) {
            if (targetGoodsManagerIdentity.unitLevelName === creatorUnitLevelName
                || targetGoodsManagerIdentity.unitLevelName.indexOf(_bCompanyLevelName) >= 0
            ) {
                return [targetGoodsManagerIdentity.distinguishedName];
            }
        }
    }
}


return [];


乱写一通,看起来可以,就是需要一直print去调试,有点脑壳痛。而且ES6的写法也是不支持的
回复

使用道具 举报

发表回复

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

联系客服 关注微信 下载APP 返回顶部 返回列表
viewthread