可复用代码设计应用于通用工作流
业务新增审批流业务一项,综合现有业务形态分析己包含多块包含工作任务流的内容,考虑产品侧统一逻辑及优化用户体验,避免重复开发,维护多套相似代码。规划统一任务流类业务通用模块开发,在此次业务小版本落地,并逐步替代现有业务逻辑,以提升团队工作效率
1.摘要
业务新增审批流业务一项,综合现有业务形态分析己包含多块包含工作任务流的内容,考虑产品侧统一逻辑及优化用户体验,避免重复开发,维护多套相似代码。规划统一任务流类业务通用模块开发,在此次业务小版本落地,并逐步替代现有业务逻辑,以提升团队工作效率。
2设计过程
2.1分析多业务业务需求抽出用例模型,在设计上支持通用化需求
| 序号 | 名称 | 核心用例 | 描述 |
| UC-1 | 配置工作流 | O | 支持工作流整体,层级,通过模式等配置 |
| UC-2 | 发起工作流 | O | 发起工作流,初始化数据,处理部分特殊逻辑层级 |
| UC-3 | 提交工作流单元 | O | 提交本级任务单,更新工作流状态,触发层级业务特殊逻辑 |
| UC-4 | 查询待处理工作流单元 | O | 支持处理人查询待处理任务单 |
| UC-5 | 查询工作流详情 | O | 支持查询工作流详情,包括总体状态,各层级状态及流程详情 |
| UC-6 | 查询对应来源工作流 | O | 查询某个来源的任务流,支持对应配置查询总体状态,某类型任务查询及统计 |
| UC-7 | 单元事件处理 | O | 单元事件特殊处理,支持业务相关自定义逻辑 |
| UC-8 | 消息事件末端处理 | O | 末端以消息事件形式进行订阅,支持通知,末端自定义事件等 |
2.2整体分析及设计
分为业务层及工作流层,二者通过工作流模块层门户接口连接。业务层为多个业务逻辑实现。工作流层主要为工作流过程处理,由于需要进行上下文传递,主流程不错采用责任链,主链路始终支持事务,消息等非实物由外部事件到末端处理。并提基础数据统计供业务层

2.3模块细节设计分析
2.3.1工作流程处理
工作流过程处理各级单元,以链式处理完成单元,并且处理该层级自定义业务逻辑,诸如查询更新当前结果
设计细节
设计模式:责任链模式
责任链处理整个单元提交,处理结果及后续异步消息及异步事件通过上下文形式传递到末端地最终事件执行器。处理器在初始化时根据配置形成顺序,入口串行调用,整个过程除去末端外支持事务,保障了过程的原子性

2.3.2事件监听
处理审批事件,完成事件。在业务侧,事件需要审批结果,审批完成时通知等事件处理
设计细节
设计模式:观察者模式,单例
处理单元完成后产生事件,通过事件处理器分发给监听者,任务状态事件山监听者实现任务流状态变化处理。监听者以单例形式注入监听者池

2.3.4单元过程内容处理
单元在处理过程由不同的处理策略以应对不同的业务特殊需求,例如层级单元无人处理后自动走到下一层,或者通知管理者处理等
| 1 | 拒绝即结束 | 单层单元拒绝即结束整个任务流 |
| 2 | 拒绝可持续 | 单层单元拒绝仍持续整个任务流 |
| 3 | 层级单元无处理人阻塞 | 下一层级单元无人处理即阻塞 |
| 4 | 层级单元无处理人阻塞并通知 | 下一层级单元无人处理阻塞并通知管理处理 |
| 5 | 层级单元无处理人自动通过 | 下一层级单元无人处理自动通过并通知下层级 |
设计细节
设计模式:策略模式,装饰器模式,单例
读取该层级配置,根据层级配置来选取不同的策略算法处理下一步执行动作

2.3.5模块入口
提供模块对外交互的入口,隐藏模块内部细节,以达成清晰的交互界面
设计细节
设计模式:外观模式
使用外观模式统一操作入口,业务调用,提供配置,发起,通过,查询等,API模块部协同调用不同的子模块进行处理

3.总结
通过抽象通用流程处理模块,提高工作效率及代码质量,降低工程风险合理化应用设计模式实现模块内部代码复用,并提供充分的可扩展性以适应变化的业务需求。此次模块主要围绕责任链及观察者模式,设计了处理流程及消息处理器,并可应用装饰器、模板、组合等设计模式扩展各层级功能来应对不同业务需求
足够抽象的框架以支撑多样化的业务