引言
商品审批流程旨在确保商品信息的准确性和合规性,贯穿商品从草稿创建到最终上线的全过程。其核心目的是通过标准化的审批机制,提升商品管理的效率和透明度。本文将深入探讨商品审批流程的设计原理、系统交互、异常处理机制,以及商品核心系统如何通过抽象模板处理各种业务流程。
一、系统架构与交互
商品审批流程涉及三个核心系统:门户系统、商品核心系统和审批系统。各系统功能及交互如下:
系统 | 作用 | 接口 |
---|---|---|
门户系统 | 作为用户交互的前端界面,提供草稿管理、提交审批等功能。 | 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: 审批流系统是一个独立的系统,我们只列举基本功能,我们就不细节展开讲了
1.4 业务操作系统交互时序图
1.5 业务系统审批流程相关表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.3 设计模式
在草稿处理系统中,我们主要使用了以下设计模式:
模板方法模式(Template Method Pattern)
模板方法模式 是一种行为设计模式,它允许你定义一个操作中的算法骨架,而将一些步骤延迟到子类中实现。这使得你可以通过继承、重用 业务模版公共部分,同时允许子类通过覆盖特定步骤来自定义特殊业务的行为。
- 接口(
DraftPostProcessHandler
):定义了草稿处理的行为,包括afterSave
、afterDelete
、afterSubmit
和afterAudit
方法。 - 抽象类(
AbstraceBasePostProcessHandler
):提供了这些方法的默认实现,但没有实现接口。它定义了通用的逻辑框架,但允许子类扩展或覆盖这些方法。 - 具体实现类(
CreateProductDraftPostProcessHandler
):继承了AbstraceBasePostProcessHandler
并实现了DraftPostProcessHandler
接口。它可以选择性地重写父类中的方法,以提供特定的实现逻辑。
工厂模式(Factory Pattern)
工厂模式 是一种创建型设计模式,它提供了一种创建对象的最佳方式。通过工厂模式,可以在不指定具体类的情况下创建一系列相关或依赖对象。
- 工厂类(
DraftPostProcessHandlerFactory
):负责创建和管理不同类型的处理器实例。 - 容器(
container
):一个映射表,将DraftType
和对应的处理器实例关联起来。 - 获取处理器(
getHandler
):根据传入的类型返回对应的处理器实例。如果容器为空,则初始化所有处理器实例并填充到容器中。
2.4 类图表示
以下是草稿处理系统的设计类图:
草稿内容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;
}
}
通过上述设计模式和架构,我们能够灵活地处理草稿和审批的关系,确保系统的扩展性和可维护性。
异常处理机制
审批流程中可能出现的异常情况包括网络故障、数据不一致、审批超时等。以下为异常处理策略:
- 重试机制:对于网络故障等临时性问题,设置合理的重试次数和间隔。
- 补偿续作操作:对于数据不一致问题,通过补偿操作确保数据最终一致性。
- 作废操作:有些数据确实无法修补,或者无关紧要,我们可以忽略该异常数据,并记录日志。后续重新再次发起
- 告警通知:对于严重异常,及时通知相关人员进行处理。
异常处理流程图
审批流程的监控与优化
通过监控审批流程的性能指标(如审批时长、任务积压情况等),可以及时发现瓶颈并进行优化。以下为优化建议:
- 监控流程:针对某些流程长时间处于在途审批 未归档,增加预警通知,提供工作人员及时处理待办流程.
- 自动化审批:引入机器人流程自动化(RPA)技术,自动化处理简单审批任务。
- 驳回后重新发起:驳回后重新发起,判断修改表单字段,从而动态确定审批路线,比如是否可以直达上次的驳回节点,减少重复审批。 通过优化商品审批流程,缩短平均审批时长,显著提升了商品审批效率
未来展望
随着技术的不断进步,商品审批流程将向智能化、自动化方向发展。未来可能的技术创新包括:
- AI辅助审批:利用机器学习技术,实现智能审批。
- 区块链技术:确保审批流程的透明性和不可篡改性。
- 云原生架构:提升系统的弹性和扩展性。
结论
商品审批流程的设计与优化是企业提升运营效率的关键环节。通过合理的系统架构设计、抽象模板的应用、异常处理机制的完善以及持续的监控与优化,可以显著提升审批流程的效果。希望本文的探讨能够为读者在实际工作中提供有益的参考。