# sad-programmer **Repository Path**: Mark_iu/sad-programmer ## Basic Information - **Project Name**: sad-programmer - **Description**: 可悲的程序员 - **Primary Language**: Java - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2024-09-14 - **Last Updated**: 2025-12-26 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # sad-programmer #### 介绍 可悲的程序员 #### 软件架构 软件架构说明 #### 安装教程 #### 使用说明 流程化引擎 核心业务分析 本地事务和RPC的处理 ● 方案1 和本地事务绑定在一起 ○ 在事务中执行rpc可能会导致长事务,同时也会出现本地事务回滚,工作流出现一个不可用的实例对象 ● 方案2 以工作流的执行结果为准 ○ 代码层面需要做额外的逻辑来保证数据一致 审核流程 关键步骤 1. 过滤出本系统需要处理的工作流(公共能力,涉及到各个系统的消息,所以可能接受到其他系统的消息) 2. 定位到具体业务的具体方法,这块可以用策略模式 3. 业务的处理,关联申请表、单据表、指令表的处理 4. 指令的执行和异常的处理 Flow的执行器FlowExecutor FLow和Node的映射关系可通动态的配置从配置中心获取,前提是当前容器存在对应的节点bean 故,定义注解 @NodeConfig FlowConfiguration配置类在容器实例化,所有的依赖注入完成后,拿到所有的@NodeConfig的节点bean对象后,通过FLow和Node的映射关系,放到内存中。 定义节点的抽象模版类AbstractNode 通用调下游节点的模版方法execute() 流程执行前 DepositApplyCore.updateState(),applyNo:3eda64c86b1d47069e2fb98851b1fe2d,targetSate:PASSING,state:APPROVE 初始化上下文 DepositApplyCore.initBaseContext(),applyNo:3eda64c86b1d47069e2fb98851b1fe2d 节点执行前 ApplyFlowExecutor.preContextCheck() methodName:{}OpenAccount 节点的执行 OpenAccNode.executeBusinessLogic() request: deposit_open_account 节点的执行后 ApplyFlowExecutor.afterExecute(),methodName:OpenAccount ,runningEnum:null ...... 流程的执行后 DepositApplyCore.afterExecute() 待扩展优化点 ● 当前节点对整个流程的影响 ● 节点执行的前置条件,执行模式 ● 系统的健壮性:对未知状态的流程的推进(补偿任务) 对异常场景的处理