专利名称:对计算机部件交互建模的模式的制作方法
技术领域:
本发明针对计算系统的改善及具体地针对用于对计算机系统或部件之间的交互建模的模式。
有许多称之为应用系统的不同计算机系统。其例子包括数据库管理或事务处理系统。这类系统有时称为“后端”系统,因一定的用户并不直接访问这些系统,而是通过特定的“前端”或用户接口,它们又再与应用程序通信以便实现用户所请求的功能。后端系统通常通过通信接口提供对后端系统功能的访问,通信接口允许对后端系统的远距和分布式使用。
由于后端系统是由不同公司或组所开发的,它们提供不同的访问方法,例如,提供不同API集合去使用它们的服务。这对应用开发者造成一个严重问题,他们被迫熟悉使用不同API以支持不同后端系统,甚至支持同一系统的不同通信方法。此外,要提供通用工具或这类访问的任何类型的自动化都是非常困难的,例如代码生成所需要的定制的工具是无法重新使用的,并且不支持多目标。不仅如此,这类工具所要求的特定运行时间支持也不能重新使用。这个问题特别麻烦,因不同后端系统的功能的抽象访问非常类似。
因此希望有高层接口的标准集合,这类系统可依附于上以便允许用通用模式对计算机系统或部件之间的这些交互作用建模。
根据本发明的一个方面,提供了一种改善的计算机系统和方法。
根据本发明的另一方面,提供了一种改善的计算机系统和方法,用于在后端系统的客户和部件之间交互或通信。
根据本发明的又一个方面,提供了一种计算机系统,包括一个用于在后端系统中的客户和部件之间进行交互的命令,该命令包括一个供后端系统变换用的输入对象;一个或多个输出对象,用于代表后端系统变换后的输入对象;一个连接规范,用于识别客户与其交互的后端系统;一个交互规范,用于识别后端系统中客户与其交互的部件;及一个通信对象,用于实现后端系统中客户与部件之间的连接,其中根据交互规范和连接规范向后端系统的部件提供输入对象和其中在由后端系统部件处理之后一个或多个输出对象接收变换的输入对象,其中命令由执行方法驱动和其中在处理输入对象中当后端系统的部件未遇到任何异常时该命令送出一个成功事件信号,及其中在处理输入对象中后端系统的部件遇到一个异常时该命令送出一个不成功事件信号。
根据本发明的又一个方面,提供了以上的计算机系统,其中该命令是一个面向对象的类。
根据本发明的又一个方面,提供了以上的计算机系统,其中输入对象和一个或多个输出对象中每一个是定义的Java框架中的记录群(bean)。
根据本发明的又一个方面,提供了一个包括导航器的计算机系统,该导航器用于形成后端系统的交互流,该导航器包括一个集合,其选择性地包含子命令和子导航器,该集合中的子命令和子导航器中每一个的执行方法由导航器的执行方法中所推导得的导航器中内部事件中的一个所触发,或由来自该集合的子命令和子导航器中另一个选择的一个的成功事件所触发,该集合中子命令和子导航器的连续执行由此而定义了后端系统的交互流,其中导航器由一个执行方法驱动和其中当该集合中子命令和子导航器的连续执行没有送出不成功事件信号时导航器送出一个成功事件信号及其中当该集合中子命令和子导航器的连续执行中任何一次执行送出一个不成功事件信号时导航器送出一个不成功事件信号,及其中子命令具有与命令等同的特性,及其中子导航器具有与导航器等同的特征。
根据本发明的又一个方面,提供了一个包括命令类的面向对象计算机环境,该命令类用于在后端系统中的客户和部件之间进行交互,该命令类包括一个输入对象,用于供后端系统中选择的一个系统变换;一个或多个输出对象,代表由选择的一个后端系统变换之后的输入对象;一个连接规范,用于识别客户与其交互的选择的一个后端系统;一个交互规范,用于识别客户与其交互的选择的一个后端系统中的选择的一个部件;以及一个通信对象,用于实现客户与选择的一个后端系统中的选择的一个部件之间的连接,其中根据交互规范和连接规范将输入对象提供给选择的一个后端系统的选择的一个部件,及其中在由选择的一个后端系统中的选择的一个部件进行处理后一个或多个输出对象接收变换的输入对象,其中命令类的一个实例由客户所调用的执行方法驱动,及其中在处理输入对象中当选择的一个后端系统的选择的一个部件未遇到任何异常时该命令的实例发出一个成功事件信号,及其中在处理输入对象中当选择的一个后端系统的选择的一个部件遇到一个异常时该命令发出一个不成功事件信号。
根据本发明又一个方面,提供了以上面向对象的计算机环境,其中该环境是Java编程语言环境及其中输入对象和一个或多个输出对象中每一个是在Java框架中定义的记录群及其中导航器如下所述地定义为一个类。
本发明的优点包括通过提供一个支持利用不同通信与不同后端系统交互的通用运行时间来提供问题的解决方法。
本发明还提供用实现以上描述的系统或过程的程序代码编码的媒体。
图中显示了本发明优选实施例,其中
图1是显示根据本发明优选实施例的命令体系结构的框图。
图2是显示根据本发明优选实施例的导航器的体系结构的框图。
图中通过例子阐述本发明优选实施例。应明确地理解,说明和图只用于阐述目的,有助于理解,并非用于限定本发明。
参照图1,以框图形式阐述根据优选实施例的命令的结构。在优选实施例中命令是面向对象编程语言中定义的类。参照Java编程语言描述优选实施例。熟悉技术的人知道其它支持面向对象结构的编程语言也可用于实施本发明优选实施例。
图1中命令10是一个用于访问后端系统的类。命令10具有方块12(InProperty方块集)中所示输入特性和方块14中所示输出特性。输入特性包含于输入对象16中,类似地,输出特性包含于输出对象18中,或可选地包含于附加的输出对象中,如图1中由输出对象20所代表的。命令10包括对象通信22。对象ConnectionSpec 24和InteractionSpec 26也包括于命令10中。命令10由方法执行28所驱动,并根据方法执行28的执行结果是建立一个异常(送出信号unsuccessfulEvent32)或不建立(送出信号successfulEvent30)而送出信号successfulEvent30或unsuccessfulEvent32。
如图1中所示,与后端系统的通信中涉及的元素为一个连接规范(图1示为ConnectionSpec24),交互规范(图1中示为InteractionSpec26),输入和输出记录群(图1中示为输入对象16和输出对象18、20)。在优选实施例的任何这类命令10中总存在着这些元素并实施同一逻辑由通信将输入转换为输出。以此方式,命令逻辑可由任何后端系统重用。
优选实施例描述支持与不同后端系统的交互作用的运行时间。优选实施例的运行时间提供一个对交互作用建模通用方法,仍足够灵活以容纳目标系统和它们的通信的不同需求。这又允许建立先进工具以使这种交互的构成自动化。由于优选实施例提供一种一致方法去访问不同系统,它可节省编程人员在建立为访问不同后端而必需的工具中的精力。使用优选实施例的通用模式的应用程序和工具可容易地重新使用。
命令10是用于构成与后端系统的通信(或交互)的基本构成块。换言之,命令10卷绕与一个系统的单个交互。在执行中它接收其输入数据,通过连接器(图1中的对象通信22)发送数据至后端系统,并将由后端系统送回的数据设置为其输出。在其描述层次上,命令10与许多计算机语言中的过程或子程序调用共享功能。
然而,命令10本身是随于特别构成模式之后的复合物。就是这一构成模式使命令10的价值在于允许与后端系统通信。
命令10的输入由输入对象16所定义。这种输入对象16的一个例子是Java群。群是一个Java语言结构,它等效于一个类,但能用可视编辑器编辑。命令10的输出是输出对象18。对于输出而言,存在这种可能性,即可能有多个定义为候补输出的输出对象(图1例中的输出对象18,20)。再次,Java群可用作输出对象。命令可显示其接口中整个对象,或只显示选择的对象特性,如性质12,14所阐述的。
输入和输出对象可具有不同形式。在优选实施例中,可能区别两种类型输入和输出对象。第一类输入或输出对象是RecordJava记录群。这类群实施IByteBuffer接口,它是定义的Java框架的一部分。第二类输入或输出对象是后端系统的连接器专用(图1中的通信22)的特性所定义的。连接器本身因此可考虑分为三类支持RecordJava记录群的一类,对连接器专用的输入和输出对象及RecordJava记录群两者都支持的一类,以及只支持连接器专用输入和输出对象的一类。
ConnectionSpec 24和InteractionSpec 26定义命令10如何与后端系统通信。ConnectionSpec 24是具体连接器通信10的制造厂。
ConnectionSpec 24的特性定义了连接器与其连接的后端系统(例如,主机名和端口号可能是ConnectionSpec 24的性质)。ConnectionSpec24可看作用于定义与系统间通信有关的对话的一个对象。定义通信的另一个对象是InteractionSpec 26。此对象具有所有与交互有关的特性(例如,通过通信22调用的程序的名称可能是InteractionSpec 26的一个特性)。InteractionSpec 26可看作用于定义会晤中具体交互的一个对象。
驱动命令执行的方法是执行(示如图1中的箭头28)。此方法包括以下步骤1.取得ConnectionSpec 24,从它分出一个通信。
2.将通信10与后端系统连接。
3.通过通信22发送输入对象16的数据。
4.接收输出对象18的数据(或可选地其它输出对象的数据,由输出对象20所表示)。
5.如不发生异常发出一个executionSuccessful事件信号(图1中的箭头30),否则发出一个executionUnsuccessful事件信号(箭头32)。不是由executionUnsuccessful事件信号接收者处理的异常被重新抛掷,及可由执行方法的客户捕获。
将理解,命令10可用于建立与不同后端系统的交互。通信22的复杂性因此是变化的,取决于与其交互的后端系统,复杂性的范围可自实际上不复杂变化至很大的复杂性。通信22可以是一个简单Java类或可以是一个RPC或来自IBM公共连接器框架的通信接口。
如上所述,命令10卷绕与一个后端系统的单个交互。根据优选实施例,提供了另一个称为导航器的类。导航器卷绕与一个后端系统的多个交互。
图2是阐述导航器40结构的框图。导航器40是一个组合命令。导航器40以与命令类似的方式与外部对象接口。导航器40组合包含命令,及可能包含形成与后端系统的交互流的导航器。
图2中显示具有命令Cmd.1 42,Cmd.2 44,Cmd.3 46和Navi.1 48的导航器40。
执行时导航器40取得其输入(InProperties 50)并将它提供给组成它的命令和导航器。交互可以按图2中的流程线路来执行。在最后交互之后,个别命令42,44和46及导航器48的输出可用作导航器的输出(OutProperties 52)。如图2所阐述,Cmd.1 42的执行方法由导航器40执行事件所启动(箭头54)。Cmd.2 44的执行方法由来自Cmd.1 42的successfulEvent事件启动,对其它命令和导航器40中的导航器也以此类推。
可选地通过导航器层次上的连接规范来定义导航器40如何与后端系统通信,而不是为组合中每个命令定义它。连接规范是导航器正使用的具体连接器通信(组合中由所有命令使用的通信)的制造厂。
导航器40在命令42、44或46或导航器48中的一个中出现一个异常的情况下到达不成功执行状态。导航器40通过送出executionUnsuccessful事件信号(箭头56)来显示这点。不是由executionUnsuccessful事件信号接收者处理的异常被重新抛掷,及可由执行方法的客户捕获。
如上所述,命令类定义一个运动时间,后者允许以清楚的和很好定义的方式与后端系统交互。命令类可用于建立导航器类,后者允许与将要定义的后端系统或系统的交互流。
上述命令和导航器类适用于可视编程系统。由于此原因,在建立优选实施例的类时使用Java群(为可视编程设计的类)是有利的。可自图2看出,可视编程环境能够再现优选实施例对象之间的关系,再现方式使得使用命令和导航器类的编程工作相对地简单和有效。
虽然详细地描述了本发明的优选实施例,但熟悉技术的人知道,可在不背离本发明的实质和所附权利要求书的范围的情况下做出对它的变动。
权利要求
1.一个计算机系统,包括一个用于在客户与后端系统中部件之间进行交互的命令,该命令包括一个输入对象,用于供后端系统变换,一个或多个输出对象,代表由后端系统变换后的输入对象,一个连接规范,用于识别客户将与其交互的后端系统,一个交互规范,用于识别客户将与其交互的后端系统中的部件,及一个通信对象,用于实现客户与后端系统的部件之间的连接,其中根据交互规范和连接规范提供输入对象给后端系统的部件及其中一个或多个输出对象接收由后端系统的部件处理后的变换的输入对象,其中命令由执行方法驱动及其中在处理输入对象中当后端系统的部件不遇到任何异常时,该命令发出一个成功事件信号,及其中在处理输入对象中当后端系统的部件遇到一个异常时,该命令发出一个不成功事件信号。
2.权利要求1的计算机系统,其中该命令是一个面向对象的类。
3.权利要求2的计算机系统,其中输入对象和一个或多个输出对象中的每一个都是定义的Java框架中的记录群。
4.权利要求1的计算机系统,还包括一个用于形成与后端系统的交互流的导航器,该导航器包括选择性地包括子命令和子导航器的集合,其中集合中每个子命令和子导航器的执行方法由自导航器的执行方法中导得的导航器中一个内部事件所启动,或由来自子命令和子导航器的另一选择的集合中的成功事件所启动,集合中子命令和子导航器的连续执行从而定义了与一个后端系统的交互流,其中导航器由执行方法驱动及其中当集合中子命令和子导航的连续执行不发出任何不成功事件信号时,导航器发出一个成功事件信号,及其中当集合中子命令和子导航器的连续执行中的任何一次执行发出一个不成功事件信号时,导航器发出一个不成功事件信号,及其中子命令具有与命令等同的特性,及其中子导航器具有与导航器等同的特性。
5.一种具有用于在客户和后端系统中的部件进行交互的命令类的面向对象的计算机环境,该命令类包括一个输入对象,供选择的一个后端系统变换之用,一个或多个输出对象,代表在选择的一个后端系统进行变换之后的输入对象,一个连接规范,用于识别客户将与其交互的选择的一个后端系统,一个交互规范,用于识别客户将与其交互的选择的一个后端系统的选择的一个部件,及一个通信对象,用于实现客户与选择的一个后端系统的选择的一个部件之间的连接,其中根据交互规范和连接规范提供输入对象给选择的一个后端系统的选择的一个部件,及其中一个或多个输出对象在选择的一个后端系统的选择的一个部件进行处理后接收变换的输入对象,其中命令类的一个事例由客户所调用的执行方法驱动,及其中在处理输入对象中当选择的一个后端系统的选择的一个部件不遇到任何异常时命令的事例发出一个成功事件信号,及其中在处理输入对象中当选择的一个后端系统的选择的一个部件遇到一个异常时该命令发出一个不成功事件信号。
6.权利要求5的面向对象计算机环境,其中该环境为Java编程语言环境及其中输入对象和一个或多个输出对象中的每一个是定义的Java框架中的记录群。
7.权利要求5的面向对象计算机环境还包括一个用于形成一个与后端系统的交互流的导航器类,导航器包括选择性地包括子命令和子导航器的集合,其中集合中每个子命令和子导航器的执行事件由自导航器执行方法中导得的导航器中内部事件启动,或由来自子命令和子导航器的另一个选择集合中的成功事件启动,集合中子命令和子导航器的连续执行从而定义与一个或多个后端系统的交互流,其中导航器由执行方法驱动及其中当集合中子命令和子导航器的连续执行不发出任何不成功事件信号时,导航器发出一个成功事件信号,及其中当组合中子命令和子导航器的连续执行中任何一次执行发出一个不成功事件信号时,该导航器发出一个不成功事件信号,及其中子命令具有与命令等同的特性,及其中子导航器具有与导航器等同的特性。
8.一种用于在客户与后端系统中部件之间进行交互的方法,包括以下步骤用执行方法驱动一个命令及自命令接收事件,该命令发出客户与后端系统间的交互作用的成功执行信号或不成功执行信号,执行方法包括以下步骤自连接规范和交互规范中分出一个通信,连接规范是一个用于识别客户将与其交互的后端系统的对象,交互规范是一个用于识别与交互有关的通信特性的对象,使用分出的通信连接客户与后端系统,通过分出的通信发送输入对象的数据,通过分出的通信接收一个或多个输出对象的数据,如不出现异常,则发出执行成功事件信号,否则发出一个执行不成功事件信号。
9.一个用于存储在计算机中执行权利要求8的过程所用指令的计算机可读存储器。
全文摘要
一个计算机系统和方法,包括允许在客户与后端系统中的部件之间进行交互的命令。命令具有一个供后端系统变换的输入对象并定义一个或多个代表由后端系统变换后的输入对象的输出对象。命令包括一个用于识别客户将与其交互的后端系统的连接规范,及一个用于识别客户将与其交互的后端系统中的部件的交互规范。命令还包括一个用于在客户与后端系统的部件之间实现连接的通信对象。根据交互规范和连接规范提供输入对象给后端系统的部件。
文档编号G06F9/44GK1249471SQ99118750
公开日2000年4月5日 申请日期1999年9月16日 优先权日1998年9月24日
发明者皮奥切·普里亚尔斯吉, 萨斯卡·博迈斯特, 迈克尔·贝谢格 申请人:国际商业机器公司