可扩展远程标签标记系统和方法

文档序号:6568625阅读:265来源:国知局

专利名称::可扩展远程标签标记系统和方法
技术领域
:本发明涉及远程标签标记系统和方法,该系统和方法是特别地可扩展的,从而企业服务器上具有的功能可以应用到来自远程服务器的HTML内容中,并且可以使用企业服务器功能和远程服务器上可用的内容开发工具的组合来开发内容。现有技术JavaServerPages(JSP)标签提供了标签标记系统(TagMarkupSystems)。根据Sun开发者网(SunDeveloperNetwork)(参见http:〃iava.sun.com/uroducts/is.p/taglibraries/index.isp,在lt匕通过弓l用并入本文),JavaServerPages(JSP)标签库定义了可以由任何JSP页面重复使用的公开的模块功能。标签库减少了通过将标签的功能移入标签实施类中,来将大量的Java代码嵌入JSP页面的需要。这些一般在Web服务器或者应用程序(Application)服务器上执行,但不是在远程企业系统上执行。在这点上,JSR-000168Portlet规范(参见h加〃icp.org/aboutiava/communitvprocess/final/isrl68/)在it匕通过弓l用也并入本文。.NET服务器控制也提供标签标记系统。根据MSDN(参见http:〃msdn.microsoft.com/library/default.aspurl=/library/en-us/vbcon/html/vbconintroductiontowebformscontrols.asp,在it匕通过弓l用并入本文),当用户创建Web表单页面时,以下类型的控件对用户可用HTML服务器控件、Web服务器控件和验证控件。HTML服务器控件将HTML元素发布给服务器以用于编程。HTML月艮务器控件还发布映射至其提供的HTML元素的对象模型。Web服务器控件一般比HTML服务器控件具有更多内建特征。Web服务器控件不仅包括诸如按钮和文本框这样的表单类型控件,还包括诸如日历这样的专用控件。由于Web服务器控件的对象模型不一定反映HTML语法,因此Web服务器控件比HTML服务器控件更加抽象。最后,验证控件可以附加在输入控件上,来测试用户对该输入控件输入的是什么。验证控件加入了允许测试用户的输入的逻辑,并且被提供来允许检査需要的域,来针对特定值或者字符模式进行测试,和检验值属于范围内的等等。用户控件可以创立为Web表单页。Web表单可以在其他Web表单页面中嵌入为用户控件,这是建立菜单、工具栏和其他可重复使用的元素的方法。Plumtree企业web包提供了入口、集成、搜索、协作和内容管理服务。Plumtree系统的基础体系结构是公知的并且在www.Plumtree.com和白皮书禾口诸如PlumtreeCorporatePortal5.0J、PorletStandards:PlumtreeProductsforJSR168andWSRPCompatibility禾卩PlumtreeSoftware:1997-2004:OurProducts,OurVision上描述了。在美国专利号6,804,662和美国公布专利申请号2002/0055956、2002/0156812、2003/0163446、2004/0210576、2004/0267817、2004/0210569、2004/0103078、2003/0225765、2005/0097092和2005/0074126,以及美国专利申请号09/696,627、10/004,301,09/896,039和10/966,359中描述了其他特征。Plumtree网址和其中可用的资源,以及白皮书和专利参考文献通过引用在此都并入本文。另外,Plumtree转换器标签(PlumtreeTransformerTags)(如直到入口版本5.0.4的)可有利地实施几种远程标记标签。希望提供一种用于建立远程标记标签的更加可扩展的框架。
发明内容因此,提供了可扩展的远程标记标签系统。该系统包括企业服务器、网关、转换器部件和标签转换引擎。企业服务器从终端用户接收对数据的请求,并且最终将经处理的内容返回给该终端用户。网关收集来自一个或多个远程服务器的包括一个或多个远程标记标签的HTML内容。转换器部件解析用于远程标记标签的HTML内容,并将用于远程标记标签的HTML内容转换成被格式化以用于企业服务器功能的内容。标签转换引擎执行远程标记标签,从而允许将经处理的内容返回给终端用户。有利地,企业服务器上可用的功能被应用至来自远程服务器的HTML内容,并且使用企业服务器功能和在远程服务器上可用的内容开发工具的组合来开发内容。该系统可进一歩包括可扩展的远程标记标签的供应的库(suppliedlibrary)。该库可通过创建将在企业服务器上执行的远程标记标签而扩展。该系统还可包括本地标签标记系统和/或通过远程标记标签可访问的当前用户信息。当前用户信息可包括用户登录信息。该系统还可包括超出企业服务器远程访问API所公布的数据之外的可访问的企业服务器数据。该企业服务器数据还可被修改。该系统可包括用于将远程标记标签提供给引擎的库管理器。该库管理器可以从外部库中检索标签。该系统可包括API,该API可被访问来允许标签的定制、创建或者修改或者上述操作的组合。转换器部件还可从供应的库或者定制库或者这两者的标签库管理器中检索一个或多个标签。还提供了一种方法,用以将企业服务器上可用的功能应用于来自远程服务器的HTML内容中,并且允许内容开发者使用企业服务器功能和他们自己的内容开发工具的组合。该方法包括接收来自终端用户的对数据的请求。从一个或多个远程服务器收集包括一个或多个远程标记标签的HTML内容。针对远程标记标签解析HTML内容,并且将该HTML内容转换成被格式化以用于企业服务器功能的内容。转换后的内容在企业服务器上执行。然后将远程服务器数据和企业服务器数据发送给终端用户。该方法还可包括允许内容开发者来扩展远程标记标签的供应的库和/或创建标记的新的库。这种扩展可包括创建将在企业服务器上执行的远程标记标签。该方法还可包括建立本地标签标记系统和/或通过远程标记标签来访问当前用户信息。该当前用户信息可包括对web应用的用户登录和管理服务。该方法还可包括访问超出企业服务器远程访问API所公布的之外的企业服务器数据。企业服务器数据可以是可修改的。该方法可包括访问API,该API允许标记的定制、创建或者修改或者上述操作的组合。转换可包括从供应的库或者定制库或者这两者的标签库管理器中检索一个或多个标签。还提供了具有在其上包含了处理器可读代码的-一个或多个处理器可读存储设备。该处理器可读代码是用于将一个或多个处理器编程,来执行将在企业服务器上可用的功能应用至来自远程服务器的HTML内容中,并且允许内容开发者使用企业服务器功能和他们自己的内容开发工具的组合的方法。图1示意性地示出了优选实施例的远程标签标记系统;图2示意性地示出了优选实施例的远程标签标记系统的显示树;图3示意性地示出了优选实施例的标签显示树结构。具体实施例方式优选实施例的可扩展的远程标记标签系统是设计来允许来自远程服务器(即Portlet)的HTML采用企业服务器上可用的功能的优点。"可扩展的"是指标签和/或库可以被创建和/或被修改,并且标签可以包括或者不包括在标签的供应库中和/或标签的创建的库中。可扩展性允许人们增加和/或修改部件,以提供新的和/或修改的功能。企业服务器聚集远程内容并且执行远程标记标签。内容开发者可将专用的远程标记标签包括在他们的HTML中,以使用企业服务器功能。当对数据的请求从终端用户进入到入口(portal)日寸,企业服务器(即入口)收集来自远程服务器的HTML内容,其中包括远程标记标签。企业服务器然后解析用于远程标记标签的HTML内容,并且将其转换成使用企业服务器功能的合适的内容。然后,将所产生的内容发送回终端用户,所述内容是来自远程服务器和企业服务器的混合数据。内容或者系统开发者还能扩展远程标记标签的供应库。他们是通过创建企业服务器可执行的、他们自己的远程标记标签来完成的。当前的标签标记系统将标签转换成远程Web服务器或者应用程序服务器上的HTML标签,并且然后将HTML直接发送给终端用户。这是指与企业服务器一起工作的内容开发者要么仅使用企业服务器,要么使用他们的优选的Web服务器或者应用程序服务器来开发他们的内容。如果他们使用企业服务器开发,则他们不使用他们通常的内容开发工具。如果他们在他们的优选的Web服务器或者应用程序服务器上产生内容,则他们不能得到企业服务器的功能的支持。该系统允许内容开发者来使用他们的优选的内容开发工具以及使用企业服务器的功能。带有标签的HTML内容是从远程Web服务器或者应用程序服务器供应,并且然后发送给企业服务器的。然后该企业服务器将标签内容转换成最终的HTML,并且将其发送给终端用户。内容或者系统开发者还能通过创建他们自己的远程标记标签以访问和/或修改企业服务器上的数据,来扩展企业服务器的原始的功能。远程标记标签系统建立在几个不同的部件上。参见图1提供的示意性的例子,远程内容通过网关7和转换器8的组合进入企业系统。网关7并行收集来自多个远程内容服务器6(即Portlet服务器)的数据。然后转换器8解析数据,并且将其转换成标签转换引擎12中可用的格式。标签转换引擎12执行远程标记标签,并且然后企业系统将经处理的内容返回给终端用户4。来自终端用户4的请求可以进入企业系统(即入口服务器)2。远程服务器内容(即portlet数据)可从远程内容服务器6上请求。转换器8从远程内容服务器6上获得远程内容数据,并且将其返回给页面IO(即待显示给用户的网页)。在执行远程标记标签之前,传统的jsp标记或者asp.net控件将在远程内容服务器6上执行。然后页面10调用远程标记标签转换引擎12来处理标签。引擎12从标签库管理器14获得请求的标签,并且建立HTML片段和标签的树16。然后处理该树16(执行标签),并且将结果返回给页面10,页面IO将结果显示给终端用户2。标签转换引擎标签转换引擎12得到转换器提供的带有远程标记标签的HTML,对其进行处理,并显示该标签。转换器提供对象标记数据的有序的列表,该列表包括标记片段(即文本和HTML)和XML片段及相关的数据(即XML属性,该标签是否是单一(singleton)标签或者开放(open)或者封闭(close)标签)。第一,标签转换引擎建立了来自对象标记数据的显示树16。图2示意性地示出了显示树16。例如,下列HTML可通过远程服务器产生<table><tr><td><pt:logic.ifexpression=,,user.id==2,,>〈pt:logic加e〉Somethingis<b>true</b>!</pt:logic.true><pt:logic.false>Thethingis<b>false</b〉!</pt:logic.false></pt:logic.if></td〉</tr></column></row><table>根据该实施例,该HTML将由标签转换引擎12转换成图2所示的显示树。"如果"(If)标签20处理提供的表达式,并将告知"真"(True)标签22或者"假"(False)标签24来显示其自身,显示下面的HTML片段30或32的其中一个。返回给终端用户的内容将包括真消息30或者假消息32。例如,如果表达式为真,则下列的HTML可以返回给终端用户<table><tr><td>Somethingis<b>true</b〉!</td〉</tr〉</column></row><table>利用企业服务器上可用的增加的功能的标签的例子将是在企业数据库中查询仅通过企业服务器可获得的某种用户数据的标签,或者由于远程内容中执行的某种用户动作而在企业数据库中修改数据的标签。图3示意性地示出了优选实施例的标签显示树结构。接口显示元素(IDisplayElement)40指定了显示元素类(DisplayElementclass)的基本接口。复合显示元素(CompositeDisplayElement)42用来将不同的显示元素分成一组。标签显示元素(TagDisplayElement)44扩展复合显示元素42,以包含其他的显示元素。复合显示元素42优选地配置为例如从不被其本身使用。标签转换引擎将每一个片段转换成HTML显示元素(标记片段)46或者标签显示元素(XML片段)44,并且将这些元素放置到等级树16中(参见图2和图3)。这个过程将会通知任何未封闭的标签,增加错误消息给该树,并且尝试尽可能好地处理无效的对象标记数据。标签树优选地使用延迟初始化(LazyInitialization)来最小化处理,直到确定标签是否真正地执行(如,是否使用条件标签来如果条件是真,则仅仅显示某些HTML或者标签)。这是指当建立树时,不处理标签对象数据,但是优选地仅当将执行标签时,处理标签对象数据。然后,构建包含应用程序服务器和企业服务器上下文信息的标签访问者(TagVisitor)对象,并且用该对象来显示该标签树。标签访问者对象被传递给每一个显示元素,该显示元素显示其内容,并且然后如有必要,则将该标签访问者对象传递给其子显示元素来显示。HTML显示元素46将其标记片段转换成文本串,并且将其输出。由于转换器将转换器标签中间的所有的HTML转换成HTML片段,因此HTML显示元素46没有子标签并且是文本串。标签显示元素44既显示其内容(即执行转换器标签),也显示其子显示元素。该标签从对象数据初始化,并且然后验证该标签上下文。验证包括校验标签具有合适的父和/或子标签,并且该标签具有需要的属性。验证还校验所有的标签属性是合适类型的(如整数、字符串、布尔型)。如果有任何错误,则在标签上下文或者在标签的实际执行中,显示元素将输出包括错误细节的HTML注解。然后,执行标签显示树产生的HTML返回给企业服务器来显示给终端用户。可扩展远程标记标签执行当执行标签时,在基础标签类中有多种允许标签作者访问标签属性、存储器内变量和Web应用程序和企业服务器数据的助手方法。标签能从六个不同的范围内存储和检索变量应用程序、会话、永久会话、请求、Portlet和标签范围。这些标签都以稍稍不同的方式运行,并且允许标签作者来指定确切的持续时间和存储的变量的可见性(即标签范围允许变量被当前标签和其中所有标签访问,但不能被树的不同部分中的其他标签访问)。变量还能被指定为私用于标签库,从而作者不必担心变量命名的冲突。存储器内变量允许标签之间的通信,例如利用"如果/否则"(If/Else)示例性标签。标签作者还可访问包括HTTP会话和Web应用的Web应用数据。这就允许标签作者将他们的标签行为基于诸如用户浏览器或者IP地址的数据。标签可选择调用处理标签体(ProcessTagBody)方法,该方法处理当前标签中的所有HTML和转换器标签。如果标签没有调用处理标签体方法(例如在条件标签中),则在当前标签显示元素44以下的标签树的部分将不被执行。远程标记标签开发开发者扩展基础标签类来实施定制代码,以开发新的可扩展远程标记标签。当前这可以在Java或者C弁中实现。该基础标签类允许开发者来输出基于XML标签属性的HTML内容(即〈pt:lib.tagattribute="true'7〉),以及周围标签和企业服务器的当前状态。基础标签类提供对标签属性(以及属性的自动验证),以及存储在企业服务器上的存储器中的数据的访问,并且提供对企业系统对象的直接访问。标签库文档能由使用第三方工具来将源代码注解转换为HTML文档的TagDoc系统自动产生。远程标记标签语言在远程服务器内容中远程标记标签基本以与标准的HTML标签相同的方式使用。有两点主要的不同。第一个不同是所有的远程标记标签必须是在专用的域名空间中,从而这些标签能被转换器识别为远程标记标签。这是指实际的标签名字将带有之前在远程服务器内容中定义的域名空间的前缀(即<pt:logic.foreach/>)。第二个不同是远程标记标签可在运行时动态计算它们的属性,并且用企业系统的数据替代所述属性。如果标签属性以专用的保留的字符(如$)开始,则当执行标签时,属性将用诸如来自企业系统的存储器内变量、列表中的项或者本地化字符串这样的动态数据来替代。转换器转换器8(参见图1)采用来自远程服务器的带有遵从XML的转换器标签的原始HTML,并且将其转换成标记和XML片段。转换器8还可执行用于URL、域名空间等的相对较小的数据处理。转换器8解析HTML,并且向标签转换引擎12提供对象标记数据的有序列表。该列表以它们出现在原始标记中的顺序包括标记片段(即文本和标准HTML),以及XML片段和相关的数据(即XML属性、单一标签与开放或者封闭标签^转换器8优选地是当处理来自远程服务器的内容时,具有至少两个有利目的的有限状态转换器。第一个是处理指向远程服务器上受保护的内容的URL,并且将其转换成穿过企业系统上的网关的URL。由于远程服务器不能直接由终端用户机访问(如由于防火墙),因此URL需要被转换成去向向外的企业服务器,该企业服务器随后将显示从远程服务器上请求的内容。除了将URL转换成HTML和JavaScript之外,该转换器还将预先定义的恒定URI转换成通常使用的URL,如图像服务器URL。第二个目的是将远程服务器内容转换成HTML和标记片段和XML片段的有序列表。HTML和标记片段仅仅是文本,而XML片段存储关于转换器标签的信息,诸如属性和标签类型(如封闭的,开放的,或者单一的)。由于性能理由而使用有限状态机。有限状态机是由各种状态以及按照输入怎样从一个状态转换成另一个状态的规则组成。在这种情况中,有限状态转换机搜遍远程服务器内容,直到找到左方括号。然后按照找到哪种标签来转换成各种状态。针对URL处理诸如锚点(anchor)或者JavaScript标签这样的可包含URL的标签,远程标记标签被转换成XML片段,并且一般地忽略其他的HTML标签。如果可包含URL的锚点及其他HTML标签的URL指向远程服务器上的受保护内容,则它们被标记为后处理。进入脚本标签打开JavaScript处理,该处理校验JavaScript中的URL,例如在窗打开方法中那样。然后JavaScriptURL被包含在助手方法中,该助手方法将在运行时处理URL。在将所有的远程服务器内容转换后,将片段的有序列表缓存来以后重新使用。然后,后处理有序的列表,并且转换各种URL,URI以及某些转换器标签。预先定义的恒定URI用合适的URL替代,并且转换去往受保护远程服务器内容的URL来穿过企业系统网关。然后,经处理的内容传递给标签转换引擎。本发明并不限于在本文中上面描述的实施例,不脱离如附加的权利要求阐述的本发明的范围和其中结构的和功能的等同,可以进行修改或者更改。例如,本发明还能用在建立本地标签标记系统中,这类似于之前存在的JSP标签和.NETWeb控件系统。其他的替换使用可以是提供对识别管理应用程序开发系统中的用户信息的访问。这种系统可能包括提供用户登录和管理服务给标准web应用的框架。这些将通过远程标记标签访问当前用户信息。通过从远程Web服务器访问企业服务器数据和使用数据来建立HTML可实施其他功能。例如,portlet开发者可使用PlumtreeEDK远程访问API来访问Plumtree入口信息,并且然后将其转换成远程Portlet服务器上的HTML数据。有利地,优选实施例的系统允许portlet开发者来访问或者修改超出远程访问API发布的数据(如果有的话)之外的企业服务器数据。在可根据在本文中的优选实施例执行的方法中,以及已经在上述描述的方法和/或在所要求保护的方法中,已经以选中的文字顺序描述了操作。但是,所述顺序是为了文字上的方便而选择和排序的,并非用来隐含用于执行操作的任何特殊的顺序。另外,除了
背景技术

发明内容部分之外,在此通过引用将本文中以上引证的所有对比文件并入具体实施方式的详细描述中,如同公开了可替换的实施例。权利要求1、一种将企业服务器上可用的功能应用于来自远程服务器的HTML内容中,并且允许内容开发者使用企业服务器功能和他们自己的内容开发工具的组合的方法,该方法包括(a)接收来自终端用户的对数据的请求;(b)从包括一个或多个远程标记标签的一个或多个远程服务器收集HTML内容,所述远程标记标签包括供应的、定制的、创建的或者修改的标签或者这些标签的组合;(c)解析用于所述远程标记标签的HTML内容;(d)将用于所述远程标记标签的所述HTML内容转换成被格式化以用于企业服务器功能的内容;(e)在所述企业服务器上执行转换后的内容;和(f)发送远程服务器数据和企业服务器数据给所述终端用户。2、如权利要求1所述的方法,还包括允许内容开发者来扩展远程标记标签的供应的库或者创建新的库,或者这两者的组合。3、如权利要求2所述的方法,其中所述扩展包括创建待在所述企业服务器上执行的远程标记标签。4、如权利要求l所述的方法,还包括建立本地标签标记系统。5、如权利要求1所述的方法,还包括通过所述远程标记标签来访问当前用户信息。6、如权利要求5所述的方法,其中所述当前用户信息的访问包括访问对web应用的用户登录和管理服务。7、如权利要求1所述的方法,还包括访问超出企业服务器远程访问API所公布的数据之外的企业服务器数据。8、如权利要求7所述的方法,还包括修改所述企业服务器数据。9、如权利要求1所述的方法,还包括使用允许标签的定制、创建或者修改或者上述三者的组合的API。10、如权利要求1所述的方法,其中所述转换包括从供应库或者定制库或者这两者中的标签库管理器中检索一个或多个标签。11、一种可扩展远程标记标签系统,包括(a)企业服务器,用于接收来自终端用户的对数据的请求,并且最终将经处理的内容返回给所述终端用户;(b)网关,用于收集来自一个或多个远程服务器的包括一个或多个远程标记标签的HTML内容;(c)转换器部件,用于解析用于所述远程标记标签的HTML内容,并且将用于远程标记标签的所述HTML内容转换成被格式化以用于企业服务器的内容;(d)标签转换引擎,用于执行所述远程标记标签,从而允许经处理的内容返回给所述终端用户;(e)从而在企业服务器上可用的功能被应用于来自远程服务器的HTML内容,并且使用企业服务器功能和所述远程服务器上可用的内容开发工具的组合来开发内容。12、如权利要求11所述的方法,还包括可扩展的远程标记标签的供应的库或者创建的库,或者这两者的组合。13、如权利要求12所述的方法,其中所述库可通过如下方式扩展对远程标记标签进行创建、修改或者定制,或者这三者的组合,以在所述企业服务器上执行。14、如权利要求ll所述的方法,还包括本地标签标记系统。15、如权利要求11所述的方法,还包括通过所述远程标记标签可访问的当前用户信息。16、如权利要求15所述的方法,其中所述当前用户信息包括用户登录信息。17、如权利要求ll所述的方法,还包括超出企业服务器远程访问API所公布的企业服务器数据之外的企业服务器数据。18、如权利要求17所述的方法,其中所述企业服务器数据也是可修改的。19、如权利要求11所述的方法,还包括用于将所述远程标记标签提供给所述引擎的库管理器。20、如权利要求19所述的方法,其中所述库管理器从外部库中检索标签。21、如权利要求11所述的方法,还包括可访问来允许标签的定制、创建或者修改,或者创建新的库,或者这两者的组合的API。22、如权利要求11所述的方法,其中所述标签信息引擎部件还用于从供应的库或者定制库或者这两者的标签库管理器中检索一个或多个标签。23、一个或多个包含有处理器可读代码的处理器可读存储设备,所述处理器可读代码用于对一个或多个处理器编程,来执行将企业服务器上可用的功能应用于来自远程服务器的HTML内容中,并且允许内容开发者使用企业服务器功能和他们自己的内容开发工具的组合的方法,该方法包括(a)接收来自终端用户的对数据的请求;(b)从包括一个或多个远程标记标签的一个或多个远程服务器收集HTML内容,所述远程标记标签包括供应的、定制的、创建的或者修改的标签或者这些标签的组合;(c)解析用于所述远程标记标签的HTML内容;(d)将用于所述远程标记标签的所述HTML内容转换成被格式化以用于企业服务器功能的内容;(e)在所述企业服务器上执行转换后的内容;和(f)发送远程服务器数据和企业服务器数据给所述终端用户。24、如权利要求23所述的一个或多个存储设备,该方法还包括允许内容开发者来扩展远程标记标签的供应的库。25、如权利要求24述的一个或多个存储设备,其中所述扩展包括创建待在所述企业服务器上执行的远程标记标签。26、如权利要求23所述的一个或多个存储设备,该方法还包括建立本地标签标记系统。27、如权利要求23所述的一个或多个存储设备,该方法还包括通过所述远程标记标签来访问当前用户信息。28、如权利要求27所述的一个或多个存储设备,其中所述当前用户信息的访问包括访问对web应用的用户登录和管理服务。29、如权利要求23所述的一个或多个存储设备,该方法还包括访问超出企业服务器远程访问API所公布的数据之外的企业服务器数据。30、如权利要求29所述的一个或多个存储设备,该方法还包括修改所述企业服务器数据。31、如权利要求23所述的一个或多个存储设备,该方法还包括访问允许标签的定制、建立或者修改,或者新库的创建,或者其组合的API。32、如权利要求23所述的一个或多个存储设备,其中所述转换包括从供应的或者定制库或者两者中的标签库管理器中检索一个或多个标签。全文摘要在企业服务器上可用的功能被应用于来自远程服务器的HTML内容中。在终端用户请求后,从远程服务器收集包括远程标记标签的HTML内容。解析用于远程标记标签的HTML内容,并将其转换成被格式化以用于企业服务器功能的内容。在企业服务器上执行转换后的内容。然后将远程服务器和企业服务器数据发送给终端用户。标签和/或库可以是可扩展的,从而可以建立或者修改它们,并且标签可以包括或者不包括在供应的标签库和/或创建的标签库或者其任何组合中。文档编号G06F15/00GK101300559SQ200680030120公开日2008年11月5日申请日期2006年8月16日优先权日2005年8月18日发明者董·刘易斯·海勒申请人:Bea系统公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1