1. 介绍
提供activiti5.23 工作流的功能集成。 (因为activiti 6.0.0的activiti-form-engine 与系统默认的tomcat-embed-jasper 冲突),与系统的springsecurity 默认集成.
2. 使用
2.1. 在线initilizer工具
使用在线initilizer工具时,会随着组件的选择自动添加。并增加如下修改
2.2. 工程中手工加入使用
在gradle文件中加入
implementation('org.yunchen.gb:gb-plugin-activiti:1.4.0.0.M1')
3. 日志跟踪
如果使用applicaton.yml中的配置
logging.level.org.hibernate.SQL: TRACE
logging.level.org.hibernate.type.descriptor.sql.BasicBinder: TRACE
如果感觉不直观,无法确切跟踪activiti执行的sql语句,可开启logback (将resources目录下的logback.xmlbak更名为logback.xml即可)。 在其中添加语句:
。。。。。。
<logger name="org.activiti.engine.impl.persistence.entity" level="DEBUG" />
。。。。。。
</configuration>
4. 约定
默认系统有如下约定
4.1. service bean
默认插件将activiti的服务注册为spring 的bean,具体的使用示例可参见activitiMonitorController类和activitiTaskController类
具体功能api请参考activiti的相关文档
name | 描述 | api |
---|---|---|
processEngine |
流程引擎 |
org.activiti.engine.ProcessEngine |
runtimeService |
运行时服务类 |
org.activiti.engine.RuntimeService |
repositoryService |
知识库服务类 |
org.activiti.engine.RepositoryService |
taskService |
任务服务类 |
org.activiti.engine.TaskService |
managementService |
管理服务类 |
org.activiti.engine.ManagementService |
identityService |
身份服务类 |
org.activiti.engine.IdentityService |
historyService |
历史信息服务类 |
org.activiti.engine.HistoryService |
formService |
表单服务类 |
org.activiti.engine.FormService |
4.2. domain 类
用户、角色都需要实现activiti的identity接口。
BaseUser类的id改为String,使用uuid替代自增.多了三个属性firstName,lastName,email。原类中的realname属性不再需要,生成的工程中没有剔除,视项目情况大家手动处理。
BaseRole类增加了name属性,原类中的description属性不再需要,生成的工程中没有剔除,视项目情况大家手动处理。
4.3. application.yml
在application.yml增加了如下属性:
gb:
activiti:
processEngineName: gbActivitiProcessEngine
databaseSchemaUpdate: create # create-drop , true ,false ,create 中的一个
deploymentName: gbDeploymentName
deploymentResources: file:./src/main/resources/**/activiti/**/*.bpmn*.xml , file:./src/main/resources/**/activiti/**/*.png , file:./src/main/resources/**/activiti/**/*.form
jobExecutorActivate: false
history: audit #归档类型 none、activity、audit、full 四种类型
mailServerHost: mail.email.com
mailServerPort: 25
mailServerUsername: user@email.com
mailServerPassword: pass
mailServerDefaultFrom: user@email.com
#disableCustomPreVariableTypes: true
databaseType: h2 # 数据库类型支持 db2, h2 ,hsql ,mssql,mysql, oracle,postgres
其中的deploymentResources 指扫描相关路径的文件,使用“,”分隔 , 建议在生成环境设置为/ 字符
4.4. 流程部署及控制
根据deploymentResources扫描路径自动部署流程,默认在resources\templates\activiti目录中的流程自动部署。
默认有一个vacationRequest请假单流程,
可以通过admin/admin登录系统后,进入流程管理菜单,点击部署按钮,可在线部署xml流程(bar文件也可)
/activitiMonitor/index 是流程管理界面
也可以在线通过model设计进行保存,并在线部署。
4.4.1. 控制界面
代办任务
/activitiTask/index 是代办任务的地址
/activitiTask/canStart 是可启动流程列表的地址
4.4.2. 流程示例
默认有一个vacationRequest请假单流程,
# 请假流程
resources\templates\activiti\vacationRequest.xml
resources\templates\activiti\vacationRequest.png
# 请假domain类
domain\demo\VacationRequest.groovy
# 请假controller类(默认约定表单提交到流程自己的controller处理)
controller\demo\VacationRequestController.groovy
# 请假的节点表单 (其中的xxx为流程xml中的userTask的id名,默认约定使用_作为文件名开始字符)
web-app\WEB-INF\jsp\activitiForm\${流程名称}\_xxx.jsp
4.5. 新工作流程的制作步骤
4.5.1. 开发业务流程
使用eclipse或activiti designer 设计工作流xml
4.5.2. 创建流程domain类
创建流程domain类
4.5.3. 创建流程controller类
创建流程controller类,用于处理数据保存和流程执行。
4.5.4. 创建流程节点的jsp页面
为每个流程节点画jsp页面