flowable工作流引擎
常用工作流引擎
OsWorkFlow (比较简单的,不常用)
JBPM(不常用)
Activiti(用 6 7)
camunda7(性能最高 并发等)
Flowable(用的6 更多 推荐使用 功能比activiti更强大些)
idea工具相关的flowable插件
一般低版本有,这个插件可以更方便的看*bpmn.xml文件中的标签内容
官方的flowableUI
官方给我们提供了一个功能完善的基于web应用的流程设计器,可用于流程相关操作。
1 Flowable IDM:身份管理应用,为拥有IDM管理员权限的用户提供了管理用户、组与权限的功能。
2 Flowable Modeler:让具有建模权限的用户可以创建流程模型等。
3 Flowable Tasker: 运行时任务应用,提供了启动流程实例、编辑任务表单、完成任务,以及查询流程实例与任务的功能。
4 Flowable Admin: 管理应用。
1 流程部署
将画好的流程图进行导出成test2.bpmn20.xml,放到resources目录下。
/*** 不通过Spring容器。我们单独的构建ProcessEngine对象来实现部署的操作*/@Testvoid contextLoads() {// 1.流程引擎的配置ProcessEngineConfiguration cfg = new StandaloneProcessEngineConfiguration().setJdbcUrl("jdbc:mysql://localhost:3306/flowable-learn?serverTimezone=UTC&nullCatalogMeansCurrent=true").setJdbcUsername("root").setJdbcPassword("123456").setJdbcDriver("com.mysql.cj.jdbc.Driver").setDatabaseSchemaUpdate(ProcessEngineConfiguration.DB_SCHEMA_UPDATE_TRUE);// 2.构建流程引擎对象ProcessEngine processEngine = cfg.buildProcessEngine();System.out.println(processEngine);Deployment deploy = processEngine.getRepositoryService().createDeployment().addClasspathResource("process/HolidayDemo1.bpmn20.xml").name("第一个流程案例").deploy();System.out.println(deploy.getId());}
2 挂起和激活
部署的流程默认的状态为激活,如果我们暂时不想使用该定义的流程,那么可以挂起该流程。
流程定义为挂起状态,该流程定义将不允许启动新的流程实例,同时该流程定义下的所有的流程实例都将全部挂起暂停执行。
/*** 挂起流程*/@Testpublic void test05(){RepositoryService repositoryService = processEngine.getRepositoryService();ProcessDefinition processDefinition = repositoryService.createProcessDefinitionQuery().processDefinitionId("holiday:1:4").singleResult();// 获取流程定义的状态boolean suspended = processDefinition.isSuspended();System.out.println("suspended = " + suspended);if(suspended){// 表示被挂起System.out.println("激活流程定义");repositoryService.activateProcessDefinitionById("holiday:1:4",true,null);}else{// 表示激活状态System.out.println("挂起流程");repositoryService.suspendProcessDefinitionById("holiday:1:4",true,null);}}/*** 挂起流程实例*/@Testvoid suspendInstance(){// 挂起流程实例runtimeService.suspendProcessInstanceById("a7ae5680-7ba3-11ee-809a-c03c59ad2248");// 激活流程实例//runtimeService.activateProcessInstanceById("a7ae5680-7ba3-11ee-809a-c03c59ad2248");}
3 启动流程
4 流程审批
// 获取流程引擎对象ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();TaskService taskService = processEngine.getTaskService();Task task = taskService.createTaskQuery().processDefinitionId("holiday:1:4").taskAssignee("zhangsan").singleResult();// 添加流程变量Map<String,Object> variables = new HashMap<>();variables.put("approved",false); // 拒绝请假// 完成任务taskService.complete(task.getId(),variables);
5 流程完毕
6 flowable相关的service服务
(1)service创建方式
通过ProcessEngine创建Service
RuntimeService runtimeService = processEngine.getRuntimeService();
RepositoryService repositoryService = processEngine.getRepositoryService();
TaskService taskService = processEngine.getTaskService();
// ...
(2)service总览
7 flowable相关的表
(1)flowable支持的数据库
也是可以支持国产的数据库的(不过需要修改flowable的源码)
(2)表总览
- ACT_RE :'RE’表示 repository。 这个前缀的表包含了流程定义和流程静态资源 (图片,规则,等等)。
- ACT_RU:'RU’表示 runtime。 这些运行时的表,包含流程实例,任务,变量,异步任务,等运行中的数据。 Flowable只在流程实例执行过程中保存这些数据, 在流程结束时就会删除这些记录。 这样运行时表可以一直很小速度很快。
- ACT_HI:'HI’表示 history。 这些表包含历史数据,比如历史流程实例, 变量,任务等等。
- ACT_GE: GE 表示 general。 通用数据, 用于不同场景下
- ACT_ID: ’ID’表示identity(组织机构)。这些表包含标识的信息,如用户,用户组,等等。
运行实例
-
ACT_RU_DEADLETTER_JOB 正在运行的任务表
-
ACT_RU_EVENT_SUBSCR 运行时事件
-
ACT_RU_EXECUTION 运行时流程执行实例
-
ACT_RU_HISTORY_JOB 历史作业表
-
ACT_RU_IDENTITYLINK 运行时用户关系信息
-
ACT_RU_JOB 运行时作业表
-
ACT_RU_SUSPENDED_JOB 暂停作业表
-
ACT_RU_TASK 运行时任务表
SUSPENSION_STATE_:是否挂起,1代表激活 2代表挂起
ASSIGNEE_:被指派执行该任务的人 -
ACT_RU_TIMER_JOB 定时作业表
-
ACT_RU_VARIABLE 运行时变量表
流程定义
[ACT_RE_DEPLOYMENT]部署单元信息
ENGINE_VERSION_:流程引擎的版本
[ACT_RE_MODEL]模型信息
[ACT_RE_PROCDEF]已部署的流程定义
SUSPENSION_STATE_:挂起状态暂停状态 1激活 2暂停
RESOURCE_NAME_:资源名称流程,bpmn文件名称
流程历史记录
[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_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]用户表
一般数据
[ACT_GE_BYTEARRAY]通用的流程定义和流程资源
关键字段:
name_:部署的文件名称,如:holiday-request-new.bpmn20.xml
GENERATED_是否系统生成0为用户上传,1为系统自动生成, 比如系统会自动根据xml生成png
[ACT_GE_PROPERTY]系统相关属性