使用JBoss jBPM实现流程访问和执行的授权 - 编程入门网
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方法实现的。 按照这种方法,扩展了以下查询: 部署查询 流程定义查询 流程实例查询 历史流程实例查询 历史活动 查询 历史细节查询 为了能够增加字符串实例变量,以缩小查询结果,我们还额外扩展了一个流程实例查询。 支持多种用户管理方式 使用JBoss jBPM实现流程访问和执行的授权(7)时间:2011-08-09 infoq 译:胡键以上给出的实现依赖使用执行环境来获得当前用户ID和使用IdentitySession来获得用户组成员关系。 jBPM分发包提供了这个接口的2个实现: IdentitySessionImpl,基于jBPM的用户/组数据库 JBossIdmIdentitySessionImpl, 基于JBoss Identity IDM组件 不同于大量依赖其他技术的实现,对于我们的实现,我们决定把用户ID/组的获取同这些信息的保存分 离开来,使之可以被其他的jBPM实现利用(图5)。 图 5 用户管理实现 为了确保在设定和重新设定用户证书的时候环境是可用的,我们把这两个操作实现成了命令(清单7) ,这样,借助jBPM命令执行服务就可以正确设置执行环境。
清单 7 设置用户证书命令 把新命令和查询引入到jBPM执行中 由于jBPM并没有提供任何配置“命令——服务”关系的支持,为了能改变给定服务中的命令,就必须 使用调用新命令的新服务实现覆盖旧实现。清单8给出了一个使用新命令服务覆盖历史服务的例子。
清单 8 在历史服务中引入授权命令 总结 本文给出的这部分实现并没有扩展JPDL,而是扩展了被jBPM支持的所有语言都使用的JBos |
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |