流程服务整合

AgileBPM 流程服务依赖一下服务模块

  • sys 系统服务,主要依赖 流水号,消息发送,系统缓存,常用脚本,数据字典 等系统功能(无需整合,直接依赖该模块)
  • org 组织用户服务,可以参考下文,自行选择是否切换自有组织服务
  • auth 鉴权服务, 提供 Rest 资源访问控制,以及获取当前登录用户信息的服务(可以切换为系统本身已有鉴权参考下文)
  • bus-form 业务表单,提供业务表单服务(无需整合,直接依赖该模块)

一、独立部署的流程服务整合模式

独立部署形式

独立部署形式是让 AgileBPM 作为流程中心,流程系统以远程调用的方式通知相关业务系统。实现的形式有:

  1. 多系统切换、子系统模式 这样当处理具体业务的时候还是使用原有的系统,若办理流程任务则可以切换至流程平台来提交任务或者使用移动端办理流程任务。
  2. 统一鉴权,整合菜单资源模式 多个系统间统一风格样式、统一鉴权(单点登录、token鉴权)后,直接整合url资源即可。比如直接将个人办公菜单资源添加至现有系统中,让系统拥有流程办理的功能。

我们推荐使用自定义表单来实施流程,即便是已有业务已经开发了表单,依然推荐使用自定义表单,因为自定义表单的实施速度很快,而且表单业务数据可以灵活的用于流程生命周期中。
当然url表单也可以,但是多系统会存在事物一致问题,比如流程提交后,流程调用url表单处理器来远程执行业务数据保存的动作,但是最后流程出现异常,业务数据就无法回滚。

整合步骤

切换组织服务实现(若不需要AgileBPM组织服务)

  1. 移除org-core、org-adaptor的依赖 0.5h
  2. 添加xx-org-adaptor模块,用来来实现orgApi的接口 3h
  3. 创建IGroup,IUser实现类,IUserGroupService,IUserService实现类(此处可以远程调用,并适配数据 )3d
  4. 移除前端入口(屏蔽菜单资源入口) 0.5h
  5. 修改系统中存在的组织、用户对话框(目前有:用户、组织、岗位、角色)。 5h

统一鉴权

鉴权依赖组织API的服务,所以前提必须先保证组织服务的有效性。
我们系统使用的spring security 如果你们有cas服务器的话,我们推荐使用单点登录来做整合。
如果本身项目在使用jwt的形式。那推荐使用jwt进行改造现有鉴权。

鉴权是为了确认用户身份信息,以及判断当前用户是否拥有访问请求资源的权限,如果实现了新的鉴权需要一并实现“获取当前用户信息”的工具类(ICurrentContext)

二、项目集成形式的整合

spring boot 1.X 整合

可以参考 agilebpm-spring-boot-samples 案例项目

1.依赖 BASE 模块服务【必须】

提供 动态数据源、ID 生成、agilebpm 相关模块的 mybatis SqlSessionFactory、分页插件等相关服务
添加依赖

1
2
3
4
<dependency>
<groupId>com.dstz</groupId>
<artifactId>agilebpm-base-spring-boot-starter</artifactId>
</dependency>

2.依赖系统服务【必须】

执行 sys 模块相关sql,并添加依赖

1
2
3
4
<dependency>
<groupId>com.dstz</groupId>
<artifactId>ab-sys-spring-boot-starter</artifactId>
</dependency>

3.依赖组织服务【可切换】

执行 org 模块相关sql并添加依赖

1
2
3
4
<dependency>
<groupId>com.dstz.agilebpm</groupId>
<artifactId>org-rest</artifactId>
</dependency>

若切换组织模块实现则需要依赖 org-api 并参考上文“切换组织服务实现” 的描述来改造

4.依赖鉴权模块【可切换】

默认配置依赖即可。auth 模块依赖 org服务

1
2
3
4
<dependency>
<groupId>com.dstz</groupId>
<artifactId>ab-security-spring-boot-starter</artifactId>
</dependency>

5.依赖业务表单模块【必须】
1
2
3
4
5
6
7
8
9
<dependency>
<groupId>com.dstz.agilebpm</groupId>
<artifactId>bus-rest</artifactId>
</dependency>

<dependency>
<groupId>com.dstz.agilebpm</groupId>
<artifactId>form-rest</artifactId>
</dependency>
6.依赖流程模块
1
2
3
4
<dependency> 
<groupId>com.dstz</groupId>
<artifactId>ab-bpm-spring-boot-starter</artifactId>
</dependency>

整合需要对常见开源框架有基本的了解,否则不建议您浪费时间。
如果遇到什么疑问请联系群主

spring boot 2 整合

整合方式与 spring boot 1.X 基本一致。

非 springboot 项目整合

您可能需要比较了解 AgileBPM 系统模块,并拥有一定的框架整合能力,否则建议您寻找群主帮忙整合

AgileBPM 是完全模块化的一个项目,WEB模块仅仅为了整合各个模块,扫描controller提供 REST服务,仅此而已。
所以您的整合过程其实是类似WEB模块一样,选择需要的服务模块,通过 spring 配置文件来整合的一个过程
前端的话,由于是前后端分离的项目,所以整合后,前端资源处理下风格样式,就可以完全被您所使用。

目前我们 spring 版本是4.3.17,请确认spring版本,可以在根目录pom中修改

1
2
3
4
5
6
7
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-framework-bom</artifactId>
<version>${spring.framework.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>

选择依赖

  • 系统服务模块 sys-rest
  • bpm模块依赖 wf-rest,bus-rest,form-rest
  • 组织模块依赖 org-rest,非必须 若不依赖请自行实现orgAPI 即可,参考文中 切换组织服务实现 的介绍
  • 鉴权模块依赖 http-security 非必须 若使用自身鉴权的话请务必实现当前用户信息接口ICurrentContext

整合开源组件

主要是 base-db.xml,和 sys-core.xml 的整合改造动作

  • 参考base-db.xml 提供 DynamicDataSource(AbstractRoutingDataSource)的默认数据源 dataSourceDefault
  • 为数据源提供事物 参考app-tx.xml 相关配置
  • 参考base-db.xml 对系统的mybatis进行扫描,如果您系统持久层不是 mybatis 则按照 base-db.xml 进行配置,并配置 pagehelper
  • 参考 sys-core.xml 对 redis,quartz 进行整合

其他有疑问可以咨询群主。