软件系统及插件间消息传递方法_2

文档序号:8319004阅读:来源:国知局
所述第一插件10全部功能的作为消息发送给所述基础平台30。在一个所述消息中,可以只代表一个功能,也可以代表多个功能。在本实施方式中,所述第一插件10仅将已经明确其将要执行的功能作为消息发送给所述基础平台30。从而有利节省硬件的存储资源。
[0024]所述通知模块14用于在所述消息代表的功能被执行时,通知所述基础平台30。即所述消息代表的功能被执行。在本实施方式中,在发出所述消息之后,随着软件用户的使用操作,触发了所述第一插件10在所述基础平台30注册的消息,此时所述第一插件10通过所述通知模块14通知所述基础平台30所述消息已经发生,则所述基础平台30可以进一步扩散传播该消息,如此实现了插件之间的消息传递。所述消息代表的功能被执行,可以为所述第一插件10要开始执行所述功能,也可以为所述第一插件10在执行所述功能的过程中,还可以为所述所述第一插件10执行完成所述功能。
[0025]所述第二插件20包括侦听请求模块22和消息接收模块24。
[0026]所述侦听请求模块22用于向所述基础平台30发出侦听请求,所述侦听请求为侦听所述消息的发生。插件需要向所述基础平台30提出侦听请求,并告知所述基础平台30需要侦听的功能名称,如此当所述功能被执行后,所述基础平台30才能够将所述消息发送给所述插件。在本实施方式中,举例为所述第二插件20的功能H以所述第一插件10的功能G的执行为前提,故所述第二插件20需要侦听所述功能G的执行状况。所述第二插件20通过所述侦听请求模块22向所述基础平台30发出侦听请求,用于侦听所述第一插件10的所述功能G是否被执行。
[0027]在所述软件系统运行过程中,可以在加载所述第二插件20时,即由所述第二插件20向所述基础平台30发出全部的侦听请求,也可以在所述第二插件20加载完成之后,随着所述第二插件20的程序执行,动态的向所述基础平台30发出侦听请求。举例为,所述第二插件20共需要侦听插件W的功能W1,插件X的功能Xl和插件Y的功能Yl是否被执行,可以在所述第二插件20被所述软件系统加载时,即向所述基础平台30提出针对所述功能W1、所述功能Xl和所述功能Yl的侦听请求,也可以在所述第二插件的程序执行过程中,因程序的需要动态的向所述基础平台30发出针对所述功能W1、所述功能Xl和所述功能Yl中部分或全部的侦听请求。在本实施方式中,所述第二插件20被所述软件系统加载时,即向所述基础平台30提出全部的侦听请求。
[0028]所述侦听请求中包括需要侦听的功能对应的消息,以及发出所述侦听请求的插件的身份信息。所述身份信息可以为所述插件的名称,或所述插件中的函数的名称,或者能够唯一表示所述插件的其它信息。在本实施方式中,所述身份信息为所述插件的名称。
[0029]所述消息接收模块24用于接收从所述基础平台30发出的所述消息。在本实施方式中,所述第二插件20向所述基础平台30提出侦听请求之后,所述基础平台30会在侦听的功能被执行时发出消息给所述第二插件20,所述消息接收模块24即用于接收从所述基础平台30发出的所述消息。
[0030]所述基础平台30用于为所述第一插件10和所述第二插件20之间传递消息。所述基础平台30可以为所述软件系统100的底层框架,也可以是单独开发用于实现消息传递的插件。在本实施方式中,所述基础平台30为所述软件系统的底层框架。
[0031]所述基础平台包括接收模块32和收发模块34。
[0032]所述接收模块32用于接收和保存所述消息和所述侦听请求。所述接收模块32接收到所述消息之后,保存所述消息。所述接收模块接32收到所述侦听请求之后,获取所述侦听请求中功能的名称,则对应保存所述消息和发出所述侦听请求的插件的身份信息。
[0033]在一些情况下,所述接收模块32会首先接收到所述消息,然后接收到所述侦听请求。此时所述接收模块32会首先保存所述消息,在接收到所述侦听请求之后,对应所述消息保存发出所述侦听请求的插件的身份信息。在一些情况下,所述接收模块32会首先接收到所述侦听请求,然后接收到所述消息。此时所述接收模块32先保存所述侦听请求中侦听的消息和发出所述侦听请求的插件的身份信息,在接收到所述消息时,若发现所述消息已经被保存,则不再重复保存。在本实施方式中,所述接收模块32设置有一个消息表,所述消息分两列存储数据,第一列为所述消息,第二列为需要侦听所述消息的插件的身份信息。如此,当所述消息发生时,所述基础平台30通过所述消息表中的记录,便可以得出需要告知所述消息的插件。
[0034]所述收发模块34用于在接收所述发送模块通知后,将所述消息发送给所述第二插件,表示所述消息发生。所述收发模块34接收到所述通知模块14的通知,将所述消息发送给侦听所述消息的插件。在本实施方式中,所述收发模块34接收到所述通知模块14的通知,在所述消息表中查找侦听所述消息的插件的身份信息即所述第二插件,将所述消息发送给所述第二插件。
[0035]所述基础平台30作为所述第一插件10和所述第二插件20之间沟通的媒介,使得所述第一插件10和所述第二插件20之间可以不发生直接的信息传递。当需要所述第一插件10向所述第二插件20传递信息时,所述第一插件10会将所述信息首先发送给所述基础平台30,所述基础平台30再将所述信息发送给所述第二插件20。由此,所述软件系统100中的所述第一插件10和所述第二插件20之间不再发生直接的消息传递,使得二者之间的耦合度被降低。进一步的,软件用户需要针对所述第一插件10或所述第二插件20改进,再或者编制全新的插件时,只需要关注要修改或全新编制的插件本身,并适当调用所述基础平台提供的程序接口即可,如此极大的提高了所述软件系统100的适用度,满足了软件用户的使用需求。
[0036]请参阅图2,本发明第二实施方式提供一种软件系统200,其与所述第一实施方式提供的软件系统100基本相同,其不同之处在于:所述基础平台30为所述第一插件10和所述第二插件20传递消息的基础上,还为所述第一插件10和所述第二插件20传递数据。如此所述第一插件10和所述第二插件20之间的交互均通过所述基础平台30实现,进一步降低所述第一插件10和所述第二插件20的耦合度。
[0037]所述第一插件10包括:用于向所述基础平台30发出数据注册请求的数据注册模块11,所述数据注册请求中包括所述第一插件10需要注册的数据。
[0038]在本实施方式中,所述第一插件10的程序执行过程中,需要与所述第二插件20进行数据交互,如所述第一插件10中某一程序段运行的结果是所述第二插件20某一程序段的输入。此时,所述第一插件10首先对数据进行初始化,然后所述数据注册模块11将包括所述数据的所述数据注册请求发送给所述基础平台30。
[0039]所述基础平台30包括:用于接收所述数据注册请求,并按照预定保存规则存储所述数据的数据保存模块31 ;用于接收数据使用请求,并反馈数据的数据反
当前第2页1 2 3 4 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1