当前位置:   article > 正文

Spring Boot集成Flowable_flowable和自有系统集成

flowable和自有系统集成

​​​​​​Flowable-ui

下载后部署到tomcat中运行

 人员变量        ${user}

条件变量        ${condition=='ok'}

ui各组件功能持续更新中......

相关表结构

ACT_RE        “RE”表示repository,包含流程定义和流程静态资源

ACT_RU        "RU"表示runtime,表示运行中的表,包含流程实例,任务,变量,异步任务等运行中的数据。flowable只在流程实例执行过程中保存这些数据,在流程结束时就会删掉这些记录。这样运行时表可以一直很小速度很快。

ACT_HI        "HI"表示history,包含历史数据,比如历史流程,变量,任务等等

ACT_GE        "GE"表示general,通用数据

ACT_ID        "ID"表示identity,包含标识的信息,如用户,用户组等等

表分类表名备注
一般数据
ACT_GE_BYTEARRAY通用的流程定义和流程资源
ACT_GE_PROPERTY系统相关属性
流程历史记录
ACT_HI_ACTINST历史的流程实例
ACT_HI_ATTACHMENT历史的流程附件
ACT_HI_COMMENT历史的说明性信息
ACT_HI_DETAIL历史的流程运行中的细节信息
ACT_HI_IDENTITYLINK历史的流程运行过程中用户关系
ACT_HI_PROCINST历史的流程实例
ACT_HI_TASKINST历史的任务实例
ACT_HI_VARINST历史的流程运行中的变量信息
流程定义表
ACT_RE_DEPLOYMENT

部署单元信息

ACT_RE_MODEL模型信息
ACT_RE_PROCDEF已部署的流程定义
运行实例表
ACT_RU_EVENT_SUBSCR运行时事件
ACT_RU_EXECUTION运行时流程执行实例
ACT_RU_IDENTITYLINK运行时用户关系信息,存储任务节点与参与者的相关信息
ACT_RU_JOB运行时作业
ACT_RU_TASK运行时任务
ACT_RU_VARIABLE运行时变量表
用户/用户组表
ACT_ID_BYTEARRAY二进制数据表
ACT_ID_GROUP用户组信息表
ACT_ID_INFO用户信息详情表
ACT_ID_MEMBERSHIP人与组关系表
ACT_ID_PRIV权限表
ACT_ID_PRIV_MAPPING用户或组权限关系表
ACT_ID_PROPERTY属性表
ACT_ID_TOKEN用户记录的token信息
ACT_ID_USER用户表

引入依赖

  1. <dependency>
  2. <groupId>org.flowable</groupId>
  3. <artifactId>flowable-spring-boot-starter</artifactId>
  4. <version>6.5.0</version>
  5. </dependency>
  6. <dependency>
  7. <groupId>com.h2database</groupId>
  8. <artifactId>h2</artifactId>
  9. <version>1.3.176</version>
  10. </dependency>

配置文件

  1. #数据库配置
  2. datasource:
  3. driver-class-name: com.mysql.cj.jdbc.Driver
  4. url: jdbc:mysql://localhost:3306/flowable?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8&nullCatalogMeansCurrent=true
  5. username: ******
  6. password: ******
  7. #flowable配置
  8. flowable:
  9. #关闭定时任务JOB
  10. async-executor-activate: false
  11. #更新数据表结构
  12. database-schema-update: true

部署流程

        自动部署

                SpringBoot会自动把resources/processes文件目录下的bpmn20.xml文件自动部署到数据库中,检查数据库表结构并生成表,但每次启动项目时都会检查数据库,所以启动时间比较长,也可进行手动部署

        手动部署

  1. //手动部署代码
  2. RepositoryService repositoryService = processEngine.getRepositoryService();
  3. Deployment deployment = repositoryService.createDeployment()
  4. .addClasspathResource("Safe.bpmn20.xml")
  5. .name("审批流程")
  6. .deploy();

        如有空指针异常,则检查文件名或删除target文件重新运行

启动流程

  1. HashMap<String, Object> varivales = new HashMap<>();
  2. // 巡查人
  3. varivales.put("patrol_by", "巡查人");
  4. // 审核人
  5. varivales.put("audit_by", "审核人");
  6. // 回复人
  7. varivales.put("modify_by", "回复人");
  8. // 审批人
  9. varivales.put("examine_by", "审批人");
  10. // "SafePatrol"为xml文件中process标签中的id
  11. runtimeService.startProcessInstanceByKey("SafePatrol", varivales);

varivales中的数据为用户变量,储存在act_ru_variable表中

执行任务

  1. // 执行流程
  2. TaskService taskService = processEngine.getTaskService();
  3. SafePatrol safePatrol1 = safeModifyMapper.selectSafeModifyByPatrolId(safeFlowable.getPatrolId());
  4. Task task = taskService.createTaskQuery()
  5. // 流程id
  6. .processInstanceId("ProcessInstanceId")
  7. // 审批人
  8. .taskAssignee("审批人")
  9. .singleResult();
  10. Map<String, Object> map = new HashMap<>();
  11. // 审批意见
  12. map.put("audit", "通过");
  13. taskService.complete(task.getId(), map);

查询历史流程信息

  1. List<HistoricActivityInstance> list = historyService.createHistoricActivityInstanceQuery()
  2. // 流程id
  3. .processInstanceId("ProcessInstanceId")
  4. .finished()
  5. .orderByHistoricActivityInstanceEndTime().asc()
  6. .list();
  7. for (HistoricActivityInstance history : list) {
  8. // 流程名称
  9. history.getActivityName();
  10. // 执行人员
  11. history.getAssignee();
  12. // 执行时间
  13. history.getTime();
  14. }

查询个人待办

  1. List<Task> list = taskService.createTaskQuery()
  2. // 流程id
  3. .processInstanceId("ProcessInstanceId")
  4. // 用户id
  5. .taskAssignee("user")
  6. .list();
  7. for (Task task : list) {
  8. // 任务节点
  9. task.getName();
  10. // 执行人员
  11. task.getAssignee();
  12. }

删除流程

  1. processEngine.getProcessEngineConfiguration().buildProcessEngine();
  2. RepositoryService repositoryService = processEngine.getRepositoryService();
  3. // 删除部署的流程,如果部署的流程启动了就不允许删除 true表示流程启动了仍可以删除
  4. repositoryService.deleteDeployment(deploymentId, true);
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小小林熬夜学编程/article/detail/681169
推荐阅读
相关标签
  

闽ICP备14008679号