可扩充的分布企业应用集成系统的制作方法

文档序号:6418860阅读:235来源:国知局
专利名称:可扩充的分布企业应用集成系统的制作方法
技术领域
本发明涉及在计算机领域已知的“中间件”,特别是配置在网络企业交叉点的集成应用程序的可扩充的分布系统和方法。
对于典型的组织,应用网络已经有机地成为收集特殊的应用集成计划。当它增加实施新应用程序的时间时,这个收集在商务上有很严重的影响,妨碍了高级管理层得到商务的实际情况,简而言之,阻塞了集团的动脉。尽管应用集成已经对企业集团的生存变成至关重要,但为此目的,企业集团以巨大的长期花费,在现有技术中手工操作或“砍掉”客户代码是可接受的。同样地,长期应用综合决定只是根据个人的计划标准在最低的级别上做出。因为决定这些问题的困难性质,所以还没有找到一个有效的企业应用集成(EAI)解决办法。
因特网的出现、用户/服务器计算、企业合并和收购、全球化、商务流程的重新设计已经强迫企业信息技术(IT)部门继续寻找新的(常常是手工的)方式使得相互之间进行不同系统的交流-不管这些系统是多么陈旧。在随之发生混乱中,不适当的通信系统在商务需要快速反应的IT能力上有弱化的影响。
IT中的最近趋势只是增加(常常是数量级)支持他们的内部接口的数量而恶化了这个问题。目前,企业应用程序已经实施了这样的函数,像数据层库、企业资源计划(ERP)和便利的电子商务。因此,简短回顾这三种技术将帮助理解长期感觉到的但还没有解决的EAL问题。
数据仓库技术要求大量的清洁的历史数据,该数据在规则的基础上必须从许多操作系统移入仓库。资源数据通常被构建为在线交易处理(OLTP),同时,典型的数据仓库也适应在线分析处理(OLAP)格式。因此,当资源数据被转移到仓库时,资源数据必须经历广泛的集合和重新格式化。
按照现有技术的典型数据仓库包括4个步骤(a)提取资源数据;(b)清洁这些提取的数据;(c)以许多尺寸集合清洁的、提取的数据;(d)装载仓库。每一个仓库资源需要特殊数据提取的空间、纯化、集合和装载程序。Forrester研究估计,每一个大公司大约有4个数据仓库。在两年中,这个数将增加到6个。包括在每一个仓库中的平均数据量将在同一时期加倍-从大约130千兆比特到260千兆比特。
与永远增加的速度生长的这些数据有关的问题由资源数据的质量所恶化。按照META小组进行的研究,今天,数据仓库装载的数据有20%是低质量的数据。相同研究指出,使用提取、纯化和装载处理的应答大约70%是由手工编码的。关于所要求的集合处理和轶事证据也表明单完成这个函数就需要50小时的计算机时间。很明显,大量的维护工作将涉及以这种方式编码的程序。
另一方面,典型的EPR系统(例如,由WAALLDORF OF SAP AG研制的企业应用程序,以及由PeopleSoft、Oracle、Baan研制的软件)基本上是支持核心商务功能的大的、集合的软件包应用程序,例如,工资清单、生产、一般的分类账和人力资源。大公司发现从单个渠道购买这样的软件解决方案特别具有吸引力,因为在公司内部研制这种功能的软件比购买这样的软件多花10-20倍的成本。然而,由于多种原因,实施ERP系统是一个无法抗拒的过程。
首先并是最重要的,大公司正在购买产品,但没有建立解决方案。这意味着大公司内的商务单元必须适应产品,和它如何工作,没有其它方式可以选择。此外,现代的EPR系统不能够代替所有大公司的客户解决方案。因此,他们必须有效地与其它传统的系统通信。最后,典型的是大公司使用超过一个和完全不同的EPR系统,因为单个卖主通常不能够满足每一个组织的需要。
结果,使数据入出ERP系统的选择权排除了用于数据仓库的已知方法。每一个ERP系统具有专用数据模式,该数据模式常常由它的卖主增强了。运行这种模式的写入提取和装载程序不仅是复杂的,卖主也不鼓励用户这样做,因为在企业应用程序中固有的数据确认和商业规则很可能被回避。ERP系统要求在商务目标级上交互作用,改目标级处理特殊的实体,例如,一般的分类账、预算和应付款。实施和使用一种众所周知和广泛接受的ERP系统的详细描述出现在Que公司所出版的使用SAPR/3的专题(第二版),ISBN0-7897-1351-9(1997)中。
以一种形式或另一种形式的电子商务已经使用了许多年了。基本上,他开始于电子数据内部交换(EDI)。EDI允许公司电子地传送它们的订单和发票,并继续在发展,以至今天的公司使用EDI用于供应链管理。然而,直到最近之前爆发的使用在线网站买、卖、甚至拍卖,有兴趣的项目对鲁棒和有效的EAI产生了巨大的需求。见美国专利5,627,972。
应用程序获得发展,以便在分配的时间范围内完成特殊的商务目标。在一个典型的大的组织中,不同部门的员工使用广泛分类的操作系统,DBMS和研发工具研制了数百个应用程序。在每一种情况中,满足了特殊的要求而没有考虑到与其它任何应用程序集成。
几个强有力的趋势已经驱使市场进行应用程序集成。例如,在对等网络和分布处理中的重要发展已经使得较好的集成它们自己的职能部门以及与它们的合伙人和供应商集成成为可能。前面提到的因特网/“企业内部互联网”/“企业外部互联网”的激增也对新类“人类活动”应用程序提出了要求,其要求与后端传统应用程序集成。在适应企业应用程序包(例如,SAP R/3)的世界范围内的巨大发展也要求与后端传统应用程序的集成。最后,信息定向中间产品(MOM)如IBM的MQSeries信息排队产品已经变得很通用。一旦用户了解到一对一应用程序与MOM连接的好处,就会增加它们对多对多应用程序集成的兴趣。
当需要对商务的集成增加时,花在集成应用程序的费用快速增长。按照各种工业分析,对“任务临界”应用程序集成的需要将驱动MOM和“信息经纪人”的组合市场,其从1997年的3亿美元增长到1999年的7亿美元。按照IBM对大客户的调查,现在,所有编码的近70%是由接口、协议和其它程序构成,以便建立与各种系统的连接。机智的IT执行官清楚地看到,通过得到尽可能满足这个需要的现用软件节约了大量经费。
信息经纪人是软件中心,它记录和管理信息的发行人(发送者)和订户(接收者)之间的契约。当商务事件发生时,应用程序将对应该商务事件发布该信息。经纪人察看订户表,并向每一个订户发送这个信息类型。订户直接接收他定阅的数据。由一个应用程序发布的信息可以由多个用户应用程序预定。类似地,预定应用程序可以从多个发布应用程序接受信息。
在应用程序发布或预定信息之前,他们必须向经纪人注册它们的权益。有两种基本的和不同的方法用于应用程序在信息类型中注册权益---主题基于寻址和信息内容筛选。在主题基于寻址中,经纪人使用主题识别信息和把该信息路由到所有对该主题感兴趣的订户。主题是一个用于描述信息内容的词。例如,姓名的主题“hr.emp.new”将适合于新雇员的分类信息(例如,姓名、地址、雇员号码等)。另一方面,在信息内容路由中,预定基于信息内的领域的内容。预定可以基于信息类型和/或有关信息内领域的特殊选择标准。例如,贷款批准申请将预定所有超过100,000美元的订单。
具有两个发布/预定模式的一个优点是避免需要单个预定应用程序的地址信息。此外,可以增加新的预定应用程序而没有对发布软件进行任何改变。
典型的发布/预定经纪人使用鲁棒的传送载体用于应用程序之间的信息的实际分配。当任务临界信息在外部和内部网络上传送时,系统软件确保信息决不会丢失或在网络故障中信息被复制。时常,使用存储转发信息排队提供了不同步信息传送能力。在这个模式中,当预定应用程序可用时,排队到排队转移发生在伪-实时中。如果预定应用程序不可用,则信息被存储在永久排队中,用于以后的传送。
为提高效率,信息传送载体必须包括商务交易协调功能。商务交易基本上由几个工作单元构成。每一个工作单元必须按顺序完成出现的交易。如果一个工作单元失败,整个交易失败,那么,所有完成的工作单元必须重新进行。这些交易是长期进行的,并需要对多个数据库更新信息。商务交易协调功能提供了这种管理支持。
两个其它的部件是基于规则的引擎和数据转换部件。商务规则引擎允许公司根据它们商务的唯一需要处理信息。典型地,商务规则引擎提供了可视前端,以避免以程序语言编程。根据这个灵活的方法,商务处理中的变化可以容易地反映在修改的规则设置中。
数据转换部件被用于发展应用程序特殊适配器。这些适配器从发送应用程序转换数据格式和应用程序的语义到接收应用程序。存在许多转换要求。它们的范围从基本的数据转换到解决结构(即,语法)、含义(即,语义)和必须分享的信息的时序之间存在的不兼容。
按照现有技术,有两种主要的策略用于应用程序适配器。一个策略是转换所有的资源数据和把应用程序同步到一个标准的规范形式。在这个标准的形式中,信息从资源适配器移动到同步适配器。在同步适配器中,信息被转换成为同步应用程序的格式。
第二个用于应用程序适配器的策略是在一个步骤中从发送应用程序自动转换格式和语义到接收应用程序,而没有任何中间格式。在这种方法中,对于两个应用程序只需要一个适配器用于相互之间的通信,它可以与任何一个应用程序集成。
基于规则的引擎和数据转换部件一起工作,以协调应用程序之间的差别。例如,在两个应用程序根据一个指令被集成之前,涉及处理指令的商务规则必须在每一个系统中确定。在应用程序“A”,指令可能包括从多个文件或数据库收集数据;在应用程序“B”,指令可能是嵌套在商务交易的大文件中的单个信息。困难的挑战是解决在每一个应用程序中确定的数据格式和指令下面的内容。
信息经纪人提供许多潜在的商务便利。首先是容易的应用程序集成。和信息经纪人一致,新应用程序与传统或第三方的应用程序的集成可以在较短时间内完成。集成可以发生而不需要理解每一个应用程序的内部结构和设计。通过把接口作为信息,现存的应用程序集成时具有最小的干扰。
支持电子商务是信息经纪人提供的第二个便利。当商务开始自动化他们的卖方和合伙人的供应链时,对于独立的应用程序需要以松散的连接方式通信。这正好是信息经纪的精髓和强项。信息经纪人完全适应商务需要。
最后,但肯定不是最不重要的,是对继续的不均匀性的信息经纪的支持。当新技术卷入时,新的结构发展了,不均匀性随时增加。设计的信息经纪的方法学协调当代的不均匀世界,并在将来是很有用的。新的、不同的应用程序可以随时加到发布者或订户,而没有改变存在于信息经纪人内的应用程序。
总之,信息经纪人具有提供最小公共分母(least common denominator)方法的潜力,以在企业内部集成不均匀的应用程序。用户可为每一个单独的应同软件选择最好的技术,不论是Java(SUN微系统公司的注册商标)、ActiveX(微软公司的注册商标)或CORBA(对象管理公司的注册商标),而不考虑在企业内部应用程序如何与其它应用程序集成。因此,信息经纪人在将来的应用程序和不同的复杂的产品及存在于当前的应用程序分类的技术之间架起了桥梁。
尽管采用信息经纪人策略有许多好处,但是一定要记住他也存在潜在的缺陷。根据它的松散连结灵活性,信息经纪的强项可能也是它的最弱项。如上面提到的一样,信息经纪人软件的性质是很通用化的。因为它被设计为处理许多不同的情况,但测试所有可能的端对端编码路径是不可超越的任务。来自这种“事故”的损害在企业内将是最强烈的,其中信息经纪人被用来集成任务临界交易处理应用程序。例如,在金融交易中,传送一个单个信息将值几百万美元,同时,没有传送或延迟传送将导致失去几百万美元。
信息经纪人的第二个风险是外国应用程序将对经纪人引入未授权信息的可能性。例如,这可以在银行业造成损失,假冒的信息将被公布,因此,引起提款和资金的侵占。
信息经纪人的第三个风险是标准,“单点故障”。现有技术的信息经纪人基本实施在“中心和辐条”结构。这意味着主要的信息流通过较少的中心。如果这些中心之一发生断电或物理故障,商务的任务临界操作将会终止。
分布中心的另一个问题是管理信息经纪人非常困难。因为信息经纪人把许多不同的商务应用程序集成到几个合并的中心,所以管理信息经纪人复杂性要求的天才和专门技能是不可能达到的。
无论什么技术被应用到企业的任务临界交易处理应用程序,暴露的潜在风险是大的,信息经纪的一个问题是它操作任务临界信息。相对来说,信息经纪是相当新的。然而,当某些早先具有信息经纪概念的适配器公司取得很大的成功时,在信息经纪人面前需要的更多,EAI可以进入主流。
在80年代,软件系统发展集中在不同系统相互之间通信的能力上。大部分原因是由于专用通信协议的激增。任何新发展的系必需实施多个、定制化应用程序的特殊转换方案。这个无法完成的需要摆在全球经济需要的面前。系统必须与它连接或通信的系统应用程序和数据格式一致,或为这样的应用程序提供特殊的转换。因此,所有软件都或大或小的定制化。
在今天的快速变化的环境中,世界范围的数以千计的研究人员的共同努力集中在研制一种系统,该系统满足不同应用程序相互之间通信的需要,而不需要实施多个、定制化的应用程序特殊转换方案。这个无法完成的需要摆在全球经济需要的面前。
发明简述因此,本发明的目的是提供一种集成企业应用程序的系统和方法,同时,对这些企业应用程序提供全面的管理,包括中心化的监控、操作和设置。
本发明的一个特殊的目的是提供代理人适配器结构和信息图解,在这样的系统和方法中,他们一起改善了信息记录和操作。
本发明的另一个目的是在这个系统和方法中提供了加强的安全特点,包括鉴别、授权、保密、认可和审核。
本发明的另一个目的是提供一种集成企业应用程序的系统和方法,包括故障恢复、故障保险翻转、信息重放和双站登录。
本发明的总的目的是快速和简单的集成ERP应用程序、客户/传统应用程序、打包的应用程序和数据库。特别地,本发明的一个目的是减少或基本上消除在传统上要求集成应用程序的昂贵的自定义码。
本发明的另一个目的是提供一种具有分布结构的EAI系统,其满足现代企业的长期可靠性、可量测性、灵活性和可扩展性。
本发明的另一个目的是提供一种EAI系统,使得企业能够调节它的现存的IT投资,增加企业的投资回报,加快进入市场的速度,较快地完成解决方案和实现收益,并减少运行成本。
本发明的另一个目的是提供一种EAI系统,其为企业的客户和记费信息提供了快速存取,以便企业能够有效地服务于它的客户,并与客户建立紧密的、有效的关系。
本发明的另一个目的是提供一种具有多对多点集成的EAI系统,其基本上排除了常规中心和辐条系统,及单点故障风险。
本发明的另一个目的是提供一种EAI系统,通过实际上对所有应用程序和平台提供集成的中心点,简化了企业的IT结构。
本发明的另一个目的是提供一种EAI系统,其提供了高效率的效能成本核算的信息分享。
在此论述的方法、设备和生产的物品将或的上述目的及按照本发明的其它目的、优点和新颖的特征,同时,避免了上述的问题。
按照本发明的一个重要方面,方法包括计算机执行装置,用于在第一计算机应用程序和第二计算机应用程序之间通过信息。这种方法一般包括步骤(a)从第一个计算机应用程序提供具有第一数据结构的第一个信息;(b)发布第一个信息以获得第一个发布的信息;(c)把第一个发布的信息的第一个数据结构转换成为第二数据结构以获得第二个信息;(d)发布第二个信息以获得第二个发布的信息;(e)向第二个计算机应用程序提供第二个发布的信息。
按照本发明的另一个重要方面,设备包括集成多个计算机应用程序的系统。这样的设备一般包括用于在系统内路由信息的装置;存储多个数据转换和多个规则的装置;把数据转换设置应用到信息的装置;把规则应用到信息的装置;在系统内路由信息的装置和计算机应用程序之间路由信息的装置;为各自计算机应用程序路由信息的专用装置。
本发明的设备包括集成多个计算机应用程序的系统。这样的设备一般包括在计算机应用程序之间通过信息的企业信息系统;连接到企业信息系统的数据库存储系统,该系统存储多个数据转换设置和多个规则;也连接到企业信息系统的集成服务,并包括使用存储在数据库存储系统中的数据转换设置的数据转换引擎和使用存储在数据库存储系统中的规则的规则评价引擎;连接到企业信息系统的多个代理-适配器,每一个代理-适配器连接到各自的计算机应用程序,以在企业信息系统和各自的计算机应用程序之间通过信息。
按照本发明的另一个重要方面,生产的物品包括嵌入代码段的计算机可读介质,用于集成多个计算机应用程序。这样的“计算机可读介质”的非限制例子包括任何磁硬盘、软盘、光盘(例如,CD-ROM、CD-R、CD-RW或任何适应已知DVD标准的盘);磁-光盘;磁带;存储芯片;用于携带计算机可读电子数据的载波,例如用于发射和接收电子邮件,或用于访问网络,包括因特网、企业内部互联网、企业外部互联网、虚拟专用网(VPN)局域网(LAN)和广域网(WAN);或任何其它的由计算机可访问的存储数据的存储装置。这种“代码段”的非限制例子不仅包括资源代码段和对象代码段,也包括任何语言、命令、对象、软件、的计算机程序或任何控制计算机的装置。这样的代码段一般包括(a)在计算机应用程序之间通过信息的第一代码段;(b)用于执行信息的数据转换的第二代码段;(c)把规则应用到信息的第三代码段;(d)多个第四代码段,每一个代码段在各自的计算机应用程序和第一代码段之间通过信息。
按照本发明的另一个重要方面,系统和方法由计算机控制。“计算机”的非限制的例子包括任何一般目的的计算机;大型机;PC机;网络浏览器;电子邮件用户;电子邮件服务器;网络文件或信息服务器;因特网设备;无线电话;寻呼机;个人数字助手(PDA);传真机;数字静止或摄像机;数字语音或视频记录器;数字复制机或扫描仪;交互电视;任何上面的计算机装置和交互电视机的合成组合;或任何其它包括处理器、存储器、有能力接收输入和产生输出的设备。
当与下面的附图一起考虑时,本发明的其它创新和相等的重要方面将通过详细描述变得很明显。


图1(b)显示了第一种情况,在这种情况中,图1(a)所示的系统被用来把企业资源计划(ERP)软件包应用程序与定制常规系统集成。
图1(c)显示了第二种情况,在这种情况中,图1(a)所示的系统被用来集成两个或多个不同的ERP软件包应用程序。
图1(d)显示了第三种情况,在这种情况中,图1(a)所示的系统被用来把一个或多个决策软件包应用程序与一个或多个事物部门的软件包应用程序集成。
图1(e)显示了第四种情况,在这种情况中,图1(a)所示的系统使用两个或多个完全不同关系的数据库管理系统(RDBMS)或多维数据库管理系统集成数据仓库软件应用程序。
图2是由图1(a)到图1(e)所示的EAI系统的方框图。
图3显示图1(a)所示系统所用的适配器研制工具。
图4(a)显示了按照本发明第一实施例的基本代理-适配器结构。
图4(b)显示了按照本发明第二实施例的可扩充的代理-适配器结构。
图4(c)是按照本发明的代理-适配器的优选实施例的方框图。
图5(a)到5(c)显示了用在本发明系统中的设计和集成对象。
图6显示了用在本发明系统中的信息方案。
图7显示了本发明的另一个对象。
图8显示本发明所用的典型的转换处理。
图9进一步显示了图8所示的转换处理。
图10(a)和(b)显示了本发明的信息中心的优点。
图11(a)到图11(c)表示各种操作环境,在该环境中,管理本发明的节点和服务。
图12是本发明系统服务的方框图。
图13是按照本发明必需产生信息而没有转换原始数据步骤的流程图。
图14是按照本发明通过转换原始数据必需产生信息步骤的流程图。
图15(a)显示了按照本发明第一实施例从一个应用程序到信息实例产生信息的方法。
图15(b)显示了按照本发明第二实施例从一个应用程序到信息实例产生信息的方法。
图15(c)显示了按照本发明第三实施例从一个应用程序到信息实例产生信息的方法。
图15(d)显示了按照本发明第四实施例从一个应用程序到信息实例产生信息的方法。
图16是本发明的第一级框图。
图17是本发明第二级框图。
发明详细描述企业计算运行时间环境现在参考附图,像参考字或数字指定的一样,或对应每一个视图的部分,图1(a)显示了一个简化的企业计算运行时间环境10。典型的运行时间环境10使用多个软件包应用程序,包括用于企业资源计划(ERP)的“事物部门”应用程序20和用于客户关系管理(CRM)的“决策”应用程序(30)、一个或多个定制化传统系统40、一个或多个多维/关系数据库管理系统(RDBMS)50。
在过去的几十年中,商务企业已经设计或购买了许多大的、单目的的软件应用程序。这些“传统”应用程序继续在使用,并常被设计为完成特殊的功能(例如,货物清单、金融、会计、销售人员自动化和人力资源)。最近,这些相同的企业也已经进行了实质的投资从软件发展商购买软件包应用程序,例如,从SAP、Peopleoft、Oracle和Baan购买。每一个软件包应用程序享受它们自己唯一的实力。因此,典型的商务企业在相同的运行时间环境中使用两个或多个完全不同的软件包应用程序。这样的软件包应用程序在开始没有设计成与其它的软件包应用程序分享信息。结果,强迫企业必须把它们的软件包应用程序与昂贵的自定义码集成。这样的集成常常需要几个月(如果不是几年的话)才能完成。
因此,企业应用程序集成(EAI)系统例如图1(a)所示的系统100成为必需的。然而,不像现有技术的EAI系统,系统100包括解决方案定向中间件,通过单个、公共下部构造,该软件便利用户修改和全面集成驻留在完全不同的应用程序内的信息。它允许用户无缝隙地、透明地和快速地在雇员、客户和供应商中移动信息,以获得最大生产率。
以这种方式,系统100为集成完全不同的企业应用程序提供了可靠的存储转发信息系统、有能力的信息经纪工具和强有力的代理-适配器结构。它适合于分布并被设计成容易管理。它的目标是满足大企业的完全的、不均云的计算要求。它智能化地链接各种应用程序,所以它们可以存取和分享信息。它是适配于应用程序的中间件,而不是强迫应用程序适配于它。
使用最少的自定义码,使得它的用户通过企业链接ERP应用程序20、软件包应用程序30、定制和传统应用软件40和数据库50。当完全集成时,企业可以快速地把全球商务和分支机构同步,并快速响应不断变化的市场需求。根据快速访问客户和计费信息,用户的公司可以较有效地服务于客户,并与客户建立紧密的和有效的关系。系统100是商务中心企业集成解决方案,其是把商务分析人员作为目标的集成流动设计环境。分析人员确定营业期中的问题,和产品处理的技术问题。
例如,如图1(b)所示,企业资源计划(ERP)与定制传统系统集成的共同情况要求公司在标准ERP实施内适当地压缩复杂性处理-这不是容易做到的事情。许多公司为标准商务处理如存货清单和订单管理选择软件包应用程序。但软件包应用程序很少用于垂直处理。为这些目的,系统100是理想的。它为ERP系统22、24、26、28提供了对象接口,以及包装产生技术用于链接到传统系统44、48。
全球供应链的扩展也要求中间件在两个或多个完全不同的ERP系统22、24、26、28上架起桥梁。如图1(c)所示,它可以容易地升值,因为(可以容易地理解)没有任何事情比商务合作重要。因此,系统100扮演了关键的角色,在内部ERP交易中,在一个系统(例如,SAP系统22)中的商务事件调用另一个系统(例如,Baan系统28)中的对应事件,而没有公开详细的下层技术。
公司的决策部门与它的事物部门的集成是一个重要的功能,其允许决策应用程序对客户有影响,以便与事物部门生产应用程序合作。例如,参考图1(d),非常重要的是客户支持系统与ERP存货清单模块合作。因此,系统100无隙缝地和透明地使最好种类的决策部门和事物部门的应用程序集成。
在图1(e)所示的数据仓库情况中,不同系统的数据必需移到中央处理仓库或资料库中。从几个ERP系统(未在图1(e)中示初)移动实时信息到包括多个不同数据库53、56、59的中央关联或多维数据库是这个问题的示范。然而,数据仓库研制者可以为实时数据集成或其它操作调节系统100的数据转换操作,下面将详细描述。因此,数据被转换成为可理解的和意义明确的状态。
定义如下文使用的一样,下面的术语将由本领域技术人员按照他们原来的和习惯的意思解释。对于出现在下面的内容,定义与本领域技术人员已知的常规定义不同,这样的术语在下文清楚地以这样的方式阐明,告知本领域技术人员申请人旨在重新定义权利要求术语。
“存取器”是在信息定义中指定的功能,系统100用来存取数据。存取器识别应用程序数据段和系统信息单元的开始和结束,并移动或插入标识符。
“适配器实现”是为特殊的应用程序设计的代码,其可以提取数据和产生系统信息;接收系统信息和更新数据;或响应请求提取数据。当用户创建适配器使用在集成信息流时,用户在适配器实现周围建立了它。系统适配器实现提供基本例外处理,并能够处理任何信息定义。用户使用ADK创建定制适配器实现,并在下面将详细论述。
“适配器”是集成信息流对象,其与企业应用程序相互作用以提取数据或插入、更新或删除数据。
“管理控制台”是图形用户接口(GUI),通过该接口,系统管理器设置和管理系统100的节点和服务。
“代理服务”向适配器提供代理服务。在每一个运行适配器的主机上需要一个代理服务。
“类途径”是一个变化的环境,告诉Java虚拟器在那找到类库,包括用户定义的类库。
“客户”是远程访问例如计算能力和大存储容量这样的计算机服务器资源的过程。典型的系统客户是集成工作台120和管理控制台160(图2)。
“连接”是为适配器指定启动或连接参数的对象。例如,RDBMS连接指定JDBC驱动器、数据库的URL、用户名和密码。
“转换”数据是一种方法,在信息定义中指定的转换器把应用的本机数据类型转换成系统100支持的Java数据类型,反之亦然。
“转换器”是在信息定义中指定的功能,系统100用来转换数据。以这样的方式,转换器把本机数据类型转换成系统100支持的Java数据类型,反之亦然。
“定制适配器实现”是为特殊应用程序设计的代码,其可以提取数据和产生系统信息;接收系统信息和更新数据;或响应请求提取数据。使用ADK创建的定制适配器实现可以连接到系统100当前不支持的应用程序上。
“定义对象”是为系统将实施的步骤提供命令的集成信息流对象。
“定界符”是把数据中的数据段与企业应用程序分割的记号或标记,“持久预订”是系统的信息中心的特性,其确保中心目标对象接收所有接到它们的信息。如果目标对象成为不活动的,系统记住这些目标已经接收的信息。当下一个目标成为活动的,系统发送目标还没有接受的信息。
“企业应用程序”是程序,适配器从该程序中提取数据或传送数据(例如,SAP R/3或MQ Series)。
“企业信息服务(EMS)”,本发明使用Java信息服务(JMS)。它使得系统100使用多信息节点,并支持信息中心和提供信息保留性,“企业资源计划(ERP)”应用程序为共同商务问题提供监管系统解决方案(例如,仓库管理、人力资源管理和材料管理)。ERP产品的例子是SAP R/3、PeopleSoft和Baan。
“总体X经纪人(ETB)”是一个交叉平台,按照本发明是一个信息定向中间件,其链接大型机、Windows NT、UNIX应用程序和部件、因特网和企业内部互联网客户、ActiveX和Java工作站。
“筛选定义“是从集成信息流中筛选信息指定标准的定义对象。
“功能主机”是计算机平台,例如,Windows NT服务器或工作站,或OS/390大型机。
“中心”是从资源对象接收信息的集成信息流对象,并保持信息直到系统100发送它们到指定的目标对象。中心允许适配器和转换器非同步地交换信息。它们对于集中信息流也是很有用的;产生同类信息的多对象都可以把这些信息发送的一个信息中心,其简化了对象中的链接。
“IDoc提取器”阅读SAP R/3处理程序WE63产生的平面文件,以创建实施设置和信息定义,并把它们存储在系统的资料档案库服务中。
“实施设置”是用于适配器的运行时间参数(例如,轮询间隔)。
“集成信息流”是一系列链接的系统对象,其从一个或多个企业应用程序移动数据到另一个企业应用程序。
“集成对象”是集成信息流对象,其发送信息、接收信息,或两者。见适配器、中心和转换器。
“集成工作台”时图形用户接口(GUI),通过该接口,用户设计集成信息流。
“中间文件(IDoc)”是由R/3使用的SAP R/3数据格式,并与其它R/3系统和其它应用程序交换数据。
“项信息单元”是包含数据的信息单元。项是在信息定义的分层结构中最下级的信息单元。它们不含有其它信息单元。
“Java数据库连接(JDBC)”是用于SQL基于数据库存取的JavaAPI标准。
“Java研发工具(JDK)”是用于以Java编程语言编写应用程序的软件研发环境。
“Java信息服务(JMS)”是SUN微系统公司为信息指定的JavaAPI。
“Java命名和目录接口(JNDI)”是一组API,其帮助接合多命名和多目录服务。
“Java运行时间环境(JRE)”是Java研发工具的子设备,用于重新分配Java虚拟器、Java核心类和支持文件组成的运行时间环境。
“Java虚拟器(JVM)”是负责解释字节码的Java虚拟器的部分。
“链接标识符”是把数据中的数据段与企业应用程序分割的记号或定界符。
“信息定义分类”是用于信息定义的逻辑组。
“信息定义”是定义对象,其识别系统100将从企业应用程序提取的数据和传送到企业应用程序的数据。信息定义也确定系统100如何从企业应用程序数据构造系统信息或如何从系统信息产生企业应用程序数据。
“信息单元”是由信息定义的信息图解构成的数据对象。信息单元以分层结构排列,其可以是段、表格或项。
“信息定向中间件(middleware)”(MOM)是使用信息的软件,使得在相同或不同平台上的应用程序通信。通信协议被隐藏在应用程序中。MOM的例子是MQSeries、EntireX Broker和JMS。
“信息保留”涉及在可恢复介质上存储信息。系统把每一个信息写到该介质,并从一个集成对象发送到另一个,以稳定存储在用户指定的位置内。如果系统发生故障,而同时信息正在传送中,当系统100被重新存储时,系统100可以从存储中恢复信息,并发送该信息到它的目标。
“信息图解”是信息定义的部分,其定义如何构建信息。信息图解包括段、图表和排列在分层结构中的项信息单元。
“监控器服务”存储系统运行时间数据,包括系统登录和统计信息。
“节点”是支持一个或多个系统和应用程序服务的物理过程(或Java虚拟器)。
“节点主机”是软件,其使得用户在机器上设置和运行节点。用户在每一个机器上必须安装节点主机,而不是节点管理器,器将主机一个节点。
“节点管理器”是一个接口,通过该接口管理节点。接口允许用户设置、开始、暂停或停止服务。以及节点管理器启动和停止节点。节点管理器保持所有分配到该节点的服务状态。此外,节点管理器保持节点或信息的状况信息(例如,当前状态或活动层级)。
“点对点通信”是用于中心的信息类型,系统只发送每一个到达中心的信息到单个中心目标(即,第一个可用目标)。
“主输入信息”是在转换器定义中指定的系统转换处理的主要输入数据。系统获得输入数据,并将其转换,然后,创建目标应用程序需要的输出数据。
“发布/预订信息”是用于中心的信息类型,系统把到达中心的每一个信息发送到所有中心目标。
“应答器”,当转换器在数据转换处理期间请求它时,系统对象如应答适配器提供数据。
“应答适配器”是集成对象,通过从应用程序提取数据并发送他到请求的对象,集成对象回答从另一个集成对象对数据的请求。请求器发送包含在关键信息单元内数据的系统信息,应答适配器把数据插入有关的信息单元,并发送系统信息返回。
“资料档案库服务”通过Java本身的目录接口接入,并存储用于所有设置服务和集成信息流对象的设置。
“路由服务”使得系统根据信息的内容导引信息通过系统,包括按照用户确定的标准筛选信息内容。路由服务支持筛选。
“系统信息”是一种平台中立格式的信息,系统使用该信息在应用程序之间移动数据。
“段信息单元”是非重复信息单元组,其不包括实际的数据。它包括其它的包含数据的信息单元(即,它们包括项)。段可以包括任何信息单元类型的组合。
“服务”是提供产品功能的方法。系统由系统、信息、集成和代理服务组成。
“资源适配器”是从企业应用程序提取数据的集成对象,从数据构建系统信息,并发送信息到其它的系统集成对象。
“资源对象”是提供信息到其它对象的集成信息流对象。见资源适配器、转换器和中心。
“支持输入信息”是对系统转换处理选项的输入数据,如在转换器定义指定的一样。转换处理使用支持输入信息数据补充主输入信息数据。系统获得输入数据,并将其转换,然后,创建目标应用程序需要的输出数据。
“表格信息单元”是一组称为行的段信息单元,其可以重复任何次数。表格单元不包括任何实际的数据。它包括其它的包含数据的信息单元(即,它们包括项)。表格可以包括任何信息单元类型的组合。
“目标适配器”是从其它集成对象接收系统信息的集成对象,从系统信息创建应用程序数据,并把数据传送到目标应用程序。
“目标集成对象”是从其它对象接收信息的集成信息流对象。见目标适配器、转换器和中心。
“交易处理监控器(TPM)”是为许多用户设计的最佳使用计算资资源的软件系统,例如,存储和应用程序。
“转换数据”是一种方法,在这种方法中,转换器把从一个或多个企业应用程序获得的数据修改成为其它企业应用程序需要的数据。
“转换服务”使得系统转换信息,包括分离信息、组合信息和生成信息数据。转换装置支持转换器。
“转换步骤”是由转换方法组成的指令。每一个步骤读取输入信息数据、转换和映像输入信息数据到输出信息定义,或把转换的数据写成输出数据。
“转换器定义”是定义对象确定系统将如何把从一个或多个企业应用程序提取的系统信息转换成为其它企业应用程序需要的系统信息。
“转换器”是完成转换器定义的集成对象。转换器从资源集成对象集合输入信息,转换信息数据的内容和格式,产生并把输出信息发送到目标集成对象。
“用户接口服务(UIS)提供了便利运行客户部件的用户接口(即,集成工作台120和管理控制台160)。
现参考图2,系统100一般包括多个设计部件110和多个运行时间管理部件150。而设计部件110特别地包括集成工作台120、适配器研发工具(ADK)130和资料档案库服务140。而运行时间管理部件150特别地包括管理控制台160、集成服务器170、集成服务器170包括企业信息引擎180、节点服务部件190、多个智能代理-适配器200。
集成工作台120一般包括用于集成项目发展的图形模式和设置工具。它被用来确定事件、与这些事件有关的信息、集成信息流、与这些集成信息流有关的商务规则、以及识别发布和预订确定的事件的代理人。此外,集成工作台120为一致性检查和测试集成信息流提供了诊断。
ADK130被用来设置和产生定制化的智能代理-适配器200。图3详细示出,ADK130一般包括对象结构,该结构包括类库132、向导134和模板136。ADK130产生可以由常规研发工具存取的对象。而系统100包括多个用于宽范围应用程序和资源的标准智能代理-适配器200,可能有特殊的应用程序没有这种标准的智能代理-适配器。在那种场合,ADK130还允许熟悉目标应用程序环境提供的发布的接口的研发人员构建一个定制的智能化的代理-适配器。
资料档案库服务140一般包括有关的数据库,其包括所有系统100的规范、元数据、信息经纪服务规则、到有关数据库的接口。
管理控制台160被用来设置和管理系统100的运行时间环境,一般地包括图形控制台。它作为系统设置、维修、监控和诊断的控制点。通过管理控制台160,管理系统100的每一个单独的部件,包括全面服务、某一部件的启动和中断、内置软件分布。
集成服务器170通过触发和执行集成数据流实现智能信息处理事件。它执行静态和动态范围敏感规则,以评价、修改和路由事件数据。如上面提到的一样,集成服务器170包括企业信息引擎180,引擎180包括管理所有事件数据的分布信息子系统。一方面,它是系统100的关键部件。另一方面,它对系统100的任何用户是完全透明的,一般操作在屏幕的后面。它为非临界、高容量信息请求支持全连续、一次-只一次信息发送、内存储器模式。
节点服务部件190管理系统100的开始/重新开始恢复、例外处理和动态设置。它为自动系统安装和跨越所有参与的客户和服务器的远程管理提供便利。此外,它很容易地远程安装和更新部件。
如上面提到的一样,多个智能代理-适配器200不仅包括分布于系统100的标准代理-适配器200,也包括由ADK130研发的定制智能代理-适配器200。不管每一个智能代理-适配器200的类型,它一般包括把特殊的一个外部应用资源300连接到系统100的运行时间接口模块。
现参考图4(a)和4(b),按照本发明的特别重要方面,智能代理-适配器200组合了具有适配器技术的自助代理人的功能。代理部件210的作用就像独立的软件程序,其包括一个或多个适配器部件220(图4(a)),或222和224(图4(b))。它压缩了复杂的功能,例如,存储和转寄高速缓存、筛选、资源轮询和调度。
这个代理-适配器结构的主要优点是它包容复杂商务逻辑的能力,以便保持状态和与应用资源300谈判交易。这个能力被称为“谈话模式处理”,其在交易性质的集成应用资源300是特别有判断力的。时常,从应用资源300要求的经纪信息的数据单元被深深嵌套在子-交易中。因此,这些深深嵌套的子-交易只在与交易应用资源300交谈后才能获得。否则,过去使用的简单的适配器不适合于从事交易应用资源300的复杂行为。
如图4(a)所示,本发明典型的智能适配器200包括代理部件210和适配器部件220。在这个结构的一边,代理210遵照系统100指定的事件和信息模式。在这个代理-适配器结构的另一边,适配器220使用特殊的应用资源300的原来的应用编程接口(API)510,或其它的适合的发布的接口机构。代理210和适配器220一起协调接口协议和数据结构中的差异,以提供商务事件发布和消费的唯一的、规格化的窗口。
不像过去EAI的方法,上述的代理-适配器结构是可扩展的。它不仅简化了无隙缝地容留现存API变化的能力,而且,它也继续使用具有传统系统的现存API。清楚地显示在图4(b),这个可扩展的代理-适配器结构一般包括代理210,其压缩了第一适配器A′222和第二适配器A″224。
例如,适配器A′222对应具有基本组API A′的应用资源300。另一方面,适配器A″224对应具有较新的API A″的相同应用资源300。因此,这样的可扩展的代理-适配器结构的用户可以选择同时适配两个接口A′和A″。例如,基本组API A′可以对应生产环境,同时,新组API A″可以对应特殊应用资源300的新版本的再生产环境。因此,新组API A″被测试为“活”在系统100内,同时,基本组API A′将被用于保持以前的测试,并证明功能性。以这样的方式,这个可扩展的代理-适配器结构使得对应用资源300增加变化的完美的无隙缝处理成为集成环境。
现参考图4(c),按照本发明优选实施例,显示了代理-适配器200的放大图。如图4(a)和4(b)随时的代理-适配器一样,图4(c)所示的代理-适配器200被用来在系统100和企业应用程序的原来的API510之间通信(未示出)。然而,按照这个实施例,代理-适配器200包括三个适配器222、224和226。下面将详细描述,适配器222是资源适配器变体、适配器224是目标适配器变体、适配器226是应答适配器变体。因此,本领域技术人员可以容易地了解到,本发明这个实施例的代理-适配器200没有局限于任何特别指定的代理210压缩的适配器的数量。例如,下面将详细描述的类型要求的适配器228可以与适配器222、224或226连同使用,或代替这些适配器。
此外,按照本发明的另一个特殊的重要方面,代理210包括多个有用的扩展代理-适配器200能力的对象230-240。例如,目前的对象230包括局部地在代理-适配器200本身便利履行其它的系统100的中心功能。对象231类似地包括误差管理对象,对象232是连接管理对象,对象234是规则管理对象。代理-适配器200的进一步扩展没有局限于附加对象235-240的数量,其可以与代理210放置在一起。
上面所述是本发明的一个特殊重要方面,因为它便利了系统100的信息处理的分散。因此,确保了分布企业应用程序的集成,因为本发明实施例的代理-适配器200可以与系统100交叉的任何节点关联。
系统100在企业应用程序中分享数据的方式由集成信息流确定,下面将详细讨论。典型的集成信息流使用一个或多个系统信息。每一个系统信息一般包括以平台中立格式通信,其从一个软件应用程序移动选择的数据到另一个软件应用程序。而集成信息流由多个对象和这些对象中的链接组成。每一个对象完成涉及系统信息的特殊任务,其在企业应用程序之间携带数据。
现参考图5(a)到5(c),例如,在集成信息流540中的对象包括定义对象510或集成对象530。存在三种基本类型的定义对象510,按照本发明它们被用于(1)信息定义512;(2)转换器定义514;和(3)筛选定义516。定义对象510可以重复地使用在任何给定的集成信息流540。例如,相同的信息定义512肯定被指定给所有对象510和530,其将处理使用信息定义512产生的系统信息。此外,相同的筛选定义516可以使用在集成信息流540的多段中。
信息定义对象512识别系统100将从企业应用程序541、549提取或传送的数据。它也确定系统100如何不仅从企业应用程序数据构建系统信息,而且也从系统信息产生企业应用程序数据。
转换器定义对象514定义系统100将如何把从一个或多个企业应用程序提取的系统信息转换为其他企业应用程序所需的系统信息。
筛选定义对象516确定了系统100将使用的标准,从集成信息流中筛选出不想要的系统信息。例如,在把新客户数据转化为发票的集成信息流中,一个筛选定义对象516是有用的,其把客户早已经付款的系统信息筛选除去。
有三种基本类型的集成对象530,其实际上发送和接收系统信息。三种基本类型的集成对象530是(1)适配器220;(2)信息中心518;(3)转换器520。此外,如上所述,有四种基本类型的适配器220;(a)资源适配器222;(b)目标适配器224;(c)应答适配器226;(d)请求适配器228。
资源适配器222从源企业应用程序提取数据,从该数据构建系统信息,发送这些系统信息到其它的集成对象530(例如,信息中心518)。目标适配器从其它集成对象530接收系统信息(例如,通过筛选定义对象516的转换器520),从这些系统信息产生应用数据,并传送该数据到目标企业应用程序。通过从应用程序提取数据,应答适配器226从某些其它集成对象530应答对该数据的请求,然后,发送该数据到请求对象530。
一般说来,使用信息中心518从一个或多个资源集成对象530接收系统信息,并保持这些系统信息,直到系统100可以传送这些信息到一个或多个目标集成对象530。
通常使用转换器520在三步中完成转换器定义。首先,从资源集成对象530收集系统信息(例如,信息中心518)。在收集步骤之后,它们转换在这个系统信息内获得的内容和数据格式。最后,产生和发送输出系统信息到目标集成对象530(例如,目标适配器224)。
按照本发明,信息定义512是主对象,在其周围建立了集成信息流540。当用户产生一个信息流时,信息定义在该信息流中被指定给每一个对象510、530。信息定义不仅识别对象510、530将要处理的系统信息的种类,它也要确定该系统信息的分层结构或图解。
例如,信息定义512必需被指定给用户集成信息流540中的每一个资源适配器222。根据用户已经指定的信息定义512,每一个资源适配器222知道它将产生哪中信息。适配器220、中心518和筛选516只处理一个信息定义512。另一方面,转换器定义514和转换器520能够处理作为输入和输出的多个信息定义512。
某些应用程序可以产生系统100支持的Java数据类型。在这些情况中,资源适配器222可以提取在信息定义512中指定的数据类型,并直接将其存储在系统信息中。同样地,目标适配器224可以从系统信息恢复数据类型,并将它们直接插入应用程序(例如,目标企业应用程序549)。其它应用程序使用确定好的信息格式描述它们本机数据的布置。在这些情况中,用于资源适配器222的信息定义512必须包括从应用数据产生Java数据类型的指令。类似地,用于目标适配器224的信息定义512必须包括从系统Java对象产生应用数据的指令。
由集成对象530使用的特殊种类的信息定义512从其它系统对象510、530请求数据。例如,信息定义512也可以指定信息生效标准。系统100使用这个标准确定由适配器220和转换器520产生的系统信息是否包含有效数据(例如,用户包括信息定义512定义信息,该信息包括雇员工资信息)。因此,用户可以防止不准确的工资数据进入系统100。例如,如果信息定义512包括一个项目单元“工资”,那么,用户将对该项目陈述确定生效的标准,即,只当“工资”中的值是正数时,该信息才是有效的。用户可以把有关的信息定义512组织成称为信息分类的逻辑组。例如,假定用户正在使用系统100集成三个应用程序。在用户的方案中,用户可以把信息组织称为三个信息分类。每一个对应一个应用程序。
应当注意,在这个接合点,信息定义512的特殊信息图解600是由称为信息单元的数据对象构成的,如图6所示,它们以分层结构排列。一般说来,信息图解600包括一个或多个段620、一个或多个表格640和一个或多个项660。段620或表格640必需呈现在信息600分层的顶部。
段620是非重复信息单元组。这样的段单元本身不包括实际数据。它们只包括含有数据的其它信息单元(即,它们包括项660)。段620包含任何组合的信息单元类型。
表640是一组称为行的段单元,其可以重复任何次数。表单元也不含有实际数据。它们包含含有数据的其它信息单元(即,它们含有项)。表640包含任何组合的信息单元类型。
项660是含有数据的信息单元。项660在信息定义的分层中是最低层的信息单元。它们不含有其它信息单元。
每一个信息定义512含有根据该定义用于生效信息的标准。即,当用户确定了信息定义时,用户可以指定标准,以便在单个信息单元中的数据必需满足在系统100内被认为是有效的信息。
用户可以为所有层级的信息指定生效标准。即,用户可以为段内或表内的信息项指定标准。整个信息通过生效标准并继续通过信息流,或没有通过生效标准并被放弃。如果表的一行没有通过指定的标准,整个信息没有通过。在适当的信息定义中使用生效标准,系统100确定每一个由适配器220或转换器520产生的信息。
适配器220与企业应用程序连接,以提取或传送数据。每一个适配器220产生、接收或应答用户指定的信息定义512的信息。系统100为他将集成的应用程序提供标准适配器220。如上面提到的一样,每一个标准适配器220是资源适配器222、目标适配器224、应答适配器226或请求适配器228,并被设计为特殊的代理服务类型。例如,对于EntireXBroker,系统提供了ETB标准资源适配器和ETB标准目标适配器。标准适配器是类属的。它们提供了基本的例外处理并能够处理任何信息定义。如果标准适配器220不包括用户需要与应用程序交互作用的所有代码(例如,用户想指定较详细的例外处理),用户可以使用ADK130产生定制适配器220。用户也可以使用ADK130产生系统100当前不支持的应用程序的定制适配器220。同样,用户可以使用ADK130产生定制适配器220,其连接到具有JAVA应用程序编程接口(API)的任何应用程序。
为在集成信息流540中使用标准或定制适配器220,用户必须对其进行设置,以处理特殊信息定义512。用户可以设置需要数量的每一种类型的适配器220,以处理用户需要包括在集成信息流540中的所有信息。
资源适配器222从企业应用程序提取数据,并产生发送到其它集成对象530的信息。特别地,资源适配器222(1)轮询或由特殊类型事件的应用程序通知,事件已经发生在应用程序中(例如,新客户的数据已经被输入);(2)从应用程序提取有关事件的数据;(3)使用信息定义指令,从该数据构建系统信息;(4)产生信息并发送其到一个或多个目标集成对象530。
目标适配器224在集成信息流540中从其它系统对象510、530接收信息,并发送信息数据到企业应用程序541、549。特别地,目标适配器224(1)从一个或多个资源集成对象530接收系统信息;(2)使用来自信息定义512的指令,从系统信息产生应用程序数据;(3)通过插入新数据、更新数据或删除适当的数据,把该数据发送到目标应用程序549。
当由如转换器520这样的集成对象530所请求时,应答适配器226从企业应用程序541、549提取数据。特别地,应答适配器226(1)从集成对象530接受一个请求信息;(2)从企业应用程序541、549提取请求的数据;(3)根据作为请求信息的相同信息定义512,在应答信息中发送该数据到转换器520。
连同应答转换器522一起的请求适配器228被用于从企业应用程序541、549提取数据,而没有从这些应用程序中要求特殊的请求。如图7所示,恢复它们预期的信息可能是应用对象710提出另一个请求所需要的。例如,来自应用对象710的请求可能简单为如此“我想察看客户运输数据”。包括客户运输数据的所有数据在事先提出,并放置在该请求的相同信息定义中,然后,被“移到”应用程序对象710。特别地,请求适配器228(1)从应用程序对象710接收请求信息;(2)直接在系统100中从另一个对象540提取预期的数据,或得到应答转换器522的帮助,从应答转换器522提取预期的数据;(3)根据作为请求信息的相同信息定义512,在信息中发送该数据到应用程序对象710。
下面将详细描述代理服务包容适配器220的情况。代理服务提供了连接到它的应用程序的信息适配器220(例如,密码和用户识别符)。系统100为他将集成的每一个企业应用程序提供了代理服务。即,提供了SAP R/3代理服务、EntireX Broker代理服务等。系统100也为用户使用ADK130产生的定制适配器提供代理服务。
用户对使用系统100集成的每一个企业应用程序需要一个代理服务。例如,如果用户想把三个SAP R/3系统与一个RDBMS集成,则用户需要三个SAP R/3代理服务和一个RDBMS代库无。每一个代理服务容纳所有的适配器220,用于代理连接的企业应用程序。
转换器定义514确定了一种处理,该处理把从一个或多个应用程序提取的含有数据的信息转换成为由一个或多个应用程序需要的含有数据的信息。通过从资源对象收集输入信息,转换器520实施转换器定义514,转换数据,并发送输出信息到目标对象。
如图8所示,在转换器定义514中确定的转换处理总是包括至少两种信息主输入信息和一个或多个输出信息。主输入信息基本上包括大多数或所有用户想以输出信息发送到目标应用程序的数据。输出信息包括来自输入信息的数据,并为目标应用程序必需转换的数据。
当用户产生转换器定义514时,首先在805,用户指定主输入信息的名称。然后,在810,用户识别信息定义512,该定义确定了用户想使用为主输入的信息。然后,在815,指定任何支持输入信息。其次,在820,用户识别确定这种支持输入信息的信息定义512。单个转换处理可以产生任何数量的输出。因此,在825,用户必需指定这些输出信息,并识别信息定义512,该定义512确定了用户想产生作为输出的信息。
从835开始,用户产生一系列步骤840、845、850、855、860、865,这些步骤确定了何时读取输入数据、如何转换输入数据、如何从输入信息定义到输出信息定义映像输入数据、以及,何时把转换的数据写给实际的输出信息。
用户以任何必需的方式转换输入数据,以产生用户需要的输出信息。例如,用户可以产生一个转换表达,该表达指定了包含客户名和姓的一串信息项,因为目标应用程序要求客户的全名在一个数据段中。用户产生了一个转换表达,该表达从信息项中只选择某些字,或把信息项填如空间,使得它具有适当的长度,用于目标应用程序中的对应数据段。然后,在转换处理中,通过把他们写在不同点上,用户产生了不同的输出信息。
当主输入信息没有包含产生输出信息的所有数据时,用户可以使用请求/应答信息定义为转换处理获得支持输入。例如,假定在转换器定义中,用户正在使用的主输入信息使用了美国州名的缩写(例如,VA是维吉尼亚)。
例如,假定目标应用程序要求全州名。未获得全州名,需要产生输出信息,用户将使用能够发送缩写到应用程序的请求/应答信息定义,并接收返回的州名。
在用户已经产生了转换器定义514之后,用户测试该转换器定义,并在使用它之前,确保在集成信息流中产生适当的输出信息。然后,用户把转换器定义指定给一个或多个转换器520。
转换器520实施转换器定义514。当用户产生转换器520时,用户指定对象510、530作为主输入信息的资源,对象510、530将是输出信息的目标。用户也指定将应答支持输入请求的对象。当转换器520从资源对象540接收主输入信息时,它运行确定在转换器定义514中的步骤序列,该步骤构成了转换处理。然后,它读取主和支持输入信息,转换输入数据,把转换的数据写给一个或多个输出信息,然后,发送输出信息到目标对象540。基本的转换处理显示在图9中。转换器520从中心518接收主输入信息920。然后,它从应答适配器226获得支持输入信息940。最后,转换器520把两个不同的输出信息960、980发送到两个不同的目标适配器224。
中心518是适配器220和转换器520的保持区域。中心518允许适配器220和转换器520非同步地交换信息,并简化对象中的链接。例如,用户可以具有产生信息到转换器520的资源适配器222。用户可能希望适配器222产生和发送它的信息,而不管转换器520是否准备好接收它们。用户将设置适配器222发送信息到信息中心518,并设置转换器520从该中心518接收适配器的信息。然后,当目标准备好接收它们时,系统100从中心518传送信息到目标对象540。
此外,用户可能有三个资源适配器222,其根据相同信息定义512发送信息到五个目标224、520。如果用户不使用中心518(如图10(a)所示),则用户将必须在这些对象中产生15个链接。另一方面,如果用户使用中心518(如图10(b)所示),则用户将必须产生和保持8个链接。信息中心518可以只保持一种信息(即,从单个信息定义512产生的信息)。中518的目标具有持久预订。系统100保持从中心518已经接收的每一个目标对象224、520的信息的纪录,以及还没有接受到的目标对象224、520的纪录。如果目标对象224、520变成为不活动,系统100记住目标对象已经接收的最后信息。当下一个目标对象224、520变成为活动的,系统100只发送这些目标对象224、520还没有接受到的信息。如果中心预订不是持久的,当目标对象224、520是活动的,则目标对象224、520就会接收到达中心518的信息,但是,当目标对象224、520是不活动的,目标对象224、520决不会接收到达中心518的信息。
用户可以从两个信息类型选择,用户希望系统100何时从中心518传送信息(1)点对点,系统100只把每一个信息传送到第一个可用目标;或(2)发布/预订,系统100把每一个信息发送到用户已经识别作为中心518的目标的每一个对象。
如果用户想从集成信息流的部分筛选出某种数据,用户必须使用筛选定义516。筛选定义516根据信息数据指定标准(即,通过标准的数据继续通过信息流),而没有通过标准的数据被放弃。
当用户想筛选某种数据时,用户产生筛选定义516,并把它指定给处理这种信息的对象540之间的一个或多个链接。系统100在筛选定义516中应用该标准到沿着这些链接发送的所有信息。
例如,考虑中心518发送包含新客户数据的信息到目标适配器224的情况。用户只希望还没有付款的客户数据到达目标适配器。为达此目的,用户将产生筛选定义516,其指定了标准“状态=付款”,并把它指定给中心518和目标适配器224之间的链接。
用户可以在用户的集成信息流540中为每一个信息定义512产生一个或多个筛选定义516。用户可以把单个筛选定义516指定给多个链接,或用户可以为同类信息把不同的筛选定义516指定给不同的链接。
例如,考虑中心518发送包含新客户数据的信息到两个适配器220的情况。用户可能希望一个适配器220只接收已经付款的客户数据,另一个适配器220只接收还没有付款的客户数据。因此,用户将产生两个筛选定义516。一个指定标准“状态=未付款”,另一个指定标准“状态=付款”,然后,用户把每一个筛选定义516指定给适当的链接。
当用户为不包括表格数据的信息产生筛选定义516时,用户指定的标准影响了整个信息。整个信息通过筛选标准并继续通过信息流,或没有通过标准并被放弃。
当用户为包括表格数据的信息产生筛选定义516时,用户可以指定影响整个信息的标准,或只影响表格内的数据。如果用户在段620中为信息项指定标准,整个信息通过标准并继续通过信息流,或没有通过标准并被放弃。如果用户在表格640中为信息项指定标准,只有通过标准的数据行继续通过信息流。没有通过标准的行被放弃。
例如,考虑包含9行数据的表格640的情况,一行对应一个新客户。如果用户设置筛选定义516,其筛选出花费1000美元或少于此数的客户,包含花费超过1000美元客户数据的行继续通过信息流,而包含花费1000美元或少于此数的客户数据的行将被放弃。
在用户已经产生筛选定义516之后,用户测试该筛选定义,并在使用它之前,确保它在集成信息流540中适当地工作。
一旦用户想在集成信息流540中使用的系统对象存在,用户显示用户希望系统100如何路由它们中的信息。为达此目的,用户设置集成对象530中的链接。每一个连结建立了作为资源的一个对象和作为目标的另一个对象,或一个对象作为请求器,另一个对象作为应答器。资源适配器总是信息资源。它们把信息发送到相同代理服务类型的目标适配器(例如,SAP R/3源适配器可以发送信息到SAP R/3目标适配器)、信息中心518和转换器520。
转换器520可以是目标、请求器和资源。它们可以从资源适配器222、信息中心518、和其它转换器520接收主输入信息。它们也可以从应答适配器226和信息中心518请求支持输入信息940,并把输出信息960、980发送到目标适配器224、中心518和其它转换器520。信息中心518可以是目标和资源。目标适配器224总是目标。它们可以从相同代理服务类型的资源适配器222、中心518和转换器520接收信息。
通过缺省,系统100使用“信息保留”。即,系统把每一个信息写到该介质,并从一个集成对象发送到另一个,以稳定存储在用户指定的位置内。如果系统发生故障,而同时信息正在传送中,当系统100被重新存储时,系统100可以从存储中恢复信息,并发送该信息到它的目标。
因为信息保留增加了系统的内部操作,所以系统100允许用户为任何集成对象530断开连续。然而,如果系统发生故障,而同时到达或来自对象的信息正在传送中,则这些信息可能会丢失。系统100提供了另外的发送有关的选项,其帮助用户管理用户的系统资源。系统100在集成信息流中为每一个集成对象维持信息保持区域。用户也可以控制保持区域的尺寸。
用户可以限制系统100为每一个对象一次保持信息的数量,用户可以限制系统100保持每一个信息的时间长度。如果集成对象530产生的信息比目标接收的快,这些限制可以防止对象保持区域增长到变形系统资源的尺寸。
用户在工作台120上的方案内设计所有的集成信息流。用户设计和保留的这些集成信息流(即,用户产生的定义510和集成对象530,并在它们中间链接)都存储在资料档案库140中。方案是一种逻辑结构,其让用户察看资料档案库140。每一个系统100有一个方案和一个资料档案库140。
现在将公开在系统100内所有信息生产者使用的信息对象的一般结构和设计原理。在此公开的信息模式是无限可扩展的,并对转换本机的文件格式和从本机的文件格式转换是很有用的,以及,在系统100内的节点之间发送内部信息。信息是分层结构,并使用名称/数值对模式代表数据。按照本发明,信息模式代表的数据总是基于对象的。它是某类的Java对象的实例。每一个数据节点基本上是安全类型,它只包含指定分类的数据。信息结构是元数据驱动。
即,很好构建的信息总是使用配置在已知信息定义512的对象内的图解编译。某些“类型”的每一个信息从相同信息定义512被编译。信息定义512本身就是一个信息的实例,尽管它的节点已经被扩展为包括如何编译它所描述的格式的实例信息,以及,如何转换数据到本机应用文件格式和从本机应用文件格式转换的选项信息。
如上面提到的一样,信息600是简单和复合对象的树结构集合。所有出现在信息中的对象是各种类型的“信息条目”。在本发明的优选实施例中,信息条目包括下面类型之一(1)数据单元;(2)阵列单元;(3)表格单元;(4)段单元或“信息链接”。信息在树的顶部总是有单个段单元,已知为“顶层段”。这个和其它的段包括任何四个单元类型的实例。
数据单元包括“原子”数据,尽管该数据被包封在Java分类中。例如,整数数据被存储在java.lang.Integer object,数据/时间信息被压缩在java.util.Calendar object等。阵列单元是一个或多个原始单元的集合。阵列的长度是在元数据中指定的,尽管这个长度可以在允许的范围内指定,在该范围内,由分列本机应用的文件纪录确定长度。表格单元实际上是段单元的同构集合,其意味着表格的每一行含有完全相同的名称和类型组合的段。它也有一个潜在变化范围的明细表。信息链接在系统中是对另一个持久信息定义的指向器,并被用于合并格式。这对实施“重新定义”是有用的。像信息定义所显示的一样,信息可以代表选项数据,以及缺省值。
在它的最简单的用法中,通过在信息定义分类中调用静态工厂法(static factory method)产生一个空类信息。这就产生一个具有适当名称/数值对,但每一个数据项被设置为零。只当公共输出信息设计者需要信息定义作为参数,并确保适当的形式。信息API提供访问它的单元的方式,或通过名称查找,或通过段迭代。在这个接合点内应当注意,使用可设置的分离器,信息支持可分层的名称方案,并允许全部或相对的“路径名”访问分层中的任何部件。
段620是非重复信息单元组。这样的段单元本身不包括实际数据。它们包括含有数据的其它信息单元(即,它们含有项600)。段620可以包括信息单元类型的任何组合。
表格640是一组段单元,称为可以重复任何次数的行。表格单元也不包括实际数据。它们包括含有数据的其它信息单元(即,它们包括项)。表格640可以包括信息单元类型的任何组合。
项660是含有数据的信息单元。项660在信息定义的分层中是最低层的信息单元。它们不合有其它信息单元。
用户在工作台120上的方案内设计所有的集成信息流。用户设计和保留的这些集成信息流540(即,用户产生的定义610和集成对象620,并在它们中间链接)都存储在资料档案库140中。方案是一种逻辑结构,其让用户察看资料档案库140。每一个系统100有一个方案和一个资料档案库140。
按照本发明的另一个重要方面,系统100包括一个分布的系统。即,用户运行系统部件,该系统部件在一个或多个物理机器(即,主机)上构成了系统100,但所有部件工作在一起作为一个应用。
节点是一个物理处理,其运行在主机上并支持一个或多个服务。每一个节点是Java虚拟器(JVM)并由操作系统识别为javaw.exeprocess。用户必需为每一个主机至少产生一个节点,该主机运行用户希望集成的企业应用程序。用户可以有用户的商务要求指定一样多的节点。
在系统100中有两个主接口(1)工作台120;(2)管理控制台160。工作台120为产生和修改集成信息流540提供工具,而管理控制台160为管理系统节点和服务提供所有的工具。下面将详细论述。
按照本发明,产生集成信息流可以按下面的方式进行。首先,用户必须从系统100得到代理服务。然后,在管理控制台上,用户设置每一个主机的系统节点,在该主机上,用户希望集成的应用程序正在运行。然后,用户在节点上设置所要求的服务,包括用户将集成的每一个应用程序的代理服务。
为了设计集成信息流,用户应当确定下列因素。例如,用户必需确定它需要从应用程序提取和传送到应用程序的数据类型。用户也将考虑(1)用户如何路由系统对象中的信息;(2)用户如何从一个应用程序转换数据,以便它可以由另一个引用程序使用;(3)用户是否需要从信息流筛选出某些数据。
在工作台120,用户首先应当产生一个方案,然后,以下列的方式产生一个集成信息流。首先,用户应当设置与用户的应用程序交互工作的适配器220,并产生用户需要在集成信息流540中产生适当信息的信息定义512。然后,测试这些这些信息定义512,以确保它们产生了适当的信息。
其次,用户应当产生中心518,以保持来自适配器220和转换器518的信息。然后,用户产生映像定义514,把来自资源应用程序514的信息转换到用于目标应用程序549的信息。此外,用户可以产生简单的输入信息920、940,并使用它们测试每一个映像定义514,确保它产生了适当的输出信息960、980。
然后,用户将产生必需实施这些映像定义514的转换器520。如需要,可将适配器220、转换器520和中心626链接起来。如果用户需要从信息流540筛选出某些数据,用户应当产生筛选定义516。最好使用样本信息,用户下一步将测试筛选定义516,确保它们筛选出适当的数据。然后,用户可以把筛选定义516指定到对象之间的链接。
在工作台120,用户检查集成信息流540的有效性,并在需要时校正它。然后,用户保存并关闭该方案。在管理控制台160,用户将设置纪录察看器,所以用户可以察看系统活动时的信息。如果用户希望察看系统活动的统计表(例如,在特殊时间间隔由单个转换器产生的信息数),那么,用户将设置统计察看器。
在管理控制台160,通过启动相应的系统节点和服务,包括用于用户准备集成的应用程序的代理服务,用户可以启动集成信息流。下一步,用户将检查记录和统计,确认集成信息流540正在适当的运行。如果用户需要修改集成信息流540,因此,用户在管理控制台停止了相应的服务,在工作台120修改集成信息流540,然后,在管理控制台160重新启动服务。
按照本发明,对于本领域技术人员来说,下面论述的具有资源适配器向导、目标适配器向导和应答适配器向导的程序都适当地设置了适配器220。一般来说,有四个分离处理步骤。
首先,必须完成下面普通的步骤(1)命名适配器200;(2)选择要求容纳适配器220的代理服务;(3)选择定义512,用于适配器220将产生、接收或应答的信息。其次,必须完成下面普通的步骤(1)选择将被设置的特殊的适配器220(即,标准或定制);(2)提供连接信息;(3)提供实施信息。时常,提供实施信息的步骤包括提取适配器220的信息定义512的步骤。
第三个处理步骤取决于将被产生的适配器220的类型。如果正在产生资源适配器222,必需指定适配器222将发送信息到的目标。另一方面,如果正在产生目标适配器224,必需指定适配器将从资源接收信息。此外,如果正在产生应答适配器226,必需指定适配器将发送应答信息到的请求器(即,转换器520)。
最后,必需为适配器的信息指定传送选项(例如,信息寿命)。然而,在产生适配器220之前,将容纳适配器的代理服务必需存在于管理控制台160。例如,在产生EntireX Broker适配器之前,用于EntireXBroker的代理服务必需存在。如果也希望使用适配器向导指定资源、目标或请求器对象,在打开适配器向导之前,这些对象必需存在。
再次参考图4(a)和4(b),代理-适配器200一端与应用程序资源连接,另一端与系统100的下部结构连接。一方面,每一个代理-适配器200的一半适配器使用它的特殊的的应用程序资源的API,或任何其它的发布的接口装置。另一方面,下面将详细论述,代理端遵照系统100的事件和信息模式。在组合中,代理和适配器协调接口协议和数据结构中的差别,以提供商务事件发布和消费的唯一的、规格化的窗口。
不像其它应用程序集成解决方案,可扩展的适配器结构的设计提供了--无隙缝地调节应用程序接口的变化的能力,而且,仍然支持当前的基本接口。这对早已经在生产中的系统是特别重要。例如,具有基本接口A′的打包应用程序由代理-适配器200的特殊版本支持。如果应用程序的新版本合并新接口A″,则用户可以同时选择适应于生产环境的老接口A′,和适应于生产前的环境的接口A″,以便测试该新接口。使用这个工具,在集成环境内增加的变化可以无隙缝地处理。
系统100的每一个部件分布交叉在所有支持平台上。代理-适配器200灵活地扩展这些部件分享应用程序。因此,系统10的关键部件(例如,代理-适配器200或集成服务器26)可以与应用程序放置在一起,或远程访问或,两者。众多的配置设置时可能的-最佳化的环境平衡了可用性、性能和管理要求。
系统100有许多标准适配器200,包括SAP、MQSeries、ENTIREBroker、RDBMS&CICS。同样地,适配器200支持这些信息资源的快速配置和容易集成。它们也减少了训练和技巧的要求。包括所有自动向导模板的ADK130提供了高生产率。它适合于任何用户的IDE,它便利定制化供给适配器和发展定制接口。适配器200由通用的语言和接口连接构成,包括C++、Java、EJB、CORBA、COM和自然语言。以这种方式,它们接通任何用户的环境和工具。它们调节内部语言专门知识,并且,它们适应复杂的资源接口要求。因此,按照本发明的代理-适配器结构提供了远大与简单化接口的强有力的工具支持。它确保相同的事件跨越在资源文件上。
代理-适配器子系统包括连接外部应用程序到EAI的运行时间模块。在适配器一边,对外部应用程序它是物理接口。代理这边的作用就像代表适配器容纳适配器、管理资源和发布事件的主机。
在系统100内的基适配器分类如下。“适配器主群组”类为适配器提供了启动本身和处理它的设置定义的能力。它也负责例示由四种可能类型的适配器通信所用的分类的实例。“适配器接收机”类为适配器提供了从EAI接收文档并传送该文档到第三方软件包的能力。“适配器发送器”类为适配器提供了从第三方软件包接收文档并传送该文档到EAI的能力。“适配器响应器”类为适配器提供了从EAI接收文档,传送该文档到第三方,接收第三方软件包的响应和返回该响应到EAI的能力。“适配器请求器”类为适配器提供了从第三方软件包接收文档,传送该文档到EAI用于处理,从EAI接收响应和返回该响应到第三方软件包的能力。
本发明的EAI代理-适配器接口由实施几个Java接口的适配器实现的,而适配器到代理接口是由使用已知方法的节点/代理部件的适配器实现的。
按照本发明的另一个重要方面,每一个适配器必须执行下列接口。对于适配器网桥,方法initialize(代理-适配器设置)在初始化期间由代理调用并由适配器到引导程序本身使用。适配器网桥是在该方法中,以至适配器220、220′、220″必须询问代理210,确定什么文档定义将被处理,对每一个文档提供什么处理类型。使用下面的代理方法完成处理GetSendDocumentDefinitions ( )GetReceiveDocumentDefinitions ( )GetRequestDocumentDefinitions ( )GetResponseDocumentDefinitions ( )然后,这个方法将分列适配器设置文档,定位属于特殊文档定义的分段,隐藏文档特殊设置信息,根据处理类型(发送、接收、请求或响应)产生特殊分类的实例。随后,当信息到达时,它将启动一个Thread(发送或请求类型),发布Agent.setReceiveListener()(接收类型),或发布Agent.setResponseListener()(响应类型),以注册将被调用的代理回叫信号。
Restart()方法由代理220、220′、220″调用,以使得适配器210终止所有活动,重新装载设置数据和重新启动它本身。在终止处理期间,由代理220、220′、220″调用shutdown()方法。
如下面论述的一样,下面的接口也由适配器220实施,onReceiveMessage(接收数据)根据JMS信息接收,由代理210调用方法,代理将发送文档到适配器处理。这个处理是在JMS对话调度单位的控制下发生的。适配器处理基本上是使用应用程序提供的接口由文档的一路路由到第三方软件应用程序构成的。然而,应当注意,在这种呼叫类型上不要期望应用程序有响应。适配器220、220′、220″将只期望来自应用程序的成功或失败的响应。如果EAI正在期望来自第三方系统的实际响应,则不使用ResponseListener接口。
对于SendListener接口,如果适配器220、220′、220″正在使用节点/代理的定时器特点,代理210调用OnSendTimerEvent(发送数据)方法。当文档将被发送到EAI处理,第三方接口没有办法实施事件驱动通知时,这个特点是很有用的。
对于RequestListener接口,如果适配器220、220′、220″正在使用节点/代理的定时器特点,代理210调用on RequestTimerEvent(请求数据)方法。当文档将被发送到EAI处理,第三方接口没有办法实施事件驱动通知时,这个特点是很有用的。然而,在这个接合点上应当注意,RequestListener接口不同于SendListener接口,RequestListener接口将发送文档到EAI并等候文档的响应。然后,这个响应将被返回到第三方系统。
对于ResponseListener接口,根据JMS信息接收,由代理210调用onResponseMessage(响应数据)方法,代理210将发送文档到适配器220、220′、220″处理。这个处理是在JMS对话调度单位的控制下发生的。适配器处理将使用应用程序提供的接口由文档的路由到第三方软件应用程序构成的,然后,发送返回响应到系统100用于处理。然而,如果系统100不期望来自第三方系统的实际响应,则不使用ReceiveListener接口。
当用户安装系统100时,用户安装的主部件是图12所示的节点管理器1210。节点管理器1210是Java虚拟器(JVM),其为所有其它节点提供了服务并为用户在系统中的安装提供了服务。在容纳节点管理器1210的机器上,系统安装自动底产生了资料档案库服务1220、用户接口服务(UIS)1230和监控器服务1240。
在用户开始客户1205对话之前(例如,管理控制台160或集成工作台120),用户必须启动节点管理器1210。如上所述,节点管理器1210自动启动资料档案库服务1230和UIS1240。除非这些服务正在运行,否则用户不能够使用管理控制台160或集成工作台120。根据用户正在完成的特殊管理控制台160或集成工作台120的任务,也可以要求其它的服务。
节点管理器1210一旦运行,用户必须设置系统节点和服务,包括用于用户期望集成的应用程序的代理服务1250。用户首先使用管理控制台160对话启动代理服务。然后,用户启动集成工作台120对话,并开始设计如图5(c)所示的集成信息流540。当用户完成这样的集成信息流540的设计时,用户使用启动节点启动它们,并从管理控制台160对话启动服务。
当用户开始客户对话时,用户识别节点管理器1210作为客户的服务器1215。用户可以把用户的商务需要指定的一样多的管理控制台160对话和集成工作台120连接到节点管理器1250。所有这样的管理控制台160对话和集成工作台120将是只读形式的。连接到节点管理器1250的控制对话可以存取正运行在节点管理器1250的档案资料库520服务的内容。当以系统100一起工作时,用户必须迎接电管理器1210、管理控制台160对话和集成工作台120对话。
节点如上所述的节点,现参考图13(a)到13(c),并连同图12,节点1310是运行在主机1300上的物理过程,并支持一个或多个服务。每一个节点1310是Java虚拟器(JVM),并由操作系统识别为javaw.exe.process。用户必须为每一个主机1300产生至少一个节点1310,该主机运行用户期望集成的企业应用程序。用户可以有用户的商务需要指定的一样多的节点1310。
服务是提供产品功能性的一个对象。系统100一般包括系统服务和应用程序服务。像集成工作台120或管理控制台160一样的客户图形用户接口(GUI)使得用户能够与系统110一起工作。客户1205(图12)可以运行在正在运行节点1310和服务的相同的物理主机1300上,或它可以运行在不同的主机1200上。
每一个企业也必须有节点管理器1210。在系统100内,节点管理器1210为所有其它节点1310提供服务。它运行用户接口服务(UIS)1230和资料档案库服务1220。图13(a)显示了具有三个主机1300的一种环境。主机1正在运行节点管理器1210,而主机1和主机2两者正在运行节点1310。
系统100是系统服务和应用程序服务的集合。系统服务支持节点和服务。例如,监控器服务1240为节点1310和服务存储系统运行时间数据。应用程序服务提供了系统100的功能性。例如,CICS代理服务支持需要连接到CICS应用程序的适配器。
系统服务按照本发明的系统服务一般包括用户接口服务(UIS)1230、资料档案库服务1220和监控器服务1240。UIS1230特别地提供了必须运行客户部件的便利(即,集成工作台120和管路控制台1600。同样,资料档案库1220存储了所有社者服务和集成信息流对象540的设置数据。最后,监控器服务1240存储系统运行时间数据,包括系统记录和统计信息。
应用服务再一次参考图12,可以看到,系统100使用的应用服务包括企业信息服务(EMS)1260,其使得系统100使用多信息节点,这些节点包括点对点、发布/预定和请求/应答信息。EMS1260也支持信息中心并提供信息保留。应用程序服务也包括集成服务(IS)1270,其使得系统100转换信息,包括分离信息、组合信息和处理信息数据。IS1270也支持转换器。RIM工厂服务(未示出)也选择性地被用作为应用服务,以管理远程方法调用链接到外部应用程序。路由服务1280也包括应用服务,其使得系统100根据信息的内容导引信息通过系统,包括按照用户确定的标准筛选信息内容,并确定信息是否是有效的。路由服务1280也支持筛选器。代理服务1250支持适配器。用户必须在运行用户期望集成企业应用程序的每一个主机600上安装一个代理服务器。如图13(b)所示,主机1和主机2都运行服务。主机3不能够运行服务,因为它没有节点1310。
客户系统100包括两个使得用户与集成信息流540一起工作的GUI。客户可以运行在任何主机1300上,不管主机1300是否运行节点管理器1210、运行节点1310和服务,或没有运行任何节点1310或服务。用户可以安装用户的商务需求指定一样多的客户。例如,用户可能想在网络点主机上安装客户1205,以便从远程与用户的集成信息流540一起工作。在图13(c)中,主机2和主机3都正在运行管理控制台160和集成工作台120客户。另一方面,主机1没有运行管理控制台160或集成工作台120客户。
在系统100内有两个主接口(1)工作台120和管理控制台160。工作台120为产生和修改集成信息流700提供了工具,而管理控制台120为管理系统节点和服务提供了所有工具。下面将详细论述。
按照本发明产生集成信息流700可以按下述方式作。首先用户必须从系统100获得代理服务。然后,在管理控制台160,用户设置每一个主机的系统节点,在该主机上,用户期望集成的应用程序正在运行。然后,用户在节点上设置所要求的服务,包括用户准备集成的每一个应用程序的代理服务。
为设计集成信息流,用户应当确定下列因素。例如,用户必须确定用户需要从应用程序提取和发送到应用程序的数据种类。用户也应当考虑(1)用户在系统对象中如何路由信息;(2)用户需要如何从一个应用程序转换数据,以便该数据可由另一应用程序使用;(3)用户是否需要从信息流中筛选某些数据。
转换处理-存取器和转换器如上所述,信息模式的另一个重要功能是在任何应用程序中输入和输出本机的文件格式。在应用程序中,包括字符和二进制数据的文件和平台-特定格式被变为所述的“标准”格式,其中数据被表示为Java对象。这个方案设计的关键目标是最佳的可再用性。因此,给定的信息定义可由概念地称为“器件驱动器”定制设置。即,当用适当驱动器设置时,结构上代表相同数据格式的两个本机文件格式产生相同结构标准信息。“器件驱动器”实际上是一组称为“存储器”和“转换器”的Java对象,其在信息定义元数据和全球元数据中被连接到它们适当的节点。
然后,已经通过Java对象串行化持续的完全设置的信息定义变为数据包,并准备到本机文件格式分列器和格式器用于给定的本机文件格式,转换处理获得了最新字符组编码和由Java研发工具(IDK)提供的定位工具的全部优点。所有本机的字符串被视为字节阵列,并在内部转换为由分列和格式路由所用的统一代码。
JDK的版本1.16支持近100种不同字符编码,本发明的信息模式用相同的逻辑处理所有的字符编码。信息模式也尽可能的使用项特征的继承性。因此,假定应用细节数据具有缺省字节顺序、编码和定位。单个的存取器可以覆盖这些,但在实际中,这不会经常发生。
存取器和转换器是双向对象。它们可以把本机数据转换成为存储在信息树中的Java对象,也可以把Java对象转回它的本机表达。在复用性的精神中,本发明的一个对象将使得需要被写入的转换种类的总数最小化。因此,在此论述的转换处理可以被视为两个坐标轴的问题,在一个坐标轴上是标记化/格式化,另一个坐标轴是字节转换。存取器分类的实例是Java对象,其知道如何在本机字段中通过“语法糖”并隔绝实际的字节,以至需要产生特殊的转换器或从Java对象转换。
例如,考虑通过预定字节或字符顺序,符点数据字段被表示在两侧。这些在系统100中被称为“标识器”。特殊的存取器(在这个例子中是跟踪标识器存取器)知道跳过第一个标识器,发现跟踪标识器的位置,以隔离四个字节,该字节实际上是符点数据的“肉”。事先设置在信息定义中的浮点字节转换器从字节产生了Java浮点对象。在另一个方向,存取器写出第一标识器,告诉转换器写出本机字节,然后,用跟踪器终止存取器。这个方案的一个明显的优点是只需要写入少量的存取器和大约两打转换器。因为本发明的存取器和转换器基本上是只读被设置的对象,由于对象尽可能的分享,所以信息定义尺寸可以保持相对小。在这个例子中,Java垃圾收集器可以方便地除去拥有对象的问题。
某些存取器和转换器需要在启动设置时设置,而其它的不需要。这些对象被打包成JavaBean,并进行简单的特性诊断。按照本发明的优选实施例,下面的表格阐明了支持系统100的存取器。当需要新类型时,它们可以无隙缝地加到系统100,而不需要写新转换器。
存取器类型特征固定长度存取器字段总是固定长度。这个固定长度指明整个字段长度或减去任何标识器的它的长度。
指明的长度 基本上与固定长度存取器相同,除了在数据中的另一个整数兼容字段包含长度指定器。
这些长度显示器是我们知道的“链接对象”,并可以选项地标记为“过渡”对象,下面将详细描述两者。
跟踪标识器 字段终止在跟踪标识器隐式长度字段长度隐藏在转换器类型中-多数用于二进制格式化段分隔符如果包含的段使用分隔器方案,分隔器可以向对象的尾部发出信号。
基于语法的对象 对象匹配某些规范表达应当注意,上述的每一个存取器是项存取器。而较简单的时候,同样可以使用段存取器。这样的段存取器有选项标识器,也可以使用分隔器方案。对某些内容,包含这种分隔器的方案取决于它的包含单元的成功的分列。分隔器使用前缀、中缀或后缀方案,事实上,是用于压缩字段的相同标识器单元。表格存取器扩展段存取器与显示纪录计数的链接项工作。
支持系统100的转换器的开始数量是相对的小,但根据商业文件格式的分析,它是很完整的。本发明的转换器包括两种基本类型基于字符的转换器或二进制转换器。所有字符转换器是从提供正确理由的概念(notion of justification)和填充字符的共同基准类继承来的。这样的填充字符可以被指定为绝对字节字符或统一代码字符,其被映射到本机编码。本发明的字符转换器包括字符转换器类型 描述小数 按照“格式化掩码”的格式化和分列,并从指定在java.text.DecimalFormat中获得。
掩码的形式是#,##0.0##,并可以指定如导引或跟踪减去标识的特点。当需要时,掩码语法将被扩展到语法不足够时的前-后处理。
整数 与小数转换器相同,但不允许小数存在。
当前状态 也由Java支持,小数转换器的进一步细化。
日期/时间使用java.text.SimpleDateFormate掩码说明。这个格式化是相当广泛的,并将满足所有的需要。
普通字符串依靠固定长度、跟踪标识器或段分隔器界定。
二进制转换器继承了指定字节顺序的缺省信息,但可以通过构造符变元单独地被覆盖。本发明的二进制转换器包括二进制转换器类型描述标识/未标识2’8、16、32、和64位的补充数。
如果需要,未标识类型被提升到下一个大Java积分类型。应当注意,对未标识的长整型,Java在java.math中包括一个任意精度的分组。IEEE754浮点和双精度数(1985说明)为此可以使用JNI,以及提供在浮点和双精度数分类中的整数位和长整型位转换器。应当注意,这只被本机浮点类型的平台支持。
压缩十进制转换器可以产生或消耗多于一个Java类型。例如,本机浮点转换器可以合理地映射到浮点、双精度数、整数、长整型或字符串。所有转换器执行本机转换器接口,其指定了“对象负载(分类…)”和“空白存储(对象…)”功能性。然而,所产生的实际子类取决于对象执行那一个其它转换器接口。这些基本上是标识器接口,其没有贡献任何新的方法。例如,双精度数转换器、整数转换器、字符串转换器等可以被用在系统100中,而没有远离本发明的精神和范围。通过分类自省,如图形用户接口的设置工具可以确定适当的转换器的列表,以呈现在特殊例子中。在负载和存储方法中,转换器检查它支持的那一个接口执行对应的分类,该对象是“实例”或所供应的分类。现在,返回的或处理的普通对象实际上是合适的子类型。
标识器标识器可以被认为是语法糖,作为段分隔器和单独的项标记是很有用的。不论段或项,所有对象可能包括引导标识器、跟踪标识器、或两者。按照本发明的优选实施例,存在三种基本的标识器格式。已知的固定模式标识器和“strtok”类型的标识器的两种格式指定字节模式或映射到本机字符编码的统一代码字符串。包括一组0或出现更多0的字符被发现,“strtok”类型标识器对于显示空白或二进制填充是很有用的。基于关键码的标识器的第三种格式有一个模式,在该模式中,被处理对象的关键码由模式所替换。例如,标识器对<X->和</-X->将变成为<客户>和</客户>,其对于分列XML类型信息和帮助定位选择的项是很有用的。
可选变元分列和识别可选变元是困难的处理过程。例如,如果指定的输入数据是五个可选择的任何长度的字符串,并且三个字符串被成功地读出,则不可能知道哪个字符串是哪个。未发现的选择项将被设置在信息中的空白处。按照本发明识别选择项的一组条件如下。
考虑段使用隔离器的情况,并且发现了空段的隔离器。例如,如果在中缀方案中输入是“Able,Charley”,用户就会知道第二个单元丢失了。在另一个条件中,当段使用基于关键码的标识器为其本身识别时,可以识别选择项。在C++缺省函数变元的类型中,将会出现另一个条件,如果所有可选变元到达列表的末端,并检测到段的末端,则分列是成功的。一般说来,只要用户没有正确地分列一个段,则该段是可选择的,用户跳到下一个段,再一次尝试,直到到达段的末端。在此,将需要具有跟踪标识器的段。在段的末端,如果非选择项没有指定一个值,则分列失败。如果连续项的格式是多义的,则不能够保证正确的结果。
按照是否是段或项,缺省的工作是不同的。用于项的信息元数据保持缺省对象。通过缺省,如果对象支持可复制的接口,对象从元数据被复制到信息实例。如果它不支持接口,该值被存储在元数据中作为字符串。连同它的分类和Java反射API被用于调用对象的基于字符串的构造器,以供给具有对象的信息。对于段,缺省是到另一个连续地存储的信息定义的链接。参考信息定义的顶极段将被嫁接到信息元数据,并产生了组合结构的信息。
链接的和过渡项在某些情况中,本机数据是自我描述的。例如,行计数可以放在表格之前。用户不想在产生的最后规范信息中包括这个计数,但是,因为它从表示表格的Java阵列的长度中是自明的。在这个例子中,节点可以选择性地被标识为过渡。它被临时加到信息上,一旦表格被建好,它将被除去。以这种方式,用户可以设置具有两个不同驱动器的信息定义,以产生相同的规范信息。就是说,在一种情况中,如果确定的表格长度没有计数指示器,它将不会在节点中产生整数段。在这个例子中,表格将是同构的,所以变元将是过渡的。
继续上面的例子,人们可能注意到,在计数和表格之间存在固有的连接。结果,两者将被标识为具有链接关系。两者将被附加地保持在其它对象的相对的和绝对的路径名上,并在它们的存取器中加上一个状态指示器,可从下面看到。
计数-提供器计数-用户长度-提供器长度-用户重新定义-提供器重新定义-用户在重新定义的情况中,提供器提供了字符串或整数判别式。在遍历和转换中,提供器项在分列方向必须呈现在它的用户之前。在格式化方向,首先,占位符被写入提供器,随后,填入适当的值。应当注意,计数提供器必须使用固定长度工作。
确认子句和关系信息定义在它的元数据项中有占位符,用于确认子句的列表和内部信息关系。按照本发明的优选实施例,只在整个信息已被转换之后,确认子句都运行在转换的信息上。然而,如果需要,对象设计确实允许每项的确认子句。也存在一个占位符,以指定在一个信息中的表格的栏目和在另一个信息中的表格的栏目之间的关系。这便利了数值和连接的映像。
没有和含有原始数据的创建信息的方式显示在图13和14中。图13显示了一种方法1340,其没有在应用程序541的开始转换原始数据。用户在1320创建一个空信息(如,“DocDef.createNewInstance”),空信息通过信息定义API 1330被填入应用的数据。因此,创建了信息实例1340。然后,信息实例1340通过另一个应用的信息定义API 1350,以便发送该信息到应用程序1360。
当需要转换原始数据时,使用图14所示的方法。首先,从应用程序1420接收应用程序的特殊数据1410。在1430创建一个空信息,该空信息不仅填入应用程序的特殊数据1410,也填入原始转换信息。通过存取器和转换器1440,应用程序的特殊数据1410被发送到信息实例1450,其也接收在1430填入的空文档的信息。例如,可以这样做
Doc.Def.createDocumentFromFileAPI支持下面的两种方法创建信息Doc.Def.createDocumentFromFileDoc.Def.createDocumentFromByte然后,通过另一个存取器和转换器1460,该信息可以被转换成为另一个应用的应用程序特殊数据1470,并由应用程序1480接收。
现参考图15(a)到15(d),现将论述根据本发明的信息对象的优点。按照本发明,图15(a)显示了一种创建信息的一种方法,而没有转换原始应用数据。
第一步,由应用程序1512创建空信息。这由创建信息定义512完成(例如,“def;∥initialize elsewhere def.createEmptyDocument(docname);”).应用程序API 1514被连接到信息定义API 1516,以便通过使用信息定义API 1516填入信息。下一步,可以应用信息缺省(例如,“def.applyDocumentDefaultValues(docname)”),因此,创建了信息实例1518。相反的方法1520显示在图15(b)中,其中,通过信息定义API1524发送信息实例1522,其被连接到应用程序API 1526,并被用于填入段数值。然后,信息被发送到应用程序1528。
创建具有转换应用程序数据的信息是比较困难的。如图15(c)所示,按照本发明,从应用程序1532转换信息到信息实例1538的方法1530通过转换器从应用程序1532开始发送信息。信息定义API 1536创建一个空信息,从应用程序1532填入含有数据的空信息(即,从文件或从字节),并从存取器和转换器加入原始转换信息。例如Document Definition def;∥Add Accessors and ConvertersInitialize elsewheredef.createDocumentFromFile(docname,filename)或def.createDocumentFromBytes(docname,byte[])相反的方法显示在图15(d)中,其中,信息实例1542通过信息定义API 1544被发送,以从信息实例1532填入含有数据的文件或字节阵列1546。例如Document Definition def;∥Add Accessors and ConvertersInitialize elsewheredef.storeDocumentToFile(filename)或def.storeDocumentToBytes(byte[])类似于这种处理的分类图表显示在图16和17。
按照本发明的另一个重要方面,系统100包括分布系统。就是说,用户可以在一个或多个物理机器(主机)上运行补充了系统100的系统部件,但所有部件工作在一起作为一个应用程序。系统100的每一个部件可分布在所有支持平台上。代理-适配器200灵活地扩展这个能力到参与的应用程序。因此,系统100的关键部件(例如,代理-适配器200或集成服务器26)可以与应用程序装配在一起或远程访问,或两者。众多的配置设置是可能的-对于平衡可用性、性能和管理要求的环境是最佳的。
操作符下面的表格一般地论述了所有当前期待的系统操作符,用户可以使用其为信息定义、转换器定义和筛选定义建立表达。系统100支持这些操作符。
操作符描述&&逻辑“和”‖逻辑“或”! 逻辑“否”= 赋值= 逻辑“等于”!= 逻辑“不等于”+ 一元加号- 一元减号* 乘
/ 除< 小于<=小于或等于> 大于>=大于或等于函数下一页的表格一般地论述了所有当前期望的系统函数,用户可以使用其为确认或筛选信息和转换信息数据建立表达。每一个描述包括函数做什么、要求的参数和返回的数值。
当转换信息数据时,用户基本上使用这些函数从输入信息提取信息项数值并为输出信息产生信息项。当确认或筛选信息时,用户通常使用这些函数创建布尔值。这些函数的参数值可以是信息项或常数(字面值)值。
数据类型 字面例子整数1234,0xFF,077,-1234长整型 1234,1234L,-0xFF,077L双精度数12.34字符串 “Sagavista”布尔值 真或假增强型小数(BigDecimal) 12.34a,其中,“a”意思是任意精度日历日期(2000,2,13)日期-时间(2000,2,13,23,59)日期-格式(“M/d/yyyy”,“ 2/3/2000”)系统100也提供下面论述的函数。尽管用户可以为系统100写用户自己的函数。函数 描述增加日期 向日历对象数据增加一个指定的天数,并返回日历对象数据的结果增强型小数到布尔值转换增强型小数对象到布尔对象增强型小数到双精度转换增强型小数对象到双精度对象增强型小数到长整型转换增强型小数对象到长整型对象增强型小数到字符串转换增强型小数对象到字符串对象布尔值到增强型小数转换布尔对象到增强型小数对象布尔值到长整型转换布尔对象到长整型对象布尔值到字符串转换布尔对象到字符串对象日历到字符串 转换日期对象到字符串比较日期 比较两个日历对象日期值,并指明第一个日期是否小于、等于或大于第二个日期双精度值到增强型小数 转换双精度值对象到增强型小数对象双精度值到长整型 转换双精度值对象到长整型对象双精度值到字符串 转换双精度对象到字符串对象发现字符串在另一个字符串对象中搜索字符串对象,在其它字符串中返回发现字符串的第一个字符的位置发现字在字符串对象中搜索字,并在字符串中返回字的第一个字符的位置找到字符串在另一个字符串对象中搜索字符串对象,并返回到布尔对象找到字在字符串对象中搜索字,并返回到布尔对象得到日期在日历对象中发现日期,并返回该月作为整数对象得到月在日历对象中发现月,并返回该月作为整数对象得到年在日历对象中发现年,并返回该年作为整数对象函数 描述得到标记 把字符串对象分列为标记,发现一个特殊的标记,并返回该标记作为字符串对象整数到字符串 转换整数对象到字符串对象是字母 确定在字符串对象中的所有字符是否是按字母顺序排列,返回布尔对象是字母数字 确定在字符串对象中的所有字符是否是字母数字,返回布尔对象是数字 确定在字符串对象中的所有字符是否是数字,返回布尔对象中间对齐 创建指定长度的字符串对象,并在其中居中另一个字符串对象证明左边 创建指定长度的字符串对象,并在其中左边证明另一个字符串对象证明右边 创建指定长度的字符串对象,并在其中右边证明另一个字符串对象长整型到增强型小数 转换长整型对象到增强型小数对象长整型到布尔值 转换长整型对象到布尔对象长整型到双精度值 转换长整型对象到双精度对象长整型到字符串 转换长整型对象到字符串对象查找 在指定另一个字符串对象中的查找表中查找字符串对象,并返回对应的值小写字母 把字符串中的所有字符转换成为小写字母替换字符串 为一个特殊的字符串对象搜索字符串对象,用替换字符串替换找到的字符串,并把具有替换字符串的字符串对象返回到适当的位置替换字 为一个特殊的字搜索字符串对象,用替换字替换找到的字,并把具有替换字的字符串对象返回到适当的位置函数描述尺寸确定字符串对象或字节阵列对象的尺寸,返回的尺寸作为长整型对象字符串到增强型小数 转换字符串对象到增强型小数对象字符串到布尔值 转换字符串对象到布尔对象字符串到日历转换字符串对象到日历对象字符串到双精度值转换字符串对象到双精度对象字符串到整数转换字符串对象到整数对象字符串到长整型 转换字符串对象到长整型对象子阵列 在另一个字节阵列对象中发现字节阵列对象,并返回找到的字节阵列对象子串在另一个字符串对象中发现字符串对象,并返回找到的字符串对象剪裁从字符串的前后除去空白大写字母在字符串对象中转换所有字符为大写字母增加日期这个函数增加了长整型对象,其向日历对象数据指定某些天数,并返回日历对象数据的结果。日历增加日期(日历、长整型)参数类型 数值(日历、长整型)日期,数天增加到日期返回类型 数值日历 结果日期例子
命名购置日期的信息项被定义为日历对象。对另一个信息,用户需要在日历对象中把购置日期的值加五天。用户将进入下面的函数增加日期(MsgDef.DatePurchased.5)如果购置日期的数值相当于2000年2月13日,则该函数将返回日历对象,该对象的数值相当于2000年2月18日。
增强型小数到布尔值这个函数转换增强型小数对象到布尔对象。
布尔增强型小数到布尔(增强型小数)参数类型 数值(增强型小数) 要转换的增强型小数返回类型 数值何时布尔值真 增强型小数是不是0的任何数假 增强型小数是0增强型小数到双精度值这个函数转换增强型小数对象到双精度对象。
双精度值增强型小数到双精度值(增强型小数)参数类型 数值(增强型小数) 要转换的增强型小数返回类型 数值双精度数值 双精度值的结果增强型小数值到长整型这个函数转换增强型小数对象到长整型对象。
长整型增强型小数到长整型(增强型小数)参数类型 数值(增强型小数) 要转换的增强型小数返回类型 数值长整型 长整型的结果增强型小数值到字符串这个函数转换增强型小数对象到字符串对象。
字符串增强型小数到字符串(增强型小数)参数类型数值(增强型小数)要转换的增强型小数返回类型数值字符串 字符串的结果布尔值到增强型小数值这个函数转换布尔对象到增强型小数对象。
增强型小数布尔值到增强型小数(布尔值)参数类型数值(布尔值)要转换的布尔值返回类型数值何时增强型小数 1 布尔值是真0 布尔值是假布尔值到长整型这个函数转换布尔对象到长整型对象。
长整型布尔值到长整型(布尔值)参数类型数值(布尔值)要转换的布尔值返回类型数值何时长整型 1L 布尔值是真0L 布尔值是假布尔值到字符串这个函数转换布尔对象到字符串对象。
字符串布尔值到字符串(布尔值)
参数类型 数值(布尔值) 要转换的布尔值返回类型 数值字符串 字符串的结果日历到字符串这个函数有两个版本。
下面的函数转换日历对象到字符串对象。
字符串日历到字符串(日历)参数类型 数值(日历) 要转换的日历返回类型 数值字符串 字符串结果下面的函数转换日历对象到字符串对象,使用格式掩码格式字符串对象。
字符串日历到字符串(日历、字符串)参数类型 数值(日历、字符串) 要转换的日历、格式掩码返回类型 数值字符串 在掩码指定的格式中的字符串结果例子命名购置日期的信息项被定义为日历对象。对另一个信息,在格式M/d.yyy中,用户需要在字符串对象中购置日期的值。用户将进入下面的函数日历到字符串(MsgDef.DatePurchased,“M/d/yyyy”)如果购置日期的数值相当于2000年2月13日,则该函数将返回字符串对象,该对象的数值是“2/13/2000”。
比较日期这个函数比较两个日历对象日期值,并指明第一个日期是否小于、等于或大于第二个日期长整型比较日期(日历、日历)参数类型 数值(日历、日历) 第一个日期比较、第二个日期比较返回类型 数值何时长整型 -1 第一个日期小于第二个日期0 第一个日期等于第二个日期0 第一个日期大于第二个日期双精度值到增强型小数这个函数转换双精度值对象到增强型小数对象。
增强型小数双精度值到增强型小数(双精度值)参数类型 数值(双精度值) 要转换的双精度值返回类型 数值增强型小数 增强型小数的结果双精度值到长整型这个函数转换双精度对象到长整型对象。
长整型双精度值到长整型(双精度值)参数类型 数值(双精度值) 要转换的双精度值返回类型 数值长整型 长整型的结果双精度值到字符串这个函数有两个版本。
下面的函数转换双精度对象到字符串对象。
字符串双精度到字符串(双精度值)
参数类型数值(双精度值) 要转换的双精度值返回类型数值字符串 字符串结果下面的函数转换双精度对象到字符串对象,使用格式掩码格式字符串对象。
字符串双精度值到字符串 (双精度值、字符串)参数类型数值(双精度值、字符串) 要转换的双精度值、格式掩码返回类型数值字符串 在掩码指定的格式中的字符串结果例子命名折扣的信息项被定义为双精度对象。对另一个信息,在格式#.##中,用户需要在字符串对象中折扣的值。用户将进入下面的函数双精度值到字符串(MsgDef.Discount,“#.##”)如果折扣的数值是0.04531,则该函数将返回字符串对象,该对象的数值是“0.05”。
发现字符串这个函数在另一个字符串对象中搜索字符串对象。如果该函数发现了指定的字符串对象,它在其它字符串中返回字符串的第一个字符的位置。
长整型发现字符串(字符串、字符串)参数类型数值(字符串、字符串)要搜索的字符串、要发现的字符串返回类型数值 何时长整型 在其它字符串中字符串 字符串被找到的第一个字符的位置。
-1字符串没有被找到发现字这个函数在字符串对象中搜索字。如果该函数发现了指定的字,它在字符串中返回字的第一个字符的位置。当字在字符串中由空白所限制时,该函数只能发现字。
长整型发现字(字符串、字符串)参数类型数值(字符串、字符串)要搜索的字符串、字到发现返回类型数值 何时长整型 在字符串中字字被找到的第一个字符的位置。
-1 字没有被找到找到字符串这个函数在另一个字符串对象中搜索字符串对象,并返回一个布尔对象。
布尔标到找到字符串(字符串、字符串)参数类型数值(字符串、字符串)要搜索的字符串、要发现的字符串返回类型数值何时布尔值 真 字符串被找到假 字符串没有被找到找到字这个函数在字符串对象中搜索字,并返回一个布尔对象。如果字在字符串中由空白所限制时,该函数只能发现字。
布尔值找到字(字符串、字符串)参数类型数值(字符串、字符串)要搜索的字符串、字到发现返回类型数值 何时布尔值 真 字被找到假字没有被找到得到日这个函数在日历对象中发现日,并返回该日作为整数对象。
整数得到日(日历)参数类型 数值(日历) 要读取的日历返回类型 数值整数 从1到31的整数结果例子命名购置日期的信息项被定义为日历对象。对另一个信息,在整数对象中,用户需要从购置日期的值中获得日。用户将进入下面的函数得到日(MsgDef.DatePurchased)如果购置日期的数值相当于2000年2月13日,则该函数将返回整数对象,该对象的数值是13。
得到月这个函数在日历对象中发现月,并返回该月作为整数对象。
整数得到月(日历)参数类型 数值(日历) 要读取的日历返回类型 数值整数 从1到12的整数结果例子命名购置日期的信息项被定义为日历对象。对另一个信息,在整数对象中,用户需要从购置日期的值中获得月。用户将进入下面的函数得到月(MsgDef.DatePurchased)如果购置日期的数值相当于2000年2月13日,则该函数将返回整数对象,该对象的数值是2。
得到标记这个函数有两种版本。
下面的函数把字符串对象分列成为多个标记,发现一个特殊标记,并返回该标记作为字符串对象。该函数假定逗号分隔标记,并让用户指明标记返回的位置。
如果要分列的字符串包含一个空值或指定标记的位置在范围之外,则该函数返回一个空值。
字符串得到标记(字符串、整数)参数类型 数值(字符串、整数) 要分列的字符串、发现标记的位置(开始于0)返回类型 数值字符串指明标记或空值下面的函数把字符串对象分列成为标记,发现一个特殊标记,并返回该标记作为字符串对象。该函数让用户指定分隔标记的字符,并让用户指明发现标记的位置。
如果要分列的字符串包含一个空值或指定标记的位置在范围之外,则该函数返回一个空值。
字符串得到标记(字符串、字符串、整数)参数类型 数值(字符串、字符串、整数) 要分列的字符串、分隔器、发现标记的位置(开始于0)返回类型 数值字符串 指明标记或空值例子(1)命名日期的信息项被定义为字符串对象,该对象在格式M/d/yy中包含一个日期。对另一个信息,在字符串对象中,用户需要从日期的值中获得月。用户将进入下面的函数得到标记(MsgDef.Date,“/”,0)如果日期包含“2/13/00”,则该函数将返回字符串对象,该对象的数值是2。
(2)命名日期的信息项被定义为字符串对象,该对象在格式MM.dd.yy中包含一个日期。对另一个信息,在字符串对象中,用户需要从日期的值中获得日期。用户将进入下面的函数得到标记(MsgDef.Date,“/”,1)如果日期包含“02.13.00”,则该函数将返回字符串对象,该对象的数值是13。
(3)命名日期的信息项被定义为字符串对象,该对象在格式M/d/yyyy中包含一个日期。对另一个信息,在字符串对象中,用户需要从日期的值中获得年。用户将进入下面的函数得到月的标记(MsgDef.Date,“/”,2)如果日期包含“2/13/00”,则该函数将返回字符串对象,该对象的数值是2000。
得到年这个函数在日历对象中发现年,并返回该年作为整数对象。
整数得到年(日历)参数类型 数值(日历)要读取的日历返回类型 数值整数 整数结果例子命名购置日期的信息项被定义为日历对象。对另一个信息,在整数对象中,用户需要从购置日期的值中获得年。用户将进入下面的函数得到年(MsgDef.DatePurchased)如果购置日期的数值相当于2000年2月13日,则该函数将返回整数对象,该对象的数值是2000。
整数到字符串这个函数有两种版本。
下面的函数转换整数对象到字符串对象。
字符串整数到字符串(整数)参数类型 数值(整数)要转换的整数返回类型 数值字符串字符串结果下面的函数转换整数对象到字符串对象,使用格式掩码格式字符串对象。
字符串整数到字符串(整数、字符串)参数类型 数值(整数、字符串)要转换的整数、格式掩码返回类型 数值字符串在指定掩码的格式中的字符串结果例子命名数量的信息项被定义为整数对象。对另一个信息,在格式#,###中,用户需要字符串对象中的数量的值。用户进入下面函数整数到字符串(Msg.Def.Quantity,“#,###”)如果数量的值是2540,则该函数返回字符串对象,该对象的值是“2540”。
是字母这个函数确定在字符串对象中是否所有字符是字母,并返回布尔对象。
布尔值是字母(字符串)参数类型 数值(字符串) 字符串到检查返回类型 数值 何时布尔值 真 所有字符是按字母顺序排列假 不是所有字符是按字母顺序排列是字母数字这个函数确定在字符串对象中是否所有字符是字母数字,并返回布尔对象。
布尔值是字母数字(字符串)参数类型 数值(字符串) 字符串到检查返回类型 数值 何时布尔值 真 所有字符是字母数字假 不是所有字符是字母数字是数字这个函数确定在字符串对象中是否所有字符是数字,并返回布尔对象。
布尔值是数字(字符串)参数类型数值(字符串)字符串到检查返回类型数值 何时布尔值 真所有字符是数字假不是所有字符是数字中间对齐这个函数有两种版本。
下面的函数创建了由整数对象指明长度的字符串对象,并在其中居中一个字符串对象。如果居中字符串短于指定的长度,则该函数在每一边用相等空间数填充该字符串。
如果居中字符串长于指定的长度,该函数返回一个空值。
字符串中间对齐(字符串、整数)参数类型 数值(字符串、整数) 要中间对齐的字符串、返回字符串的长度返回类型 数值字符串字符串结果或空值下面的函数创建了由整数对象指明长度的字符串对象,并在其中居中一个字符串对象。如果居中字符串短于指定的长度,则该函数在每一边用在另一个字符串指定的相等字符数填充该字符串。
如果居中字符串长于指定的长度,该函数返回一个空值。
字符串中间对齐(字符串、整数、字符串)参数类型 数值(字符串、整数、字符串)要中间对齐的字符串、返回字符串的长度、用于填充字符串的字符返回类型 数值字符串字符串结果或空值例子命名姓名的信息项被定义为字符串对象。对另一个信息,用户需要居中在长度20的字符串对象中的姓名的值,如果需用星号(*)则填充。用户进入下面函数中间对齐(Msg.Def.Name,20,“*”)如果姓名的值是“Wolfgang A.Mozart”,则该函数返回字符串对象,该对象的值是“Wolfgang A.Mozart*”。
证明左边这个函数有两种版本。
下面的函数创建了由整数对象指明长度的字符串对象,并在其中左边证明一个字符串对象。如果证明左边字符串短于指定的长度,则该函数在右边用空间填充该字符串。
如果证明左边的字符串长于指定的长度,该函数返回一个空值。
字符串证明左边(字符串、整数)参数类型数值(字符串、整数) 要左对齐的字符串、返回字符串的长度返回类型数值字符串 字符串结果或空值下面的函数创建了由整数对象指明长度的字符串对象,并在其中左边证明一个字符串对象。如果证明左边的字符串短于指定的长度,则该函数在右边用在另一个字符串指定的字符填充该字符串。
如果证明左边的字符串长于指定的长度,该函数返回一个空值。
字符串证明左边(字符串、整数、字符串)参数类型 数值(字符串、整数、字符串)要左对齐的字符串、返回字符串的长度、用于填充字符串的字符返回类型 数值字符串字符串结果或空值例子命名姓名的信息项被定义为字符串对象。对另一个信息,用户需要在长度20的字符串对象中的证明左边的姓名的值,如果需用空间则填充。用户进入下面函数证明左边(Msg.Def.Name,20,“*”)如果姓名的值是“Franz Shubert”,则该函数返回字符串对象,该对象的值是“Franz Shubert”。
证明右边这个函数有两种版本。
下面的函数创建了由整数对象指明长度的字符串对象,并在其中右边证明一个字符串对象。如果证明右边字符串短于指定的长度,则该函数在左边用空间填充该字符串。
如果证明右边的字符串长于指定的长度,该函数返回一个空值。
字符串证明右边(字符串、整数)参数类型 数值(字符串、整数) 要右对齐的字符串、返回字符串的长度返回类型 数值字符串 字符串结果或空值下面的函数创建了由整数对象指明长度的字符串对象,并在其中右边证明一个字符串对象。如果证明右边的字符串短于指定的长度,则该函数在左边用在另一个字符串指定的字符填充该字符串。
如果证明右边的字符串长于指定的长度,该函数返回一个空值。
字符串证明右边(字符串、整数、字符串)参数类型数值(字符串、整数、字符串) 要右对齐的字符串、返回字符串的长度、用于填充字符串的字符返回类型数值字符串 字符串结果或空值例子命名姓名的信息项被定义为字符串对象。对另一个信息,用户需要在长度20的字符串对象中的证明右边的姓名的值,如果需用星号(*)则填充。用户进入下面函数证明右边(Msg.Def.Name,20,“*”)如果姓名的值是“Sergei Rachmaninoff”,则该函数返回字符串对象,该对象的值是“Sergei Rachmaninoff”。
长整型到增强型小数这个函数转换长整型对象到增强型小数对象。
增强型小数长整型到增强型小数(长整型)参数类型 数值(长整型) 要转换的长整型返回类型 数值增强型小数 增强型小数结果长整型到布尔值这个函数转换长整型对象到布尔对象。
布尔值长整型到布尔值(长整型)参数类型 数值(长整型) 要转换的长整型返回类型 数值 何时布尔值 真长整型是不是0的任何数假长整型是0长整型到双精度值这个函数转换长整型对象到双精度值对象。
双精度值长整型到双精度值(长整型)参数类型 数值(长整型) 要转换的长整型返回类型 数值双精度值 双精度值的结果长整型到字符串这个函数有两种版本。
下面的函数转换长整型对象到字符串对象。
字符串长整型到字符串(长整型)参数类型 数值(长整型) 要转换的长整型返回类型 数值字符串 字符串结果下面的函数转换长整型对象到字符串对象,使用格式掩码格式字符串对象。
字符串长整型到字符串(长整型、字符串)参数类型 数值(长整型、字符串) 要转换的长整型、格式掩码返回类型 数值字符串 在掩码指定的格式中的字符串结果例子命名CustID的信息项被定义为长整型对象。对另一个信息,在格式##,###中,用户需要字符串对象中的CustID的值。用户进入下面函数
长整型到字符串(Msg.Def.CustID,“##,###”)如果CustID的值是10321,则该函数返回字符串对象,该对象的值是“10321”。
查找这个函数有两种版本。
下面的函数在另一个字符串对象指定的查找表中查找字符串对象,并返回对应的值。如果该函数在查找表中没有发现对应的值,则返回一个空值。
字符串查找(字符串、字符串)参数类型 数值(字符串、字符串) 要查找的字符串、查找表返回类型 数值字符串 在查找表中发现的值或空值下面的函数在另一个字符串对象指定的查找表中查找字符串对象,并返回对应的值。如果该函数在查找表中没有发现对应的值,则返回第三个字符串对象指定的缺省值。
字符串查找(字符串、字符串、字符串)参数类型 数值(字符串、字符串、字符串) 要查找的字符串、查找表、缺省值返回类型 数值字符串 在查找表中发现的值或缺省值例子命名州的信息项被定义为字符串对象。州总是包括另个字母的缩写,用于美国三个州之一的名称。对于另一个信息,用户需要字符串对象中的州的全名。如果没有全名对应缩写,用户期望字符串对象包含“N/A”。用户进入下面函数查找(Msg.Def.State,“MD=Maryland,PA=Pennsylvania,VA=Virginia”,“N/A”)如果州的值是“VA”,则该函数返回字符串对象,该对象的值是“Virginia”。
小写字母这个函数转换字符串对象中的所有字符为小写字母。
字符串小写字母(字符串)参数类型数值(字符串)要转换的字符串返回类型数值字符串 字符串结果替换字符串这个函数为一个特殊的字符串对象搜索字符串对象,用替换字符串替换找到的字符串,并把具有替换字符串的字符串对象返回到适当的位置。
如果该函数不能发现替换的字符串,它返回被它搜索的字符串而没有改变它。
字符串替换字符串(字符串、字符串、字符串)参数类型 数值(字符串、字符串、字符串) 要替换的字符串、替换字符串、要搜索的字符串返回类型 数值字符串 在适当位置的具有替换字符串的字符串例子命名地址的信息项被定义为字符串对象。对于Virginia州的地址,在地址中的值有时包括两个字母的缩写VA。对于另一个信息,用户需要字符串对象,其包括地址的值,但州的全名由缩写字母代替。用户进入下面函数替换字符串(“VA”,“Virginia,Msg.Def.Address,)如果地址的值是“Reston,VA 20191”,则该函数返回字符串对象,该对象的值是“Reston,VA 20191”。
替换字这个函数为一个特殊的字搜索字符串对象,用另一个字替换找到的字,并把具有替换字的字符串对象返回到适当的位置。
该函数只能在字符串对象中发现指定的字,如果该字是(1)前后有空白;(2)在字符串内的证明左边后面有空白;(3)在字符串内的证明右边前面有空白。如果该函数不能发现该字,它返回被搜索的字符串而没有改变它。
字符串替换字(字符串、字符串、字符串)参数类型 数值(字符串、字符串、字符串) 要替换的字、替换字、要搜索的字符串返回类型 数值字符串在适当位置的具有替换字的字符串例子命名地址的信息项被定义为字符串对象。对于Maryland州的地址,在地址中的值有时包括两个字母的缩写MD。对于另一个信息,用户需要字符串对象,其包括地址的值,但州的全名由缩写字母代替。用户进入下面函数替换字(“MD”,“Maryland,Msg.Def.Address,)如果地址的值是“Bethesda,MD 20904”,则该函数返回字符串对象,该对象的值是“Bethesda,MD 20904”。
尺寸这个函数有两种版本。
下面的函数确定了字符串对象的尺寸,并返回该尺寸作为长整型对象。
长整型尺寸(字符串)参数类型 数值(字符串) 要确定的字符串的尺寸返回类型 数值长整型 字符串的尺寸下面的函数确定了字节阵列对象的尺寸,并返回该尺寸作为长整型对象。
长整型尺寸(字节阵列)参数类型数值(字节阵列) 要确定的字节阵列的尺寸返回类型数值长整型 字节阵列的尺寸字符串到增强型小数这个函数转换字符串对象到增强型小数对象。
增强型小数字符串到增强型小数(字符串)参数类型数值(字符串)要转换的字符串返回类型数值增强型小数 增强型小数的结果字符串到布尔值这个函数转换字符串对象到布尔对象。
布尔值字符串到布尔值(字符串)参数类型数值(字符串)要转换的字符串返回类型数值布尔值 布尔值的结果字符串到日历这个函数有两种版本。
下面的函数转换字符串对象到日历对象。
字符串到日历(字符串)
参数类型 数值(字符串) 要转换的字符串返回类型 数值日历 日历的结果下面的函数转换字符串对象到日历对象,使用格式掩码解释字符串对象。
日历字符串到日历(字符串、字符串)参数类型 数值(字符串、字符串)要转换的字符串、格式掩码返回类型 数值日历 日历的结果例子命名购置日期的信息项被定义为字符串对象,其在格式M/d/yy中含有日期。对另一个信息,在日历对象中,用户需要等于购买日期的值的日历。用户将进入下面的函数字符串到日历(MsgDef.DatePurchased,“M/d/yy”)如果购置日期的数值是“2/13/00”,则该函数将返回日历对象,该对象的数值是2000年2月13日。
字符串到双精度值这个函数有两种版本。
下面的函数转换字符串对象到双精度对象。
双精度值字符串到双精度值(字符串)参数类型 数值(字符串) 要转换的字符串返回类型 数值双精度值 双精度值的结果下面的函数转换字符串对象到双精度对象,使用格式掩码解释字符串对象。
双精度值字符串到双精度值(字符串、字符串)
参数类型 数值(字符串、字符串) 要转换的字符串、格式掩码返回类型 数值双精度值 双精度值的结果例子命名总成本的信息项被定义为字符串对象,其在格式 ##,###.##.中含有美元金额。对另一个信息,用户需要在双精度对象中的总成本值。用户将进入下面的函数字符串到双精度值(MsgDef.TotalCost,“##,###.##”)如果总成本的数值是“5,137.29”,则该函数将返回双精度对象,该对象的数值是5,137.29。
字符串到整数这个函数有两种版本。
下面的函数转换字符串对象到整数对象。
整数字符串到整数(字符串)参数类型 数值(字符串) 要转换的字符串返回类型 数值整数 整数的结果下面的函数转换字符串对象到整数对象,使用格式掩码解释字符串对象。
整数字符串到整数(字符串、字符串)参数类型 数值(字符串、字符串) 要转换的字符串、格式掩码返回类型 数值整数 整数的结果例子命名数量的信息项被定义为字符串对象,其在格式#,###.中含有数量。对另一个信息,用户需要在字符串对象中的数量值。用户将进入下面的函数字符串到整数(MsgDef.Quantity,“#,###”)如果数量的值是“2,540”,则该函数将返回整数对象,该对象的数值是2,540。
字符串到长整型这个函数有两种版本。
下面的函数转换字符串对象到长整型对象。
长整型字符串到长整型(字符串)参数类型 数值(字符串) 要转换的字符串返回类型 数值长整型长整型的结果下面的函数转换字符串对象到长整型对象,使用格式掩码解释字符串对象。
长整型字符串到长整型(字符串、字符串)参数类型 数值(字符串、字符串) 要转换的字符串、格式掩码返回类型 数值长整型长整型的结果例子命名CustID的信息项被定义为字符串对象,其在格式##,###.中含有数字。对另一个信息,用户需要在长整型对象中的CustID值。用户将进入下面的函数字符串到长整型(MsgDef.CustID,“##,###”)如果CustID的数值是“10,321”,则该函数将返回长整型对象,该对象的数值是10,321。
子阵列这个函数在另一个字节阵列对象中发现一个字节阵列对象,并返回找到的字节阵列对象。
如果该函数不能够发现字节阵列,它返回一个空值。
字节阵列子阵列(长整型、长整型、字节阵列)参数类型 数值(长整型、长整型、字节阵列) 发现字节阵列的第一个字节的位置,发现字节阵列的最后一个字节的位置,发现包含字节阵列的字节阵列;位置从0开始返回类型 数值字节阵列 已经发现字节阵列命名阵列的例子A的信息项被定义为字节阵列对象。对另个信息,用户需要字节阵列对象的阵列的第八个字节。用户将进入下面的函数子阵列(0.,7,MsgDef.Array)子阵列这个函数在另一个字节阵列对象中发现一个字节阵列对象,并返回找到的字节阵列对象。
如果该函数不能够发现字节阵列,它返回一个空值。
字节阵列子阵列(长整型、长整型、字节阵列)参数类型数值(长整型、长整型、字节阵列)发现字节阵列的第一个字节的位置,发现字节阵列的最后一个字节的位置,发现包含字节阵列的字节阵列;位置从0开始返回类型数值字节阵列已经发现字节阵列命名阵列的例子A的信息项被定义为字节阵列对象。对另个信息,用户需要字节阵列对象的阵列的第八个字节。用户将进入下面的函数子阵列(0.,7,MsgDef.Array)子串这个函数在另一个字符串对象中发现字符串对象,并返回找到的字符串对象。
如果该函数不能发现字符串,则返回一个空值。
字符存子串(长整型、长整型、字符串)参数类型 数值(长整型、长整型、字符串)发现字符串的第一个字符的位置,发现字符串的最后一个字符的位置,发现包含该字符串的字符串返回类型 数值字符串已经发现字符串剪裁这个函数从字符串对象的前后除去空白。
字符串整形(字符串)参数类型 数值(字符串) 从字符串对象除去空白返回类型 数值字符串字符串结果大写字母这个函数在字符串对象中转换所有字符为大写字母字符串达写字母(字符串)参数类型 数值(字符串) 要转换的字符串返回类型 数值字符串字符串结果所示的例子和上面的论述不意味着限制本发明的范围。因此,对本发明的修改和变体对本领域的技术人员来说是显而易见的,而没有远离权利要求的精神和范围。
权利要求
1.一种集成多个计算机应用程序的系统,包括企业信息系统,所述企业信息系统在所述计算机应用程序之间传递信息;数据库存储系统,其连接到所述企业信息系统,所述数据库存储系统存储多个数据转换设置和多个规则;集成服务,其连接到所述企业信息系统,所数集成服务器包括使用存储在所数数据库存储系统中的数据转换设置的数据转换引擎和使用存储在数据库存储系统中的规则的规则评价引擎;多个代理-适配器,其连接到所述企业信息系统,每个代理-适配器连接到各自的计算机应用程序,每个代理-适配器在所述企业信息系统和所述各自的计算机应用程序之间传递信息;以及,连同所述代理-适配器一起操作的信息模式从计算机应用程序分列独立的信息单元。
2.按权利要求1所述的系统,其特征在于所述集成服务系统拆分和组合从所述企业信息系统接收的信息,并执行基于内容的信息到所述计算机应用程序的路由。
3.按权利要求1所述的系统,其特征在于每一个所述代理-适配器把从所述企业信息系统传递到所述各自的计算机应用程序的信息从系统格式转换成为各自的计算机应用程序格式,把从所述各自计算机应用程序传递到所述企业信息系统的信息从各自计算机应用程序格式转换成为系统格式。
4.按权利要求1所述的系统,其特征在于每一个所述的代理-适配器还在其它的所述代理-适配器和所述各自计算机应用程序之间传递信息。
5.按权利要求1所述的系统,其特征在于每一个代理-适配器包括一个适配器部分和包容所述适配器部分的代理部分。
6.按权利要求1所述的系统,其特征在于每一个所述代理-适配器包括一个或多个适配器部分和包容所有所述一个或多个适配器部分的代理部分。
7.一种改进的包括代理-适配器的企业应用程序集成系统,改进内容包括设置选择企业应用程序之一的适配器;代理服务容纳所述适配器;对于每一个信息的信息定义,所述适配器将产生接收或应答;连接所述适配器到所述选择的企业应用程序的装置;以及通过所述连接装置实施所述适配器的装置。
8.按权利要求7所述的改进,其特征在于所述适配器从构成源适配器、目标适配器、应答适配器和请求适配器的组中选择。
9.一种在第一计算机应用程序和第二计算机应用程序之间传递信息的方法,包括步骤从所述第一计算机应用程序提供具有第一数据的第一信息;公布所述第一信息以获得第一个公布的信息;把所述第一个公布的信息的第一个数据转换到第二数据以获得第二个信息;公布所述第二个信息以获得第二个公布的信息;以及把所述第二个公布的信息提供到所述第二个计算机应用程序。
10.按权利要求9所述的方法,其特征在于还包括步骤在公布所述第一个信息之前,把来自第一个计算机应用程序格式的所述第一个信息转换到系统格式;以及在把所述第二个公布的信息提供到所述第二个计算机应用程序之前,把来自所述系统格式的第二个公布的信息转换到第二个计算机应用程序格式。
11.按权利要求9所述的方法,其特征在于转换所述第一个数据的步骤包括从数据库请求所述第二个数据;以及从所述数据库接收所述第二个数据。
12.一种在企业应用程序集成系统中使用的代理-适配器,其集成多个企业应用程序,包括设置选择企业应用程序之一的适配器;代理服务容纳所述适配器;所述适配器将产生、接收或应答用于每一个信息的信息定义;连接所述适配器到所述选择的企业应用程序的装置;以及通过所述连接装置实施所述适配器的装置。
13.按权利要求12所述的代理-适配器,其特征在于所述适配器从构成源适配器、目标适配器、应答适配器和请求适配器的组中选择。
14.按权利要求13所述的代理-适配器,其特征在于所述适配器包括源适配器,并还包括用于指定所选择的多个目标之一的装置,所述源适配器适合于发送一个或多个信息。
15.按权利要求13所述的代理-适配器,其特征在于所述适配器包括目标适配器,并还包括用于指定所选择的多个源之一的装置,从所选择的源,所述目标适配器适合于接收一个或多个信息。
16.按权利要求13所述的代理-适配器,其特征在于所述适配器包括应答适配器,并还包括用于指定所选择的多个请求器之一的装置,对该请求器,所述应答适配器适合于发送一个或多个信息。
17.一种在第一计算机应用程序和第二计算机应用程序之间传递信息的方法,包括步骤从所述第一计算机应用程序提供具有第一数据的第一信息;公布所述第一信息以获得第一个公布的信息;把所述第一个公布的信息的第一个数据转换到第二数据以获得第二个信息;公布所述第二个信息以获得第二个公布的信息;以及把所述第二个公布的信息提供到所述第二个计算机应用程序。
18.按权利要求17所述的方法,其特征在于还包括步骤在公布所述第一个信息之前,把来自第一计算机应用程序格式的所述第一信息转换到系统格式;以及在把所述第二个公布的信息提供到所述第二个计算机应用程序之前,把来自所述系统格式的第二个公布的信息转换到第二个计算机应用程序格式。
19.按权利要求18所述的方法,其特征在于转换所述第一个数据的步骤包括从数据库请求所述第二个数据;以及从所述数据库接收所述第二个数据。
20.按权利要求19所述的方法,其特征在于还包括步骤为所选择的所述计算机应用程序之一提供设置的适配器;提供代理服务以容纳所述适配器;定义所述适配器将产生、接收或应答的每一个信息的信息定义;以及连接所述适配器到选择的计算机应用程序。
21.在企业应用集成系统中集成了多个企业应用程序,每一个应用程序有各自的本身格式,用于创建、发送、接收、存储和处理多个信息,改进包括代理-适配器包括由代理压缩的多个适配器;其中,每一个由所述代理压缩的适配器包括装置,其在由代理包容时执行离散函数。
22.按权利要求21所述的改进,其特征在于所述代理还包括多个嵌套在此的对象,每一个所述对象适合执行离散函数。
23.按权利要求22所述的改进,其特征在于嵌套在所述代理中的多个对象的第一个还包括在选择的一个企业应用程序和系统之间管理代理-适配器连接的装置。
24.按权利要求23所述的改进,其特征在于嵌套在所述代理中的多个对象的第二个还包括在选择的一个企业应用程序和系统之间管理在所述代理-适配器中检测错误的装置。
25.按权利要求23所述的改进,其特征在于嵌套在所述代理中的多个对象的第三个还包括管理在所述代理-适配器内在选择的一个企业应用程序和系统之间多个信息的转换的装置。
26.按权利要求22所述的改进,其特征在于还包括多个节点和驻留在所述节点上的多个系统服务。
27.按权利要求26所述的改进,其特征在于所述代理还包括多个嵌套在此的对象,每一个所述对象适合执行离散函数。
28.按权利要求27所述的改进,其特征在于每一个嵌套在所述代理中的对象适合于在任一个节点上执行它们各自的函数。
29.按权利要求27所述的改进,其特征在于每一个嵌套在所述代理中的对象适合于执行在系统中嵌套在另一个代理中的各自对象的它们各自的函数。
30.一种集成多个计算机应用程序的系统,包括企业信息系统,所述企业信息系统在所述计算机应用程序之间传递信息;数据库存储系统连接到所述企业信息系统,所述数据库存储系统存储多个数据转换设置和多个规则;集成服务连接到所述企业信息系统,所数集成服务器包括使用存储在所数数据库存储系统中的数据转换设置的数据转换引擎和使用存储在数据库存储系统中的规则的规则评价引擎;多个代理-适配器连接到所述企业信息系统,每个代理-适配器连接到各自的计算机应用程序,每个代理-适配器在所述企业信息系统和所述各自的计算机应用程序之间传递信息。
31.按权利要求30所述的系统,其特征在于还包括信息模式,包括多个信息单元;多个存取器,每一个存取器适用于选择的所述计算机应用程序;以及,多个转换器,每一个转换器适用于选择的所述计算机应用程序,并适合于连接到选择的一个所述的存取器;其中,对应所述计算机应用程序之一的选择的一个所述信息单元适合于被存取和被转换,用于与另一个所述计算机应用程序通信。
32.按权利要求31所述的系统,其特征在于所述多个存取器和所述多个转换器在系统中分布。
全文摘要
一种代理—适配器结构和在系统中使用信息对象的方法。其集成了配置在联网企业中的应用程序。代理压缩了多个适配器,每一个适配器适合执行与各自企业应用程序有关的离散函数。这样的代理是可扩展的,并包括一个或多个嵌套对象。每一个嵌套对象适合于执行离散函数,其可能与各自的企业应用程序有关也可能无关。信息对象包括信息模式,其适合于使用多个存取器和多个转换器。信息模式是包括多个信息单元的分层数据结构,每一个信息单元从多个段单元、多个表格单元和多个项单元选择。项单元包含选择一个企业应用程序的本基数据。
文档编号G06Q10/00GK1294710SQ99803968
公开日2001年5月9日 申请日期1999年11月18日 优先权日1998年11月18日
发明者伊宪寿, 约翰·蒂莫西·泰勒, 加里·艾伦·戈登 申请人:Saga软件有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1