商品审批流设计与优化

Published on
读完预计耗时2 mins
––– 看过

引言

商品审批流程旨在确保商品信息的准确性和合规性,贯穿商品从草稿创建到最终上线的全过程。其核心目的是通过标准化的审批机制,提升商品管理的效率和透明度。本文将深入探讨商品审批流程的设计原理、系统交互、异常处理机制,以及商品核心系统如何通过抽象模板处理各种业务流程。

一、系统架构与交互

商品审批流程涉及三个核心系统:门户系统商品核心系统审批系统。各系统功能及交互如下:

系统作用接口
门户系统作为用户交互的前端界面,提供草稿管理、提交审批等功能。saveDraft 保存草稿, submitDraft 提交草稿 ,queryDraftList 查询草稿列表 ,queryDraftDetail 查询草稿详情
商品核心系统处理各类业务审批数据,负责核心业务逻辑,数据的组装,保存更新草稿、请求审批系统、监听审批系统MQ、执行具体的业务数据流操作等saveDraft 保存草稿, submitDraft 提交草稿 ,queryDraftList 查询草稿列表 ,queryDraftDetail 查询草稿详情
审批系统创建和管理审批流程,包括审批节点配置、提交、审批、驳回、抄送等操作。,查询表单明细,查询审批日志等提交,审批,驳回,抄送 ,查询表单form详情 ,查询审批记录

1.1 门户系统

门户系统 至少应该提供以下几个接口

  • saveDraft 保存草稿
  • submitDraft 提交草稿
  • queryDraftList 查询草稿列表
  • queryDraftDetail 查询草稿详情

1.2 商品核心系统

除了这些接口外

  • saveDraft 保存草稿
  • submitDraft 提交草稿
  • queryDraftList 查询草稿列表
  • queryDraftDetail 查询草稿详情

商品核心系统承上启下,需要和门户系统、审批系统进行交互

1.3 审批系统(泛微)

泛微审批

  • 编排审批节点,配置审批人员等
  • 提交、审批、驳回、抄送
  • 查询表单form详情
  • 查询审批记录

ps: 审批流系统是一个独立的系统,我们只列举基本功能,我们就不细节展开讲了

image-20250418225754845

image-20250418225837201

1.4 业务操作系统交互时序图

业务操作系统交互时序图

1.5 业务系统审批流程相关表ER

草稿审批ER图

    -- 草稿数据表
    select  * from t_sku_draft;
    select  * from t_workflow_subject;
    select  * from t_workflow_subject_detail;
    -- 发起审批记录结果
    select  * from t_audit_info order by id desc;
    select  * from t_audit_detail order by id desc;
    select  * from t_audit_record order by id desc;
    -- 提交成功 回写requestId:
    select  * from t_sku_draft ;
    select  * from t_workflow_subject;

     -- 接收各个节点的 审批结果记录
    select  * from t_workflow_record order by record_id desc;
    -- 审批mq消息
    select * from t_mq_consumer_info;
    -- 消息消费重试
    select * from t_mq_consumer_retry_log;

二、流程审批的设计模式与架构

2.1 草稿处理流程

草稿处理流程通常包括保存、删除、提交和审批4种操作。我们通过以下步骤来处理草稿和审批的关系:

保存草稿

用户创建或更新草稿时,调用 afterSave 方法。系统会根据草稿类型调用相应的处理器进行处理。

删除草稿

用户删除草稿时,调用 afterDelete 方法。系统会根据草稿类型调用相应的处理器进行处理。

提交草稿

用户提交草稿进行审批时,调用 afterSubmit 方法。系统会根据草稿类型调用相应的处理器进行处理。

审批草稿

审批完成后,调用 afterAudit 方法。系统会根据草稿类型调用相应的处理器进行处理。

2.2 草稿状态机

草稿的状态机2

2.3 设计模式

在草稿处理系统中,我们主要使用了以下设计模式:

模板方法模式(Template Method Pattern)

模板方法模式 是一种行为设计模式,它允许你定义一个操作中的算法骨架,而将一些步骤延迟到子类中实现。这使得你可以通过继承、重用 业务模版公共部分,同时允许子类通过覆盖特定步骤来自定义特殊业务的行为。

  • 接口(DraftPostProcessHandler:定义了草稿处理的行为,包括 afterSaveafterDeleteafterSubmitafterAudit 方法。
  • 抽象类(AbstraceBasePostProcessHandler:提供了这些方法的默认实现,但没有实现接口。它定义了通用的逻辑框架,但允许子类扩展或覆盖这些方法。
  • 具体实现类(CreateProductDraftPostProcessHandler:继承了 AbstraceBasePostProcessHandler 并实现了 DraftPostProcessHandler 接口。它可以选择性地重写父类中的方法,以提供特定的实现逻辑。

工厂模式(Factory Pattern)

工厂模式 是一种创建型设计模式,它提供了一种创建对象的最佳方式。通过工厂模式,可以在不指定具体类的情况下创建一系列相关或依赖对象。

  • 工厂类(DraftPostProcessHandlerFactory:负责创建和管理不同类型的处理器实例。
  • 容器(container:一个映射表,将 DraftType 和对应的处理器实例关联起来。
  • 获取处理器(getHandler:根据传入的类型返回对应的处理器实例。如果容器为空,则初始化所有处理器实例并填充到容器中。

2.4 类图表示

以下是草稿处理系统的设计类图:

草稿内容Processor

草稿processor类图

提交审批系统Processor

提交审批处理器类图

2.5 工厂模式的具体实现

DraftPostProcessHandlerFactory 使用工厂模式来创建不同的处理器实例:

  • 初始化处理器:在工厂类中,根据 DraftType 初始化不同的处理器实例。
  • 获取处理器:根据传入的类型返回对应的处理器实例。
public class DraftPostProcessHandlerFactory {

    private Map<DraftType, DraftPostProcessHandler> container = new HashMap<>();
    private Lock lock = new ReentrantLock();

    public DraftPostProcessHandler getHandler(Integer type) {
        if (this.container.size() == 0) {
            lock.lock();
            try {
                if (this.container.size() == 0) {
                    // 初始化所有处理器实例
                    this.container.put(DraftType.SKU_NEW, newStandardProductDraftHandler);
                    this.container.put(DraftType.TEMP_PURCHASER_PRICE, purchasePriceAdjustDraftHandler);
                    this.container.put(DraftType.TEMP_SELLER_PRICE, salePriceAdjustDraftHandler);
                    this.container.put(DraftType.COMPOSITE_SKU_NEW, newCompositeProductDraftHandler);
                    // 其他处理器实例
                }
            } finally {
                lock.unlock();
            }
        }
        if (this.container.containsKey(DraftType.getByValue(type))) {
            return this.container.get(DraftType.getByValue(type));
        }
        return defaultDraftHandler;
    }
}

通过上述设计模式和架构,我们能够灵活地处理草稿和审批的关系,确保系统的扩展性和可维护性。

异常处理机制

审批流程中可能出现的异常情况包括网络故障、数据不一致、审批超时等。以下为异常处理策略:

  1. 重试机制:对于网络故障等临时性问题,设置合理的重试次数和间隔。
  2. 补偿续作操作:对于数据不一致问题,通过补偿操作确保数据最终一致性。
  3. 作废操作:有些数据确实无法修补,或者无关紧要,我们可以忽略该异常数据,并记录日志。后续重新再次发起
  4. 告警通知:对于严重异常,及时通知相关人员进行处理。

异常处理流程图

异常处理流程图

审批流程的监控与优化

通过监控审批流程的性能指标(如审批时长、任务积压情况等),可以及时发现瓶颈并进行优化。以下为优化建议:

  1. 监控流程:针对某些流程长时间处于在途审批 未归档,增加预警通知,提供工作人员及时处理待办流程.
  2. 自动化审批:引入机器人流程自动化(RPA)技术,自动化处理简单审批任务。
  3. 驳回后重新发起:驳回后重新发起,判断修改表单字段,从而动态确定审批路线,比如是否可以直达上次的驳回节点,减少重复审批。 通过优化商品审批流程,缩短平均审批时长,显著提升了商品审批效率

未来展望

随着技术的不断进步,商品审批流程将向智能化、自动化方向发展。未来可能的技术创新包括:

  • AI辅助审批:利用机器学习技术,实现智能审批。
  • 区块链技术:确保审批流程的透明性和不可篡改性。
  • 云原生架构:提升系统的弹性和扩展性。

结论

商品审批流程的设计与优化是企业提升运营效率的关键环节。通过合理的系统架构设计、抽象模板的应用、异常处理机制的完善以及持续的监控与优化,可以显著提升审批流程的效果。希望本文的探讨能够为读者在实际工作中提供有益的参考。