有关于简道云模式选择的思考
简道云与企业微信集成技术方案
项目背景
为弥补现有OA主开发工具(IM及PowerApps)在手机端能力的不足,公司计划引入一款可与当前系统形成互补的低代码开发平台。目前OA开发平台主要服务于已拥有M365账户的用户,而简道云的导入能够面向尚未覆盖的产线员工,快速构建轻量化移动端应用,实现全员移动化协同。该平台在开发效率与成本控制方面优势明显,一方面为后续IT资源优化提供灵活空间,另一方面可快速响应业务部门需求,实现流程优化与效率提升。本方案即围绕简道云与企业微信的集成落地展开,确保新平台与现有IT生态无缝对接,充分发挥移动化、低代码的互补价值。
集成模式对比分析
公共模式 (Public Mode)
优势:
- ✅ 人员通过邮箱验证后可直接使用流程邮件通知功能
- ✅ 邮件通知功能开箱即用,无需额外开发
劣势:
- ❌ 企业微信集成需要额外开发单点登录(SSO)功能
- ❌ 需要实现企业微信通讯录同步机制
- ❌ 无法直接使用企业微信消息通知功能,需要定制开发
企业微信模式 (WeChat Work Mode)
优势:
- ✅ 无需开发单点登录,直接同步企业微信人员信息
- ✅ 开箱即用的企业微信消息通知功能
- ✅ 人员管理与企业微信原生集成
劣势:
- ❌ 不支持邮件通知功能,需要额外开发实现
技术决策
基于两种模式都需要额外开发才能同时支持企业微信通知和邮件通知的前提,选择优势更多的企业微信模式作为开发方案,原因如下:
- 开发成本更低:避免单点登录和通讯录同步的复杂开发
- 用户体验更好:与企业微信原生集成,用户无需额外操作
- 维护更简单:减少系统间的耦合度
- 扩展性更强:基于企业微信生态更容易扩展其他功能
系统架构与数据流向
整体架构图
flowchart TD
RMC["RMC服务器 (Python应用)<br>核心处理服务"]
JW[企业微信平台]
JD[简道云平台]
DB[("东宝人事数据库<br>内网 SQL Server")]
Mail[邮件服务器 SMTP]
%% 数据准备流程 (低频定时任务)
RMC -- "① 获取通讯录数据<br>出站规则: 443/TCP → JD" --> JD
RMC -- "② 映射用户工号<br>出站规则: 443/TCP → JW" --> JW
RMC -- "③ 内网数据查询<br>无需防火墙规则" --> DB
RMC -- "④ 回传处理数据<br>出站规则: 443/TCP → JD" --> JD
%% 消息处理流程 (实时Webhook)
JD -- "Webhook 通知推送<br>入站规则: 443/TCP ← JD" --> RMC
RMC -- "⑤ 验证用户数据<br>无需防火墙规则" --> DB
RMC -- "⑥ 发送邮件通知<br>出站规则: 25/587/TCP → Mail" --> Mail
%% 样式区分
linkStyle 0,3 stroke:green,stroke-width:2px,color:green;
linkStyle 1 stroke:blue,stroke-width:2px,color:blue;
linkStyle 2,4 stroke:orange,stroke-width:3px,color:orange;
linkStyle 5 stroke:red,stroke-width:2px,color:red;
详细处理流程
数据准备流程 (低频定时任务)
flowchart LR
subgraph 数据准备 [数据准备流程 - 低频定时任务]
direction LR
A1[RMC服务器: 定时任务触发]
A2["调用简道云API<br>获取通讯录数据"]
A3["调用企业微信API<br>用户工号映射"]
A4["直连内网SQL Server<br>查询人事数据"]
A5[数据存入本地缓存]
A6["回传处理数据至简道云"]
A1 --> A2 --> A3 --> A4 --> A5 --> A6
end
subgraph 消息处理 [消息处理流程 - 高频实时Webhook]
direction LR
B1[简道云: 表单事件触发]
B2["Webhook POST请求<br>至RMC服务器"]
B3[RMC服务器: 立即返回200]
B4[异步任务: 查询本地缓存]
B5["异步任务: 验证用户数据<br>直连内网数据库"]
B6[发送邮件通知]
B7[记录操作日志]
B1 --> B2 --> B3 --> B4 --> B5 --> B6 --> B7
end
%% 失败处理流程
B5 -. "数据验证失败" .-> A3
%% 外部系统关联
A2 -.-> JD_API[简道云API]
A3 -.-> JW_API[企业微信API]
A4 -.-> DB[内网东宝数据库]
A6 -.-> JD_API2[简道云API]
B2 -.-> JD_Webhook[简道云Webhook]
B5 -.-> DB2[内网东宝数据库]
B6 -.-> Mail[邮件服务器]
classDef default fill:#e6f3ff,stroke:#333,stroke-width:1px;
classDef process fill:#fff9e6,stroke:#333,stroke-width:1px;
classDef system fill:#e6ffe6,stroke:#333,stroke-width:1px;
class A1,A2,A3,A4,A5,A6,B1,B2,B3,B4,B5,B6,B7 process;
class JD_API,JW_API,DB,JD_API2,JD_Webhook,DB2,Mail system;
防火墙配置需求
出站规则 (Outbound Rules)
- 443/TCP → 简道云API:获取通讯录数据和回传处理结果
- 443/TCP → 企业微信API:用户工号映射和消息推送
- 25/587/TCP → 邮件服务器:发送邮件通知
入站规则 (Inbound Rules)
- 443/TCP ← 简道云:接收Webhook通知推送
内网通信
- 无需防火墙规则:内网数据库查询和数据验证
技术实现要点
1. 缓存机制
- 使用本地缓存存储用户映射关系
- 减少API调用频率,提升性能
- 定时任务自动更新缓存数据
2. 异步处理
- Webhook请求立即返回200响应
- 消息处理采用异步任务机制
- 确保系统响应速度和稳定性
3. 错误处理
- 数据验证失败时重新触发映射流程
- 完善的日志记录和监控机制
- 重试机制保障消息可靠性
4. 安全考虑
- API调用使用HTTPS加密
- 敏感数据加密存储
- 访问权限严格控制
部署架构
服务器要求
- RMC服务器:Python应用服务器,处理核心业务逻辑
- 数据库服务器:内网SQL Server,存储人事数据
- 邮件服务器:SMTP服务,发送通知邮件,目前使用日本提供的服务,后续可能需要迁移
网络要求
- 外网访问简道云和企业微信API
- 内网访问人事数据库
- 防火墙按需开放指定端口
性能考量
处理能力
- 低频任务:定时数据同步,每天数次
- 高频任务:实时消息处理,支持并发请求
- 批量处理:支持批量用户映射和通知
扩展性
- 水平扩展支持增加处理节点
- 缓存机制支持大规模用户
- 异步架构支持高并发场景
监控与维护
监控指标
- API调用成功率
- 消息处理延迟
- 系统资源使用情况
- 错误率和重试次数
维护任务
- 定期检查缓存数据有效性
- 监控API配额使用情况
- 日志分析和问题排查
- 系统性能优化
风险评估与应对
技术风险
-
API服务稳定性:简道云或企业微信API不可用
- 应对:实现重试机制和降级处理
-
网络连通性:内外网通信中断
- 应对:网络监控和自动告警
-
数据一致性:缓存与源数据不一致
- 应对:定期数据同步和验证
业务风险
-
通知延迟:邮件发送延迟影响业务
- 应对:优先级处理和监控告警
-
用户映射错误:简道云数据删除导致工号映射不正确
- 应对:数据验证和人工审核机制
部署架构
服务器清单——RMC外网接口服务器
- 核心软件:Miniforge + Nginx + PostgreSQL
- 主要功能:API接口、Webhook处理、用户映射、邮件服务器调用

浙公网安备 33010602011771号