在liferay的kaleo工作流的脚本分配中为多个用户分配任务

时间:2013-04-15 05:21:07

标签: workflow liferay liferay-6

我已经使用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时,也会在上传时指示定义错误。

1 个答案:

答案 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或类似内容首先从角色中清除旧用户。