Flowable初级使用手册

1. Flowable数据库表命名规则

1.0 act_procdef_info:流程定义储存表
流程定义更新信息,包含流程定义ID,版本号,内容等

1.1 ACT_RE_*
’RE’表示repository(存储)。RepositoryService接口操作的表。带此前缀的表包含的是静态信息,如,流程定义,流程的资源(图片,规则等)
1.1.1 act_re_deployment:部署信息表核心表
部署流程定义时需要被持久化保存下来的信息
1.1.2 act_re_model:流程设计模型部署表
流程设计器设计流程模型保存的数据,包含:创建时间,最后更新时间,元数据(META_INFO_:以json格式保存流程定义的信息),部署ID(DEPLOYMENT_ID_)
1.1.3 act_re_procdef:流程定义数据表
核心表
1.1.3.1 提示
此表和ACT_RE_DEPLOYMENT是多对一的关系,即,一个部署的bar包里可能包含多个流程定义文件,每个流程定义文件都会有一条记录在ACT_REPROCDEF表内,每个流程定义的数据,都会对于ACT_GE_BYTEARRAY表内的一个资源文件和PNG图片文件。
1.1.3.2 和ACT_GE_BYTEARRAY的关联:
是通过程序用ACT_GE_BYTEARRAY.NAMEACT_RE_PROCDEF.NAME_完成的,在数据库表结构中没有体现
1.1.3.3 包含
分类(CATEGORY_:流程定义的Namespace就是类别),部署ID(DEPLOYMENT_ID_),资源名称(RESOURCE_NAME_:流程bpmn文件名称),拥有开始表单标识(HAS_START_FORM_KEY_:start节点是否存在 formKey 0否 1是),挂起状态(SUSPENSION_STATE_:暂停状态 1激活 2暂停)

1.2 ACT_RU_*
’RU’表示runtime。这是运行时的表存储着流程变量,用户任务,变量,职责(job)等运行时的数据。
flowable只存储实例执行期间的运行时数据,当流程实例结束时,将删除这些记录。这就保证了这些运行时的表小且快。
1.2.1 act_ru_event_subscr:事件订阅
包含:流程定义ID,流程实例ID,执行实例ID,节点ID,创建时间等
1.2.2 act_ru_execution:运行时流程执行实例表核心表
包含:流程实例ID,流程定义ID,父级ID,父级的执行实例ID,节点ID,挂起状态(SUSPENSION_STATE_:1激活 2暂停),缓存状态(CACHED_ENT_STATE_:缓存的状态, 1 事件监听 2 人工任务 3 异步作业)
1.2.3 act_ru_identitylink:运行时流程人员表
主要存储当前节点参与者的信息,包含:用户组ID,用户ID,任务ID,流程实例ID,流程定义ID
1.2.4 act_ru_job:运行时定时任务数据表
1.2.4.1 包含:
锁定过期时间(LOCK_EXP_TIME_),挂起者(LOCK_OWNER_),是否唯一(EXCLUSIVE_),执行实例ID,流程实例ID,流程定义ID,重试次数(RETRIES_),截至时间(DUEDATE_)
1.2.4.2 需要启用JOB组件
JobExecutor 是管理一组线程的组件,这些线程用于触发定时器(包括后续的异步消息)。在单元测试场景下,使用多线程会很笨重。
ManagementService.createJobQuery 用于查询,
ManagementService.executeJob 用于执行作业。
这样作业的执行就可以在单元测试内部控制。为了避免作业执行器的干扰,可以将它关闭。
默认情况下, JobExecutor 在流程引擎启动时激活。
当你不希望 JobExecutor 随流程引擎启动时,设置:<property name="jobExecutorActivate" value="false" />
1.2.4.3 启用异步执行器 Async executor activation
AsyncExecutor 是管理线程池的组件,这个线程池用于触发定时器与异步任务。
默认情况下,由于历史原因,当使用 JobExecutor 时, AsyncExecutor 不生效。然而我们建议使用新的 AsyncExecutor 代替JobExecutor ,通过定义两个参数实现
<property name="asyncExecutorEnabled" value="true" /><property name="asyncExecutorActivate" value="true" />
参数 asyncExecutorEnabled 用于启用异步执行器,代替老的作业执行器。
参数 asyncExecutorActivate 命令Activiti引擎在启动时启动异步执行器线程池。
1.2.5 act_ru_task:运行时任务节点表
核心表
包含:
主键(任务ID),执行实例ID,流程实例ID,流程定义ID,父任务ID,被代理人(OWNER_:一般情况下为空,只有在委托时才有值),经办人(GNEE_:签收人或者委托人),委托状态(DELEGATION_:委托状态 PENDING委托中,RESOLVED已处理),优先级(PRIORITY_),创建时间,截至时间,挂起状态(SUSPENSION_STATE_:暂停状态 1激活 2暂停)
1.2.6 act_ru_variable:运行时流程变量数据表*核心表
类型:jpa-entity、boolean、bytes、serializable、自定义type、CustomVariableType、date、double、integer、long、null、short、string
包含:执行实例ID,流程实例ID,任务ID,资源ID(BYTEARRAY_ID_)

1.3 ACT_ID_*
’ID’表示identity(组织机构)。这些表包含标识的信息,如用户,用户组,等等。
1.3.1 act_id_group:用户组表
自带的用户组表,用于组任务,包含:名称,类型,版本号
1.3.2 act_id_info:用户扩展信息表
包含:用户ID,类型,key,value,密码,父级ID
1.3.3 act_id_membership:用户与分组对应信息表
用来保存用户的分组信息,包含:用户ID,用户组ID
1.3.4 act_id_user:用户信息表
包含:姓,名,邮箱,密码,版本号,头像ID

1.4 ACT_HI_*
’HI’表示history。就是这些表包含着历史的相关数据,如结束的流程实例,变量,任务,等等。
1.4.1 act_hi_actinst:历史活动信息
记录流程流转过的所有节点,包括流程定义ID,流程实例ID,执行节点的ID/名称,执行的指向箭头,办理人ID,开始时间,结束时间,删除原因等
1.4.2 act_hi_attachment:历史附件表
存放历史流程相关的附件的地址
1.4.3 act_hi_comment:历史审批意见表
存放历史流程的审批意见
1.4.4 act_hi_detail:历史详情信息表
流程中产生的变量详细,包括控制流程流转的变量,业务表单中填写的流程需要用到的变量等
1.4.5 act_hi_identitylink:历史流程人员表,
主要存储当前节点参与者的信息,比如参与者ID,参与的流程实例ID,任务ID,参与者扮演的角色类型{assignee(办理者)、candidate(候补者)、owner(委托的办理者)、starter(发起者) 、participant(参与者)}
1.4.6 act_hi_procinst:流程实例历史核心表
存放历史的流程实例,包含流程实例ID,流程定义ID,开启人ID,开始节点ID,结束节点ID,父级流程实例ID,删除原因
1.4.7 act_hi_taskinst:历史任务流程实例信息
核心表
存放已经办理的任务,包含有任务ID,流程实例ID,流程定义ID,任务节点key和名字,办理人ID,最后修改时间
1.4.8 act_hi_varinst:历史变量表
存放历史变量数据

1.5 ACT_GE_*
普通数据,各种情况都使用的数据。
1.5.1 act_ge_bytearray:资源表
保存部署文件的大文本数据,文件位置,流程定义部署ID(deployment_id),是一个二进制文件数据,(存储流程定义相关的资源)–ByteArrayEntityImpl
1.5.2 act_ge_property:属性表
全局配置文件,(保存流程引擎的kv键值属性)–PropertyEntityImpl

1.6 act_evt_log:事件日志表
事件日志,默认不开启,如果不使用事件记录,可以删除这个表,
1.6.1 作用:
来源于引擎的事件会被捕获,并创建一个包含了所有事件数据(甚至更多)的映射,提供给org.activiti.engine.impl.event.logger.EventFlusher,由它将这些数据刷入其他地方;默认情况下,使用简单的基于数据库的事件处理/刷入,会使用Jackson将上述映射序列化为JSON,并将其作为EventLogEntryEntity接口存入数据库。

	// 1.6.2 配置启用事件日志
	processEngineConfiguration.setEnableDatabaseEventLogging(true);
	// 1.6.3 运行时启用事件日志
	databaseEventLogger = new EventLogger(processEngineConfiguration.getClock());
	runtimeService.addEventListener(databaseEventLogger);

1.6.4 可以扩展EventLogger类。
如果默认的数据库记录不符合要求,需要覆盖createEventFlusher()方法返回一个org.activiti.engine.impl.event.logger.EventFlusher接口的实例。可以通过ActivitimanagementService.getEventLogEntries(startLogNr, size)?获取EventLogEntryEntity实例。容易看出这个表中的数据可以通过JSON放入大数据NoSQL存储,例如MongoDBElastic Search,等等.也容易看出这里使用的类(org.activiti.engine.impl.event.logger.EventLogger/EventFlusher与许多其他 EventHandler类)是可插入的,可以按你的使用场景调整(例如不将JSON存入数据库,而是将其直接发送给一个队列或大数据存储)。请注意这个事件记录机制是额外于Activiti的“传统”历史管理器的。尽管所有数据都在数据库表中,但并未对查询或快速恢复做优化。实际使用场景是末端审计并将其存入大数据存储。

2.Flowable使用SLF4J作为内部日志框架

要看到关于引擎启动与创建数据库表结构的提示日志,在src/main/resources文件夹下添加log4j.properties文件,内容如下:

log4j.rootLogger=DEBUG, CA
log4j.appender.CA=org.apache.log4j.ConsoleAppender
log4j.appender.CA.layout=org.apache.log4j.PatternLayout
log4j.appender.CA.layout.ConversionPattern= %d{
   hh:mm:ss,SSS} [%t] %-5p %c %x - %m%n

3.核心类:

3.1 RepositoryService 流程存储服务
管理流程定义文件xml及静态资源的服务
对特定流程的暂停和激活
流程定义启动权限管理
类内部重要的成员有:
deploymentBuilder : 部署文件构造器,详见本文4.1
deploymentQuery : 部署文件查询器
ProcessDefinitionQuery : 流程定义文件查询对象
Deployment : 流程部署文件对象,详见本文4.1
ProcessDefinition : 流程定义文件对象,详见本文4.1
BpmnModel : 流程定义的java格式
学习博客:https://www.jianshu.com/p/96df1d449cc3

3.2 RuntimeService 流程运行控制服务
启动流程及对流程数据的控制
流程实例(ProcessInstance)与执行流(Execution)的查询,详见本文4.4
触发流程操作,接收消息和信号
启动流程及变量管理
启动流程的常用方法(id,key,message),详见本文4.3
启动流程可选参数(businessKey,variables,tenantId)
变量(variables)的设置和获取,详见本文4.4
学习博客:
https://blog.csdn.net/yijianqingyu/article/details/79746551
https://www.jianshu.com/p/4a9a52c62bcc

3.3 HistoryService 流程系统历史服务
管理流程实例结束后的历史数据
构建历史数据的查询对象
根据流程实例id删除流程历史数据
历史数据实体
HistoricProcessInstance 历史流程实例实体类(学习博客:https://blog.csdn.net/yijianqingyu/article/details/80311179
HistoricTaskInstance 用户任务实例的信息
HistoricActivityInstance 单个活动节点执行的信息
HistoricVariableInstance 流程或任务的变量值实体
HistoricDetail 历史流程活动任务详细信息
备注:历史数据实体与运行时的数据实体的API大同小异
学习博客:https://blog.csdn.net/mchgogo/article/details/79126404
构建历史查询对象
create{历史数据实体}Query();
createNative{历史数据实体}Query();
createProcessInstanceHistoryLogQuery(processInstanceId);
备注:各历史查询对象API大同小异
删除历史操作

historyService.deleteHistoricProcessInstance(processInstanceId);
historyService.deleteHistoricTaskInstance(processInstanceId);

学习博客:https://www.jianshu.com/p/0b6ecf500e9d

3.4 TaskService 任务管理服务
3.4.1 对用户任务UserTask的管理和流程的控制
Task对象的创建和删除
查询Task,驱动Task节点完成执行
Task相关参数变量variable设置
3.4.2 设置用户任务的权限信息(设置候选人等)
候选用户candidateUser和候选组candidateGroup
指定拥有人Owner和办理人Assignee
通过claim设置办理人(签收 )
3.4.3 针对用户任务添加任务附件,任务评论和事件记录
任务附件Attachment创建与查询
任务评论Comment创建与查询
事件记录Event创建与查询
3.4.5 学习博客
https://www.jianshu.com/p/dfad80be1dbf
https://blog.csdn.net/syq8023/article/details/89852339

3.5 IdentityService 用户管理服务
管理用户
管理用户组
用户与用户组的关系(MemberShip)
学习博客:https://www.jianshu.com/p/4150818b924e

3.6 FormService 表单管理服务
解析流程定义中表单项的配置
提交表单的方式驱动用户节点流转
获取自定义外部表单key
学习博客:https://www.jianshu.com/p/66e336554a06

3.7 managementService 工作管理服务
Job任务管理
数据库相关通用操作
执行流程引擎命令(Command)
学习博客:https://www.jianshu.com/p/a1c132f729b9

4.flowable的使用

4.0 学习示例
https://gitee.com/lwj/flowable.git flowable-base分支
https://www.cnblogs.com/liuwenjun/category/1296599.html
将本地jar包导入maven仓库:

PS E:\JVM\MavenRepository\com\dragon\tools>mvn install:install-file -D file=tools-1.0-SNAPSHOT.jar -D groupId=com.dragon -D artifactId=tools -D version=1.0-SNAPSHOT -D packaging=jar

4.1 部署流程定义(BPMN文件),获取流程定义文件对象

		// resouce:BPMN文件路径,inputStream:该文件的字节流
		DeploymentBuilder deploymentBuilder = repositoryService.createDeployment().addInputStream(resource, inputStream);
		// 根据参数设置流程部署构建器,parameter :部署参数,一个Map<String, Object>
		deploymentBuilder.category(parameter.get("flowType")).name(parameter.get("flowName")).key(parameter.get
  • 10
    点赞
  • 40
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值