说明

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

策略实现方法

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

  1. @Override
  2. public Collection<TaskExecutor> getExecutors(UserConfig userConfig, Map<String, Object> vars) {
  3. Set<TaskExecutor> idList=new LinkedHashSet<>();
  4. if(StringUtils.isEmpty(userConfig.getConfig())){
  5. return idList;
  6. }
  7. Map<String,Object> contextData= ActivitiUtil.getConextData(vars);
  8. Object jsonResult= processScriptEngine.exeScript(userConfig.getConfig(),contextData);
  9. //若返回为集合
  10. if(jsonResult instanceof Collection){
  11. Collection idInfos=(Collection)jsonResult;
  12. idList.addAll(idInfos);
  13. }else if(jsonResult instanceof OsGroupDto){
  14. //返回值为用户组
  15. OsGroupDto group=(OsGroupDto)jsonResult;
  16. idList.add(TaskExecutor.getGroup(group.getGroupId(),group.getName()));
  17. }else if(jsonResult instanceof IUser){
  18. //返回值为用户
  19. IUser user=(IUser)jsonResult;
  20. idList.add(TaskExecutor.getUser(user.getUserId(),user.getFullName(),user.getAccount()));
  21. }
  22. return idList;
  23. }

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

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

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

上下文数据如下:

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