WEB开发网
开发学院软件开发Java 使用JBoss jBPM实现流程访问和执行的授权 阅读

使用JBoss jBPM实现流程访问和执行的授权

 2010-05-11 00:00:00 来源:WEB开发网   
核心提示: 清单 4 授权拦截器为了保护命令实现,我们创建了一个新类,使用JBoss jBPM实现流程访问和执行的授权(7),它扩展了现有的命令,增加了一个带注解的方法(清单5),我们对下列命令进行了注解:删除部署启动流程实例启动最近的流程实例结束流程实例删除流 程实例扩展查询 引入授权意味着查询结果应该只

清单 4 授权拦截器

为了保护命令实现,我们创建了一个新类,它扩展了现有的命令,增加了一个带注解的方法(清单5),返回给定命令可用的键值。

@AuthorizedCommand(role = ACL.STARTER, key = NavteqAuthorizationSession.PROCESSID) 
public String getProcessDefinitionKey() { 
  return processDefinitionId; 
}

清单 5 给启动流程实例命令引入授权信息

根据所提议的方法,我们对下列命令进行了注解:

删除部署

启动流程实例

启动最近的流程实例

结束流程实例

删除流 程实例

扩展查询

引入授权意味着查询结果应该只返回用户被授权查看的信息。这可以通过扩展现有查询的where语句实现(清单6)。

//check authorization 
String userId = EnvironmentImpl.getCurrent().getAuthenticatedUserId(); 
List<Group> userGroups = EnvironmentImpl.getCurrent().get(IdentitySession.class).findGroupsByUser(userId); 
 
hql.append(", " + ACL.class.getName() + " as acl "); 
appendWhereClause("acl.deployment=deployment and acl.type='" 
 + ACL.STARTER + "' ", hql); 
appendWhereClause("((acl.userId in " 
 + Utils.createHqlUserString(userId) + ") or " + "(acl.groupId in " 
   + Utils.createHqlGroupString(userGroups) + ")) ", hql); 

清单 6 为流程定义查询提供授权支持的额外where语句

额外的where语句是通过扩展现有查询实现和覆盖hlq方法实现的。

上一页  2 3 4 5 6 7 8  下一页

Tags:使用 JBoss jBPM

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接