activiti工作流使用总结

武汉加油!中国加油!

这两天正值新冠病毒疫情期间,在家也没事儿,就简单总结一下activiti的使用吧。

1.八大接口

activiti的使用是通过调用官方提供的接口实现业务和功能,以下是官方提供的八大接口:
RepositoryService: 流程仓库Service,用于管理流程仓库,例如:部署,删除,读取流程资源
RuntimeService:运行时Service,可以处理所有正在运行状态的流程实例,任务等
TaskService:任务Service,用于管理,查询任务,例如:签收,办理,指派等
HistoryService:历史Service,可以查询所有历史数据,例如:流程实例,任务,活动,变量,附件等
IdentityService:身份Service,可以管理,查询用户,组之间的关系
FormService:表单Service,用于读取和流程,任务相关的表单数据
ManagementService:引擎管理Service,和具体业务无关,主要是可以查询引擎配置,数据库,作业等
DynamicBpmnService:一个新增的服务,用于动态修改流程中的一些参数信息等,是引擎中的一个辅助的服务

2.表结构

Activiti的后台是有数据库的支持,所有的表都以ACT_开头。 第二部分是表示表的用途的字母标识。
ACT_RE_*: 'RE’表示repository。 这个前缀的表包含了流程定义和流程静态资源 (图片,规则,等等)。
ACT_RU_*: 'RU’表示runtime。 这些运行时的表,包含流程实例,任务,变量,异步任务,等运行中的数据。 Activiti只在流程实例执行过程中保存这些数据, 在流程结束时就会删除这些记录。 这样运行时表可以一直很小速度很快。
ACT_ID_*: 'ID’表示identity。 这些表包含身份信息,比如用户,组等等。
ACT_HI_*: 'HI’表示history。 这些表包含历史数据,比如历史流程实例, 变量,任务等等。
ACT_GE_*: 通用数据, 用于不同场景下,如存放资源文件。

3.表详情

通用数据表(2个)

act_ge_bytearray:二进制数据表,如流程定义、流程模板、流程图的字节流文件;每部署一次就会增加两条记录,一条是关于bpmn规则文件的,一条是图片的(如果部署时只指定了bpmn一个文件,activiti会在部署时解析bpmn文件内容自动生成流程图);
act_ge_property:属性数据表(不常用);

历史表(8个,HistoryService接口操作的表)

act_hi_actinst:历史节点表,存放流程实例运转的各个节点信息(包含开始、结束等非任务节点);
act_hi_attachment:历史附件表,存放历史节点上传的附件信息(不常用);
act_hi_comment:历史意见表,可改造用于保存节点审批意见、备注;
act_hi_detail:历史详情表,存储节点运转的一些信息(不常用);
act_hi_identitylink:历史流程人员表,存储流程各节点候选、办理人员信息,常用于查询某人或部门的已办任务;
act_hi_procinst:历史流程实例表,存储流程实例历史数据(包含正在运行的流程实例);
act_hi_taskinst:历史流程任务表,存储历史任务节点;
act_hi_varinst:流程历史变量表,存储流程历史节点的变量信息;

用户相关表(4个,IdentityService接口操作的表)

act_id_group:用户组信息表,对应节点选定候选组信息;
act_id_info:用户扩展信息表,存储用户扩展信息;
act_id_membership:用户与用户组关系表;
act_id_user:用户信息表,对应节点选定办理人或候选人信息;

流程定义、流程模板相关表(3个,RepositoryService接口操作的表)

act_re_deployment:部属信息表,存储流程定义、模板部署信息;
act_re_procdef:流程定义信息表,存储流程定义相关描述信息,但其真正内容存储在 act_ge_bytearray表中,以字节形式存储;
act_re_model:流程模板信息表,存储流程模板相关描述信息,但其真正内容存储在act_ge_bytearray表中,以字节形式存储;

流程运行时表(6个,RuntimeService接口操作的表)

act_ru_task:运行时流程任务节点表,存储运行中流程的任务节点信息,重要,常用于查询人员或部门的待办任务时使用;
act_ru_event_subscr:监听信息表,不常用;
act_ru_execution:运行时流程执行实例表,记录运行中流程运行的各个分支信息(当没有子流程时,其数据与act_ru_task表数据是一一对应的);
act_ru_identitylink:运行时流程人员表,重要,常用于查询人员或部门的待办任务时使用;
act_ru_job:运行时定时任务数据表,存储流程的定时任务信息;
act_ru_variable:运行时流程变量数据表,存储运行中的流程各节点的变量信息;

其他(2个)

act_evt_log:事件日志表,不常用;
act_procdef_info:流程定义扩展表,不常用;

4.使用流程

1.创建模型

保存模型

Model model = repositoryService.newModel();
repositoryService.saveModel(model);

保存其他信息(图片,xml)

repositoryService.addModelEditorSource(id,editorNode.toString().getBytes("utf-8"));

2.把模型部署为流程

repositoryService.createDeployment()
        .name(modelData.getName())
        .addString(processName, new String(bpmnBytes, "UTF-8"))
        .deploy();

3.发起流程

runtimeService.startProcessInstanceByKey(procDefKey, businessId, vars);

4.相关人员查询待办任务

taskService.createTaskQuery().list(); 

taskService.createTaskQuery()相当于创建一个查询任务,后面可以根据业务需求添加任何查询条件,可以分组,排序,分页,和sql是一样的,只不过我们是直接调用activiti封装好的方法去查询。

5.处理任务

通过

taskService.complete(taskId, vars);

拒绝需要根据业务实际情况实现

6.流程结束

发布了4 篇原创文章 · 获赞 0 · 访问量 130

猜你喜欢

转载自blog.csdn.net/edgdrgdfgdfg/article/details/104326646