说明

在人员策略中,我们提供了一种脚本的人员策略,就是允许用户通过编写自定义的java脚本来返回执行人员数据,下面说一下脚本如何写,及注意事项。

策略实现方法

脚本策略实现的代码如下:


import com.redxun.dto.bpm.TaskExecutor;

@Override
    public Collection<TaskExecutor> getExecutors(UserConfig userConfig, Map<String, Object> vars) {
        Set<TaskExecutor> idList=new LinkedHashSet<>();
        if(StringUtils.isEmpty(userConfig.getConfig())){
            return idList;
        }

        Map<String,Object> contextData= ActivitiUtil.getConextData(vars);
        Object jsonResult= processScriptEngine.exeScript(userConfig.getConfig(),contextData);
        //若返回为集合
        if(jsonResult instanceof Collection){
            Collection  idInfos=(Collection)jsonResult;
            idList.addAll(idInfos);
        }else if(jsonResult instanceof OsGroupDto){
            //返回值为用户组
            OsGroupDto group=(OsGroupDto)jsonResult;
    idList.add(TaskExecutor.getGroup(group.getGroupId(),group.getName()));
        }else if(jsonResult instanceof IUser){
            //返回值为用户
            IUser user=(IUser)jsonResult;
            idList.add(TaskExecutor.getUser(user.getUserId(),user.getFullName(),user.getAccount()));
        }
        return idList;
    }

从代码中我们可以看到,我们在编写脚本时需要返回数据。

返回的数据结构有以下几种。

1.返回 Collection<TaskExecutor> TaskExecutor 集合。
2.返回 OsGroupDto 对象。
3.返回IUser对象。

上下文数据如下:

变量 说明
cmd IExecutionCmd 对象
vars 流程变量,例如 vars.days
表单数据 使用 bo别名 +”.” + 字段的方式应用,比如应用表单中的用户ID ,user.userId
文档更新时间: 2022-05-21 10:23   作者:zyg