图形xml编程系统和引擎的制作方法

文档序号:6553142阅读:213来源:国知局
专利名称:图形xml编程系统和引擎的制作方法
图形XML编程系统和引擎相关申请本申请要求2004年10月1日提交的美国临时申请No.60/615172 的优先权。
背景技术
国家标准和技术协会("MST")在2002年发布一份报告,指出 软件错误每年消耗美国经济595亿美元。随着"环球网业务(Web Service)",亦即接收XML消息、对其进行处理和返回XML消息的 软件,也可以称为(活动业务、实体业务、处理业务、企业业务等) 迅速变为实际的标准软件组件模型,并将由成千上万建立,这项开 销的一个急剧上涨的部分将涉及环球网业务和XML处理软件。该 NIST研究发现,这项开销的三分之一以上可以通过改善测试,能够 较早地和更有效地识别和去除缺陷而加以消除。但是,要能够做到 这一点,就要求一个全新的方法,使用不同的编程技术和语言。环 球网业务的大规模开展要求一种在开发时就保证环球网业务正确性 并能够对那些业务的改变进行自动化管理的技术。今天,应用程序开发用的开发范式是面向对象的,而不是为建立 这种无数称为环球网业务的在结构上定义为XML实体的小应用程序 而设计来的。目前该产业将其面向对象的语言应用于环球网业务。 这是不相匹配的。诸如Java或.NET C弁等语言是面向对象的。对象包含数据和方 法。该对象的行为作为方法编码在该对象内。在一个对象内表达的 约束水平,就数据而言是简单的,但就方法而言却可能是极其复杂 的。在某种程度上,这是因为Java和.NET a是满足一般需要的一般语言,而不是针对所有需要的。MS VS [Microsoft Visual Studio]和Eclipse 两个都提供 "Intellisense"或"类似于Intellisense"的特征,来帮助开发者用面 向对象的语言进行工作。例如,若开发者键入"custlnfo.",而且若 custlnfo是一个Customerlnfo类型的对象,则这两个环境都显示弹出 式菜单,列出Customerlnfo类的字段和方法。这种类型查阅是基于 静态类型,而最后只不过是一个字典查阅算法而已。MS VS和Eclipse (利用相关的编译器,例如,Javac )还提供开 发者从这样的工作室(studio)预计的最小检查(语法分析错误,报 警,...)。这种检查可以在编译时或背景下完成,视所使用的产品和机 器速度而定。但是,MS VS和Eclipse没有能力验证一个程序在逻辑上有效、 它遵循各种约束以及它不会有运行时错误。其结果是, 一个程序的 质量完全取决于人的因素,这意味着程序在很大程度上是不可靠的。 例如,开发者不得不检查空引用、没有利用的变量、输入参数的正 确性及其他致命错误。对于所有这些方面和许多其他方面,该程序 的质量有赖于该开发者的质量和经验,而且失察是极其频繁发生的。 换句话说,采用基于对象的语言,在设计时无法知道一个程序将不 会产生不受控制的例外和/或由于运行时错误而崩溃。因而,采用面向对象的语言时必须解决以下问题-在编写代码的同时编写测试代码(极端编程)。-遵循良好的QA过程,以测试该程序。-有效地使用调试工具。-使用良好的技术和用户服务来对付在QA阶段过程中没有检测 出来的问题。作为示例性例子,考察一个环球网业务的开发,它处理遵循IFX 1.4.0规格(BallnqRq消息)的账户平衡查询请求,并返回一个账户 平4紆查询响应(BallnqRs )。该BallnqRq和BallnqRs是基于XML的消息并在形式上在IFX 1.4.0 XML Schema中定义。该Schema的片賴二 如下<xsd:elenient name="BannqRq" types'BalInqRq一Type, </xsd:dement><xsd:complexType narae^BallnqRq—Type"> <xsd:sequence> <xsd:doment ref-wRqUID7> <xsd:dement ro&B'TvfcgRqHdr" minOccurs-"0"^> <xsd:element ref="Asyn9&qUID" minOccurs-"0',/> <xsd:dement ref="Custlir minOccurs-"0"/> <xsd:choice> <xsd:element r^f-"DepAcctId7> 《sd:ele咖nt ret="Ca^dAcctId7> <xsd:eiement ref-"LoanAcctW7> </xsd:choice> <xsd:dement rrf-HIncExtB^r minOccurs="0"/> <xsd:dement jref-"DdivwyMethod" minOccurs="07i> </xsd: sequence </xsd:comple、Type>这意味着,任何BaJI叫Rq消息都将以BalInqRq标签开始,它将 包含-强制性的RqUED元素, -任选的MsgRqHdr元素(2个可能的案例), -任选的AsyncRqUDD元素(2个可能的案例), -任选的Custld元素(2个可能的案例),-然后是DepAcctld元素或CardAcctld元素或LoanAcctld,但不同时是任何两个(3个可能的案例),-和然后是^f壬选的IncExtBal元素(2个可能的案例), 國和最后是4壬选的DeliveryMethod元素(2个可能的案例)。 给定该接口的定义,而且甚至不涉及元素出现时特定的值,或不表示像CardAcctld这样的元素本身可能包^^任选的元素、选择等的定义,在理论上我们就已经要求2x2x2x3x2x2=96个测试案例来覆盖不同的可能性。这是一个有效的BallnqRq的一个示例<3BalInqRq>,UID>f81(H7dec-lWO-a7<55-OOaOc9Iedbfc</RqUID> <MsgRqHdr><NetwarkTniMo;>^NctworkOwnen>ATM</NetworkOwner><BankId>10255000017</Bankrd;> <iP08tAddr><Addrl>93 Dalma Drive</Addrl><City>Mountain View</City> 〈StafeProv5-CAoC/StateProy》 <PostalCode>94041</PostalCode> <Country>US</Country></PostAddr> </NetworkTrnInfo> <MsgAuthCode><MacValue>1234</MacValue> </MsgAuthCode> </MsgRqHdr> <Car^AfictId> <CardMagData><dVtagt>at2>;123456102132547692=0212</MagDat2> </CardMagData> <AcctType>Dt A</AcctType> </CardAcctId> </BaIlhqRq>采用这一个示例,测试其中有MsgRqHdr、 CardAcctId,但是没 有AsyncRqUID、 Custld、 IncExtBal或DeliveryMethod的案例。在理 论上,开发者会需要95个以上的测试案例。另外,因为环球网业务不只是由输入的XML Schema片段定义 的,而且是由输出XML Schema片段定义的,所以还必须测试所得 到的任何XML输出是否遵循输出XML Schema片段。当测试案例产生运行时错误或产生不遵循该XML Schema的 XML输出时,该程序都必须修改。任何这样的修改都可能造成新的 问题。之所以采用这种费时的方法,主要的原因是像Java, C或C弁等 这样的语言不能够在编译时根据符合该XML Schema规才各的类型系 统完成静态类型检查。例如,在一个处理上面的XML Schema示例 的XML实例的Java程序中,尽管CardAcctId和LoanAcctld是互斥 标记,但在技术上无法防止开发者做出诸如试图拷贝CardAcctId的 内容等4昔误,尽管LoanAcctld已经测试正确。因此,需要这样一种系统和方法它们用来防止开发者犯这样的 错误、检测改变该程序时造成的错误和保证整个程序的正确性,而 又不依赖基于案例的广泛测试。正如将要看出的,本发明以一种优 雅的方式启动这样的一个系统和方法。发明内容这些挑战可以用这里描述的方法和系统加以避免。这些方法和系 统是面向文档的,而不是面向对象的。面向文档的环球网业务是指其方法是隐含地假定的并且不是在该 XML Schema中表达的环球网业务。例如,诸如IFX、 ACORD或OTA 等产业标准Schema的目的是用一组通过典型请求/响应交换而交换的 丰富的约束来表达复杂的数据结构。面向文档的环球网业务与RPC风格的环^求网业务形成对照,在 后一种情况下XML仅仅用来表达方法和它们的参数, 一般利用映射 到存在于所使用的语言(例如Java或C# )中的数据类型的简单的XML 类型。正如今天,Java或0#用的开发环境提供诸如Microsoft XSD.EXE 等允许开发者从来自XML Schema的一个或多个类建立XML Schema 的工具。这些工具用在RPC-风格的环球网业务还行,用在面向文档 的环球网业务就不幸地失败了 ,因为在该XML Schema中表达的大 部分约束在XML片断和对象之间来回转换的过程中在翻译中丟失 了。通过采用面向文档的环球网业务方法,XML的作用要翻转过来 (和XML使用的基于PRC的方法对比),而且最后变成它原来设想 的作用。不是仅仅利用XML作为两个面向对象的作为环J^网业务交 换(RPC)的 一部分的端点之间的数据参数传输,这里描述的系统和方 法由基于过程的语言构成,它在XML Schema上执行,而且受制于 这些Schema中所表达的所有约束。因而该XML Schema变成环3求网业务交换的中央智能。该中央智能是由这里描述的系统和方法表达 和强制实行的。采用这里描述的方法和系统,设计环球网业务的过程就根本不同了。首先,正如前面指出的,该语言受限于项目所用的Schema。例 如,若一个序列元素可以包含0至5个元素,这里描述的方法和系 统将自动地强制实施该约束。利用Java或.NET C#,开发者必须明确 地编写代码来强制实施和检查该数据的这样一个特性。其次,诸如Java和.NET C^等一般语言内的类型检查是动态的, 而不是静态的。采用诸如Java或C弁等语言,要保证所产生的XML 消息对于XML Schema内定义的XML类型是正确的,唯一的途径是 使用一个验证分析器。验证分析器是一个程序,它采取XML文档和 XML Schema作为输入。 一旦一个样本XML文档可用,马全证分斗斤器 便只可以在运行时纟皮调用。这种仅在运行时才进行的类型4全查称为 动态类型检查。这里描述的系统和方法在设计时完成静态类型检查, 保证该XML数据,不论输入还是输出,都与该环球网业务^f吏用的XML Schema片段所表达的约束一致,而不论在输入的接收和输出的发送 之间所执行的操作的数目和类型。尽管对于Java或。#的类(对象) 确实也有静态类型检查可用,但是它对XML类型(XML Schema片 段)是不可用的。采用这里描述的系统和方法,开发者隐含地受到 限制,要尊重Schema中表达的约束并与之一致。采用Java、 C存或其 它一般的语言时,开发者不得不明确地编写定制代码,以便达到同 一结果。因此,这里描述的系统和方法提供不仅100%保证环球网业 务就输入和输出而言没有接口错误,而且大大加速环球网业务根据 复杂XML Schema的建立。第三,与其中可能性的范围"无穷"的一般语言相反,这里描述 的系统和方法提供一种专用语言和环境,它允许自动探测一个程序 所有的执行路径。用这样的方法10-类型是推算出来,而不是声明的。-类型层次结构(子分类)是基于该类型的描述,而不是它的名字。换句话说,我们知道,类型<a〉<b>String
</b></a>是 〈aXb〉String[l]々bx/^的子类型,不是因为它具有相同的名字,而 是因为第 一个是第二个的子案例。利用数学集合,我们会说,String[O.. 1 ] 的任何实例都是String[l]的子集(因为空集和String[l]集合都包括在 该String[l]集合中)。-类型是作为约束集合,而不是作为名字定义的。这样便有可能 捕捉与给定变量可以保存的值的类型有关的许多更多的信息。-类型是指XML类型,而不是对象类型(类)。因而,采用这里描述的系统和方法,开发者在设计时便知道,她 或他的程序在运行时不会失效或崩溃,因为该工作室(这里描述的 系统和方法的GUI应用程序部分)在设计过程中就已经进行了完整 的执行路径分析,并帮助开发者在设计时修正错误。大部分设计镅-误甚至在环球网业务首次运行以前就已经排除了 。


图1是一个流程图,举例说明XML处理程序的可视描绘和编辑, 它提供XML类型推理以避免编程错误,以便检测错误,并按照它们 预期的XML输出类型来验证程序。图2举例说明XML处理程序在一个给定的执行点上XML类型 推理用的流程图;图3举例说明根据XML类型推理检测XML处理程序中的指令 配置错误用的流程图;图4举例说明XML类型作为标识节点树的描绘;图5举例说明XML子分类算法用的流程图;图6举例说明基于XML确认的处理程序用的流程图;图7举例说明本发明的系统和方法的输出消息;而图8举例说明元数据检查器的输出。
具体实施方式
本发明广泛利用可从诸如环球网业务等处理程序的接口定义获得 的元数据,在开发处理逻辑的同时防止和检测许多错误。它还无i仑 何时无论由于何种原因(内部逻辑、在该环球网业务使用的任何数 据源或在支持该环多求网业务的Schema中的改变)在该环J求网业^ft 出任何修改,而使改变管理自动化。这里描述的系统和方法在开发 时通过在每一个执行路径上和在该处理逻辑的每一个执行点上,动 态地计算所消耗和产生消息的元数据来做到这一 点。相应地,系统和方法是为建立和保持可视XML编程环境而设置 的,其中该程序的XML处理逻辑是自动地计算和用图解方式可^见化 的,而且其中实时针对该程序中的每一个执行点计算在运行时处理 的XML实例的元数据,以便提供引导编程、错误防止、错误检测和 程序确认。该系统和方法使所配置的系统能够通过动态,执行路径分 析来降低消息处理应用的开发和维护成本。这里描述的方法和系统是面向文档的。Schema包含包括非常丰 富的约束集合的数据结构(与对象相比)。基于我们的发明的环球网 业务的行为驻留在基于过程语言的其将方法和系统放置在Schema上 的语言中。因此,该语言受Schema约束,相比之下,Java和.NET C# 语言几乎不受约束而,而在环球网业务的句法和语义确认方面根本 就没有约束。采用这里描述的方法和系统,设计环球网业务的过程就#>本不同 了。首先,正如前面指出的,该语言受项目所用的Schema约束。例 如,若一个序列元素可以包含0至5个元素,则这里描述的方法和 系统自动地强制实施该约束。采用Java或.NET C弁时开发者必须明确 地编写代码进行约束并检查该特征。其次,正如这里描述的,类型 检查是动态的,而不是静态的。釆用诸如Java或C/^等语言,要保证所产生的XML消息对于XML Schema内定义的XML类型是正确的,唯一的途径是使用验证分析 器。验证分析器是一个程序,它以XML文档和XML Schema作为输 入。 一旦样本XML文档可用,验证分析器便只可以在运行时被调用。 这种类型的仅在运行时才进行的类型检查称为动态类型4全查。这里 描述的系统和方法在设计时完成动态类型检查,保证该XML数据, 不论输入还是输出,都与该环球网业务所使用的XML Schema片段 所表达的约束一致,而不论在输入的接收和输出的发送之间将执行 的操作的数目和类型。当然,采用Java或C/Z对于类(对象)也有静 态类型检查可用,但不是针对XML类型(XML Schema片段)。采 用这里描述的系统和方法,开发者隐含地受到约束,要尊重该Schema 中所表达的限制,并与之一致。采用Java, C弁或其它一般的语言, 开发者不得不明确地编写定制代码,以便达到同一结果。因此,这 里描述的系统和方法不仅提供一个100%的保证,就输入和输出而言 该环球网业务没有接口错误,而且大大加屯基于复杂的XML Schema 的环球网业务的建立。第三,与其中可能性的范围固有地是无限的一般的语言相反,这 里描述的方法和系统已经设计 一 种专用语言和环境,它允许自动才笨 测一个程序的所有执行路径。正如这里描述的-类型是推算出来的,而不是声明的。-类型层次结构(子分类)是基于该类型的描述,而不是它的名 字。换句话说,我们知道,类型〈aXb〉String
〈/bx/a〉是 〈aXb〉String[l]々bx/a^々子类型,不是因为它们具有同一名字,而 是因为第一个是该第二个的子案例。利用数学集合,我们会说, String[O..l]的任何实例都是String[l]的子集(因为空集和String[l]集 合两个都包括在String[l]集合中)。-类型是作为约束集合而不是作为名字定义的。这样便可能捕捉有关给定变量可以保持的值的类型的许多更多信息。-类型是指XML类型,而不是对象类型(类)。因而,采用这里描述的系统和方法,开发者在设计时^f更知道,她 或他的程序在运行时不会失效或崩溃,因为该工作室(这里描述的 系统和方法的GUI应用程序部分)在设计过程中就已经进行了完整 的执行路径分析,并帮助开发者在设计时修正错误。甚至在该环球 网业务首次运行以前,大部分设计错误就已经排除了。在操作上,该输入和输出的元数据是用 一个标准化的语言定义 的。该系统能够在开发过程中进行动态的执行路径分析,帮助开发 者知道该开发中的程序的实时表现。在开发过程中,该系统计算场 景处理逻辑的每一个执行路径上更新的输入和输出元数椐,并防止 用户产生错误。在每一个阶段,从操作开始,在输入以及输出上分 析该元数据的状态。例如,该系统可以防止开发者试图操作或拷贝 一个在特定的执行 路径上运行时不可用的元素。本发明提供一个举例说明该输出元数 据的用户界面。若被高亮度显示,则该给定的执行路径和执行点可 以被认为是存在的。这在防止错误上是特别有用的,其中用户能够 针对每一个执行路径准确地使输入和输出的构造状态可一见化,并确 定是否满足预定的约束。该操作向开发者提供一个能引导编程、错 误防止、错误检测和程序确认的系统。图1是一个流程图,举例说明一个XML处理程序的可-见描绘和 编辑,它提供XML类型推理,以便按照它们的预期XML输出类型, 来避免编程错误、来检测错误和验证程序。该过程在"开始,,101处 以"操作l" 103开始,进到"操作2" 105处的判定点,持续到"操 作3" 107,在"结束"109处结束处理。图2举例说明XML处理程序的一个给定4丸行点上进行XML类 型推理用的流程图。该过程在"开始"201处开始,第一步骤是在该 XML处理程序的可视描绘中选择一个执行点203、 205。这是通过在两个指令之间的点上选择一条指令完成的。确定由一条指令清单构成的执行路径。该执行路径在该XML处理程序的可视描绘中是高亮 度显示的207。在下两个框中,把该程序的输入的XML类型传送到与该执刊-,各 径中的第一条指令相联系的类型推理子程序209,而与笫一操作相关 的类型推理子程序根据指令的配置计算所得的XML类型211。若所 选定的执行点已经达到213,则显示215算出的XML类型,而且该 程序结束217。否则,把先前计算的XML类型传送到该4丸行路径中 的下一条指令,而与下一条指令相联系的类型推理子程序219计算 所得的XML类型221。若因为该操作所要求的XML类型在该输入 XML 223中不存在而计算失败,则确定225 —个错误。否则,控制 退回227。若所选定的执行点尚未达到,则把XML类型传送到下一条指令, 并且该类型推理子程序计算所得的XML类型。图3举例说明一个流程图,用以根据XML类型推理,;检测XML 处理程序中指令配置的错误。该流程图举例说明用户修改源程序301 的情况,识别受修改影响的执行路径303,并推算出所得的XML类 型305。若全部执行点均已处理307,而且没有错误309,则程序退 出311。否则,继续执行,直到确定321该计算点为止。若有计算错 误323,则高亮度显示出现错误的指令,显示计算错误325,而且程 序退出327。图4举例说明XML类型作为标识的节点树的XML类型描绘, 例如,根元素401、子元素411和413,由基本类型发生约束、枚举 及其他类型的信息而限定。表示子元素413还产生子元素421、 423 和425。图5举例说明XML子分类算法用的流程图。如图5所示,该过 程以XML类型的描绘1和XML类型描绘2开始501,其中代表类型 1和2的节点树中的第一节点纟皮选定503。该节点测试兼容性505,而若不兼容,则程序退出511。若该节点是兼容的,而且所有节点均 已处理509,则该程序结束513。若尚未处理全部节点,则处理513 下一个节点,并测试该节点的兼容性515。控制返回,以〗更返回至该 节点是否最后的节点的判定519。图6举例说明基于XML确认的处理程序用的流程图。处理以用 户触发确认601开始,识别603该XML处理程序中的所有可能的3各 径。针对第一执行路径605推算所得的XML类型。若推算出来的XML类型不是预期的XML类型607的一个子类 型,则识别和显示609产生出错消息的XML类型的部分。否则,没 有确认错误,而且所有执行路径均已处理611,该程序^皮认为没有确 认错误613。若尚未处理611所有执行路径,则针对下一个执行点推算所得的 XML类型615。若该推算出来的XML类型是该预期的XML类型617 的一个子类型,则对下一个节点进行类型检查。否则,检测并显示619 产生该子分类错误的XML类型部分。本发明的另 一个实施例提供计算机编程系统,它包括编程语言和 它的作为图形流程图的交互式可视描绘。与该程序特定执行路径和 点对应的图形边缘可以按可4见方式选定来加入新的处理节点,或在 给定路径的给定点上显示该程序变量的元数据。该系统包括一个元 数据计算模块,配置成在给定该语言程序、该程序的输入和输出的 元数据和该程序中执行路径和点时,计算在程序的任何给定点和路 径上可用的和/或预期的变量的元数据,从而启用引导开发。该系统 还包括一组配置面板,用以处理节点的每一个可能的类型。该面才反 利用算出的元数据和它在其中增加节点的执行点处的可视描绘,以 便启动该处理节点的指向和点击配置,并防止用户把不存在的或其 类型与处理节点的参数类型不兼容的变量选择为处理节点的参数, 从而防止错误。该系统还包括处理节点配置错误可视通知模块。操作时,若处理节点的配置是或变得不正确,该才莫块使处理节点能够立即以可^L方 式高亮度显示。这可能是因为它的参数使用不存在的变量,或者在 给定的执行路径上没有要求的类型,因而,在该程序设计时启动错-误检测。该系统还包括一个程序确认模块,它探测所有的执行路径, 针对每一个可能的执行路径计算所得的元数据,并验证它是否与程—序的输出的元数据一致,若非如此,则通过一个发现错误的执行J各 径和点清单来通知用户,因而,启动整个程序的确认并加速问题查 找。XML的优点之一是它使标准化的语言能够用于元数据XML Schema。大部分XML数据交换规格在该语言(甚至WSDL,环3求 网业务接口描述语言也是基于该语言)中是或将是可用的。在一个按照本发明的系统配置中,开发任何XML处理逻辑以前 的第 一 步骤是要定义该程序输入的元数据和该输出的元数据,在才支 术专门术语中称为场景。输入和输出的定义是通过以可^见方式/人以 前装入的XML Schema或WSDL中选择一个节点来完成的。在我们 的示例中,我们装入IFX1.4.0 XML Schema和用指向与点击接口配 置我们的处理场景所消耗的输入消息和所产生的输出消息,如图7 所示。完成配置之后,该系统产生如图8所示的描绘,表示一个元数才居 才企查器(Metadata Inspector)的描绘。首先,这无疑是一个比以前显示的原XML Schema可读得多的 版本。我们实际上取得甚至更多的信息我们现在知道,元素RqUID 是UU1D类型,CardAcctld实际上是一个复杂的元素,可能包含Acctld 或CardMagData元素等。我们可以发现的是,该场景具有一个起点、 一个终点、 一个执行 路径和在该执行路径上的一个执行点。该执行路径实际上是深蓝色 的,意味着它已经^C用户选定,而我们已经显示的输入元数据实际 上是该特定的执行路径和点上输入的元数据的状态。我们还可以考察该特定的执行路径中输出的元数据的状态该元数据可着以对比颜色或色调。这表明,这是所产生的消息的 预期的元数据,然而在该输入的情况下,它是所收到的消息的实际 的元数据。在一个按照本发明配置的系统中,XML处理程序,亦称"场景,,, 是通过向 一个执行点加入处理操作而设计的。通过实施例和例证,我们准备向我们的场景加入3个简单的才喿 作,并看到在不同的执行路径上在元数据上造成的后果*在该输出中建立BalInqRs元素的操作。*测试该MsgRqHdr元素是否存在于该BalInqRq请求消息的才喿作,若是如此,则把MsgRqHdr的内容拷贝到输出。 *根据Acctld(Card, Dep或Loan)的什么类型用在该MsgRqHdr中进行切换的操作。 这样的一个场景中,我们可以看到,我们现在有六个执行路径(两 个带有存在/不存在开关和三个处于该Id/CardAcctld/LoanAcctld开关 中)和八个执行点。对于每一个执行点,都有可能使该元数据可4见 化。按照本发明,用三个可以配置的不同颜色来区分未被选择的执行 路径(例如,浅灰色)、被选定的执行路径(例如,蓝色)和该执行 路径内的执行点(例如,深蓝色)。看该箭头,我们可以看到,我们还已经选定主要的执行路径,但 是在该路径内,我们已经选定观看在该输出中建立该BalInqRs元素 的"建立BalInqRq"操作之后元数据的状态。图6表示此操作之后 输出的元数据的状态我们可以看到,在该输出元数据中,该BalInqRs元素已经改变 颜色,这意味着,对于这个给定的执行路径和执行点,用户可以i人 为它在"那里"。这是特别有用的,因为用户能够准确地对该输出构 造中他所处的每一个执行路径进行可视化,并看到该约束是否得到满足。在帮助用户避免错误方面,这是强有力的。 防止错误若我们选择"MsgRqHdr是否存在"操作的"存在"分支,则我 们可以看到,该MsgRqHdr元素的实际基数已经从[O..l](亦即,存 在或不存在)变为[l](存在)。若我们选择"MsgRqHdr是否存在" 操作的"不存在"分支,则我们看到,我们在该输入元数据中再无 法看到MsgRqHdr元素。好了 ,这可能是预期的,因为我们只宣称 它不存在。通过在该场景处理逻辑的每一个执行路径上和点上计算更新后的 输入和输出元数据,本发明防止用户产生诸如尝试操作或拷贝 一 个 运行时在一个特定的执行路径上将是不可用的元素的错误。类似地,我们可以看到,在"开关"操作的每一个分支上,选择 图标已经消失,而只有相关的Acctld类型可用按照本发明,诸如,例如,拷贝、移动、数学表达及其他操作等 的配置,是利用在增加该操作的执行点上所算出的元数据配置的。例如,若用户想要在一个特定的执行点上加上一个拷贝操作,4也 首先要右点击该执行点,然后选择要加上的操作(例如拷贝操作)。然后配置面板弹出。所有配置面板都是专用于该操作功能的,但 是它们全都利用所算出的指向和点击配置用的元数据。例如,对于 拷贝操作,用户可以在该操作配置面板(见下图)的"原点"标签 下面选择拷贝什么,并在配置面板的"目的地,,标签下面选择4巴它 拷贝到哪里去,只需指向和点击即可。这使用户基本上不可能由于搞错而选择运行时不在"那里"的元 素。在这种情况下,用户不能够拷贝CartAcctId或LoanAcctId)。这 是一个减少潜错误的风险和相关的所要求测试的强有力的途径。这 里是一个我们要在该CardAcctld分支上加上一个操作的配置面净反的 示例,正如你可以看到的,不可能用类似于运行时可能不在那里的 CardAcctld或DepAcctld的元素来配置该"原点,,(亦即,拷贝什么)。通过自动化错误检测进行改变管理在它的整个开发环境中实时计算的元数据的许多其它优点之一是,在对XML处理逻辑、环球网业务定义或所访问的资源的定义作 出改变时检测错误的能力。考察我们改变我们的示例场景来支持另一个IFX版本的示例场 景,例如IFX1.3.0 XML Schema的情况。我们可能迅速地改变场景 的配置来使用IFX 1.3.0提供的、而不是IFX 1.4.0提供的BallnqRq/Rs 定义。我们实施改变之后我们得到以下几点图8表示,该"若MsgRqHdr"操作以对比颜色高亮度显示,指 示对Schema的新版本的升级使该操作无效。原因是,在该IFX 1.3.0 XML Schema中该MsgRqHdr元素不存在,但是在该场景中的操作之 一利用它,其结果是,这新的上下文中操作没有适当配置。本发明 能够自动地检测配置错误,并利用另一个颜色、例如红色对它们进 行高亮度显示。按照本发明,所配置的系统能够识别哪些操作利用 这个元素并例如用红色高亮度显示它。若我们考察"若MsgRqHdr 存在"操作的配置,我们得到以下出错消息然后我们能够采取必要的动作(在这种情况下,抑制该"若 MsgRqHdr存在,,操作),修改我们的场景来支持该IFX 1.3.0 IFX Schema。抑制来自一个场景的操作,就像选择它们并在该计算才几的 键盘上按下"删除"按钮那么简单。若我们已经直接用一个像Java、 。#或C的技术来实现我们的场 景,这会花费长得多的时间来识别哪些部分的代码将受到该输入和 输出接口的改变所影响。 业务确认业务确认超出元数据的实时计算的范围。它在每一个可能的扭j亍 路径上探测所得的元数据,以便检查它是否遵循该输出的约束。在形式上, 一个XML处理程序的输入,诸如环-求网业务,可以 看作是有效的一组实例XML文档(输入元数据)。输出(输出元数据)也一样。业务确认由下面构成 1 )探测该程序的每一个单个分支,2) 计算每一个分支所产生的一组有效的XML文档(针对该分 支算出的元数据),和3) 验证它["它"=XML文档组]是否"包括"(在集合理论的意 义上)在该输出中的预期的XML文档的集合中。若它包括在该输出的元数据中,则该XML处理程序^皮认为是有 效的,因为对于每一个符合该输入元数据的XML实例,都保证产生 一个符合输出元数据的XML输出。该业务确认并非实时功能性,因 为它要求数量较大的计算能力。它是由用户从该系统中的菜单项目 调用的。当业务/XML处理程序无效时,该系统列出(见下图)所有 检测出来的错误。由此用户能够选择该清单中的一个错误,而该系统将自动用蓝色 高亮度显示该执行路径,其即为该问题的源,并用红色高亮度显示 该操作,有的话,其即为该问题的源。在广泛使用从XML Schema衍生的元数据以便在设计时直4妄防 止和检测XML处理程序中的错误的系统和方法的实施例中,已经对 本发明进行了描述。该独特的特征能够在开发时而不是在测试时识 别问题,并减少所要求的测试案例数量。最后,这急剧降低开发和 维护消息处理应用程序的成本。应该明白,这些实施例只是示例而 已,而且本专业的技术人员将会认可,给出上述公开,其它的实施 例和明显的改善是可能的,而且本发明的范围是由后附的权利要求 书及其等效物定义的。
权利要求
1. 一种用于约束驱动建立程序的计算机编程系统,包括编程语言及其作为图形流程图的交互式可视描绘,其中处理节点之间的链接对应于该程序的特定执行点,并能够以可视方式加以选择,以便加入新的处理节点,或在给定路径的给定点上立即显示在该点和路径上可用和/或预期已知的有关该数据或亦称作元数据的信息;元数据计算引擎,配置成在给定该语言给的程序、该程序的输入和输出的元数据和该程序中的执行路径和点时计算该程序中任何给定点和路径上操作和/或预期的数据的元数据;方法和装置,它采用在选定的执行点上可用和预期的数据的元数据作为输入,并根据它们的输入和输出的元数据建议一个处理节点的清单,当已知时,便启动约束驱动的开发,亦称作引导开发;和处理节点的每一个可能的类型用的一组配置面板,它利用所操作和/或预期的数据算出的元数据和它在该加入所述处理节点的执行点处的可视描绘,以便启动处理节点的指向和点击配置,并防止用户把其已知约束不满足所述处理模式的一个或多个参数的约束的数据来选择作为所述处理节点的参数,因而,进一步启动约束驱动的开发,亦称引导开发;和处理节点配置错误可视通知方法,其中若处理节点的配置是或变得不正确,则该处理节点立即以可视方式高亮度显示,因为该处理节点使用的数据的更新后算出的约束不再与处理节点的约束兼容,因而,启动在设计程序时的错误检测,亦称用于改变管理的实时错误检测;和程序确认引擎,它探测所有的执行路径,为每一个可能的执行路径计算所得的约束,并验证它们是否与程序的输出约束一致,若非如此,则通过列出算出的约束不匹配输出约束的执行路径和点通知用户,因而,启动总体程序确认和加速问题查找;和
2. 按照权利要求l的系统,其中所述处理程序是网络业务程序。
3. 按照权利要求1的系统,其中所述处理程序是互联网业务程序。
4. 按照权利要求1的系统,其中所迷程序的输入或输出约束由 形式语法、即描述形式语言的抽象结构所定义。
5. 按照权利要求4的系统,其中所述形式语法是由XML Schema 或Schema定义的,而且所述元数据计算引擎被称作XML Schema 处理引擎。
6. 按照权利要求5的系统,其中所述XML语法是利用下列XML i吾法-洽言之一定义的1) W3C XML Schema语言,2) 文档类型定义(DTD)语言,3) Relax NG Schema语言4) Schematron或ISO SchematronA7.按照权利要求4的系统,其中所述形式语法是利用对象管理 组的^l妄口定义语言(IDL)定义的。
7. 按照权利要求4的系统,其中所述形式语法是由ontology语 言定义的。
8. 按照权利要求7的系统,其中所述ontology语言是W3C Web Ontology语言(OWL)。
9. 按照权利要求7的系统,其中所述XML Schema处理引擎是 在所述平台引擎上实现的。
10. 按照权利要求7的系统,其中所述XML Schema处理引擎《吏 用现存的平台业务。
11. 按照权利要求7的系统,其中所述XML Schema处理引擎本 来就处理XML分类信息。
12.按照权利要求7的系统,其中所述XML Schema处理引擎完成改变管理。
全文摘要
提供一种系统和方法,用以用图解方式运行和构造XML处理程序、在程序开发时引导用户、在设计程序时防止和检测开发错误、保证程序是有效的。该系统包括一个图形XML编程系统,其中以图形方式构建和描绘XML处理程序,提供引导编程、防止和检测错误和分析改变的影响和对改变进行管理的可视程序中每一个选定执行点用的实时元数据计算和可视化方法,和自动化的执行路径探测方法,它启动总体的程序确认和错误识别。
文档编号G06F11/00GK101263459SQ200580040766
公开日2008年9月10日 申请日期2005年9月30日 优先权日2004年10月1日
发明者G·P·勒布勒, M·D·马丁 申请人:迪堡公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1