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需要立即解决的时候,我们从对应版本的标签创建...
项目中常见的问题,记录一下解决方案
avnet(安富利)网站详情页数据样例
该数据集涵盖了2005至2012年间全国各地区二级专业承包建筑业企业的利润总额。这些数据不仅包括了原始数据,还提供了线性插值和ARIMA填补的版本,以便于研究者能够根据不同的需求选择合适的数据形式进行分析。数据集中包含了行政区划代码、地区名称、是否属于长江经济带、经纬度信息、年份以及利润总额等关键指标。这些指标为评估企业的经营效益和盈利水平提供了重要依据,同时也反映了建筑业在不同地区的发展态势。数据来源为国家统计局,确保了数据的权威性和准确性。通过这些数据,研究者可以深入分析建筑业的经济贡献及其在宏观经济中的作用,为政策制定和行业规划提供数据支持。
本文档主要讲述的是CentOS6.4 X64安装Oracle11g;在CentOS安装oracle11g比安装oracle10g简单很多,oracle可以不设置比如OS内核参数、防火墙、环境变量等,所以实施时推荐安装oracle11g。感兴趣的朋友可以过来看看
发动机零部件质量信息反馈及处理表.docx
全国省市县土地利用类型面板数据2009-2021年是一项详尽的数据集,它基于土地利用方式和地域差异,对土地资源单元进行细致划分,反映了土地的用途、性质和分布规律。该数据集涵盖了全国各省、地级市、县的土地利用类型,包括耕地、园地、林地、交通运输用地、水域及沙地等多种土地类型。时间范围上,省级和地级市的土地利用类型面板数据覆盖2009至2021年;县级土地利用类型面板数据则从2019年开始至2021年。数据指标丰富,包括行政单位、年份以及各类土地利用的具体分类,如水田、水浇地、旱地、果园、茶园等,以及城镇村及工矿用地、交通运输用地、水域及水利设施用地等。这些数据为政府决策、规划编制以及土地资源管理提供了坚实的数据基础,有助于全面了解土地资源的利用状况,并为未来的规划和管理提供支持。
项目中常见的问题,记录一下解决方案
好课分享——前端跳槽突围课:React18底层源码深入剖析(完结21章)
1111java后端1111Controller
嵌入式系统开发-STM32单片机-电子春联-代码设计
潜在失效模式及后果分析(FMEA)应用流程.docx
内容概要:本文详细介绍了如何使用Python和Matplotlib库创建一个动态的3D圣诞树动画。通过代码示例,展示了几何形状的创建方法,如圣诞树的形状、装饰品和星星的位置计算,以及如何通过动画更新函数实现闪烁效果。 适合人群:具有一定Python编程基础的开发者,尤其是对Matplotlib库和数据可视化感兴趣的读者。 使用场景及目标:① 学习Matplotlib库的基本用法,包括3D绘图和动画制作;② 掌握几何形状的数学建模方法,如圆锥和球体;③ 实践动画效果的实现技巧,提升编程技能。 阅读建议:本教程以具体代码示例为主,理论与实践相结合。建议读者在阅读过程中亲自编写和运行代码,逐步理解每一步骤的实现细节。
开发一个带有 PCIe Endpoint 设备的驱动程序并实现热插拔功能
【项目资源】:包含前端、后端、移动开发、操作系统、人工智能、物联网、信息化管理、数据库、硬件开发、大数据、课程资源、音视频、网站开发等各种技术项目的源码。包括STM32、ESP8266、PHP、QT、Linux、iOS、C++、Java、python、web、C#、EDA、proteus、RTOS等项目的源码。【项目质量】:所有源码都经过严格测试,可以直接运行。功能在确认正常工作后才上传。【适用人群】:适用于希望学习不同技术领域的小白或进阶学习者。可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。【附加价值】:项目具有较高的学习借鉴价值,也可直接拿来修改复刻。对于有一定基础或热衷于研究的人来说,可以在这些基础代码上进行修改和扩展,实现其他功能。【沟通交流】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。鼓励下载和使用,并欢迎大家互相学习,共同进步。
消防气压给水设备和稳压泵安装 分项工程质量验收记录表.docx
Cytoscape-3-10-0-windows-64bit.exe
【项目资源】:包含前端、后端、移动开发、操作系统、人工智能、物联网、信息化管理、数据库、硬件开发、大数据、课程资源、音视频、网站开发等各种技术项目的源码。包括STM32、ESP8266、PHP、QT、Linux、iOS、C++、Java、python、web、C#、EDA、proteus、RTOS等项目的源码。【项目质量】:所有源码都经过严格测试,可以直接运行。功能在确认正常工作后才上传。【适用人群】:适用于希望学习不同技术领域的小白或进阶学习者。可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。【附加价值】:项目具有较高的学习借鉴价值,也可直接拿来修改复刻。对于有一定基础或热衷于研究的人来说,可以在这些基础代码上进行修改和扩展,实现其他功能。【沟通交流】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。鼓励下载和使用,并欢迎大家互相学习,共同进步。