`
yang_ch
  • 浏览: 81037 次
社区版块
存档分类
最新评论

FoxBPM组织机构集成方案及示例代码

阅读更多
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)

 

集成方法介绍

        介绍两种常用的集成方法

  1. 直接修改mybatis的xml文件,在foxbpm-engine/src/main/resource/mybatis/mapping/下的user.xml(用户)、role.xml(角色)、dept.xml(部门),修改文件中对应的sql语句即可。这种方法适合简单基于表的组织机构实现。
  2. 实现自己的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  目前尚在研发中,尚未发布稳定版本

 

  • 大小: 3.3 KB
  • 大小: 6.6 KB
0
0
分享到:
评论

相关推荐

    关于FoxBPM连接器介绍

    在企业信息化建设中,流程管理扮演着至关重要的角色,而FoxBPM通过其丰富的连接器机制,能够灵活地与其他系统集成,实现业务流程的自动化。 在“请假审批”这个具体的场景中,我们可以看到一个典型的业务流程实例。...

    foxBPM入门项目

    FoxBPM(6.0版本开始fixflow改名为FoxBPM)是一款开源的基于BPMN2.0标准的工作流引擎,引擎底层直接支持BPMN2.0国际标准, 吸纳了 jBPM3 、 Activiti5、BonitaBPM 等国际开源流程引擎的精髓, 同时提供了强大的中国式流程...

    FoxBPM-Designer:FoxBPM流程设计器

    FoxBPM-Designer FoxBPM流程设计器 #分支介绍 develop 最新开发版 master 最新稳定版 release-* 发布分支为准备新的产品版本发布做支持 hotfix-* 当产品版本的重大bug需要立即解决的时候,我们从对应版本的标签创建...

    bytetrack的跟踪效果

    dancetrack0004的gt

    2023年全球房地产行业并购趋势:政策调整与市场需求变化下的投资机遇

    本文由普华永道发布,详细分析了2023年全球房地产行业的并购趋势。在全球宏观经济环境变化和货币政策调整背景下,房地产并购活动有所放缓,但仍有大量资金等待入场。文中探讨了办公、工业、住宅、零售和酒店五大板块的具体情况及其面临的挑战与机遇。办公资产受利率上调影响较大,但优质资产需求仍然旺盛;工业地产在电商和供应链调整驱动下持续增长;住宅市场因利率上升导致租赁需求增加;零售业则受益于消费者回归实体店;酒店业则因旅游需求回暖而保持高位并购活动。此外,文章还提到不同区域市场的特点,如美洲、欧洲、中东和亚太地区的具体动态。

    计算机二级题库(已经分类).pdf

    计算机二级题库(已经分类).pdf

    intel pcm官方资源

    intel pcm

    汽车入门必读,深刻了解底层逻辑

    汽车入门必读,深刻了解底层逻辑

    计算机二级模拟试题.pdf

    计算机二级模拟试题.pdf

    计算机发展和特点.pdf

    计算机发展和特点.pdf

    基于java的图书馆管理系统毕业设计含源文件.doc

    基于java的图书馆管理系统毕业设计含源文件.doc

    计算机汇编原理.pdf

    计算机汇编原理.pdf

    基于Linux平台的机器人控制系统与路径识别设计方案

    内容概要:本文详细介绍了基于Linux平台的机器人控制系统和路径识别项目的完整设计方案。

    计算机二级计算机编程题.pdf

    计算机二级计算机编程题.pdf

    基于网络流量的设备识别技术综述与发展前景

    内容概要:本文详细介绍了基于网络流量的设备识别技术,涵盖了其发展历史、TCP/IP协议的基础知识以及当前的研究进展。文章首先回顾了早期设备识别的需求和方法,指出随着物联网设备的多样化和复杂化,传统的设备识别方法已难以满足现代需求。接着探讨了高性能扫描工具的作用,强调了TCP/IP各层协议在网络流量分析中的重要性。文中还深入讨论了两种主要的设备识别方法:基于协议特征和统计特征的分类器学习,以及基于应用层数据的自动化规则生成。最后,文章指出了现有方法的优点和局限性,并展望了未来的研究方向。 适合人群:信息安全研究人员、网络管理员、物联网开发者和技术爱好者。 使用场景及目标:适用于希望深入了解设备识别技术原理及其应用场景的专业人士,旨在帮助他们掌握最新的技术和工具,以应对日益复杂的网络安全挑战。 其他说明:文章引用了两篇权威文献,提供了详尽的技术细节和案例分析,有助于读者全面理解设备识别领域的最新进展。

    汇编语言 + x86 架构 + 密码本程序开发 + 助力汇编学习

    1. **内容概要**:x86版本汇编密码本程序基于x86汇编编写,支持增删改查。程序经x86架构优化,执行效率高、兼容性好。 2. **适用人群**:适合学习x86汇编的学生、加密技术爱好者、信息安全开发者以及逆向工程从业者。 3. **使用场景及目标**:在数据传输和存储场景下,对敏感数据加密,保障数据安全。学习者能借此深入理解汇编与加密算法,开发者可将其功能集成到项目中。 4. **其他说明**:程序基于x86架构,在其他架构使用可能需适配。使用者需具备一定汇编和加密知识,使用时应遵守法律法规,关注技术动态,适时更新程序 。

    BAT经典面试题解析:涵盖C++、数据结构与算法、操作系统等领域的深度探讨

    内容概要:本文档汇集了 BAT(百度、阿里巴巴、腾讯)的经典面试题目及其详细解答,涵盖了广泛的技术领域。主要内容包括 STL 容器(如 vector、Map、Set)的实现原理,洗牌算法的设计,竞赛排序问题,中位数查找算法,智能指针的实现与循环引用处理,单例模式的线程安全实现,C++ 结构体大小计算,引用与指针的区别,const 和 define 的对比,强制类型转换的区别,虚函数的工作原理,内存管理和多线程编程技巧,Linux 内存分配机制,以及各种算法设计问题(如短网址服务、网页爬虫、大数据处理等)。这些问题不仅涉及基础知识的理解,还包括实际应用场景中的优化和解决方案。 适合人群:具备一定编程基础和技术背景的研发人员,尤其是准备 BAT 技术面试的候选人。 使用场景及目标:①深入理解 C++ 编程语言特性及其标准模板库的实现细节;②掌握常见的数据结构和算法设计技巧;③熟悉操作系统层面的知识,如内存管理、进程通信等;④提高解决实际工程问题的能力,特别是在大规模数据处理方面。 其他说明:文档中的题目难度较大,旨在考察应聘者的综合能力,包括但不限于理论知识的应用、代码实现的质量、解决问题

    基于Carsim与Simulink的ACC自适应巡航控制系统联合仿真及优化

    内容概要:本文详细介绍了如何利用Carsim进行车辆动力学建模并结合Simulink实现ACC(自适应巡航控制)系统的联合仿真。文中涵盖了从环境配置、模型搭建、控制算法设计到最后的数据同步等多个方面。尤其强调了在配置过程中容易出现的问题及其解决方案,如单位制转换、采样时间同步以及PID控制器参数调优等。此外,作者分享了一些实用的经验技巧,如通过状态机实现跟车模式切换、采用抗饱和PID结构提高控制稳定性等。 适用人群:从事汽车电子控制系统开发的技术人员,尤其是对ACC系统感兴趣的工程师。 使用场景及目标:帮助开发者掌握Carsim与Simulink联合仿真的全流程,确保能够成功搭建并优化ACC控制系统,最终达到稳定可靠的跟车效果。 其他说明:文中提供了大量MATLAB/Simulink代码片段作为实例指导,有助于读者更好地理解和应用相关知识点。同时,针对可能出现的各种问题给出了详细的排查步骤和技术建议。

    计算机二级VB考试_试题(真题)及详细答案.pdf

    计算机二级VB考试_试题(真题)及详细答案.pdf

    计算机仿真作业3.pdf

    计算机仿真作业3.pdf

Global site tag (gtag.js) - Google Analytics