OnceOA 提供多种消息通知方式,其中以邮件和微信消息通知最为常用。
OnceOA 启用流程通知
以 OnceOA 的流程系统启用通知为例,
以我们制作的公章申请的数据库定义扩展为例, 在编辑数据库扩展的"流程管理"时,可勾选“发送通知”选项。
- 选中要发送邮件和微信通知的流程结点
- 在“组织、团队”中,选择 “市场部”作为处理人
- 这里选择组管理员来审批
为防止滥发信息,这里只会对当前选中的处理人组织/团队发送流程通知,而不会通知父级或子级成员。
设置之后点击保存即可,这样当数据创建完毕之后,会自动触发“部门审批”流程通知。
有时侯,我们可能并不希望提交申请表时就发送通知,此时可以添加一个“提交申请”的空结点。
选中原来流程之间的连线,然后点击“删除选中”,并按下Shift + 鼠标左键创建一个空结点。填入相关信息,处理人留白即可,如下图所示。
这样,当用户创建完数据后,只有点了“提交审批“才会通知下个流程的处理人。
这里与过滤函数的处理机制不同,过滤函数只有当处理人审批时才会执行,比如更新关联数据等。而流程通知会在上一个节点时触发。
触发邮件、微信通知
以上文中的例子,假设我们在公章申请的数据库定义流程中, 勾选了发送通知。 从管理桌面的开始菜单点击 “OnceOA 数据管理“ 找到刚才修改的的公章申请表,并添加一条新数据。
- 点击保存后,会出现流程处理按钮
- 再点击“提交申请”
此时会触发邮信和微信的流程消息提醒:
微信中接收到的消息提醒如下。
下面我们来介绍一下,如何配置邮件和微信提醒。
配置邮件提醒
邮件提醒可连接第三方SMTP邮件服务器来发送,可在私有云环境下部署。目前有很多邮件服务提供商提供免费的SMTP发信服务,不过对发信数量会有一定的限制。
下面我们介绍如何使用QQ邮箱来发送邮件通知。
开启SMTP
登录QQ邮箱后,点击设计 -> 帐户,然后找到 POP3/SMTP 选项。
- 点击 POP3/SMTP 后的“启用”
- 按弹出对话框提示,发送短信,并点击保存。
保存之后,你会得到一个SMTP服务的连接密码,复制并记住这个密码。
也有很多服务商的SMTP密码即为邮箱密码,仅需开启SMTP即可。
配置OnceOA邮件服务
打开 /onceai/oncedoc/config.js 配置文件,找到 MAIL_CONFIG 部分,并做如下修改:
var MAIL_CONFIG = {
domain : ''
, smtpPort : 465
, smtpSecure : true
, smtpHost : 'smtp.qq.com'
, smtpUser : '1662568808@qq.com'
, smtpPass : 'zgsyXXXXXXXXfhhi'
}
smtpSecure: true 代表启用加密连接,对应的 smtpPort 端口号为 465,否则一般为 25 smtpHost 为QQ邮箱的SMTP服务器地址 smtpUser 为QQ邮箱帐号 smtpPass 为上文获取的SMTP密码
domain 为在公有云环境下启用 OnceOA 自带邮件服务器,需要安装 mail 模块,该模块暂未开放。经过一段时间的测试,如果不是知名域名或企业,自建邮件服务器发信被拒收的比率较高,而且收到的垃圾邮件也较多,这里邮箱域名留白即可。如果需要自建邮件服务器,可与我们联系。
配置完成后,重启 OnceOA 即可启用邮件通知。
配置微信提醒
推送微信提醒,需要部署到公有云服务器上。微信提醒需要开通微信公众号并完成微信认证。
创建微信模板
微信消息都需要通过模板推送,我们主要使用邮件通知的模板。
登陆微信公众号,点击模板消息,添加邮件模板,如下图所示。
创建后记住模板ID(TemplateID)备用。
配置微信接口
点击公众号平台最下方找的 开发-》基本配置,记录以下信息:
开发者ID(AppID) 开发者密码(AppSecret) 令版(Token)
服务器地址(URL) 填入您的网址回调地址: 这里为域名 + /wechat-auth/api 固定网址, 如 http://onceoa.com/wechat-auth/api 因为我们使用明文模式,因此不需要填写消息加解密密钥。
配置OnceOA微信模块
打开 /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 为开通微信支付的商户号,没有使用到支付功能可不填。 至此完成微信的全部配置,只需要安装 wechat/ wechat-sign 两个模块,即可自动推送微信消息。
分布式部署下的微信消息推送
如果您有多个 OnceOA 应用想要共用一个公众号来扫码登录、注册、推送消息、完成支付等。
但这些应用分别部署到了多台服器务上,或者您想在本地私有云服务器中也使用公众号的这些功能。
那么有两种办法可以实现此需求。
假设我们在公有云服务器上部署了 OnceOA 应用,域名为 cn.oncedoc.com,该应用安装了微信模块,并连接了公众号后台。
1. 连接同一 OnceDB 数据库
修改 /onceai/oncedoc/config.js 中的 ONCEDB_CONFIG 配置, 连接到 cn.oncedoc.com 的 OnceDB 数据库。即多个应用连接到同一 OnceDB, 实现分布式部署。
还需要在 WEIXIN_AUTH_CONFIG 添加一条 disable: true 属性,防止多个应用同时刷新公众号后台,造成混乱,微信配置的其它属性保持不变。
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 数据流程通知,您甚至可以自己搭建电子邮件营销系统,这在以后的文章中会详细介绍。