前言:
osworkflow是个开源的工作流引擎,采用的是有限状态机的模型。内置有osuser这个用户系统,来处理用户权限相关的部分。但是功能很弱,只有用户表,用户组表,即简单的将用户划分给用户组。在定义流程的时候,可以将权限处理给一个具体的用户,也可以给一个用户组。
缺点:
功能太过简单,不利于扩展,也不利于和用户系统集成,还没有开源的源代码。
改造方案:
将osuser去掉,重新编写一套用户系统,此用户系统只在工作流系统中使用,因此数据权限等从简。
保留使用osuser.xml文件的配置,修改成fcuser.xml,此配置文件采用xml格式,配置具体执行和数据库交互的实现类,便于扩展各种数据库的个性化函数,sql,关键字的不同写法。
采用映射表的方式,和实际用户系统的表关联,因为用户系统要集成工作流,一般都有自己的用户组织机构管理系统。
工作流系统必须要和用户系统的用户权限系统无缝集成,所以没有必要再做一套用户系统,直接将用户系统的数据映射过来,达到集成的目的。如果不采用表数据的映射,也可以编写实现类,实现UserProvider接口,将用户系统已经有的方法关联过来实现。
用户映射表示意图:
表结构:
用户表,用户角色表,用户群组表
这几个表为演示系统使用,真正和用户系统集成的时候,采用映射表映射到用户系统的表。或者用户有自己编写好的用户权限等系统,也可以通过实现UserProvider接口的方式,将用户系统和工作流的用户系统集成到一起。
fcuser映射表:
一个简单的fcuser.xml映射表图例
cn.com.fcsoft.user.provider.jdbc.JDBCUserProvider 为UserProvider的指定实现类。
用户系统的UML图:
主要类功能描述:
UserManager为对外提供的用户系统的实现类,流程引擎实现类关联这个类,来实现用户系统的一切功能;
UserConfig为单例模式,主要读取fcuser.xml文件的内容
UserConfiguration获取映射表配置信息
UserProvider接口,提供所有的用户系统功能,实现类可以根据数据库的不同选择各自的个性化实现类,通用的为JDBCUserProvider。
用户不使用表结构映射时,可以编写自己的实现类,实现UserProvider接口来实现用户权限系统。
UserException,所有用户系统的抛出的异常。
User,UserImpl 用户接口,用户接口实现类
Role,RoleImpl 角色接口,角色接口实现类
Group,GroupImpl 用户群组,用户群组的实现类
通过改写这个用户系统集成到工作流引擎中,更利于和用户系统的结合。同时别忘记改写osworklfow的引擎包util中的各种和用户权限相关的类,调用userManage中的功能来做用户权限判断。
相关链接:
web工作流管理系统开发之一 工作流概念
web工作流管理系统开发之二 工作流引擎
web工作流管理系统开发之三 可视化流程设计器
web工作流管理系统开发之四 集成工作流与自定义表单
web工作流管理系统开发之五 开源osworkflow之用户系统改造
web工作流管理系统开发之六 表单权限与流程的权限控制
web工作流管理系统开发之七 最新修改的版本下载
web工作流管理系统开发之八 开源osworkflow之任务管理
分享到:
评论