计算机系统应用教程网站

网站首页 > 技术文章 正文

Activiti初识笔记(activiti 详解)

btikc 2024-11-15 16:35:34 技术文章 1 ℃ 0 评论

什么是工作流

工作流(Work Flow)就是工作流程的计算模型,即将工作流程中的工作如何前后组织在一起的逻辑和规则在计算机中以恰当的模型进行表示并对其实施计算。

工作流要解决的主要问题是:为实现某个业务目标,在多个参与者之间,利用计算机,按某种预定规则自动传递文档、信息或者任务。

简单地说,工作流就是一系列相互衔接、自动进行的业务活动或任务。

一.数据库表名说明:

  • 表删除顺序(25张表):

由于存在外键,表删除需要按照以下顺序进行.注释掉的表是关于用户认证方面建议还是自己开发一套,组件自带的功能太简单,使用中有很多需求难以满足

DROP TABLE IF EXISTS `ACT_RU_VARIABLE`;
-- DROP TABLE IF EXISTS `ACT_ID_GROUP`; -- 用户组信息表
DROP TABLE IF EXISTS `ACT_EVT_LOG`;
DROP TABLE IF EXISTS `ACT_GE_PROPERTY`; -- 属性数据表存储整个流程引擎级别的数据,初始化表结构时,会默认插入三条记录
DROP TABLE IF EXISTS `ACT_HI_ACTINST`; -- 历史节点表
DROP TABLE IF EXISTS `ACT_HI_ATTACHMENT`; -- 历史附件表
DROP TABLE IF EXISTS `ACT_HI_COMMENT`; -- 历史意见表
DROP TABLE IF EXISTS `ACT_HI_DETAIL`; -- 历史详情表,提供历史变量的查询
DROP TABLE IF EXISTS `ACT_HI_IDENTITYLINK`; -- 历史流程人员表
DROP TABLE IF EXISTS `ACT_HI_PROCINST`; -- 历史流程实例表
DROP TABLE IF EXISTS `ACT_HI_TASKINST`; -- 历史任务实例表
DROP TABLE IF EXISTS `ACT_HI_VARINST`; -- 历史变量表
-- DROP TABLE IF EXISTS `ACT_ID_INFO`; -- 用户扩展信息表
-- DROP TABLE IF EXISTS `ACT_ID_MEMBERSHIP`; -- 用户与用户组对应信息表
-- DROP TABLE IF EXISTS `ACT_ID_USER`; -- 用户信息表
DROP TABLE IF EXISTS `ACT_PROCDEF_INFO`;
DROP TABLE IF EXISTS `ACT_RE_MODEL`; -- 流程设计模型部署表
DROP TABLE IF EXISTS `ACT_RU_EVENT_SUBSCR`;
DROP TABLE IF EXISTS `ACT_RU_IDENTITYLINK`; -- 运行时流程人员表,主要存储任务节点与参与者的相关信息
DROP TABLE IF EXISTS `ACT_RU_JOB`;
DROP TABLE IF EXISTS `ACT_RU_TASK`; -- 运行时任务节点表
DROP TABLE IF EXISTS ACT_RU_TIMER_JOB;
DROP TABLE IF EXISTS ACT_RU_SUSPENDED_JOB;
DROP TABLE IF EXISTS ACT_RU_DEADLETTER_JOB;
DROP TABLE IF EXISTS ACT_RU_INTEGRATION; 
DROP TABLE IF EXISTS `ACT_RU_EXECUTION`; -- 运行时流程执行实例表
DROP TABLE IF EXISTS `ACT_RE_PROCDEF`; -- 流程定义数据表
DROP TABLE IF EXISTS `ACT_GE_BYTEARRAY`; --  二进制数据表
DROP TABLE IF EXISTS `ACT_RE_DEPLOYMENT`; -- 部署信息表
  • Activiti工作流所有的表名默认以“ACT_”开头。 并且表名的第二部分用两个字母表明表的用例,而这个用例也基本上跟Service API匹配。

1. ACT_GE_* : “GE”代表“General”(通用),用于不同场景下;

2. ACT_HI_* : “HI”代表“History”(历史),这些表中保存的都是历史数据,比如执行过的流程实例、变量、任务,等等。

Activit默认提供了4种历史级别:

? none: 不保存任何历史记录,可以提高系统性能;

? activity:保存所有的流程实例、任务、活动信息;

? audit:也是Activiti的默认级别,保存所有的流程实例、任务、活动、表单属性;

? full: 最完整的历史记录,除了包含audit级别的信息之外还能保存详细,例如:流程变量。 对于几种级别根据对功能的要求选择,如果需要日后跟踪详细可以开启full。

3.ACT_ID_* : “ID”代表“Identity”(身份),这些表中保存的都是身份 信息,如用户和组以及两者之间的关系。如果Activiti被集成在某一系统当中的话,这些表可以不用,可以直接使用现有系统中的用户或组信息;

4.ACT_RE_* : “RE”代表“Repository”(仓库),这些表中保存一些 ‘静态’信息,如流程定义和流程资源(如图片、规则等);

5. ACT_RU_* : “RU”代表“Runtime”(运行时),这些表中保存一些流程实例、用户任务、变量,异步任务等运行时的数据。Activiti 只在流程实例执行过程中保存这些数据, 在流程结束时就会删除这些记录。 这样运行时表可以一直很小速度很快。

二.bpmn文件中文乱码解决:

网上一堆说在idea安装目录下idea64.exe.vmoptions文件追加-Dfile.encoding=UTF-8,其实解决不了问题。

最有效的是在idea:help->edit custom vm options追加上述指令

三.activiti项目在数据库中没表的情况下启动报错:

Cause: java.sql.SQLSyntaxErrorException: Table 'myactiviti.act_ge_property' doesn't exist

原因及解决办法:

出现这种问题的原因是mysql版本问题,mysql8.xxx以上驱动会出现这个问题。上次是因为在221上lab_activiti库中也有这个表,导致报错。

解决:

因为mysql使用schema标识库名而不是catalog,因此mysql会扫描所有的库来找表,如果其他库中有相同名称的表,activiti就以为找到了,本质上这个表在当前数据库中并不存在。

设置nullCatalogMeansCurrent=true,表示mysql默认当前数据库操作,在mysql-connector-java 5.xxx该参数默认为true,在6.xxx以上默认为false,因此需要设置nullCatalogMeansCurrent=true。

ps:我用的版本7.1.0-M11

Tags:

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表