平台默认在BIZ层的组织机构函数中提供了根据角色ID和角色Code获取相关组织的函数如下:
findOrgUnitsHasRole(String roldID, Object inOrg, Boolean isPersonMember)
获取拥有某个角色的组织单元
findOrgUnitsHasRole('角色ID', '', true)
findOrgUnitsHasRole('角色ID', currentOgnID(), false)
参数:String roldID 角色ID
Object inOrg 组织单元所在的组织, 允许三种情况: 空值, 表示不限制范围; 单个组织单元ID或FID(String类型); 多个组织单元ID或FID(String类型)形成的List;
Boolean isPersonMember 是否取到人员成员
返回:List<OrgUnit>
findOrgUnitsHasRoleByCode(String roldCode, Object inOrg, Boolean isPersonMember)
获取拥有某个角色的组织单元
findOrgUnitsHasRoleByCode('角色code', '', true)
findOrgUnitsHasRoleByCode('角色code', currentOgnID(), false
参数:String roldCode 角色的code
Object inOrg 组织单元所在的组织, 允许三种情况: 空值, 表示不限制范围; 单个组织单元ID或FID(String类型); 多个组织单元ID或FID(String类型)形成的List;
Boolean isPersonMember> 是否取到人员成员
返回:List<OrgUnit>
这两个函数的实现分别调用的是的OrgUtils.findOrgUnitsHasRoleByCode(roleCode, inOrg, isPersonMember);
和OrgUtils.findOrgUnitsHasRole(roleID, inOrg, isPersonMember);实现的,因此如果需要在action中根据角色获取组织的时候可以直接调用这两个API
如下是通过角色code获取拥有该角色的人员名称
action定义的java代码
public static void findPersonByRole(String roleCode){
List<OrgUnit> orgUtils = OrgUtils.findOrgUnitsHasRoleByCode(roleCode, null, true);
for (OrgUnit person : orgUtils) {
String fid = person.getFID();//获取人员成员sFID的值
String fname = person.getFName();//获取人员成功sFName的值
OrgUtils.getPersonNameByFName(fid, fname);//通过sFID和sFName或者人员名称sName
}
}
js中调用action,并传入roleCode
Model.prototype.button8Click = function(event) {
var roleCodes = this.getContext().getAllRoleCodes();// 获取操作者的所有角色的编码
var params = new biz.Request.ActionParam();
params.setString("roleCode", roleCodes[0]);// 给调用的action中的参数赋值
biz.Request.sendBizRequest({
context : this.getContext(),
dataType : "json",
action : "findPersonByRoleAction",
parameters : params,
callback : function(result) {
if (result.state) {
alert("调用成功");
} else {
throw new Error("调用失败!|" + result.response.message);
}
}
});
};
评一波