一、标准功能,配置完成( ECKB在9002006(包括)以后

1、前提条件

(1)、OA (ECKB在9002006(包括)之后)

(2)、第三方系统消息推送接口调用前,不需要调用接口获取token

(3)、第三方系统可以自行按照OA单点登录规范,去实现消息链接的单点。

2、配置

(1)、新建消息订阅设置

应用中心-消息中心-消息订阅设置-新建

应用中心-消息中心-消息订阅设置-新建

  • 推送方式:

    标准类推送:使用标准的类进行配置推送,不需要二开,类路径com.weaver.base.msgcenter.sub.StandardSub会自动带出来。
    标准继承推送、自定义推送、EBS推送(需要二开)
    ESB推送配置见:https://www.showdoc.com.cn/p/71a2b76a6a5a442b2bc2b182b94b1394
  • 消息类型:

    用户可以筛选消息类型,选择到哪些消息要推送给第三方。 对应消息类型设置里的消息类型 ,一般选择到新到达流程即可
  • 数据类型:

    消息传输格式 文本或者二进制 (默认是文本)
  • 通道类型:

    OA的消息选择以何种方式推送给第三方(默认是直接推送,也就是不用中间件)

    Redis:需要客户OA环境部署redis服务,如果没有需要找架构部部署,已经有可以直接用。

    其他中间件方式,均需要单独部署,才能使用

  • OA系统地址:

    ecology系统的地址(用于拼接到消息链接上),http或者https开头
  • 消息推送接口地址:

    第三方的消息推送接口地址,http或者https开头
  • 消息推送接口请求方式:

    第三方消息推送接口是JSON请求还是x-www-form-urlencoded 请求。默认x-www-form-urlencoded

(2)、参数设置:配置第三方消息推送接口参数对应消息的字段

参数设置

  • 参数名称:

    第三方消息推送接口所需要的参数
  • 参数类型:

    集合:表示该参数还有子参数

    列表:表示该参数是一个JSON数组

    文本:表示该参数是一个字符串(字段无特殊说明,一般是文本)

  • 值:

    选择具体要对应的消息字段
    消息标题、消息内容、消息PC端链接、消息移动端链接、接收人、自定义参数
  • 消息链接:

    支持编码方式URLEncoder、Base64、Hexadecimal 16进制、MD5。如果请求方式选择x-www-form-urlencoded,那么编码方式选择URLEncoder。如果请求方式选择JSON,那么编码方式选择空
  • 单点登录参数:

    是用于消息发送到第三方后,第三方要点击消息链接重新访问OA系统时使用。
    (1)、如果第三方系统已经和OA集成过,或者OA这边开发过单点相关的东西,只需要链接后面拼接参数,可以按照code=固定值 这种形式在链接后面拼接参数
    (2)、如果第三方系统之前没有和OA做过任何集成,请参照下面文档开发
    Third-partysinglesign-onEcologysolution.pdf(具体请咨询集成组同事)
  • 接收人:

    当参数类型为文本时,说明第三方的消息接口,接收人字段是一个字符串,并且以某个分隔符分开的
    当参数类型是列表时,说明第三方的消息接口,接收人字段是一个JSON数组
    因为在OA内部消息接收人是人员id,推送给第三方系统,需要做一些人员转化,所以可以将接收人转化成登录名、姓名、编号去接收
  • 自定义参数:

    值是一个固定的不变

3、启用

启用

二、项目同事自行二开,OA消息推送给第三方系统

1、继承IMessageReceive类

新到达流程(或待处理流程)、转发流程、抄送流程、退回流程、意见征询流程、传阅流程,只有这六个才是待办流程。其他的都属于消息通知,只要待办流程的消息就只选择这几个。
package com.cloudstore.eccom;
import com.alibaba.fastjson.JSONArray;
import com.cloudstore.dev.api.bean.MessageBean;
import com.cloudstore.dev.api.bean.MessageType;
import com.weaver.base.msgcenter.channel.IMessageReceive;
import java.util.List;
import java.util.Map;
public class SubTest implements IMessageReceive {

    public void onMessage(String paramString) {
        List<MessageBean> localList = JSONArray.parseArray(paramString, MessageBean.class);

        if(localList!=null)
            for(MessageBean messageBean : localList){
                if(messageBean.getMessageType().getCode() == MessageType.WF_NEW_ARRIVAL.getCode() || ){
                }
            }
    }

    public void onStart() {
    }

    public void onEnd() {
    }

    public void setProp(Map<String, String> paramMap) {
    }

    public void setList(List<IMessageReceive> paramList) {
    }
}

2、注册该类

(1)、新建

(2)、注册

(3)、启用

3、附录:

MessageBean消息实体类

    private MessageType messageType;//标准产品消息类型
    private int userId;//目标用户ID
    private Set<String> userList;//userID
    private String title;//标题
    private String context;//内容
    private int creater;//创建人
    private String linkUrl;//链接地址
    private String linkMobileUrl;//移动端链接地址

    private String bizType;//业务编号(需要按照各模块业务去展示消息类型,保证唯一,业    务编号前加上消息类型code保证唯一)
    private String bizState;//业务状态vvv(与修改消息状态有关,已处理 : 1  已删除 : 27  已    暂停 : 34 已撤销 : 35)
    private String bizTitle;//业务标题(需要按照各模块业务所展示的消息类型名称)
    private String targetId;//业务对象(需要修改消息状态,在发消息时targetid传入各模块    自己的业务的唯一id,前面再加上消息类型的code+“|”,保证在消息表中不与其他模   块冲突)
    private String targetName;//业务名称
    private String detailTitle;//明细标题(由脚本指定,代码中不用设值)
    private Map<String, Object> params;//参数
    private String path;//路径
    private Map<String, Object> emParams;//对接EM的参数(可覆盖MessageBean中默认的)
    private Map<String, Object> detailTitleParams; //(提醒模板中提醒标题参数存放)


    MessageTye消息类型实体类(可以根据这个消息类型筛选消息,
    messageBean.getMessageType().getCode() == ) 
    对应 MessageBean中的MessageType (newInstance中的值,是code的值)

    一般来说MessageType 选 19 20  21  22  23  24 这几个就行,代表待办流程发的消息

    messagetype消息来源的code 可以通过页面查询



    protected int code;//消息类型唯一编号
    public int getCode() {
        return code;
    }

三、版本比较低时,通过ESB推送到第三方( ECKB在9002006(不包括)之前

大多数客户在版本比较低时,都是选择的通过ESB推送到第三方。但是版本比较低的时候,不支持界面配置,所以需要 手动改代码。Util_Message.sendmessage 方法中加入调用ESB接口的逻辑

Util_Message.java

Last modification:October 27, 2023
如果觉得我的文章对你有用,请随意赞赏