OnceOA 企业流程驱动引擎可与微信深度整合,可采用混和云,分布式的方式,实现企业局域网内应用的微信登录、注册、接收流程通知、支付、手机审批、办公等功能。
OnceOA 微信流程消息通知依赖 wechat/ wechat-sign 两个模块。
wechat 模块
微信服务器模块,多网站共享微信模块,获取 ACCESS_TOKEN 微信访问令牌,并存入数据库,其它服务器可通过 messagerdb 远程连接到本数据库获取微信扫码、关注、付款等交互通知。
wechat-sign 模块
微信绑定,扫码登录,注册,发送客服消息模块。通过 ONCEDB_MESSAGER 获取 微信 ACCESS_TOKEN 和微信事件回调。
系统架构
wechat 和 wechat-sign 的系统架构图如下。因微信的消息只能设置一个回调地址。因此需要一种消息分发机制和传递机制,来实现多个企业应用统一在一个微信公众号下。
在 OnceOA 是通过 messengerdb 来实现的。
如果您仅有一台服务器,只需要安装 wechat/ wechat-sign 两个模块到一台服务器即可,系统会自动通过 oncedb 默认数据来传递消息。
微信服务器端配置
wechat 模块主要为连接公众号后台,刷新 access_token 访问令牌。向 messengerdb 广播微信回调。该模块需要部署到公有云服务器上。微信提醒需要开通微信公众号并完成微信认证。
创建微信模板
OnceOA 要使用邮件消息模板来发送,因此需要创建一个邮件模板。
登陆微信公众号,点击模板消息,添加邮件模板,如下图所示。
创建后记住模板ID(TemplateID)备用。
配置微信接口
点击公众号平台最下方找的 开发-》基本配置,记录以下信息:
开发者ID(AppID)
开发者密码(AppSecret)
令牌(Token)
服务器地址(URL) 填入您的网址回调地址:
这里为域名 + /wechat-auth/api 固定网址, 如
http://onceoa.com/wechat-auth/api
因为我们使用明文模式,因此不需要填写消息加解密密钥。
配置OnceOA云服务器
安装微信模块
在云服务器端安装 wechat 和 wechat-sign 两个模块。
在其他服务器上只安装 wechat-sign 模块。
如果云服务器上没有微信登陆、绑定等功能,可只安装 wechat 模块。
修改配置文件
打开 /onceai/oncedoc/config.js 配置文件,找到 WEIXIN_AUTH_CONFIG 部分,将上文记录的公众号信息,写入到配置文件中:
var WEIXIN_AUTH_CONFIG = {
AppID : 'wx7eXXXXXXX1aec7'
, AppSecret : '9ecfa1aXXXXXXXXX75e8b6d14'
, MchID : 140XXXX02
, TemplateID : 'zLo4j7XPXXXXXXXXXbbloMuirPE'
, token : 'daXXXXXXXXXXXXXlk8643'
, fileFormat : 'yyyy-mm'
}
MchID 为开通微信支付的商户号,没有使用到支付功能可不填。
至此完成微信服务器的配置,重启后,如果您只仅使用一台云服务器,重启后即可自动推送微信消息通知。
配置OnceOA本地服务器
假设我们在公有云服务器上部署了 OnceOA 应用,域名为 cn.oncedoc.com,该应用安装了 wechat 微信模块,并连接了公众号后台。
我们在其他服务器也部署了 OnceOA 应用,希望使用统一的微信公众号,有两种方法可实现该功能。
1. 连接同一 OnceDB 数据库
修改 /onceai/oncedoc/config.js 中的 ONCEDB_CONFIG 配置, 连接到 cn.oncedoc.com 的 OnceDB 数据库。即多个应用连接到同一 OnceDB, 实现分布式部署。这样也会自动接收到微信的回调消息。
还需要在 WEIXIN_AUTH_CONFIG 添加一条 disable: true 属性,防止多个应用同时刷新公众号后台,造成混乱,微信配置的其它属性保持不变。也可在其它服务器上禁用 wechat 服务端模块。
var WEIXIN_AUTH_CONFIG = {
...
, disabled : true
}
var ONCEDB_MESSAGER = {
port : 6400
, host : 'cn.oncedoc.com'
, auth : 'dXXXXXXXXXXXXXXXXXXXXXX00'
, select : 1
}
连接前首先要确保 cn.oncedoc.com 上的 OnceDB 数据库是允许外网访问的。
将 /onceai/oncedb/oncedb.conf 中的 bind 127.0.0.1 只允许本机访问注释掉,并设置 requirepass 访问密码即可。
#bind 127.0.0.1
requirepass dXXXXXXXXXXXXXXXXXXXXXX00
2. 设置 ONCEDB_MESSAGER 消息服务器
有时侯我们可能并不希望多个应用共用远程数据库,而是希望使用本地数据库,来提高访问速度或独立的帐号系统。
此时可修改 config.js 中的 ONCEDB_MESSAGER 配置,连接公有云上的 OnceDB 数据库,如下图所示:
OnceOA 还可通过 messagerdb 实现多个 OnceOA 进程间的相互通信、消息传递和事件推送。
测试微信流程通知
微信集成后,可通过 OnceOA 流程通知来测试,
假设我们使用 OnceOA 设计了一套公章使用系统, 在编辑数据库扩展的"流程管理"时,可勾选“发送通知”选项。
- 选中要发送邮件和微信通知的流程结点
- 在“组织、团队”中,选择 “市场部”作为处理人
- 这里选择组管理员来审批
为防止滥发信息,这里只会对当前选中的处理人组织/团队发送流程通知,而不会通知父级或子级成员。
有时侯,我们可能并不希望提交申请表时就发送通知,此时可以添加一个“提交申请”的空结点,效果如下。
这样,当用户创建完数据后,只有点了“提交审批“才会通知下个流程的处理人。
触发邮件、微信通知
以上文中的例子,从管理桌面的开始菜单点击 “OnceOA 数据管理“ 找到刚才修改的的公章申请表,并添加一条新数据。
- 点击保存后,会出现流程处理按钮
- 再点击“提交审批”
此时会触发邮信和微信的流程消息提醒: