Ui表现和业务逻辑分离方法和系统的制作方法

文档序号:6604177阅读:228来源:国知局
专利名称:Ui表现和业务逻辑分离方法和系统的制作方法
技术领域
本发明大体上涉及软件开发领域,更具体地,涉及一种UI表现和业务逻辑分离方 法和系统,其可应用于软件开发活动中实现用户界面设计和程序代码的设计分离和并行开 展,同时还适用于在软件系统中支持动态用户界面和动态业务逻辑的应用场景。
背景技术
在网络和软件技术持续发展的情况下,用户期待更丰富的交互体验,从而 催生了各种旨在增强用户体验、提高开发效率的开发技术,如ASP. Net、WPF(Windows Presentation Foundation, Windows 表现基础)、Silverlight (银光)等。这些技术在用 户界面(Userlnterface,以下简称为UI)实现方面有以下共同的特性使用可扩展标记语言(Xml Extensible Markup Language)描述UI元数据;用户界面通过绑定机制获取和更新业务数据;通过事件机制响应用户的操作;使用代码隐藏方法使UI设计更倾向于关注用户体验,而不用过多关注与程序代 码的交互;以及UI元数据和程序代码在编译时进行关联,UI模块和代码模块一般需要确定明确 的对应关系。可见,虽然以上技术在一定程度上实现了用户界面和业务逻辑的分离,提高了开 发效率和用户体验,但仍依赖于代码隐藏实现的分离方式,因而在设计和运行期间,UI模块 和业务逻辑代码模块仍存在部分耦合关系。其中,代码隐藏是指在UI元数据中以声明的方式标注相应的逻辑处理模块,指定 响应用户界面的代码单元,从而实现描述界面的UI元数据和处理逻辑的代码文件在设计 时相对独立。在运行期间,UI元数据和逻辑代码会被加载为同一个对象,如ASP. Net的页 面对象或WPF的窗体对象,这个单独的对象既是UI对象,也是逻辑处理对象。在通常情况下,软件的某个功能模块包括该业务数据、逻辑操作,以及用户界面 (UI)。其中,业务数据是功能模块要处理或生成的数据对象,逻辑操作是对业务数据的处理 过程和方法,用户界面向用户呈现业务数据,并负责把用户的操作映射为逻辑操作,并把操 作的结果反馈给用户。现有技术一般通过数据绑定、事件机制处理用户界面与业务数据和业务逻辑处理 模块间的交互。具体如图1所示。其中,数据绑定为应用程序呈现和操作业务数据提供了一种简单的途径。通过在 UI对象和数据对象间建立双向通知和更新的关联通道,使得绑定一方的更改可以被直接反 映到绑定的另一方而不需要业务逻辑代码的参与。另外,事件机制是UI对象针对用户操作产生响应通知的消息机制。当用户在程序 界面中执行特定的命令,比如点击按钮或菜单时,对应的按钮或菜单发出事件消息,业务逻 辑模块通过处理事件消息,从而对用户操作指令做出相应的业务逻辑操作。
因此,根据现有技术的特性,程序模块设计和运行期间表现为如图2所示的形式。也就是说,在设计时,通过代码隐藏关联界面元数据和代码文件,而在运行时,UI 对象和业务逻辑对象被包装在同一个程序对象中,这个程序对象既包含用户界面呈现,又 包含业务逻辑处理,同时负责这两个单元的交互。不论是在设计时还是在运行时,UI和业 务逻辑都没有完全解除耦合关系,也使设计时并行开发、运行时动态切换UI或逻辑等需求 难以实现。可见,由于上述这种耦合关系的限制,在实际应用中,尤其是某些特定应用场景 中,现有技术至少存在以下不足一、UI设计和逻辑编程的并行开展存在限制。因为UI元素依赖代码隐藏实现与 逻辑代码的交互,同时逻辑代码不能完全避免对UI元素的访问,编写业务逻辑代码前,往 往需要UI设计先生成代码框架,再填充逻辑代码;而UI设计的更改,通常也需要同步修改 代码文件。二、在各个企业的管理软件中,经常会有根据不同用户切换界面视图,或者相同的 功能模块在不同的行业特性下执行不同的业务逻辑的需求。因此,在现有技术中,UI模块和代码模块通常存在一一对应关系,使得动态切换界 面视图和动态更改业务处理逻辑难以实现。

发明内容
鉴于上述情况,本发明旨在提供一种UI表现和业务逻辑分离方法和系统,从而解 除用户界面和逻辑代码之间的强制依赖关系,以在设计期间,用户界面设计和业务逻辑编 程可作为完全独立的两项工作并行开展,而在软件运行时,UI对象和业务逻辑处理对象相 互独立,支持动态切换UI视图和更改逻辑处理单元。根据本发明的一个方面,UI表现和业务逻辑分离方法包括以下步骤步骤一,通 过数据绑定使UI对象与业务数据对象相互关联,从而实现UI对象与业务数据对象在数据 层面的分离;步骤二,通过状态绑定使UI对象的状态与业务数据对象的状态相关联,从而 实现UI对象与业务数据对象在状态控制层面的分离;步骤三,通过行为绑定使UI对象的行 为与业务数据对象的行为相关联,从而实现UI对象与业务数据对象在行为层面的分离;以 及步骤四,通过逻辑模型绑定来统一管理数据绑定、状态绑定和行为绑定,从而实现UI模 块与业务数据对象之间的动态、间接的关联。在步骤一中,使用数据绑定,在UI对象与业务数据对象之间建立双向通知和更新 的关联通道,从而UI对象与业务数据对象中的任一方发生更改都通过数据绑定而被反映 到另一方,而无需业务逻辑代码的参与。可选地,在步骤一中,UI对象的UI元数据在初始布局过程中被指定绑定源和绑定 路径,在UI元数据被加载并创建为UI对象时,根据绑定源和绑定路径来自动获取UI元数 据,并且在UI对象与业务数据对象中的任一方发生更改时,同步更新UI元数据的绑定源。在步骤二中,在UI对象与业务数据对象之间经由状态管理器来建立关联,并且当 业务数据对象的状态改变时,业务数据对象可控地同步修改状态管理器的状态值,并通过 状态绑定自动刷新UI对象的状态。在步骤三中,在设计时,脚本化描述UI对象与业务数据对象的行为而无需为UI对象的事件指定行为逻辑代码,从而使UI对象与业务数据对象在设计过程中不存在相互依 赖。而在运行时,所述业务数据对象与所述UI对象的事件以及用户的响应无关,而仅与对 所述业务数据对象的业务数据的逻辑操作相关。 此外,在步骤四中,通过逻辑模型为UI对象指定数据绑定、状态绑定和行为绑定 的提供者,并且通过逻辑模型绑定在UI对象与业务数据对象之间建立通道,为数据绑定、 状态绑定和行为绑定提供支持。根据本发明的另一个方面,UI表现和业务逻辑分离系统包括数据绑定单元,用 于使UI对象与业务数据对象相互关联,从而实现UI对象与业务数据对象在数据层面的分 离;状态绑定单元,用于使UI对象的状态与业务数据对象的状态相关联,从而实现UI对象 与业务数据对象在状态控制层面的分离;行为绑定单元,用于使UI对象的行为与业务数据 对象的行为相关联,从而实现UI对象与业务数据对象在行为层面的分离;以及逻辑模型绑 定单元,用于统一管理数据绑定、状态绑定和行为绑定,从而实现UI模块与业务数据对象 之间的动态、间接的关联。其中,在数据绑定单元中,在UI对象与业务数据对象之间建立双向通知和更新的 关联通道,从而UI对象与业务数据对象中的任一方发生更改都通过数据绑定而被反映到 另一方,而无需业务逻辑代码的参与。此外,在数据绑定单元中,UI对象的UI元数据在初始布局过程中被指定绑定源和 绑定路径,在UI元数据被加载并创建为UI对象时,根据绑定源和绑定路径来自动获取UI 元数据,并且在UI对象与业务数据对象中的任一方发生更改时,同步更新UI元数据的绑定 源。在状态绑定单元中,在UI对象与业务数据对象之间经由状态管理器来建立关联, 并且当业务数据对象的状态改变时,业务数据对象可控地同步修改状态管理器的状态值, 并通过状态绑定自动刷新UI对象的状态。而在行为绑定单元中,在设计时,脚本化描述UI对象与业务数据对象的行为而无 需为UI对象的事件指定行为逻辑代码,从而使UI对象与业务数据对象在设计过程中不存 在相互依赖。而在运行时,所述业务数据对象与所述UI对象的事件以及用户的响应无关, 而仅与对所述业务数据对象的业务数据的逻辑操作相关。在逻辑模型绑定单元中,通过逻辑模型为UI对象指定提供数据绑定、状态绑定和 行为绑定的提供者,并且在UI对象与业务数据对象之间建立通道,为数据绑定、状态绑定 和行为绑定提供支持。因此,本发明通过实现数据绑定、行为绑定、状态绑定、逻辑模型绑定等机制,结合 现有的用可扩展标记语言描述UI界面、事件机制等开发技术,最终实现UI单元和业务逻辑 单元的相互独立并可以动态组合。


图1是现有技术的UI界面与业务数据和业务逻辑处理模块之间的交互关系的示 意图;图2是现有技术的程序模块设计和运行期间的表现形式的示意图;图3是根据本发明的UI表现和业务逻辑分离方法的流程图4是根据本发明的UI表现和业务逻辑分离系统的框图;图5是根据本发明实施例的通过数据绑定、状态绑定、行为绑定和逻辑模型绑定 实现的界面与业务逻辑彻底分离方法的示意图;图6是根据本发明实施例的订单操作模块在应用程序中的界面对象与业务数据 对象之间的关系的示意图;图7是根据本发明实施例的状态管理器的层次结构的示意图;图8是根据本发明实施例的状态绑定处理的原理示意图;图9是由于采用事件处理而使得UI与业务逻辑难以分离的示意图;图10是根据本发明实施例的由于使用行为绑定而使UI与业务逻辑没有了直接依 赖关系的示意图;图11是根据本发明实施例的逻辑模型绑定在设计时和运行时的内部处理方式的 示意图。
具体实施例方式以下将结合附图详细描述本发明的实施例。本发明描述的分离用户界面和业务逻辑的方案,通过实现数据绑定、行为绑定、状 态绑定、逻辑模型绑定等机制,结合现有的用可扩展标记语言描述UI界面、事件机制等开 发技术,最终实现一个UI单元和业务逻辑单元相互独立并可以动态组合的系统。图3是根据本发明的UI表现和业务逻辑分离方法的流程图。如图3所示,该方法 包括以下步骤步骤S302,通过数据绑定使UI对象与业务数据对象相互关联,从而实现UI对象与 业务数据对象在数据层面的分离;步骤S304,通过状态绑定使UI对象的状态与业务数据对象的状态相关联,从而实 现UI对象与业务数据对象在状态控制层面的分离;步骤S306,通过行为绑定使UI对象的行为与业务数据对象的行为相关联,从而实 现UI对象与业务数据对象在行为层面的分离;以及步骤S308,通过逻辑模型绑定来统一管理数据绑定、状态绑定和行为绑定,从而实 现UI模块与业务数据对象之间的动态、间接的关联。在步骤S302中,使用数据绑定,在UI对象与业务数据对象之间建立双向通知和更 新的关联通道,从而UI对象与业务数据对象中的任一方发生更改都通过数据绑定而被反 映到另一方,而无需业务逻辑代码的参与。可选地,在步骤S302中,UI对象的UI元数据在初始布局过程中被指定绑定源和 绑定路径,在UI元数据被加载并创建为UI对象时,根据绑定源和绑定路径来自动获取UI 元数据,并且在UI对象与业务数据对象中的任一方发生更改时,同步更新UI元数据的绑定 源。在步骤S304中,在UI对象与业务数据对象之间经由状态管理器来建立关联,并且 当业务数据对象的状态改变时,业务数据对象可控地同步修改状态管理器的状态值,并通 过状态绑定自动刷新UI对象的状态。在步骤S306中,在设计时,脚本化描述UI对象与业务数据对象的行为而无需为UI对象的事件指定行为逻辑代码,从而使UI对象与业务数据对象在设计过程中不存在相互 依赖。而在运行时,所述业务数据对象与所述UI对象的事件以及用户的响应无关,而仅与 对所述业务数据对象的业务数据的逻辑操作相关。此外,在步骤S308中,通过逻辑模型为UI对象指定数据绑定、状态绑定和行为绑 定的提供者,并且通过逻辑模型绑定在UI对象与业务数据对象之间建立通道,为数据绑 定、状态绑定和行为绑定提供支持。图4是根据本发明的UI表现和业务逻辑分离系统400的框图。如图4所示,该系统包括数据绑定单元402,用于使UI对象与业务数据对象相互关联,从而实现UI对象与 业务数据对象在数据层面的分离;状态绑定单元404,用于使UI对象的状态与业务数据对 象的状态相关联,从而实现UI对象与业务数据对象在状态控制层面的分离;行为绑定单元 406,用于使UI对象的行为与业务数据对象的行为相关联,从而实现UI对象与业务数据对 象在行为层面的分离;以及逻辑模型绑定单元408,用于统一管理数据绑定、状态绑定和行 为绑定,从而实现UI模块与业务数据对象之间的动态、间接的关联。其中,在数据绑定单元402中,在UI对象与业务数据对象之间建立双向通知和更 新的关联通道,从而UI对象与业务数据对象中的任一方发生更改都通过数据绑定而被反 映到另一方,而无需业务逻辑代码的参与。此外,在数据绑定单元402中,UI对象的UI元数据在初始布局过程中被指定绑定 源和绑定路径,在UI元数据被加载并创建为UI对象时,根据绑定源和绑定路径来自动获取 UI元数据,并且在UI对象与业务数据对象中的任一方发生更改时,同步更新UI元数据的绑 定源。在状态绑定单元404中,在UI对象与业务数据对象之间经由状态管理器来建立关 联,并且当业务数据对象的状态改变时,业务数据对象可控地同步修改状态管理器的状态 值,并通过状态绑定自动刷新UI对象的状态。而在行为绑定单元406中,在设计时,脚本化描述UI对象与业务数据对象的行为 而无需为UI对象的事件指定行为逻辑代码,从而使UI对象与业务数据对象在设计过程中 不存在相互依赖。而在运行时,所述业务数据对象与所述UI对象的事件以及用户的响应无 关,而仅与对所述业务数据对象的业务数据的逻辑操作相关。在逻辑模型绑定单元408中,通过逻辑模型为UI对象指定数据绑定、状态绑定和 行为绑定的提供者,并且在UI对象与业务数据对象之间建立通道,为数据绑定、状态绑定 和行为绑定提供支持。如上所述,为实现界面和业务逻辑更彻底的分离,本发明提出了一种通过数据绑 定、状态绑定、行为绑定和逻辑模型绑定实现的分离方案。其中,数据绑定实现数据到UI的 映射,使业务数据可以从UI界面或逻辑操作模块中独立出来;状态绑定同步数据状态和UI 对象状态,为UI界面控件如命令按钮等提供状态切换支持;行为绑定替代现有技术中的事 件机制,解除UI对象和业务逻辑代码间的依赖关系;逻辑模型绑定在整个UI对象和逻辑处 理模块间建立通道,为数据绑定、状态绑定、行为绑定提供支持。具体如图5所示,示出了如 何通过数据绑定、状态绑定、行为绑定和逻辑模型绑定实现的界面与业务逻辑彻底分离方 法。接下来,将参考附图以具体实施例的形式来对本发明的数据绑定、状态绑定、行为绑定以及逻辑模型绑定进行详细描述。首先,数据绑定作为一项现有的通用技术,简化了应用程序开发。数据绑定技术是 实现UI与数据分离方法的基础,同时也为实现其他绑定技术提供了参考模型。
在本发明中,UI对象和业务数据对象经过绑定通道直接关联,更改通知机制负责 在一方发生更改时通知绑定的另一方做出反应。这样,避免了由业务逻辑模块处理UI对象 并转换为业务数据的操作。同时,绑定机制动态更改绑定上下文,同一个界面可处理不同的 业务数据对象而不需做出改动。例如,在常见的订单操作模块中,单据数据包含订单号、客户、数量等业务数据项。 该订单操作模块在应用程序中表现为如图6所示的界面对象和业务数据对象。因此,从图6看出,通过绑定机制,当订单窗口 OrderForm绑定到数据对象订单 Order后,界面自动显示Order对象的相关数据,当用户在界面更改数据后,绑定机制自动 更新Order数据对象;在该功能模块中,程序代码不需关心如何获取界面相关文本框的内 容并设置到Order对象中。可见,数据绑定为UI界面提供数据呈现和交互途径。在布局元数据中指定绑定源 和绑定路径,元数据被加载并创建为UI对象后,控件可根据绑定上下文自动获取绑定的数 据,并在更改时同步更新绑定源。在管理软件中,业务数据通常会有不同的状态,在不同的状态下用户界面会表现 出不同的可用性或可见性。当用户操作命令使业务数据对象状态发生改变时,UI界面会做 出相应的调整。例如订单操作,订单可能处于待确认、待付款、待发货、已发货等状态。不同 状态下,订单具有不同的操作逻辑如是否可更改、是否可撤消、是否可发货等情况,这要求 订单界面同时也能反映订单状态,确定用户可以执行哪些操作,不可以执行哪些操作。在通常的开发中,界面状态需要业务逻辑模块根据业务数据状态设置,需要较多 的状态判断操作,并且逻辑代码需要明确引用要设置状态的UI控件。这种控制方式繁琐且 耦合度较高。本发明中所描述的状态绑定技术可以为UI对象状态控制提供了一种简单的 解决方案。在本发明中,状态绑定机制涉及的对象包括状态管理器、状态实例、状态组、状态 控制项、状态值。以订单为示例,状态管理对象层次结构如图7所示。图7是根据本发明实施例的状态管理器的层次结构的示意图。在图7中,具体定 义如下状态管理器管理状态的集合,并且该集合中有一个状态为当前状态,状态管理器 提供切换状态的方法以便程序可以从一个状态切换到另一个状态;每个状态中可包含多个状态组,状态组是具有相同特性的状态控制项的集合;以 及每个状态控制项对应一个数据项或操作,状态控制项的状态值表示该数据项是否 可见、是否可更改,或者表示操作是否可被执行。因此,在实现状态管理器的基础上,通过绑定,在UI对象和状态管理器之间建立 关联。状态管理器切换当前状态后,绑定机制通知UI对象状态已更改,UI对象自动获取当 前状态值,然后刷新界面显示。从而,业务逻辑模块可控制状态管理器,决定在什么情况下切换到什么状态,UI对象状态绑定到状态管理器。图8是根据本发明实施例的状态绑定处理的原理示意图。如图8所示,通过状态 绑定,在业务数据状态改变时,业务逻辑模块只负责同步修改状态管理器中的状态值,状态 绑定机制自动处理UI对象的状态刷新;业务逻辑代码只需要和状态管理器交互,而不需要 直接去控制UI对象的状态,从而在状态控制层面实现了 UI和业务逻辑的分离。接下来,行为绑定是为UI对象的用户事件定义响应操作。通过脚本化UI事件处 理,把UI对象的事件响应定义为可动态解析的脚本,而不是传统形式的事件注册处理机 制,使得业务逻辑模块不需要为响应UI事件而必须引用UI对象并处理UI对象的事件消 息,从而在行为层解除UI和业务逻辑模块间的依赖关系。在业务逻辑模块中,通常包含对业务数据的操作,这些操作反映在UI界面上,通 常是一个命令按钮或菜单项。在常用的事件机制中,命令按钮或菜单项有一个命令执行事 件,业务逻辑代码会注册事件的处理器并在接收到事件消息后做出回应。因为注册事件处 理器需要明确的对象引用,不管在设计时还是运行时,UI模块和业务逻辑模块都会因事件 处理而产生依赖。具体地,行为绑定技术包含以下几个关键的因素行为对象Action 对一个可执行操作的抽象描述(例如,订单有撤消、发货等行 为,每一个行为即为一个Action);Action提供者实现行为逻辑的具体模块(例如,在订单功能中,一般业务逻辑代 码中会实现一些函数对应撤消或发货操作,这些代码在应用程序中的对应模块即是Action 的提供者);Action调用和返回值每个Action都需要一个代码中可调用的函数或过程作为 Action的执行体,调用结束后在需要时返回结果(例如,在订单功能代码中,撤消操作对应 函数CancelOrder,函数返回一个Boolean值表示订单是否被成功撤消);以及Action触发器触发Action的因素,一般是UI对象的事件消息(例如,在UI界 面中的“撤消”按钮会触发“撤消订单”的Action)。在具备以上因素后,在UI元数据中使用脚本化语言描述这些内容,在运行时动态 解析脚本定位Action各因素,即可实现动态行为逻辑。脚本化行为描述是指把为一个UI控件事件指定一个用字符串表示的Action,字 符串中定义了如何去访问Action提供者、如何调用Action执行体,如何处理Action返回值等。脚本中可以使用预定义的环境变量,环境变量在运行时动态解析为具体的对象实 例,常用的环境变量如下表所示 脚本使用访问路径表示,在路径中可以支持任意级数的对象属性和方法访问路 径,如属性访问路径 $model. PropertyName. Collection
. PropertyName ;方法访问路径 $model. PropertyName. Collection
MethodName (Parameters)。在运行时创建UI对象时,行为绑定机制会根据在设计时定义的行为属性参数, 为UI控件的事件消息注册处理器。当控件事件发生时,再解析行为脚本内容,定位行为 提供者和执行体,按照脚本中定义的行为访问路径,逐级解析,直到调用到具体的行为逻 辑,并返回调用结果。例如,UI控件EditWindow定义了事件触发的Action,行为脚本 为“$event. Cancel = $models[1] CellEditValidation(Celllnfo,NewValue) ”,事件 名为CellChanging,那么在创建EditWindow时,行为绑定处理器会注册EditWindow的 CellChanging事件;在CellChanging事件发生后,行为绑定处理器会解析脚本内容,定位 到$models[l]对应的模型对象,并以CellChanging的事件参数中的单元格信息、编辑数值 作为参数,调用其方法CellEditValidation,并将返回的验证结果设置到事件参数中以表 示本次编辑是否通过了数据验证。行为绑定技术通过设计时脚本化描述行为,使设计时不需要为UI事件指定行为 逻辑代码,避免了使用代码隐藏来关联UI元数据文件和代码文件,使用UI模块和逻辑处理 模块在设计和编译过程中都相互独立,没有任何依赖。同时,在运行时,注册和处理UI控件 事件的对象由业务逻辑代码转移为行为绑定处理器,业务逻辑模块不需要再关注UI事件 和用户响应,只需要关注对业务数据的逻辑操作,和UI对象之间已没有了直接依赖关系。如图9和图10,分别示出了由于采用事件处理而使得UI与业务逻辑难以分离以及 由于使用行为绑定而使UI与业务逻辑没有了直接依赖关系。最后,在上述的几种绑定技术中,UI对象和业务对象之间的依赖关系被一步步解 除,但在运行时,UI对象的运行依然需要业务逻辑的支持,否则单独的UI将失去意义。逻 辑模型就是在UI对象和业务逻辑模型间建立关联,但这种关联不是双方之间明确的直接 依赖,而是在绑定机制的支持下,通过特定的通道间接的产生关联,以使UI和业务逻辑保 持一致。通过逻辑模型绑定在UI和业务逻辑间建立的关联是间接的,动态的,并且没有强 制依赖的耦合关系,随时可被拆除或替换。逻辑模型绑定是对数据绑定、状态绑定、行为绑定在综合层面的统一管理机制。其 中,逻辑模型是指为UI对象指定一个提供数据源、状态管理器、行为集合等绑定源提供者; 绑定机制则在逻辑模型和UI间建立通道,为数据绑定、状态绑定、行为绑定提供支持,同时 绑定的特性使运行时可以无障碍的替换逻辑模型或切换UI视图。逻辑模型绑定技术具有以下细节
业务逻辑模块提供业务数据、状态管理器、行为集合等访问接口,充当逻辑模型角 色;设计时,可以在UI元数据中以声明的方式指定逻辑模型的类型以及所在的程序 组件,其他在数据绑定、状态绑定、行为绑定声明中不需要指定绑定源(如图11(a)所示);运行时创建UI对象时,逻辑模型绑定根据声明自动创建逻辑模型对象实例(如图 1Kb)所示);以及逻辑模型可在运行时任意时间指定为其他对象,切换到其他对象时,逻辑绑定机 制同步处理数据绑定、状态绑定、行为绑定,使用这些具体的绑定指向正确的绑定源并通知 UI刷新。在XAML格式UI元数据中,通过逻辑模型类型注册为UI对象声明逻辑模型。当UI 对象被创建时,逻辑模型绑定机制通解析声明,加载程序集,创建逻辑模型的实例作为UI 对象的逻辑模型,并且自动设置所有数据绑定、状态绑定、行为绑定的绑定源为该逻辑模型 对象。因此,本发明使用数据绑定、状态绑定、行为绑定技术在设计时和运行时都拆分了 UI模块和业务逻辑模块之间的依赖耦合关系,而通过逻辑模型绑定技术,使互相独立的UI 模块和业务逻辑可以被动态配置和关联。实现了分离界面表现和业务逻辑的目的。综上所述,本发明中所描述的界面表现和业务逻辑的分离方案,在设计时和运行 时都带来了较大的灵活性和效率改进,具体优点如下所述。首先,在开发设计阶段,UI设计人员和业务编程人员可并行展开界面和代码开发, 并不会互相影响,只要遵照相同的接口规约,在集成时UI和逻辑代码模块可顺利集成而不 需任何改动。这种开发模式对比当前的UI设计和逻辑编程模式,真正实现了并行开发。其次,在运行时,传统的技术下,UI对象和业务逻辑模块在运行期耦合在一个对象 中,通常一个窗口或页面对象要同时负责界面对象功能模块的业务逻辑,这使得动态界面 视图或动态业务逻辑难以实现。在使用本文描述的分离技术后,运行期间,界面和业务逻辑 由两个不同的对象提供,通过逻辑模型绑定关联起来,UI对象如窗口或页面只负责呈现界 面响应用户操作,对应的业务逻辑等通过绑定自动与逻辑模型匹配,这样在运行时通过切 换UI对象或逻辑模型,可以轻松进行视图切换和动态改变业务逻辑。另外,在编译和部署方面,常规的处理技术中UI元数据需要作为资源编译到程序 集内部,编译和逻辑都有局限性;使用分离技术后,只有包含业务逻辑的代码文件需要编 译,UI元数据可以按照任意方式部署在程序可访问的位置,对UI的改变不需要重新编译程 序代码。结合压缩、缓存技术,可以提高部署的灵活性和效率。以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技 术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修 改、等同替换、改进等,均应包含在本发明的保护范围之内。
权利要求
一种UI表现和业务逻辑分离方法,用于拆分UI模块和业务数据对象之间的依赖耦合关系,并且使相互独立的UI模块和业务数据对象能够被动态配置和关联,其特征在于,包括以下步骤步骤一,通过数据绑定使UI对象与所述业务数据对象相互关联,从而实现所述UI对象与所述业务数据对象在数据层面的分离;步骤二,通过状态绑定使所述UI对象的状态与所述业务数据对象的状态相关联,从而实现所述UI对象与所述业务数据对象在状态控制层面的分离;步骤三,通过行为绑定使所述UI对象的行为与所述业务数据对象的行为相关联,从而实现所述UI对象与所述业务数据对象在行为层面的分离;以及步骤四,通过逻辑模型绑定来统一管理所述数据绑定、状态绑定和行为绑定,从而实现所述UI模块与所述业务数据对象之间的动态、间接的关联。
2.根据权利要求1所述的UI表现和业务逻辑分离方法,其特征在于,在所述步骤一中, 使用所述数据绑定,在所述UI对象与所述业务数据对象之间建立双向通知和更新的关联通道,从而所述UI对象与所述业务数据对象中的任一方发生更改都通过所述数据绑 定而被反映到另一方,而无需业务逻辑代码的参与。
3.根据权利要求1或2所述的UI表现和业务逻辑分离方法,其特征在于,在所述步骤 一中,所述UI对象的UI元数据在初始布局过程中被指定绑定源和绑定路径, 在所述UI元数据被加载并创建为所述UI对象时,根据所述绑定源和绑定路径来自动 获取所述UI元数据,并且在所述UI对象与所述业务数据对象中的任一方发生更改时,同步更新所述UI元数据 的绑定源。
4.根据权利要求1或2所述的UI表现和业务逻辑分离方法,其特征在于,在所述步骤 二中,在所述UI对象与所述业务数据对象之间经由状态管理器来建立关联,并且 当所述业务数据对象的状态改变时,所述业务数据对象可控地同步修改所述状态管理 器的状态值,并通过所述状态绑定自动刷新所述UI对象的状态。
5.根据权利要求1或2所述的UI表现和业务逻辑分离方法,其特征在于,在所述步骤 三中,在设计时,脚本化描述所述UI对象与所述业务数据对象的行为而无需为所述UI对象 的事件指定行为逻辑代码,从而使所述UI对象与所述业务数据对象在设计过程中不存在 相互依赖;在运行时,所述业务数据对象与所述UI对象的事件以及用户的响应无关,而仅与对所 述业务数据对象的业务数据的逻辑操作相关。
6.根据权利要求1或2所述的UI表现和业务逻辑分离方法,其特征在于,在所述步骤 四中,通过逻辑模型为所述UI对象指定所述数据绑定、状态绑定和行为绑定的提供者,并且 通过逻辑模型绑定在所述UI对象与所述业务数据对象之间建立通道,为所述数据绑 定、状态绑定和行为绑定提供支持。
7.—种UI表现和业务逻辑分离系统,用于拆分UI模块和业务数据对象之间的依赖耦 合关系,并且使相互独立的UI模块和业务数据对象能够被动态配置和关联,其特征在于, 包括数据绑定单元,用于使UI对象与所述业务数据对象相互关联,从而实现所述UI对象与 所述业务数据对象在数据层面的分离;状态绑定单元,用于使所述UI对象的状态与所述业务数据对象的状态相关联,从而实 现所述UI对象与所述业务数据对象在状态控制层面的分离;行为绑定单元,用于使所述UI对象的行为与所述业务数据对象的行为相关联,从而实 现所述UI对象与所述业务数据对象在行为层面的分离;以及逻辑模型绑定单元,用于统一管理所述数据绑定、状态绑定和行为绑定,从而实现所述 UI模块与所述业务数据对象之间的动态、间接的关联。
8.根据权利要求7所述的UI表现和业务逻辑分离系统,其特征在于,在所述数据绑定 单元中,在所述UI对象与所述业务数据对象之间建立双向通知和更新的关联通道,从而所 述UI对象与所述业务数据对象中的任一方发生更改都通过所述数据绑定而被反映到另一 方,而无需业务逻辑代码的参与。
9.根据权利要求7或8所述的UI表现和业务逻辑分离系统,其特征在于,在所述数据 绑定单元中,所述UI对象的UI元数据在初始布局过程中被指定绑定源和绑定路径,在所述 UI元数据被加载并创建为所述UI对象时,根据所述绑定源和绑定路径来自动获取所述UI 元数据,并且在所述UI对象与所述业务数据对象中的任一方发生更改时,同步更新所述UI 元数据的绑定源。
10.根据权利要求7或8所述的UI表现和业务逻辑分离系统,其特征在于,在所述状态 绑定单元中,在所述UI对象与所述业务数据对象之间经由状态管理器来建立关联,并且当 所述业务数据对象的状态改变时,所述业务数据对象可控地同步修改所述状态管理器的状 态值,并通过所述状态绑定自动刷新所述UI对象的状态。
11.根据权利要求7或8所述的UI表现和业务逻辑分离系统,其特征在于,在所述行为 绑定单元中,在设计时,脚本化描述所述UI对象与所述业务数据对象的行为而无需为所述 UI对象的事件指定行为逻辑代码,从而使所述UI对象与所述业务数据对象在设计过程中 不存在相互依赖;在所述状态绑定单元中,在运行时,所述业务数据对象与所述UI对象的 事件以及用户的响应无关,而仅与对所述业务数据对象的业务数据的逻辑操作相关;在所 述逻辑模型绑定单元中,通过逻辑模型为所述UI对象指定所述数据绑定、状态绑定和行为 绑定的提供者,并且在所述UI对象与所述业务数据对象之间建立通道,为所述数据绑定、 状态绑定和行为绑定提供支持。
全文摘要
本发明披露了一种UI表现和业务逻辑分离方法和系统,该方法包括通过数据绑定使UI对象与业务数据对象相互关联;通过状态绑定使UI对象的状态与业务数据对象的状态相关联;通过行为绑定使UI对象的行为与业务数据对象的行为相关联;以及步骤四,通过逻辑模型绑定来统一管理数据绑定、状态绑定和行为绑定,从而实现UI模块与业务数据对象之间的动态、间接的关联。因此,通过本发明,解除了用户界面和逻辑代码之间的强制依赖关系,以在设计期间,用户界面设计和业务逻辑编程可作为完全独立的两项工作并行开展,而在软件运行时,UI对象和业务逻辑处理对象相互独立,支持动态切换UI视图和更改逻辑处理单元。
文档编号G06F9/44GK101872305SQ20101019986
公开日2010年10月27日 申请日期2010年6月8日 优先权日2010年6月8日
发明者陈鸿远 申请人:用友软件股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1