gaohuaiyun / activiti Goto Github PK
View Code? Open in Web Editor NEWThis project forked from alexsj13/activiti
本仓库为Activiti权威指南一书的配套代码。
This project forked from alexsj13/activiti
本仓库为Activiti权威指南一书的配套代码。
该代码是Activiti权威指南一书的配套代码,会持续更细新特性。 Activiti交流群(qq群):129123599 Flowable交流群(qq群):451710578 书目录如下: 前言 1. 环境搭建 1.1 环境搭建 1.1.1 安装GitHub 1.1.2 安装Maven 1.2 编译源码 1.3 源码目录说明 1.4 安装流程设计器 1.5 工程搭建 2. 探险流程引擎 2.1 流程配置文件 2.1.1 Activiti配置风格 2.1.2 Spring配置风格 2.2 流程引擎架构 2.3 构造流程引擎实例对象 2.3.1 初始化流程引擎之Activiti配置风格 2.3.2 构造流程引擎实例对象 2.3.3 创建流程引擎配置类实例 2.3.4 初始化流程引擎 2.3.5 初始化流程引擎之Spring配置风格 2.4 初始化流程引擎配置类 2.5 配置器 2.5.1 初始化配置器 2.5.2 配置器实战 2.6 初始化流程引擎 2.6.1 操作引擎表 2.7 管理流程引擎 2.7.1 注册流程引擎 2.7.2 关闭流程引擎 2.8 流程引擎生命周期监听器 2.9 其他方式构造引擎实例 2.9.1 ProcessEngineConfiguration类创建引擎 2.9.2 编程方式创建引擎 3. 初识流程资源部署 3.1 流程资源概述 3.1.1 流程文档部署生命周期 3.1.2 DeploymentBuilder核心类 3.2 流程文档部署 3.2.1 定义流程文档 3.2.2 文本方式部署 3.2.3 classpath资源部署 3.2.4 流式部署 3.3 BpmnModel方式部署 3.4 校验BpmnModel实例对象 3.5 BpmnModel转换流程文档 3.6 流程文档转换BpmnModel 3.7 使用建议 4. 流程文档解析原理 4.1 文档解析基础 4.1.1 文档解析模型 4.1.2 Activiti文档解析技术选型演变 4.1.3 文档解析实战 4.2 元素解析功能架构设计 4.2.1 BPMN2.0元素概述 4.2.2 元素解析功能架构设计 4.2.3 开闭原则 4.2.4 元素与元素属性承载类以及元素解析器对应关系 4.2.5 元素属性承载类架构 4.3 元素解析环境准备 4.3.1 文档转换器 4.3.2 封装流程文档数据流 4.3.3 初始化元素解析器 4.3.4 文档转换器功能 4.3.5 元素解析环境准备 4.3.6 验证流程文档格式 4.4 元素解析 4.4.1 元素解析入口 4.4.2 解析根元素 4.4.3 黑名单处理机制 4.4.4 流程内元素解析入口 4.4.5 解析连线 4.4.6 获取元素坐标 4.5 子元素解析 4.5.1 初始化子元素解析器 4.5.2 解析子元素 4.5.3 解析扩展元素 4.6 节点与连线关联 5. 自定义元素解析 5.1 自定义元素解析原理 5.2 存储自定义元素属性值 5.3 自定义元素实战 5.4 扩展黑名单元素 5.4.1 扩展元素属性原理 5.4.2 任务节点扩展属性实战 5.5 扩展非黑名单元素 5.5.1 自定义元素解析器 5.5.2 替换引擎元素解析器 6. 事件转发器 6.1 初始化事件转发器 6.2 事件转发器架构 6.3 注册事件监听器 6.4 事件转发功能之新老版本兼容 6.5 事件转发原理以及缺陷 6.6 添加事件监听器 6.6.1 使用配置方式添加 6.6.2 动态添加 6.7 日志监听器 6.7.1 初始化日志监听器 6.7.2 初始化日志处理器 6.7.3 日志处理器架构 6.7.4 收集日志数据入口 6.8 日志清洗器架构 6.8.1 数据库日志清洗器 6.8.2 生成日志数据 6.8.3 日志存储 6.9 自定义日志清洗器 7. 流程文档部署原理 7.1 初始化部署器 7.1.1 初始化内置部署器 7.1.2 部署器依赖关系 7.2 部署命令 7.2.1 过滤重复文档 7.2.2 设置标识位 7.2.3 添加会话缓存 7.2.4 部署管理器 7.3 Bpmn部署器 7.3.1 获取资源信息 7.3.2 封装资源信息 7.3.3 校验资源名称 7.3.4 计算流程定义版本值 7.3.5 生成流程定义id值 7.3.6 移除过期作业 7.3.7 添加作业 7.3.8 处理消息 7.3.9 处理信号 7.3.10 设置流程启动人 7.4 自定义部署器实战 8. 缓存 8.1 背景 8.2 初始化缓存策略 8.3 部署管理器 8.4 缓存处理类架构 8.5 默认缓存处理类及Bug 8.6 流程定义缓存 8.6.1 自定义缓存处理类 8.6.2 验证自定义缓存处理类 8.7 Activiti新特性之节点缓存 8.8 节点缓存实战 8.9 节点缓存原理 8.9.1 初始化节点缓存数据 8.9.2 更新节点缓存 8.9.3 节点缓存架构 8.9.4 节点缓存使用误区 8.10 自定义节点缓存实战 8.10.1 自定义节点缓存类 8.10.2 修复Activiti节点缓存不更新Bug 8.10.3 扩展引擎配置类功能 8.10.4 配置器高级用法 8.10.5 使用自定义节点缓存类 8.11 任务节点缓存数据获取原理 8.11.1 获取任务节点缓存数据 8.11.2 解析任务节点缓存数据 8.11.3 运用任务节点缓存数据 8.12 动态修改任务节点缓存数据 8.13 节点缓存使用技巧 9. 定时作业 9.1 初始化作业执行器 9.2 初始化作业处理器 9.2.1 任务超时作业 9.2.2 定时任务作业 9.2.3 定时启动流程实例作业 9.2.4 其他作业 9.3 作业执行器原理 9.3.1 初始化作业执行器 9.3.2 启动作业执行器 9.4 添加定时作业 9.5 执行定时作业 9.5.1 查询作业 9.6 处理作业 9.6.1 批量处理作业 9.6.2 执行作业之异常处理 9.7 关闭作业执行器 9.8 自定义作业处理器 10. 流程虚拟机 10.1 流程虚拟机原理 10.2 虚拟机入口 10.3 流程定义转换准备 10.3.1 初始化对象解析器集合 10.3.2 初始化内置对象解析器 10.3.3 解析调度类BpmnParseHandlers 10.3.4 BpmnParseHandler架构 10.3.5 对象解析器架构 10.4 流程对象解析入口 10.5 流程子元素对象解析入口 10.5.1 任务节点对象解析器 10.5.2 创建ActivityImpl实例对象 10.5.3 多实例对象解析 10.5.4 连线对象解析 10.6 PvmProcessElement类架构 10.7 自定义对象解析器 10.7.1 任务节点扩展属性 10.7.2 自定义任务节点对象解析器 10.7.3 获取自定义属性 10.7.4 运用自定义对象解析器 10.8 流程虚拟机实战 10.8.1 获取流程虚拟机对象 10.8.2 入侵流程虚拟机 10.9 操作连线表达式 10.9.1 自动计算连线表达式 10.9.2 获取连线表达式 11. 监听器原理 11.1 监听器生命周期 11.2 内置记录监听器 11.2.1 内置任务记录监听器 11.2.2 内置执行记录监听器 11.3 历史解析器架构 11.3.1 添加内置记录监听器 11.3.2 初始化历史解析器 11.3.3 历史节点结束通知 11.3.4 控制归档历史数据级别 11.3.5 更新历史数据 11.3.6 历史节点开始通知 11.4 注入执行监听器 11.4.1 创建执行监听器 11.5 注入任务监听器 11.6 触发执行监听器 11.6.1 class方式调度 11.6.2 delegateExpression方式调度 11.6.3 expression方式调度 11.6.4 执行监听器触发入口 11.7 触发任务监听器 11.8 监听器代理 11.8.1 默认代理类 11.8.2 自定义代理类 11.9 自定义全局任务监听器 11.10 Activiti新特性之字段注射模式 12. Activiti之设计模式 12.1.1 命令模式的结构说明 12.1.2 命令模式实战 12.2 Activiti命令模式 12.2.1 初始化命令配置类 12.2.2 Activiti事务传播行为 12.2.3 Spring事务拦截器 12.2.4 初始化命令调度者 12.2.5 初始化命令上下文工厂 12.2.6 初始化命令拦截器 12.3 Activiti职责链模式 12.4 命令相关类职责 12.5 命令拦截器 12.5.1 日志拦截器 12.5.2 命令上下文拦截器 12.5.3 上下文类 12.5.4 创建命令上下文实例对象 12.5.5 命令调度者拦截器 12.6 自定义命令拦截器 12.7 命令类调度入口 12.8 Activiti事务 12.8.1 MyBatis事务管理 12.8.2 事务上下文架构 12.8.3 事务上下文工厂类 12.8.4 事务监听器 12.8.5 注册同步事务 13. 流程虚拟机运转 13.1 流程实例运转入口 13.2 启动流程实例命令类 13.2.1 获取ProcessDefinitionEntity实例对象 13.2.2 重新生成流程定义缓存数据 13.3 创建流程实例 13.3.1 创建ExecutionEntity实例对象 13.3.2 获取dataObject 13.3.3 区别流程实例与执行实例 13.3.4 添加历史流程实例数据 13.4 虚拟机运转原理 13.5 AtomicOperation架构 13.6 流程实例启动 13.6.1 非异步节点处理 13.6.2 异步节点处理 13.7 原子类流转 13.7.1 流程启动原子类 13.7.2 流程启动准备原子类 13.7.3 活动节点执行原子类 13.7.4 开始节点行为类 13.7.5 途经连线 13.7.6 通知连线完成原子类 13.7.7 连线销毁原子类 13.7.8 其他原子类 13.8 Activiti新特性之忽略节点 14. 行为篇 14.1 活动行为工厂类 14.1.1 初始化活动行为工厂类 14.1.2 活动行为类架构 14.2 排他网关行为类原理 14.3 扩展排他网关实战 14.3.1 自定义排他网关行为类 14.3.2 自定义活动行为工厂类 14.3.3 替换默认活动行为工厂类 14.4 任务节点处理人多元化配置 14.4.1 任务处理人扩展 14.4.2 自定义任务解析器 14.4.3 自定义任务行为类 14.4.4 自定义活动行为工厂类 14.5 忽略节点使用误区 14.6 修复Activiti忽略节点Bug 14.7 修复Activiti子流程业务键Bug 15. Activiti存储之MyBatis 15.1 初始化dataSource 15.2 Activiti数据访问层关系分析 15.2.1 实体类与数据库的映射 15.2.2 实例化SqlSessionFactory 15.3 自定义Mapper实战 15.3.1 自定义Mapper 15.3.2 自定义SQL执行原理 15.4 SessionFactory 15.4.1 初始化SessionFactory 15.4.2 SessionFactory架构 15.5 Session 15.5.1 Session架构 15.5.2 实例化方式创建Session实例 15.5.3 反射方式创建Session实例 15.5.4 实例化DbSqlSession 15.6 SQL语句 15.6.1 SQL语句适配器 15.6.2 SQL执行id值生成规则 15.7 数据层和数据的关系 15.7.1 PersistentObject业务对象 15.7.2 实体管理类 15.8 添加会话缓存 15.9 更新操作 15.9.1 会话缓存方式更新 15.9.2 SqlSession方式更新 15.10 删除操作 15.10.1 DeleteOperation接口 15.10.2 BulkDeleteOperation删除数据 15.10.3 CheckedDeleteOperation删除数据 15.10.4 乐观锁 15.11 刷新会话缓存入口 15.12 会话缓存数据持久化 15.12.1 移除不必要数据 15.12.2 刷新序列化变量 15.12.3 获取更新对象 15.12.4 刷新数据 15.12.5 解决依赖数据插入先后顺序 15.12.6 性能优化 16. 实战 16.1 高并发id生成器 16.1.1 id生成器初始化 16.1.2 自增id生成器 16.1.3 自定义主键生成器 16.2 变量类型 16.2.1 初始化变量管理类 16.2.2 变量管理类架构 16.2.3 变量处理类 16.2.4 自定义变量处理类 16.3 ServiceLoader方式注入配置器 16.4 节点跳转 16.4.1 常规节点跳转 16.4.2 分支节点跳转 16.4.3 多实例节点跳转 16.5 会签 16.5.1 串行多实例 16.5.2 认领和归还任务 16.5.3 代理任务 16.5.4 并行多实例 16.5.5 加签 16.5.6 减签和退签 16.6 会签节点自定义权重实现 16.6.1 定义处理人权重 16.6.2 获取权重信息并自动计算 16.6.3 优化建议 16.7 接管Activiti 16.7.1 接管Activiti映射文件 16.7.2 禁用用户表和组表 16.7.3 自定义用户角色和部门表 16.7.4 扩展任务节点参与者表 16.7.5 自定义任务节点参与者命令类 16.7.6 流程文档支持设置部门属性 16.7.7 解析及运用流程文档部门属性 16.7.8 自定义代办SQL 16.8 接管Activiti实体管理类
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.