产品父子流程技术方案设计
一、整体设计
根据业务需求分析,产品涉及法人代表及实控人风控决策流程调用,旨在降低风险,提高行内线上贷款业务风险决策的能力。
二、业务流程
1.业务流程图
2.交易流程
在授信交易切面入口处对法人代表及实控人进行逻辑判断,根据不同产品的流程要求进行分发处理;
- 该系列产品:
- 在切面入口处进行判断并添加借款人(实控人、主流程)、共借人(法人代表、子流程)标识,并实现分发,逻辑如下:
- 法人代表与实控人一致,只跑实控人流程,交易采用决策输出结果;
- 法人代表与实控人不一致:
- 先跑法人代表流程,若拒绝,流程结束,采用法人代表决策输出结果;
- 后跑实控人流程(实控人挂起,等待法人代表流程完成后继续流程),采用实控人决策输出结果;
- 注释:先轮询共借人流程,保证主流程能挂起,防止子流程执行过快,主流程未挂起时出现异常;
三、数据库设计
-
1.表设计
- xxx_trans 表
- 新增 trans_entity_type 字段 ; 交易主体类型:0 主借人,1共借人;
- xxx_trans 表
-
2. 流水号设计
- apply_id 字段
- 主借人(该产品指法人代表)存上游上送的流水号;
- 示例:MSN12937483274320
- 共借人(该产品指实控人)存上游上送的流水号;
- 示例:MSN12937483274320
- 主借人(该产品指法人代表)存上游上送的流水号;
- apply_id 字段
四、接口设计
1.抽象Special服务节点
- 封装SpecialInterceptor
- serviceCode 配置为产品编号
- 该系列产品需抽象为 ZhongHua_Pro (支持所有该配置的产品)
- serviceCode 配置为产品编号
2.Special服务实现-调用
- 封装子流程通用接口数据服务
- AbstractProduct 抽象 doServiceInvoke 方法并提供默认实现;
- ZhongHua_Pro 子流程通用服务 -> 同 MSN010实现,并重写 doServiceInvoke 抽象方法;
- 先查询子流程完成,后继续;若查不到子流程数据,生成子流程数据,继续挂起,等待子流程完成后回调
- 实现主流程挂起,子流程继续处理;
- 实现子流程完成后,继续主流程;
3.回调前置处理接口
- AbstractProduct 类提供 doAfterInvoke 返回标识,据此标识判断是否继续回调上游,默认返回回调标识;
4.Special服务实现-回调
- ZhongHua_Pro 类重写 doAfterInvoke 实现,根据主流程及子流程完成回调标识组装,并MQ通知 ZhongHua_Pro 类 doServiceInvoke 方法,继续主流程(先查询子流程完成,后继续;若查不到子流程数据,生成子流程数据,继续挂起,等待子流程完成后回调);
5.扩展设计
- 若部分产品需要汇总子流程数据信息,或有多个子流程需要判断完成,可在 doServiceInvoke 中做扩展实现。
五、非功能性需求
无
1.系统性能指标
当前生产硬件资源满足本次改造,不影响系统吞吐量;
2.数据安全
采用原有的加密、鉴权处理方案;
3.异常处理
主流程异常
- 支持流程重推
- 存在子流程
- 子流程未完成,流程重推子流程,主流程等待回调;
- 子流程已完成,流程重推主流程;
- 不存在子流程
- 在Special服务实现(ZhongHua_Pro 类)中做兼容;或同当前异常处理机制;
- 存在子流程
子流程异常
- 支持流程重推
- 子流程重推,完成后回调主流程;
4.涉及模块
- xxl-job
- 产品交易人工重推
- AbstractProduct 中 doBeforeInvoke重写、doAfterInvoke 改造
- 新增Special服务实现(ZhongHua_Pro 类)
5.部署环境
- Special两台节点
六、技术风险点
涉及改造为公共交易处理模块,需要详尽测试,及抽样产品回归测试;
七、上线流程
投产操作流程
- 脚本
- 应用部署(Nacos渐入渐出)
- 配置缓存清理
八、回滚方案
- 脚本回退
- 重新部署上个版本jar包