前言
在企业级微服务系统开发中,OA办公模块是承载内部协同、流程审批、人员办公管理的基础核心模块。传统自研OA模块普遍存在流程耦合高、审批规则硬编码、权限与办公逻辑混杂、无法动态配置等技术问题,二次迭代与功能拓展成本较高。
EzCloud 单独拆分 ez-cloud-oa 独立插件模块,专门封装组织架构、岗位人员、流程审批、办公公告、日程考勤等通用办公能力,模块完全解耦、可独立插拔,底层封装标准化审批逻辑与权限关联机制,适合作为微服务办公模块的技术参考案例。
1、EzCloud OA模块工程分层结构
OA模块内部采用职责分层设计,各层级互不侵入,结构清晰:
-
oa-org 组织架构层:负责部门、岗位、人员、角色关联数据维护,提供组织维度通用查询接口
-
oa-flow 审批流程层:封装通用审批、自定义流程、节点权限、流转规则核心逻辑
-
oa-biz 办公业务层:承载公告通知、日程管理、待办已办、消息推送等日常办公业务
所有办公相关业务统一收敛至OA模块内部处理,业务系统如需对接审批、人员组织能力,仅通过标准化Feign接口调用,不直接侵入OA底层逻辑。

2、核心源码:通用审批流程动态节点校验实现
OA模块针对企业高频的自定义审批场景,封装了通用流程节点校验与自动流转逻辑,规避传统硬编码流程无法动态适配的问题,核心实现如下:
@Service
public class OaFlowServiceImpl implements OaFlowService {
@Autowired
private OaFlowNodeMapper flowNodeMapper;
@Autowired
private OaFlowRecordMapper flowRecordMapper;
@Override
@Transactional(rollbackFor = Exception.class)
public boolean approveProcess(Long flowId, Long userId, String approveResult) {
// 查询当前流程节点配置
OaFlowNodeDO currentNode = flowNodeMapper.selectByFlowId(flowId);
// 校验当前用户是否拥有节点审批权限
if (!checkNodeAuth(currentNode, userId)) {
throw new BusinessException("当前用户无审批权限");
}
// 更新审批记录状态
OaFlowRecordDO record = new OaFlowRecordDO();
record.setFlowId(flowId);
record.setApprovalUserId(userId);
record.setApproveResult(approveResult);
record.setApproveTime(new Date());
flowRecordMapper.insert(record);
// 判断是否自动流转至下一节点
if (isAutoNextNode(currentNode, approveResult)) {
autoForwardFlow(flowId, currentNode.getNextNodeId());
}
return true;
}
// 节点权限校验逻辑
private boolean checkNodeAuth(OaFlowNodeDO node, Long userId) {
// 支持按角色、部门、岗位多维度权限匹配
return UserAuthUtil.matchOrgAuth(userId, node.getAuthRule());
}
}
代码技术设计亮点
-
审批流程完全配置化实现,无需硬编码流程节点,后台可动态配置审批链路、审批人员、流转条件;
-
支持角色、部门、岗位多维度权限校验,适配企业复杂组织架构审批场景;
-
流程流转与业务解耦,报销、请假、采购审批等场景可复用同一套流程内核;
-
本地事务保障审批记录一致性,避免流程状态错乱、审批记录丢失问题。
3、OA模块核心技术特性
(1)组织与审批解耦设计
组织人员数据独立维护,审批流程仅做权限关联,修改部门、岗位、人员信息不会影响已有审批流程数据,数据稳定性更高。
(2)通用待办消息统一推送
模块内置统一待办、已办、消息提醒机制,所有审批类业务自动归集至个人办公中心,无需业务模块单独开发消息逻辑。
(3)可插拔独立模块设计
OA模块为独立插件,无需办公协同场景可直接移除,不影响ERP、权限、报表等其他业务模块正常运行。
4、二次开发拓展价值
统一封装企业高频办公能力,开发者拓展自定义办公场景时,无需重复开发组织架构、审批流转、消息待办等基础功能;支持自定义审批模板、自定义流转规则,可快速适配各类企业内部协同场景。
总结
EzCloud OA办公模块解决了传统自研办公模块流程固化、代码耦合、拓展性差的技术痛点,以配置化流程、解耦式架构、标准化接口实现轻量化办公协同能力,是微服务体系下办公业务模块开发的优质参考方案。
模块完整源码可参考项目开源仓库对应 OA 模块目录。