我已经使用kaleo工作流创建了一个工作流。在这个我试图为多个用户分配一个任务,我在脚本分配标签中使用了groovy脚本。但它没有工作。当我将两个用户ID放在用户对象中时,第一个被替换,第二个用户获得批准任务。 我也使用了用户arraylist,就像kaleo single approver脚本赋值定义中的角色一样。但没有用。
我该如何管理呢。
这是我的代码
roles=null;
Connection con = null;
Statement stmt = null;
ResultSet rs = null;
String secondid;
try
{
Class.forName(dbDriver);
con= (Connection) DriverManager.getConnection(dbUrl,dbUser,dbPwd);
stmt = con.createStatement();
rs = stmt.executeQuery("select ap1,ap2 from test where id = '"+userId+"'");
users=new ArrayList<User>();
while (rs.next())
{
println "approverid one"+rs.getInt(1);
println "approverid two"+rs.getInt(2);
user=UserLocalServiceUtil.getUser(Long.parseLong(rs.getString(1)));
user=UserLocalServiceUtil.getUser(Long.parseLong(rs.getString(2)));
users.add(user);
println "array list:"+users;
}
rs.close();
con.close();
}
catch(SQLException e)
{
e.printStackTrace();
}
catch(ClassNotFoundException e)
{
e.printStackTrace();
}
]]>
</script>
<script-language>groovy</script-language>
</scripted-assignment>
在用户标记中添加两个用户ID时,也会在上传时指示定义错误。
答案 0 :(得分:1)
简而言之,使用角色。在控制面板中,您可以指定角色并向其添加用户。或者,如果您宁愿以编程方式执行此操作(尽管我仍会事先创建该角色),请执行以下操作: (我假设您可以获得或拥有一组userIds
//Already created array of userIds like
// [10180,10191], etc.
roles=new ArrayList<Role>();
try {
Role r = RoleLocalServiceUtil.getRole(companyId, roleName);
if (r.getType()==RoleConstants.TYPE_REGULAR) {
UserLocalServiceUtil.addRoleUsers(r.getRoleId(), userIds);
} else {
UserGroupRoleLocalServiceUtil.addUserGroupRoles(userIds, groupId, r.getRoleId());
}
roles.add(r);
} catch (SystemException e) {
e.printStackTrace();
} catch (PortalException e) {
e.printStackTrace();
}
只需在脚本分配定义中抛出该内容或对其进行一些近似或调用。如果需要,请使用UserLocalServiceUtil.unsetRoleUsers
或类似内容首先从角色中清除旧用户。