一、实现描述
也称之为“动态角色”,内置用户组一般和当前用户的身份或数据的状态有关,如:部门负责人,返回的是当前用户的负责人;任务发送者,返回的是上一个发送任务的用户。
内置用户组的添加需要通过代码开发实现扩展,基本步骤如下:
1、开发实现net.sysplat.common. I_NativeGroup接口的java类
2、手工在数据表nativegroupdefine_sys中添加一条记录
GroupId:为负数,-1到-9为系统保留
Name:内置用户组的名称
ClassName:1中开发的Java类的全名
Status:状态,1为启用
3、在工作流任务中许可使用
二、代码示例
package net.sysplat.common.imp;
import java.sql.Connection;
import java.util.ArrayList;
import net.sysplat.admin.eo.User;
import net.sysplat.admin.manager.UserGroupManager;
import net.sysplat.common.I_NativeGroup;
import net.sysplat.common.Operator;
import net.sysplat.common.Util;
/**
* 动态角色,选择部门负责人
*/
public class OrganizePrincipal implements I_NativeGroup
{
/**
* 参数或条件,设置最高的级数
*/
private String parameter = null;
private Connection conn = null;
/**
返回的是一个ArrayList,其中包含的是net.sysplat.admin.eo.User的实例
**/
public ArrayList getGroupMembers(int gId, String insId, Operator operator) throws Exception
{
//使用承元的资源管理接口读取部门负责人
int level = 1;
if(parameter != null && Util.isInteger(parameter)) level = Integer.parseInt(parameter);
UserGroupManager ugm = UserGroupManager.getInstance();
ugm.setConnection(conn);
User user = ugm.getOrganizePrincipal(operator.getOrganizeId(), level);
//可以考虑使用参数进行控制,限制层数
if(user != null)
{
ArrayList list = new ArrayList();
list.add(user);
return list;
}
return null;
}
public void setParameter(String parameter)
{
this.parameter = parameter;
}
public void setConnection(Connection conn)
{
this.conn = conn;
}
}