CN105808360A - 一种基于共享消息的portlet通信方法 - Google Patents

一种基于共享消息的portlet通信方法 Download PDF

Info

Publication number
CN105808360A
CN105808360A CN201610106207.6A CN201610106207A CN105808360A CN 105808360 A CN105808360 A CN 105808360A CN 201610106207 A CN201610106207 A CN 201610106207A CN 105808360 A CN105808360 A CN 105808360A
Authority
CN
China
Prior art keywords
message
portlet
shared
page
messages
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN201610106207.6A
Other languages
English (en)
Other versions
CN105808360B (zh
Inventor
王伟
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Inspur General Software Co Ltd
Original Assignee
Inspur General Software Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Inspur General Software Co Ltd filed Critical Inspur General Software Co Ltd
Priority to CN201610106207.6A priority Critical patent/CN105808360B/zh
Publication of CN105808360A publication Critical patent/CN105808360A/zh
Application granted granted Critical
Publication of CN105808360B publication Critical patent/CN105808360B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/542Event management; Broadcasting; Multicasting; Notifications

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Multimedia (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Transfer Between Computers (AREA)

Abstract

本发明公开了一种基于共享消息的portlet通信方法,其具体实现过程为:定义共享消息的结构,该共享消息包括消息类型、消息体;设置portlet消息路由配置;portlet发送消息到消息服务器;消息引擎解析消息体,分发消息,根据获取的消息内容,解析消息的类型以及消息体,获取消息来源页面信息、发送消息的portlet运行实例信息以及实例的上下文信息,根据接收到消息的消息类型,通过路由规则,获取可接收此类型消息的portlet实例信息,进行消息分发;portlet接收消息,更新自身状态。本发明的一种基于共享消息的portlet通信方法与现有技术相比,实现当一个portlet状态发生改变时,相关同页面或者跨页面的一个或多个portlet的状态实时更新,并监控更新状态,实用性强,易于推广。

Description

一种基于共享消息的portlet通信方法
技术领域
本发明涉及信息通信技术领域,具体地说是一种基于共享消息的portlet通信方法。
背景技术
中国在经历了大规模的信息化发展之后,企业的信息化水平和程度已有巨大提升。企业应用系统的规模也越来越大,门户portal的使用也越来越深入。随着这些系统的持续运行,单纯的数据集成已经不能满足用户的需要,越来越多的业务集成的需求被提出来。而业务集成的过程中,portlet之间的通信、协作是门户系统业务集成的一个关键技术难点。
portlet是基于Java的Web组件,由portlet容器管理,并由容器处理请求,生产动态内容。portals使用portlets作为可插拔用户接口组件,提供信息系统的表示层。作为利用Servlets进行Web应用编程的下一步,portlets实现了Web应用的模块化和用户中心化。
很多portlet所集成业务的逻辑非常复杂,对外通信的接口格式多种多样,缺乏统一有效的标准和管理,并且在复杂业务架构下很难保证部件通信的正确性、及时性。
基于此,现提供一种基于共享消息的portlet通信方法。旨在为企业portal系统提供一套简洁、高效、实时的通信方法,提升系统运维的效率。
发明内容
本发明的技术任务是针对以上不足之处,提供一种基于共享消息的portlet通信方法。
一种基于共享消息的portlet通信方法,包括以下步骤:
步骤一:定义共享消息的结构,该共享消息包括消息类型、消息体;消息体包括消息所触发事件的事件名称、事件所需参数、消息上下文信息;
步骤二:设置portlet消息路由配置;
步骤三:portlet发送消息到消息服务器;
步骤四:消息引擎解析消息体,分发消息,根据步骤三获取的消息内容,解析消息的类型以及消息体,获取消息来源页面信息、发送消息的portlet运行实例信息以及实例的上下文信息,根据接收到消息的消息类型,通过路由规则,获取可接收此类型消息的portlet实例信息,进行消息分发;
步骤五:portlet接收消息,更新自身状态。
步骤二中的消息路由配置过程为:在每个portlet运行实例上配置所接受消息的类型,每个portlet运行实例可以接受多个portlet发送的多种消息,定义消息执行的优先级以及同一消息类型有多个发送源的情况下消息生效的规则。
所述运行实例是指运行时状态的实例ID,即portlet放置于页面portlet容器中时生成portlet实例ID,每个portlet定义自己的发送消息的类型,并定义自己可以接收的消息的类型,在页面设计时,portlet生成一个运行实例,运行实例的portlet在消息服务器上注册消息路由配置,选择自身可接收哪些portlet实例发送的哪些消息。
所述portlet具有消息接收的公共接口,该接口负责消息的解析以及对消息体所包含方法的调用执行。
步骤三中,当portlet在发生状态改变时,根据部件注册的事件机制,构造特定类型的消息定义信息,发送到消息服务器。
步骤四中,消息引擎分发消息的步骤为根据收到的消息进行消息分发的工作,消息引擎在收到消息后,解析消息体,查找待接收消息的portlet实例信息以及实例所运行的页面信息:如果存在和源portlet同页面的portlet实例,则直接通过HTTP进行返回,由客户端脚本进行消息发送;如果存在跨页面通信的情况,则通过服务端消息引擎进行消息推送到各个页面。
所述portlet包括源portlet和目标portlet,当源portlet状态改变时,发送消息到消息服务器;消息服务器根据源portlet消息路由设置、消息类型,向目标portlet广播该消息;目标portlet接收广播消息,并更改自身状态。
上述portlet状态更改的具体过程为:源portlet的状态发生改变时,会根据自身状态的变更类型,向消息服务器发送指定类型的消息;消息服务器接收到源portlet发送来的消息,根据消息路由设置,对消息进行广播,这时广播会根据发送消息的源portlet运行实例所在的页面,针对本页面进行页内客户端方式广播,针对非本页面进行服务端推送的方式进行广播;目标portlet收到消息服务器发送来的消息后,对消息进行解析,匹配对应的处理方法,进行自身状态更新。
本发明的一种基于共享消息的portlet通信方法和现有技术相比,具有以下有益效果:
本发明通过提供一套架构方法,解决portal中多portlet之间消息无法实时更新、跨页面portlet通信只能通过url传值得方式实现的问题;通过基于共享消息的portlet通信的架构,可以实现当一个portlet状态发生改变时,相关同页面或者跨页面的一个或多个portlet的状态实时更新,并监控更新状态;portlet可以实现一处状态更新后,相关portlet不管是同页面还是跨页面均可以实时更新,由于采用了共享消息的机制,针对已有门户系统portal的portlet,只需要进行事件消息的封装,即可实现多portlet的协作;基于共享消息的机制,还可以实现消息发送失败后的消息重发,保证了portlet之间通信的可靠性,一致性,实用性强,易于推广。
附图说明
附图1为本发明的实现流程图。
具体实施方式
下面结合附图和具体实施例对本发明作进一步说明。
如附图1所示,本发明的一种基于共享消息的portlet通信方法,包括如下步骤:
步骤一:定义共享消息的结构,该共享消息包括消息类型、消息体;消息体包括消息所触发事件的事件名称、事件所需参数、消息上下文信息;
步骤二:设置portlet消息路由配置;
步骤三:portlet发送消息到消息服务器;
步骤四:消息引擎解析消息体,分发消息,根据步骤三获取的消息内容,解析消息的类型以及消息体,获取消息来源页面信息、发送消息的portlet运行实例信息以及实例的上下文信息,根据接收到消息的消息类型,通过路由规则,获取可接收此类型消息的portlet实例信息,进行消息分发;
步骤五:portlet接收消息,更新自身状态。
步骤二中的消息路由配置过程为:在每个portlet运行实例上配置所接受消息的类型,每个portlet运行实例可以接受多个portlet发送的多种消息,定义消息执行的优先级以及同一消息类型有多个发送源的情况下消息生效的规则。
所述运行实例是指运行时状态的实例ID,即portlet放置于页面portlet容器中时生成portlet实例ID。
portlet包括运行时和设计时两种状态,同一portlet可以在同一页面放置多份,或者在不同页面均有放置,因此portlet在放置于页面中时为portlet的运行时状态,需要生成运行时状态的实例ID。
每个portlet都会定义自己的发送消息的类型,并定义自己可以接收的消息的类型,在页面设计时,portlet会生成一个运行实例,运行实例的portlet在消息服务器上注册消息路由配置,选择自身可接收哪些portlet实例发送的哪些消息。
所述portlet具有消息接收的公共接口,该接口负责消息的解析以及对消息体所包含方法的调用执行。
步骤三中,当portlet在发生状态改变时,根据部件注册的事件机制,构造特定类型的消息定义信息,发送到消息服务器。
步骤四中,消息引擎分发消息的步骤为根据收到的消息进行消息分发的工作,消息引擎在收到消息后,解析消息体,查找待接收消息的portlet实例信息以及实例所运行的页面信息:如果存在和源portlet同页面的portlet实例,则直接通过HTTP进行返回,由客户端脚本进行消息发送;如果存在跨页面通信的情况,则通过服务端消息引擎进行消息推送到各个页面。
所述portlet包括源portlet和目标portlet,当源portlet状态改变时,发送消息到消息服务器;消息服务器根据源portlet消息路由设置、消息类型,向目标portlet广播该消息;目标portlet接收广播消息,并更改自身状态。
上述portlet状态更改的具体过程为:源portlet的状态发生改变时,会根据自身状态的变更类型,向消息服务器发送指定类型的消息;消息服务器接收到源portlet发送来的消息,根据消息路由设置,对消息进行广播,这时广播会根据发送消息的源portlet运行实例所在的页面,针对本页面进行页内客户端方式广播,针对非本页面进行服务端推送的方式进行广播;目标portlet收到消息服务器发送来的消息后,对消息进行解析,匹配对应的处理方法,进行自身状态更新。
实例:
场景:XX企业门户页面index页面为门户首页页面,index页面包含一个查询部件(portlet)S,一个已办任务统计部件T。list页面为已办任务列表页面,此页面包含一个分页列表部件L。S部件包含一个年度选择下拉列表框,和一个搜索按钮控件,当选择一个年度,比如2014,点击搜索按钮,当前页面的部件T,更新统计数据为2014年所有待办任务的条数。List页面数据更新为2014年度的所有待办明细,并更新分页显示信息。其定义的步骤为:
步骤一:定义一个待办任务查询类型的消息。其结构定义为:
publicclassPortletMessage
{
publicstringMessageType;//消息类型
publicportletMessageBodymsgbody;//消息体
}
publicclassportletMessageBody
{
publicstringMethodName;//方法名称
publicstring[]args;//参数列表
publicstringPortletInstanceID;//部件实例ID
publicstringurl;//部件所在页面URL
publicHttpContextcontext;//部件上下文信息
}
PortletMessageDBRW_SearchMessage=newPortletMessage()
{
MessageType="dbrwsearch";
msgbody=newportletMessageBody()
{
MethodName="search";
args={"year"};
PortletInstanceID="";
url="";
context=null;
};
};
步骤二:部件T和部件L配置消息路由,接收消息类型为dbrwsearch的消息。
步骤三:部件S发送消息给消息服务器。
functionsendmsg(callback){
if(typeof(callback)==='function'){
sendFlag=callback;
//向消息服务器发送信息
varmsg="submit";
variframe=document.getElementById("myiframe");
iframe.contentWindow.postMessage(String(msg),"*");
}
}。
步骤四:消息服务器接收消息,消息引擎对消息进行解析,路由并转发消息。
步骤五:部件T和部件L接收消息,并更新自身状态。
综上所述,本发明通过基于共享消息的potlet通信的架构,可以规范企业门户(portal)中portlet的通信机制,并提供了portlet的实时通信的方法。基于此方法可以实时的对各页面的部件(portlet),并监控通信状态,解决了企业门户中多页面portlet通信实时性差、portlet通信可靠性低的问题,提高了系统运维效率。
通过上面具体实施方式,所述技术领域的技术人员可容易的实现本发明。但是应当理解,本发明并不限于上述的具体实施方式。在公开的实施方式的基础上,所述技术领域的技术人员可任意组合不同的技术特征,从而实现不同的技术方案。
除说明书所述的技术特征外,均为本专业技术人员的已知技术。

Claims (9)

1.一种基于共享消息的portlet通信方法,其特征在于,其实现过程为:
步骤一:定义共享消息的结构,该共享消息包括消息类型、消息体;
步骤二:设置portlet消息路由配置;
步骤三:portlet发送消息到消息服务器;
步骤四:消息引擎解析消息体,分发消息,根据步骤三获取的消息内容,解析消息的类型以及消息体,获取消息来源页面信息、发送消息的portlet运行实例信息以及实例的上下文信息,根据接收到消息的消息类型,通过路由规则,获取可接收此类型消息的portlet实例信息,进行消息分发;
步骤五:portlet接收消息,更新自身状态。
2.根据权利要求1所述的一种基于共享消息的portlet通信方法,其特征在于,消息体包括消息所触发事件的事件名称、事件所需参数、消息上下文信息。
3.根据权利要求1所述的一种基于共享消息的portlet通信方法,其特征在于,步骤二中的消息路由配置过程为:在每个portlet运行实例上配置所接受消息的类型,每个portlet运行实例可以接受多个portlet发送的多种消息,定义消息执行的优先级以及同一消息类型有多个发送源的情况下消息生效的规则。
4.根据权利要求3所述的一种基于共享消息的portlet通信方法,其特征在于,所述运行实例是指运行时状态的实例ID,即portlet放置于页面portlet容器中时生成portlet实例ID,每个portlet定义自己的发送消息的类型,并定义自己可以接收的消息的类型,在页面设计时,portlet生成一个运行实例,运行实例的portlet在消息服务器上注册消息路由配置,选择自身可接收哪些portlet实例发送的哪些消息。
5.根据权利要求3所述的一种基于共享消息的portlet通信方法,其特征在于,所述portlet具有消息接收的公共接口,该接口负责消息的解析以及对消息体所包含方法的调用执行。
6.根据权利要求1所述的一种基于共享消息的portlet通信方法,其特征在于,步骤三中,当portlet在发生状态改变时,根据部件注册的事件机制,构造特定类型的消息定义信息,发送到消息服务器。
7.根据权利要求1所述的一种基于共享消息的portlet通信方法,其特征在于,步骤四中,消息引擎分发消息的步骤为根据收到的消息进行消息分发的工作,消息引擎在收到消息后,解析消息体,查找待接收消息的portlet实例信息以及实例所运行的页面信息:如果存在和源portlet同页面的portlet实例,则直接通过HTTP进行返回,由客户端脚本进行消息发送;如果存在跨页面通信的情况,则通过服务端消息引擎进行消息推送到各个页面。
8.根据权利要求1-7任一所述的一种基于共享消息的portlet通信方法,其特征在于,所述portlet包括源portlet和目标portlet,当源portlet状态改变时,发送消息到消息服务器;消息服务器根据源portlet消息路由设置、消息类型,向目标portlet广播该消息;目标portlet接收广播消息,并更改自身状态。
9.根据权利要求8所述的一种基于共享消息的portlet通信方法,其特征在于,上述portlet状态更改的具体过程为:源portlet的状态发生改变时,会根据自身状态的变更类型,向消息服务器发送指定类型的消息;消息服务器接收到源portlet发送来的消息,根据消息路由设置,对消息进行广播,这时广播会根据发送消息的源portlet运行实例所在的页面,针对本页面进行页内客户端方式广播,针对非本页面进行服务端推送的方式进行广播;目标portlet收到消息服务器发送来的消息后,对消息进行解析,匹配对应的处理方法,进行自身状态更新。
CN201610106207.6A 2016-02-26 2016-02-26 一种基于共享消息的portlet通信方法 Active CN105808360B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201610106207.6A CN105808360B (zh) 2016-02-26 2016-02-26 一种基于共享消息的portlet通信方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201610106207.6A CN105808360B (zh) 2016-02-26 2016-02-26 一种基于共享消息的portlet通信方法

Publications (2)

Publication Number Publication Date
CN105808360A true CN105808360A (zh) 2016-07-27
CN105808360B CN105808360B (zh) 2019-02-15

Family

ID=56465894

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201610106207.6A Active CN105808360B (zh) 2016-02-26 2016-02-26 一种基于共享消息的portlet通信方法

Country Status (1)

Country Link
CN (1) CN105808360B (zh)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106528108A (zh) * 2016-10-31 2017-03-22 任子行网络技术股份有限公司 一种基于代码文件路由的web开发方法和装置
CN108874566A (zh) * 2018-07-11 2018-11-23 深圳市分期乐网络科技有限公司 页面通信方法、装置、设备及存储介质
CN110110274A (zh) * 2019-05-17 2019-08-09 极智(上海)企业管理咨询有限公司 一种浏览器多页面消息处理分发方法
CN111382381A (zh) * 2018-12-28 2020-07-07 北京字节跳动网络技术有限公司 一种用户数据共享方法、装置、移动终端及存储介质

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060085500A1 (en) * 2004-10-20 2006-04-20 Bea Systems, Inc. Message interface for configuring web services for remote portlets
CN101034413A (zh) * 2006-03-06 2007-09-12 国际商业机器公司 复制和粘贴portlet的方法及系统
CN102065133A (zh) * 2010-12-03 2011-05-18 中国科学院软件研究所 支持Portlet协作构建复杂业务逻辑的方法和系统
CN102426526A (zh) * 2011-11-21 2012-04-25 江西省电力公司信息通信中心 一种基于语义模式的Portlet互操作工具
CN103167081A (zh) * 2011-12-16 2013-06-19 上海晨兴希姆通电子科技有限公司 消息的浏览编辑装置及方法、移动终端

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060085500A1 (en) * 2004-10-20 2006-04-20 Bea Systems, Inc. Message interface for configuring web services for remote portlets
CN101034413A (zh) * 2006-03-06 2007-09-12 国际商业机器公司 复制和粘贴portlet的方法及系统
CN102065133A (zh) * 2010-12-03 2011-05-18 中国科学院软件研究所 支持Portlet协作构建复杂业务逻辑的方法和系统
CN102426526A (zh) * 2011-11-21 2012-04-25 江西省电力公司信息通信中心 一种基于语义模式的Portlet互操作工具
CN103167081A (zh) * 2011-12-16 2013-06-19 上海晨兴希姆通电子科技有限公司 消息的浏览编辑装置及方法、移动终端

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106528108A (zh) * 2016-10-31 2017-03-22 任子行网络技术股份有限公司 一种基于代码文件路由的web开发方法和装置
CN108874566A (zh) * 2018-07-11 2018-11-23 深圳市分期乐网络科技有限公司 页面通信方法、装置、设备及存储介质
CN111382381A (zh) * 2018-12-28 2020-07-07 北京字节跳动网络技术有限公司 一种用户数据共享方法、装置、移动终端及存储介质
CN110110274A (zh) * 2019-05-17 2019-08-09 极智(上海)企业管理咨询有限公司 一种浏览器多页面消息处理分发方法

Also Published As

Publication number Publication date
CN105808360B (zh) 2019-02-15

Similar Documents

Publication Publication Date Title
US8073857B2 (en) Semantics-based data transformation over a wire in mashups
CN105808360A (zh) 一种基于共享消息的portlet通信方法
CN102934105B (zh) 在驻留的文字处理器中的协作光标
CN102664909B (zh) 通过用户标识符重新建立推送通知信道
CN103973737A (zh) 主动推送消息的方法、服务器及浏览器
US9367595B1 (en) Method and system for visual wiring tool to interconnect apps
CN103577197A (zh) 一种安卓应用程序动态表单的实现方法
CN102082992A (zh) 一种移动办公系统及实现方法
CN102291460B (zh) 基于Web Service的信息资源访问方法
CN101185303A (zh) 创建用于绑定应用程序与关联后端服务器之间的消息的映射文档的系统及方法
US20090327406A1 (en) Bus system
CN102043665A (zh) 知晓系统全景的应用间通信基础架构
CA2604902C (en) System and method for enabling group subscription for asynchronous push-based applications on a wireless device
CN111417942A (zh) 使用多变量http请求来识别http资源
CN105719036A (zh) 一种车辆监控系统
CN102480390A (zh) 用于系统监控的方法和装置
CN104320441A (zh) 无线通信系统间信息共享方法
CN103324764A (zh) 一种多条件任意关键字多字段模糊查询方法的Web实现
DE60101740T2 (de) Transformation von objekten zwischen einer rechnerprogrammiersprache und einer daten-darstellungssprache
CN110321120A (zh) 数据处理方法、数据处理装置及计算机可读存储介质
CN102158548A (zh) 一种企业服务总线接入外部服务的方法
CN108650183A (zh) 一种基于Web动态路由匹配技术的无人机信息查询系统
Tao et al. Applying SOA to intelligent transportation system
Kumar et al. Virtualization for manufacturing web services: A WS-RF approach
CN103731399A (zh) 基于cdn网络的数据访问方法、系统及装置

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant