技术文章

当前位置:首页>帮助手册>技术文章

O2OA消息配置使用说明

时间:2022-09-05   

一、先决条件:

1、O2Server服务器正常运行,系统安装部署请参考文档《如何在服务器上安装部署O2OA》

2、以拥有管理员权限的用户账号登录O2OA(翱途)开发平台,如:xadmin

3、O2OA Version:V7.2.0

二、消息机制说明

O2OA开发平台从V7.2开始可以对消息和通道进行配置。

消息(message)是指服务器在运行中由不同事件产生不同的消息内容,不同的事件产生不同的消息,目前支持的事件类型有52种,以及自定义消息类型。
消息通道是指如何处理产生的消息。

下述内容以O2OA流程引擎创建流程待办为例,说明消息的处理机制:




类型(消息类型)

o2oa/o2server服务器内的消息类型是内置编码实现完成的,7.2.0版本支持以下52种事件类型以及自定义消息类型:


自定义消息类型

O2OA支持将以custom_作为前缀的消息类型被识别为自定义消息

消息通道

O2OA服务器消息通道是用于处理接收到的消息内容,V7.2设计以下通道来处理消息内容:

ws:webSocket消息发送. pmsinner:推送消息. calendar:日历 dingding:钉钉 welink:华为welink zhengwudingding:政务钉钉 qiyeweixin:企业微信 mpweixin:微信公众号 
kafka:kafka消息队列 activemq:activemq消息队列 restful:restful调用 mail:邮件发送 api:系统内部借口调用 jdbc:jdbc写入 table:自建表 hadoop:dfs写入

消息产生后将被送到通道进行消费处理.

默认配置

默认情况下对部分消息(如:task_create:创建待办)等类型和通道进行了配置,默认情况下已经实现了待办的通知等功能.大部分消息都会通过默认配置自动处理.

task_types.png


默认配置会将创建待办消息通过webSocket,pmsinner,dingding,welink,zhengwudingding,qiyeweixin,mpweixin进行发送.

后续演示几种典型的消息使用场景

场景:创建待办消息进行邮件通知

  1. 新建一个邮件通道

task_mail_create_consumer.png


选择"邮件",进行smtp配置,图片给出腾讯企业邮配置样例,设置通道的名称为"consumer_mail"


task_mail_smtp.png


3.添加通道,将刚刚创建的通道添加到task_create消息类型中

task_mail_select_consumer.png


  1. 至此,当有待办创建时将调用consumer_mail通道通过邮件的smtp服务发送邮件通知给待办人.后面将进一步设置邮件过滤和邮件内容.

  2. 如果需要进行条件过滤,譬如不给"张三"用户发送邮件通知,那么可以通过过滤脚本来实现.

task_filter_create.png


task_filter_name.png

  1. return message.person.indexOf("张三")>-1;

    返回值 true 表示需要进行处理, false 不进行处理.

    message 消息体根据不同的时间类型来自不同的消息,其内容和格式不同.具体格式内容可以通过print语句查看.

  2. 完成过滤后再来对消息体内容进行定制,通过创建加载器来实现.

task_loader_create.png

task_loader_name.png

/*
*message 对象是消息体,有脚本执行上下文环境环境自动注入,其中有四个字段
message.title: 标题
message.person: 发送对象
message.type: 消息类型,task_create
message.body: 消息体,类型是task_create的消息中消息体是json格式存储的task(待办)数据
return 返回的message对象
*/
message.title = "您有一份标题为:"+message.body.title+"的待办需要处理。";
message.body = "<a href='http://testing.o2oa.net/x_desktop/work.html?workid="+ message.body.work + "'>您有新的待办需要处理,标题为:" + message.body.title + "</a>";
return message;
  1. 通过加载器定制邮件内容.

场景2:工作完成后将数据写入到数据库表

工作流转完成后尝试将部分数据写入到制定的数据库表中

  1. 先准备一个数据库并创建一个表,表中定义id,title,total字段.

wrokCompleted_jdbc_create_table.pngwrokCompleted_jdbc_create_table.png

创建一个jdbc(数据库表)通道

workCompleted_jdbc_select_consumer.png



我们先创建一个jdbc的通道,指向testdb数据库的workdata表.

创建一个加载器来设定写入的内容

var id = message.body.work;
var resp = this.applications.getQuery("x_processplatform_assemble_surface", "data/work/"+ id);//根据workid获取到业务数据data
var data = JSON.parse(resp.toString()).data
//修改body属性同步到数据库表中
message.body.id = message.body.id;
message.body.title = data.$work.title;
message.body.total = data.total; 
return message;

在类型(workCompleted_create)中选择添加通道consumer_jdbc


workCompleted_jdbc_select_consumer.png

  1. 至此就完成了将数据同步到数据库的配置.

通道配置说明

下面对6中非默认通道进行说明.

kafka

将消息推送到kafka队列中,配置参数说明:

consumer_kafka.png


activemq

将消息推送到activemq队列,配置参数说明:


consumer_activemq.png


restful

调用restful服务,配置参数说明:

consumer_restful.png


mail

调用smtp服务器发送邮件,配置参数说明:


consumer_mail.png


jdbc

调用数据库链接,将数据写入数据库表,配置参数说明:


consumer_jdbc.png


hadoop

将数据写入hadoop文件系统,配置参数说明


consumer_hadoop.png










上一篇:系统配置-服务器端口冲突和端口修改

下一篇:o2server配置外部存储