使用JBoss jBPM实现流程访问和执行的授权
2010-05-11 00:00:00 来源:WEB开发网核心提示:当今常见的BPM趋势是集中化整个公司或公司内大部门的BPM执行,这意味着,使用JBoss jBPM实现流程访问和执行的授权,单个BPM服务器(集群)运行着整个公司的许多流程定义,这种方式的挑战在于,考虑现有用户的证书,这包括部署和流程定义查询、流程实例查询,虽然BPM引擎(包括jBPM)提供了对于任务访问的授权,但它们
当今常见的BPM趋势是集中化整个公司或公司内大部门的BPM执行。这意味着,单个BPM服务器(集群)运行着整个公司的许多流程定义。这种方式的挑战在于,虽然BPM引擎(包括jBPM)提供了对于任务访问的授权,但它们一般都不支持这些功能的授权:流程定义的查看和删除,流程实例的启动、结束、查看和删除等。在这篇文章中,我们将描述如何对jBPM引擎进行扩展 (基于jBPM 4.3)来实现这一功能。
整体实现方法
整个实现方式相当直接了当——对于每个流程定义引入一组可以授权的用户/用户组(类似任务定义),作用于定义、实例和给定流程的历史。此外,我们还想对给定的用户/用户组支持多重授权级别——目前我们打算引入2个角色:“starter”和“user”。这里的“starter”是允许对流程定义/实例 /历史进行任何操作的角色,而“user”角色的权限仅限于查询流程/历史。
这种方式的实现需要对jBPM进行以下改造:
流程定义
给流程定义增加流程访问权限
流程部署
扩展当前的流程部署器,增加流程授权定义的解析和流程访问列表的生成
引入额外的类/数据库表,存放每个流程定义的访问权限
流程执行(Execution)
引入已授权命令(authorized command)——要求用户经过授权才能执行的命令
修改现有的jBPM中我们期望基于当前用户证书进行授权的部分。这包括启动、结束和删除流程实例,以及删除部署定义。
修改现有的jBPM查询,考虑现有用户的证书。这包括部署和流程定义查询、流程实例查询,以及历史流程实例、活动和细节的查询。
更多精彩
赞助商链接