1. EAS消息中心主动向第三方系统推送消息

使用此功能需要实现一个接口MessageWebServiceDao

接口全路径:com.kingdee.eas.base.message.webservice.MessageWebServiceDao

接口类所在包名:bs_message-server.jar

1.1. 接口方法说明

public boolean addMessage(WSMessage message)

用于在第三方系统中添加消息,其中参数message包含一些消息的信息,这个方法在消息中心获得新的消息的时候会主动调用。

public boolean removeMessage(String ID)

用于EAS消息中心主动删除第三方系统相应的消息记录,参数ID是WSMessage中的MsgID字段的值,这个方法是在消息中心删除消息的时候会调用。

public boolean updateMessage(String ID)

与消息中心消息状态同步接口,参数ID是WSMessage中的MsgID字段的值。这个接口是现实的是当鼠标点击在某条消息上时改变消息状态的情况下被调用。

public boolean updateMessages(String IDs, MsgStatus state)

与消息中心消息状态同步接口,参数IDs是多条消息的MsgID的值的集合,state是要设置消息的状态值,这个接口是在界面上按下“设置消息已读”或“未读”按钮时被调用。

1.2. 配置文件说明

eas\server\deploy\portalconfig\easWebConfig.xml文件中有如下的配置项

配置项的value值是“true”,启用功能。eas\ server\deploy\portalconfig\WSConfig.xml文件中配置信息。<?xml version="1.0" encoding="utf-8"?>

//EAS portal消息中心的url

http://ip:port/easportal?toPage=SYS_PC

//数据中心编码        db540

//实现类的包名加类名

com.kingdee.eas.base.message.webservice.testWebServiceImpl

//任务类型消息是否接受

//任务类型消息节点下的工作流消息是否接受

true

//通知类型消息是否接受

//通知类型消息节点下的工作流消息是否接受

true

//通知类型消息节点下的预警消息是否接受

true

//通知类型消息节点下的催办消息是否接受

true

//即时消息是否接受

配置文件需要注意的是每个节点都需要配置,格式要求比较严格,所以要按照示例格式配置,若有多个第三方系统集成,则配置多个class树即可。

A、节点中的值是对应的EAS消息中心的URL,客户那边只能展现消息,具体的业务逻辑处理还是在EAS的消息中心,如果需要单点登陆,需要在URL串后面加上相应的单点登录信息。

B、节点的值是客户实现类的“包名+类名”,EAS消息中心将用反射机制来调用这个类。将这个类打包后放在sp目录下。

task 、notice、online等节点下的值都为true,来启用相应的任务、通知、即时消息的发送,如果为false则相应类型消息将不会被发送出去。节点值需要配置为当前使用的数据中心编码,如果不匹配也不会发送消息,修改配置文件后需要重启服务器才能起作用。

1.3. WSMessage 字段说明

//消息ID

private String msgID;

//消息标题         private String title;

//消息内容

privateString body;

//优先级

private MsgPriority priority;

//发送时间

private Timestamp sendTime;

//接受时间

private Timestamp receiveTime;

//源业务对象ID

private String sourceID;

//接收者名字

private String receivers;

//消息状态

private MsgStatus state;

//消息类型

private MsgType type;

//业务类型         private MsgBizType bizType;

//发送者名字         private String sender;

//EAS portal消息中心的url

private String url;

//接收人ID

private String recieverID;

//组织ID

private String OrgID;

这里WSMessage消息类对消息中心中的存在的消息类新做了统一的转型处理,在实现类中接收到的WSMessage对象中获得的字段中存在是空值的情况,需要开发人员自行控制。

1.4. 调用示例

public class testWebServiceImpl implements MessageWebServiceDao {

public boolean addMessage(WSMessage message) {

if(message.getReceiveTime() == null){

message.setReceiveTime(new Timestamp(System.currentTimeMillis()));

}

System.out.println( "----------------addMessage------------" );

System.out.println( "msgID:" + message.getMsgID());

System.out.println( "title:" + message.getTitle());

System.out.println( "body:" + message.getBody());

System.out.println( "priority:" + message.getPriority().getAlias());

System.out.println( "sendTime:" + message.getSendTime().toString());

System.out.println( "receiveTime:" + message.getReceiveTime().toString());

System.out.println( "sourceID:" + message.getSourceID());

System.out.println( "receivers:" + message.getReceivers());

System.out.println( "state" + message.getState().toString());

System.out.println( "type:" + message.getType().getAlias());

System.out.println( "bizType:" + message.getBizType().getAlias());

System.out.println( "sender:" + message.getSender());

System.out.println( "url:" + message.getUrl());

System.out.println( "recieverID" + message.getRecieverID());

System.out.println( "OrgID:" + message.getOrgID());

System.out.println( "----------------addMessage------------" );

return false; }

public boolean removeMessage(String ID) {

System.out.println( "----------------removeMessage------------" );

System.out.println(ID);

System.out.println( "----------------removeMessage------------" );

return false;

}

public boolean updateMessage(String ID) {

System.out.println( "----------------updateMessage------------" );

System.out.println(ID);

System.out.println( "----------------updateMessage------------" );

return false; }

public boolean updateMessages(String ids, MsgStatus state) {

System.out.println( "----------------updateMessages------------" );

System.out.println(ids);

System.out.println( "----------------updateMessages------------");

return false; }

}

最后将写好的类编译,将编译后的class文件打成jar包,注意不要和原来EAS系统中的jar包重名。打完jar包以后,将jar包放置在eas\server\lib\sp\目录下。如果是websphere应用服务器的话,需要重新通过管理控制台进行一次部署。

2. 第三方系统向EAS消息中心来推送消息

这个功能需要使用EAS消息中心提供的webservice接口。

首先获取EAS消息中心的webservice接口的WSDL文件,启动Apusic,用浏览器访问http://ip:port/ormrpc/services获取WSWsMessageCenterFacade的WSDL文件,

还需要EASLogin这个服务(因为首先需要登录EAS,才能访问到元数据)。所以在EASLogin和WSWsMessageCenterFacade服务边上的(wsdl)位置上点右键“另存为”,将得到的文件的后缀名改为wsdl。然后根据wsdl文件生成webservice的客户端代码。

2.1. WSWsMessageCenterFacade服务提供的接口的功能

addMessage 外部系统往EAS推消息时,在EAS消息中心添加消息记录

参数说明:

userID  String 接收者的用户帐号

title  String 消息的标题

senderID String 发送者的用户帐号

priority  int  消息优先级  0低 ; 10中;20高

status  int 消息状态 0 未读;10已读

body   String 消息内容

sourceID  String  外部系统的数据ID

type   String   消息类型

bizType  String  消息业务类型

url  String  双击消息进行URL的转跳功能时将使用到这个URL

sysSign  String  第三方系统标识

recieveTime  String  接收时间

updateMessageStatus  同步消息状态(已读、未读)参数说明:

msgSourceID  String  消息源ID  消息在第三方系统中的ID

state   int   状态0 未读;10已读

removeMsgBySID  删除EAS中的消息记录

参数说明:

sourceID   String   外部系统的数据ID

2.2. 二次开发注意事项addMessage接口中涉及到的用户名指的是EAS系统中的用户名,sourceID字段保存的是该消息在第三方系统中对应的ID标识,用来和第三方系统中的数据同步时使用,确保该字段的数据唯一性。

addMessage接口中的sysSign字段是对多个第三方系统的消息进行来区分的标识,需要和EAS中的第三方消息节点的配置进行配合来进行,节点的配置方法见文档附录。

在每次调用EAS的webservice的接口的时候,先要调用EAS的登陆服务,否则将无法使用EAS系统的元数据。调用方法如下:首先,先要对EASLogin这个服务的wsdl文件生成客户端代码。然后,写如下类似代码进行调用

2.3. 代码示例 这里login的方法中的参数依次是“登陆的用户名”,“密码”,“解决方案”(一般为eas即可),“数据帐套编码”,“语言类型”,“数据库类型”( 0 :MS SQL Server  1:DB2  2:Oracle)

public static void login() throws ServiceException, RemoteException {

EASLoginProxyService loginSrv = new EASLoginProxyServiceLocator();

EASLoginProxy loginClient = loginSrv.getEASLogin();

loginClient.login( "popo" ,  "" ,  "eas" ,  "db540" ,  "L2" , 2);

}

public static void main(String[] args) {

try {

WSWsMessageCenterFacadeSrvProxy client = getClient();

login();   //这里先调用了登录服务   getClient().addMessage( "linda" , "gggggg" , "popo" ,0,0, "123456" , "111111" , "" , "", "http://www.baidu.com" , "454654" , "2007-10-2" );

}

3. 第三方系统从EAS消息中心取消息

此功能也需要调用EAS的webservice的接口,所以前面很大一部分的客户端代码生成和怎么来调用接口的问题就不再赘述了。这里就简单介绍一下这部分功能的接口。(wsdl文件和第一部分是相同的)

3.1. checkMessageCount

checkMessageCount:查询新消息记录条数  在第三方系统主动取EAS系统消息时查询可获取的消息条数(这个数目是用户之间隔离的)

参数说明: userID  String  用户名

用法:在每次取数之前调用该方法,返回为0的话说明该用户没有需要更新的数据,就没有必要再去取数

3.2. clearMessageCount

clearMessageCount:消息可获取数清0  在第三方系统主动取EAS系统消息时将可获取的消息条数清零

参数说明: userID  String  用户名

用法:在每次取数之后调用该方法,清空待更新消息的数据。

3.3. removeMsgByIDremoveMsgByID:根据EAS消息ID删除消息  第三方系统取EAS消息时,同步删除EAS消息中心的

参数说明:messageID   String    消息ID

用法:在第三方系统中将消息删除以后,需要调用该方法,来保持数据的一致性。同时要求第三方系统要保存EAS系统消息的ID

3.4. getMessageList

getMessageList:获得消息列表  获取全部待更新的消息

参数说明: userID  String  用户名

用法:返回的是一个XML字符串流,格式如下

3.5. 消息流<?xml version=\"1.0\" encoding=\"GBK\" ?>

//每一条消息取出的时候就是一个,有多条消息就有多个row

//数据行数

// 消息ID(在EAS系统中)

//  消息类型

//  消息业务类型

//  优先级                    //  已读未读状态

//  消息标题                   //  消息内容                    //  消息发送人

//     消息接收时间

4. EAS消息中心第三方系统消息节点配置方法

4.1. 配置流程

1、用administrator用户登录EAS客户端,进入消息中心,点击“编辑”菜单,然后点击“外部消息分类维护”菜单项

2、在弹出界面上点击“新建”按钮

在此界面中的“外部系统名称”和“外部系统编码”里面的内容是需要通过一个配置文件进行配置的,配置文件的路径是:eas\server\profiles\server1\config\portalConfig\otherSystem.xml

配置文件的和界面显示数据的关系看以下图

界面数据:

4.2. 相关配置文件

配置文件数据:

121212

Other

888888

mySystem

454654

OtherSys

841202

OA

这里配置以后的节点是和第三方的系统之间隔离的,所以每个节点下面的数据是来自同一个外部系统的数据。

这里的节点上定义的编码是和webservice的接口addMessage中的参数sysSign 对应的。需要特别注意。

bos新建工作流 服务器信息和更新端口,BOS技术支持博客 : BOS_集成消息中心开发指南...相关推荐

  1. 单机 docker 部署fastfds_云服务器使用docker可视化一键部署Wrodpress个人博客,操作简单,适合小白...

    原文链接在我的博客: 教你云服务器使用docker可视化一键部署Wrodpress个人博客,操作简单,适合小白 - Kyellow's blog​kyellow.gitee.io 前段时间领取了一台云 ...

  2. 解决Android SDK Manager无法更新下载 - 猪悟能 - 博客园 (cnblogs.com)

    新机器安装SDK Manager时一直下载失败,连接dl.google.com失败,连接dl-ssl.google.com失败.多次搜索和尝试后发现一个比较好的解决办法如下: 引自:解决Android ...

  3. iOS 热更新方案 - lance的专栏 - 博客频道 - CSDN.NET

    iOS 热更新方案 - lance的专栏 - 博客频道 - CSDN.NET Weex

  4. HTML5期末大作业:个人信息展示网站设计——清新春暖花开个人博客网站(6页) HTML+CSS+JavaScript...

    常见网页设计作业题材有 ​​个人. 美食. 公司. 学校. 旅游. 电商. 宠物. 电器. 茶叶. 家居. 酒店. 舞蹈. 动漫. 明星. 服装. 体育. 化妆品. 物流. 环保. 书籍. 婚纱. 军 ...

  5. 服务器信息备份更新,电子病历服务器双机更换及实时备份与HIS服务器升级改造合同备案...

    2数据库一体机甲骨文.X8-2-HA1.★数据库一体机采用一体化架构,且计算节点服务器和存储是同一厂商,全部或部分组件不属于OEM产品 2.★计算节点服务器数量2个 3.计算节点服务器外观:机架式,每 ...

  6. 隐藏邮件头发件服务器,如何隐藏服务器真实IP,防止被攻击? | 老牛博客

    1.应用仅监听本地端口 确保你的服务监听的仅为本地连接,该项与你说采用的服务器软件无关 例如:Apache服务器应该确保/etc/apache2/ports.conf配置中,监听应为 Listen 1 ...

  7. 搭建github服务器_搭建一个属于自己的公网博客

    相信每一位程序员都喜欢拥有一个属于自己的博客. 当然,在我认为,内容以及模块都要自己进行可扩展定义才是真正属于自己的. 那么想要一个博客就必须要有一个服务器和一个域名,这样的话才能让自己的博文内容发扬 ...

  8. 透明网关配置修改后服务器要重启吗,透明网关_michaeil_yue_新浪博客

    创建透明网关 ORACLE实现异构服务的技术叫做透明网关(Transparent Gateway),利用透明网关可以实现和SQL SERVER.SYBASE.DB2等多种数据库的互联.因此透明网关也是 ...

  9. 通过ssh在服务器用Hexo搭建个人网站-blog、博客

    title: 在服务器用Hexo搭建个人网站(blog) date: 2022-10-16 21:58:49 记录在服务器用Hexo搭建个人网站-blog 前言: ​ 之前就听说有同学搭建了自己的个人 ...

最新文章

  1. python输入文字字符串、如何提取某个汉字_python提取字符串中的汉字数字字母
  2. DNSBIND——DNS的子域授权和定义转发服务器
  3. 六、“最是不招眼,凌波水上漂”
  4. Flask爱家租房--房屋管理(搜索房屋列表)
  5. 信息奥赛一本通(1112:最大值和最小值的差)
  6. 微信支付封杀虚拟货币交易,亦是重拳无情!
  7. 雷军:电视机越大才越舒服!
  8. 如何理解通配符类型参数/协变性/逆变性?
  9. java编写一个彩票开奖的模拟程序.游戏共有两种玩法,一种是21选5,即玩家输入5个1到21内的不重复的数。另外一种玩法是6+1玩法,即要求玩家输入7个整数,代表所购买的彩票号码,最后一个是特码。
  10. UDF-java获取名字中的姓
  11. Apache Jackrabbit Oak 1.12.0 发布,可扩展、高性能分层存储库
  12. python第五章课后答案5.8_Python语言程序设计(美-梁勇)第5章习题解答
  13. 【车牌识别】基于matlab车牌识别【含Matlab源码 417期】
  14. web安全之信息收集
  15. Python基于Django在线音乐播放网站设计
  16. android http 302重定向 实现,Android httpClient自动处理302重定向
  17. 快速由WP8升级到WP8.1
  18. java实现基于okhttp3的http请求封装(GET/POST/PUT/DELETE等方法)
  19. 霹雳吧啦Wz语义分割学习笔记P2
  20. epub文件是什么文件?哪里有epub图书资源?如何打开?

热门文章

  1. Python优化算法02——遗传算法
  2. 什么软件测试iphone性能,5款iPhone性能测试比拼:A9虽然垫底,与A13的差距并不大...
  3. 使用python封装了一个获取小程序token,发送订阅消息的类
  4. Failed to connect to github.com port 443: Timed out 及 ping github.com请求超时
  5. 【Java】虚拟机JVM
  6. 学习ARM开发(10)
  7. android Web App开发
  8. Resolver error: Error: The VS Code Server failed to start 的一种解决方案
  9. Java导出大批量数据(文件格式篇xls,xlsx,csv)
  10. python爬取图片然后保存在文件夹中