当前位置:网站首页>审批流设计
审批流设计
2022-08-03 07:39:00 【yangyanping20108】
审批流系统
在日常企业中,经常涉及员工提交申请单,需要上级领导和多个节点审批通过,驳回,已完成申请单。
实现目标
- 工单自定义模版,需支持用户自定义表单,拖拽式动态生成流转表单,打造低代码平台,降低了研发投入成本,提高整体人效;
- 工单流程需支持用户自定义配置流程,丰富的配置选项,包括流程节点处理人配置、节点操作配置、节点表单模版配置,相对于传统审批流框架更加灵活、修改及时生效,不需要研发修改流程图再发布上线的过程;
- 工单流程需提供丰富的节点处理人配置,包含按照组织部门架构配置处理部门,人员岗位角色和指定人员;
- 工单系统需支持多种处理操作,包括工单提交、工单驳回、工单转交和工单废弃,支持业务方各种工单流转场景;
- 工单系统将表单和流程进行解耦,并将业务表单进行插件化配置,可支持更多业务场景并且不需要对工单系统进行额外开发,只需独立开发业务表单部分,完成业务产品快速上线,提高产品交付效率;
系统设计
系统流程交互
ddd领域模型架构
JSON Schema
使用JSON Schema 自定义申请表单
审批流程
代码实现
Domain领域层设计
目录结构
FlowReq 聚合根类定义
聚合根:
Aggregate是一组相关对象地集合,作为一个整体被外界访问,聚合根是这个聚合地根节点。
聚合是一个非常重要的概念,核心领域往往都需要聚合来表达。其次,聚合在技术上有非常高的价值,可以指导详细设计。聚合由根实体,值对象和实体组成。
/**
* FlowReq Entity
*/
@NoArgsConstructor
public class FlowReq {
/**
* 主键
*/
private Integer id;
/**
* 主配置表(flow_config)编码
*/
private String flowConfigCode;
/**
* 流程申请id
*/
private String reqId;
/**
* 流程名称
*/
private String reqName;
/**
* 流程当前节点编码
*/
private String currentNodeCode;
/**
* 流程状态
*/
private FlowReqStatusEnum flowReqStatus;
/**
* 子流程总数
*/
private Integer subTotal;
/**
* 子流程完成数
*/
private Integer subFinishCount;
/**
* 申请人
*/
private String applyErp;
/**
* 数据
*/
private String data;
/**
* 业务id
*/
private Integer relId;
/**
* 业务类型,1:垂直业务申请,2:水平业务申请,3:水平业务使用申请
*/
private Integer businessType;
private Date createAt;
private String createBy;
private Date modifyAt;
private String modifyBy;
private List<FlowReqNode> flowReqNodes;
private FlowReqNode headFlowReqNode;
public FlowReq(FlowReqSubmitCmd command, String headNodeCode, String headNodeName) {
}
/**
* 提交申请单
*/
public void submit() {
}
/**
* 批准
*/
public void adopt() {
// 申请单是否到终态
if (FlowReqStatusEnum.terminateStatus.contains(flowReqStatus)) {
//throw new FlowReqNoWithdrawException();
}
// 判断是否最后一个节点
}
/**
* 驳回到终节点
*/
public void refuse() {
}
/**
* 撤回
*/
public void withdraw() {
}
public List<FlowReqNode> getFlowReqNodes() {
return flowReqNodes;
}
public String getReqId() {
return reqId;
}
public FlowReqNode getHeadFlowReqNode() {
return headFlowReqNode;
}
}
infrastructure基础设施层设计
目录结构
application 应用层
流程编排
边栏推荐
猜你喜欢
随机推荐
volta管理node版本
mysql 8.0.12 安装配置方法并--设置修改密码
学习Glide 常用场景的写法 +
【C语言】函数栈帧的创建和销毁详解
REST学习
mysql系统变量与状态变量
AI中台序列标注任务:三个数据集构造过程记录
Dapr 与 NestJs ,实战编写一个 Pub & Sub 装饰器
boot - SSE
训练正常&异常的GAN损失函数loss变化应该是怎么样的
进程的创建
解决GANs训练中模式崩塌/训练崩溃的十五个方法
数据库表结构文档 生成工具screw的使用
Arduino框架下对ESP32 NVS非易失性存储解读以及应用示例
Evaluate: A detailed introduction to the introduction of huggingface evaluation indicator module
服务器资源监控工具-nmon、nmon_analyser
Mysql如何对两张表的相同字段,同时查询两张数据表
【图像去雾】基于matlab暗通道和非均值滤波图像去雾【含Matlab源码 2011期】
Logic Pro X自带音色库列表
酷雷曼上新6大功能,全景营销持续加码