在此参考下述共同未决和共同受让专利申请:2004年6月3日提交的美国申请序列号10/860,226,名为“METHOD AND APPARATUS FORGENERATING FORMS USING FORM TYPES”和2004年6月3日提交的美国申请序列号10/860,225,名为“METHOD AND APPARATUS FOR MAPPINGA DATA MODEL TO A USER INTERFACE MODEL”,其内容在此全部引用以供参考。
具体实施方式
随着商业应用和其它基于管理或表单的软件应用程序的日益增加的复杂性,自动化需求正在增加。本发明提供促进和增强这种自动化的方法。本发明利用用于开发用户界面的自动化和声明性方法,而不危及创新自由。
使用本发明的系统和方法,应用程序开发者能集中于开发商业模型。商业模型(UML、ER图、类等等)稍后被映射到技术无关的中间格式,其再次在一个或多个步骤中被映射到显示目标具体技术和布局(窗口、Web浏览器、PDA、电话等等)。然后,框架开发者能与应用程序开发者无关地充实显示目标具体技术,以及使其应用于整个开发的应用程序。对每个表单创建一次中间格式,并用在几个显示目标上。由于由映射引擎所使用的开放和可改变的映象,映射本质上是很灵活的。中间UI模型以及最终的显示目标格式也是开放和可改变的,从而允许独特灵活级别。下述论述进一步示例说明本发明原理。
图1示例说明可以在其中实现本发明的合适计算系统环境100的例子。计算系统环境100仅是合适的计算环境的一个例子,并不打算暗示有关本发明的使用范围或功能的任何限制。也不应当将计算环境100解释为对示例性操作环境100中所示的任何一个部件或其组合具有任何依赖性或要求。
本发明能与许多其他通用或专用计算系统环境或配置一起使用。可以适用于本发明的公知的计算系统、环境和/或配置的例子包括但不限于,个人计算机、服务器计算机、手持或膝上型设备、多处理器系统、基于微处理器的系统、机顶盒、可编程消费电子设备、网络PC、小型计算机、大型计算机、包括上述系统或设备的任何一个的分布式计算环境等等。
本发明可以在诸如由计算机执行的程序模块等计算机可执行指令的一般上下文中描述。通常,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等等。本发明还可以在分布式计算环境中实现,其中,由通过通信网络链接的远程处理设备执行任务。在分布式计算环境中,程序模块可以位于包括存储器存储设备的本地和远程计算机存储介质中。
参考图1,用于实现本发明的示例性系统包括计算机110形式的通用计算设备。计算机110的组件可以包括,但不限于,处理单元120、系统存储器130、以及将包括系统存储器的各种系统组件耦合到处理单元120的系统总线121。系统总线121可以是若干类型的总线结构中的任一种,包括存储器总线或存储器控制器、外围总线和使用各种总线体系结构的任何一种的局部总线。举例但不是限制,这种体系结构包括工业标准体系结构(ISA)总线、微通道体系结构(MCA)总线、增强ISA(EISA)总线、视频电子技术标准协会(VESA)局部总线,以及也称为Mezzanine总线的外围部件互连(PCI)总线。
计算机110通常包括各种计算机可读介质。计算机可读介质能是能由计算机110访问的任何可用介质,包括易失和非易失介质、可移动和不可移动介质。举例但不是限制,计算机可读介质可以包括计算机存储介质和通信介质。计算机存储介质包括以任何方法或技术实现的易失和非易失、可移动和不可移动介质,用于诸如计算机可读指令、数据结构、程序模块或其他数据等信息的存储。计算机存储介质包括但不限于,RAM、ROM、EEPROM、闪存或其他存储器技术、CD-ROM、数字多功能盘(DVD)或其他光盘存储、磁带盒、磁带、磁盘存储或其他磁性存储设备,或能用来存储所需信息并能由计算机110访问的任何其他介质。通信介质通常包含在诸如载波或其他传输机制等已调制数据信号中包含计算机可读指令、数据结构、程序模块或其他数据,并包括任何信息递送介质。术语“已调制数据信号”是指以在信号中编码信息的形式设置或改变其一个或多个特征的信号。举例但不是限制,通信介质包括有线介质,诸如有线网络或直接有线连接,以及无线介质,诸如声音、RF、红外和其他无线介质。上述的任何一个的组合也应当包括在计算机可读介质的范围内。
系统存储器130包括易失和/或非易失存储器形式的计算机存储介质,诸如只读存储器(ROM)131和随机存取存储器(RAM)132。基本输入/输出系统133(BIOS),包含诸如在启动期间有助于在计算机110内的元件间传送信息的基本例程,通常存储在ROM 131中。RAM 132通常包含处理单元直接可访问和/或当前正由处理单元130操作的数据和/或程序模块。举例但不是限制,图1示例说明操作系统134、应用程序135、其他程序模块136和程序数据137。特定的应用程序组称为商业应用程序。这些针对公司管理,包括但不限于处理分类总帐、库存、薪水、顾客、销售、采购、财务报表和商务有关的任何其他数据。
计算机110也可以包括其他可移动/不可移动、易失/非易失计算机存储介质。仅举例来说,图1示例说明从不可移动、非易失磁性介质读取或写入的硬盘驱动器141、从可移动、非易失磁盘152读取或写入的磁盘驱动器151,以及从可移动、非易失光盘156,诸如CD ROM或其他光学介质读取或写入的光盘驱动器155。能用在示例性操作环境中的其他可移动/不可移动、易失/非易失计算机存取介质包括但不限于,磁带盒、闪存卡、数字多功能盘、数字录像带、固态RAM、固态ROM等等。硬盘驱动器141通常通过不可移动存储器接口,诸如接口141连接到系统总线121,而磁盘驱动器151和光盘驱动器155通常通过可移动存储器接口,诸如接口150连接到系统总线121。
在图1中论述和所示的驱动器及它们相关的计算机存储介质为计算机110提供了计算机可读指令、数据结构、程序模块和其他数据的存储。在图1中,例如,硬盘驱动器141被示为存储操作系统144、应用程序145、其他程序模块146和程序数据147。注意这些组件能与操作系统134、应用程序135、其他程序模块136和程序数据137相同或不同。操作系统144、应用程序145、其他程序模块146和程序数据147在此被给予不同标号以便说明最小程度上,它们是不同副本。
用户可以通过输入设备,诸如键盘162、麦克风163和指示设备161(诸如鼠标、跟踪球或触摸板),将命令和信息输入到计算机110。其他输入设备(未示出)可以包括操纵杆、游戏垫、圆盘式卫星天线、扫描仪等等。这些和其他输入设备通常通过耦合到系统总线的用户输入接口160连接到处理单元120,但也可以通过其他接口和总线结构,诸如并行端口、游戏端口或通用串行总线(USB)连接。输入设备用于创建、修改和删除数据。输入设备也能用于控制(启动和停止)应用程序和其中的特定功能。功能包括打开(显示)表单和关闭表单。监视器191或其他类型的显示设备也经接口,诸如视频接口190连接到系统总线121。除监视器外,计算机也可以包括通过输出外围接口195连接的其他外围输出设备,诸如扬声器197和打印机196。监视器或其他显示设备用来显示(呈现)表单。
计算机110可以在使用到一个或多个远程计算机,诸如远程计算机180的逻辑连接的联网环境中操作。远程计算机180可以是个人计算机、手持设备、服务器、路由器、网络PC、对等设备或其他通用网络节点,并通常包括相对于计算机110描述的许多或全部元件。在图1中所示的逻辑连接包括局域网(LAN)171和广域网(WAN)173,但还可包括其他网络。这种联网环境在办公室、企业范围计算机网络、内联网和因特网中很常见。
当用在LAN联网环境中时,计算机110通过网络接口或适配器170连接到LAN 171。当用在WAN联网环境中时,计算机110通常包括用于通过WAN 173,诸如Internet建立通信的调制解调器172或其他装置。可以在内部或外部的调制解调器172可以经用户输入接口160或其他适当的机制连接到系统总线121。在联网环境中,相对于计算机110所述的程序模块,或其一部分可以存储在远程存储器存储设备中。举例但不是限制,图1将远程应用程序182示为驻留在远程计算机180上。将意识到,所示的网络连接是示例性的,并且可以使用在计算机间建立通信链路的其他装置。
图2是移动设备200的框图,它是一替换的示例性计算环境。移动设备200包括微处理器202、存储器204、输入/输出(I/O)组件206和用于与远程计算机或其他移动设备通信的通信接口208。在一个实施例中,耦合上述组件,用于通过合适的总线彼此通信。
存储器204被实现为非易失电子存储器,诸如具有电池后备模块(未示出)的随机存取存储器(RAM),以便当关掉移动设备200的总电源时,不丢失存储器204中存储的信息。存储器204的一部分最好被分配为用于程序执行的可寻址存储器,而另一部分存储器204最好用于存储,诸如模拟硬驱动器上的存储。
存储器204包括操作系统212、应用程序214以及对象存储216。在操作期间,操作系统212最好由处理器202从存储器204执行。在一个优选实施例中,操作系统212是可从微软公司购买的Windown
CE商标的操作系统。操作系统212最好为移动设备而设计,并且实现能由应用程序214通过一组展示的应用编程接口和方法利用的数据库特征。对象存储216中的对象由应用程序214和操作系统212至少部分地响应于对展示的应用编程接口和方法的调用来维护。
通信接口208表示允许移动设备200发送和接收信息的多个设备和技术。仅举几个例子,设备包括有线和无线调制解调器、卫星接收器和广播调谐器。移动设备200还能直接连接到计算机以便与其交换数据。在这些情况下,通信接口208能是红外收发器或串行或并行通信连接,它们所有均能传送流信息。
输入/输出组件206包括诸如触敏屏、按钮、滚轮和麦克风等各种输入设备,以及包括音频发生器、振动设备和显示器的各种输出设备。上述列出的设备仅是举例,不需要在移动设备200上存在所有这些。另外,其他输入/输出设备可以附加到移动设备200或在其中找到。
分层和映射的UI体系结构和方法
如上所述,呈现信息的应用程序必须为用户在非常不同性能的平台(例如显示目标)上提供尽可能丰富的经验。这些平台的范围从在用户的桌面上运行的昂贵的客户机,到在用户浏览器中运行的Web客户端,到PDA,到基于电话的设备,甚至是语音接口。其他平台也是可能的。根据本发明的实施例,采用规定性地定义如何将数据类型映射到所述平台上的本机控件上的图式。
商业体系结构设计者在商业工程中使用他或她的知识来解决他或她的顾客的问题。然而,该人通常不是计算机程序开发员,并且理论上免于复杂的程序开发。本发明提供允许商业体系结构设计者(用户)集中于应用程序的商业逻辑,而不是集中于如何在给定平台上呈现数据的方法和装置。所提出的发明允许应用程序开发员基于商业模型,导出以多个显示目标为目标,并充分利用每个显示目标的技术性能的用户界面。
这通过分层UI定义来实现,其允许开发员将脑力努力集中于具有“正确”抽象级别的层。捕捉模式并在每个抽象级别处重新使用。从更高级抽象到更具体级别的映象在映射过程中捕捉模式,但也允许应用程序开发员微调该结果。本发明使用这些映象,以及控件、逻辑表单类型和行为,以便将商业模型映射到显示目标专用的物理模型。
在本发明的方法中,商业模型为主。保存投入商业模型的脑力工作,并用作用于生成用户界面的基础。能用统一建模语言(UML)、企业资源(ER)图或任何其他图形或非图形建模语言来描述该模型。也能以典型的面向对象程序、关系数据库或其他格式获得商业模型。如下所述,在本发明的一些示例性实施例中,商业模型是具有属性的实体的类层次。
在本发明的实施例中,将商业模型映射到与显示目标无关的用户界面的中间模型。以高级抽象描述UI模型,从而允许应用程序开发员察看和修改它,而不需要最终显示目标的任何技术知识。能将代码添加到将用于所有显示目标的UI模型。捕捉UI模型中的模式并且能重复使用它们,导致同类UI。还能扩充用来描述UI模型的构件块。
如下面更详细所述,在本发明的一些实施例中,将实体映射到称为“逻辑UI”的UI模型,其包括具有逻辑控件的逻辑表单。在设计时,将实体和属性分别映射到逻辑表单和逻辑控件。在运行时,逻辑表单和逻辑控件数据被绑定到实体和属性。表单中的模式能称为表单类型。表单和控件由核心客户端映射引擎使用,但不是其一部分。核心客户端是UI客户端的显示目标无关部分。在本发明的实施例中,能扩充逻辑控件和表单类型的列表。下面,还提供本发明的这些部分的进一步论述。
在本发明的一些实施例中,将UI模型映射到显示目标专用标记语言,诸如动态服务器网页语言(ASP.NET)、无线标记语言(WML)、超文本标记语言(HTML)等等。UI模型还能被映射到其他显示技术(例如Win32、WinForms、PocketPC),在本发明的一个具体实施例中,逻辑表单被映射到Web客户端显示目标、WinForns客户端显示目标等等,并且能动态地添加新显示目标。
根据本发明的实施例,映射基于开放和可改变的声明性映象。在映象中捕捉UI中的模式。能基于导致高级灵活性的几个条件完成该映象。在映射它们后,能手动地修改不同模型(包括通过代码)。这向开发员提供最终的灵活级别。映象的动态特性允许开发和使用新UI元素,诸如控件。通过将属性映射到新控件上,简单地在表单启用了新控件。新控件必须遵守某些约定—在该实施例中,新控件必须从指定的基类继承。在运行时,逻辑表单绑定到实体,而显示目标绑定到逻辑层。这允许在逻辑层中一次实现显示目标间共用的所有功能(安全性、个性化、内部表单逻辑)并用在许多实例中。
表单类型
本发明利用逻辑表单概念和逻辑表单类型来提供建立用于商业和其他应用的表单用户界面(表单)的新方法。尽管在本发明的示例性实施例或实现中,使用了逻辑表单或逻辑表单类型,然而在所有实施例中,不要求使用逻辑层。因此,本发明适合于使用表单类型来大体上创建表单。当今的商业应用程序通常由大量表单组成,通常落入几类或遵循类似的模式。种类数通常在2和20间,但也能定义更多。本发明的表单类型通过在设计时和运行时保存和作用于商业或应用程序模型,促进了模型驱动的用户界面。这向软件开发员提供高级抽象。另外,使用根据本发明的表单类型确保重复使用(多次使用一个布局)更多同类表单用户界面集,因为所有表单落入几种不同类型,以及更易于维护的表单(在不改变表单的情况下,能改变类型的布局,并且在不改变表单的情况下,能应用不同类型)。本发明确保应用程序开发员在多个显示目标上具有对应用程序的外观和感觉以及在应用程序内如何发生导航的完整控制。显示目标的例子包括多种类型的当前和未来操作系统的每一个,以及许多可用或未来移动设备的每一个。作为另一示例,特定操作系统上的每个再现技术也能是显示目标。
使用本发明的概念,逻辑表单包含显示目标无关逻辑控件,使逻辑表单与显示目标本身无关。逻辑表单是指定义逻辑表单必须遵循的模式的逻辑表单类型。由逻辑表单引用的逻辑表单类型能从多个不同逻辑表单类型中选择,以便快速建立逻辑表单的外观和内容。在本发明的实施例中,逻辑表单类型是当与商业或其他应用模型结合时导致生成逻辑表单的模型。
逻辑表单类型展示了表单必须符合的图式(描述了表单的结构,其能包含的元素等等)、将商业模型(自动或经应用开发者手动)映射到逻辑模式以及由此映射到物理模型的映象(或规则)。此外,表单类型能包含修改(逻辑)表单的动态行为的代码。因此,表单类型展示了风格和布局信息,以及专用于显示目标的其他类型信息。然而,由于它们还指定了用于逻辑表单及其内容的规则,它们扮演更大的角色。本发明的表单类型的某些方面介绍如下:
不同表单类型
如所述,在本发明的典型使用中,提供多个不同表单类型,用于由应用开发者在创建表单时使用。例如,在一个示例性实施例中,表单类型可包含Dialog(对话框)表单类型、Card(卡片)或CardView(查看卡片)表单类型、ListView(查看列表)表单类型、EntityOverview(实体概述)表单类型以及ActivityCenter(活动中心)表单类型。这些表单类型对应于用在一个例子中的商业应用程序中的典型的不同表单种类。由此,提供多种表单类型允许应用开发者构建组成现有技术商业应用程序的所有表单。如本领域的技术人员将理解到,这些特定表单类型仅是例子,本发明不限于任何特定的表单类型或任何特定数量的表单类型。
表单类型布局
对每个表单类型,布局信息的内容和结构可以不同。另外,布局信息可以是显示目标专用的。例如,用于ActivityCenter表单类型的布局信息能支持Themes(主题)/Skins(外壳)/Styles(风格)以及Master Pages(主要页面),它们将由HTML(即万维网或因特网)显示目标用于在特定的操作系统平台上显示表单。这为商业开发者提供创新不同显示目标以及根据需要调整表单用户界面的自由度。
可插和可扩展
当独立软件销售商(ISV)能修改或扩展表单类型以及创建新表单类型时,表单类型提供完全的灵活性和可扩展性,从而改变整个应用程序的外观和感觉。
现在参考图3-1和3-2,示出了根据本发明的示例性实施例,使用Card表单类型创建的销售订单逻辑表单的示意说明。在该示例中,销售订单逻辑表单包含被分组成三个不同逻辑控件组的逻辑控件集。如下面进一步所述的,Card表单类型定义了控件将如何出现在不同显示目标的物理表单上以及出现在何处。图3-1和3-2示例说明相同的信息,图3-2包括表示逻辑表单类型和逻辑表单间的信息的关系和起源,以及从逻辑表单生成物理表单的箭头。
图3-1和3-2示意性地示例说明使用表单类型300生成的表单实例305。在核心客户端310,表单实例305是逻辑表单306(示为表单的概念模型),而表单类型300是逻辑表单类型301。在显示目标302上,表单305是使用逻辑表单306创建的再现表单370,并最终来自逻辑表单类型301。再现表单370是一个特定实现,但能获得许多其他实现或再现。也能将再现表单370称为物理表单。
表单类型300包括两个部分,定义必须将什么包括在使用表单类型的特定表单中的图式330,以及包括指定应当如何在特定显示目标上再现或画出表单的控件的布局331。表单类型还能包括代码分离类(code-behind class)。通过具有能由表单类型使用的不同布局,使用表单类型创建的表单能适合于不同显示目标(例如蜂窝电话显示屏、个人数字助理显示屏、个人计算机监视器等等)。有了表示将在多个表单中使用的当前模式的表单类型300,使用表单类型300,能生成多个表单实例305。
对于该示例,考虑开发者能审阅以便创建用于销售订单实体或对象模型(即商业或应用模型)的表单的过程。首先,开发者能查看以便发现他或她必须选择何种表单。选择“Card”表单类型,如在图3-1和3-2中的325处所示,调用或指定Card图式330,如由图3-2中的箭头326所示。
当开发者指定特定表单类型和相关联的图式后,在一些实施例中,他或她正作出选择以在表单中包括由图式规定的信息或字段,并用来自用户的商业或其他模型的元数据填充字段值。例如,通过选择Card表单类型301(以及相关联的Card图式330),逻辑表单306将包括对应于在图式330中定义的内容区335的内容区336。对应于内容区335的内容区336的起源由图3-2中的箭头337表示。同样地,因为Card表单类型的图式330包括UI部件区340、相关实体UI部件区345以及行动区350,因此逻辑表单306同样如341、346和351所示包括这些区域或字段。同样地,由箭头342、347和352示意地表示这些字段的起源。
如上所述,每个表单类型还包括至少一个布局331(通常每个显示目标包括一个),其包括指定在特定显示目标上应当如何再现或绘制表单的控件。如图3-1和3-2中示意所示,用于卡片表单类型的布局包括使显示目标320包括内容区339、UI部件区344、相关实体UI部件区349和行动区354的控件。箭头338、343、348和353示例说明卡片布局中的这些区域与Card图式中它们的对应区域的相关性。使用从应用程序模型(在该示例中为销售订单实体)所选择的逻辑表单类型和元数据生成的逻辑表单306被再现为显示目标320上的物理表单370。该过程在图3-2中使用箭头361和362示出。
模型和映象
许多信息系统使用模型。模型的例子是:对象图、可扩展标记语言(XML)图式、数据库定义以及表单定义。模型通常被标识为对象集,每个对象具有属性、成分和关联。在商业UI中,用来再现表单的控件层次能被视为模型,诸如Windows控件树和超文本标记语言(HTML)对象模型。同时,能使用句法,诸如统一建模语言(UML)来定义模型(例如类定义)。在用来示例说明本发明的方法的示例性框架中,使用商业实体来对应用建模。因此,商业模型由称为实体的这些商业对象、实体间的关系以及实体属性组成。参见简单模型380的例子,图4-1所示的实体381、382、383和384。实体具有属性(参见例如实体381的属性385)以及与其他实体的关系(参见例如实体381和384间的关系386)。
当模型被转换成另一模型时,明确地或有时隐含地使用映象。映象描述了模型间的关系。一些例子包括:用来将XML映射到XML的可扩展样式表语言转换(XSLT)、用来在特定设备表面上再现对象模型的控件、订单从一个应用程序到另一个的映射(因为不同应用程序中的订单可以具有不同格式),以及将UML映射到类定义的计算机辅助软件工程(CASE)工具。
在当前商业应用程序中,映象大多数是使用每次一个对象(object-at-a-time)映射来编程的,意味着将映射编码为代码中的“切换”语句,其将特定对象用作输入并返回另一对象。因此,传统的商业应用程序通常使用强制映象—用典型的编程语言的代码书写的映象。根据本发明,通过使用每次一个模型(model-at-a-time),提出能按数量级提高生产率。除生产率增益外,在感知UI生成问题作为使用映象的模型到其他模型的映射时存在精神增益。另外,另一好处是在本发明的声明性定义映象中发现的更高级抽象。本发明允许映象是显式且声明性的。在本发明中,映象能是声明性或强制性的(由于一个映象能覆盖代码中的映象的事实)。
映象的显式特性意味着映象对用来执行映射或再现的生成引擎是外部的,以及映象本身是模型。换言之,映象的显式特性意味着它们是与控件和表单分开定义的。通常,这一映射是在在控件代码或表单代码内隐含地完成的。
映象的声明性特性意味着映象不是强制的(以典型的编程语言编码)。如在此所使用的,术语“声明性定义”意味着映象不仅仅是以如传统的情形的代码定义,而它们是以允许容易改变映象的格式定义的。声明性定义格式的例子包括但不限于XML文档、逗号分隔的文件、BizTalk映象(将一个数据图式映射到另一个)以及MBF实体映象(将对象模型映射到数据库图式)。根据本发明,能使用各种各样的声明性映象格式,并且选择哪一格式不是特别重要。声明性映象具有有限概率集很重要,因此,使其更易于提供定义映象的直观设计工具。相反,通过编程语言,强制映射(使用代码)具有几乎无限的概率,因此,极其难以创建直观设计工具。相反,要求编程技术人员创造它。
必须注意到,在使用声明性映象的本发明的实施例中,映象不是仅是声明性的。在需要创建太复杂以致不能被声明性地定义的映象的实例中,能在另外的声明性映象中包括强制映射方面。例如,能在映象中创建和包括复杂的功能。例子能是如果发票地址和发货地址几乎相同,那么仅在表单上显示发票地址。用于确定两个地址是否几乎相同的算法能是在映象中使用的隐式定义的函数。
本发明提供适合于基于分布式、面向服务的体系结构的商业应用程序的开发和配置的编程抽象和规定体系结构。该框架将为这些抽象而编写的商业逻辑与底层技术的变化隔离,保留商业应用程序开发团队的关键优点。本发明将方法延伸到模型驱动的开发,从具有代码生成的设计时模型转移到具有真正“模型了解的应用程序服务”,其能在运行时解释商业模型。
基于映象的模型驱动的UI
当生成用于在本发明的实施例中构建的商业应用程序的UI时,具有应用程序模型是重要的特征。基于商业逻辑和映象的模型,仅能生成大量UI。当应用程序开发者对新实体建模时,从此导出UI。这在图4-2中示意性地示例说明,图4-2示出了映射到UI模型390(如388处所示)的商业模型380。箭头388表示映射过程,以及使用映象来实施映射过程的适当配置的映射引擎。
尽管使用传统的编码技术能实现该映射,但如果遇到某些难题,该映射不直接。该难题是当在实体中创建和使用新属性类型时,所编码的变换可能不知道如何处理该新类型,因此,必须修改和重新编译该变换。另一难题处理如果包括在变换中才有价值的新开发的控件,同样地,这导致对该变换重新编程。本发明的映射技术能满足这些难题。注意,运行时UI的任何修改(通过代码)也能视为映射。用在本发明中的平台展示了分层UI模型,并使用映象来模型从一层变换到另一层。下面将更详细地描述。
本发明的方法和装置提供在给定平台上如何向用户呈现商业信息的计算方法。本发明依赖将模型映射到其他模型上,从非常抽象模型(描述交互的商业实体)到具体模型(精确地指定应当使用哪一设备专用控件来再现商业信息)工作。总的来说,该映射可以包含多个步骤。
例如,考虑图5-1所示的框图400,它示例说明了使用两个显式和声明性映射步骤,从主模型402映射到专用模型425的过程。主模型405(即“模型A”)能是例如数据库、表格、实体、对象或专用于用户的问题域中的其他类型的模型。使用映象410(即“A-B映象”),通过411所示的映射步骤,主模型405被映射到中间模型415(即“模型B”)。中间模型415能是具有逻辑控件的显示目标无关模型,将在下面更详细地描述。然后,使用第二映象420(即“B-C映象”),通过421所示的映射步骤,将中间模型415映射到专用模型425(即“模型C”)。专用模型425能是具有物理控件的显示目标专用模型,也将在下面更详细地描述。用来表示映射步骤411和421的箭头还表示被配置成利用映象410和420实现映射步骤的映射引擎。
根据本发明的一些实施例,确定如何允许用户与客户机平台上的商业信息交互中所涉及的映射模式包含如下所述并如图5-2的框图450中所示的至少三个步骤。初始模型455(也参见图5-1所示的主模型405)包含有关用户必须交互的商业实体的信息。该应用程序模型的每个数据是特定类型。第一步骤包含确定哪一逻辑控制用于将呈现的给定类型数据(串,整数、十进制型表示币值、包含其他值的地址等等)。
使用从模型455中的数据类型到模型465中的逻辑控件的映射,确定用于给定类型的逻辑控件。该映射过程如461处所示,并利用映象460(即“数据类型到逻辑控件映象”)。逻辑控件具有几种有用的属性。它们完全摆脱对任何专用显示目标的依赖性,但保留管理设备专用物理控件的行为的属性。考虑类型层次,执行逻辑控件的查找。如果无逻辑控件特别适合于封装专用类型的属性,则搜索继续基础类型,直到找到处理该类型的逻辑控件为止。
一旦从要表示的数据类型中识别出逻辑控件,必须找出用来真正执行给定平台上的再现的物理控件。这些物理控件有时被称为“适配器”。这是使用另一映射来实现的,从逻辑控件和显示目标产生物理控件。映射过程在471示例说明,并使用映象470(即“逻辑控件到物理控件映象”)来从逻辑控件模型465生成物理控件模型475。
当客户机在用户显示目标上运行时,将使用物理控件来创建用来与用户交互的本机控件的实例。这是通过第三映射来完成的,从物理控件获得本机控件集。例如,如果物理控件是地址控件,物理控件将映射到用于街道、城市、国家的本机控件上。在481处示例说明该映射过程,并使用映象480(即“物理控件到本机控件映象”)来从物理控件模型475生成本机控件模型485。在一些实施例中,这是强制映象—但不必要如此。同样,箭头461、471也表示用来实现如由映象460、470和480指定的映射功能的映射引擎。
上述映射可以用其他映射来增加以实现所需结果。其他因素包括所再现的表单的类型(卡片或查看列表)、用户角色(可能限制提供给用户的信息)。从抽象模型到达具体模型的过程完全是指定的(通过描述所包含的映射),并通过能改变这些映射来提供灵活性。
作为另一例子,图5-3示例说明表示用于从顾客名和标识号(ID)到用来在浏览器中再现这一信息的HTML的映射过程的框图500。主或初始商业模型505是具有顾客名和ID作为属性的实体(或对象)或实体类(或对象类)。模型505的“名”和“ID”属性分别是“串”和“数字”类型。使用指定映象510,将模型505映射到模型515的逻辑控件层。在511处表示映射过程。在该例子中,将数据类型“串”映射到“文本框(TextBox)”逻辑控件,而数据类型“数字”映射到“数字框(NumberBox)”逻辑控件。
接着,使用映象520,将逻辑控件模型515映射到HTML模型525。在521表示该映射过程。在该示例中,模型525是以HTML模型的形式的物理控件模型。因此,映象520将模型515的逻辑控件映射到模型525中的HTML标签或元素。然后,HTML模型525用来在浏览器中再现来自模型505的信息。同样地,用来表示映射步骤511和521的箭头也表示适当配置的映射引擎,其利用映象510和520来实现该映射过程。
图5-4示例说明本发明的实施例的另一方面,其中能将几个不同属性类型映射到相同最终控件,以便当属性类型的数量增加时,所需控件的数量不必要增加。如图5的框图550所示,使用映象555,具有不同类型的属性561的商业模型560被映射到显示目标模型580。与先前论述的例子类似,模型560也被映射到具有逻辑控件571的逻辑层模型570。使用映象565的映射引擎和映射过程在566示例说明。映象565将模型560的属性561的数据类型(“ID类型(IDType)”、“串(String)”和“浮点(Float)”)映射到逻辑控件(“数字(Number)”和“串(String)”)。在这种情况下,“ID类型”和“浮点”数据类型映射到“数字”逻辑控件类型,而“串”数据类型映射到“串”逻辑控件类型。
接着,将逻辑层模型570映射到具有专用于特定显示目标的物理控件581的显示目标模型580。通过在576处表示的过程和映射引擎,使用映象575,将模型570映射到模型580。映象575将模型570的逻辑控件类型“数字”和“串”)映射为模型580的物理控件类型“文本框”,再次示例说明能将来自特定模型的几个不同类型映射到另一模型上的单个类型。通过扩展,能将来自商业模型的几个不同属性类型映射到相同的最终(例如“物理”)控件。
开发者经验
当开发者创建仅从现有类型构建的新实体时,也经映象构建默认UI。如果默认UI不提供所需的用户经验,开发者能选择,以便:
●修改商业模型来反映需求。例如,在一些实施例中,如果排序属性序列是错误的,比如ID应当在名称前显示,那么能编辑实体。在其他实施例中,属性的顺序驻留在外部“行为”中。然而,有序属性组能被“添加”到实体上,并且这能用来完成此操作。因此,在这些实施例中,最好方法可以是改变组内的顺序。
●修改所生成的逻辑表单模型。也能在表单中执行转换名称和ID。如果改变商业逻辑,诸如进行商业逻辑中的这种变化覆盖表单中的变化,这可能提出一些维护挑战。同时,需要改变每个表单上的商业逻辑。
●修改映象。如果将ID映射到数字控件但串控件更适合,则映象是进行这种改变的适当方法。
改变映象,而不是更传统的模型修改有许多优点。首先,改变能具有更宽的范围。如果改变用在先前示例中的映象条目,则使用“ID类型”的所有实体自动获得该更新。这将导致非常一致的UI,终端用户将从此受益。
当查看应用程序的维护和未来版本时,另一优点变得显而易见。通过改变生成模型的方法,但不改变所生成的模型,能更新主模型,此后,能重新生成相关模型,而没有冲突风险。根本不重新生成表单导致实体和用来察看和编辑它们的表单间的不一致。映象还将大的生成任务分成几个小的声明性映象条目。
如果开发者创建新属性类型,诸如“货币(Money)”,它能立即使用,因为如果仅增加单个映象条目,将高效地生成UI。在该示例中,新“货币”属性将映射到“数字”控件。开发者还能选择以充分利用所增加的元数据信息,并创建“货币”控件,以及使属性映射到该新控件。映射技术使这两种情况有效。
映射语言
映射使用可扩展的简单声明性映射语言。映射采用一个或多个令牌作为输入,并返回一个或多个令牌作为输出。给定属性类型作为输入,能将一个或多个逻辑控件指定为输出。将输出指定为空也必定是可能的。例如,“ID类型”能是用户不能编辑或查看的计算机生成的字段,在这种情况下,类型不映射到任何东西。同时,映射能控制输出上的参数。例如,“串”属性能导致比表单上其他文本框更宽的文本框。
为处理先前解决的范围问题,需要范围条件—在先前论述的示例性表单上,“ID类型”映射到“ID控件”,但在所有其他表单上,使用“数字”控件。其他参数也能用作范围,包括商业实体、实体固定形式(stereotype)、表单类型等等。当将执行映象时,有值得考虑的其他条件。一个示例是父控件。如果父控件是列表,则枚举器属性可以选择以映射到下拉列表而不是单选按钮。另一条件能是枚举器中可能选择的数量;如果有三个或三个,能使用单选按钮,但更多选择将导致列表。顺着这种思路,与初始需求相比,映射语言最终将变得非常复杂,并且开发者需要映象顶层的另一抽象级别来理解该映象。已经通过可扩展样式表语言转换(XSLT)查看过该模型,其中已经实现几个工具来隐藏该复杂性。
逻辑表单-UI模型
当从商业逻辑的模型映射到UI模型时,插入布局无关层,也称为逻辑层。如果认为商业逻辑的模型能映射到最终UI,而与显示目标无关,则逻辑层是直接抽象。一些元数据将共用于所有显示目标,诸如商业实体本身,而一些部分将专用于特定的显示目标。逻辑层是公用部分。
图6是用来创建表单的设计时活动和运行时活动的示意说明。在设计时,使用建模工具605来创建模型或表单定义以及诸如上述的映象。能将这些表单定义和映象存储在元数据数据库610中。
在运行时,能将模型或表单映射到逻辑层模型625。也使用存储在应用于商业逻辑620的数据库615中的运行时数据来生成逻辑层模型625。同时在运行时,能如上所述地将逻辑层模型625映射到显示目标模型630。
包括表单和控件的逻辑层是商业逻辑620和显示目标630间的桥梁。其具有有限布局知识和有限商业逻辑知识。逻辑层基于商业实体定义表单的内容,并处理共同的运行时问题,诸如将表单绑定到商业实体的运行时实例的数据。此外,逻辑层处理所有显示目标共同的安全性;它向每个显示目标提供元数据,并且逻辑层能处理输入确认。
商业体系结构设计者或开发者能集中于域专用商业逻辑和数据。当焦点转向UI时,布局细节、数据绑定问题、探求(plumbing)代码、输入确认、非可读属性的隐藏、错误处理等等均隐藏在逻辑层中发现的高级抽象中。域专家能集中于UI的内容—查看什么对用户来说有意义,而不需要具有有关特定显示目标以及它们的不同再现技术的深入知识。
如所述,使用逻辑控件,构建逻辑表单或逻辑层模型。能容易添加新控件,使逻辑层更灵活和可扩展。当开发新控件时,通过改变所使用的映象,简单地将其增加到现有表单上。每个显示目标将从新功能性受益,而不必实现新控件,但如果有意义,能引入新控件。
显示目标
能将逻辑表单和控件映射到由显示目标使用的专用再现技术上。如在其他图中,这在图7中示例说明,其中,将逻辑层模型或表单705映射到几个特定显示目标上。在该特定示例中,显示目标710使用Windows再现技术,而显示目标715使用Web再现技术。显示目标负责处理所有用户交互,包括再现表单和控件以及处理用户输入。每个显示目标需要多个控件,以便逻辑层中的控件能被映射到有意义的一些东西上。即,属性必须与控件能处理的值类型兼容,并且控件应当以明白的方式再现该值。换句话说,没有需要在每个显示目标中可用的特定数量的控件,因为映射技术对此有显著影响。
显示目标控制用户交互作用,并且本质上是交互作用范例。可以基于相同的逻辑表单,生成网页和Windows表单窗口,但它们使用轻松交互(chattyinteraction)政策还是小块寄回(chunky post back)政策当然由显示目标确定。每个显示目标选择将向用户显示多少表单。Windows表单能隐藏有关标签页的信息,而网页能选择一次显示所有信息。基于逻辑表单及由此的显示目标获得的表单类型,作出这些决策。不同显示目标需要另外的信息来进行这些分页决策,类似地,能用显示目标专用信息注释逻辑表单和控件。
行为—声明性表单逻辑
当表单由定义内容的逻辑控件组成时,仍然需要将动态特性增加到表单上。这能使用代码来实现。但不易于将代码映射到表单上,因此,需要声明性抽象级别。同时,存在将添加到表单的代码的许多模式。例如,在许多表单中,能找到如果填写另一字段将禁用一个字段的代码。如果将“现金(Cash)”选择为表单上的支付类型,则“信用卡号(Credit Card Number)”变灰或甚至隐藏。
在称为“行为”的概念中捕捉这些模式。行为声明性地添加到表单上,并经表单中的事件激活。行为能根据控件的值和属性设置在其他控件上的属性,但行为不限于这种使用。主要基于实体中的约束,或其他元数据属性,来映射行为。实体负责处理商业逻辑,而行为负责UI逻辑。换句话说,行为不应当实现任何商业逻辑,因为这将违反利害关系的分离。
分层系统和方法示例
现在,参考图8,示出分层系统和方法的示意示例说明,它结合实现了上述各种概念(例如逻辑表单类型、UI映象、控件、行为等等)。如图8所示,使用包括商业应用程序和计算系统、核心客户端映射引擎或组件910以及一个或多个显示目标915的商业框架905,实现了该系统或方法900。为示例目的,对图8进行分段,来示出映象920(包括映象921和922)、模型925(包括应用程序或商业模型926、逻辑表单模型927和物理模型928),以及库930。
库930将定义应用程序模型926中数据的各种属性类型923的属性类型库931包括在商业架构905中。在核心客户端910中,库930包括逻辑控件库932、行为库933和逻辑表单类型库934。如上所述,逻辑控件库932定义各种逻辑控件924,模型926的数据或属性类型923能映射到这些逻辑控件924。使用映象921,由核心客户端映射引擎执行应用程序模型926和逻辑表单模型927间的映射。
在如上所述的设计和生成表单的过程中,由核心客户端映射引擎910使用行为库933和逻辑表单类型库934。库930还包括样式库935、物理或本机控件库936,以及由显示目标900使用来生成物理表单模型928,由此再现物理表单的表单类型库937。控件库936定义用于特定显示目标的各种物理控件925,使用映象922,逻辑控件924能被映射到这些物理控件。
尽管已经参考特定的实施例描述了本发明,然而本领域的技术人员将意识到,在不背离本发明的精神和范围的情况下,可以在形式和细节方面做出各种改变。