产品父子流程技术方案设计

news2024/11/25 4:43:01

产品父子流程技术方案设计

一、整体设计

根据业务需求分析,产品涉及法人代表及实控人风控决策流程调用,旨在降低风险,提高行内线上贷款业务风险决策的能力。

二、业务流程

1.业务流程图

在这里插入图片描述

2.交易流程

在授信交易切面入口处对法人代表及实控人进行逻辑判断,根据不同产品的流程要求进行分发处理;

  • 该系列产品:
  • 在切面入口处进行判断并添加借款人(实控人、主流程)、共借人(法人代表、子流程)标识,并实现分发,逻辑如下:
    • 法人代表与实控人一致,只跑实控人流程,交易采用决策输出结果;
    • 法人代表与实控人不一致:
      • 先跑法人代表流程,若拒绝,流程结束,采用法人代表决策输出结果;
    • 后跑实控人流程(实控人挂起,等待法人代表流程完成后继续流程),采用实控人决策输出结果;
  • 注释:先轮询共借人流程,保证主流程能挂起,防止子流程执行过快,主流程未挂起时出现异常;

三、数据库设计

  • 1.表设计

    • xxx_trans 表
      • 新增 trans_entity_type 字段 ; 交易主体类型:0 主借人,1共借人;
  • 2. 流水号设计

    • apply_id 字段
      • 主借人(该产品指法人代表)存上游上送的流水号;
        • 示例:MSN12937483274320
      • 共借人(该产品指实控人)存上游上送的流水号;
        • 示例:MSN12937483274320

四、接口设计

1.抽象Special服务节点

  • 封装SpecialInterceptor
    • serviceCode 配置为产品编号
      • 该系列产品需抽象为 ZhongHua_Pro (支持所有该配置的产品)

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包

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/383758.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Spark性能优化三 checkpoint

(一)checkpoint介绍 checkpoint,是Spark提供的一个比较高级的功能。有时候,我们的Spark任务,比较复杂,从初始化RDD开始,到最后整个任务完成,有比较多的步骤,比如超过10个…

关于flex盒子padding-right/margin-right不生效

错误代码实例&#xff1a; <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta http-equiv"X-UA-Compatible" content"IEedge"><meta name"viewport" content"width…

论文投稿指南——中文核心期刊推荐(科学、科学研究)

【前言】 &#x1f680; 想发论文怎么办&#xff1f;手把手教你论文如何投稿&#xff01;那么&#xff0c;首先要搞懂投稿目标——论文期刊 &#x1f384; 在期刊论文的分布中&#xff0c;存在一种普遍现象&#xff1a;即对于某一特定的学科或专业来说&#xff0c;少数期刊所含…

element input 输入框校验

element input 输入框校验 很久之前有写过一篇&#xff1a;element 输入框只可以输入正整数 在这里对它进行补充 校验input输入框是否符合 以下是常用的一些&#xff1a; 限制输入中文&#xff1a;/^[\u4e00-\u9fa5]$/ const checkName (rule, value, callback) > {if…

逆约瑟夫问题

约瑟夫问题可以说十分经典&#xff0c;其没有公式解也是广为人知的~ 目录 前言 一、约瑟夫问题与逆约瑟夫问题 1.约瑟夫问题 2.逆约瑟夫问题 二、思考与尝试&#xff08;显然有很多失败&#xff09; 问题分析 尝试一&#xff1a;递归/递推的尝试 尝试二&#xff1a;条件…

Doris入门篇-分区分桶实验

简介 测试分区分桶效果。 分区的基本操作 添加分区 ALTER TABLE v2x_olap_database.government_car ADD PARTITION p20221203 VALUES LESS THAN ("2022-12-04");动态分区表不能添加分区&#xff0c;需要转为手动分区表。 查看分区 show partitions from <表…

【深度估计】单目深度估计

文章目录什么是深度估计&#xff1f;什么是视差深度估计与三维重建单目深度估计研究历程单目深度估计方法传统方法基于线索线性透视聚焦/散焦度天气散射阴影纹理遮挡高度运动线索基于物体自身运动基于摄像机的运动基于机器学习参数学习方法开创性工作改进加入语义信息条件随机场…

《工业机器视觉检测123》(1.1) 目标检测样本类别不平衡的问题(持续更新...)

部分内容转载自&#xff1a;https://www.cnblogs.com/inchbyinch/p/12642760.html 参考分类任务中解决类别不平衡的办法&#xff1a; 1 什么是类别不平衡问题&#xff1f; 类别不平衡&#xff08;class-imbalance&#xff09;&#xff0c;也叫数据倾斜&#xff0c;数据不平衡…

Tomcat面试问题总结

1.Tomcat是什么&#xff1f;Tomcat 服务器Apache软件基金会项目中的一个核心项目&#xff0c;是一个免费的开放源代码的Web 应用服务器&#xff0c;属于轻量级应用服务器&#xff0c;在中小型系统和并发访问用户不是很多的场合下被普遍使用&#xff0c;是开发和调试JSP 程序的首…

EasyCVR视频融合平台的视频处理与AI智能分析流程实操案例介绍

EasyCVR基于云边端一体化架构&#xff0c;能支持海量视频的轻量化接入与汇聚管理。在视频能力上&#xff0c;可提供视频监控直播、视频轮播、视频录像、云存储、回放与检索、智能告警、服务器集群、语音对讲、云台控制、电子地图、平台级联等。 除了视频能力之外&#xff0c;将…

浅谈设备防漏扫

场景描述 随着社会的信息化&#xff0c;互联网安全被国家越来越重视&#xff0c;漏洞扫描&#xff08;简称漏扫&#xff09;业务也在被规范列入企事业单位的信息安全的标准中。 从安全角度来看&#xff0c;漏扫本身是为用户的用网安全做保障&#xff0c;避免木马、病毒等通过…

vue中点击空白处改变dom状态实现显隐,监听dom(addEventListener)

需求来源&#xff1a;点击铃铛之后弹出右侧抽屉&#xff0c;实现文件下载 现在是点击小铃铛出现弹框没问题&#xff0c;点击关闭图标关闭弹框也没问题&#xff0c;但是点击空白区域消失不了&#xff0c;这个时候需要dom监听属性document.addEventListener来实现需求了 主要是用…

c++学习笔记之基础

目录前言零碎知识点C核心内存分区引用函数类和对象对象的初始化和清理构造函数和析构函数构造函数的分类和调用拷贝构造函数的调用时机深拷贝与浅拷贝初始化列表类对象作为类的成员静态成员C对象模型和this指针成员变量和成员函数分开存储this指针空指针访问成员函数const修饰成…

IDEA2022 配置spark开发环境

本人强烈建议在 linux环境下 学习 spark&#xff01;&#xff01;&#xff01; Introduction Apache Spark是一个快速且通用的分布式计算引擎&#xff0c;可以在大规模数据集上进行高效的数据处理&#xff0c;包括数据转换、数据清洗、机器学习等。在本文中&#xff0c;我们将…

NDK C++ map容器

map容器// TODO map容器 #include <iostream> #include <map>using namespace std;int main() {// TODO map<int, string>按key值排序&#xff0c;同一个key不可以重复插入map<int, string> map1;map1.insert(pair<int, string>(1, "111&qu…

ChatGPT没有API?OpenAI官方API带你起飞

目录ChatGPT没有API&#xff1f;OpenAI官方API带你起飞安装 OpenAI 的 API 库包装个函数包装个UIChatGPT没有API&#xff1f;OpenAI官方API带你起飞 前段时间ChatGPT爆火&#xff0c;OpenAI 的 GPT API也被大家疯狂调用&#xff0c; 但其实这个API是基于GPT3的&#xff0c;和基…

【RabbitMQ】Producer之mandatory、alternative exchange、TTL - 基于AMQP 0-9-1(一)

RabbitMQ系列文章&#xff0c;前几篇介绍了基础概念&#xff0c;AMQP 0-9-1 协议&#xff0c;和服务端安装&#xff0c;准备工作都完成后&#xff0c;就开始着手开发了。这篇文章主要介绍RabbitMQ生产者的开发&#xff0c;包括Producer、Message常见的参数&#xff0c;读完这篇…

20.hadoop系列之Yarn资源调度器

Yarn是一个资源调度平台&#xff0c;负责为运算程序提供服务器运算资源&#xff0c;相当于一个分布式的操作系统&#xff0c;而MapReduce等运算程序则相当于运行于操作系统之上的应用程序 1.Yarn基础架构 Yarn主要由ResourceManager、NodeManager、ApplicationMaster和Contai…

【MySQL】基础操作

数据库的操作 查看所有数据库&#xff1a; SHOW DATABASES;&#xff08;注意这里是 databases&#xff0c;多了个 s&#xff09; mysql 不区分大小写&#xff0c;所以 show databases; 是一样的。 另外&#xff0c;在命令行窗口操作时&#xff0c;可以使用上下方向键调用前面已…

CentOS编译安装Apache

1、下载Apache、apr和apr-util源码包&#xff1a; 2、解压文件&#xff1a; tar -zxvf httpd-2.4.55.tar.gz tar -zxvf apr-util-1.6.3.tar.gz tar -zxvf apr-util-1.6.3.tar.gz mv apr-1.7.2 httpd-2.4.55/srclib/apr mv apr-util-1.6.3 httpd-2.4.55/srclib/apr-util 说明&…