You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Polarion工作流脚本中调用ALM API管理用户组

Polarion工作流脚本添加用户到全局用户组实现方案

依赖包引入方法

Polarion工作流脚本运行在平台内置的上下文环境中,com.polarion.alm.shared.api.model.usergroup、com.polarion.alm.shared.api.transaction属于平台原生核心API,对应的Jar包已经默认加载,不需要额外导入依赖文件。
如果需要显式声明包引用(用于避免类名冲突的场景),在脚本开头添加对应声明即可:
适配默认Rhino JavaScript脚本引擎的写法:

importPackage(Packages.com.polarion.alm.shared.api.model.usergroup);
importPackage(Packages.com.polarion.alm.shared.api.transaction);

适配Groovy脚本引擎的写法:

import com.polarion.alm.shared.api.model.usergroup.*
import com.polarion.alm.shared.api.transaction.*

功能实现代码

你提供的代码是Java 8+ lambda写法,默认的Rhino JS脚本引擎不支持lambda语法,需要改写为适配脚本的实现,同时支持传入输入参数,可直接使用的JS版本代码如下:

// 直接读取工作流配置的输入参数,参数名与你在工作流节点配置的入参key保持一致
var targetUserGroupId = input_group_id; // 传入的目标全局用户组ID
var userIdList = input_user_ids; // 传入的待添加用户ID数组,格式如["user1","user2"]

// 启动写事务执行修改操作
TransactionalExecutor.executeInWriteTransaction(new WriteTransactionAction() {
    execute: function(transaction) {
        // 按ID查询目标用户组,做存在性校验避免空报错
        var groupHolder = transaction.userGroups().getBy().id(targetUserGroupId);
        if (groupHolder == null || !groupHolder.exists()) {
            return null;
        }
        // 获取可编辑的用户组对象
        var updatableGroup = groupHolder.getUpdatable(transaction);
        var groupUsersField = updatableGroup.fields()._users();

        // 遍历添加所有传入的用户
        for (var i = 0; i < userIdList.length; i++) {
            var currentUserId = userIdList[i];
            // 校验用户不存在于当前组时再添加,避免重复数据
            if (!groupUsersField.containsUser(currentUserId)) {
                groupUsersField.addUser(currentUserId);
            }
        }

        // 保存修改
        updatableGroup.save();
        return null;
    }
})

注意事项

  • 确保触发该工作流的账号具备全局用户组的编辑权限,否则会抛出权限异常
  • 如果运行时提示类找不到,给用到的API类名前加Packages.前缀即可,对应全路径为Packages.com.polarion.alm.shared.api.transaction.TransactionalExecutor、Packages.com.polarion.alm.shared.api.transaction.WriteTransactionAction
  • 如果实例配置Groovy为脚本引擎,可直接使用你提供的lambda写法,仅需将硬编码的groupId、用户ID替换为工作流入参变量即可
  • 待添加的用户只要加入绑定了对应全局角色的全局用户组,会自动继承该组的全局角色权限,不需要额外做权限赋值操作

内容的提问来源于stack exchange,提问作者Nayudu

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.27 07:06:22