fixflow从6.0版本开始,从新命名FoxBPM,采用全新的包名org.foxbpm
foxbpm作为fixflow的新版本,不仅重新改善了底层架构,也改善了很多自开源以来用户反馈的问题,比如组织机构的集成就是其中的改善之一,本文章主要介绍下foxbpm最新的组织集成方案。
用过fixflow集成的用户大概都知道,原有的组织结构集成提供了可视化界面,通过配置sql语句和字段名就可以实现表结构的组织机构集成,但是对于复杂的组织机构或者像LDAP这种组织机构,虽然说了扩展组织机构的实现类,但是并没有提供很好的文档或说明,而新版本组织机构完全被抽象成接口,引擎提供默认的基于au_userinfo(用户)、au_group_relation(人和组映射)、au_orginfo(部门)、au_roleinfo(角色)这4张表的实现。
组织机构代码分析
关于组织机构的接口存放在org.foxbpm.engine.identity包下,如图:
- GroupDefinition:组定义,如“部门,角色”等,接口中提供查询组信息的各种接口
- Group:组的TO
- UserDefinition:用户的抽象,包含用户的所有抽象接口
- User:用户的抽象接口(TO接口)
接口上写有详细注释,以及接口被引擎使用到的地方,都有详细注释,写对应实现时,可以参考注释和默认实现来写自己的组织结构实现,部门接口代码如:
public interface GroupDefinition { /** * 获取用户所在的组集合 * <p>使用场景:获取用户共享任务时使用,如taskQuery.taskCandidateUser("admin")</p> * @param userId * @return */ List<Group> selectGroupByUserId(String userId); /** * 获取所有的组信息(如:所有角色信息) * <p>使用场景:设计器表达式编辑器上,选择组织机构时使用<p> * @return */ List<GroupEntity> selectAllGroup(); /** * 获取所有的组和人员的关系映射(如所有的角色对照) * <p>暂时没用到</p> * @return */ List<GroupRelationEntity> selectAllRelation(); /** * 获取组类型 * <p>匹配对应实现</p> * @return */ String getType(); /** * 获取组名称(如:“部门”,“角色”) * <p>使用场景:设计器获取“用户,部门,角色 等”类型场景,如选发起人时表达式类型选项</p> * @return */ String getName(); /** * 获取组下的所有人员ID * <p>使用场景:自动发送邮件 连接上使用,给相关处理人发送邮件</p> * @param groupId * @return */ List<String> selectUserIdsByGroupId(String groupId); /** * 获取指定组编号的所有子组(包含自身) * <p>使用场景:选择部门作为处理人时,可选择子部门</p> * @param groupId * @return */ List<Group> selectChildrenByGroupId(String groupId); /** * 根据组编号获取组对象 * <p>使用场景:获取部门信息时</p> * @param groupId * @return */ Group selectGroupByGroupId(String groupId); }
引擎提供的默认实现在org.foxbpm.engine.impl.identity包下,结构如下:
主要类介绍:
- UserDefinitionImpl:用户管理的实现
- GroupDeptImpl:部门的实现
- GroupRoleImpl:角色的实现
注:在foxbpm或fixflow中,是没有部门角色概念的,只有组的概念,"部门"一种组(groupType:dept)"角色"也是一种组(groupType:role)
集成方法介绍
介绍两种常用的集成方法
- 直接修改mybatis的xml文件,在foxbpm-engine/src/main/resource/mybatis/mapping/下的user.xml(用户)、role.xml(角色)、dept.xml(部门),修改文件中对应的sql语句即可。这种方法适合简单基于表的组织机构实现。
- 实现自己的UserDefinition和GroupDefinition接口,然后通过spring的方式注入或者通过引擎启动时修改配置类注入自己的组织机构实现。
spring注入配置示例:
<!-- 流程引擎配置 --> <bean id="processEngineConfigurationSpring" class="org.foxbpm.engine.spring.ProcessEngineConfigurationSpring"> <!-- 这里可能还有其他配置 --> <property name="userDefinition" ref="userDefinition" /> <property name="groupDefinitions"> <list> <bean class="org.foxbpm.engine.impl.identity.GroupDeptImpl"/> <bean class="org.foxbpm.engine.impl.identity.GroupRoleImpl"/> </list> </property> </bean> <bean id="userDefinition" class="org.***.UserDefinitionImpl"/>
非spring,引擎启动修改配置代码示例:
ProcessEngineConfigurationImpl processEngineConfigurationImpl = new ProcessEngineConfigurationImpl(); //设置用户实现 processEngineConfigurationImpl.setUserDefinition(userDefinition); //设置部门,角色实现 processEngineConfigurationImpl.getGroupDefinitions().add(deptImpl); processEngineConfigurationImpl.getGroupDefinitions().add(roleImpl); processEngineConfigurationImpl.buildProcessEngine();
这段代码多用在非spring环境下,系统启动时初始化引擎使用
总结
虽然没有了fixflow5.2版本的可视化配置界面,但是新版本给了集成人员更高的自由,让集成人员更好理解,更容易调错误,简单结构直接改sql语句,复杂结构写接口实现。
我最近也在做foxbpm与开发平台的集成工作,开发平台有自己的组织机构,并且不是简单的基于二维表的组织机构,我直接把接口给了项目经理,让他安排人写对应实现,反正注释很清楚,结果很轻松的就做好了组织机构的集成!
最后附上新版本的git地址:https://github.com/FoxBPM/FoxBPM 目前尚在研发中,尚未发布稳定版本
相关推荐
在企业信息化建设中,流程管理扮演着至关重要的角色,而FoxBPM通过其丰富的连接器机制,能够灵活地与其他系统集成,实现业务流程的自动化。 在“请假审批”这个具体的场景中,我们可以看到一个典型的业务流程实例。...
FoxBPM(6.0版本开始fixflow改名为FoxBPM)是一款开源的基于BPMN2.0标准的工作流引擎,引擎底层直接支持BPMN2.0国际标准, 吸纳了 jBPM3 、 Activiti5、BonitaBPM 等国际开源流程引擎的精髓, 同时提供了强大的中国式流程...
FoxBPM-Designer FoxBPM流程设计器 #分支介绍 develop 最新开发版 master 最新稳定版 release-* 发布分支为准备新的产品版本发布做支持 hotfix-* 当产品版本的重大bug需要立即解决的时候,我们从对应版本的标签创建...
微信小程序Artandw_eapp-artand
本项目是一款基于Vue和JavaScript开发的心旅途个性化推荐旅游平台设计源码,整合了513个Java文件、76个PNG图片、70个XML配置文件、62个JavaScript文件、42个Vue组件文件、28个CSS样式文件、22个HTML文件、18个YAML配置文件、16个属性文件、11个Vue模板文件,总计919个文件。平台采用现代化前端技术堆栈,旨在为用户提供个性化的旅游推荐服务。
微信小程序开发地图演示、地图导航、标记标注_echat-weapp-mpdemo
Vue和Axios文件
该项目为基于Python语言开发的HTML与任务清单关系系统,包含50个文件,其中16个为HTML文件,14个为Python源代码文件,其余包括Python编译文件、Markdown文件、图片、数据库文件、配置文件、模板文件、文本文件等,旨在为用户提供简单便捷的生活时间段安排及任务规划管理工具。
全国大学生电子设计大赛项目合集全国电赛优秀作品大学生电子竞赛历届题目
该项目是一款基于Python和pygame引擎开发的植物大战僵尸游戏,包含125个文件,涵盖93个PNG图像文件、11个Python源代码文件、10个Python字节码文件、8个GIF动画文件、1个Git忽略配置文件、1个JSON数据文件以及1个Markdown说明文件。游戏设计源码为学习游戏开发提供了丰富的实践素材。
本项目是一款以Java为核心开发的Qiniu服务端设计源码整合的RunFlow桌面端效率工具,总文件数29个,包括17个Java源文件、2个属性文件、1个Git忽略文件、1个JAR包文件、1个LICENSE文件、1个Markdown文件、1个YAML文件、1个Maven配置文件和1个命令文件。该工具旨在提升工作效率,适用于各种桌面环境下的便捷使用。
那些年,与你同分同位次的同学都去了哪里?全国各大学在辽宁2020-2024年各专业最低录取分数及录取位次数据,高考志愿必备参考数据
Golang支付-微信公众号、微信应用、微信小程序、微信企业支付、支付宝网络版、支付宝应用、支付宝企业支付_支付宝
医疗辅助诊断系统-开题
该项目为东东购物网的后台开发源码,采用JavaScript为主要编程语言,辅以CSS、Java、HTML等多种语言,共包含1300个文件。具体文件类型分布如下:458个PNG图片文件、215个JavaScript文件、160个JPG图片文件、159个GIF图片文件、107个CSS样式表文件、96个Java源代码文件、28个HTML文件、24个XML文件、12个JSON文件、8个Map文件。该系统旨在提供高效、便捷的购物后台管理功能。
content_1728052071778.apk
资源视频编辑软件win781064位系统
职业心理测试人格气质情绪控制测试18个文件
那些年,与你同分同位次的同学都去了哪里?全国各大学在辽宁2020-2024年各专业最低录取分数及录取位次数据,高考志愿必备参考数据
该项目为基于Python语言的微信小程序源码,全面整合了JavaScript和微信小程序开发技术。项目结构包含50个文件,涵盖了15个PNG图片、9个JSON配置、8个JavaScript脚本、7个wxss样式表、6个WXML模板和4个JPG图片。此外,还包括1个Markdown文档。该小程序的设计与实现展现了Python编程的强大能力,适用于微信生态下的各类应用场景。