首页 / 专利库 / 专利权 / 申请 / 国际申请 / 请求书 / 声明 / 动态声明性应用程序描述

动态声明性应用程序描述

阅读:109发布:2020-05-14

专利汇可以提供动态声明性应用程序描述专利检索,专利查询,专利分析的服务。并且本文描述的 实施例 涉及动态地重新配置正在操作的 软件 应用程序的至少一部分。在一个实施例中,一种 计算机系统 接收指示将编辑正在操作的软件应用程序的至少一部分的编辑,其中该编辑包括将被动态地应用于该应用程序的改变。该计算机系统实例化被设计成实现如由接收到的编辑指示的应用程序改变的动态配置构建器,并确定在实现对应用程序的这些改变时挂起该应用程序的哪些部分。计算机系统挂起所确定的应用程序部分直至实现这些应用程序改变,并实现由该编辑指示的对应用程序的挂起部分的改变,而该应用程序的其余部分继续操作。该计算机还用所实现的改变来动态地重新配置该应用程序,其中该重新配置包括重新初始化所挂起的应用程序部分。,下面是动态声明性应用程序描述专利的具体信息内容。

1.一种在计算机联网环境中的计算机系统处的用于动态地重新配置正在操作的软件应用程序的至少一部分的方法,所述方法包括:
接收对所述软件应用程序的声明性描述的编辑的动作,所述声明性描述定义与实现所述软件应用程序的功能的多个底层对象绑定的标记语言标签,所述编辑指示将编辑正在操作的软件应用程序的多个底层对象中的至少一个,所述编辑包括将在不挂起所述软件应用程序的多个底层对象的全部的执行的情况下被动态地应用于所述应用程序的至少一个底层对象的改变;
实例化被设计成实现如由接收到的编辑指示的对所述至少一个底层对象的应用程序改变的一个或多个动态配置构建器的动作;
确定在实现对所述应用程序的至少一个底层对象的改变时挂起所述应用程序的所述至少一个底层对象的动作;
挂起所确定的所述应用程序的所述至少一个底层对象直至实现对所述至少一个底层对象的所述应用程序改变的动作;
通过至少修改所述至少一个底层对象的一部分来实现由所述编辑指示的对所述应用程序的挂起的所述至少一个底层对象的改变的动作,其中在对所述至少一个底层对象的修改期间,所述应用程序的多个底层对象的一个或多个其余底层对象继续操作;以及在运行时用所实现的改变来动态地重新配置所述应用程序的动作,其中所述重新配置包括重新初始化所挂起的并且被编辑的所述至少一个底层对象并且执行所述至少一个底层对象。
2.如权利要求1所述的方法,其特征在于,对所述应用程序的编辑包括对所述应用程序内的模型数据的编辑。
3.如权利要求2所述的方法,其特征在于,所述应用程序和所述模型数据两者皆为可编辑数据。
4.如权利要求1所述的方法,其特征在于,所述应用程序包括可用来添加或移除底层对象的扩展点。
5.如权利要求4所述的方法,其特征在于,通过所述扩展点添加的底层对象被动态地重新编译。
6.如权利要求4所述的方法,其特征在于,所述应用程序在通过所述扩展点移除底层对象之后被动态地重新编译。
7.如权利要求4所述的方法,其特征在于,所述扩展点允许所述应用程序的底层对象在运行时编辑所述应用程序的其它底层对象。
8.如权利要求1所述的方法,其特征在于,所挂起的至少一个底层对象包括允许执行所指示的改变的最小底层对象集。
9.如权利要求1所述的方法,其特征在于,所述动态配置构建器监视并标识所述应用程序的应用程序状态改变。
10.如权利要求9所述的方法,其特征在于,还包括存储与所挂起的至少一个底层对象相关联的应用程序状态信息以使得在重新配置后状态得以维护的动作。
11.一种在计算机联网环境中的计算机系统处的用于允许用户通过编辑数据来重新配置应用程序(101)的方法,其中静态软件代码(221A-C)被配置成调用动态软件代码(222A-C)来执行从用户接收到的动态重新配置,所述方法包括:
接收对所述应用程序的声明性描述的修改的动作,所述修改指示将在应用程序(101)正在操作时重新配置所述应用程序的一个或多个部分,所述声明性描述定义与实现所述应用程序的功能的多个底层对象绑定的标记语言标签,所述编辑包括对一个或多个标签或所述一个或多个标签的一个或多个属性的改变;
实例化被配置成实现如由接收到的指示所指示的对一个或多个静态代码片段的应用程序重新配置的一个或多个动态配置构建器(212)的动作;
确定所述静态代码片段(221A-C)将被修改以执行所述重新配置的动作,所述确定基于所述对声明性描述的修改;
至少一个实例化的动态配置构建器(212)访问静态代码以提供将被修改以执行所述重新配置的所述一个或多个静态代码片段(221A-C)的动作;
接收来自所述一个或多个静态代码片段(221A-C)中的至少一个的对动态代码(222A-C)中的至少一部分的调用以基于所述指示来执行所述重新配置的动作;
将所述一个或多个静态代码片段挂起直至实现对所述一个或多个静态代码片段的所述应用程序重新配置的动作;
所述至少一个实例化的动态配置构建器(212)在运行时使用所述动态代码部分(222A-C)来重新配置所述一个或多个被挂起的静态代码片段以根据所述对应用程序的声明性描述的修改来修改所述一个或多个被挂起的静态代码片段(221A-C)的动作;以及重新实例化被挂起的并且被修改的一个或多个静态代码片段以及执行所述一个或多个静态代码片段的动作。
12.如权利要求11所述的方法,其特征在于,所述标签通过映射来绑定到所述底层对象。
13.如权利要求12所述的方法,其特征在于,所述声明性描述被存储在储存库中。
14.如权利要求11所述的方法,其特征在于,调用器反过来将所述应用程序的一个或多个部分展示给所述动态代码,以使得所述动态代码能使用所展示的静态片段来执行所述重新配置。
15.如权利要求11所述的方法,其特征在于,还包括动态代码调用静态应用程序代码来执行所述重新配置。
16.如权利要求11所述的方法,其特征在于,所述动态配置构建器包括可编辑数据,并且其中所述构建器遵循一个或多个静态配置构建器能理解的方案。
17.如权利要求11所述的方法,其特征在于,还包括存储与所编辑的应用程序部分相关联的应用程序状态信息以使得在重新配置后状态得以维护的动作。
18.一种在计算机联网环境中的计算机系统处的用于动态地重新配置正在操作的软件应用程序的至少一部分的装置,所述装置包括:
用于接收对所述软件应用程序的声明性描述的编辑的装置,所述声明性描述定义与实现所述软件应用程序的功能的多个底层对象绑定的标记语言标签,所述编辑指示将编辑正在操作的软件应用程序的多个底层对象中的至少一个,所述编辑包括将在不挂起所述软件应用程序的多个底层对象的全部的执行的情况下被动态地应用于所述应用程序的至少一个底层对象的改变;
用于实例化被设计成实现如由接收到的编辑指示的对所述至少一个底层对象的应用程序改变的一个或多个动态配置构建器的装置;
用于确定在实现对所述应用程序的至少一个底层对象的改变时挂起所述应用程序的所述至少一个底层对象的装置;
用于挂起所确定的所述应用程序的所述至少一个底层对象直至实现对所述至少一个底层对象的所述应用程序改变的装置;
用于通过至少修改所述至少一个底层对象的一部分来实现由所述编辑指示的对所述应用程序的挂起的所述至少一个底层对象的改变的装置,其中在对所述至少一个底层对象的修改期间,所述应用程序的多个底层对象的一个或多个其余底层对象继续操作;以及用于在运行时用所实现的改变来动态地重新配置所述应用程序的装置,其中所述重新配置包括重新初始化所挂起的并且被编辑的所述至少一个底层对象并且执行所述至少一个底层对象。
19.如权利要求18所述的装置,其特征在于,应用程序状态信息被存储以使得在重新配置后状态得以维护。

说明书全文

动态声明性应用程序描述

[0001] 背景
[0002] 计算机已变成在劳动、家、以及移动设备中高度集成。计算机能够快速且高效地处理大量信息。被设计成在计算机系统上运行的软件应用程序允许用户执行包括商业应用程序、学校作业、娱乐和更多功能在内的各种各样的功能。软件应用程序通常被设计成执行特定任务,诸如用于草拟文档的文字处理器应用程序或者用于发送、接收和组织电子邮件的电子邮件程序。
[0003] 软件应用程序通常使用某种类型的高级编程语言来编写。尽管现如今使用许多语言,但大多数语言落入两个类别之一:过程语言和声明性语言。在过程语言中,开发者通常编写被称为函数或例程的一系列语句,它们将按顺序在计算上实现。过程语言可包括ASP、PERL、Python和C等等。这些语言一般需要关于事件处理和状态改变的高级细节。这在用户界面由于各种用户输入而改变的情形中更加显著。
[0004] 声明性语言已通过允许开发者大致指定如何处理某些事件或状态改变而不必为每一个具体情形编写代码来减轻该负担中的某一些。然而,很多时候,声明性语言缺少允许丰富数据驱动应用的声明性规范的动态性。而且,声明性语言通常限制在应用程序的操作期间在不必终止、重新编译并重启该应用程序的情况下能执行的修改的类型。
[0005] 简要概述
[0006] 本文描述的实施例涉及动态地重新配置正在操作的软件应用程序的至少一部分。在一个实施例中,一种计算机系统接收指示将编辑正在操作的软件应用程序的至少一部分的编辑,其中该编辑包括将被动态地应用于该应用程序的改变。该计算机系统实例化被设计成实现如由接收到的编辑指示的应用程序改变的动态配置构建器,并确定在实现对应用程序的这些改变时挂起该应用程序的哪些部分。计算机系统挂起所确定的应用程序部分直至实现这些应用程序改变,并实现由该编辑指示的对应用程序的挂起部分的改变,而该应用程序的其余部分继续操作。该计算机系统还用所实现的改变来动态地重新配置该应用程序,其中该重新配置包括重新初始化所挂起的应用程序部分。
[0007] 在另一实施例中,计算机系统接收将在应用程序正在操作时重新配置该应用程序的一个或多个部分的指示。计算机系统实例化被配置成实现如由接收到的指示指示的应用程序重新配置的动态配置构建器,并确定哪些静态代码片段将被用来执行这些重新配置。配置构建器访问静态代码以提供将用于执行重新配置的那些静态代码片段。计算机系统接收来自静态代码片段中的至少一个的对动态代码中的至少一部分的调用以基于该指示来执行重新配置,并使用该动态代码部分来重新配置应用程序的所指示部分以修改该静态代码片段。
[0008] 提供本概述以便以简化形式介绍将在以下详细描述中进一步描述的一些概念。本概述不旨在标识出所要求保护的主题的关键特征或必要特征,也不旨在用于帮助确定所要求保护的主题的范围。
[0009] 附图简述
[0010] 为了进一步阐明本发明的各实施例的以上和其它优点和特征,将参考附图来呈现本发明的各实施例的更具体的描述。可以理解,这些附图只描绘本发明的典型实施例,因此将不被认为是对其范围的限制。本发明将通过使用附图用附加特征和细节来描述和解释,附图中:
[0011] 图1示出其中本发明的实施例可操作的计算机体系结构,包括动态地重新配置正在操作的软件应用程序的至少一部分。
[0012] 图2示出其中本发明的实施例可操作的计算机体系结构,包括允许用户通过编辑数据来重新配置应用程序,其中静态软件代码被配置成调用动态软件代码来执行从用户接收到的动态重新配置。
[0013] 图3示出用于动态地重新配置正在操作的软件应用程序的至少一部分的示例方法的流程图
[0014] 图4示出允许用户通过编辑数据来重新配置应用程序的示例方法的流程图,其中静态软件代码被配置成调用动态软件代码来执行从用户接收到的动态重新配置。
[0015] 详细描述
[0016] 此处所描述的各实施例涉及动态地重新配置正在操作的软件应用程序的至少一部分。在一个实施例中,计算机系统接收指示将编辑正在操作的软件应用程序的至少一部分的编辑,其中该编辑包括将被动态地应用于该应用程序的改变。计算机系统实例化被设计成实现如由接收到的编辑指示的应用程序改变的动态配置构建器,并确定在实现对应用程序的这些改变时挂起该应用程序的哪些部分。计算机系统挂起所确定的应用程序部分直至实现这些应用程序改变,并实现由该编辑指示的对应用程序的挂起部分的改变,而该应用程序的其余部分继续操作。计算机还用所实现的改变来动态地重新配置该应用程序,其中该重新配置包括重新初始化所挂起的应用程序部分。
[0017] 在另一实施例中,计算机系统接收将在应用程序正在操作时重新配置该应用程序的一个或多个部分的指示。计算机系统实例化被配置成实现如接收到的指示所指示的应用程序重新配置的动态配置构建器,并确定哪些静态代码片段将被用来执行这些重新配置。配置构建器访问静态代码以提供将用于执行重新配置的那些静态代码片段。计算机系统接收来自静态代码片段中的至少一个的对动态代码中的至少一部分的调用以基于该指示执行重新配置,并使用该动态代码部分来重新配置应用程序的所指示部分以修改该静态代码片段。
[0018] 本发明的各实施例可以包括或利用含有计算机硬件的专用或通用计算机,这将在以下做出进一步讨论。本发明范围内的各实施例还包括用于承载或存储计算机可执行指令和/或数据结构的物理和其他计算机可读介质。这样的计算机可读介质可以是可由通用或专用计算机系统访问的任何可用介质。存储计算机可执行指令的计算机可读介质是物理存储介质。承载计算机可执行指令的计算机可读介质是传输介质。由此,作为示例而非限制,本发明的各实施例可包括至少两种完全不同种类的计算机可读介质:物理存储介质和传输介质。
[0019] 物理存储介质包括RAM、ROM、EEPROM、CD-ROM或其他光盘存储、磁盘存储或其他磁存储设备、或可用于存储计算机可执行指令或数据结构形式的所需程序代码装置且可由通用或专用计算机访问的任何其他介质。
[0020] “网络”被定义为允许在计算机系统和/或模和/或其他电子设备之间传输电子数据的一个或多个数据链路。当信息通过网络或另一通信连接(硬连线、无线、或硬连线或无线的组合)传输或提供给计算机时,该计算机将该连接适当地视为传输介质。传输介质可包括可用于承载或传输计算机可执行指令或数据结构形式的所需程序代码装置并可由通用或专用计算机访问的网络和/或数据链路。上述的组合也应被包括在计算机可读介质的范围内。
[0021] 然而,应当理解,在到达各种计算机系统组件之后,计算机可执行指令或数据结构形式的程序代码装置可从传输介质自动转移到物理存储介质。例如,通过网络或数据链路接收到的计算机可执行指令或数据结构可被缓存在网络接口卡内的RAM中,然后最终被传送到计算机系统RAM和/或计算机系统处的较不易失的物理存储介质。由此,应当理解,物理存储介质可被包括在同样(或甚至主要)利用传输介质的计算机系统组件中。
[0022] 计算机可执行指令包括,例如使通用计算机、专用计算机、或专用处理设备执行某一功能或某组功能的指令和数据。计算机可执行指令可以是例如二进制代码、诸如汇编语言等中间格式指令、或甚至源代码。尽管用结构特征和/或方法动作专用的语言描述了本主题,但可以理解的是,所附权利要求书中定义的主题不必限于上述特征或动作。相反,上述特征和动作是作为实现权利要求的示例形式而公开的。
[0023] 本领域的技术人员将理解,本发明可以在具有许多类型的计算机系统配置的网络计算环境中实践,这些计算机系统配置包括个人计算机、台式计算机、膝上型计算机、消息处理器、手持式设备、多处理器系统、基于微处理器的或可编程消费电子设备、网络PC、小型计算机、大型计算机、移动电话、PDA、寻呼机、路由器、交换机等等。本发明也可以在其中通过网络链接(或者通过硬连线数据链路、无线数据链路,或者通过硬连线和无线数据链路的组合)的本地和远程计算机系统两者都执行任务的分布式系统环境中实践。在分布式系统环境中,程序模块可以位于本地和远程存储器存储设备中。
[0024] 图1示出了可在其中采用本发明的原理的计算机体系结构100。在一些实施例中,图1的元件可在计算机系统中实现或以其他方式作为计算机系统的一部分。用户界面125可以是任何类型的文本、图形或其他类型的用户界面。用户界面(UI)125可被配置成显示软件应用程序101的各部分。另外地或另选地,UI 125可显示用户对象126。用户对象可包括按钮、窗口、链接、图形、图标或其他图形对象。在一些情形中,用户对象可充当由软件应用程序101提供的底层功能的标记或指示符。
[0025] 应用程序101可以是出于任何目的而设计的任何类型的软件应用程序。应用程序可包括多个组件或仅单个组件。在一些情形中,应用程序101可在运行时生成、编译或缝合在一起。引擎110可被配置成在运行时执行该生成、编译或缝合在一起中的全部或部分。这些功能也可由引擎110在运行时之前的某个其他时间执行。引擎110可被配置成接收应用程序描述部分115。在一些实施例中,应用程序描述部分115可包括可用于创建工作软件应用程序的各种软件对象。这些软件对象可用一个或多个标签来标记,该标签声明性地指示如何单独地以及结合其他软件对象来使用这些软件对象。这些软件对象可构成软件应用程序功能的各部分的基础并且可由引擎110声明性地缝合在一起,如以上所指示的。
[0026] 引擎110还可被配置成接收框架对象118。框架对象可包括用户对象126中的任一个以及在生成软件应用程序时使用的其他面向应用程序的框架部分。这可包括库、绑定或其他对象。引擎110可包括参数绑定管理器109。参数绑定管理器109可被配置成访问包括软件对象和标签的应用程序描述部分115。管理器109可使用映象来将由标签标识的应用程序描述的各部分映射到各个软件对象。如本文所使用的,映象包括访问与软件对象相关联的属性,这在一些情形中涉及查看与软件对象相关联的元数据。参数绑定管理器109可被配置成基于与软件对象相关联的软件对象属性中所包括的不同的声明性规则,来将软件对象的属性绑定到应用程序描述的各部分(例如,115)。在一些情形中,软件对象属性可被绑定到数据项。应用程序描述115可包括可绑定到属性的此类数据项。另外地或另选地,软件对象属性可被绑定到应用程序描述中不包括的数据项。
[0027] 引擎110还可被配置成访问数据105并生成组合对象111。数据105可以是引擎110可用来生成软件应用程序101的任何类型的信息。此外,数据105可由应用程序101在正在进行的基础上访问。因此,当用户与应用程序101交互时,数据可被流传送或以其他方式发送到应用程序101和引擎110中的任一个或两者。组合对象111指示由引擎110缝合在一起或以其他方式组合的一个或多个软件对象。在一些情形中,组合对象111可构成软件应用程序101的基础或者它们本身可构成应用程序101。
[0028] 软件应用程序101可由于时间流逝或者由于来自用户或其他应用程序的交互而被持续更新和更改。例如,可发生指示软件应用程序101将被修改的某一动作(例如,动作106)。在一些情形中,该动作可以是数据改变。此类数据改变可向引擎110指示数据改变将被转换成对软件应用程序的改变。数据连接器107可被用来标识哪些数据将被修改并且可被配置成与数据105通信以检索已更新的信息。变换108可被用于变换、重新格式化或以其他方式修改检索到的数据,然后将这些数据传递给参数绑定管理器109。尽管被示为引擎110的一部分,但是参数绑定管理器109也可扮演作为应用程序101的一部分的组成色,包括重新映射各个标签以及将软件对象属性绑定到应用程序描述115的各部分。参数绑定管理器109还可被配置成直接与用户界面125交互,向UI 125提供将向计算机用户显示的已更新的信息。
[0029] 如图1中进一步指示的,引擎110可以是XAD引擎。XAD是可扩展标记语言(XML)应用程序框架(XAF)应用程序定义(XAD)语言的缩写,其是声明性或描述性语言。在一些情形中,XAD可被用于基于XAF平台来创作XAF应用程序(例如,应用程序101)。在一些情形中,XAD可指示如何基于用户可配置构造信息和/或应用程序描述部分115来创建运行时对象图。XAD引擎(例如,引擎110)可结合参数绑定管理器109来处理或执行应用程序描述以创建查看和/或处理数据的对象。因此,XAD可以在应用程序框架内用来提供陈述框架内的动作或其他事件的标准且简单的手段。
[0030] 在一些情形中,使用XAD,开发者能够避免为进行数据处理的对象编写实际代码。例如,开发者可能只需要编写声明性应用程序的最终被编译和执行的文件。此外,XAD提供渐进抽象等级以辅助设计、强类型化、高度静态检查以及高度可扩展性。XAD还允许操纵异类数据。尽管XAF和XAD在本文中提及并且可被纳入一个或多个实施例,但是本领域技术人员应理解,由XAD和XAF中任一个或两者提供的功能可另外地或另选地由其他软件应用程序、计算机系统或功能提供实体来提供。
[0031] 如本文所使用的,XAF是用于生成给定软件应用程序的运行时结构以及用于管理该软件应用程序的执行的软件应用程序框架。应用程序101可由包括连接的应用程序组件的集合或图的应用程序框架来生成。通过将应用程序组件组动态地配置到组件域中来启用根据应用程序框架来配置的应用程序的功能,其中每一个域被配置成启用该应用程序的给定功能,例如在文字处理文档中显示图片。
[0032] 为了生成应用程序的运行时结构,应用程序可将每一个应用程序功能片段的应用程序描述传递给应用程序描述引擎。应用程序描述提供用于构造和构成组件域的声明性规则,并且应用程序描述引擎可用于基于应用程序接收到的数据事件来按需解释用于创建和重新配置组件域的声明性规则。如本文中所使用的,数据事件可以是任何类型的软件消息、用户输入、或已发生可能影响软件应用程序的某事的其他指示。数据事件可以例如在用户点击鼠标以与应用程序交互时、或者在应用程序的处理期间呈现错误消息时发生。
[0033] 在一些情形中,XAF可被配置成跟踪依赖性,以使得数据评估和对象图构造可以在数据改变时增量式地更新。例如,XAF可跟踪数据105中的依赖性以使得软件应用程序101可以在更新数据105时增量式地更新。在一些实施例中,该增量式更新由XAF自动执行。
[0034] 在一些实施例中,引擎110可调用与应用程序101的入口点中的至少一个相关联的配置构建器112。这导致创建一个或多个对象,以及可能注册一些对象以进行初始化。可执行这些初始化,这可导致调用更多配置构建器,从而可导致创建更多对象以及或许注册更多对象以进行初始化。在一些情形中,只要存在已注册进行初始化的对象,引擎110就将继续初始化它们。引擎110随后可循环以继续该过程。
[0035] 如图1中进一步所示的,引擎110可被配置成接收编辑114。编辑114可包括正在操作的软件应用程序的至少一部分将被编辑的指示。例如,当软件应用程序101正在计算机系统上运行时,计算机用户可能希望编辑该应用程序的一个或多个部分。这些部分可包括用户对象126或应用程序101的任何其他部分。在一些情形中,一个或多个配置构建器112可被引擎110实例化以实现如编辑114所指示的应用程序改变。
[0036] 在一些情形中,在进行编辑时临时挂起或关闭应用程序101的各部分可以是有利的。引擎110可被配置成确定在实现对应用程序的改变时挂起应用程序101的哪些部分。挂起模块113可被配置成挂起确定对其的挂起是有益或必要的那些应用程序部分。引擎
110可实现编辑114中所指示的对应用程序的挂起部分的改变。在一些实施例中,在实现改变时,可以挂起整个应用程序。或者,在一些实施例中,在实现改变时,可挂起应用程序的仅仅一部分。在此类情形中,在正在执行编辑时,应用程序的其余部分可继续运行。对应用程序的编辑(例如,编辑120)可被传递到应用程序描述部分115、用户界面125和软件应用程序101中的任一个。这些和其他概念将在以下分别参考图3的方法300和图4的方法400并鉴于图2的体系结构200来更详细地解释。
[0037] 图2示出了可在其中采用本发明的原理的计算机体系结构200。图3示出用于动态地重新配置正在操作的软件应用程序的至少一部分的方法300的流程图。现在将频繁参照图1和图2的环境100和200的组件和数据来描述方法300。
[0038] 方法300包括接收指示将编辑正在操作的软件应用程序的至少一部分的编辑的动作,该编辑包括将被动态地应用于该应用程序的改变(动作310)。例如,引擎110可接收指示将编辑正在操作的软件应用程序101的至少一部分的编辑114,其中该编辑包括将被动态地应用于该应用程序101的改变。在一些情形中,对应用程序的编辑包括对该应用程序内的模型数据的编辑。例如,应用程序101可被配置成编辑(或者可能当前正在编辑)与模型相对应的数据。在这些情形中,应用程序和模型数据两者都是可编辑数据,并且可以如编辑114中所指示地那样编辑。在模型包括各种数据类型的情况下,用户能够编辑该模型中的数据类型的全部或仅仅一部分。在一些情形中,编辑特定类型的数据的能力可对应于用户的系统访问权限。
[0039] 如以上所指示的,应用程序101可包括可用于添加或移除代码部分的一个或多个扩展点。这些代码部分可包括静态代码对象116、动态代码对象117和/或框架对象118。如本文中所使用的,静态代码对象可包括不可改变的(或者在不关闭相应的软件应用程序并重新编译该应用程序的情况下是不可改变的)任何软件代码部分。如本文中所使用的,动态代码对象是指可改变并且可在相应的软件应用程序正在运行时修改的软件代码部分。在一些情形中,在应用程序正在运行时,代码部分可通过应用程序的扩展点中的一个或多个来添加并被动态地重新编译。类似地,代码部分可通过扩展点来移除并且该应用程序(或其一部分)可被动态地重新编译。在一些情形中,应用程序101能够使用应用程序的扩展点来编辑其自己的代码的部分。
[0040] 方法300包括实例化被设计成实现如由接收到的编辑指示的应用程序改变的一个或多个动态配置构建器的动作(动作320)。例如,引擎110可实例化被设计成实现编辑114中所指示的应用程序改变的动态配置构建器112。在一些情形中,配置构建器112可被配置成监视和标识应用程序101的应用程序状态的改变。这些状态改变及相关状态信息可被存储在本地或远程数据存储中。保存状态改变允许在维持状态的同时重新配置应用程序。该概念将在下文更详细地解释。
[0041] 方法300包括确定在实现对应用程序的改变时挂起应用程序的哪些部分的动作(动作330)。例如,引擎110可确定在实现编辑114中所指示的对应用程序的改变时挂起应用程序101的哪些部分。例如,如图2中描绘的,应用程序220A可包括静态部分221A、221B和221C,以及动态部分222A。引擎210可确定编辑114指示将对静态部分221B作出改变。基于该确定,引擎110可确定在实现对应用程序220A的改变时挂起部分221B。在确定挂起哪些代码部分时,应注意确保挂起允许执行所指示的改变的最小应用程序部分集。换言之,每一个接收到的编辑可通过挂起应用程序220A的特定部分来实现。因此,对于每一个接收到的编辑,重要的是确定为实现这些改变而挂起的最小代码部分集。然而,还应注意,如由引擎110确定的,可挂起应用程序的任一部分或所有部分。
[0042] 方法300包括挂起所确定的应用程序部分直至实现应用程序改变的动作(动作340)。例如,挂起模块213可挂起静态部分221B直至实现对应用程序220A的改变。因此,当静态部分221B被挂起时,如在应用程序220B中所描绘的,仅静态部分221A和221C以及动态代码部分222B仍在运行。静态部分221B可被发送给配置构建器212以进行修改。
[0043] 方法300包括实现该编辑所指示的对应用程序的挂起部分的改变的动作,其中该应用程序的其余部分继续操作(动作350)。例如,配置构建器212可实现编辑114中指示的对代码部分221B的改变,而应用程序220A的其余部分(例如,应用程序220B)继续运行。这些编辑可能是细微的或广泛的,并且因此可增加或减少修改所花费的时间。引擎210可包括状态监视模块214,其可监视和访问静态代码部分221B当在应用程序220A中被访问时的当前状态配置。状态监视模块214可被配置成存储静态部分221B和/或整个应用程序220A中的当前状态设置。配置构建器212可被配置成访问所存储的状态信息并确保所有当前状态配置在被修改后被传递到经修改的静态部分221BM。这确保了在重新配置之后状态得以维护。
[0044] 方法300包括用所实现的改变来动态地重新配置应用程序的动作,其中该重新配置包括重新初始化所挂起的应用程序部分(动作360)。例如,引擎210可用由配置构建器212实现的改变来动态地重新配置应用程序220B。该重新配置包括在应用程序220C中重新初始化所挂起的静态部分221B(现在是经修改的部分221BM)。因此,重新配置的应用程序220C包括原始静态部分221A和221C、以及经修改的静态部分221BM和动态部分222C。
在一些情形中,应用程序220C在运行时用所实现的改变来动态地重新配置。
[0045] 图4示出允许用户通过编辑数据来重新配置应用程序的方法400的流程图,其中静态软件代码被配置成调用动态软件代码来执行从用户接收到的动态重新配置。现在将频繁参照图2的环境200的组件和数据来描述方法400。
[0046] 方法400包括接收将在应用程序正在操作时重新配置该应用程序的一个或多个部分的指示的动作(动作410)。例如,引擎110可接收将在应用程序101继续操作时重新配置应用程序101的一个或多个部分的编辑114。编辑114可从计算机用户、从软件应用程序、或从其他计算机系统接收到。这些编辑可包括对应用程序101的任何类型的修改,包括设置改变、代码改变、或任何其他类型的改变。
[0047] 方法400包括实例化被配置成实现如接收到的指示所指示的应用程序重新配置的一个或多个动态配置构建器的动作(动作420)。例如,引擎110可实例化动态配置构建器112以实现如由编辑114所指示的应用程序重新配置。构建器112可被引擎110用来基于接收到的编辑来确定将对应用程序101作出什么改变。这些改变可能影响一个或多个代码部分,如应用程序220A中示出的,包括静态代码部分221A、221B和221C、以及动态代码部分222A。
[0048] 方法400包括确定哪些静态代码片段将被用来执行重新配置的动作(动作430)。例如,引擎110可确定静态代码部分221B将被用于执行重新配置。在一些情形中,应用程序声明(例如,应用程序描述115)可描述哪些静态代码部分对应于接收到的编辑114中的编辑。此类应用程序声明可被本地地或远程地存储在储存库中。尽管应用程序220A中仅示出三个静态代码部分并且尽管仅一个静态代码部分被示为被挂起和修改,但是应理解,应用程序220A可包括任何数量的静态和/或动态代码部分。此外,任何数量的代码部分可被引擎210挂起和/或修改。
[0049] 方法400包括至少一个实例化的动态配置构建器访问静态代码以提供将被用于执行重新配置的那些静态代码片段的动作(动作440)。例如,动态配置构建器212可访问静态代码部分221A、221B和/或221C以提供将被用于执行重新配置的那些静态片段(即,221B)。因此,例如,如果用户在编辑114中请求修改关于何时使用红色(与默认的蓝色相对)来显示UI按钮的规则,则引擎210可确定静态代码部分212B包含与所指示改变相对应的代码。
[0050] 在此类情形中,本文中被称为动态调用器的软件机制可反过来将应用程序220A的部分展示给动态代码部分222A,以使得该动态代码可使用所展示的静态片段来执行重新配置。动态调用器可指向从储存库读入代码(例如,对象116和/或117)并编译该代码的各个运行时片段。在一些情形中,应用程序负责定义动态调用器可用来添加或移除代码的扩展点。应用程序可以是静态的已编译代码,但可声明允许编辑应用程序本身的扩展点。动态调用器可基于由应用程序提供的输入来构建应用程序的至少一部分。因此,动态代码部分222A可使用静态代码部分221A、221B和/或221C来执行重新配置。在一些实施例中,动态配置构建器212可包括可编辑数据。在这些情形中,构建器212可遵循各种静态配置构建器能理解的方案。
[0051] 方法400包括接收来自静态代码片段中的至少一个的对动态代码中的至少一部分的调用以基于该指示来执行重新配置的动作(动作450)。例如,引擎210可接收来自静态部分221B的对动态代码部分222A的调用以基于该指示来执行重新配置。应注意,虽然静态代码部分可调用动态部分来执行重新配置,但动态代码也可调用静态应用程序代码来执行编辑。此外,代码调用迭代和汇编也是可能的。因此,引擎210可允许各个代码部分彼此调用以完成各种目标,包括执行应用程序重新配置。
[0052] 方法400包括至少一个实例化的动态配置构建器使用动态代码部分来重新配置应用程序的所指示部分以修改静态代码片段的动作(动作460)。例如,配置构建器212可使用动态代码部分222A来重新配置静态代码部分221B以修改静态代码部分221B。在重新配置之前或期间,应用程序状态可由状态监视模块214监视并存储。因此,在重新配置后(例如,经重新配置的应用程序220C),任何状态设置或其他状态信息在重新配置中维护和更新。
[0053] 在一个实施例中,引擎110可接收指示将编辑正在操作的软件应用程序(例如,101)的至少一部分的编辑(例如,114)。该编辑可包括将动态地应用于应用程序101的改变。引擎110可实例化被设计成实现如由接收到的编辑(例如,114)指示的应用程序改变的动态配置构建器(例如,112)。引擎110可确定将被挂起以允许实现所指示的改变的最小应用程序部分集(例如,111)。挂起模块113/213可挂起所确定的应用程序部分直至实现应用程序改变。
[0054] 继续该实施例,至少一个实例化的动态配置构建器可访问静态代码(例如,116)以提供将被用于执行编辑的那些静态代码片段。引擎110可接收来自静态代码片段中的至少一个的对动态代码(例如,117)中的至少一部分的调用以基于该指示来执行编辑,而应用程序(例如,101)的其余部分继续操作。引擎110可使用动态代码部分来用所实现的改变动态地重新配置应用程序以修改静态代码片段。该重新配置还包括重新初始化应用程序中被挂起的那些部分。以此方式,应用程序可在运行中更新和重新配置,且该应用程序的仅最小部分被临时挂起以实施所请求的改变。
[0055] 本发明可被具体化为其他具体形式而不背离其精神或本质特征。所描述的实施例在所有方面都应被认为仅是说明性而非限制性的。从而,本发明的范围由所附权利要求书而非前述描述指示。落入权利要求书的等效方案的含义和范围内的所有改变应被权利要求书的范围所涵盖。
高效检索全球专利

专利汇是专利免费检索,专利查询,专利分析-国家发明专利查询检索分析平台,是提供专利分析,专利查询,专利检索等数据服务功能的知识产权数据服务商。

我们的产品包含105个国家的1.26亿组数据,免费查、免费专利分析。

申请试用

分析报告

专利汇分析报告产品可以对行业情报数据进行梳理分析,涉及维度包括行业专利基本状况分析、地域分析、技术分析、发明人分析、申请人分析、专利权人分析、失效分析、核心专利分析、法律分析、研发重点分析、企业专利处境分析、技术处境分析、专利寿命分析、企业定位分析、引证分析等超过60个分析角度,系统通过AI智能系统对图表进行解读,只需1分钟,一键生成行业专利分析报告。

申请试用

QQ群二维码
意见反馈