接口模块 【发明领域】
本发明涉及接口模块。更具体地但不排他地,本发明涉及软件模块之间的接口模块。甚至更具体地,但不排他地,本发明涉及通信软件模块和业务逻辑(business logic)软件模块之间的接口模块。
背景技术
一般地,业务软件引擎包括一个前端通信模块和多个后端业务逻辑模块的实例。在响应于用户查询而询问业务引擎期间,前端模块接收相应于用户查询的查询数据。接着前端模块确定哪个后端模块最适合于处理用户查询。一般地,基于下述标准,例如哪个后端模块正在运行恰当的业务逻辑以及特定后端在接收到用户查询时所承受的负载,来做出该确定。
后端模块处理查询数据,并制定用于询问合适的外部服务器的询问数据。该询问数据从其被发送到的合适的外部服务器传递到前端模块。一般地,通过后端模块进行的数据处理被暂停,直到从外部服务器接收到对询问数据的答复为止。
来自外部服务器的答复经由前端模块发送到被暂停的后端模块。数据处理在被暂停的后端模块重新开始,并且来自答复的数据合并成一个响应。所述响应经由前端模块输出给用户。
这种安排不能导致资源的有效利用,因为每个后端模块实例只能处理单个请求。这是因为在每个后端模块的处理都被暂停,直到从外部服务器接收到对询问数据的答复为止。
试图异步地处理答复可导致后端模块内数据的损坏,因为数据被从后端模块同时地写入和读取。
发明概述
根据本发明的第一个方面,提供了一种包括第一功能元件和第二功能元件的接口模块,第一功能元件设置为接收来自通信模块的输入数据,并基于数据结构中保存的规则集来选择多个逻辑模块实例中的哪一个转发输入数据,且进一步设置为经由第二功能元件向所选择的逻辑模块实例传递输入数据,所述接口模块特征在于,第二功能元件设置为确定所选择的逻辑模块实例的工作模式,并引起(mediate)数据在所选择的逻辑模块实例和第一功能元件之间的传递,且第一功能元件设置为根据所选择的逻辑模块的工作模式,将输入数据顺序地传递到第二功能元件,或将对应于汇总数据记录的数据传递到第二功能元件,所述汇总数据记录对应接收到的输入数据的汇总。
这种模块防止逻辑模块内数据的损坏,因为数据不同时写入逻辑模块也不同时从逻辑模块读取。
第一功能元件可以与通信模块关联。第二功能元件可以与逻辑模块关联。可以有多个第二功能元件,每一个都与逻辑模块实例相关联。
接口的功能元件的这种划分允许特定的功能与它们所相互作用的模块关联,独立地产生每个逻辑模块。这增加了系统内的冗余度,因为第二功能元件可能失效而不损害剩余逻辑模块实例的操作。
数据结构可以包括对应于规则的数据项目。数据结构可以存储在第一功能元件中。
第一功能元件可以设置为接收来自远程终端的输入查询数据,并可进一步设置为根据规则分配多个逻辑模块中的哪一个传递查询数据。所述规则可包括以下项中的任何一个或者组合:给定逻辑模块的适合性、给定逻辑模块的使用、给定逻辑模块的工作状态。
第一功能元件调节流入和流出逻辑模块实例的数据流,以便实现逻辑模块的有效使用。这因此增加了运行逻辑模块的处理器的工作效率。
第一功能元件可设置为响应于请求数据而询问外部服务器,所述请求数据通过第二功能元件从多个逻辑模块中的一个被接收。第一功能元件可设置为存储来自外部服务器的响应数据,并可进一步设置为从其产生汇总数据记录。可选地,第一功能元件可设置为将响应数据顺序地传递到逻辑模块。
这允许管理来自外部数据库的响应数据的多个实例,以便降低数据损坏的可能性。
所述接口可包括上下文数据结构。所述上下文数据结构可包括对应于下列项中的任何一个或者结合的数据项目:查询数据向逻辑模块的分配、与查询数据实例关联的全局超时参数、与每个查询数据实例关联的会话标识符(SID)、与外部服务器地询问的实例关联的特定响应超时。所述上下文数据结构可存储在第一功能元件内。
所述上下文数据结构允许以下述方式执行对查询数据的管理,即逻辑模块实例可自由处理不同的查询数据,同时远程服务器被询问。
第一功能元件可设置成当询问外部服务器和从所述外部服务器接收响应数据之间经过的时间超过预定超时阈值时,将超时数据返回到所述第二功能元件。
根据本发明的第二个方面,提供了一种软件,当所述软件在处理器上执行时使所述处理器如本发明的第一个方面所述的接口起作用。
根据本发明的第三个方面,提供了在通信模块和逻辑模块实例之间进行接口连接的方法,其包括以下步骤:
基于数据结构中保存的规则集,选择多个逻辑模块实例中的哪一个转发输入数据;
将输入数据传递到所选择的所述逻辑模块实例;
其特征在于
确定所选择的所述逻辑模块实例的工作模式;以及
根据所选择的所述逻辑模块实例的所述工作模式,将在所述通信模块接收到的输入数据顺序地或者作为汇总数据记录传递到所选择的所述逻辑模块实例,所述汇总数据记录对应于在所述通信模块接收到的输入数据的汇总。
附图简述
现在参考随附的附图,仅作为例子在这里描述本发明的实施方式,其中:
图1是根据本发明的一个方面的包括接口的实施方式的业务软件引擎的业务引擎的示意图;以及
图2是流程图,其详细描述了根据本发明的另外的方面的在通信模块和逻辑模块实例之间进行接口连接的方法的实施方式。
本发明的实施方式的详述
现在参考图1,示例性业务引擎100包括前端模块102、多个后端模块实例104a-c及呼叫协调器接口106。一般,所述呼叫协调器接口(CCI)106包括与前端模块102相关联的第一元件106a及与相应的后端模块104a-c相关联的多个第二元件106b。通常,CCI 106a是中间设备。
CCI 106的第一元件106a包括数据结构108,所述数据结构108包含用来管理输入数据分配到后端模块104a-c中的哪一个的规则110。第一元件106a还包括上下文服务器112。
前端模块102包括通信软件,所述通信软件通过网络117提供业务软件引擎110、外部终端114和服务器116a-c之间的连通性。一般,网络117包括互联网或者专用网。
一般,后端模块104a-c包括业务逻辑软件,所述业务逻辑软件控制对用户产生的查询的回复的生成,用户产生的查询被从远程终端114接收到。
在使用中,前端模块102以本领域技术人员已知的方式通过负载平衡设备115接收与用户查询相关联的数据,并且将查询传递到CCI 106的第一元件106a。
当接收到查询时,第一元件106a建立用于查询的上下文,并将与查询关联的数据项目存储到上下文服务器112中。例如,该上下文服务器数据项目将包括与查询关联的会话ID,其可被用于识别与查询关联的输入的和传出的通信或全局响应超时参数。全局超时参数限定了一段时间,超过这段时间将认为整个查询没有完成。因此,如果在全局响应超时参数限定的时间内未向用户提供对查询的响应,则通过终端114向用户发送超时响应。
第一元件106a根据存储在数据结构108中的规则110将查询分配给一个后端模块104a,以用于处理。用于将查询分配给特定的后端模块的一般规则包括后端模块实例是否适于处理请求,后端模块实例是否自由地处理请求,后端模块实例是否是可操作的,对查询是否已经建立SID。
接着第一元件106a将查询数据传递到CCI 106的第二元件106b。第二元件106b确定它所关联的后端模块104a是以单发(single-shot)模式还是以多发(multiple shot)模式运行。查询数据经由第二元件106b传递给后端模块104a。
后端模块104a确定哪个外部服务器116a-c需要询问,以便满足用户查询。请求询问服务器116a-c的数据传递到第二元件106b。此时第二元件106b可将服务器特定的响应超时参数置入询问数据中。该询问数据从第二元件106b传递到第一元件106a,其中例如不管服务器特定的响应超时数据是否存在并且逻辑模块106以何种模式进行操作,额外的上下文数据都被存储在上下文服务器112中。一旦询问数据传递到前端模块102,产生询问数据的后端模块实例104a就自由地连续处理数据。在第一元件106a中保存的数据被更新以反映此情况。
询问数据传递到前端模块102,然后根据询问数据的内容询问服务器106a-c。
服务器116a-c处理数据并通过前端模块102将响应数据返回到业务引擎100。
当在前端模块102接收到响应数据时,第一元件106a在上下文服务器112中存储响应数据,所关联的标记详述服务器116a-c的每次询问的成功。例如,所述标记可指示服务器的询问在一个通信层已经超时、已经成功或者已经失败。
第一元件106a识别产生询问数据的后端模块实例104a是以单发模式还是多发模式操作。然后第一元件106a识别适于并自由地处理响应数据的后端模块实例104a-c。这可以是产生询问数据的同一后端模块实例104a,或者它可以是另外的后端模块实例104b、104c。一般,某些后端模块实例是完全相同的,因此是可互换的。
第一元件106a通过第二元件106b向后端模块104a传递响应数据以及保存在上下文服务器112中的上下文数据。
如果后端模块104a以单发模式操作,则包含与所有响应数据对应的数据的汇聚数据记录将传递到后端模块104a。
然而,如果后端模块104a以多发模式操作,则对应于每个服务器116a-c的询问的结果的响应数据将被返回到后端模块104a。
后端模块104a处理响应数据,并通过第一元件106a和第二元件106b、前端模块102和网络118,将包含对用户查询的应答的数据输出到远程终端114。
例如,如果业务引擎100是旅行预订引擎,且用户请求从柏林到尼斯的航班的详细资料,则前端通信模块从用户终端113接收请求。
请求被传递到CCI 106的第一元件106a,第一元件106a给该请求分配会话ID并将其存储在上下文服务器112内。第一元件106a将请求分配给后端模块实例104a-c。
例如,两个后端模块实例104a、104b可以处理航班预订,且另一个后端模块实例104c可以处理旅馆预订。在这种情况下,第一元件106a识别出不适合发送请求到旅馆预订后端模块实例104c。一个航班预订后端模块实例104b可以参与处理另一请求。因此,第一元件106a将请求分配给处理航班预订的可用的后端模块实例104a。
请求被传递到CCI 106的第二元件106b,并接着传递到可用的航班预订后端模块实例104a。这以已知的方式处理请求,并输出请求三个航线服务器116a-c的询问的询问数据。询问数据通过CCI 106经由第二元件106b传递到第一元件106a。在第二元件106b处,标记被添加到询问数据,以便指示后端模块实例104a是以单发模式还是多发模式操作,以及服务器特定的响应超时参数是否已经被设定。
第一元件106从询问数据中提取标记,并将其与用于会话的上下文数据一起存储,所述会话如上下文服务器112中的会话ID所识别的。
询问数据传递到通信前端模块102,询问数据从该通信前端模块102经由网络117被传送到航线服务器116a-c。服务器116a-c以本领域技术人员已知的方式被询问。响应数据经由网络117被传送到业务引擎100,所述响应数据包含关于柏林到尼斯航线中的座位的可得到性和价格的数据。
响应数据通过前端模块102传递到CCI 106的第一元件106a,此处响应数据被分配到适当的自由的后端模块实例104a,如前所述。
假如在CCI 106的第一元件106a处定义全局响应超时参数,如果在超时时间段终止之前在前端模块102没有接收到所有的响应数据,则请求可能超时。如果出现这种情况,则前端模块102产生传递到后端模块实例104a的通知数据。然后这触发产生超时消息的超时答复序列,所述超时消息由前端模块102经由网络117发送到用户终端114。
响应数据传递到前端模块确定为适当和自由使用的后端模块实例104a,如果后端模块实例104a以多发模式操作,则响应数据被顺序地传递,或者如果后端模块实例104a以单发模式操作,则响应数据作为汇聚数据记录被传递。后端模块实例104a根据所述实例104a中运行的业务逻辑来处理响应数据。
如果后端模块实例104a以多发模式操作,并且服务器特定的超时被设置,则航线服务器116a-c中的任何一个或者特定的一个不能在服务器特定的响应超时中指定的时间限制内进行响应会导致输出答复数据,其中该超时故障被记录到第一元件106a。一般,可以定义服务器特定的响应超时参数,其中已知特定的服务器有差的可靠性记录、正在经历升级或由于任何其它原因的任何情况。
如果没有违反任何响应超时参数,则后端模块实例104a向第一元件106a输出答复数据。
第一元件106a向前端模块102传递任何答复数据,前端模块102经由网络117给用户终端114发送答复数据。
现在参考图2,在通信模块和逻辑模块实例之间的接口连接方法包括基于数据结构中保存的规则集来选择多个逻辑模块实例中的哪一个转发输入数据(步骤200)。输入数据传递到所选择的逻辑模块实例(步骤202)。确定所选择的逻辑模块实例的工作模式(步骤204)。将在通信模块接收到的输入数据顺序地或者作为汇总数据记录传递到所选择的逻辑模块,所述汇总数据记录对应于在通信模块接收到的输入数据的汇总。这取决于所选择的逻辑模块实例的工作模式(步骤206)。
应认识到,虽然参考旅行数据描述本发明,但本发明适合于用在任何引擎中,在所述引擎中多个业务逻辑实例或其他任何逻辑与调节流入和流出逻辑实例的数据流的通信模块相互作用。
应进一步认识到,虽然CCI的第一元件和第二元件被描述为分离的且分别与前端模块和后端模块实例关联,但是CCI可以是具有在其内运行的多个第二元件实例的分立的系统元件。
尽管描述了本发明的各种实施方式,一旦给出本公开,对本领域技术人员来说明显的是,可以进行各种修改、改变、改进和变化,而不背离本发明的范围。