Activiti工作流解析:流程状态与数据库表详解
"activiti流程梳理,包括流程的不同状态、主要数据表的解析以及如何启动流程和查询用户任务。" Activiti是一个流行的开源工作流引擎,用于在企业应用中实现业务流程自动化。它允许开发者通过定义流程模型来设计、部署和执行业务流程。在深入探讨 Activiti 的流程管理之前,我们先了解一下流程的不同状态: 流转的状态: 1. 未签收/待办理:流程分配给用户但尚未被接受。 2. 已签收/办理中:用户已经接收任务并正在处理。 3. 运行中/办理中:流程正在多个节点之间移动。 4. 已完成/已办结:流程所有任务已完成,流程结束。 接下来是 Activiti 数据库表的简要说明: 1. act_re_deployment - 存储流程部署信息,记录每次部署的情况。 2. act_re_procdef - 流程定义表,包含每个流程实例的定义,如流程图、元数据等。 3. act_ge_bytearray - 存储流程相关的二进制文件,如流程图、流程定义XML等。 4. act_ge_property - 保存通用属性,如生成流程实例的ID。 5. act_ru_execution - 表示流程实例的运行时状态,如果有并发分支,会有多个执行对象。 6. act_ru_task - 记录当前运行的任务实例。 7. act_ru_variable - 存储运行时流程变量的值。 8. act_ru_identitylink - 描述任务与参与者的关联,如任务的办理人。 9. act_hi_procinst - 历史流程实例表,记录已完成的流程实例信息。 10. act_hi_taskinst - 历史任务实例表,记录已完成的任务信息。 11. act_hi_varinst - 存储历史流程变量的值。 启动流程: 在 Activiti 中,RuntimeService 是负责流程实例管理的关键服务。要启动流程,首先需要通过 processDefinitionKey 获取流程实例,然后调用 startProcessInstanceByKey 方法。流程实例的状态可以通过 processInstance.isEnded() 来检查是否已经结束。 查询用户任务: TaskService 提供 TaskQuery 接口,可以用来查询与特定条件匹配的任务。例如,使用 taskQuery.processInstanceId(id) 可以查询与指定流程实例关联的任务。若要查找未签收的任务,可以使用 taskQuery.taskCandidateUser(userId).list(),这将返回所有分配给特定用户但尚未被领取的任务列表。 Activiti 提供了强大的API来管理和监控业务流程,包括流程的启动、任务查询、状态跟踪等功能。通过对这些核心概念的理解和实践,开发者能够构建出灵活、可扩展的业务流程管理系统。
Assignee:办理人/方法执行的承办人
数据表的说明:
act_re_deployment-流程部署表
act_re_procdef-流程定义表
act_ge_bytearray-二进制文件表
act_ge_property -通用属性表,生成流程ID
act_ru_execution-执行对象表,如果一个流程有分支和聚合(并发执行),那么执行对象ID和流程实例ID就不相同,到分支时会新增新的执行对象数据
act_ru_task-正在执行的任务表
act_ru_variable-正在执行的流程变量表
act_ru_identitylink-任务办理人表
act_hi_procinst - 历史流程实例表
act_hi_taskinst - 历史流程任务表
act_hi_varinst - 流程变量历史表
1、开启流程
(1)activiti提供了一个RuntimeService服务组件来在流程运行时对流程实例进行管理与控制。开启流程就需要使用其中的api
(2)一个流程部署成功后,会在部署信息表act_re_deployment和流程定义表act_re_procdef中插入记录。流程定义key就是act_re_procdef表中的KEY_字段的值。
(3)开始流流程
ProcessInstance processInstance =runtimeService.startProcessInstanceByKey(processDefinitionKey);
查看流程的状态
getProcessInstance(pid)
流程是否执行完成
processInstance.isEnded()
2、查询用户任务
(1)TaskQuery:ctiviti提供了这个接口来封装任务查询相关的api,可以通过TaskService来获取它的实现类对象。
TaskQuery taskQuery = taskService.createTaskQuery();
仅选择与给定流程实例关联的任务
taskQuery.processInstanceId(id)
3、未签收
单人带签收:
下载后可阅读完整内容,剩余1页未读,立即下载
- 粉丝: 2
- 资源: 2
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- C++标准程序库:权威指南
- Java解惑:奇数判断误区与改进方法
- C++编程必读:20种设计模式详解与实战
- LM3S8962微控制器数据手册
- 51单片机C语言实战教程:从入门到精通
- Spring3.0权威指南:JavaEE6实战
- Win32多线程程序设计详解
- Lucene2.9.1开发全攻略:从环境配置到索引创建
- 内存虚拟硬盘技术:提升电脑速度的秘密武器
- Java操作数据库:保存与显示图片到数据库及页面
- ISO14001:2004环境管理体系要求详解
- ShopExV4.8二次开发详解
- 企业形象与产品推广一站式网站建设技术方案揭秘
- Shopex二次开发:触发器与控制器重定向技术详解
- FPGA开发实战指南:创新设计与进阶技巧
- ShopExV4.8二次开发入门:解决升级问题与功能扩展