说明
在人员策略中,我们提供了一种脚本的人员策略,就是允许用户通过编写自定义的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