用友U9-UBF应用开发手册
V2.5
前言
UAP(Universal Application Platform)是用友公司为开发新一代面向服务(Service-Oriented Architecture, SOA)的世界级商业应用套件产品(U9)而精心打造出来的ERP软件生产平台。通过UAP平台,使企业信息资源变得可重用、透明化,并且系统具有高可扩展性,让业务处理更加高效、简洁、安全。UAP平台为用户提供了一个统一的集成开发环境,用户可以使用包括模型设计、UI设计、报表设计、规则设计、数据库设计、BI设计等各方面的设计器,并通过可视化的界面和友好的交互操作,自动生成用户所需要的各种功能控件。使得大型的企业级商业应用软件第一次实现了技术与业务关注点的分离,并且通过快速的动态业务建模与服务组装技术,实现了企业动态业务的快速部署与应用,真正实现了“随需而变”的实时企业与全球商务的企业信息化价值理念。
UAP(Universal Application Platform)平台是用友软件经过多年的技术积累和知识沉淀,在微软.NET相关规范和标准的基础上,提供完全支持基于领域语言(DSL)的模型驱动开发(MDD)模式,为各种复杂的企业级商业应用系统提供专业、安全、高效、可靠的开发、部署和运行企业管理应用软件的开发工具平台。它主要包括:应用运行平台(UBF)、应用开发平台(UBF Studio)和组件化发布平台。
UBF(UFIDA Business Framework)
实现与操作系统、数据库、.Net Framework、Office、WMI、.Net Compact Framework、MSMQ 等底层核心技术的调用与协作,通过屏蔽底层的复杂实现,提高企业应用软件的灵活性、可扩展性和开放性。
针对开发ERP软件的特点,提供了一套适用的类库、框架以及具有扩展性的通用解决方案。有效地降低了开发工作的难度和工作量。
在系统交付、安装和部署后,支撑业务系统的解析和执行;提高应用软件的可定制性与可集成性。提供对OFFCIE、移动商务、第三方软件系统等企业级的集成与应用协同。
UBF Studio
提供了统一的集成开发环境,其中包括模型设计、UI设计、报表设计、规则设计、数据库设计、BI设计等各方面的设计器,通过可视化的界面和友好的交互自动产生需要的各种软件工件,极大地提高了软件开发的效率和质量。提供对完整产业链的全角色开发的支撑环境。 组件化发布平台
提供软件产品的组件规划工具,以定义软件产品的工艺图。自动化构造工具将依据该工艺图,自动地构造组件并存入组件库中。安装系统生成工具将按照用户的意图从组件库中提取适当的组件产生安装包。
在本手册中我们将详细介绍怎样使用UAP中的UBF和UBF Studio开发应用。
UBF概述
UAP平台与应用系统间的整体逻辑架构
UAP平台是在国际上主流和公认的技术标准与规范的基础上建立的一个开放的企业级开发工具平台。它采用了元数据驱动的、面向服务的体系架构,并提供了统一的编程抽象模型,是一个适合应用软件开发及部署的全角色平台。UAP平台与应用系统之间的逻辑关系与整体架构如下图所示。
其中,UAP平台提供了模型定义、服务组装、应用开发集成环境(UBF Studio)、应用平台以及应用工具等五个核心的工具集。并通过这五大工具集为应用系统以及第三方的其它应用提供统一的模型定义、功能开发与应用集成的环境。
UAP平台的技术体系架构
UBF的技术体系结构采用分层的架构模式,主要可以分为数据层、业务层、表示层,并且通过抽象的控件模型提供对多种客户端的应用支持。整个架构如下图所示:
其中,在数据层中,持久化服务引擎主要负责访问和查询存储在数据库中的各种业务数据,在隔离业务层和数据存储管理的同时,实现与业务层的实时交互。持久化服务的这种隔离有以下好处:
——减少数据库提供者变更带来的影响;
——减少因数据对象变更带来的影响(如变更数据库的schema);
——封装数据的处理操作,这将在很大程度上减少测试和维护工作;
——通过O/R映射机制,以维护对象和持久存储之间的一致性,减少因面向对象和非面向对象这两种技术存在着阻抗不匹配。
在业务层中,业务实体对象封装了一个业务中的元数据、存储过程和触发器以及该业务的规则、过程或事件。业务实体对象是业务中实际存在的事物或概念,是对“ER”模型中概念的面向对象的扩展。业务实体对象负责执行包括强制的业务规则、应用规则、数据有效性、并发和存储等所有方面的内容。且多个独立的但有关联关系的业务实体对象可以一起协作来完成一个应用,完成不同的任务需执行很多具有不同特点的业务实体对象。
而业务服务则可以定义为一段独立的逻辑程序,当多个服务组合在一起时可完成不同类型的业务需求。服务描述了贯穿业务的工作流程和信息,同时对业务逻辑进行了封装,实现了对业务实体对象的操作,并驱动业务实体完成业务功能。服务可以由工作流系统、业务实体对象管理器、面向对象语言或交互过程定义系统实现。通过UDDI服务网关来查询、绑定内部或外部相应的服务或应用,并调度相应的一个或多个业务实体对象来实现业务处理。而业务流程对象封装了业务处理与业务策略过程。例如,一个定单处理工作流组件可能结合客户、定单等业务实体对象完成定单处理的工作流程。
在表示层中,通过MVC的模式建立业务模型、视图以及控制器之间的业务连接,并实现对各种客户端界面(包括基于浏览器的WEB应用方式、用户交互的窗体以及Smart Client等应用方式)的支持。每个窗体用来显示系统提供的信息以及传递用户的输入信息。这种基于窗体的用户界面包括两种类型的组件:
——用户界面组件:基于.NET Framework的组件,包括Smart Client组件和Web Form组件,还支持用户基于.NET Framework定制的组件。
——用户界面处理组件:复杂的用户界面通常需要很多非常复杂的窗体。为了提高其可复
用性、可维护性和可扩展性,需要创建分离用户界面处理的组件,以封装窗体和界面导航之
间的相关逻辑。可以对一个窗体中组件之间的依赖、确认和导航应用相同的概念。这些UIP 组件通常是一些基于诸如:Front Controller, Application Controller等设计模式的定制组件。UI和UIP组件之间的交互通常采用MVC模式。
另外,UBF技术体系架构中还包含基础服务层:即提供其它所有层都能使用的一系列基础服务。这些服务分成三类:
——安全:提供与应用和系统安全相关的服务集合;
——执行控制管理:这些服务负责管理组件或服务以及相关的资源,还负责处理容错和可扩展性等操作和控制的需求;
——通信:提供组件或服务之间的通信,包括.NET Remoting、SOAP、同步或异步消息等服务。
UBF领域模型语言(DSL)
为了提供对模型驱动的软件开发技术的有效支持,UBF台提供了一种领域特定语言(DSL),其中包括了业务领域语言、表单领域语言、流程领域语言以及报表领域语言等。并针对不同的领域语言采用不同的模型化以及组件化的生成方式,例如通过业务领域语言,可以有效地建立实体模型、数据模型以及服务模型,并且根据模型的关键属性与特征生成相应的软件组件。通过多种模型生成的各种相关的软件组件在应用组装语言的支持下实现动态组装,从而快速形成一个完整的应用系统。
其中:
版型
是扩展业务实体定义的描述方法,是对业务对象进行分类识别的工具,主要用来对业务模型进行抽象,找出实体间的公共属性;每个版型可附带一个代码片段作为模版,根据业务需要由设计人员动态创建,在实体定义阶段进行引用。通过设置版型,对实体进行标识,从而易
于识别,并可基于版型进行分类。比如:帐表类实体等树形实体,可通过建立版型进行识别。 特性
可在不同实体间复用的属性集和版型集;可复用的属性集和版型集通过实体转存为特性,在维护实体属性和方法的时候通过引用特性引入已保存的特性。
模式:
可在不同组件间复用的实体集,以及实体间的关系。
实体模型
实体模型用于描述业务数据的结构和关系。实体模型族中包括实体组件、实体、属性类型、数据传输对象、动态枚举、异常、实体校验器、事件和关系。其中关系分为继承、组合和关联。
实体组件
实体组件与软件行业通常所说的组件的概念并不相同,实际是用于描述一组具有强依赖关系的实体的边界。在一个实体组件内仅能有一个主要实体及其组合的实体。UBF的持久化引擎使用实体组件的元信息以保证实体组件内主实体与其组合实体的生命周期的一致性。
实体
实体模型用于开发者定义应用的数据模型。实体模型中包括属性和方法。实体分为主实体和非主实体,其中只有主实体才能组合非主实体,而不能被组合。
在实体模型上需要指定实体在数据库上存储时的数据库表的表名。如果该实体继承于其他实体,还需要指定这种继承关系在数据库上的存储方式,目前UBF仅支持单表继承——即基类的数据也将存储在具体的实现类对应得表中。为了优化实体数据的加载和保存效率,开发者还应当在实体上建立一个索引项,并仔细地规划索引项中应当包含的实体的属性和次序。
实体模型上还有用于通用查询服务的标志,如果开发人员设置了该标志,则通用查询服务将可以展现该实体的数据。
如果开发者设计了一个仅用于继承的抽象实体,需要设置抽象类标志。
实体的属性
实体属性是关于实体中数据项的描述模型。它的基本信息包括名称、类型、显示名和缺省值。实体属性模型中有一组关于校验的信息用于持久化引擎对数据的合法性进行校验,如可空标志、只读标志、字符串的长度以及数值类型的值范围等。
实体属性模型中与持久化有关的信息包括业务主键、一旦使用不可修改、国际化、是否敏感
日志字段。其中如果声明为业务主键则该属性将成为该实体的唯一约束的一部分,只有当实体对象上所有业务主键属性的值组合没有重复时,该实体对象才能成功地增加。国际化用于指定字符串类型的属性是否支持多语编辑和保存。一旦使用不可修改标志用于类型为其他实体——引用关系,被设置后表明该实体对象所引用的其他实体对象将不能被修改。是否敏感日志字段标志用于指定该属性的改变是否做系统得变更记录。
实体属性还可以被指定为计算列,并能定义计算表达式。计算列不会被存储到数据表中。
关联实体可见和服务可见标志用于指定属性的可见性,只有被设置的属性才能被关联实体访问或作为服务的参数。
而查询属性标志则,表示该属性是否可以被通用查询服务所展示。
实体上可以指定任意数目的可开发者设计的校验器,以保证业务数据的合法性。
实体的方法
实体方法是关于实体中行为的描述模型。开发者除了可以指定名称、显示名称和返回值类型等基本属性外,还可以指定可见性——如public、protected等,以及静态、虚方法和重载方法。
实体的方法模型上可以声明任意数量的异常,以表明该方法将可能抛出这些业务异常。
实体的版型
开发者可以为实体指定一个或多个版型。
属性类型
属性类型是一种没有独立生命周期的特殊实体。它可以有属性和方法,但没有校验器。属性类型模型没有持久化相关的信息,不能被持久化到独立的表中。它的数据只能被存储到使用它的实体的表中,相当于嵌入在实体中的复合数据。
数据传输对象
数据传输对象是可以远程传输的特殊实体。但不能被持久化到数据库中。在数据传输对象中其属性的类型如果是实体类型,则应当指定是实体的类型本身还是实体Key类型。通常应当指定为实体Key类型。
动态枚举
动态枚举是一种既可以在设计期指定枚举值,也可以在运行时动态增加枚举值的数据类型。
实体校验器、事件和异常
用于定义实体的业务校验器和业务异常信息以及业务处理过程中发出的业务事件。
关系
关系的模型用于定义实体间的关系。这包括继承关系、组合关系和关联关系。组合关系只能用于实体组件内部,而关联关系只能在实体组件间使用。
像数据库的表设计一样,组合和关联关系可以定义为一对多、一对一、多对多关系。
在关联关系中需要定义级联删除规则。当级联删除标志置为True时,表示需要对关联关系的被引用实体在删除时做级联删除检查,否则不做任何控制。如果级联删除规则为NoAction,表示如果要删除的实体被引用,则将不能被删除;如果级联删除规则为SetNull,表示如果实体被引用,则当它引用的实体被删除时,引用方改为空值;如果果级联删除规则为Cascade,表示如果要删除的实体已经被引用,则连同引用者一起删除。当是否启用级联校验置为True时,如果将要删除一个实体的实例时时需要将该关系上引用被删除实体的实体纳入到规则控制范围内,否则不检查改实体的实例是否引用了将要被删除的实体。
搜索“diyifanwen.net”或“第一范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,第一范文网,提供最新医药卫生U9-UBF应用开发手册2011全文阅读和word下载服务。
相关推荐: