文档详情

深入Activiti流程引擎(核心原理与高阶实战).pptx

发布:2025-04-13约5.55千字共40页下载文档
文本预览下载声明

深入Activiti流程引擎:核心原理与高阶实战欢迎参加Activiti流程引擎深度探索之旅。本次分享将揭秘Activiti的内部工作机制和高级应用技巧。无论您是初学者还是有经验的开发者,都能从中获得宝贵的工作流实战经验。作者:

什么是Activiti?开源业务流程管理平台提供完整的业务流程生命周期管理功能,让企业可以自由定制流程。轻量级Java工作流引擎核心JAR包仅5MB左右,易于集成,资源消耗少,适合各种规模项目。支持BPMN2.0标准完全兼容业界标准的业务流程建模标记法,确保流程定义的可移植性。

Activiti的发展历史12010年由Alfresco公司发布首个版本,TomBaeyens带领团队创建。2源自jBPM项目核心开发者从jBPM项目分离,基于全新架构打造更轻量级引擎。3目前最新版本7.x经历多次重大版本迭代,核心功能日趋完善,生态系统不断扩展。

Activiti核心概念流程定义流程的静态模型,以XML格式定义流程结构和行为流程实例流程定义的运行时实体,代表一个具体的业务流程执行执行对象流程实例中的执行路径,特别是在并行分支中尤为重要任务需要人工完成的工作单元,是用户交互的主要切入点

Activiti架构工具集设计器、管理控制台等辅助工具服务接口提供流程操作的API层数据库持久化流程数据的存储层核心引擎执行流程的核心组件

流程定义详解BPMN2.0规范业界标准流程建模语言,提供丰富的图形元素和语义。包含事件、活动、网关等图形元素,具有严格定义的执行语义。XML文件结构流程定义本质是结构化XML文档,包含流程元数据和行为定义。主要包含process、userTask、sequenceFlow等核心元素。流程图元素开始事件、结束事件、用户任务、服务任务等组成流程图。通过顺序流连接各元素,形成完整的流程路径。

流程实例生命周期创建通过RuntimeService启动流程定义,生成流程实例。此阶段会初始化流程变量,创建历史记录。运行流程按照定义执行各节点,可能产生用户任务等待处理。流程变量可以影响流程走向,驱动业务逻辑。挂起流程可临时挂起,暂停所有活动直到被重新激活。挂起状态下的流程不会处理任何任务或定时器。完成流程到达结束事件或被强制终止,实例数据将被归档。完成后的流程数据从运行时表移至历史表。

Activiti服务接口RepositoryService管理流程定义的存储库服务。负责部署、查询、删除流程定义。RuntimeService运行时服务。用于启动流程、管理流程实例、设置流程变量。TaskService任务服务。处理任务分配、认领、完成等人工交互环节。HistoryService历史服务。查询已完成的流程实例、任务、活动等历史数据。

数据库表结构ACT_RE_*:资源表存储静态资源数据,如流程定义、流程资源文件等。ACT_RE_DEPLOYMENTACT_RE_PROCDEFACT_RE_MODELACT_RU_*:运行时表存储运行中的流程实例、任务、变量等动态数据。ACT_RU_EXECUTIONACT_RU_TASKACT_RU_VARIABLEACT_HI_*:历史表存储历史数据,如已完成的流程和任务。ACT_HI_PROCINSTACT_HI_TASKINSTACT_HI_ACTINST

配置Activiti环境Maven依赖在pom.xml中添加核心依赖和相关组件,确保版本一致性。数据库配置支持多种数据库,如MySQL、Oracle、PostgreSQL等。流程引擎配置通过XML或Java代码配置流程引擎行为和特性。

创建第一个流程设计BPMN流程图使用流程设计器绘制包含开始、任务、网关和结束的流程图部署流程定义将BPMN文件部署到Activiti引擎中存储和解析启动流程实例通过API传入业务参数创建实例并开始执行

任务管理1查询任务通过TaskService的查询API获取待办任务列表2认领任务将组任务分配给特定用户进行处理3完成任务提交表单数据并标记任务为已完成状态4委派任务将任务临时转交他人处理后再返回

流程变量设置变量可在流程启动、任务完成时设置。支持基本类型、序列化对象等多种数据形式。获取变量通过RuntimeService或TaskService查询。变量可用于流程决策和展示业务数据。作用域和生命周期全局变量与流程实例同生命周期。局部变量仅在特定任务或执行中可见。

表达式语言UEL表达式统一表达式语言,Activiti默认支持的表达式语言。值表达式:${order.price100}方法表达式:${orderService.validate(order)}条件决策:${user.role==manager}Spring表达式语言与Spring框架集成时可使用SpEL

显示全部
相似文档