动态声明性应用程序描述的制作方法

文档序号:6593593阅读:216来源:国知局
专利名称:动态声明性应用程序描述的制作方法
动态声明性应用程序描述背景计算机已变成在劳动力、家、以及移动设备中高度集成。计算机能够快速且高 效地处理大量信息。被设计成在计算机系统上运行的软件应用程序允许用户执行包括商 业应用程序、学校作业、娱乐和更多功能在内的各种各样的功能。软件应用程序通常被 设计成执行特定任务,诸如用于草拟文档的文字处理器应用程序或者用于发送、接收和 组织电子邮件的电子邮件程序。软件应用程序通常使用某种类型的高级编程语言来编写。尽管现如今使用许多 语言,但大多数语言落入两个类别之一过程语言和声明性语言。在过程语言中,开发 者通常编写被称为函数或例程的一系列语句,它们将按顺序在计算上实现。过程语言可 包括ASP、PERL、Python和C等等。这些语言一般需要关于事件处理和状态改变的高 级细节。这在用户界面由于各种用户输入而改变的情形中更加显著。声明性语言已通过允许开发者大致指定如何处理某些事件或状态改变而不必为 每一个具体情形编写代码来减轻该负担中的某一些。然而,很多时候,声明性语言缺少 允许丰富数据驱动应用的声明性规范的动态性。而且,声明性语言通常限制在应用程序 的操作期间在不必终止、重新编译并重启该应用程序的情况下能执行的修改的类型。简要概述本文描述的实施例涉及动态地重新配置正在操作的软件应用程序的至少一部 分。在一个实施例中,一种计算机系统接收指示将编辑正在操作的软件应用程序的至少 一部分的编辑,其中该编辑包括将被动态地应用于该应用程序的改变。该计算机系统实 例化被设计成实现如由接收到的编辑指示的应用程序改变的动态配置构建器,并确定在 实现对应用程序的这些改变时挂起该应用程序的哪些部分。计算机系统挂起所确定的应 用程序部分直至实现这些应用程序改变,并实现由该编辑指示的对应用程序的挂起部分 的改变,而该应用程序的其余部分继续操作。该计算机系统还用所实现的改变来动态地 重新配置该应用程序,其中该重新配置包括重新初始化所挂起的应用程序部分。在另一实施例中,计算机系统接收将在应用程序正在操作时重新配置该应用程 序的一个或多个部分的指示。计算机系统实例化被配置成实现如由接收到的指示指示的 应用程序重新配置的动态配置构建器,并确定哪些静态代码片段将被用来执行这些重新 配置。配置构建器访问静态代码以提供将用于执行重新配置的那些静态代码片段。计算 机系统接收来自静态代码片段中的至少一个的对动态代码中的至少一部分的调用以基于 该指示来执行重新配置,并使用该动态代码部分来重新配置应用程序的所指示部分以修 改该静态代码片段。提供本概述以便以简化形式介绍将在以下详细描述中进一步描述的一些概念。 本概述不旨在标识出所要求保护的主题的关键特征或必要特征,也不旨在用于帮助确定 所要求保护的主题的范围。附图简述 为了进一步阐明本发明的各实施例的以上和其它优点和特征,将参考附图来呈现本发明的各实施例的更具体的描述。可以理解,这些附图只描绘本发明的典型实施 例,因此将不被认为是对其范围的限制。本发明将通过使用附图用附加特征和细节来描 述和解释,附图中

图1示出其中本发明的实施例可操作的计算机体系结构,包括动态地重新配置 正在操作的软件应用程序的至少一部分。图2示出其中本发明的实施例可操作的计算机体系结构,包括允许用户通过编 辑数据来重新配置应用程序,其中静态软件代码被配置成调用动态软件代码来执行从用 户接收到的动态重新配置。图3示出用于动态地重新配置正在操作的软件应用程序的至少一部分的示例方 法的流程图。图4示出允许用户通过编辑数据来重新配置应用程序的示例方法的流程图,其 中静态软件代码被配置成调用动态软件代码来执行从用户接收到的动态重新配置。详细描述此处所描述的各实施例涉及动态地重新配置正在操作的软件应用程序的至少一 部分。在一个实施例中,计算机系统接收指示将编辑正在操作的软件应用程序的至少一 部分的编辑,其中该编辑包括将被动态地应用于该应用程序的改变。计算机系统实例化 被设计成实现如由接收到的编辑指示的应用程序改变的动态配置构建器,并确定在实现 对应用程序的这些改变时挂起该应用程序的哪些部分。计算机系统挂起所确定的应用程 序部分直至实现这些应用程序改变,并实现由该编辑指示的对应用程序的挂起部分的改 变,而该应用程序的其余部分继续操作。计算机还用所实现的改变来动态地重新配置该 应用程序,其中该重新配置包括重新初始化所挂起的应用程序部分。在另一实施例中,计算机系统接收将在应用程序正在操作时重新配置该应用程 序的一个或多个部分的指示。计算机系统实例化被配置成实现如接收到的指示所指示的 应用程序重新配置的动态配置构建器,并确定哪些静态代码片段将被用来执行这些重新 配置。配置构建器访问静态代码以提供将用于执行重新配置的那些静态代码片段。计算 机系统接收来自静态代码片段中的至少一个的对动态代码中的至少一部分的调用以基于 该指示执行重新配置,并使用该动态代码部分来重新配置应用程序的所指示部分以修改 该静态代码片段。本发明的各实施例可以包括或利用含有计算机硬件的专用或通用计算机,这将 在以下做出进一步讨论。本发明范围内的各实施例还包括用于承载或存储计算机可执行 指令和/或数据结构的物理和其他计算机可读介质。这样的计算机可读介质可以是可由 通用或专用计算机系统访问的任何可用介质。存储计算机可执行指令的计算机可读介质 是物理存储介质。承载计算机可执行指令的计算机可读介质是传输介质。由此,作为示 例而非限制,本发明的各实施例可包括至少两种完全不同种类的计算机可读介质物理 存储介质和传输介质。物理存储介质包括RAM、ROM、EEPROM> CD-ROM或其他光盘存储、磁盘
存储或其他磁存储设备、或可用于存储计算机可执行指令或数据结构形式的所需程序代 码装置且可由通用或专用计算机访问的任何其他介质。“网络”被定义为允许在计算机系统和/或模块和/或其他电子设备之间传输电子数据的一个或多 个数据链路。当信息通过网络或另一通信连接(硬连线、无线、或硬 连线或无线的组合)传输或提供给计算机时,该计算机将该连接适当地视为传输介质。 传输介质可包括可用于承载或传输计算机可执行指令或数据结构形式的所需程序代码装 置并可由通用或专用计算机访问的网络和/或数据链路。上述的组合也应被包括在计算 机可读介质的范围内。然而,应当理解,在到达各种计算机系统组件之后,计算机可执行指令或数据 结构形式的程序代码装置可从传输介质自动转移到物理存储介质。例如,通过网络或数 据链路接收到的计算机可执行指令或数据结构可被缓存在网络接口卡内的RAM中,然后 最终被传送到计算机系统RAM和/或计算机系统处的较不易失的物理存储介质。由此, 应当理解,物理存储介质可被包括在同样(或甚至主要)利用传输介质的计算机系统组件 中。计算机可执行指令包括,例如使通用计算机、专用计算机、或专用处理设备执 行某一功能或某组功能的指令和数据。计算机可执行指令可以是例如二进制代码、诸如 汇编语言等中间格式指令、或甚至源代码。尽管用结构特征和/或方法动作专用的语言 描述了本主题,但可以理解的是,所附权利要求书中定义的主题不必限于上述特征或动 作。相反,上述特征和动作是作为实现权利要求的示例形式而公开的。本领域的技术人员将理解,本发明可以在具有许多类型的计算机系统配置的网 络计算环境中实践,这些计算机系统配置包括个人计算机、台式计算机、膝上型计算 机、消息处理器、手持式设备、多处理器系统、基于微处理器的或可编程消费电子设 备、网络PC、小型计算机、大型计算机、移动电话、PDA、寻呼机、路由器、交换机等 等。本发明也可以在其中通过网络链接(或者通过硬连线数据链路、无线数据链路,或 者通过硬连线和无线数据链路的组合)的本地和远程计算机系统两者都执行任务的分布 式系统环境中实践。在分布式系统环境中,程序模块可以位于本地和远程存储器存储设 备中。图1示出了可在其中采用本发明的原理的计算机体系结构100。在一些实施例 中,图1的元件可在计算机系统中实现或以其他方式作为计算机系统的一部分。用户界 面125可以是任何类型的文本、图形或其他类型的用户界面。用户界面(UI) 125可被配 置成显示软件应用程序101的各部分。另外地或另选地,UI 125可显示用户对象126。 用户对象可包括按钮、窗口、链接、图形、图标或其他图形对象。在一些情形中,用户 对象可充当由软件应用程序101提供的底层功能的标记或指示符。应用程序101可以是出于任何目的而设计的任何类型的软件应用程序。应用程 序可包括多个组件或仅单个组件。在一些情形中,应用程序101可在运行时生成、编译 或缝合在一起。引擎110可被配置成在运行时执行该生成、编译或缝合在一起中的全部 或部分。这些功能也可由引擎110在运行时之前的某个其他时间执行。引擎110可被配 置成接收应用程序描述部分115。在一些实施例中,应用程序描述部分115可包括可用于 创建工作软件应用程序的各种软件对象。这些软件对象可用一个或多个标签来标记,该 标签声明性地指示如何单独地以及结合其他软件对象来使用这些软件对象。这些软件对 象可构成软件应用程序功能的各部分的基础并且可由引擎110声明性地缝合在一起,如 以上所指示的。
引擎110还可被配置成接收框架对象118。框架对象可包括用户对象126中的任 一个以及在生成软件应用程序时使用的其他面向应用程序的框架部分。这可包括库、绑 定或其他对象。引擎110可包括参数绑定管理器109。参数绑定管理器109可被配置成 访问包括软件对象和标签的应用程序描述部分115。管理器109可使用映象来将由标签 标识的应用程序描述的各部分映射到各个软件对象。如本文所使用的,映象包括访问与 软件对象相关联的属性,这在一些情形中涉及查看与软件对象相关联的元数据。参数绑 定管理器109可被配置成基于与软件对象相关联的软件对象属性中所包括的不同的声明 性规则,来将软件对象的属性绑定到应用程序描述的各部分(例如,115)。在一些情形 中,软件对象属性可被绑定到数据项。应用程序描述115可包括可绑定到属性的此类数 据项。另外地或另选地,软件对象属性可被绑定到应用程序描述中不包括的数据项。引擎110还可 被配置成访问数据105并生成组合对象111。数据105可以是引擎 110可用来生成软件应用程序101的任何类型的信息。此外,数据105可由应用程序101 在正在进行的基础上访问。因此,当用户与应用程序101交互时,数据可被流传送或以 其他方式发送到应用程序101和引擎110中的任一个或两者。组合对象111指示由引擎 110缝合在一起或以其他方式组合的一个或多个软件对象。在一些情形中,组合对象111 可构成软件应用程序101的基础或者它们本身可构成应用程序101。软件应用程序101可由于时间流逝或者由于来自用户或其他应用程序的交互而 被持续更新和更改。例如,可发生指示软件应用程序101将被修改的某一动作(例如, 动作106)。在一些情形中,该动作可以是数据改变。此类数据改变可向引擎Iio指示数 据改变将被转换成对软件应用程序的改变。数据连接器107可被用来标识哪些数据将被 修改并且可被配置成与数据105通信以检索已更新的信息。变换108可被用于变换、重 新格式化或以其他方式修改检索到的数据,然后将这些数据传递给参数绑定管理器109。 尽管被示为引擎110的一部分,但是参数绑定管理器109也可扮演作为应用程序101的 一部分的组成角色,包括重新映射各个标签以及将软件对象属性绑定到应用程序描述115 的各部分。参数绑定管理器109还可被配置成直接与用户界面125交互,向UI 125提供 将向计算机用户显示的已更新的信息。如图1中进一步指示的,弓丨擎110可以是XAD引擎。XAD是可扩展标记语言 (XML)应用程序框架(XAF)应用程序定义(XAD)语言的缩写,其是声明性或描述性语 言。在一些情形中,XAD可被用于基于XAF平台来创作XAF应用程序(例如,应用程 序101)。在一些情形中,XAD可指示如何基于用户可配置构造信息和/或应用程序描 述部分115来创建运行时对象图。XAD引擎(例如,引擎110)可结合参数绑定管理器 109来处理或执行应用程序描述以创建查看和/或处理数据的对象。因此,XAD可以在 应用程序框架内用来提供陈述框架内的动作或其他事件的标准且简单的手段。在一些情形中,使用XAD,开发者能够避免为进行数据处理的对象编写实际代 码。例如,开发者可能只需要编写声明性应用程序的最终被编译和执行的文件。此外, XAD提供渐进抽象等级以辅助设计、强类型化、高度静态检查以及高度可扩展性。XAD 还允许操纵异类数据。尽管XAF和XAD在本文中提及并且可被纳入一个或多个实施例, 但是本领域技术人员应理解,由XAD和XAF中任一个或两者提供的功能可另外地或另选 地由其他软件应用程序、计算机系统或功能提供实体来提供。
如本文所使用的,XAF是用于生成给定软件应用程序的运行时结构以及用于管 理该软件应用程序的执行的软件应用程序框架。应用程序101可由包括连接的应用程序 组件的集合或图的应用程序框架来生成。通过将应用程序组件组动态地配置到组件域中 来启用根据应用程序框架来配置的应用程序的功能,其中每一个域被配置成启用该应用 程序的给定功能,例如在文字处理文档中显示图片。为了生成应用程序的运行时结构,应用程序可将每一个应用程序功能片段的应用程序描述传递给应用程序描述引擎。应用程序描述提供用于构造和构成组件域的声明 性规则,并且应用程序描述引擎可用于基于应用程序接收到的数据事件来按需解释用于 创建和重新配置组件域的声明性规则。如本文中所使用的,数据事件可以是任何类型的 软件消息、用户输入、或已发生可能影响软件应用程序的某事的其他指示。数据事件可 以例如在用户点击鼠标以与应用程序交互时、或者在应用程序的处理期间呈现错误消息 时发生。在一些情形中,XAF可被配置成跟踪依赖性,以使得数据评估和对象图构造可 以在数据改变时增量式地更新。例如,XAF可跟踪数据105中的依赖性以使得软件应用 程序101可以在更新数据105时增量式地更新。在一些实施例中,该增量式更新由XAF 自动执行。在一些实施例中,引擎110可调用与应用程序101的入口点中的至少一个相关联 的配置构建器112。这导致创建一个或多个对象,以及可能注册一些对象以进行初始化。 可执行这些初始化,这可导致调用更多配置构建器,从而可导致创建更多对象以及或许 注册更多对象以进行初始化。在一些情形中,只要存在已注册进行初始化的对象,引擎 110就将继续初始化它们。引擎110随后可循环以继续该过程。如图1中进一步所示的,引擎110可被配置成接收编辑114。编辑114可包括正 在操作的软件应用程序的至少一部分将被编辑的指示。例如,当软件应用程序101正在 计算机系统上运行时,计算机用户可能希望编辑该应用程序的一个或多个部分。这些部 分可包括用户对象126或应用程序101的任何其他部分。在一些情形中,一个或多个配 置构建器112可被引擎110实例化以实现如编辑114所指示的应用程序改变。在一些情形中,在进行编辑时临时挂起或关闭应用程序101的各部分可以是有 利的。引擎110可被配置成确定在实现对应用程序的改变时挂起应用程序101的哪些部 分。挂起模块113可被配置成挂起确定对其的挂起是有益或必要的那些应用程序部分。 引擎110可实现编辑114中所指示的对应用程序的挂起部分的改变。在一些实施例中, 在实现改变时,可以挂起整个应用程序。或者,在一些实施例中,在实现改变时,可挂 起应用程序的仅仅一部分。在此类情形中,在正在执行编辑时,应用程序的其余部分可 继续运行。对应用程序的编辑(例如,编辑120)可被传递到应用程序描述部分115、用 户界面125和软件应用程序101中的任一个。这些和其他概念将在以下分别参考图3的 方法300和图4的方法400并鉴于图2的体系结构200来更详细地解释。图2示出了可在其中采用本发明的原理的计算机体系结构200。图3示出用于动 态地重新配置正在操作的软件应用程序的至少一部分的方法300的流程图。现在将频繁 参照图1和图2的环境100和200的组件和数据来描述方法300。方法300包括接收指示将编辑正在操作的软件应用程序的至少一部分的编辑的动作,该编辑包括将被动态地应用于该应用程序的改变(动作310)。例如,引擎110可 接收指示将编辑正在操作的软件应用程序101的至少一部分的编辑114,其中该编辑包括 将被动态地应用于该应用程序101的改变。在一些情形中,对应用程序的编辑包括对该 应用程序内的模型数据的编辑。例如,应用程序101可被配置成编辑(或者可能当前正 在编辑)与模型相对应的数据。在这些情形中,应用程序和模型数据两者都是可编辑数 据,并且可以如编辑114中所指示地那样编辑。在模型包括各种数据类型的情况下,用 户能够编辑该模型中的数据类型的全部或仅仅一部分。在一些情形中,编辑特定类型的 数据的能力可对应于用户的系统访问权限。 如以上所指示的,应用程序101可包括可用于添加或移除代码部分的一个或多 个扩展点。这些代码部分可包括静态代码对象116、动态代码对象117和/或框架对象 118。如本文中所使用的,静态代码对象可包括不可改变的(或者在不关闭相应的软件应 用程序并重新编译该应用程序的情况下是不可改变的)任何软件代码部分。如本文中所 使用的,动态代码对象是指可改变并且可在相应的软件应用程序正在运行时修改的软件 代码部分。在一些情形中,在应用程序正在运行时,代码部分可通过应用程序的扩展点 中的一个或多个来添加并被动态地重新编译。类似地,代码部分可通过扩展点来移除并 且该应用程序(或其一部分)可被动态地重新编译。在一些情形中,应用程序101能够 使用应用程序的扩展点来编辑其自己的代码的部分。方法300包括实例化被设计成实现如由接收到的编辑指示的应用程序改变的一 个或多个动态配置构建器的动作(动作320)。例如,引擎110可实例化被设计成实现编 辑114中所指示的应用程序改变的动态配置构建器112。在一些情形中,配置构建器112 可被配置成监视和标识应用程序101的应用程序状态的改变。这些状态改变及相关状态 信息可被存储在本地或远程数据存储中。保存状态改变允许在维持状态的同时重新配置 应用程序。该概念将在下文更详细地解释。方法300包括确定在实现对应用程序的改变时挂起应用程序的哪些部分的动作 (动作330)。例如,引擎110可确定在实现编辑114中所指示的对应用程序的改变时挂 起应用程序101的哪些部分。例如,如图2中描绘的,应用程序220A可包括静态部分 221A、221B和221C,以及动态部分222A。引擎210可确定编辑114指示将对静态部分 221B作出改变。基于该确定,引擎110可确定在实现对应用程序220A的改变时挂起部 分221B。在确定挂起哪些代码部分时,应注意确保挂起允许执行所指示的改变的最小应 用程序部分集。换言之,每一个接收到的编辑可通过挂起应用程序220A的特定部分来实 现。因此,对于每一个接收到的编辑,重要的是确定为实现这些改变而挂起的最小代码 部分集。然而,还应注意,如由引擎110确定的,可挂起应用程序的任一部分或所有部 分。方法300包括挂起所确定的应用程序部分直至实现应用程序改变的动作(动作 340)。例如,挂起模块213可挂起静态部分221B直至实现对应用程序220A的改变。因 此,当静态部分221B被挂起时,如在应用程序220B中所描绘的,仅静态部分221A和 221C以及动态代码部分222B仍在运行。静态部分221B可被发送给配置构建器212以进 行修改。方法300包括实现该编辑所指示的对应用程序的挂起部分的改变的动作,其中该应用程序的其余部分继续操作(动作350)。例如,配置构建器212可实现编辑114中指 示的对代码部分221B的改变,而应用程序220A的其余部分(例如,应用程序220B)继续 运行。这些编辑可能是细微的或广泛的,并且因此可增加或减少修改所花费的时间。引 擎210可包括状态监视模块214,其可监视和访问静态代码部分221B当在应用程序220A 中被访问时的当前状态配置。状态监视模块214可被配置成存储静态部分221B和/或整 个应用程序220A中的当前状态设置。配置构建器212可被配置成访问所存储的状态信息 并确保所有当前状态配置在被修改后被传递到经修改的静态部分221BM。这确保了在重 新配置之后状态得以维护。方法300包括用所实现的改变来动态地重新配置应用程序的动作,其中该重新 配置包括重新初始化所挂起的应用程序部分(动作360)。例如,引擎210可用由配置构 建器212实现的改变来动态地重新配置应用程序220B。该重新配置包括在应用程序220C 中重新初始化所挂起的静态部分221B(现在是经修改的部分221BM)。因此,重新配置 的应用程序220C包括原始静态部分221A和221C、以及经修改的静态部分221BM和动 态部分222C。在一些情形中,应用程序220C在运行时用所实现的改变来动态地重新配 置。图4示出允许用户通过编辑数据来重新配置应用程序的方法400的流程图,其中 静态软件代码被配置成调用动态软件代码来执行从用户接收到的动态重新配置。现在将 频繁参照图2的环境200的组件和数据来描述方法400。方法400包括接收将在应用程序正在操作时重新配置该应用程序的一个或多个 部分的指示的动作(动作410)。例如,引擎110可接收将在应用程序101继续操作时重 新配置应用程序101的一个或多个部分的编辑114。编辑114可从计算机用户、从软件应 用程序、或从其他计算机系统接收到。这些编辑可包括对应用程序101的任何类型的修 改,包括设置改变、代码改变、或任何其他类型的改变。方法400包括实例化被配置成实现如接收到的指示所指示的应用程序重新配置 的一个或多个动态配置构建器的动作(动作420)。例如,引擎110可实例化动态配置构 建器112以实现如由编辑114所指示的应用程序重新配置。构建器112可被引擎110用 来基于接收到的编辑来确定将对应用程序101作出什么改变。这些改变可能影响一个或 多个代码部分,如应用程序220A中示出的,包括静态代码部分221A、221B和221C、以 及动态代码部分222A。方法400包括确定哪些静态代码片段将被用来执行重新配置的动作(动作430)。 例如,引擎Iio可确定静态代码部分221B将被用于执行重新配置。在一些情形中,应用 程序声明(例如,应用程序描述115)可描述哪些静态代码部分对应于接收到的编辑114 中的编辑。此类应用程序声明可被本地地或远程地存储在储存库中。尽管应用程序220A 中仅示出三个静态代码部分并且尽管仅一个静态代码部分被示为被挂起和修改,但是应 理解,应用程序220A可包括任何数量的静态和/或动态代码部分。此外,任何数量的代 码部分可被引擎210挂起和/或修改。方法400包括至少一个实例化的动态配置构建器访问静态代码以提供将被用于 执行重新配置的那些静态代码片段的动作(动作440)。例如,动态配置构建器212可访 问静态代码部分221A、221B和/或221C以提供将被用于执行重新配置的那些静态片段(即,221B)。因此,例如,如果用户在编辑114中请求修改关于何时使用红色(与默认 的蓝色相对)来显示UI按钮的规则,则引擎210可确定静态代码部分212B包含与所指示 改变相对应的代码。在此类情形中,本文中被称为动态调用器的软件机制可反过来将应用程序220A 的部分展示给动态代码部分222A,以使得该动态代码可使用所展示的静态片段来执行重 新配置。动态调用器可指向从储存库读入代码(例如,对象116和/或117)并编译该代 码的各个运行时片段。在一些情形中,应用程序负责定义动态调用器可用来添加或移除 代码的扩展点。应用程序可以是静态的已编译代码,但可声明允许编辑应用程序本身的 扩展点。动态调用器可基于由应用程序提供的输入来构建应用程序的至少一部分。因 此,动态代码部分222A可使用静态代码部分221A、221B和/或221C来执行重新配置。 在一些实施例中,动态配置构建器212可包括可编辑数据。在这些情形中,构建器212 可遵循各种静态配置构建器能理解的方案。方法400包括接收来自静态代码片段中的至少一个的对动态代码中的至少一部 分的调用以基于该指示来执行重新配置的动作(动作450)。例如,引擎210可接收来自 静态部分221B的对动态代码部分222A的调用以基于该指示来执行重新配置。应注意, 虽然静态代码部分可调用动态部分来执行重新配置,但动态代码也可调用静态应用程序 代码来执行编辑。此外,代码调用迭代和汇编也是可能的。因此,引擎210可允许各个 代码部分彼此调用以完成各种目标,包括执行应用程序重新配置。方法400包括至少一个实例化的动态配置构建器使用动态代码部分来重新配置 应用程序的所指示部分以修改静态代码片段的动作(动作460)。例如,配置构建器212 可使用动态代码部分222A来重新配置静态代码部分221B以修改静态代码部分221B。在 重新配置之前或期间,应用程序状态可由状态监视模块214监视并存储。因此,在重新 配置后(例如,经重新配置的应用程序220C),任何状态设置或其他状态信息在重新配置 中维护和更新。在一个实施例中,引擎110可接收指示将编辑正在操作的软件应用程序(例如, 101)的至少一部分的编辑(例如,114)。该编辑可包括将动态地应用于应用程序101的 改变。引擎110可实例化被设计成实现如由接收到的编辑(例如,114)指示的应用程序 改变的动态配置构建器(例如,112)。引擎110可确定将被挂起以允许实现所指示的改 变的最小应用程序部分集(例如,111)。挂起模块113/213可挂起所确定的应用程序部 分直至实现应用程序改变。继续该实施例,至少一个实例化的动态配置构建器可访问静态代码(例如, 116)以提供将被用于执行编辑的那些静态代码片段。引擎110可接收来自静态代码片段 中的至少一个的对动态代码(例如,117)中的至少一部分的调用以基于该指示来执行编 辑,而应用程序(例如,101)的其余部分继续操作。引擎110可使用动态代码部分来用 所实现的改变动态地重新配置应用程序以修改静态代码片段。该重新配置还包括重新初 始化应用程序中被挂起的那些部分。以此方式,应用程序可在运行中更新和重新配置, 且该应用程序的仅最小部分被临时挂起以实施所请求的改变。本发明可被具体化为其他具体形式而不背离其精神或本质特征。所描述的实施 例在所有方面都应被认为仅是说明性而非限制性的。从而,本发明的范围由所附权利要求书而非前述描述指示。落入权利要求书的等效方案的含义和范围内的所有改变应被权 利要求书的范围所涵盖。
权利要求
1.一种在计算机联网环境中的计算机系统处的用于动态地重新配置正在操作的软件 应用程序(101)的至少一部分的方法,所述方法包括接收指示将编辑正在操作的软件应用程序(101)的至少一部分的编辑(114)的动作, 所述编辑包括将被动态地应用于所述应用程序的改变;实例化被设计成实现如由接收到的编辑(114)指示的应用程序改变的一个或多个动 态配置构建器(112)的动作;确定在实现对所述应用程序(101)的改变时挂起所述应用程序(101)的哪些部分的动作;挂起所确定的应用程序(101)部分直至实现所述应用程序改变的动作; 实现由所述编辑(114)指示的对所述应用程序的挂起部分(221B)的改变的动作,其 中所述应用程序的其余部分继续操作;以及用所实现的改变来动态地重新配置所述应用程序的动作,其中所述重新配置包括重 新初始化所挂起的应用程序部分(221B)。
2.如权利要求1所述的方法,其特征在于,对所述应用程序的编辑包括对所述应用程 序内的模型数据的编辑。
3.如权利要求2所述的方法,其特征在于,所述应用程序和所述模型数据两者皆为可 编辑数据。
4.如权利要求1所述的方法,其特征在于,所述应用程序在运行时用所实现的改变来 动态地重新配置。
5.如权利要求1所述的方法,其特征在于,所述应用程序包括可用来添加或移除代码 部分的扩展点。
6.如权利要求5所述的方法,其特征在于,通过所述扩展点添加的代码被动态地重新编译。
7.如权利要求5所述的方法,其特征在于,所述应用程序在通过所述扩展点移除代码 之后被动态地重新编译。
8.如权利要求5所述的方法,其特征在于,所述扩展点允许所述应用程序编辑其本身。
9.如权利要求1所述的方法,其特征在于,所挂起的应用程序部分包括允许执行所指 示的改变的最小应用程序部分集。
10.如权利要求1所述的方法,其特征在于,所述动态配置构建器监视并标识所述应 用程序的应用程序状态改变。
11.如权利要求10所述的方法,其特征在于,还包括存储与所挂起的应用程序部分相 关联的应用程序状态信息以使得在重新配置后状态得以维护的动作。
12.一种在计算机联网环境中的计算机系统处的用于允许用户通过编辑数据来重新 配置应用程序(101)的方法,其中静态软件代码(221A-C)被配置成调用动态软件代码 (222A-C)来执行从用户接收到的动态重新配置,所述方法包括接收将在应用程序(101)正在操作时重新配置所述应用程序的一个或多个部分的指 示的动作;实例化被配置成实现如由接收到的指示所指示的应用程序重新配置的一个或多个动态配置构建器(212)的动作;确定哪些静态代码片段(221A-C)将被用来执行所述重新配置的动作; 至少一个实例化的动态配置构建器(212)访问静态代码以提供将被用于执行所述重 新配置的那些静态代码片段(221A-C)的动作;接收来自所述静态代码片段(221A-C)中的至少一个的对动态代码(222A-C)中的至 少一部分的调用以基于所述指示来执行所述重新配置的动作;以及所述至少一个实例化的动态配置构建器(212)使用所述动态代码部分(222A-C)来重 新配置所述应用程序(101)的所指示部分以修改所述静态代码片段(221A-C)的动作。
13.如权利要求12所述的方法,其特征在于,应用程序声明描述静态代码的哪些部分 对应于在所述指示中接收到的重新配置。
14.如权利要求13所述的方法,其特征在于,与所述应用程序相对应的一个或多个应 用程序声明被存储在储存库中。
15.如权利要求12所述的方法,其特征在于,调用器反过来将所述应用程序的一个或 多个部分展示给所述动态代码,以使得所述动态代码能使用所展示的静态片段来执行所 述重新配置。
16.如权利要求12所述的方法,其特征在于,还包括动态代码调用静态应用程序代码 来执行所述重新配置。
17.如权利要求12所述的方法,其特征在于,所述动态配置构建器包括可编辑数据, 并且其中所述构建器遵循一个或多个静态配置构建器能理解的方案。
18.如权利要求12所述的方法,其特征在于,还包括存储与所编辑的应用程序部分相 关联的应用程序状态信息以使得在重新配置后状态得以维护的动作。
19.一种用于实现一种方法的计算机程序产品,所述方法用于动态地重新配置正在操 作的软件应用程序(101)的至少一部分,所述计算机程序产品包括其上具有计算机可执 行指令的一个或多个计算机可读介质,所述指令在被计算系统的一个或多个处理器执行 时使得所述计算系统执行所述方法,所述方法包括接收指示将编辑正在操作的软件应用程序(101)的至少一部分的编辑(114)的动作, 所述编辑包括将被动态地应用于所述应用程序(101)的改变;实例化被设计成实现如由接收到的编辑(114)指示的应用程序改变的一个或多个动 态配置构建器(112)的动作;确定将被挂起以允许实现所指示的改变的最小应用程序部分集的动作; 挂起所确定的应用程序部分(221B)直至实现所述应用程序改变的动作; 至少一个实例化的动态配置构建器(112)访问静态代码以提供将被用于执行所述编 辑的那些静态代码片段(221A-C)的动作;接收来自所述静态代码片段(221A-C)中的至少一个的对动态代码(222A-C)中的至 少一部分的调用以基于所述指示来执行所述编辑(114)的动作,其中所述应用程序(101) 的其余部分继续操作;以及使用所述动态代码部分(222A-C)来用所实现的改变动态地重新配置所述应用程序 (101)以修改所述静态代码片段(221A-C)的动作,所述重新配置包括重新初始化所挂起 的应用程序部分。
20.如权利要求19所述的方法,其特征在于,应用程序状态信息被存储以使得在重新 配置后状态得以维护。
全文摘要
本文描述的实施例涉及动态地重新配置正在操作的软件应用程序的至少一部分。在一个实施例中,一种计算机系统接收指示将编辑正在操作的软件应用程序的至少一部分的编辑,其中该编辑包括将被动态地应用于该应用程序的改变。该计算机系统实例化被设计成实现如由接收到的编辑指示的应用程序改变的动态配置构建器,并确定在实现对应用程序的这些改变时挂起该应用程序的哪些部分。计算机系统挂起所确定的应用程序部分直至实现这些应用程序改变,并实现由该编辑指示的对应用程序的挂起部分的改变,而该应用程序的其余部分继续操作。该计算机还用所实现的改变来动态地重新配置该应用程序,其中该重新配置包括重新初始化所挂起的应用程序部分。
文档编号G06F15/00GK102027460SQ200980117836
公开日2011年4月20日 申请日期2009年3月27日 优先权日2008年5月15日
发明者A·S·威廉姆斯, C·D·哈克曼, S·D·肯特, S·贾亚德万, V·N·赫里斯托夫, W·E·艾特肯 申请人:微软公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1