CN102656557B - Automation enterprise software development - Google Patents

Automation enterprise software development Download PDF

Info

Publication number
CN102656557B
CN102656557B CN201080056912.0A CN201080056912A CN102656557B CN 102656557 B CN102656557 B CN 102656557B CN 201080056912 A CN201080056912 A CN 201080056912A CN 102656557 B CN102656557 B CN 102656557B
Authority
CN
China
Prior art keywords
class
value
name
application
palmyra
Prior art date
Application number
CN201080056912.0A
Other languages
Chinese (zh)
Other versions
CN102656557A (en
Inventor
巴德雷丁·瓦利
Original Assignee
韦尔迈格服务有限公司
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Priority to US25142009P priority Critical
Priority to US61/251,420 priority
Application filed by 韦尔迈格服务有限公司 filed Critical 韦尔迈格服务有限公司
Priority to PCT/IB2010/002037 priority patent/WO2011045634A1/en
Publication of CN102656557A publication Critical patent/CN102656557A/en
Application granted granted Critical
Publication of CN102656557B publication Critical patent/CN102656557B/en

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/20Software design
    • GPHYSICS
    • G06COMPUTING; CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • GPHYSICS
    • G06COMPUTING; CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3668Software testing
    • G06F11/3672Test management
    • G06F11/3688Test management for test execution, e.g. scheduling of test suites
    • GPHYSICS
    • G06COMPUTING; CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3668Software testing
    • G06F11/3696Methods or tools to render software testable
    • GPHYSICS
    • G06COMPUTING; CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/10Requirements analysis; Specification techniques
    • GPHYSICS
    • G06COMPUTING; CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/35Creation or generation of source code model driven
    • GPHYSICS
    • G06COMPUTING; CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/362Software debugging
    • G06F11/3636Software debugging by tracing the execution of the program
    • GPHYSICS
    • G06COMPUTING; CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/36Software reuse

Abstract

优选实施例提供用于以最小量的手动编码来自动生成企业软件应用程序的系统和方法。 In a preferred embodiment provides a minimum amount of manual coding system and method to automatically generate enterprise software applications. 优选实施例提供图形设计工具,其使用统一建模语言(Unified Model Language;UML)对应用程序建模;验证UML模型,且自动生成可部署的应用程序。 The preferred embodiment provides a graphical design tools, using Unified Modeling Language (Unified Model Language; UML) for application modeling; UML model validation, and automatically generates the deployable application. 优选实施例还提供可藉以构建目标应用程序的库的框架。 Preferred embodiments also provide framework library may be constructed whereby the target application.

Description

自动化企业软件开发 Automation enterprise software development

[0001] 相关申请的引用 Reference [0001] RELATED APPLICATIONS

[0002] 本申请要求2009年10月14日提交的美国临时专利申请第61/251,420号的优先权, 所述美国临时专利申请的全文以引用的方式并入本文。 [0002] This application claims priority to US Provisional Patent October 14, 2009 filed No. 61 / 251,420, the entirety of U.S. Provisional Patent Application is incorporated herein by reference.

技术领域 FIELD

[0003] 本发明总体上涉及用于自动化企业软件开发的方法和系统。 [0003] relates to a method and system for automated software development companies generally present invention. 具体来说,本发明涉及用于与图形建模方式相关的使计算机软件开发过程实现自动化的方法和系统。 In particular, the present invention relates to computer software development process for the graphics-related modeling methods and systems automate.

背景技术 Background technique

[0004] 企业越来越依赖于成熟的软件来管理其内部运作并向客户和顾客提供商品及服务。 [0004] enterprises increasingly rely on sophisticated software to manage its internal operations and clients and customers to provide goods and services. 企业级软件的开发、部署、维护和更新对于企业推进几乎所有业务过程来说必不可少。 Enterprise software development, deployment, maintenance and updates for enterprises to promote almost all business processes are essential.

[0005] 传统的软件开发涉及大量的手动编码及测试。 [0005] traditional software development involves a lot of manual coding and testing. 随着软件复杂性的增加,这类传统的手动方式已不切实际。 With the increasing complexity of software, such traditional, manual methods are impractical. 企业软件应用程序通常包括上百万行计算机代码,且照惯例需要一些程序员团队并且花费几年时间来创建、测试和调试。 Enterprise software applications often include millions of lines of computer code, and conventionally requires some programmer team and take several years to create, test and debug. 为了使系统能实施,程序员需要面对繁琐的编码重复。 In order to enable the system to embodiments, the programmer need to face tedious repetition coding. 这类手动方法生成的软件代码易于含有错误,并且手动测试可能无法覆盖全部可能的用户情境。 Such manual methods to generate software code is easy to contain errors, and manual testing may not cover all possible user scenarios. 最终的软件产品可能含有潜在错误,其会引起服务质量下降并造成重大经济损失。 The final software product may contain potential errors, which can cause service degradation and cause significant economic losses.

[0006] 业界已出现基于模型的开发(Model-Based Development;MBD)方法,其转移了软件开发过程中的注意力。 [0006] Based on the industry's development model (Model-Based Development; MBD) method has emerged, which transferred the software development process attention. 软件应用程序过程中的建模在编码之前发生。 Software application modeling process takes place before coding. 模型用作软件开发的蓝图。 Model is used as a blueprint for software development. 精心建构的模型可有助于负责软件开发项目的人员在执行代码之前就能完全确保以下事宜:业务功能性完整且正确,终端用户的需要得到满足,且程序设计支持可扩充性、 健壮性、安全性、扩展性和其他特性的要求。 Carefully constructed model can help staff responsible for software development projects can be completely sure that the following issues before you execute the code: the business functions of the complete and correct, the end user's needs are met, and the program is designed to support scalability, robustness, It requires security, scalability, and other characteristics. 如果在实际设计之后再执行代码,那么通常情况下这时候的更改是困难并且昂贵的。 If we execute the code after the actual design, then change this time under normal circumstances is difficult and expensive. MBD允许在模型级别进行软件规范的验证,并且减少了手动编码量。 MBD allows software specification verification at the model level, and reduces the amount of manual coding. 建模工具还能使设计可视化,并将其与设计要求进行比较。 Modeling tool also allows designers to visualize, and compare it with the design requirements.

[0007] 统一建模语言(Unified Modeling Language;UML)是可视化、说明、建构并建档软件密集型系统的制品的图形语言。 [0007] Unified Modeling Language (Unified Modeling Language; UML) is a visual, description, construction and archiving products, software-intensive systems of graphic language. UML提供标准方式来编写系统蓝图,包括诸如业务过程和系统功能的概念性事务,以及诸如编程语言语句、数据库模式和可再用软件组件的实质性事务。 UML offers a standard way to write system blueprints, including conceptual matters such as business processes and system functions, as well as substantive matters such as programming language statements, database schemas, and reusable software components. 表1列出了标准UML元素列表。 Table 1 lists the standard UML elements in the list.

[0008] 表1标准UML元素 [0008] Table 1 standard UML elements

Figure CN102656557BD00051

[0010] 自动代码生成(Automatic code generation ;ACG)方法(不是应用程序生成),也已经开始在企业软件开发过程中得到应用。 [0010] Automatic code generation (Automatic code generation; ACG) method (not generated by the application), has begun to be applied in the enterprise software development process. ACG使得工程师能够关注于高级别的设计问题, 同时更好地理解业务过程。 ACG enables engineers to focus on the high-level design issues, and a better understanding of business processes. ACG可使得企业软件更快地投放市场,但不能牵动整个应用程序以及其所有的可能部分,诸如,带有处理组件的接口和数据组件。 ACG can make the enterprise software market faster, but it can not affect the entire application and all its possible parts, such as, data interfaces and components with processing components. ACG过程通常包括自动代码生成器,其读取设计模式的元数据的特定集合,并以指定编程语言生成软件代码。 ACG process typically includes an automatic code generator, a particular set of metadata that reads design pattern, and generates code to specify the software programming language. 自动代码生成器还可用于捕获企业软件应用程序的知识和业务规则,并在很短时间内以任何所要计算机语言针对任何平台生成上百万行代码。 Automatic code generator can also be used to capture the knowledge and business rules enterprise software applications, and in a very short period of time, in any desired computer language to generate millions of lines of code for any platform. ACG过程使得企业开发项目更灵活。 ACG process allows companies to develop projects more flexible. 实施时的更改可视为同一元数据的不同渲染。 Change can be regarded as different rendering of the same metadata at the time of implementation. 源代码的一部分一旦生成,程序员就随后自由地填入代码生成器留下的间隙,并专注于系统的重要部分。 Once a portion of the source code generated, then the programmer is free to fill the gap left by the code generator, and to focus on the important parts of the system. 这样一来,借助于代码生成过程,开发速度得以加快且可靠性得以增强。 Thus, by means of the code generation process, the development speed can be accelerated and enhanced reliability.

[0011] 面向服务的架构(Service Oriented Architecture ;S0A)是一种用于根据通用式互连和相互依赖的基础块的集合建构复杂的软件密集型系统的架构方式。 [0011] The service-oriented architecture (Service Oriented Architecture; S0A) is an architectural approach to software-intensive systems complex construction of the set of universal base block and interconnect according to the interdependent. SOA用于根据软件服务构建应用程序。 SOA for building applications based on software services. 服务是功能性的内在并无关联的单元,这些单元并不调用嵌入于其内的另一服务。 Service unit is not related to the inherent functionality, these units do not call another service embedded within it. 这些软件服务通常实施人们将认为是服务的功能性,诸如,填入帐户的在线应用程序,或是检查在线银行报表。 These software services are usually implemented it will be considered as functional services, such as, fill in online account application, or check the online bank statements. 不同于具有在源代码中相互调用的嵌入式调用的服务, SOA定义了描述一个或更多个服务如何相互通信的协议。 Unlike with service embedded in the source code calls to call each other, SOA defines one or more service description protocol of how to communicate with each other. 需要一个灵活的标准化架构来更好地支持多个应用程序之间的连接以及数据共享。 We need a flexible architecture to better support the standardized connectivity and data sharing between multiple applications. SOA借助于将大型应用程序结构化成调用服务的小型模块的自组织(ad hoc)集合来统一业务过程。 SOA applications by means of large-scale structure of the self-organizing into a small module call services (ad hoc) set of unified business processes. 公司内部及外部的不同分组的人可使用这些应用程序,且借助于混合全局池的这些服务而构建成的新应用程序表现出灵活性和一致性。 New applications of different groups within the company and external people can use these applications, and mixed by means of a global pool of these services are built to exhibit flexibility and consistency. 对于联营公司来说,从统一服务池构建所有应用程序,更易于达成这个目标并且部署起来更容易。 For the joint venture company, to build all the applications from the consolidated pool service, it is easier to achieve this objective and easier to deploy. 这个架构可有助于企业在条件更改方面更快速地响应且更具成本效益,同时这个架构还促进宏观层面的服务等级的重复使用,但并不针对微观类层面。 This architecture can help businesses respond more quickly and more cost-effective in terms of condition changes, while this framework also promotes the re-use of macro-level service level, but not for the micro-level class.

[0012] 具有以下流线型企业软件开发工具是有利的,并且也正是所需要的,这类流线型企业软件开发工具并入有上述这些传统方法的部分,从而提供图形建模和设计工具,使大多数或全部编码实现自动化,并且这类工具具有可重复使用的组件和服务的框架,其促进定制企业应用程序的生成。 [0012] with the following streamlined enterprise software development tool is beneficial, and it is also needed, such streamlined enterprise software development tools incorporate some of these traditional methods described above to provide a graphical modeling and design tool that enables large most or all of the coding automation, and this type of tool has a frame assembly and reusable services that promote the generation of custom enterprise applications.

[0013] 目前还没有用于自动产生用来设计、生成并集成可执行应用程序的所有元素的软件应用程序的已知程序。 [0013] is not used for automatically generating a design, known software applications for generating an executable application and integration of all elements. 举例来说,有些产品可以针对可执行应用程序创建设计草图,但并不随后创建设计中指定的元素,诸如,用户接口、持久性(数据库设计、数据存储和数据传输)和处理步骤。 For example, some products may create design sketches for the executable application, but the design is not specified in the element is then created, such as a user interface, persistent (database design, data storage and data transmission) and processing steps. 本发明实现与在一个系统中设计、生成、集成和产生相关的所要需要,而这个需要在现有系统中还没有提供过。 The present invention is implemented in a system with design, build, and generate a correlation integration to the needs, the need has not been provided in the prior systems.

发明内容 SUMMARY

[0014] 因此,本发明的一个目的是提供这类工具。 [0014] It is therefore an object of the present invention is to provide such a tool. 为了实现上述和其他目的,本发明提出一种用于生成软件应用程序的方法,其包括以下步骤:在图形设计工具中对业务过程建模; 使用表示所建模的业务过程的一个或更多个状态图以及表示数据模型并表示应用到所描述业务过程的预定的业务规则的一个或更多个类图,来创建至少一个UML模型,以形式化所描述的过程;通过使用预定的语法来检测语法错误,验证至少一个UML模型,以验证至少一个状态图或类图或其组合;以及将至少一个经验证的UML模型变换成用来生成软件应用程序的功能性和非功能性方面的元数据。 To achieve the above and other objects, the present invention proposes a method for generating a software application, comprising the steps of: in the graphic design business process modeling tool; representing a modeled business process or more FIG states and data representing a model and applied to represent predetermined business rules or business process described in FIG more classes to create at least a UML model, the process described in formal; by using a predetermined syntax detecting a syntax error, at least a UML model validation, to verify at least a state diagram or class diagram or combinations thereof; and at least one validated membered UML model into functional and non-functional aspects of the software application used to generate data.

[0015] 在本发明的一个方面,变换步骤包括生成软件应用程序。 [0015] In one aspect of the invention, the conversion step includes generating a software application.

[0016] 在本发明的另一方面,所生成的软件应用程序与先前存在的库相组合。 [0016] In another aspect of the present invention, the resulting software application with preexisting libraries combined.

[0017] 在本发明的另一方面,所生成的软件应用程序与手动编写的代码相组合。 [0017] combined with the other hand, the generated code and manually write the software application of the present invention.

[0018] 在本发明的另一方面,元数据包括一个或更多个应用程序代码、或约束模型、或自动化文件、或文档、或其一些组合。 [0018] On the other hand, the metadata includes one or more application code, or constraint model, or automated file, or document, or some combination thereof in the present invention.

[0019] 在本发明的另一方面,所生成的应用程序包括预定义的功能性要求集合。 [0019] In another aspect of the present invention, the generated application includes the functionality of a predefined set of requirements.

[0020] 在本发明的另一方面,所生成的应用程序包括预定义的非功能性要求集合。 [0020] In another aspect of the present invention, the generated set of applications include non-functional requirements predefined.

[0021] 在本发明的另一方面,预定义的非功能性要求集合包括安全性管理、或装载平衡、 或事务管理、或用户接口,或构建算法的骨架,或其一些组合。 [0021] In another set of non-functional requirements of the present invention the predefined including security management or load balancing, or transaction manager, or user interface, construct or skeleton algorithm, or some combination thereof.

[0022] 在本发明的另一方面,生成步骤包括向所生成的应用程序添加手动编写的代码。 [0022] In another aspect of the present invention, the step of generating comprises adding to the application manually write the generated code.

[0023] 在本发明的另一方面,方法还包括借助部署工具490部署目标应用程序的步骤。 [0023] In another aspect of the present invention, the method further comprising the step of deploying the target application by means of the deployment tool 490.

附图说明 BRIEF DESCRIPTION

[0024] 下文将参照附图来描述优选实施例,附图中: [0024] Hereinafter will be described with reference to the drawings preferred embodiments, the accompanying drawings in which:

[0025] 图1是示例性计算环境的示意图; [0025] FIG. 1 is a schematic diagram of an exemplary computing environment;

[0026] 图2是示例性网络环境的示意图; [0026] FIG. 2 is a schematic diagram of an exemplary network environment;

[0027] 图3是多层客户端-服务器环境的示意图; [0027] FIG. 3 is a multilayer client - server environment is a schematic diagram;

[0028] 图4是使用优选实施例来开发企业软件的总体过程的流程图; [0028] FIG 4 is a preferred embodiment using a flowchart of the overall process to develop enterprise software;

[0029] 图5是;^:例性Palmyra UML Designer FiIe菜单; [0029] FIG. 5 is; ^: Example of Palmyra UML Designer FiIe menu;

[0030] 图6是示例性Palmyra UML Designer提供附加菜单选项; [0030] FIG. 6 is an exemplary Palmyra UML Designer provides additional menu options;

[0031] 图7A 是Enumerat ion 类的;例; [0031] FIG. 7A is Enumerat ion type; for example;

[0032] 图7B 是TypeName 类的;例; [0032] FIG. 7B is a class TypeName; embodiment;

[0033] 图7C 是DynamicTypeName 类的;例; [0033] FIG 7C is a class DynamicTypeName; embodiment;

[0034] 图7D 是Attr ibute 类的;例; [0034] FIG 7D is a class Attr ibute; embodiment;

[0035] 图7E 是Controller 类的;例; [0035] Figure 7E is a Controller class; embodiment;

[0036] 图7F是Action Enumeration类的;例; [0036] FIG. 7F is Action Enumeration type; for example;

[0037] 图8是Constrainable 类的;例; [0037] FIG. 8 is Constrainable class; embodiment;

[0038] 图9A是Ent i ty类的示例; [0038] FIG. 9A is an example of class Ent i ty;

[0039] 图98是0〇11^〇8;^6 类的;例; [0039] FIG. 98 is a 0〇11 〇8 ^; ^ 6 like; embodiment;

[0040] 图9C是Macro类的示例; [0040] FIG. 9C is an example of class Macro;

[0041] 图90是0〇1^1'〇I Ier 类的;例; [0041] FIG. 90 is a 0〇1 ^ 1'〇I Ier class; embodiment;

[0042] 图10是含有Value Interface、Abstract Value Interface、Storage Interface、 Historicized Interface的接口类和这些接口的层次结构; [0042] FIG. 10 is contained Value Interface, Abstract Value Interface, Storage Interface, Historicized Interface interface class hierarchies and these interfaces;

[0043] 图11展不;寄存在案例“UCAgency”中的动作处理器“AgencyCo_andSearch; [0043] FIG. 11 does not show; registered in the case of "UCAgency" The action processor "AgencyCo_andSearch;

[0044] 图12A是示例性Palmyra类图,其演示案例图向导; [0044] FIG 12A is an exemplary class diagram Palmyra, which demonstrates FIG Wizard case;

[0045] 图12B是具有3个步骤的示例性Palmyra案例图向导; [0045] FIG. 12B is a three steps of an exemplary case of FIG Palmyra Guide;

[0046] 图13A示出使用Palmyra生成工具的生成选项; [0046] FIG 13A illustrates the use of Palmyra generation tool build options;

[0047] 图13B示出屏幕Services,其用来添加、编辑或去除服务,按钮“BuiId Services” 应用选定Ear文件中的修改; [0047] FIG. 13B illustrates a screen Services, which is used to add, edit or remove services button "BuiId Services" Ear modify a selected application file;

[0048] 图13C示出使用Palmyra生成工具的配置选项; [0048] FIG 13C shows the use of Palmyra generating tool configuration options;

[0049] 图14示出自动生成过程的主要步骤; [0049] FIG. 14 illustrates the main steps of the automatic generation process;

[0050] 图15A示出1对1关系的示例; [0050] FIG 15A illustrates an example of 1 to 1 relationship;

[0051] 图15B示出1对N关系的示例; [0051] FIG 15B illustrates an example of a to-N relationship;

[0052] 图16示出带有接口的关系的示例; [0052] FIG. 16 shows an example of the relationship with the interface;

[0053] 图17示出继承性的实例的示例; [0053] FIG. 17 shows an example of an example of inheritance;

[0054] 图18示出Menu Editor Tool的用户接口的示例; [0054] FIG. 18 illustrates an example Menu Editor Tool user interface;

[0055] 图19示出Palmyra登录屏幕的示例性屏幕; [0055] FIG. 19 shows a login screen Palmyra exemplary screen;

[0056] 图20示出实体授权过程的示例; [0056] FIG. 20 shows an example of the entity authorization process;

[0057] 图21示出服务授权过程的示例; [0057] FIG. 21 illustrates an example of a service authorization process;

[0058] 图22Atj^出;^:例性SecurityItem UML Model; [0058] FIG 22Atj ^ a; ^: exemplary embodiment SecurityItem UML Model;

[0059] 图22B示出示例性Policies UML Model; [0059] FIG 22B illustrates an exemplary Policies UML Model;

[0060] 图22(¾^出;^:例性SecurityItem的Roles UML ModeL; [0060] FIG. 22 (¾ ^ a; ^: SecurityItem exemplary embodiment of the Roles UML ModeL;

[0061] 图23示出View Format Service (视图格式服务)的UML模型的示例; [0061] FIG. 23 shows an example View Format Service (service view format) of the UML model;

[0062] 图24A示出根据优选实施例的应用程序如何集成并与不同平台通信的示例; [0062] FIG. 24A shows how to integrate the application according to the preferred embodiment and examples of the different platforms to communicate with;

[0063] 图24B以抽象方式示出系统的架构以及输入和输出装置从何处装配到这个系统中; [0063] FIG 24B illustrates an abstract way the system architecture and input and output devices where fitted into this system;

[0064] 图25示出Mapping过程的概况; [0064] FIG 25 illustrates an overview Mapping process;

[0065] 图26示出Mapping的配置的示例; [0065] FIG. 26 shows an example of a configuration of Mapping;

[0066] 图27详细示出Mapping转化器的过程; [0066] FIG. 27 shows in detail the process Mapping reformer;

[0067] 图28示出工作流引擎的示例以及其如何管理系统中的状态; [0067] FIG. 28 shows an example of the state of the workflow engine and how it management system;

[0068] 图29示出Report Writer (报告编写器)的总体架构; [0068] FIG. 29 illustrates a Report Writer (Report Writer) of the overall architecture;

[0069] 图30不出包com · palmyra · arch · basicStruct · data的接口Value 中定义的主要方法; [0069] FIG. 30 the primary method the interface Value com · palmyra · arch · basicStruct · data packet is not defined;

[0070] 图31不出包com .palmyra .arch. basicStruct. data中实施的类Col Iect ion; [0070] FIG. 31 not com .palmyra .arch basicStruct data packet in the embodiment of class Col Iect ion..;

[0071] 图32示出Classe的组合; [0071] FIG. 32 illustrates a combination of Classe;

[0072] 图33不出com · palmyra · archbas icStruct · except ion提供的异常; [0072] FIG. 33 no abnormal com · palmyra · archbas icStruct · except ion provided;

[0073] 图34A 不出Compos i teValue 类的子类; [0073] FIG. 34A not a subclass of class Compos i teValue;

[0074] 图34B不出StringValue类的子类; [0074] FIG. 34B is not a subclass of class StringValue;

[0075] 图35示出创建并定义CompositeValue类字段的示例; [0075] FIG. 35 illustrates an example of creating and CompositeValue class field is defined;

[0076]图36示出SimpleValue类型及其子类的类图的示例; [0076] FIG. 36 shows an example class diagram SimpleValue types and subclasses;

[0077] 图37A是查找操作中的查询类的UML图的图示,其中所查询类是X,且所查询字段是+、il.+、il·i2·+和i3·+; [0077] FIG 37A is a diagram illustrating the operation of the lookup query UML class diagram, wherein the query type is X, and the query field is +, il +, il · i2 · + and i3 · +.;

[0078] 图37B是查找操作中的查询类的简化UML图的图示,其中所查询类是X,且所查询字段是+、il . +、il · i2·+和i3· + ; [0078] FIG. 37B is to find a simplified UML diagram illustrating the operations of the class query, wherein the query type is X, and the query field is +, il +, il · i2 · + and i3 · +.;

[0079] 图38是搜索查询的UML图的图示; [0079] FIG. 38 is a UML diagram illustrating a search query;

[0080] 图39是另一搜索查询的UML图的图示; [0080] FIG. 39 is a diagram illustrating another search query UML diagrams;

[0081] 图40是已扩展键结构的UML类图的图示; [0081] FIG. 40 is the extended UML class diagram illustrating a key structure;

[0082] 图41A是PQL查询的UML类图的图示; [0082] FIG. 41A is a UML class diagram illustrating a PQL query;

[0083] 图41B是简化PQL查询的UML类图的图示; [0083] FIG. 41B is a simplified UML class diagram illustrating PQL query;

[0084] 图41C是1对N关系的UML类图的图示; [0084] FIG 41C is a diagram 1 UML class diagram of the relationship between N;

[0085] 图42是ProcessExecuter (过程执行器)的设计模型的UML图的图示; [0085] FIG. 42 is a diagram illustrating UML design model ProcessExecuter (process actuators);

[0086]图43是Traverser (遍历器)的设计模型的UML图的图示;以及 [0086] FIG. 43 is a diagram illustrating UML design model a Traverser (walker); and

[0087] 图44是Mapper (映射器)的设计模型的示例性UML图的图示; [0087] FIG. 44 is a diagram illustrating an example UML Mapper (mapper) the design model;

[0088] 图45是特定于供应商的DBDS子类的设计模型的示例性UML图的图示; [0088] FIG. 45 is a diagram illustrating an example UML design vendor-specific model DBDS subclass;

[0089] 图46是如何使用接口historicized的示例性UML图的图示; [0089] FIG. 46 is a graphical representation of how an exemplary interfaces historicized UML diagrams;

[0090] 图47A是如何在设计应用程序时使用安排器模块的示例性UML图的图示; [0090] FIG. 47A is an illustration of an example of how to use the arrangement of FIG UML module in the design of the application;

[0091] 图47B是作业消息配置的示例性屏幕; [0091] FIG. 47B is an exemplary configuration of a job message screen;

[0092] 图47C是如何配置每日重复的作业的示例性屏幕; [0092] FIG 47C is repeated daily configuring exemplary screen operations;

[0093] 图47D是如何在每日重新的作业中配置一天中的时间的示例性屏幕; [0093] FIG 47D is an exemplary screen configuration of how time of day in the daily operation of re;

[0094] 图47E是如何向日历分配年度假日的示例性屏幕; [0094] FIG. 47E is how to allocate the annual holiday exemplary screen to the calendar;

[0095] 图47F是如何向日历分配特殊假日的示例性屏幕; [0095] FIG 47F is how to assign special holiday calendar exemplary screen;

[0096] 图47G是如何向日历分配每周的假日的示例性屏幕; [0096] FIG. 47G is a weekly how to allocate holiday calendar exemplary screen;

[0097] 图47H是如何在作业与日历之间定义依赖性的示例性屏幕; [0097] FIG. 47H is how to define the dependency between the operations and exemplary screen calendar;

[0098] 图471是如何配置待跟踪作业的示例性屏幕; [0098] FIG. 471 is how to configure the job to be tracked exemplary screen;

[0099] 图47J是作业安排器的跟踪执行结果的示例性屏幕; [0099] FIG. 47J is a job scheduler tracking result of execution of exemplary screen;

[0100] 图48示出可支持许多技术的呈现控制器的设计; [0100] FIG. 48 shows may support many presentation controller design techniques;

[0101] 图49示出经由呈现控制器和相关联组件来响应客户端请求的示例性过程; [0101] FIG 49 illustrates an exemplary process via presentation controller and associated components in response to client requests;

[0102] 图50示出基于上下文获取动作; [0102] FIG. 50 illustrates a context-based acquisition operation;

[0103] 图51示出安排器的UML表示;以及 [0103] FIG. 51 shows an arrangement of the UML representation; and

[0104] 图52不出Palmyra Schedule Trace (Palmyra安排器跟踪)的不例。 [0104] FIG. 52 no Palmyra Schedule Trace (Palmyra tracking arrangement) Example no.

具体实施方式 Detailed ways

[0105] 下文将参照附图详细描述优选实施例,其中全部附图中的相同附图标记表示相同元件或步骤。 [0105] Hereinafter preferred embodiments with reference to the detailed description, wherein like reference numerals in the drawings denote the same elements or steps.

[0106] 示例性计算环境 [0106] Exemplary Computing Environment

[0107] 图1和以下论述旨在提供适合计算环境的简要总体描述,其中可在所述计算环境中实施本发明的示例实施例。 [0107] FIG. 1 and the following discussion are intended to provide a brief, general description of suitable computing environment in which exemplary embodiments of the present invention may be implemented in embodiments of the computing environment. 然而,应了解,与优选实施例有关的使用涵盖任何种类的手持式、便携式和其他计算装置。 However, it should be appreciated that the preferred embodiment relating to the use of embodiments encompass any kind of handheld, portable and other computing devices. 尽管下文描述了通用计算机,但是这仅作为一个示例。 While a general purpose computer is described below, but this is only one example. 优选实施例还可在具有网络服务器互操作性和交互的瘦客户端上运作。 Preferred embodiments can also work on the thin client interoperability and interaction with a network server. 因此,本发明的示例实施例可在牵涉极少或最少客户端资源的网络宿主服务的环境中实施,例如,在客户端装置仅用作连至万维网的浏览器或接口的网络环境中实施。 Accordingly, embodiments may be implemented in the environment of the least network resource client hosts and services involve little or exemplary embodiment of the present invention, e.g., client device connected to a network environment merely as a browser or interface to the World Wide Web in the embodiment.

[0108] 尽管未要求,但是本发明可经由开发人员或测试人员所使用的应用程序编程接口(application programming interface;API)来实施,和/或包括在网络浏览软件内,其将在由一个或更多个计算机(例如,客户端工作站、服务器或其他装置)执行的诸如程序模块的计算机可执行指令的总体情形下加以描述。 [0108] Although not required, the present invention may be via an application programming interface developer or tester used (application programming interface; API) implemented, and / or included within the network browsing software which will be by one or more computers (e.g., client workstations, servers or other devices), such as a computer-executable program modules that execute instructions under the general case be described. 通常,程序模块包括用来执行特定任务或实施特定抽象数据类型的例程、程序、对象、组件以及数据结构等。 Generally, program modules include for performing particular tasks or implement particular abstract data types routines, programs, objects, components, data structures, and the like. 通常,程序模块的功能性可视各种实施例的需要加以组合或分布。 Typically, the functionality of the program modules may optionally be combined or distributed as an example of the various embodiments. 此外,本领域技术人员将理解,本发明通过其他计算机系统配置实施。 Moreover, those skilled in the art will appreciate that the present invention is embodied in other computer system configuration. 可适合与本发明一起使用的其他公知计算系统、环境和/或配置包括,但不限于,个人计算机(PC)、服务器计算机、手持式或膝上型装置、多处理器系统、基于微处理器的系统、可编程电子消费品、网络PC、微型计算机以及主机计算机等。 May be suitable for use with the present invention, other well known computing systems, environments, and / or configurations include, but are not limited to, a personal computer (PC), server computers, hand-held or laptop devices, multiprocessor systems, microprocessor-based systems, programmable consumer electronics, network PC, a microcomputer and the host computer. 本发明的实施例还可在分布式计算环境中实施,在所述环境中由经由通信网络或其他数据传输介质链接的远程处理装置来执行任务。 Embodiments of the invention may also be practiced in distributed computing environments, where tasks are performed by remote processing devices via a communications network or other data transmission medium that are linked to the environment. 在分布式计算环境中,程序模块可位于包括存储器存储装置的本地和远程计算机存储介质两者中。 In a distributed computing environment, program modules may be located in both local and remote computer storage media including memory storage devices.

[0109] 因此,图1示出可实施本发明的合适计算系统环境100的示例,尽管如上文已清晰描述,但是计算系统环境100仅仅是适合计算环境的一个示例,且并非旨在对本发明的使用或功能性的范围提出任何限制。 [0109] Accordingly, FIG. 1 illustrates an example may be implemented according to the present invention, a suitable computing system environment 100, although as already clearly described, the computing system environment 100 is only one example of a suitable computing environment and is not intended to present invention scope of use or functionality of any proposed restriction. 同时,也不应理解为计算环境100具有与示例性操作环境100中所说明的组件中的任何一个或其组合相关的任何独立性或要求。 At the same time, it should not be interpreted as having any computing environment 100, or a combination of any independent or requirements associated with the assembly 100 in the exemplary operating environment illustrated in.

[0110] 参照图1,用于实施本发明的示例性系统包括呈计算机110形式的通用计算装置。 [0110] Referring to FIG 1, an exemplary system embodiment of the present invention includes a general purpose computing device in the form of a computer form 110. 计算机110的组件可包括(但不限于)处理单元120、系统存储器130,以及将包括系统存储器的各个系统组件耦接到处理单元120的系统总线121。 Components of computer 110 may include (but are not limited to) a processing unit 120, a system memory 130, and various system components including the system memory coupled to the processing unit 120. The system bus 121. 系统总线121可以是包括存储器总线或存储器控制器、外设总线和本地总线的若干类总线结构中的任何一个,其中上述各类总线使用多种总线架构中的任何一种。 The system bus 121 may be any of several types of bus structure of a memory bus or memory controller, a peripheral bus, and a local bus, wherein the above types of bus using any of a variety of bus architectures. 作为示例,但并非限制,此类架构包括工业标准架构(Industry Standard Architecture; ISA)总线,微通道架构(Micro Channel Architecture;MCA)总线,增强型ISA (Enhanced ISA;EISA)总线、视频电子标准协会(Video Electronics Standards Association; VESA)本地总线、外设组件互连标准(Peripheral Component Interconnect; PCI)总线(也称作夹层总线),和PCI-Express总线。 By way of example, and not limitation, such architectures include Industry Standard Architecture (Industry Standard Architecture; ISA) bus, Micro Channel architecture (Micro Channel Architecture; MCA) bus, Enhanced ISA (Enhanced ISA; EISA) bus, Video Electronics Standards Association (Video Electronics standards Association; VESA) local bus, peripheral component interconnect (peripheral component interconnect; PCI) bus (also known as mezzanine bus), and PCI-Express bus.

[0111] 计算机110通常包括多种计算机可读介质。 [0111] Computer 110 typically includes a variety of computer-readable media. 计算机可读介质可以是计算机110可访问的任何可用介质,且包括易失性和非易失性,可移动和不可移动介质两者。 Computer readable media can be any available media that can be accessed by computer 110 and includes both volatile and nonvolatile, removable and nonremovable media both. 作为示例,但并非限制,计算机可读介质可包括计算机存储介质和通信介质。 By way of example, and not limitation, computer readable media may comprise computer storage media and communication media. 计算机存储介质包括易失性和非易失性、移动和不可移动介质两者,其可以任何方法或技术实施以便存储信息,诸如计算机可读指令、数据结构、程序模块或其他数据。 Computer storage media includes both volatile and nonvolatile, removable and non-removable media, which may be implemented in any method or technology for storage of information such as computer readable instructions, data structures, program modules or other data. 计算机存储介质包括(但不限于)随机存取存储器(RAM)、只读存储器Φ0Μ)、电可擦可编程只读存储器(EEPROM)、闪存或其他存储器技术、只读光盘(CDROM)、多功能数码光盘(DVD)或其他光盘存储、磁盒、磁带、磁盘存储或其他磁存储装置,或可用来存储所要信息且计算机110可访问的任何其他介质。 Computer storage media include (but are not limited to) a random access memory (RAM), read only memory Φ0Μ), electrically erasable programmable read only memory (EEPROM), flash memory or other memory technology, CD-ROM (the CDROM), multifunction digital disks (DVD) or other optical disk storage, magnetic cassettes, magnetic tape, magnetic disk storage or other magnetic storage devices, or be used to store the desired information and accessed by computer 110 may be any other medium. 通信介质通常含有计算机可读指令、数据结构、程序模块或模块化数据信号中的其他数据,诸如,载波或其他传送机制,且包括任何信息传递介质。 Communication media typically having computer-readable instructions, other data structures, program modules, or in a modulated data signal such as a carrier wave or other transport mechanism and includes any information delivery media. 术语“模块化数据信号”是指具有以特定方式设定或更改后就可将信息编码到信号中去的一个或更多个特性的信号。 The term "modulated data signal" means a signal having one or more characteristics can encode information in the signal to the post-set or changed in a specific fashion. 作为示例,但并非限制,通信介质包括有线介质,诸如有线网络或直接有线连接,以及无线介质,诸如声波、射频(RF)、红外线和其他无线介质。 By way of example, and not limitation, communication media includes wired media such as a wired network or direct-wired connection, and wireless media such as acoustic, radio frequency (RF), infrared and other wireless media. 上述各类介质的任何组合也可包括在计算机可读介质的范围内。 Any combination of the above types of media may also be included within the scope of computer-readable media.

[0112] 系统存储器130包括呈易失性和/或非易失性存储器形式的计算机存储介质,诸如,ROM 131和RAM 132。 [0112] The system memory 130 includes computer storage media in the form of volatile and / or nonvolatile memory in the form of, such as, ROM 131 and RAM 132. 含有基本例程的基本输入/输出系统133 (BIOS)通常存储于ROM 131 中,所述基本例程有助于在计算机110内的元件之间转移信息,诸如有助于在启动期间传输信息。 Containing the basic routines A basic input / output system 133 (BIOS) are typically stored in ROM 131, the basic routines that help to transfer information between elements within computer 110, such as during startup help to transfer information. RAM 132通常含有可直接访问处理单元120和/或当即在处理单元120上运作的数据和/或程序模块。 RAM 132 typically contains the processing unit 120 can be accessed directly and / or immediately in the data and / or program modules operating on the processing unit 120. 作为示例,但并非限制,图1示出操作系统134、应用程序135、其他程序模块136以及程序数据137。 By way of example, and not limitation, Figure 1 illustrates operating system 134, application programs 135, other program modules 136, and program data 137. RAM 132可含有其他数据和/或程序模块。 RAM 132 may contain other data and / or program modules.

[0113] 计算机110还可包括其他可移动/不可移动、易失性/非易失性计算机存储介质。 [0113] Computer 110 may also include other removable / non-removable, volatile / nonvolatile computer storage media. 仅作为示例,图1示出从不可移动的非易失性磁性介质读取或写入至其的硬盘驱动器141,从可移动的非易失性磁性磁盘152读取或写入至其的磁盘驱动器151,以及从可移动的非易失性光盘156读取或写入至其的光盘驱动器155,诸如,⑶ROM或其他光学介质。 By way of example only, Figure 1 illustrates a read or write it to the hard drive 141, nonvolatile magnetic media from non-removable, nonvolatile read from or written to the magnetic disk 152 to which the movable disk drive 151, and 156 to read or write to the optical disc drive from which a removable, nonvolatile optical disk 155, such as, ⑶ROM or other optical media. 可用于本示例性操作环境的其他可移动/不可移动、易失性/非易失性计算机存储介质包括(但不限于)盒式磁带、闪存卡、多功能数码光盘、DV录像带、固态RAM以及固态ROM等。 Can be used in the exemplary operating environment other removable / non-removable, volatile / nonvolatile computer storage media including (but not limited to) magnetic tape cassettes, flash memory cards, digital versatile disks, DV video tape, solid state RAM, and solid state ROM and the like. 硬盘驱动器141通常经由不可移动存储器接口(诸如,接口140)连接到系统总线121,且磁盘驱动器151和光盘驱动器155通常经由可移动存储器接口(诸如,接口150)连接到系统总线121。 Hard disk drive 141 is typically connected via a non-removable memory interface (such as interface 140) to the system bus 121, and magnetic disk drive 151 and optical disk drive 155 are typically connected to the system bus 121 via a removable memory interface (such as interface 150).

[0114] 上文论述的以及图1示出的装置及其相关联的计算机存储介质存储用于计算机110的计算机可读指令、数据结构、程序模块以及其他数据。 [0114] discussed above, and the apparatus shown in FIG. 1 and its associated computer storage medium storing computer readable instructions for computer 110, data structures, program modules, and other data. 举例来说,在图1中,硬盘驱动器141示为存储操作系统144、应用程序145、其他程序模块146以及程序数据147。 For example, in FIG. 1, the hard disk drive 141 is illustrated as storing operating system 144, application programs 145, other program modules 146, and program data 147. 请注意,这些组件可与操作系统134、应用程序135、其他程序模块136以及程序数据137相同或者不同。 Note that these components can be, other program modules 136, and program data 134, application programs 135 the operating system 137 or different. 本文中操作系统144、应用程序145、其他程序模块146以及程序数据147以不同符号表示,以便说明它们至少有所不同。 Herein, operating system 144, application programs 145, other program modules 146, and program data 147 with different symbols, in order to illustrate that they at least somewhat different. 用户可经由输入装置(诸如,键盘162和定位装置160,通常称作鼠标、轨迹球或触控板)键入命令和信息到计算机110中。 A user via an input device (such as a keyboard 162 and pointing device 160, commonly referred to as mouse, trackball or touchpad) enter commands and information into the computer 110. 其他输入装置(未图示)可包括麦克风、摇杆、游戏手柄、卫星天线、扫描仪等。 Other input devices (not shown) may include a microphone, joystick, game pad, satellite dish, scanner or the like. 这些和其他输入装置通常经由耦接到系统总线121的用户输入接口160连接到处理单元120,但可经由其他接口和总线结构连接,诸如,并口、游戏口或通用串行总线(USB)。 These and other input devices are often coupled via system bus 121 to a user input interface 160 is connected to the processing unit 120, but may be connected by other interface and bus structures, such as a parallel port, game port or a universal serial bus (USB).

[0115] 监视器191或其他类型的显示装置也经由诸如视频接口190的接口连接到系统总线121。 [0115] A monitor 191 or other type of display device is also connected via an interface such as a video interface 190 to the system bus 121. 除监视器191以外,计算机也可包括诸如扬声器和打印机(未图示)的其他外设输出装置,其可经由输出外设接口195来连接。 Addition to the monitor 191, computers may also include other peripheral output devices such as speakers and a printer (not shown), which may be connected through an output peripheral interface 195.

[0116] 计算机110可在使用逻辑连接来连接到一个或更多个远程计算机(诸如,远程计算机180)的网络环境中运作。 [0116] The computer 110 may connect to using logical connections to one or more remote computers (such as a remote computer 180) operating in a network environment. 远程计算机180可以是个人计算机、服务器、路由器、网络PCdi 等装置或其他通用网络节点,且尽管图1仅示出存储器存储装置181,但是远程计算机180通常包括上文针对计算机110所描述的大部分或全部元件。 The remote computer 180 may be a personal computer, a server, a router, a peer device or other network PCdi common network node, and although Figure 1 shows only a memory storage device 181, the remote computer 180 typically includes a majority as described above for computer 110 or all of the elements. 图1描绘的逻辑连接包括局域网(LAN) 171和广域网(WAN) 173,但也可包括其他网络。 Logic depicted in Figure 1 include a local area (LAN) 171 and a wide area network (WAN) 173, but may also include other networks. 这类网络环境在办公室、企业级计算机网络、企业内部网和因特网中很常见。 Such networking environments are common in offices, enterprise-wide computer networks, intranets and the Internet.

[0117] 当计算机110在LAN网络环境中使用时,计算机110经由网络接口或适配器170连接至IjLAN 171。 [0117] When the computer 110 used in a LAN networking environment, the computer 110 is connected to IjLAN 171 via a network interface or adapter 170. 当计算机110在WAN网络环境中使用时,计算机110通常包括用于经由WAN 173 (诸如,因特网)建立通信的构件。 When the computer 110 used in a WAN networking environment, the computer 110 typically includes a means for establishing communications via WAN 173 (such as the Internet). 在网络环境中,针对计算机110所描绘的程序模块或其部分可存储在远程存储器存储装置中。 In a networked environment, computer 110 for program modules depicted or portions thereof, may be stored in the remote memory storage device. 作为示例,但并非限制,图1将远程应用程序185示为驻留在存储器装置181中。 By way of example, and not limitation, Figure 1 illustrates remote application programs 185 as residing on the memory device 181. 远程应用程序185包括(但不限于)诸如微软因特网信息服务( Microsoft®Internet Information Services (ITS)®)和Apache HTTP服务器(Apache HTTP Server)的web服务器应用程序,上述应用程序提供在远程存储装置181'或可访问万维网的其他存储装置上驻留的内容。 Remote application programs 185 include (but are not limited to) such as the Microsoft Internet Information Services (Microsoft®Internet Information Services (ITS) ®) and the Apache HTTP Server (Apache HTTP Server) web server application program, the application program 181 provided in a remote storage device 'or other storage devices residing on the World Wide Web content. 应理解,所示网络连接是示例性的,且可使用在计算机之间建立通信链接的其他构件。 It should be appreciated that the network connections shown are exemplary, and may use other means of establishing a communications link between the computers.

[0118] 本领域技术人员可理解,计算机110或其他客户端装置可部署为计算机网络的部分。 [0118] Those skilled in the art will appreciate that a computer 110 or other client device can be deployed as part of a computer network. 在这一方面,优选实施例涉及任何计算机系统,其具有任何数目个存储器或存储单元, 以及跨越任何数目个存储单元或卷进行的任何数目个应用程序和过程。 In this regard, a preferred embodiment relates to any computer system having any number of memory or storage units, and span any number of applications and any number of processes performed by the storage units or volumes. 本发明的一个实施例可适用于具有远程或本地存储的环境,其中服务器计算机和客户端计算机部署在网络环境中。 One embodiment of the present invention are applicable to environment, having remote or local storage, wherein the server computer and client computers deployed in a network environment. 优选实施例也可适用于具有编程语言功能性、解译和执行能力的独立计算装置。 Preferred embodiments also apply to a standalone computing device, having programming language functionality, interpretation and execution capabilities.

[0119] 示例性网络环境 [0119] Exemplary network environment

[0120] 图2示出可实施本发明的实施例的网络环境的实施例。 [0120] FIG 2 illustrates an embodiment of a network environment may be implemented in embodiments of the present invention. 网络环境200含有许多本地服务器系统210,其可包括许多文件服务器211、web服务器212,以及由本地网络的所有者拥有并管理的应用程序服务器213。 Network environment 200 containing a plurality of local server system 210, which may include a number of file server 211, web server 212, and owned by the owner of the local network management and application server 213. 这些服务器与本地用户系统220通信,其可包括大量系统, 诸如工作站221、桌面计算机222、膝上型计算机223,以及瘦客户端或终端机224。 These servers communicate with a local user system 220, which may include a large number of systems, such as a workstation 221, a desktop computer 222, laptop computer 223, and the terminal 224 or the thin client. 诸如在工作站221、桌面计算机222和膝上型计算机223的情况下,本地用户系统220可含有其自身的持久性存储装置。 In the case of such a workstation 221, a desktop computer 222 and a laptop computer 223, the local user system 220 may contain its own persistent storage. 它们也可访问本地服务器210所提供的持久性存储,诸如,数据库。 They can also access the persistent storage 210 provided by the local server, such as a database. 在瘦客户端或终端机224的情况下,网络存储可以仅仅是可用的持久性存储。 In the case of a thin client or terminal 224, the network may simply be a persistent storage memory available. 本地网络内的用户通常经由本地服务器系统210和一些典型的网络安全性措施(诸如,防火墙270)来访问诸如因特网280的较广范围的网络。 Typically users within the local network via a local server system 210 and some typical network security measures (such as a firewall 270) to access a wide range network such as Internet 280. 还可存在可与本地服务器系统210和本地用户系统220通信的许多远程系统290。 There may also be a number of remote systems 290 in communication with the local server system 210 and the local user system 220. 远程计算机系统可以是多种远程终端机291、远程膝上型计算机292、远程桌面计算机293以及远程web服务器294。 Remote computer system 291 may be a variety of remote terminals, remote laptop computer 292, a remote desktop computer 293 and the remote web server 294.

[0121] 图2示出示例性网络环境。 [0121] FIG 2 illustrates an exemplary network environment. 本领域技术人员应理解,本发明的教导可与任何数目个网络环境和网络配置一起使用。 Those skilled in the art will appreciate, the teachings of the present invention may be used with any number of network environment and network configuration.

[0122] 客户端-服务器环境 [0122] The client - server environment

[0123] 客户端-服务器软件架构模型是多用途的、基于消息的并且模块化的基础设施,其旨在改进相对于集中式主机分时计算的可用性、灵活性、互操作性和可扩充性。 [0123] The client - server software architecture model is versatile, modular and message-based infrastructure, which is intended to improve usability with respect to the centralized sharing host computing, flexibility, interoperability, and scalability . 客户端-月艮务器描述两个计算机程序之间的关系,其中一个程序(客户端,定义为服务请求方)向另一程序(服务器,定义为服务提供方)提出服务请求,而另一程序满足该请求。 Client - May that works to describe the relationship between the two is a computer program, wherein a program (client, is defined as the service requester) service request to another program (server, defined as the service provider), and the other program to satisfy the request. 客户端-服务器应用程序是包括客户端和服务器软件两者的分布式系统。 The client - server applications that include both client and server software, distributed systems. 客户端软件程序可发起通信会话,而服务器等待来自任何客户端的请求。 The client software program may initiate a communication session, the server waits for a request from any client.

[0124] 在网络中,客户端-服务器模型提供便捷的方式来高效地互连分布在不同位置的程序。 [0124] In a network, a client - server model provides a convenient way to interconnect programs efficiently distributed in different locations. 使用客户端-服务器模型的计算机之间的事务非常普遍。 Using a client - server model transactions between computers is very common. 大多数因特网应用程序,诸如电子邮件、web访问和数据库访问,是基于客户端-服务器模型。 Most Internet applications, such as email, web access and database access, are based on a client - server model. 举例来说,web浏览器是用户计算机上的客户端程序,其可用以访问全世界任何web服务器上的信息。 For example, web browser is a client program on a user's computer, which can be used to access the world of information on any web server. 对于想要在远程计算机上检查银行帐户的顾客来说,可在web浏览器内运行的客户端程序向银行的web服务器程序转发请求。 For customers who want to check your bank account on the remote computer, the client program can be run in a web browser forwards the request to the bank's web server program. web服务器程序又可向数据库客户端程序转发请求,所述数据库客户端程序向另一银行计算机上的数据库服务器发送请求,以便获取所请求的帐户金额信息。 turn web server program forwards the client program request to the database, the database client program sends a request to the database server computer on another bank, the account amount to obtain the requested information. 金额信息被返回到银行数据库客户端,随后又返回到顾客计算机上的web浏览器客户端,其将这些信息显示给顾客。 The amount of information is returned to the bank database client, and then returned to the web browser client on the client computer, it will display this information to customers.

[0125] 图3示出多层客户端服务器架构的示例。 [0125] FIG. 3 shows an example of a multi-layer client-server architecture. 多层客户端-服务器架构向不同层分配不同任务和服务。 Multi-layer client - server architecture and assign different tasks to different service layers. 图3的示例性多层架构存在3个逻辑层。 There are three logical layer architecture of FIG. 3 is an exemplary multilayer. 第一层310是一个或更多个客户端311、312,第二层是应用程序服务器321,且第三层330是数据服务器331、332。 The first layer 310 is one or more clients 311, 312, the second layer is the application server 321, and the third layer 330 is a data server 331. 在客户端层上,客户端311、312提供应用程序的用户接口,并用作呈现服务器。 Layer on the client, the client application provides a user interface 311, 312 and used as a presence server. 应用程序的图形用户接口通常是将由web浏览器显示在客户端计算机上的定制生成式网页。 Application graphical user interface is usually customized by the web browser displays web pages in the formula on the client computer. 一个或更多个应用程序服务器321可作为业务逻辑的主机,且一个或更多个数据服务器331、332提供数据存储和验证服务。 One or more application server 321 may host a service logic, and provides data storage and authentication service one or more data servers 331, 332. 应用程序的主体在共享主机312上运行。 The main application running on a shared host 312. 应用程序服务器321并不驱动图形用户接口,而是与业务逻辑、计算和数据获取引擎共享。 Application Server 321 does not drive the graphical user interface, but rather, is calculated and the data acquisition engine and share business logic. 所获取到的数据的呈现由客户端层上的呈现服务器来处理。 The acquired data presented by the presentation server on the client to process the layer. 客户端系统上的软件越少,与安全性相关的问题就越少。 The less software on the client system, the less security-related issues. 与软件分布在许多桌面客户端上相比,软件集中在单个服务器上时应用程序的可扩充性、支持成本和安装成本都变得更有利。 And distribution of software in many desktop clients compared to software focused on the scalability of the application time on a single server, support costs and installation costs are becoming more favorable. 可通过在应用程序服务器层中使用组件技术来实现许多不同的实施方案,诸如,通用对象请求中介架构(Common Object Request Broker Architecture; C0RBA)、Java企业Bean (Enterprise Java Beans;EJB)以及分布式组件对象模型(^Distributed Component Object Model;EC0M)。 It may be achieved using a number of different embodiments of the application server component technology layers, such as the Common Object Request Broker Architecture (Common Object Request Broker Architecture; C0RBA), Java Enterprise Bean (Enterprise Java Beans; EJB) and Distributed Component Object model (^ Distributed Component Object model; EC0M).

[0126] 在一个优选实施例中,系统在其架构中实施Enterprise JavaBeans (EJB)技术。 [0126] In a preferred embodiment, the system according to the Enterprise JavaBeans (EJB) technology in its architecture. EJB是Java应用程序编程接口(API),其使得开发人员能够关于于模型的实际业务架构上, 而不用担心连接所有工作部分所需的无穷无尽的编程和编码。 EJB is a Java application programming interface (API), which enables developers about on actual business architecture model, without worrying about programming and coding endless connections required for all working parts. 开发人员可设计(或购买)所需的EJB组件,并视需要将它们布置在服务器上。 A developer can design (or later) required for EJB components, and they are disposed as needed on the server. EJB是一种用于开发和部署基于组件的分布式应用程序的组件架构。 EJB is a method for developing and deploying component-based distributed application architecture components. 使用EJB编写的应用程序可扩充、可处理事务,并且在多用户的情况下也能保证安全性。 Applications written using EJB scalable, can handle affairs, and in the case of multi-user but also to ensure safety. 这些应用程序可以在一次性编写完成之后部署在支持EJB规范的任何服务器平台上。 These applications can be deployed on any server that supports EJB specification platform after a single prepared.

[0127] 在EJB多层环境中,客户端提供用户接口逻辑,业务规则被分隔到中间层,并且数据库是信息仓库。 [0127] In the multilayer EJB environment, the client provides a user interface logic, business rules are separated into the intermediate layer, and the database is a repository of information. 客户端并不直接访问数据库。 The client does not directly access the database. 相反,客户端呼叫中间层上的EJB Server (EJB服务器),其随后访问数据库。 In contrast, EJB Server (EJB server) on the client calls the intermediate layer, which can then access the database. EJB Server提供用于部署基于组件的分布式应用程序的中间层逻辑的框架。 EJB Server provides a logical framework for the intermediate layer based distributed application components for deployment. EJB Server的高性能事务服务器对客户端会话、线程、数据库连接和事务流提供高效管理。 EJB Server's high-performance transaction server for client sessions, threads, database connections and transaction flows provide efficient management. web浏览器经由HTTP连接到EJB Server或web服务器,以便下载含有Java小程序(applet)的HTML网页,而所述Java小程序用来执行呈现功能性。 web browser via HTTP connection to the EJB Server or web server in order to download a Java applet (applet) HTML pages, and the Java applet to perform the rendering functionality. 小程序与EJB Server通信,调用执行业务逻辑的中间层组件。 Server applet to communicate with the EJB, intermediate layer components that perform call business logic. 数据服务器和存储服务器存储、处理并保护公司数据。 Data servers and storage server storage, processing and protection of corporate data. EJB Server管理连接到数据库的连接池,协调连接到那些服务器的事务处理。 EJB Server to connect to the database connection pool management, coordination of those connected to the transaction server.

[0128] 优选实施例 [0128] Preferred embodiments

[0129] 这个形式的优选实施例教导用于软件应用程序的自动化开发的方法和系统。 [0129] This form of the teachings of the preferred embodiment of a method and system for automating the development of software applications. 方法包括以下各种过程:用于定义应用程序的过程,用于对将由软件应用程序执行的特定业务过程或功能建模的过程;用于为了进一步定义过程或功能而创建唯一特殊化UML模型的过程,以及用于针对预定义的唯一语法规则集合对模型进行验证的过程。 The method includes the following various processes: the procedure for defining an application for a particular business process or process modeling functions performed by the software application on; for in order to further define the procedure or function to create a unique specialized UML model process, as well as a unique collection of the predefined grammatical rules of the model validation process used. 经验证的模型随后唯一地变换成唯一的元数据形式,其包括目标应用程序使用的所生成的应用程序代码和XML文件。 The model is then validated uniquely converted into a unique form of metadata, which includes the application code and the generated XML file used by the target application. 图4提供根据优选实施例方法的软件工程过程主要步骤的大体示意图。 4 provides a schematic diagram of the main steps of a preferred general embodiment of the method of the software engineering process embodiment. 一般来说, 使用优选实施例的软件工程过程包括以下步骤:首先使用UML图形设计工具410来设计并建模业务过程。 Generally, software engineering using the preferred embodiment of the process comprises the following steps: first using 410 UML graphical design tools to design and model a business process. 使用本发明提供的增强版UML和元数据来建模业务过程。 Plus and using UML metadata provided by the present invention to model the business process. 对UML模型和元数据进行验证420,并且将UML模型和元数据作为自动化代码生成引擎430的输入。 UML model to verify the data and metadata 420, and the UML model and metadata engine 430 as an input automation code generation. 自动化代码生成引擎解析UML模型和元数据,并使用企业应用程序开发框架(又称作Palmyra框架)来生成针对目标应用程序480的可部署源代码。 Automated code generation engine parses UML models and metadata, and uses enterprise application development framework (also known as Palmyra frame) can be deployed to generate source code for the target application 480. 有时候需要一些手动编码450来补充自动生成的代码,但与传统方法相比,手动编码量大幅减少,并且通常针对特定或特殊化的应用程序特征。 Sometimes some manual coding 450 need to supplement the automatically generated code, but compared with the conventional method, substantially reduce the amount of manual encoding, and generally for application-specific features or specialized. 优选实施例还可包括配置工具460以及测试和检测工具470。 Preferred embodiments may also include configuration tools and test detection means 460 and 470. 一旦配置及测试完成,目标应用程序准备好进行部署490。 Once the configuration and testing is complete, the target application ready to deploy 490.

[0130] I.使用UML图的软件模型的图形设计 [0130] graphic design software models using UML diagram I.

[0131] 这个形式的优选实施例提供易于使用的图形软件工程工具。 [0131] This form of the preferred embodiment provides an easy to use graphical software engineering tools. 自动代码生成过程起始于使用UML设计工具储如,MagicDraw或Rational Rose)的标准建模方式。 Automatic code generation process begins with the UML design tools, such as storage, MagicDraw or Rational Rose) standard modeling. 使用上述这些工具来创建UML图,以便呈现所要的业务过程和所要的数据模型。 UML diagram is created, in order to render the desired business process and data models to be using these tools. 用户和顾问都可使用图形建模和设计工具。 Users and consultants can use the graphical modeling and design tool. 优选实施例促进包括业务组件和技术组件两者的现有组件的重复使用。 Preferred embodiments facilitate the reuse of existing components including both business and technology components assembly.

[0132] 在本发明的一个实施例中,图形建模和设计工具基于商用UML可视化建模工具,诸如,MagicDraw。 [0132] In one embodiment of the present invention, the design tool graphical modeling and visualization based commercial UML modeling tool, such as, MagicDraw. 仅仅MagicDraw并不足以用作优选实施例的图形建模和设计工具。 MagicDraw used preferably is not sufficient merely graphical modeling and design tools embodiment. 尽管MagicDraw用作可视化画图工具,但它无法检查设计错误、无法控制范型(Stereotype)和标记值(Tagged Value)、无法拒绝错误数据,也无法提供警告。 Although visualization MagicDraw as drawing tools, but it can not check the design errors, not a control paradigm (Stereotpye) and flag value (Tagged Value), erroneous data can not refuse, can not provide a warning. 当将MagicDraw用作工具来构建并设计UML模型时,本发明创建Designer工具作为MagicDraw的插件来增强功能。 When used as a tool to build MagicDraw UML model and design, the present invention creates Designer tool MagicDraw as to enhance the functionality of the widget. 增强型UML Designer,也称作Palmyra UML Designer,组成位于MagicDraw之上的附加层,以便解决无法创建不遵循预定义规则的UML模型的限制性,并在设计过程期间及之后避免错误。 Enhanced UML Designer, also known as Palmyra UML Designer, the composition of the additional layer sits on top of MagicDraw, UML can not be created in order to solve the model does not follow the predefined rules restrictive, and to avoid errors during the design process and after. Palmyra UML Designer米用以下步骤来实现上述优势。 Palmyra UML Designer meters with the following steps to achieve these benefits. 第一步,Palmyra UML Designer工具通过验证初始值、多样性和类型等,来检查所设计的模型是否遵循预定义Palmyra规则。 The first step, Palmyra UML Designer tool by verifying the initial value, diversity and type, model designed to check compliance with a predefined rule Palmyra. 第二步,Palmyra UML Designer工具确保各图准备好用于生成过程而并无人为错误。 The second step, Palmyra UML Designer tool to ensure that the map is ready for the build process and not human error. 第三步,Palmyra UML Designer工具使得能够在整个应用程序中精确地添加和更改关系和简单(Simple)字段。 The third step, Palmyra UML Designer tool enables accurate and simple to add and change the relationship between (the Simple) field throughout the application. 第四,Palmyra UML Designer工具检查Palmyra元素,并添加或校正其Stereotype之间的新资格(eligibility),以便避免冲突和设计错误。 Fourth, Palmyra UML Designer tool to check Palmyra elements, and add new qualifications or correction between its Stereotype (eligibility), in order to avoid conflicts and design errors. 最后,Palmyra UML Designer工具利用Tagged Value而不是String Value (字符串值)的值引用。 Finally, Palmyra UML Designer tool instead of using the value of the Tagged Value String Value (string value) references.

[0133] 优选实施例并不限于MagicDraw或任何其他特定的UML设计工具。 [0133] Preferred embodiments are not limited in particular, or any other MagicDraw UML design tool. 因此,技术人员可通过使用其他设计工具,诸如,独立应用程序,或追加另一UML可视化设计工具,来实施上述验证功能性。 Thus, the skilled person by using other design tools, such as a stand-alone application, or the addition of another UML visual design tool to verify the functionality of the above-described embodiment.

[0134] UML Designer还提供有助于用户创建UML模型的可用性特征。 [0134] UML Designer also provides availability features help users to create UML models. UML Designer提供panel (板)、class (类)和Tagged Value输入的用户友好接口。 UML Designer provides Panel (plate), class (category), and Tagged Value input user-friendly interface. UML Designer自动装载项目内遵循优选实施例的模型。 UML Designer autoloader project follows preferred embodiment of the model. UML Designer通过将Palmyra类分成4个主要分类简化了Palmyra类的使用,所述4个主要分类分别是Entity (实体)、Interface (接口)、Controller (控制器)和Simple Value (简单值)C3UML Designer依据选定类型向类添加所需要的Stereotypec3UML Designer在运行时还显示可用父类型(parent type)。 UML Designer Palmyra by class classification into four major classes of Palmyra simplifies the use of the four major categories are the Entity (entity), Interface (Interface), the Controller (Controller) and Simple Value (simple value) C3UML Designer depending on the available parent type (parent type) of the selected type is added to the class required Stereotypec3UML Designer runtime also displayed.

[0135] Palmyra UML Designer还可向选定设计工具提供新动作集合。 [0135] Palmyra UML Designer also provides a new set of actions to the selected design tool. 图5示出UML Designer的File (文件)菜单500,其具有示例性新动作。 Figure 5 shows a UML Designer of File (File) menu 500, having exemplary new action.

[0136] New Palmyra Project 510:这个子菜单用来新建Palmyra项目。 [0136] New Palmyra Project 510: This submenu is used to create a new project Palmyra. Palmyra项目含有Palmyra UML模型,且去除所有冲突Stereotype。 Palmyra Palmyra UML model project contains, and remove all conflicts Stereotype.

[0137] Palmyra Save 520:保存活跃项目。 [0137] Palmyra Save 520: Save active project.

[0138] Validate Palmyra Project 530:这个子菜单用来验证项目的Palmyra规则。 [0138] Validate Palmyra Project 530: This submenu is used to verify the rules of Palmyra project.

[0139] Open Palmyra Code Generation 540:这个子菜单用来打开Code Generation Tool (代码生成工具)并将其传递到相关UML模型(呈Palmyra XML格式)的完整路径下。 This submenu complete path to open Code Generation Tool (code generator) and passed to an associated UML model (in Palmyra XML Format): [0139] Open Palmyra Code Generation 540. 这个子菜单在验证项目时使用。 This submenu is used when verifying the project. Code Generation Tool的路径在插件安装时指定。 Code Generation Tool path specified when the plug-in installation.

[0140] Generate Log Files 560:这个子菜单用来生成日志文件(log file)。 [0140] Generate Log Files 560: This submenu is used to generate a log file (log file). 第一日志文件含有实体列表,且并不含有当前模型的代码。 The first log file contains a list of entities and does not contain the code of the current model. 第一日志文件的文件名称是模型名称加上“_EntitiesWithoutCode. log”的串联。 The first file name is the log file name with the model series "_EntitiesWithoutCode. Log" of. 第二日志文件含有字段列表,但并不具有Tagged Value“currpath”,且并不具有simple (简单)值(字段必须具有至少一个“·”)。 The second log file contains a list of fields, but does not have the Tagged Value "currpath", and does not have the simple (simple) value (field must have at least one "."). 第二日志文件的文件名称是当前模型名称和“_FieldsWithCurrPath. log”的串联。 The second file name of the log file is the model name and "_FieldsWithCurrPath. Log" in the current series. 这个子菜单在验证项目时生效。 This sub-menu take effect at the time of verification project.

[0141] 可使用UML设计工具来创建若干类型的图,诸如,类图、过程图和案例转换图(use-case transition diagram) 〇Palmyra UML Designer向MagicDraw的Diagram菜单600提供附加菜单选项(图6)。 [0141] UML design tool can be used to create several types of diagrams, such as class diagrams, and FIGS process transition diagram cases (use-case transition diagram) 〇Palmyra UML Designer provides additional menu options (FIG. 6 Diagram of the menu 600 MagicDraw ).

[0142] A .Class Diagram (类图) [0142] A .Class Diagram (FIG class)

[0143] 使用类图建模技术来唯一地创建类图,在所述技术中特定的预定义类型的类和装饰适用于提供唯一功能性,允许系统解释图并在生成时生成数据结构。 [0143] FIG class modeling techniques used to create a unique class diagram in the art, certain predefined types of classes adapted to provide a unique and decorative functionality, and allows the system to generate a data structure explanatory view when generating. 在本发明的框架所提供的标准UML模型中,唯一地创建特定的预定义类型的类。 In the standard UML model framework provided by the present invention, the only create certain predefined class types. 这些类被编组成若干类型的类,诸如,Entity (实体)、Controller (控制器)、Simple Type (简单类型)和Interface (接口)。 These classes are grouped into several types of classes, such as, the Entity (entity), the Controller (Controller), Simple Type (simple type) and the Interface (interface). 模型中的类是框架库的一部分。 Model class library is part of the frame. 借助于Palmyra Class Diagrams子菜单610,在创建UML类图时Palmyra UML Designer提供对图形工具的直接访问。 By means of Palmyra Class Diagrams submenu 610, when creating the UML class diagram Palmyra UML Designer provides direct access to graphical tools.

[0144] 在框架所提供的相同标准UML模型中,唯一地创建特定的预定义类型的装饰。 [0144] In the framework of the same standard UML model provided only to create specific predefined type of decoration. 这些装饰也被编组成诸如被设计成便于创建目标软件应用程序的Tagged Value和Stereotype 的类型。 The decoration also are grouped as being designed to facilitate the creation of target software applications and Stereotype Tagged Value types.

[0145] 1 · Class Types (类的类型) [0145] (class type) 1 · Class Types

[0146] Palmyra由以下4种类的类型组成:Simple (简单)、Entity (实体)、Controller (控制器)和Interface (接口)。 [0146] Palmyra from the following 4 types of type composition: Simple (Simple), Entity (entity), Controller (Controller) and the Interface (interface).

[0147] a.Simple Types (简单类型) [0147] a.Simple Types (simple type)

[0148] Simple类的类型是原语结构,其含有数字、或日期或符号列表这类单个数据元素。 [0148] Simple types are primitive class structure, which contains a number, or symbol, or date list of such single data element. Simple类型可由框架所提供的标准模型来预定义,且也可在目标应用程序的特定模型中定义。 Simple type standard model framework may be provided by the predefined, and may also be defined in a specific model of the target application. Simple类型用作Entity类-类型这类更复杂类的字段,或用作Control Ier类-类型中所含方法的参数。 Simple type as Entity class - more complex types of such fields of the class or type as Control Ier - type parameter contained in the process. 这些Simple类的类型也可受到约束,以便对数据元素提供限制和定义,诸如,数值型元素的取整以及文本元素和预置值的格式。 Simple types of these classes may be constrained to provide a limited and defined data elements, such as, rounded elements and numerical format text elements and preset values.

[0149] 预定义Simple类型的一个不例是StringValue (字符串值)aStringValue Simple 类型是最大字符个数受到约束的文本结构。 [0149] an embodiment of the predefined type is a Simple the StringValue (a string value) aStringValue Simple structure type is the maximum number of characters of text constrained. 预定义Simp Ie类型的另一个示例是BooleanValue (布尔值),其中数据元素的值为true (真)或false (假)。 Another example of a predefined type is BooleanValue Simp Ie (Boolean), wherein the data element value true (true) or false (false).

[0150] 所定义的Simple类型的一个示例是AgeValue (年龄值)。 [0150] Simple example of a type defined is AgeValue (age values). 在这个示例中,使用名称AgeValue来创建Simple类型,所述名称AgeValue经定义以继承另一预定义或新定义的Simple类型的属性。 In this example, the name used to create AgeValue Simple type, by defining the names AgeValue Simple type inherits the properties of another predefined or newly defined. 举例来说,AgeValue设定为继承IntegerValue (整数值),其是含有介于-2,147,483,648到2,147,483,647之间的整数的预定义Simple类型。 For example, AgeValue set to inherit, IntegerValue (integer value), which is a predefined range comprising Simple type integer between 2,147,483,648 to 2,147,483,647. 另外,可对新定义的AgeValue Simple类型添加约束,以使得范围可在0至Ij 150之间。 Further, constraints may be added to a newly defined AgeValue Simple types, such range may be between 0 to Ij 150. 因此,新定义的AgeValue继承有关提供一定范围内的值的能力属性,且可用依据目标应用程序的需要所建立的特定值进一步定义AgeValue。 Therefore, the new definition of AgeValue ability to inherit property values ​​for a range of providers within, and the specific value based on the needs of the target application created further defined AgeValue.

[0151] Simple类的类型也具有Enumeration (枚举)类。 [0151] Simple types also have the Enumeration type (enumeration) class. 枚举类描述枚举类型。 Enumeration enum type described class. 在类属性中定义这种类型的可能值。 This type of possible values ​​defined in the class attribute. 图7A示出枚举(enum)类的一个示例(MyEnumeration (我的枚举))。 7A shows an example of an enumeration (enum) class (MyEnumeration (enum I)). 在此特定示例中,类含有带有属性的用户列表。 In this particular example, the class containing the list of users with attributes. 在此示例中,user 1具有特性列表,诸如, UserName (用户名称)[i] =Developer (开发人员),UserName[i+l] =Designer (设计人员), UserName [i+3] =Consultant (咨询人员)。 In this example, user 1 has a list of features, such as, UserName (user name) [i] = Developer (developer), UserName [i + l] = Designer (designer), UserName [i + 3] = Consultant ( Consultants). 在所生成的应用程序中,枚举类可在组合框(Combo Box)中呈现。 Generated by the application, the composition may be presented enumeration class box (Combo Box) in.

[0152] i · TypeName (类型名称)类 [0152] i · TypeName (type name) class

[0153] TypeName类是含有特定类的全部子类名称的枚举,其在运行时进行填入。 [0153] TypeName class contains all the enumeration of specific sub-class of the class name, which was populated at runtime. 图7B示出TypeName类的示例。 FIG 7B shows an example of class TypeName. 举例来说,如果类型名称的扩展部分是“ConstraintTypeName (约束类型名称)”,且Tagged ValUe“ClaSSname (类名称)”的类值是“X”,那么运行时系统的组合框中将显示类“X”中Stereotype为“constraints (约束)”的所有子类的名称。 For example, if the type name extension is "ConstraintTypeName (constraint type name)", and Tagged ValUe "ClaSSname (class name)" class value "X-," then the system will display the combo box runtime class " X "in the Stereotype as" constraints (constraints), "the names of all subclasses.

[0154] ii .DynamicTypeName (动态类型名称) [0154] ii .DynamicTypeName (dynamic type name)

[0155] DynamicTypeName类是含有带有2个附加特性的给定类的全部子类的枚举,其在运行时进行填入。 [0155] DynamicTypeName class contains all the enumeration of subclasses of a given class with two additional features, which was populated at runtime. 图7C示出DynamicTypeName类的示例。 7C shows an example DynamicTypeName class. 举例来说,如果用户如下定义DynamicTypeName类:将Tagged Value “classname (类名称)”的类值定义为“X”,将“includetype (包括类型)”定义为“Type_AbstractValue (抽象值)”,并将“excludetypes (排除类型)”定义为“Type_Constraintable (可约束)”,那么系统将显示“X”中扩展部分为“AbstractValue” 但并不具有Stereotype为“constrainable” 的所有子类。 For example, if the user class DynamicTypeName defined as follows: The Tagged Value "classname (class name)" class is defined as "X-," the "includetype (including type)" is defined as "Type_AbstractValue (abstract value)", and "excludetypes (negative type)" is defined as "Type_Constraintable (to bind)", the system will display the "X" moiety is extended "AbstractValue" but does not have to Stereotype "constrainable" all of its subclasses. PaImyra Stereotypes&Rules (Palmyra范型和规则)(下文)中详细描述了所有可能类型的描述。 PaImyra Stereotypes & amp; Rules (Palmyra rules and paradigms) (infra) are described in detail in the description of all possible types.

[0156] iii .Attribute (属性)类 [0156] iii .Attribute (attributes) class

[0157] Attribute类用来定制从Palmyra Simple类型中的一种扩展并添加用户需要的特定特性的simple类。 [0157] Attribute class simple extension from one class is used to customize Palmyra Simple adding a specific type and characteristics of the user's needs. 图7D示出Attribute类(attr)的示例(ATTRl) Attribute类定义特定对象的特性集合。 7D shows an example of the Attribute class (attr) of (ATTRl) Attribute class defined set of characteristics of a particular object. 在图7D所示的示例中,为特定属性attrl定义了4个特性(max (最大值)= 100,precision (精度)=3,rounding (取整)=ROUND UP (向上取整),min (最小值)=0)。 In the example shown in FIG. 7D, for a particular attribute attrl defines four characteristics (max (maximum value) = 100, precision (accuracy) = 3, rounding (rounding) = ROUND UP (rounded up), min ( minimum value) = 0). 在另一个示例中,用户可定义类型“AmountValue (数量值)”的新属性,并将这个属性的Tagged Value给定为“precision (精度)”和“defaultformat (缺省格式)”,然后在应用程序中定义所有属性、参数以及运算返回值。 In another example, the user may define the type of "AmountValue (number value)" new attribute, and Tagged Value attribute is given as the "Precision (accuracy)" and "DefaultFormat (default format)", then the application all the properties defined in the program, parameters and return values ​​calculation.

[0158] iv. ControlIerName (控制器名称) [0158] iv. ControlIerName (controller name)

[0159] 控制器名称类似于类型名称,不同之处在于baseclassname (基类名称)是控制器。 [0159] Device Name Name Type similar, except that baseclassname (base class name) is the controller. 图7E示出Controller类的示例(C0NTR0LLERNAME1)。 7E shows an example of the Controller class (C0NTR0LLERNAME1). 举例来说,如果控制器名称的Tagged Value “baseclassname”的值为控制器“C”,那么运行时系统将在组合框中显示控制器“C”的所有子类的名称。 For example, if the name of the controller Tagged Value "baseclassname" controller value "C", then the runtime system will display the names of all subclasses controller "C" in the combo box.

[0160] V.Action Enumeration (动作枚举) [0160] V.Action Enumeration (enumeration operation)

[0161] Action Enumeration类是动态枚举,其在运行时由控制器中的方法的执行结果来填入。 [0161] Action Enumeration enum type is dynamic, which is filled in by the execution result to the controller of the method at runtime. 图7F示出Action Enumeration类的示例(ACTION ENUMERATION)。 7F shows exemplary Action Enumeration class (ACTION ENUMERATION). 举例来说,为了填入文件(企业应用程序档案(Enterprise Application Archive;EAR)中的特性文件)中的市场Transaction Type (事务类型),用户创建控制器,定义返回Collection Value (集合值)的方法,并随后创建Action Enumeration类,其Tagged Value“controllername (控制器名称)”等于新控制器的名称(在图7F中=CalendarEntryController (日历条目控制器)), 且其“actionname (动作名称)”等于运行时填入Market Operation Type (市场运算类型)的值的方法的名称(在图7F中=Createdaily (媒体创建))。 For example, to fill in the file (enterprise application archive (Enterprise Application Archive; EAR) characteristics of the file) in the market Transaction Type (transaction type), a user creates a controller, define the return Collection Value (the set value) method and then create classes action Enumeration which Tagged Value "controllername (Device name)" is equal to the name of the new controller (FIG. 7F = CalendarEntryController (calendar entries controller)), and the "ActionName (action name)" is equal to fill value name (operation market type) market operation type runtime method ((media created in FIG. 7F = Createdaily)). 在添加、修改或删除充Market Operation Type的一些值的情况下,这些更改仅在文件中进行。 In add, modify, or delete some cases charged Market Operation Type of value, these changes only in the file.

[0162] b.Entity Types (实体类型) [0162] b.Entity Types (Entity Type)

[0163] Entity类的类型是含有字段的异类结构,所述字段具有一个或更多个Simple类的类型,且Entity类的类型可与其他Entity类的类型有关。 [0163] Entity Type is a heterogeneous structure containing a class field, the field type having one or more Simple class, and type of Entity class may be associated with other types of Entity class. 类似于Simple类型,Entity类型可由框架所提供的标准模型来预定义,或者可在目标应用程序的特定模型中定义。 Simple model is similar to the standard type, Entity framework type may be provided to pre-defined or can be defined in a specific model of the target application. Entity类型是构成目标应用程序的数据结构的数据元素,所述数据结构也可用作Controller类-类型中所含方法的参数。 Entity types are data elements of the data structure constituting the target application, the data structure may also be used Controller class - parameter type contained in the method. 这些Entity类的类型也可受到约束、增强及修改,以便依据目标应用程序所建立的需要提供更精确的数据元素。 These types of Entity classes can also be subject to enhanced and modified to provide more accurate data element based on the needs of the target application established.

[0164] Entity类的类型可针对字段和关系具有定义多样性。 [0164] Entity class type may have a defined field for diversity and relationships. 运行时依据预定义多样性来检查Entity类的实例(也称作对象)的完整性,以检查这些对象的正确性。 Verifying Entity class instance (also called objects) integrity, in order to check the correctness of these objects according to predefined runtime diversity.

[0165] Ent ity类的类型之间的关系分成4组,分别称作general i zat ion (泛化)、 aggregation (聚合)'composition (组合)以及association (关耳关)〇[0166] Generalization关系用来表达继承性。 [0165] The relationship between the type of Ent ity class divided into four groups, are referred to as general i zat ion (generalization), aggregation (polymerization) 'composition (compositions) and Association (Off Off ears) square [0166] Generalization relationship It used to express inheritance. 继承性类视为现有类的扩展,其中可向现有类添加字段或关系,和/或可修改一些特征,诸如,现有字段和关系的多样性。 Regarded as the class inheritance extend existing classes, wherein the classes are added to an existing field or relationships, and / or modify some features, such as diversity and relationships existing fields.

[0167] Aggregation关系用来实现由一个Entity类定义的数据结构指向由另一Entity类定义的其他数据结构。 [0167] Aggregation of data structures used to implement the relationship Entity class defines a data structure other point by another Entity class definition.

[0168] Composition关系用来说明由一个Entity类定义的数据结构包含由另一Entity类定义的其他数据结构。 [0168] Composition for explaining a relationship between the data structure defined by an Entity class contains other data structures defined by a class of another Entity.

[0169] Association关系用来依据与相关类的内容相关的条件,关联由一个Ent ity类定义的数据结构与由另一Ent i ty类定义的其他数据结构。 [0169] Association according to a condition related to the relationship between the content of related classes, associated data structures defined by a class Ent ity with other data structures by another Ent i ty class definition.

[0170] 关系依赖性分成6组,它们被称为In (所属)Xontains (包含)、SameAs (相同)、0r (或)、X〇r (异或)以及Exclusive (互斥)。 [0170] Relationship dependency divided into 6 groups, which are referred to In (ordinary) Xontains (comprising), sameAs (same), 0r (or), X〇r (XOR) and Exclusive (mutually exclusive). 关系依赖性适用于一对关系,且两个关系称作来源关系和目标关系。 For use in a dependent relationship on the relationship, and the two sources referred to the relationship and the relationship between target relationship. 有资格具有这类依赖性的关系是Aggregation或Composition关系类型。 Are eligible to have this kind of dependency relationship is Aggregation or Composition relationship type.

[0171] In关系依赖性用来说明属于来源关系的元素同时是目标关系集合的成员。 [0171] In dependence relationship for explaining the relationship between elements belonging to the source of the relationship is a member of the target set.

[0172] Contains关系依赖性用来说明属于来源关系的元素集合包括属于目标关系的元素集合。 [0172] Contains dependent relationship for explaining a relationship between an element belonging to the source of the target set comprises elements belonging to the set of relationships.

[0173] SameAs关系依赖性用来说明属于来源关系的元素与属于目标关系的元素相同。 [0173] SameAs dependent relationship for explaining the relationship between elements belonging to the source of the target with elements belonging to the same relationship.

[0174] Or关系依赖性用来说明两个关系中至少一个,来源关系或目标关系,应在运行时被分配。 [0174] Or-dependent relationship for explaining two relations at least a source or target relationship relationships, should be allocated at run-time.

[0175] Xor关系依赖性用来说明两个关系中仅有一个,来源关系或目标关系,应在运行时被分配。 [0175] Xor-dependent relationship for explaining two relations only a source or target relationship relationships, should be allocated at run-time.

[0176] Exclusive关系依赖性用来说明两个关系中至多一个,来源关系或目标关系,应在运行时被分配。 [0176] Exclusive-dependent relationship for explaining two relations up to a source or target relationship relationships, should be allocated at run-time.

[0177] 存在以下不同类型的实体: [0177] Different types of the following entities:

[0178] i .Entity (实体)类 [0178] i .Entity (entity) s

[0179] Entity类是数据库中的持久性类(实现接口“AbstractValue”),其具有属性(继承自“CompositeValue”)以及与其他类的关系。 [0179] Entity class is persistent database classes (implementing the interface "AbstractValue"), which has a property (inherited from "CompositeValue") and relationships with other classes. 图9A示出Entity类的示例。 FIG 9A shows an example Entity class.

[0180] 实体可具有诸如(constrainable (可约束)、cached (缓存))的Stereotype,诸如(expandable (可扩展)、non expandable (不可扩展)和Business Tagged Value (业务标记值))的Tagged Value以及Attribute (属性)。 [0180] entity may have such (constrainable (to bind), cached (cache)) of Stereotype, such as (Expandable (expandable), non expandable (non-extended) and Business Tagged Value (service tag value)) of the Tagged Value and attribute (properties).

[0181] ii · Constrainable (可约束)类 [0181] ii · Constrainable (to bind) class

[0182] C 〇nstrainab I e类是数据库中开发人员可对其定义约束的持续性类。 [0182] C I e 〇nstrainab class is persistent database developer can define constraints of its class. Constrainab Ie类是Stereo type 为“cons trainable” 的“entity (实体)”。 Constrainab Ie class is Stereo type for the "cons trainable" of "entity (entity)." 图8不出Cons trainable 类810 的不例。 8 no no Example 810 Cons trainable classes.

[0183] iii · Constraints (约束)类 [0183] iii · Constraints (constraint) s

[0184] Constraints类的目的是定义Constrainable类的约束。 Objective [0184] Constraints are defining constraints Constrainable class class. “Constraints”类应继承自受约束类(其Stereotype也应为“Constrainable”或“constraints”)。 "Constraints" class should inherit from the constrained class (which should also be Stereotype "Constrainable" or "constraints").

[0185] 图8不出Constraints/Constrainable类的使用。 [0185] FIG 8 not Constraints / Constrainable class. Equity (资产净值)820、Right (权利)830和Warrant (担保)840这些类是具有特定特性(固定值、多样性)的安全性(security)。 Equity (NAV) 820, Right (rights) 830 and Warrant (guarantee) 840 which is a class having specific characteristic (fixed value, diversity), security (security). 约束是: Constraints are:

[0186] Equity 820:针对这个类,属性“assetNature (资产本质)”为冻结(frozen),只读, 且具有固定值“Equity”。 [0186] Equity 820: For this class, attribute "assetNature (Asset essentially)" is frozen (Frozen), read-only, and has a fixed value "Equity."

[0187] Right 830 :针对这个类,属性“assetNature”为冻结,只读,且具有固定值“Right”。 [0187] Right 830: For this class, attribute "assetNature" a frozen, read-only, and has a fixed value "Right".

[0188] Warrant 840 :针对这个类,属性“assetNature”为冻结,只读,且具有固定值“Warrant”。 [0188] Warrant 840: For this class, attribute "assetNature" a frozen, read-only, and has a fixed value "Warrant".

[0189] iv. Composite (组合)类 [0189] iv. Composite (combination) s

[0190] Composite类在数据库中不具持久性,并不实现接口“AbstractValue”,但具有属性和关系。 [0190] Composite class of non-persistent in the database, the interface does not implement "AbstractValue", yet have properties and relationships. Composite类继承自“CompositeValue (组合值)” Xomposite类具有Stereotype 和Tagged Value。 Composite class inherits from "CompositeValue (combined value)" Xomposite class and having a Stereotype Tagged Value. 图9B提供Composite类的不例。 FIG 9B is not provided in the embodiment Composite class.

[0191] v.Macro (宏)类 [0191] v.Macro (macro) type

[0192] Macro类用来优化类图中相同属性的重复。 Repeat [0192] Macro-based class diagram is used to optimize the same property. 当(不同类的)相同属性普遍用于许多类时,Macro的定义可非常有用。 When (different types of) the same attribute are common to many classes, Macro definitions may be useful. 实际上,Macro表达同一类中相同属性的语义分组,以使得这些属性可供其他类使用。 Indeed, Macro semantics packet in the same class the same attribute, such that these properties are available to other classes. 图9C提供Macro类的示例。 Figure 9C provides an example Macro classes.

[0193] d. ControlIer (控制器)类 [0193] d. ControlIer (Controller) -based

[0194] Controller类的类型是算法定义结构,且含有一个或更多个编写的算法(又称作Method (方法))。 [0194] Controller class type definition structure are algorithms, and containing one or more algorithms written (also referred to as Method (Method)). 类似于Simple类型和Entity类型,Controller类的类型可由框架所提供的标准模型来预定义,或者也可在目标应用程序的特定模型中定义。 Simple type similar to the standard model and Entity type, the frame type may be provided by the Controller class be predefined, or may be defined in a specific model of the target application. Method可具有一个或更多个输入数据元素(又称作输入参数),且可返回至多一个输出元素(又称作返回值)。 Method may have one or more input data elements (also referred to as input parameters), and may return up an output element (also referred to as the return value). 输入参数和返回值都表示Simple类的类型、Entity类的类型或接口的实例。 Input arguments and return values ​​represent examples of the type or interface type Simple class, Entity class. 控制器可具有作为别名的较短名称,且用作计算公式的应用程序代码或表达式在提及指定Controller时使用这个别名。 The controller may have a shorter alias name, and the calculation formula as application code or alias used expression when referring to the specified Controller. 图9D提供Contro 11 er类的示例。 FIG. 9D provide exemplary Contro 11 er class.

[0195] e · Interface (接口) [0195] e · Interface (interface)

[0196] Interface是用作模板的异类结构,所述模板含有具有一个或更多个Simple类的类型的字段,且Interface可与其他Entity类的类型或接口具有关系。 [0196] Interface heterogeneous structure is used as a template, said template comprising a field having one or more types Simple type, and may have a relationship with the Interface Type or other interfaces Entity class. 类似于Simple类型和Entity类型,接口可由框架所提供的标准模型来预定义,或者也可在目标应用程序的特定模型中定义。 Simple type similar to the standard model and Entity type, the interface provided by the framework be predefined, or may be defined in a specific model of the target application.

[0197] Interface分组含有图10所示的以下接口: [0197] Interface packet contains the following interfaces shown in Figure 10:

[0198] i. Value (值)接口 [0198] i. Value (value) interface

[0199] “Value” 1010 :这个接口是框架中所有元素的超接口。 [0199] "Value" 1010: This interface is the interface for all super frame elements. 所有实施类缺省不具持久性。 All non-default implementation classes persistence. 用户可定义其自己的接口“Value”,其扩展Value或其子接口中的一个。 Users can customize their own interface "Value", or its expanded Value of a sub-interface. 这些新接口用来定义属性,且与其他接口或类形成关系。 These properties are used to define new interfaces and form relationships with other classes or interfaces. 所有实施类不具持久性(举例来说,Stereotype为“Composite”)。 All non-persistent class of embodiments (for example, Stereotype as "Composite").

[0200] ii · AbstractValue (抽象值)接口 [0200] ii · AbstractValue (abstract value) interface

[0201] “AbstractValue” 1020:这个接口是数据库中所有持久性实体的超接口。 [0201] "AbstractValue" 1020: The interface is the interface to the database over all persistent entities. 这个接口定义技术字段(pk、creationDate (创建日期)、creatorUserId (创建者用户Id)、updateDate (更新日期)、updatorUserId (更新者用户Id)、accessPoint (接入点)、type (类型))。 This interface defines the technical field (pk, creationDate (creation date), creatorUserId (creator user Id), updateDate (Updated), updatorUserId (update by user Id), accessPoint (access point), type (type)). AbstractVa Iue的所有子接口的Stereo type必须为“ab s tract va lue”,且所有子类的Stereotype必须为“entity”。 Stereo type all sub AbstractVa Iue interface must be "ab s tract va lue", and all subclasses of Stereotype must "entity". 如果用户定义接口“abstractvalue”,那么其可定义属性(并非运算),且与其他类或接口形成关系。 If the user defined interfaces "abstractvalue", then the attributes defined (not operational), and forming relationships with other classes or interfaces.

[0202] iii · Storage (存储)接口 [0202] iii · Storage (memory) interface

[0203] “Storage (存储)”:这个接口是Stereotype为“storage”的接口,其指定实施实体的存储。 [0203] "Storage (store)": This interface is Stereotype as "Storage" interface, which specifies storage entity embodiment. 接口Storage必须继承自接口AbstractValue。 Storage interfaces must inherit from the interface AbstractValue. 用户必须添加相关的Tagged Value “datasource (数据源)”。 The user must add the relevant Tagged Value "datasource (data sources)." 实施所创建接口的所有类将存储在指定数据源中。 The embodiments create an interface all of the classes are stored in the specified data source. Tagged Value 的值“datasource”与实际数据库之间的映射将在部署应用程序时执行。 Tagged Value mapping between the value of "datasource" and the actual database will be executed when the application is deployed.

[0204] 示例:客户购买了Palmyra业务应用程序,其具有与另一应用程序的接口,但这个应用程序具有其自身的数据库。 [0204] Example: customer purchased Palmyra business applications, which has an interface with another application, but this application has its own database. 设计人员需要创建新的存储实体,其继承自接口Storage且分配到对应数据源。 Designers need to create a new storage entity, inherited from the Interface Storage and assigned to the corresponding data source.

[0205] iv.Historicized (历史)接口 [0205] iv.Historicized (history) Interface

[0206] “Historicized” 1030:其说明实施实体将被记录成历史。 [0206] "Historicized" 1030: implementation description thereof will be recorded as a history entity. 系统定义两个接口: Historicized和HiStoricizedOnDelete (历史删除)。 The system defines two interfaces: Historicized and HiStoricizedOnDelete (historical deleted). Historicized实体是继承自上述两个接口中的一个的类。 Historicized entity is inherited from one of the two interfaces of the class. 系统将维护对这个实体的实例进行的所有修改的历史。 The system maintains a history of all changes to the instance of this entity carried out. 用户可定义其自己的接口“historicized”,其将Tagged Value定义为“historydatasource (历史数据源)”。 Users can define their own interface "historicized", which will Tagged Value is defined as "historydatasource (historical data sources)." 实施所创建接口的所有类将记录在指定历史数据源中。 All classes created by the implementation of the interface will be recorded in the history of the specified data source. Tagged Va Iue的值“historydatasource”与实际数据库之间的映射将在部署应用程序时执行。 The mapping between the values ​​Tagged Va Iue of "historydatasource" with the actual database will be executed when the application is deployed.

[0207] 图10给出这些接口的层次结构。 [0207] Figure 10 shows the hierarchy of these interfaces.

[0208] 3 · Class Decoration (类装饰)的类型 [0208] 3 · Class Decoration (Class A decorative) Type

[0209] 特定的预定义装饰被唯一地创建Tagged Value和Stereotype,其经设计以促进目标软件应用程序的创建。 [0209] certain predefined uniquely decorated to create a Tagged Value and Stereotype, which is designed to facilitate the creation of a target software application.

[0210] 类图的装饰提供接口、类、关系和字段这类元素的附加信息。 Decorative [0210] FIG class provides an interface, classes, fields, and additional information about the relationship of such elements. 装饰分成Tagged Value和Stereotypec3Tagged Value用来借助于所要值(诸如,数字或字符)向元素添加信息。 Decorative and Tagged Value Stereotypec3Tagged Value divided to a desired value by means (such as a number or character) information added to the elements. Stereotype经添加以对这些元素进行分类,诸如,Enti ty和Constraint,或者经添加以添加Stereo type Cons trainable这类信息,然而并不分配值给Stereo type。 Stereotype by adding these elements to be classified, such as, Enti ty and the Constraint, or by adding Stereo type Cons trainable to add such information, however, does not assign a value to a Stereo type. 可用Tagged Value和Stereotype的列表视元素的类型而有所不同。 Tagged Value types are available and Stereotype list varies depending on the elements.

[0211] 由框架所提供的标准UML模型将排他地定义所有Stereotype。 [0211] Standard UML models provided by the frame to define all exclusively Stereotype. 另外,标准UML模型将定义一些Tagged Value,而目标应用程序的特定模型可定义其他Tagged Value。 In addition, the standard UML model will define Tagged Value, and the particular model of the target application define additional Tagged Value. 表2列出Palmyra的Stereotype和Tagged Value。 Table 2 lists the Stereotype Palmyra and Tagged Value.

[0212] 表2:Palmyra的Stereotype和Tagged Value [0212] Table 2: Palmyra and Tagged Value of Stereotype

[0213] [0213]

Figure CN102656557BD00191

Figure CN102656557BD00201

[0215] [0215]

Figure CN102656557BD00211

[0216] a .Tagged Value (标记值)简介 [0216] a .Tagged Value (value tag) Introduction

[0217] Palmyra元素可具有称作Tagged Value的特性^Tagged Value是提供给接口、类、 关系和字段这类元素的特性Jagged Value可以是强制的或是可选的。 [0217] Palmyra element may have the characteristics referred Tagged Value ^ Tagged Value is provided to the characteristics of the interface, classes, fields, and the relationship between such elements Jagged Value may be mandatory or optional. 所有特定Tagged Value (目标应用程序的特定模型中加以定义)是可选的。 All specific Tagged Value (to be defined in a particular model of the target application) is optional. 一旦将Tagged Value添加到元素, 值将被分配给所述Tagged ValueDTagged Value的一个示例是Calculation Formula (计算公式)。 Once Tagged Value added to the element, the value will be assigned to said one example is Tagged ValueDTagged Value Calculation Formula (calculation formula). 当将Calculation FormuIa添加到字段时,表达式将作为值被分配给所述Calculation Formula0 Calculation FormuIa when added to the field, the expression will be assigned as the value to the Calculation Formula0

[0218] b. Stereotype (范型)简介 [0218] b. Stereotype (paradigm) Introduction

[0219] Stereotype也是提供给元素的特性。 [0219] Stereotype also provide properties to the elements. 不同于Tagged Value,在Stereotype使用时并未被分配值。 Unlike Tagged Value, it has not been assigned values ​​when using Stereotype. 目标Stereotype仅表示需要一个值。 Stereotype target represents only need a value. 举例来说,当将Stereotype “Cons trainable” 添加或分配到Entity 类的类型时,Stereo type “Constrainable” 将通知系统稍后运行时可向Entity类的类型添加限制。 For example, when adding or Entity class assigned to the type of Stereotype "Cons trainable", Stereo type "Constrainable" may be added to limit the types of Entity class notifies the system run at a later time.

[0220] 可依据应用性的等级对Palmyra的Stereo type和Tagged Value进行分类D Stereotype和Tagged Value可定义为属性等级、类等级、关系等级或依赖性关系等级。 [0220] Stereo type available on the Palmyra and Tagged Value D Stereotype classified according to the application and Tagged Value of property defined as grade level, the class level, or the level relationship between level-dependent manner. 表2 列出了Palmyra的Stereotype和Tagged Value。 Table 2 lists the Stereotype Palmyra and Tagged Value.

[0221] c ·类的Stereotype [0221] c · Class Stereotype

[0222] “entity (实体)” :Stereotype为Entity的类具持久性D [0222] "entity (entity)": Stereotype with Entity Persistence is a class D

[0223] “composite (组合)” :Stereotype为Composite的类不具持久性D [0223] "composite (composition)": Stereotype Composite class of non-persistent D

[0224] “macro (宏)” :Stereotype为Macro的类具有一组可在一个以上类中重复的属性D 这些属性将成为具有附加属性的每一类的部分属性,所述附加属性的Type为这个Macro类。 [0224] "macro (macro)": Stereotype as Macro class having a set of more than one attribute class D duplicate these properties will be part of the attributes of each class having additional properties, Type attribute of the additional the Macro category. Type为Macro的每一属性将在生成步骤中被这个Micro类的所有属性替换。 Type to be replaced all the properties of this class for each attribute Micro Macro the generating step.

[0225] “controller (控制器)” :Stereotype为Controller的类可仅具有运算(动作)。 [0225] "controller (Controller)": Stereotype of Controller class may have only operation (action).

[0226] “typename (类型名称)” :Stereotype为Typename的类用来列出一个类的所有子类。 [0226] "typename (type name)": Stereotype Typename class is used to list all the sub-classes of a class. 这信息设在Tagged Value类名中。 This information is located in the Tagged Value class name. 举例来说,如果用户添加Tagged Value “classname” 为“StringValue”的typename类,那么type为这个typename类的每个字段将具有“StringValue”的所有子类的值D For example, if the user adds Tagged Value "classname" to "StringValue" typename the class, then for each field type typename this class will have a value D "StringValue" all subclasses

[0227] “dynamictypename (动态类型名称)” :Stereotype为Dynamictypename的类是Typename类的变型。 [0227] "dynamictypename (dynamic type name)": Stereotype is Dynamictypename Typename class is class variants. 除了classname以外,用户可指定included (包括)和excluded (排除)类型。 Apart classname, the user may specify included (including) and excluded (negative) types. 用户可指定以下9种类型:type_AbstractValue (抽象值)、type_Interface (接口)、 type_CompositeValue (组合值)、type_Constraintable (可约束)、type_Constraints (约束)、type_ColIectionValue (集合值)、type_SimpleValue (简单值)、type_BusinessEntity (业务实体)、type_ExcludeAll (排除全部)以及type_IncludeAll (包括全部)。 The user can specify the following 9 types: type_AbstractValue (abstract value), type_Interface (interfaces), type_CompositeValue (combined value), type_Constraintable (to bind), type_Constraints (constraint), type_ColIectionValue (set value), type_SimpleValue (simple value), type_BusinessEntity ( business entities), type_ExcludeAll (exclude all) and type_IncludeAll (including all).

[0228] “attr (属性)” :Stereotype为Attr的类可针对Palmyra的Simple类型的元数据有附加限制。 [0228] "attr (attribute)": Stereotype of Attr class may have additional restrictions for metadata of Palmyra Simple type. 用户可指定具有所有所要特性的定制Simple类型,所述特性诸如缺省format (格式)、mask (屏蔽)、max (最大值)、min (最小值)'precision (精度)以及rounding (取整)D Simple user may specify a custom type has all the desired features, characteristics such as the default format (format), mask (masking), max (maximum), min (minimum) 'precision (accuracy), and a Rounding (rounded) D

[0229] “enum (枚举)” :Stereotype为Enum的类表示枚举D其属性呈现type为“enum”的字段的所有可能值C3每一Enum类的元素应继承自Palmyra的StringValue类型或其子类中的一个。 [0229] "enum (enumeration)": Stereotype as Enum Class D represents an enumeration type which exhibits properties for all possible values ​​of "enum" field element C3 of each class should Enum type inherits from Palmyra, or StringValue subclass a.

[0230] “controllername (控制器名称)” :Stereotype为Controllername的类可列出控制器的所有子类D这信息设在Tagged Value“baseclassname”中D [0230] "controllername (controller name)": Stereotype Controllername class lists of all the sub-control information which is provided in D-Tagged Value "baseclassname" in D

[0231] “actionenum (动作枚举)” :Stereotype为Actionenum的类具有运行时被动态分配的值。 [0231] "actionenum (operation enumeration)": Stereotype class having a value of Actionenum be dynamically allocated at runtime. Actionenum具有两个Tagged Value: controIlername和actionname 〇Actionenum类的可能值是与Tagged Value “controllername”中所指定的控制器相关的Tagged Value “act ionname”中所指定的动作的执行结果。 Actionenum having two Tagged Value: controIlername and possible values ​​actionname 〇Actionenum class associated with the execution result "controllername" as the designated controller Tagged Value Tagged Value "act ionname" specified operation.

[0232] d.接口的Stereotype [0232] d. Stereotype interface

[0233] “value (值)” :“value” 接口是非持久性接口D [0233] "value (Value)": "value" of the interface is non-persistent interface D

[0234] “abstractvalue (抽象值)” :stereotype为“abstractvalue” 的接口是持久性接口。 [0234] "abstractvalue (abstract value)": stereotype as "abstractvalue" interface persistent interface. 其所有子类可保存到任何存储服务。 All of its subclasses can be saved to any storage service.

[0235] “Storage (存储)” :stereotype为“storage” 的接口用来识别“datasource (数据源)”(数据库),其可供所有实施实体使用。 [0235] "Storage (store)": stereotype as "Storage" interface is used to identify the 'DataSource (data source) "(database), which is available to all entities embodiment.

[0236] “historicized (历史)” :stereotype为“historicized” 的接口用来识别“historydatasource (历史数据库)”(数据库),其用来存储所有实施实体的历史表。 [0236] "historicized (history)": stereotype as "historicized" interface is used to identify "historydatasource (history database)" (database) which stores all embodiments entity history table.

[0237] e.与View (视图)相关的元素 [0237] e. The View (View) related elements

[0238] 这些元素有助于定义实体属性和关系的缺省视图。 [0238] These elements contribute to define a default view entity attributes and relationships. 这些特性将添加到供Palmyra 的Presentation (呈现)服务所使用的元素的元数据。 These features will be added to the Presentation for Palmyra (presentation) metadata elements used by the service.

[0239] “invisible (不可见)” :Tagged Value为“Invisible”的属性可用来使得所有服务路径下的相关联对象无法查看。 [0239] "invisible (not visible)": Tagged Value to "Invisible" attribute can be used to make the associated objects in the path all the services can not be viewed. 如果用户想要特定路径下的对象变为可见,那么用户必须使用视图格式来添加。 If you want an object in a specific path becomes visible, the user must be added using the view format.

[0240] “style (样式)” :Tagged Value为“Style”的属性可用来使用特定样式来检查对象。 [0240] "style (style)": Tagged Value of "Style" attribute can be used to check the object using a specific pattern. 样式的值可以是Palmyra所支持的布局中的一种。 The value of the style can be a Palmyra supported layout. 所述值也可含有用于确定条件的标准,其必须经过验证以便应用特定布局。 The value may also contain a standard condition for determining which must be verified in order to apply a specific layout.

[0241] “order (序列)” :Tagged Value为“Order”的属性含有给出视图序列内的位置的整数值,其中特定对象的序列将在被检查类内被检查到。 [0241] "order (sequence)": Tagged Value of "Order" property contained within the given position of the view sequences integer values, wherein the sequence specific to the object to be inspected in the inspection category. 用户必须仔细,以避免针对两个不同对象使用相同序列。 The user must be careful to avoid using the same sequence for two different objects.

[0242] “label (标签)” :Tagged Value为“Label”的属性将使用标签中的指定值来查看。 [0242] "label (tag)": Tagged Value is the "Label" property to the specified value tag view.

[0243] “readonly (只读)” :Tagged Value为“Readonly” 的属性无法修改。 [0243] "readonly (Read Only)": Tagged Value to "Readonly" property can not be modified.

[0244] “frozen (冻结)”(使用UML编辑器中的可换性特性来定义):当设为属性时,UML设计器必须向属性提供一个初始值,且其缺省视图是只读(Read Only)模式。 [0244] "frozen (frozen)" (available for defining characteristics of the UML editor): When set to the attribute, UML design must provide an initial value to the property, and the default view is read-only ( Read Only) mode.

[0245] f ·与Database (数据库)相关的元素 [0245] f · and Database (database) related elements

[0246] “mandatory (强制)”:(使用UML编辑器中的可换性特性来定义,见表1):当在属性等级设置时,这个属性说明这个字段的值必须设为一个值而不能为空值。 [0246] "mandatory (mandatory)" :( using UML editor to define the characteristics of replaceability, see Table 1): When the level setting property, the property value of this field must be described to a value not null.

[0247] “index (索引)” :Tagged Value设为“Index”的属性必须在数据库中进行索引,以便加速查找性能。 [0247] "index (Index)": Tagged Value is set to "Index" property must be indexed in the database, in order to accelerate the lookup performance. 当在类等级定义时,这个属性用作Tagged Value,且设成必须进行索引的属性组(例如,111(161 = 1«^1,1^72,1^73)。如果必须对一个以上组进行索引,那么必须设定若干Tagged Value。 When the class level definition, this attribute is used Tagged Value, and must be set to the attribute of a group index (e.g., 111 (161 = 1 «^ 1,1 ^ 72,1 ^ 73). If more than one group must index, you must set a number Tagged Value.

[0248] “unique (唯一)” :Stereotype设为“unique”的属性说明这个元素在数据库中具有唯一约束。 [0248] "unique (unique)": Stereotype Set "unique" property described in this element has a unique constraint database. 当在类等级定义时,这个属性用作Tagged Value且设成必须唯一的属性组(例如,unique = key I ,key 2,key3)。 When the class level definition, this attribute is used to set and Tagged Value must be unique set of attributes (e.g., unique = key I, key 2, key3). 如果一个以上组必须唯一,那么必须设定若干Tagged Value。 If more than one group must be unique, you must set a number Tagged Value. “unique” 也验证“mandatory” 特性和Tagged Value “index”。 "Unique" also verify "mandatory" features and Tagged Value "index".

[0249] “datasource (数据源)”:与Stereotype—起使用,这个接口Tagged Value指定实现这个接口的所有实体(及其子类)所使用的数据库。 [0249] "datasource (data sources)": used together with Stereotype-, this interface Tagged Value specified achieve this all entities (and subclass) used by the database interface. UML中指定的值将在Palmyra Setup (设置)工具运行时映射到实际数据库。 Value specified in the UML mapped to the actual database Palmyra Setup (set) tool runs.

[0250] “historydatasource (历史数据源)”:这是用在接口中的Tagged Value,其扩展接口“Historicized”。 [0250] "historydatasource (Historical Data Source)": This is the interface used in the Tagged Value, which extended interface "Historicized". “historydatasource”用来指定用于历史记录的数据源。 "Historydatasource" is used to specify the data source for the history.

[0251] “code (代码)” :code是唯一地表示对象的字符串。 [0251] "code (Code)": code is a unique string representing the object. code包括其属性或关系集合中的一个或一串。 code including attribute or relationship in a set or string. 缺省的实体代码是其数据库主键(primary key)。 The default is the entity code database master key (primary key). 当属性或关系具有StereotypeYode”时,这说明这个属性或关系是对象代码的部分。如果代码被组合,那么Stereotype属性必须使用Tagged Value “orderincode (次序代码)”来排序,“code”也验证“mandatory” 特性以及Stereotype “index” 和“unique”。 When the attribute or relationship with StereotypeYode "when indicating the attribute or relationship is part of the object code. If the code are combined, then Stereotype attributes must Tagged Value" orderincode (order code) 'to sort, "code" also verify "mandatory "characteristics and Stereotype" index "and" unique ".

[0252] “asp” :这是个用于属性的Stereotype,以便管理不同用户之间的全局实体的共享。 [0252] "asp": This is an attribute of Stereotype to share global management entity between different users. 用户仅允许访问相关联实体的子集。 Users are allowed access only to a subset of the associated entities. 管理员必须设置用户特性,以便透明地将其映射到asp属性,从而确定允许访问哪个子集。 Administrator must set up the user properties so transparently mapped to asp attributes to determine which subset of allowed access.

[0253] “indexgroup (索引组)”:这个Tagged Value用来说明带有这个属性的相关联组必须在数据库中进行索引,以便加速查找性能。 [0253] "indexgroup (Index Group)": This Tagged Value for explaining a group associated with this attribute must be indexed in the database to find the acceleration performance.

[0254] “uniquegroup (唯一组)”:这个Tagged Value用来说明带有这个属性的组在数据库中具有唯一约束。 [0254] "uniquegroup (the only group)": This Tagged Value for explaining this group with a unique constraint attribute in the database.

[0255] “skewed (斜行)”:当这个Tagged Value设为true时,对象必须传递到SQL查询作为其值的内容而不是作为预备语句。 [0255] "skewed (oblique)": When the Tagged Value set to true, the object must be passed to the SQL query as the content of its value rather than as a prepared statement.

[0256] “transient (暂态)”:说明这个属性或关系是暂态的,且不会映射到数据库中。 [0256] "transient (transient)": The Description attribute or relationship is transient and is not mapped to the database.

[0257] g.与Constraint (约束)模型相关的元素 [0257] g. Elements associated with the Constraint (constraint) Model

[0258] “constrainable (可约束)”:这个Stereotype说明类是受到约束的。 [0258] "constrainable (to bind)": This class is described Stereotype constrained. 这个Stereotype在从超类创建受限类时是强制的。 The Stereotype When creating a restricted class from the superclass is mandatory.

[0259] “constraints (约束)”:这个Stereotype说明类的超类具有约束。 [0259] "constraints (constraint)": This Stereotype described superclass binding. 受约束类可在运行时更改其部分超特性,诸如,Attribute (属性)范围和关系基数。 Constrained change some of its super-class properties at run time, such as, the Attribute (attributes) and the relationship between the range of the base.

[0260] “originalname (原始名称)”:这个Tagged Value与受约束类的关系相关联,以便说明覆写关系(或角色)的原始名称。 [0260] "originalname (original name)": The Tagged Value with the original name of the relation constraints associated with the class subject, in order to explain the relationship overwritten (or role). Stereotype类是其超类的约束。 Stereotype class is bound by its superclass.

[0261] h.与Model (模型)相关的元素 [0261] h. And Model (model) related elements

[0262] “sequence (序列)”:这个Stereotype与将被动态分配到唯一序列值的属性相关联。 [0262] "sequence (sequence)": This Stereotype and will be dynamically allocated to the attribute value associated unique sequence.

[0263] “set (集合)” :set是应用到1到η组合和聚合关系的缺省Stereotype 〇[0264] “list (列表)” :list是应用到1到η组合和聚合关系的Stereotype Jist依据用户定义的序列对其拥有的元素进行索引。 [0263] "set (set)": set to 1 is applied to the composition and polymerization relationship η default Stereotype square [0264] "list (list)": list Stereotype JIST is applied to a composition and to polymerization relationship η index element has its basis of user-defined sequence. 这些元素将依序显示,且可使用上下箭头或“order list (排序列表)”动作重新排序。 These elements will be sequentially displayed, and may use up and down arrows or "order list (ordered list)" action reordered.

[0265] “map (映射)” :map是应用到1到η组合和聚合关系的Stereotypet3Iiiap依据用户定义的角色(键)对其拥有的元素进行索引。 [0265] "map (map)": map is applied to the user based on 1 Stereotypet3Iiiap relationship defined roles (key) to the index η polymerizable composition and its elements have.

[0266] “indexname (索引名称)”:这个Tagged Value说明施加给属性的索引的名称。 [0266] "indexname (index name)": This is applied to the Tagged Value Description Name Index property.

[0267] “indexisunique (索引唯一)”:这个Tagged Value用来定义唯一性条件,所述唯一性条件对“map”关系中index字段和所有者的对称角色两者进行分组。 [0267] "indexisunique (unique index)": This is used to define the unique Tagged Value condition, the condition of both the unique character of symmetry "map" relation and owner index field grouping. 施加这类唯一条件时,针对索引字段的每一可能值仅返回一个集合项。 When such conditions are applied to the sole, for each value of the index field may only return a collection of items. 未施加no unique (不唯一)约束时,一个以上项可与索引字段的每一可能值相匹配。 It is not applied when no unique (non-unique) constraints, and may be more than one entry for each possible value of index fields match. 在这种情况下,关系将为隐藏的,且无法经由Palmyra的缺省呈现接口来创建或更新集合。 In this case, the relationship will be hidden, and can not be rendered by default Palmyra interfaces to create or update the collection.

[0268] i ·与Dependency (依赖性)关系相关的元素 [0268] i · and the Dependency (dependent) relationship correlation elements

[0269] 对于所有依赖性关系,以下3个Tagged Value是强制的: [0269] For all dependencies, the following 3 mandatory Tagged Value:

[0270] “root (根)”:说明依赖关系所属的基类。 [0270] "root (root)": Description dependency base class belongs.

[0271] “source (源)”:说明来源关系的角色。 [0271] "source (source)": description of the role of the source of the relationship.

[0272] “target (目标)”:说明目标关系的角色。 [0272] "target (goal)": description of the role target relations.

[0273] Stereotype定义所需依赖性关系的类型。 [0273] Stereotype defined types of dependencies required.

[0274] “sameas” :说明依赖关系的目标类是相同的。 [0274] "sameas": Targets class dependencies are the same.

[0275] “in” :说明来源关系必须是目标类的集合中的一个。 [0275] "in": relationships must explain the source is a set of goals in a class.

[0276] “contains” :说明目标关系的集合包括在来源关系的集合中。 [0276] "contains": description of the relationship between the set target included in the set source relations.

[0277] “exclusive” :说明可设定来源关系和目标关系中至多一个。 [0277] "exclusive": Description Source relationships and can be set up in a certain relationship.

[0278] “or” :说明可设定来源关系和目标关系中至少一个。 [0278] "or": Description Source relationships and can be set at least a target relationship.

[0279] “xor” :说明仅可设定来源关系和目标关系中的一个。 [0279] "xor": Description can be set only one source relationship and destination relationship.

[0280] j.SLA Tagged Value [0280] j.SLA Tagged Value

[0281] “slaname” :这个Tagged Value含有继承自Palmyra接口的SLAInterface (SLA接口)的类的名称。 [0281] "slaname": The Tagged Value contains the name of the class inherits from SLAInterface (SLA Interface) Palmyra interfaces.

[0282] “context (上下文)”:这个Tagged Value含有用来查找SLA的参数。 [0282] "context (Context)": this parameter is used to find Tagged Value containing the SLA.

[0283] k.SOA Stereotype [0283] k.SOA Stereotype

[0284] “interface” :这个Stereotype仅可应用于Stereotype为“controller” 的类。 [0284] "interface": This is applicable only Stereotype Stereotype as "controller" of the class. 对于属于“interface”控制器的方法,所有参数和返回值无法是Interf ace或CompositeValue (组合值)、ColIectionValue (集合值)、ListValue (列表值)和MapValue (映射值)。 Belonging to "interface" the control method, all parameters and return values ​​or not is Interf ace CompositeValue (combined value), ColIectionValue (set value), listValue (value list) and MapValue (map value). 这个约束无法应用于方法的任何子类。 This constraint can not be used in any sub-class method. Interface说明这个控制器的方法可为Palmyra以外的应用所用。 Controller Interface Description This method may be used in applications other than Palmyra.

[0285] “reference (参考)”:这个Stereotype仅可应用于Stereotype为“controller” 的类。 [0285] "reference (Reference)": This is applicable only Stereotype Stereotype as "Controller" class. Ref erence说明这个控制器方法的所有实施可存在于Palmyra以外的应用中。 Ref erence all embodiments described in this application controllers may be present in other than a method of Palmyra.

[0286] 1.其他Tagged Value [0286] 1. Other Tagged Value

[0287] “orderincode (次序代码)”:这个Tagged Value是整数值,其给出构成代码的属性组内特定代码的排序。 [0287] "orderincode (order code) ': This Tagged Value is an integer value, which gives the ordering property of the group consisting of the codes of the specific code. 这个Stereotype与Stereotype “code”相关。 The Stereotype related to Stereotype "code".

[0288] “alias (别名)”:这个Tagged Value用于控制器,以便指定其唯一别名。 [0288] "alias (alias)": The controller for the Tagged Value to specify a unique alias. 这有助于通过别名而并非全名来调用控制器。 This helps rather than the full name of the alias to call the controller. 控制器可具有一个以上别名。 The controller may have one or more aliases.

[0289] “controllername” :这个Tagged Value与Stereotype “actiondynamicenum (动作动态枚举)”一起使用。 [0289] "controllername": This Tagged Value and Stereotype "actiondynamicenum (enumeration dynamic action)" used together. “(3〇]11:1'〇1161'1^1]16”说明控制器的类名称,其含有返回值列表(6_11) 的方法。 "(3〇] 11: 1 1'〇1161'1 ^] 16" Description of the class name of the controller, the method comprising the returned list (6_11) of.

[0290] “actionname” :这个Tagged Value与Stereotype“actiondynamicenum”相关。 [0290] "actionname": The Tagged Value associated with Stereotype "actiondynamicenum". “ac ti onname”说明返回值列表的方法。 "Ac ti onname" explained a method that returns a list of values.

[0291] “possiblevaluesformula (可能值式)”:这个Tagged Value仅可应用于聚合关系。 [0291] "possiblevaluesformula (Formula possible values)": This is applicable only Tagged Value aggregation relationship. “possiblevaluesformula”的值必须是有效标准,且将在获取关系的可能值时加以使用。 Value "possiblevaluesformula" must be a valid standard, and will be used when possible acquisition value relationship.

[0292] “rounding” :这个Tagged Value可应用于type为“DoubleValue (双精度值)”的属性。 [0292] "rounding": This type is applicable Tagged Value "DoubleValue (double value)" of the property. “rounding”用来指定将应用到属性值的取整类型。 "Rounding" is used to specify the type of rounding applied to the attribute value.

[0293] “wordsize (字尺寸)”:这个Tagged Value指示给出呈现侧所显示的最大字长的数值。 [0293] "wordsize (word size)": This value gives an indication of the maximum Tagged Value word length of the side of the displayed presentation. “wordsize”在很长字符串的搜索结果中非常有用。 "Wordsize" very useful in the search results in a long string.

[0294] “defaultformula (缺省式)”:这个Tagged Value含有将经过计算作为缺省值的表达式。 [0294] "defaultformula (Formula default)": This expression will be calculated to contain Tagged Value as a default value.

[0295] “calculationformula” : Calculation formula (计算公式)用来说明字段或关系会依据计算表达式而自动分配。 [0295] "calculationformula": Calculation formula (calculation formula) for explaining the relationship between the field or will be automatically assigned based on the calculation expression. 公式可依据Entity类中定义的其他字段或关系。 Formula can be defined in other fields or relationships based on Entity class. 表达式是应用到字段或关系值、或应用到Controller类的类型中所定义的调用方法的结果上的算术或逻辑运算子列表。 Expression is applied to the field values ​​or relationships, or to the arithmetic or logical result of calling a method of the type Controller class defined in a list of operators. 如果字段或关系具有计算公式,那么这意味着字段或关系的值在运行时无法进行手动分配。 If the field or relationship with a formula, then this means that the value of a field or relationship can not be manually assigned at runtime.

[0296] “calendarpath (日历路径)”:这个Tagged Value含有业务日历的完整路径。 [0296] "calendarpath (calendar path)": The Tagged Value contains the full path to the business calendar.

[0297] “curpath (货币路径)”:这个Tagged Value含有货币类的完整路径。 [0297] "curpath (currency path)": This contains the full path of the currency Tagged Value class.

[0298] “domainmanager (域管理员)”:这个Tagged Value含有实施接口DomainManager (域管理员)的java类的完整路径。 [0298] "domainmanager (Domain Administrator)": This contains the full path Tagged Value java class interfaces embodiment the DomainManager (domain administrator) of.

[0299] “active (活跃)”:当字段处于关注状态,那么这个Tagged Value “active”就被设定为true。 [0299] "active (active)": When the field is concerned about the state, then the Tagged Value "active" it is set to true. 每当这个字段未被关注时,“active”将被重新刷新。 Whenever this field is not concerned, "active" will be redrawn.

[0300] “ownerclassname (所有者类名称)”:当字段的type为KeyNameValue (键名称值)、 CriterionValue (标准值)或ExpressionValue (标定值)时,必须指定这个Tagged Value。 [0300] "ownerclassname (owner class name)": When the type field is KeyNameValue (key name value), CriterionValue (standard value) or expressionValue (nominal value), must be specified Tagged Value. “ownerclassname”含有键的所有者类的引用。 "Ownerclassname" quoted the owner of the class containing the keys.

[0301] “ownerclasspath (所有者类路径)”:当字段的type为KeyNameValue、 CriterionValue或ExpressionValue时,必须指定这个Tagged Value。 [0301] "ownerclasspath (owner classpath)": When the type field is KeyNameValue, CriterionValue or ExpressionValue, must be specified Tagged Value. “ownerclassname”含有键的所有者类的完整路径。 "Ownerclassname" contains the full path to the owner of the class of bonds.

[0302] “BusinessTaggedValue (业务标记值)”:这是由Business Team (业务团队)定义的特殊Stereotype。 This is a special Stereotype Business Team (business team) defined: [0302] "BusinessTaggedValue (Business tag value)." 这个Stereotype下定义的全部Tagged Value将在所有UML元素(诸如,类、 字段、关系结束(Relation End)、接口)的Tagged Value的子类别BusinessTaggedValue中显不O Under this definition Stereotype Tagged Value All in all the UML elements (such as classes, fields, the relationship between the end (Relation End), interfaces) Subcategory BusinessTaggedValue the Tagged Value not significant in O

[0303] “storename (存储名称)”:这是用户可指定逻辑存储名称的Tagged Value。 [0303] "storename (store name)": This is the user may specify the name of the logical storage Tagged Value. “storename”用来存储type为“FileName (文件名称)”或其一个子类的属性的值。 "StoreName" type is used to store a value or a "FileName (file name)" attribute of a subclass. 用户可使用Setup (设置)工具使特定存储与每一storename相关联。 User can use the Setup (setting) a specific tool storage storename associated with each. 存储可以是文件夹或远程存储装置,诸如ftp。 May be stored in a folder or a remote storage device, such as ftp.

[0304] “fieldconfig (字段配置)”:这个Tagged Value用来指定与实现HasIncompleteState (具有完成状态)接口的类相关的配置。 [0304] "fieldconfig (Field configuration)": This is used to specify and implement Tagged Value HasIncompleteState (having completed state) associated with the class interface configuration. 用户可选择与选定实体相关的字段列表。 And a list of user selectable fields related to the selected entity.

[0305] “descriptionkeys (描述键)”:这个Tagged Value允许用户指定描述实体的键列表。 [0305] "descriptionkeys (described key)": This allows the user to specify Tagged Value description key list of entities. ,这个Tagged Value中指定的键列表将用来在呈现侧呈现实体。 This Tagged Value specified in the key list will be used to render the presentation entity side.

[0306] “ortarget (或目标)”:用户可使用这个Tagged Value在当前字段与同一实体中或有关系的另一实体中的另一字段之间定义“or”依赖性。 [0306] "ortarget (or target)": The user can use the Tagged Value in the current field with the same entity or a definition of "or" dependent relationship between the other fields in the other entity.

[0307] “xortarget (异或目标)”:用户可使用这个Tagged Value在当前字段与同一实体中或有关系的另一实体中的另一字段之间定义“x〇r”依赖性。 [0307] "xortarget (exclusive or target)": The user can use the Tagged Value in the current field with the same entity or a definition of "x〇r" dependent relationship between the other fields in the other entity.

[0308] “exclusivetarget (互斥目标)”:用户可使用这个Tagged Value在当前字段与同一实体中或有关系的另一实体中的另一字段之间定义“exclusive”依赖性。 [0308] "exclusivetarget (mutually exclusive objectives)": The user can use the Tagged Value in the current field with the same entity or a definition of "exclusive" dependent relationship between the other fields in the other entity.

[0309] m. Palmyra 类型 [0309] m. Palmyra Type

[0310] i .Palmyra的Simple类型 Simple type [0310] i .Palmyra of

[031 Ί] Palmyra的Simple类型能够依据业务需要进行个性化调整。 [031 Ί] Simple type Palmyra can be personalized adjustments based on business needs. 用户可定义其自己的类型(继承自Simple类型),并添加其所要调整的合适值的属性(Stereotype为“attr”)。 Users can define their own type (inherited from Simple type), and add the appropriate value of their property to be adjusted (Stereotype for the "attr"). 表3 列出Pa Imyra的S imp I e类型D Table 3 Pa Imyra S imp I e of type D

[0312] 表3: Palmyra 的Simple 类型 [0312] Table 3: Simple types of Palmyra

[0313] [0313]

Figure CN102656557BD00271

[0314] [0314]

Figure CN102656557BD00281

[0315] ii .Palmyra的特殊化类型 [0315] ii .Palmyra type specialization

[0316] Palmyra提供特殊化类型,以便允许特定功能的实施。 [0316] Palmyra provide specialized type, in order to allow the implementation of a specific function. 这些类型包括实体类型和接口。 These types include entity types and interfaces. 表4列出Palmyra的特殊类型。 Table 4 lists special type of Palmyra.

[0317] 表4: Palmyra的特殊类型 [0317] Table 4: Special types of Palmyra

Figure CN102656557BD00282

[0319] C.过程图 [0319] C. FIG procedure

[0320] 使用状态图建模技术来唯一地创建过程图,在所述技术中特定的预定义的装饰适用于提供唯一功能性,以使得系统能够解译各图并在稍后运行时运行过程。 [0320] FIG modeling techniques use state creation process FIG uniquely, in a predefined decorative art suitable for providing a specific unique functionality, to enable the system to interpret the drawings and is later run run process . 特定的预定义装饰经唯一地创建Tagged-Value和Stereotype,其经设计以促进创建目标软件应用程序。 Certain predefined decoration created by Stereotype Tagged-Value and uniquely, its goal to promote the creation of software applications through design.

[0321] 过程图表示过程定义(Process Definition)。 [0321] FIG showing the process definition process (Process Definition). 过程定义列出开始点与结束点之间发生的状况。 Situation occurred between the start and end points of the process definition list. 过程图包括系统和用户所执行的所有活动。 FIG processes and systems include all activities performed by the user. 过程包括许多个步骤。 Process involves many steps. 借助于使用状态图建模技术,由状态来表达步骤,且用转换来表达互连性。 By means of modeling techniques use state, the state is expressed by a step, and a conversion expressed interconnectivity. 使用两个预定义的状态来定义过程的开始和结束。 The use of two predefined state to define the start and end of the process. 状态之间的转换可由事件来触发,且由条件来保护。 Conversion can be triggered by events between the state and protected by the conditions. 一个事件可触发以特定序列定义的多个转换。 An event can trigger multiple conversion defined in a specific sequence. 当满足第一条件时,过程由具有所述满足条件的转换转到下一步骤。 When the first condition is satisfied, the process proceeds to the next step by the converter having said satisfied condition.

[0322] 状态分成持久状态和非持久状态两类。 [0322] state into a state of non-persistent and persistent state categories. 持久步骤是过程可停止等待外部事件的检查点,且非持久步骤表示由系统进行的活动。 Persistent step is to wait for the checkpoint to stop the process external events, activities and non-durable step is represented by the system.

[0323] 1.过程装饰列表 [0323] 1. Process decoration list

[0324] 过程图的装饰提供状态和转换这类元素的附加信息。 [0324] FIG decoration process and to provide additional status information conversion such elements. 装饰也同样分成Tagged Value和Stereotype〇 Decorative and Tagged Value divided equally Stereotype〇

[0325] a.Tagged Value [0325] a.Tagged Value

[0326] Tagged Value是提供给接口、类、关系和字段这类元素的特性。 [0326] Tagged Value is supplied to an interface, classes, fields and relations characteristic of such elements. Tagged Value可以是强制的或是可选的。 Tagged Value can be mandatory or optional. 所有特定Tagged Value (目标应用程序的特定模型中加以定义)是可选的。 All specific Tagged Value (to be defined in a particular model of the target application) is optional. 一旦将Tagged Value添加到元素,值将被分配给所述Tagged Valuec3Tagged Value的一个不例是Calculation Formula。 Once Tagged Value added to the element, the value will be assigned to the Tagged Valuec3Tagged Value of an embodiment is Calculation Formula. 当将Calculation Formula添加到字段时,表达式将作为值被分配给所述Calculation Formula。 When added to Calculation Formula field, the expression will be assigned as the value Calculation Formula.

[0327] 类似于类装饰中的Tagged Value,过程装饰中的Tagged Value是提供状态和转换这类元素的特性。 [0327] Decoration of similar class Tagged Value, the decoration process is to provide Tagged Value states and transitions characteristic of such elements. Tagged Value可以是强制的或是可选的。 Tagged Value can be mandatory or optional. 目标应用程序的特定模型中无法定义特定的Tagged Value。 Specific model of the target application can not define a specific Tagged Value. 一旦将Tagged Value添加到元素,值将被分配给所述Tagged Valuec3Tagged Value的一个示例是应用到转换的Order (次序)。 Once Tagged Value added to the element, the value will be assigned to one exemplary Tagged Valuec3Tagged Value is applied to the conversion of Order (order). 1、2和3等这类数字将分配给这个Tagged Value,以便表示次序。 And other such figures 2 and 3 will be assigned to the Tagged Value, in order to indicate the order.

[0328] b. Stereotype [0328] b. Stereotype

[0329] Stereotype也是提供给元素的特性。 [0329] Stereotype also provide properties to the elements. 不同于Tagged Value,在Stereotype使用时并未被分配值。 Unlike Tagged Value, it has not been assigned values ​​when using Stereotype. 目标Stereo type仅表示需要一个值。 Stereo type target represents only need a value. 举例来说,当将Stereo type “Cons trainable” 添加或分配到Entity类的类型时,Stereo type “Constrainab I e” 将通知系统稍后运行时可向Entity类的类型添加限制。 For example, when adding or Entity class assigned to a type Stereo type "Cons trainable", may be added to limit the types of Entity class Stereo type "Constrainab I e" notifies the system run at a later time.

[0330]同样类似于类装饰中的Stereotype,过程装饰中的Stereotype是提供状态和转换这类元素的特性。 [0330] Also similar to the class of Stereotype decoration, decoration of the process is to provide a Stereotype states and transitions characteristic of such elements. 在Stereotype使用时并未被分配值。 It has not been assigned a value in the Stereotype use. 目标Stereotype仅表示需要一个值。 Stereotype target represents only need a value. 举例来说,当将Stereotype “Persistent (永久性)”添加或分配到状态时,Stereotype “Persistent”将通知系统在所述步骤停止过程且等待事件。 For example, when the Stereotype "Persistent (permanent)" is added or assigned to the state, Stereotype "Persistent" the notification system to stop the process at the step and waits for an event.

[0331] 2.案例转换图 [0331] FIG 2. Case Conversion

[0332] 使用状态图建模技术来唯一地创建案例转换图,在所述技术中特定的预定义的装饰适用于提供唯一功能性,以使得系统能够解译各图并在稍后运行时创建案例动作。 When creating [0332] a state diagram modeling techniques used to uniquely convert FIG create a case, the predefined decorative art suitable for providing a specific unique functionality, to enable the system to interpret the drawings and run at a later case action. 特定的预定义装饰经唯一地创建Tagged-Value和Stereotype,其经设计以促进创建目标软件应用程序。 Certain predefined decoration created by Stereotype Tagged-Value and uniquely, its goal to promote the creation of software applications through design.

[0333] 案例转换图表示系统与用户之间经由用户接口的交互情境。 [0333] FIG converter case scenario showing the interaction between the system and the user via the user interface. 交互情境由状态图中各状态所表示的一组案例组成,且其间的互连性由转换来表达。 From the state in FIG interaction context of case a composition represented by each state, and the interconnectivity therebetween is expressed by the conversion. 运行时,案例由用户屏幕来表示,且转换由屏幕上显示的按钮这类动作来表示。 Run-time, the case is represented by the user's screen, and the conversion of such action is represented by a button displayed on the screen. 借助于单击这些按钮,系统显示所述按钮所表示的转换确定的另一屏幕。 By means of the button is clicked, the system displays another screen transition button represented determined.

[0334] 案例转换图的装饰提供状态和转换这类元素的附加信息。 [0334] FIG decorative case conversion status and provides additional information conversion such elements. 案例转换图的装饰仅限于Tagged Valuec3Tagged Value的一个示例是Action名称,其添加到转换时将向稍后在屏幕上显示的按钮提供一个标签。 Case transition diagram decor is limited to a sample Tagged Valuec3Tagged Value of Action is the name of the button to add the conversion will later be displayed on the screen provides a label.

[0335] 3.案例图 [0335] Figure 3. Case

[0336] Palmyra UML Designer工具使用状态图建模技术来创建UML案例图。 [0336] Palmyra UML Designer tool use state modeling techniques to create UML case diagram. 这个工具可在设计时定义案例、案例之间的导航,且定义案例所允许的动作。 The tool may be defined in the design case, navigation between the case and the case is defined actions allowed. 生成工具将使用这个设计来生成相对于所定义的所有案例和动作的寄存代码。 Generation tool will use this register to generate the code design with respect to all cases and actions defined. 设计人员可借助于案例的简图来定义所有动作和针对每一案例所允许的不同动作。 Designers can be defined for each case and all actions permitted by means of different actions sketch case.

[0337] 新子菜单“Palmyra UCs Diagrams”620添加到UML Designer的Diagram菜单600中(图6)。 [0337] New submenu "Palmyra UCs Diagrams" 620 added to the UML Designer Diagram menu 600 (FIG. 6). 这个图允许设计人员绘制其自己的案例并定义所述案例所允许的不同动作。 This allows the designer to draw FIG its own case and said case define different actions permitted. 用户可通过简单的单击项“Palmyra UCs Diagrams”中的菜单来创建这个图(图6)。 Users can create this chart (Figure 6) by simply clicking term "Palmyra UCs Diagrams" in the menu. 在创建新图后, 用户可手动为其添加Stereotype“usecase (案例)”。 After creating a new map, the user can manually to add a Stereotype "usecase (case)." 然后设计人员可添加他的特定案例和动作。 Then designers can add his particular case and actions.

[0338] a.案例: . [0338] a case:

[0339] 生成工具向案例提供一个缺省名称,例如,“USECASE1”。 [0339] generation tool provides a default name to the case, for example, "USECASE1". 在这种情况下,这个名称可修改为“UCAgency” 1110 (图11)。 In this case, the name may be modified to "UCAgency" 1110 (FIG. 11). 用户可查询并修改其特性。 Users can query and modify their properties. 以下是各字段的说明: The following is a description of each field:

[0340] Use Case:含有案例的名称。 [0340] Use Case: name contains cases.

[0341] Class Name:含有案例将被寄存到的类。 [0341] Class Name: The case containing the class to be registered. 可为空,在这种情况下案例可寄存到任何类。 It may be empty, in which case the case may be registered to any class.

[0342] Super Use Case :含有超案例名称。 [0342] Super Use Case: Case containing ultra name. 可为缺省Palmyra (例如,edit (编辑)、 searchlnput (搜索输入)、view (查看)等)或用户定义的案例。 May default Palmyra (for example, edit (edit), searchlnput (search input), view (View), etc.) or user-defined cases.

[0343] Button Input Configuration:允许用户定义准备案例所用的信息。 [0343] Button Input Configuration: allows user-defined information used to prepare the case.

[0344] 用户也可使用Palmyra UML Designer接口上提供的专家按钮填入一些专家信息。 [0344] The user can also use the Expert button provided on the interface Palmyra UML Designer fill in some expert information.

[0345] Use Case Result:是这个案例可返回的参数集合。 [0345] Use Case Result: This case is a set of parameters that can be returned.

[0346] b.动作处理器 [0346] b. Action processor

[0347] 为了创建动作处理器,设计人员必须单击工具栏上的相关按钮。 [0347] In order to create an action processor, designers must click the relevant button on the toolbar. 然后设计人员必须通过拖放来指定来源案例和目标案例。 Then the designer must specify the source and target case by case drag and drop. 图11展示动作处理器“AgencyCommandSearch (代理命令搜索)” 1130,其寄存在案例“UCAgency” 111 0中。 11 shows the operation of the processor "AgencyCommandSearch (Agent search command)," 1130, which is registered in the case of "UCAgency" 111 0 in.

[0348] 用户可查询并修改案例的特性。 [0348] The user can query and modify the characteristics of the case. 以下是各字段的说明: The following is a description of each field:

[0349] Name:含有动作处理器的名称。 [0349] Name: the name of the operation of the processor contains.

[0350] Action Name:其含有动作的缺省标识符,其视动作类型而定。 [0350] Action Name: an identifier containing a default action, which depends on the type of operation.

[0351] View Order:含有动作的次序。 [0351] View Order: sequence comprising the operation.

[0352] Position:含有动作在屏幕上的位置,可能值为顶部、底部,或顶部和底部。 [0352] Position: with location on the screen action, possible values ​​top, bottom, or top and bottom.

[0353] Navigation Type:说明来源案例与目标案例之间的导航的类型。 [0353] Navigation Type: description of the type of navigation between the source and target case case.

[0354] To Be Overridden:说明程序员是否被允许逾越动作处理器的一些方法。 [0354] To Be Overridden: whether the programmer is permitted to go beyond some methods of operation of the processor.

[0355] Button Show Expert:显示动作处理器的高级信息。 [0355] Button Show Expert: advanced information display operation of the processor.

[0356]如果用户是动作特性信息方面的专家,那么他可单击按钮“Show Expert (显示专家)”来定制一些特性。 [0356] If the user is operating characteristic information expert, he can click the button "Show Expert (display expert)" to customize some of the features.

[0357] 上下文的各字段如下: [0357] context of each field is as follows:

[0358] Action Type:表示动作的类型。 [0358] Action Type: indicates the type of operation.

[0359] Technical:这类动作是不可见的。 [0359] Technical: such an operation is not visible.

[0360] Submission:这类动作显示在视图中。 [0360] Submission: such operation is displayed in the view.

[0361] RowOperation:这类动作针对集合中每一行显示。 [0361] RowOperation: Such display operation for each line set.

[0362] ColumnOperat ion:这类动作针对集合中每一列显示。 [0362] ColumnOperat ion: such operation for each column in the display set.

[0363] TableOperation:这类动作在集合的头部显示,导航动作(next,last)属于这类。 [0363] TableOperation: Such a display operation in the head set, the navigation operation (next, last) belong to this class.

[0364] Action Name:动作类型为submission时这个字段含有动作的标识符。 [0364] Action Name: Action Type This field is contained when the submission operation identifier. 这个字段含有角色名称。 This field contains the name of the role.

[0365] Class Name:这个字段含有这个动作将被寄存的类的名称。 [0365] Class Name: this field contains the name of the class action to be registered.

[0366] Use Case:这个字段含有来源案例的名称。 [0366] Use Case: This field contains the name of the source case.

[0367] In Collection:这个字段说明动作是否将由集合来执行。 [0367] In Collection: this field will be set to indicate whether the operation performed.

[0368] 独立屏幕显示与目标案例相关的目标信息: [0368] Independent screen display target information related to the target case:

[0369] Navigation Type:动作执行后,这个特性说明应用是停留还是转至下一页。 [0369] Navigation Type: After the implementation of the action, illustrate the application of this feature is to stay or go to the next page.

[0370] On Return Action:返回目标案例时将执行的动作的名称。 [0370] On Return Action: name of the action when the case will return to the target execution.

[0371] On Return Action Type:返回目标案例时将执行的动作的类型。 [0371] On Return Action Type: type of action when the case will return to the target execution.

[0372] Action Type:表示动作的类型。 [0372] Action Type: indicates the type of operation.

[0373] Technical:这类动作是不可见的。 [0373] Technical: such an operation is not visible.

[0374] Submission:这类动作显示在视图中。 [0374] Submission: such operation is displayed in the view.

[0375] RowOperation:这类动作针对集合中每一行显示。 [0375] RowOperation: Such display operation for each line set.

[0376] ColumnOperat ion:这类动作针对集合中每一列显示。 [0376] ColumnOperat ion: such operation for each column in the display set.

[0377] TableOperation:这类动作在集合的头部显示,导航动作(next,last)属于这类。 [0377] TableOperation: Such a display operation in the head set, the navigation operation (next, last) belong to this class.

[0378] Action Name:这个字段含有动作的标识符。 [0378] Action Name: This field contains the identifier of the operation.

[0379] Class Name:这个字段含有目标案例的类的名称。 [0379] Class Name: This field contains the name of the class goal cases.

[0380] Use Case:这个字段含有目标案例的名称。 [0380] Use Case: This field contains the name of the target case.

[0381] In Collection:这个字段说明目标案例是否用于集合。 [0381] In Collection: This field specifies whether the target case for collection.

[0382] 用户可通过修改参数(诸如,Key:视图的标识符)来修改动作的外观。 [0382] The user can modify the parameters: modify the appearance of an operation (such as, Key Identifier view).

[0383] Label Key:标签资源文件内的标签的键。 [0383] Label Key: Key label in the label resource file.

[0384] Label Provider:提供方获得标签资源文件的完整路径。 [0384] Label Provider: provider to obtain the full path to label the resource file.

[0385] Image Src:图象的名称。 [0385] Image Src: the name of the image.

[0386] Confirmation Message Key:确认消息资源文件内确认消息的键。 [0386] Confirmation Message Key: enter to confirm the message within the message resources.

[0387] Confirmation Message Provider:提供方获得确认消息资源文件的完整路径。 [0387] Confirmation Message Provider: provider to obtain the full path to the confirmation message resource file.

[0388] Access Key:键盘快捷键。 [0388] Access Key: keyboard shortcuts.

[0389] Access Key Provider:提供方获得访问键资源文件的完整路径。 [0389] Access Key Provider: provider access key to get the full path of the resource file.

[0390] Collapse Current Screen:指定动作执行后屏幕是否折叠。 [0390] Collapse Current Screen: the screen is folded specified action performed.

[0391] c.Wizard (向导)案例: [0391] c.Wizard (Wizard) Case:

[0392] 优选实施例提供通过使用WIZARD方法生成案例图的另一方法来。 [0392] Another preferred embodiment provides a method of generating a map by using a WIZARD case method. 借助于UML Designer,设计人员可通过案例的简图来定义向导和针对每一案例所允许的不同动作。 By means of UML Designer, designers and wizards can be defined for each case allowed by the different actions sketch case. 图12A示出Palmyra的示例性类图,其演示向导如何起作用。 Palmyra FIG. 12A shows an exemplary class diagram, which demonstrates how the wizard function.

[0393] 当新图添加到UML Designer的Palmyra Wizard Diagrams菜单630中(图6)时,这个图允许设计人员绘制其自己的向导和向导的不同步骤。 [0393] When added to the new map of Palmyra Wizard Diagrams UML Designer menu 630 (FIG. 6), this allows the designer to draw FIG different steps of its own wizards and wizards. 用户可通过简单的单击项“Talmyra Wizard Diagrams”630中的菜单来创建这个图(图6)。 Users can create this chart (Figure 6) by a simple click of the menu item 630 "Talmyra Wizard Diagrams".

[0394] 在创建新图之后,UML Des igner 工具自动添加Stereo type “use case” 和“wizard”。 [0394] After creating a new map, UML Des igner tool automatically add Stereo type "use case" and "wizard". 用户向新图提供一个名称,且这个名称将是运行时菜单“Wizard”下菜单项的名称。 To provide users with a new name to the map, and the name will be the name of the menu "Wizard" menu item at runtime. 接下来, 设计人员可添加他的特定步骤(图12B)。 Next, the designer can add his particular step (Figure 12B).

[0395] 在图I 2 B的示例中,向导具有3个步骤。 [0395] In the example of FIG. I 2 B, the guide has three steps. 第一步是用户创建客户端, “CreateClientStep (创建客户端步骤)” 1240;第二步是用户创建安全性帐户“CreateSecurityAccountStep (创建安全性账户步骤)” 1250;以及第三步是用户创建现金帐户1260。 The first step is to create a user client, "CreateClientStep (Creating Client Step)" 1240; the second step is to create a user account security "CreateSecurityAccountStep (security account creation step)," 1250; and the third step is to create a user account cash 1260.

[0396] 在通过单击工具栏中的相关按钮来创建案例之后,用户可通过拖放来在其优选位置输入案例。 [0396] After creating a case by clicking the appropriate button in the toolbar, the user can input by its preferred position in case of drag and drop. 工具向案例提供一个缺省名称,例如,“USECASE1.”。 Tool provides a default name to the case, for example, "USECASE1.". 这个名称可进行修改,例如,案例可被称作“Created ientStep” 1240。 The name may be modified, for example, the case can be referred to as "Created ientStep" 1240.

[0397] 用户可查询并修改案例的特性。 [0397] The user can query and modify the characteristics of the case. 以下是各字段的说明: The following is a description of each field:

[0398] Use Case:含有案例的名称。 [0398] Use Case: name contains cases.

[0399] Class Name:含有案例将被寄存到的类。 [0399] Class Name: The case containing the class to be registered. 这个字段可为空。 This field may be empty.

[0400] Input Parameters:填入这个案例的字段的参数集合。 [0400] Input Parameters: fill in the parameters of this case field collection. 用户可在相关网格中添加一个以上参数。 The user may add one or more parameters related to the grid. 这个网格含有以下两列: The grid contains the following two:

[0401] (I)Key Name:在SLA的情况下,值或上下文的键名。 [0401] (I) Key Name: In the case of SLA, or the value of the context key name.

[0402] (2) Formula:含有经评估具有相关Key Name的公式。 [0402] (2) Formula: having a formula containing a relevant assessment of the Key Name.

[0403] Output Parameters:表示当前步骤的结果的参数集合。 [0403] Output Parameters: a parameter indicative of the result set of the current step. 用户可在相关网格中添加一个以上参数。 The user may add one or more parameters related to the grid. 输出参数的评估可在输入参数之前完成。 Evaluate the output parameters may be accomplished prior to the input parameters. 这个网格含有以下两列: The grid contains the following two:

[0404] (I)Key Name:所有向导步骤的全局映射的键。 [0404] (I) Key Name: all key global mapping wizard step.

[0405] (2) Formula:含有经评估具有相关Key Name的公式。 [0405] (2) Formula: having a formula containing a relevant assessment of the Key Name.

[0406] 设计之后,用户必须用按钮“Validate Palmyra Project (验证Palmyra项目)”来验证项目,随后用按钮“Save Generated UML (保存生成的UML)”保存UML。 [0406] After the design, the user must use the button "Validate Palmyra Project (Project verification Palmyra)" to validate the project, followed by the button "Save Generated UML (save the generated UML)" save the UML. 最后,在Palmyra Generation工具中,用户装载所生成的UML,并生成与他的模型相关的java类。 Finally, Palmyra Generation tool, the user loads the generated UML, and generates a correlation model with his class java.

[0407] d.向导动作处理器 [0407] d. Wizard action processor

[0408] 为了创建向导动作处理器,设计人员必须单击工具栏上的相关按钮。 [0408] In order to create a Wizard Action processors, designers must click the relevant button on the toolbar. 然后设计人员必须通过拖放来指定来源和目标向导案例。 Then the designer must specify the source and destination guide by dragging and dropping the case.

[0409] 图12B展不动作处理器“CreateSecurityAccount (创建安全性账户)” 1250。 [0409] FIG. 12B show does not operate processor "CreateSecurityAccount (create a security account)" 1250.

[0410] 用户可通过双击查询并修改动作处理器的特性。 [0410] The user can double-click query and modify the characteristics of operation of the processor. 以下是各字段的说明: The following is a description of each field:

[0411] Name:这个字段含有动作处理器的名称。 [0411] Name: this field contains the name of the operation of the processor.

[0412] Action Name:这个字段可具有以下4个不同的值: [0412] Action Name: This field may have the following four different values:

[0413] (I) Next:当Action Name是Next时,这个动作执行动作保存,且评估参数,且最终设定为next值; [0413] (I) Next: Action Name is when the Next, the action performs an action saved and the evaluation parameters, and finally set to the next value;

[0414] (2) viewSLA:当Action Name为viewSLA时,这个动作依据参数建构上下文,并进行SLA搜索; [0414] (2) viewSLA: when the Action Name is viewSLA, this action based on context parameters construct, search and SLA;

[0415] (3) createNewSLA:当Action Name为createNewSLA时,这个动作借助参数的评估结果来创建新SLA; [0415] (3) createNewSLA: when the Action Name is createNewSLA, this action by assessment parameters to create a new the SLA;

[0416] ⑷finish:当Action Name为finish时,这个动作终止向导。 [0416] ⑷finish: When Action Name is finish, this action is to terminate the wizard.

[0417] Position:这个字段含有动作在屏幕上的位置。 [0417] Position: This field contains the position of operation on the screen.

[0418] To Be Overridden:存储在这个字段的值说明程序员是否允许逾越动作处理器的一些方法。 [0418] To Be Overridden: the value stored in this field beyond methods described operation of the processor is allowed programmer.

[0419] Input Parameters:用户可在相关网格中添加一个以上参数。 [0419] Input Parameters: The user can add one or more parameters related to the grid. 这个网格含有以下两列: The grid contains the following two:

[0420] ⑴Key Name:在SLA的情况下,值或上下文的键名。 [0420] ⑴Key Name: In the case of SLA, or the value of the context key name.

[0421] (2) Formula:含有经评估具有相关Key Name的公式。 [0421] (2) Formula: having a formula containing a relevant assessment of the Key Name.

[0422] Output Parameters:用户可在相关网格中添加一个以上参数。 [0422] Output Parameters: the user can add one or more parameters related to the grid. 输出参数的评估可在输入参数之前完成。 Evaluate the output parameters may be accomplished prior to the input parameters. 这个网格含有以下两列: The grid contains the following two:

[0423] (I)Key Name:所有向导步骤的全局映射的键。 [0423] (I) Key Name: all key global mapping wizard step.

[0424] (2) Formula:含有经评估具有相关Key Name的公式。 [0424] (2) Formula: having a formula containing a relevant assessment of the Key Name.

[0425] 设计之后,用户必须用按钮“Validate Palmyra Project”来验证项目,随后用按钮“Save Generated UML”保存UML。 [0425] After the design, the user must use the button "Validate Palmyra Project" to validate the project, followed by the button "Save Generated UML" Save UML. 最后,在Palmyra Generation工具中,用户装载所生成的UML,并生成与他的模型相关的java类。 Finally, Palmyra Generation tool, the user loads the generated UML, and generates a correlation model with his class java.

[0426] III.验证 [0426] III. Verification

[0427] 验证由自动创建或验证来完成,或者正如您所做的,验证很像word处理文档中的拼写检测。 [0427] verification done by the automatic creation or verification, or as you are doing, like word processing document to verify the spelling test. 另外,可实施手动的工程级别验证。 In addition, the project can be implemented manually level validation. 视需要提供警告和错误通知以便于指导和校正。 As needed to provide warnings and error notification in order to guide and correct.

[0428] 设计阶段之后,用户可以单个步骤的形式或通过系统提供的接口(诸如, “Validate Palmyra Project”)验证整个项目或其部分。 After [0428] the design phase, the user may take the form of a single step or interface provided by the system (such as, "Validate Palmyra Project") to validate the entire program or a portion thereof. 验证之后,以单个步骤的形式或通过系统提供的接口(诸如,“Save Generated UML”)保存所生成的UML。 After validation, as a single step or interface provided by the system (such as, "Save Generated UML") to save the generated UML. 通过单个步骤或系统所提供的接口(诸如,Palmyra Generation tool),用户可装载所生成的UML,并生成与模型相关的java类。 Via an interface (such as, Palmyra Generation tool) or a single step provided by the system, the user can load the generated UML, and generates java classes associated with the model.

[0429] IV.代码生成 [0429] IV. Code Generation

[0430] A .Palmyra代码生成工具 [0430] A .Palmyra code generator

[0431] Palmyra代码生成工具是从UML模型生成企业应用程序档案(Ear)文件的应用程序。 [0431] Palmyra code generation tools to generate applications in the enterprise application archive (Ear) files from a UML model. 所生成的Ear文件准备好部署于应用程序服务器中。 Ear generated files ready to be deployed to the application server. 代码生成将在所生成的Ear文件中缺省包括部署应用程序所需要的所有Palmyra jar文件。 The default code generation in the generated file contains all the Ear Palmyra jar files needed to deploy the application. 新Ear也包括与Palmyra的XML文件夹相关的所有缺省配置。 New Ear also includes all associated with a default folder Palmyra XML file configuration. Palmyra生成工具可生成与应用程序的UML模型相关的java类和与控制器相关的接口。 Palmyra generator can generate java classes associated with the controller and the interface associated with the application of the UML model. 系统也可在用户图形接口的Logs (日志)部分显示Generation Steps (生成步骤)列表。 The system may also display Generation Steps (generation step) list in the graphical user interface Logs (log) moiety.

[0432] 1.选择Palmyra应用程序屏幕 [0432] 1. Select the application screen Palmyra

[0433] 代码生成的第一步是创建新的企业应用程序档案(Ear)文件或选择现有Ear文件。 [0433] The first step is to code generation to create a new enterprise application archive (Ear) Ear file or select an existing file.

[0434] a.创建新应用程序 [0434] a. Create a new application

[0435] 这个选项允许在用户指定的文件夹下创建新Ear。 [0435] This option allows the user to create a new Ear in the specified folder. 这个新应用程序含有缺省服务和配置。 This new application contains default services and configuration. 代码生成将在新Ear文件中缺省包括部署应用程序所需要的所有Palmyra jar文件。 The default code generation in a new Ear file includes all of Palmyra jar files needed to deploy the application. 新Ear也包括与Palmyra的文件夹XML相关的所有缺省配置。 New Ear also include Palmyra default folder for all XML-related configuration.

[0436] 生成还有其他2种设置。 [0436] There are other to generate two kinds of settings.

[0437] Generate the generated code only (仅生成所生成的代码):如果选择这个选项,那么代码生成将仅生成与应用程序的UML模型相关的java类和与控制器相关的接口。 [0437] Generate the generated code only (only generated code generation): If this option is selected, then the code generation will generate only relevant UML model application java classes and interfaces associated with the controller.

[0438] Show Log(显示日志):如果选择这个选项,那么系统将在用户图形接口的Logs(日志)部分显示Generation Steps (生成步骤)列表。 [0438] Show Log (Log Display): If this option is selected, the system displays Generation Steps (generation step) list in the graphical user interface Logs (log) moiety.

[0439] 当用户选择新Ear文件的生成路径,然后按下按钮Next (下一步),他将进入Ear的版本。 [0439] When the user selects a new generation path Ear file, and then press the button Next (next), he will enter the Ear version. 当他按下OK (确定),指定路径下将生成新Ear文件。 When he presses the OK (OK), the specified file path generates a new Ear.

[0440] b.打开现有应用程序 [0440] b. To open an existing application

[0441] 当用户选择打开现有应用程序这个选项,他必须首先选择系统文件夹下的旧Ear。 [0441] When the user selects this option to open an existing application, he must first select the old Ear System folder. 然后用户选择按钮Next,来转到Generation (生成)或屏幕更新的屏幕。 The user then selects the button Next, to go Generation (generation) or screen update screen.

[0442] Save Configuration File (保存配置文件):如果用户需要保存所有配置步骤,那么他必须为含有相关特性的配置文件指定路径。 [0442] Save Configuration File (save the configuration file): If you need to save all the configuration steps, then he must specify the path for the configuration file containing the relevant properties.

[0443] earPath:Ear文件的完整路径。 [0443] earPath: Ear full path of the file.

[0444] shared P ack :保持由逗号隔开的共享包列表的字符串。 [0444] shared P ack: holding shared packet string list separated by commas. 例如, com.pahnyra.arch.broker, com.palmyra.arch, devices, input, com.palmyra.arch.devices.output,com.pahnyra.arch.miapping,...〇 For example, com.pahnyra.arch.broker, com.palmyra.arch, devices, input, com.palmyra.arch.devices.output, com.pahnyra.arch.miapping, ... billion

[0445] generate JavaDoc:可设为true或false〇 [0445] generate JavaDoc: may be set to true or false〇

[0446] isCreation:说明文件是创建的新Ear还是现有Ear文件的更新。 [0446] isCreation: Documentation is updated with new or existing Ear Ear file created.

[0447] prefix:前缀的名称(若存在前缀),否则设为空字符串。 [0447] prefix: prefix name (if there is a prefix), or to an empty string.

[0448] classPath:用来编译所生成的java类的Palmyra jar列表。 [0448] classPath: Palmyra jar is used to compile a list of java classes generated.

[0449] I ist JarWar:所添加的jar和war的列表。 [0449] I ist JarWar: a list of the jar and war added.

[0450] generationPack:待生成的选定包。 [0450] generationPack: selected packages to be produced.

[0451] umlFilePath:待生成的XML文件的完整路径。 [0451] umlFilePath: the full path to be generated XML file.

[0452] generatedCodeOnly:如果为true,那么将在并不更新Ear文件的情况下生成并编译java类。 [0452] generatedCodeOnly: if, it will generate and compile java class in the case file is not updated Ear true.

[0453] verify:如果为true,那么将在并不生成任何java类的情况下验证XML文件。 [0453] verify: validating XML file If true, it would in any case does not generate java classes under.

[0454] businessServicesPath:将自动添加到Ear文件的业务服务目录的路径。 [0454] businessServicesPath: automatically added to the directory path to Business Service Ear file.

[0455] sequenceStore:如果为true,那么用户可在Setup侧指定他自己的序列数据存储。 [0455] sequenceStore: If true, the user can specify his own sequence data stored in the Setup side.

[0456] 2.生成屏幕 [0456] 2. Generate the screen

[0457] 用户一旦创建新Ear文件或选择现有Ear文件,用户可在生成屏幕上设置生成选项。 [0457] Once the user to create a new Ear Ear file or select an existing file, the user can set generation options on the screen is generated. 两个子屏幕组成生成屏幕,一个称作UML Source (UML源),而另一个称作Generation Options (生成选项)。 Two sub-screens generates the screen, called a UML Source (UML source), and the other called Generation Options (generation option).

[0458] a.UML Source (UML® [0458] a.UML Source (UML®

[0459] 在UML Source屏幕中,用户可选择待生成的UML文件(强制),选择业务服务路径(可选),排除或包括待生成的应用程序的一些包,且添加或去除共享包。 [0459] In the Source UML screen, the user can select a file to be generated by the UML (mandatory), select a business service route (optional), exclude or include some packets to be generated by the application, and to add or remove shared package. 将缺省生成所有包,而不存在共享包。 The default generate all packages, without the shared package.

[0460] b.Generation Options (生成选项) [0460] b.Generation Options (Build Options)

[0461] 在这个屏幕(图13A)中,用户可添加或去除将用来编译所生成的java类的一些jar 文件,且可选中以下相关选项: [0461] In this screen (FIG. 13A), the user may add or remove some of the java class jar file used to compile the generated related options and optionally following:

[0462] Generate JavaDoc (生成Java文档):这个选项允许生成所生成的java类的Java Documentation (Java文档)。 [0462] Generate JavaDoc (generation Java documentation): This option allows you to generate the generated Java Documentation java classes (Java documentation).

[0463] Configurable Sequence store (可配置序列存储):这个选项允许用户在Setup侧配置序列数据存储。 [0463] Configurable Sequence store (store configurable sequence): This option allows the user to configure the sequence data stored in the Setup side.

[0464] Only Verification (仅验证):如果选中这个选项,那么代码生成器将仅检查UML 模型的有效性。 [0464] Only Verification (verification only): If you select this option, the code generator will only check the validity of UML models. 在这种情况下,代码生成将不会影响Ear文件的修改。 In this case, the code generated will not affect Ear modify files. 当未选中这个选项时, 代码生成将影响Ear的新修改。 When this option is not selected, the newly modified code generation will affect the Ear. 图13A示出使用Palmyra生成工具的生成选项。 FIG 13A illustrates the use of Palmyra generation tool build options.

[0465] 3.更新屏幕 [0465] 3. Update screen

[0466] 更新屏幕向用户提供更新现有Ear文件的功能性。 [0466] Ear update screen provides update existing file functionality to the user. 两个子屏幕组成更新屏幕,一个称作Services (服务),而另一个称作Conf igurations (配置)。 Two sub-screens update the screen, called a Services (service), while the other is referred Conf igurations (configuration).

[0467] a.Services (月艮务)屏幕 [0467] a.Services (March Burgundy Service) screen

[0468] 屏幕Services用来添加、编辑或去除服务,按钮“BuiId Services (构建服务)”将应用选定Ear文件中的修改(参照图13B)。 [0468] Screen Services to add, edit or remove the service button "BuiId Services (building services)" will modify the Ear file (see FIG. 13B) applications selected.

[0469] b · Configurations (配置)屏幕 [0469] b · Configurations (Configuration) screen

[0470] 屏幕Conf igurations用来添加、去除或恢复配置文件。 [0470] screen Conf igurations to add, remove or restore the configuration file. 屏幕Conf igurations也允许构建配置。 Conf igurations screen also allows you to build configuration. 用户可添加或去除视图格式的配置、应用程序服务器配置、标签配置、生命周期配置、报告配置和事务配置(参照图13C)。 Users can add or remove a configuration view format, the application server configuration, the tag configuration, lifecycle configuration, configuration and transaction reporting configuration (see FIG. 13C). 按钮“Remove (去除)”将从Ear去除选定文件,且按钮“Restore (恢复)”用来取消用户进行的修改。 Button "Remove (remove)" from Ear to remove the selected file, and the button "Restore (restore)" is used to cancel the modifications made by the user. 当用户单击按钮“Bui Id Conf iguration (构建配置)”,用户进行的所有修改将生效。 When the user clicks the button "Bui Id Conf iguration (build configuration)", all changes made by the user will take effect. 图13C示出使用Palmyra生成工具的配置选项。 FIG 13C shows the use of Palmyra generation tool configuration options.

[0471] 4.输出文件 [0471] 4. Output File

[0472] 生成过程一旦成功,将生成以下若干文件:E ar文件、名称分别为GeneratedCodeSrc · jar和GeneratedCode · jar的生成源和Iib (库)jar、含有未解压文件GeneratedCode · jar的文件夹类、含有解压文件GeneratedCodeSrc · jar的文件夹src以及含有UML中宣称将由程序员实施的控制器的文件夹MucSr c。 [0472] Upon generation process is successful, the generating the plurality of files: E ar file names are GeneratedCodeSrc · jar and GeneratedCode · jar generating source and Iib (library) JAR, containing non-extracting file GeneratedCode · jar folder class, unzip the file containing the file GeneratedCodeSrc · jar src folder and the folder containing the UML claimed by MucSr c file programmers implement controller.

[0473] B .Palmyra 代码生成 [0473] B .Palmyra code generator

[0474] I .Palmyra自动代码生成 [0474] I .Palmyra automatic code generation

[0475] Automatic Generation (自动生成)是在并不使用Code Generation工具的情况下生成Ear、从XML文件生成java类、借助jar和war列表更新Ear以及借助配置文件列表更新Ear的一种方式。 [0475] Automatic Generation (auto-generated) is generated in the case of not using Ear Code Generation tool generates java class from the XML file, and jar by war and Ear list update means updates the list of profiles of Ear way. 图14示出自动生成过程的主要步骤,其包括以下步骤:1)将UML模型转化成XML文件1410; 2)使用XML文件来生成Java源代码(称作所生成的源代码)1420;以及3)使用JSDK编译器来编译所生成的Java源代码,且创建库Java档案或JAR 1430。 14 shows the main steps of the process of FIG automatically generated, which comprises the following steps: 1) The UML model into XML file 1410; 2) to generate an XML file using Java source code (referred to as the generated source code) 1420; and 3 ) using JSDK compiler to compile the generated Java source code, and create a library Java archive or JAR 1430. 将UML模型转化成XML文件可通过使用Palmyra UML Designer来达成。 The UML model into an XML file can be achieved by the use of Palmyra UML Designer.

[0476] 元素: [0476] elements:

[0477] 代码: [0477] Code:

[0478] Simple类型和实体的Java类 [0478] Java classes of entities and types Simple

[0479] UML接口的Java 接口 Java Interface [0479] UML interface

[0480] 对应于(稍后手动扩展以提供方法的实施)控制器的抽象控制器类 [0480] corresponding to the abstract controller (later expanded to provide a method of manually embodiment) controller

[0481] 用来管理屏幕等级动作(可视需要通过添加手动编写的代码来加强)的动作处理器类 [0481] Level to manage the operation screen (optionally reinforced by the addition of code written in the manual) operation of the processor-based

[0482] XML 文件: [0482] XML file:

[0483] Constraint model description file (约束模型说明文件):含有系统稍后运行时将装载的约束的说明 [0483] Constraint model description file (File Description Constraint Model): The system comprises later loading constraint runtime instructions

[0484] Process description files (过程说明文件):每一过程的过程说明文件含有稍后运行时将装载的过程的说明 [0484] Process description files (process description.): Process description of each process described later when the file containing the load during operation of the

[0485] 有2种方法来使用自动生成:简单调用静态方法或使用特性文件。 [0485] There are two ways to use automatically generated: call the static method or use simple profile.

[0486] a.使用自动生成-借助调用静态方法 . [0486] a use of automatically generated - by the static method call

[0487] 借助于使用代码生成工具或处理自动生成,开发人员能够生成Ear、从XML文件生成java类、借助jar和war列表更新Ear以及用配置文件列表更新Ear。 [0487] or by means of a process using the code generation tool automatically generates, developers can generate Ear, java class generated from the XML file, list update means jar and war Ear and updates the configuration file list Ear. 这个文档描述每一选项所执行的步骤。 This document describes the steps performed by each option. 使用自动生成来执行生成。 It is performed using the automatic generation. 如果使用代码生成工具,那么重现同一情境。 If you use code generation tool, then reproduce the same situation. [0488] 使用自动生成的第一种方法是调用类AutomaticGeneration中的静态方法generate () 〇 [0488] The first method is used to automatically generate a static method call to generate the class AutomaticGeneration () square

[0489] 这个方法有19个参数。 [0489] This method of 19 parameters. 表5中列出相关参数。 Related parameters are listed in Table 5.

[0490] 表5: Palmyra自动生成参数 [0490] TABLE 5: Palmyra automatically generated parameters

[0491 ] -File (文件)earFiIe:将创建或更新的Ear文件。 [0491] -File (file) earFiIe: Ear will be created or updated files.

[0492] -String (字符串)codeGenerationPath:含有Palmyra的所有jar的代码生成路径。 [0492] -String (string) codeGenerationPath: Palmyra all jar containing the code generation path. 其必须含有以下4个目录:“exf”、“extLib”、“xml”和“lib”。 It must contain the following four directories: "exf", "extLib", "xml" and "lib". 这些目录在生成新Ear时使用。 These directories are used when generating new Ear.

[0493] -boolean (布尔值)isCreation:如果为true,那么将创建新Ear。 [0493] -boolean (Boolean value) isCreation: If true, it would create a new Ear. 新Ear将含有文件夹“exf”和“extLib”中的所有jar。 New Ear folder containing all the jar "exf" and "extLib" in. 同样,将文件夹“xml”中的所有xml文件设为Conf igs_ config.jar和PalmyraRessources·jar。 Similarly, all the xml file folder "xml" is set to Conf igs_ config.jar and PalmyraRessources · jar.

[0494] -String umlFilePath:UML Designer插件所生成的xml文件的路径。 [0494] -String umlFilePath: xml file path of the generated plugin UML Designer. 这个文件将用来生成java文件和“GeneratedCode · jar”。 This document will be used to generate java files and "GeneratedCode · jar".

[0495] -boolean sequenceStore:如果为true,那么序列数据存储将为可配置的。 [0495] -boolean sequenceStore: If true, then the sequence data for a configurable memory. 因此用户可在Setup侧说明序列表的数据源。 The user may indicate the data source side of the sequence listing in the Setup.

[0496] -boolean verifyOnly:如果为true,那么将不创建所生成的代码,且将仅验证UML 模型。 [0496] -boolean verifyOnly: If true, it will not create the generated code, and will only validate UML models.

[0497] -String generationPackages:这个字符串保持将生成的(由逗号隔开的)包列表。 [0497] -String generationPackages: holding the generated string (separated by a comma) package list. 如果这个字符串为空值,那么将生成UML模型中的所有包。 If this string is null, all packets will be generated in the UML model.

[0498] -String sharedPackages:这个字符串保持共享(由逗号隔开的)包列表。 [0498] -String sharedPackages: string holding shared package list (separated by a comma). 这个字符串将设为“GeneratedCode· jar” 中的文件“sharedPackages .properties”。 This string will be set to "GeneratedCode · jar" files "sharedPackages .properties".

[0499] -String prefix:这个字符串表示共享包的前缀名称。 [0499] -String prefix: The prefix string representing the shared package name.

[0500] -String vers ion: Ear 文件的版本。 [0500] -String vers ion: Ear version of the file.

[0501] -boolean generatedCodeOnly:如果为true,那么将仅生成java类。 [0501] -boolean generatedCodeOnly: If true, then the generated java classes only.

[0502] -String classPath:在编译所生成的java类时需要classPath。 [0502] -String classPath: classPath required when compiling the generated java classes. 如果为空值,那么将自动计算类路径:其含有代码生成目录中的所有现有jar。 If the value is null, then the class path is automatically calculated: which contains all of the existing code generation jar directory.

[0503] -boolean generatedJavaDoc:如果为true,那么将创建所生成的java类的java doc (文档)。 [0503] -boolean generatedJavaDoc: If true, it would create the generated java class java doc (document). 将创建新jar “GeneratedCodeLib · jar”。 We will create a new jar "GeneratedCodeLib · jar".

[0504] -String businessServicesPath:将自动添加到Ear的业务服务jar的路径。 [0504] -String businessServicesPath: path is automatically added to the jar Ear of business services. 将仅添加对应于UML中使用到的模型的jar。 The only added to the corresponding use in the UML model jar. 如果指定路径下缺失一些jar,那么可在Ear路径下找到的文件名称为“GenerationWarnings. log”日志文件中将会编写警告。 If it is missing some of the jar under the specified path, file name can be found in the Ear path for the log file "GenerationWarnings. Log" will be written warning.

[0505] -Collection (集合)updatedServices:含有Ear中添加或更新的jar和war列表的文件集合。 [0505] -Collection (set) updatedServices: add or update a file containing the jar and war Ear list set.

[0506] -Collection updatedConfigurationFiIes:含有添加到Ear的配置文件列表的文件集合D每个文件将添加到“Conf igs_conf ig. jar”或“PalmyraRessources. jar”(从其名称切换获得)。 [0506] -Collection updatedConfigurationFiIes: Ear added to the file containing the list of profiles to each set D is added to the file "Conf igs_conf ig jar." Or "PalmyraRessources jar." (Obtained from switching name).

[0507] -String IogFilePath:日志文件的路径。 [0507] -String IogFilePath: path to the log file. 如果为空值,那么将取文件“AutomaticGeneration. log” 的值。 If the value is empty, then the file will take the value "AutomaticGeneration. Log" of.

[0508] -String compilerPath:将使用的编译器的路径(当用户想要使用特定java编译器时,例如,带有java 1.5编译器的编译)^ [0508] -String compilerPath: path compiler to be used (when the user wants to use a specific java compiler, e.g., with a compiler compiling java 1.5) ^

[0509] -String compilerVersion:将使用的编译器的版本(当用户想要使用特定java编译器时,例如,带有java 1.5编译器的编译)^ [0509] -String compilerVersion: the version of the compiler will use (when the user wants to use a specific java compiler, e.g., with a compiler compiling java 1.5) ^

[0510] 所有这些参数的组合允许开发人员执行一个或更多个选项: [0510] The combination of all these parameters allow developers to perform one or more of the options:

[0511] i .从头开始创建Ear文件 [0511] i. Ear file created from scratch

[0512] 如果参数“isCreat ion”为true,且Ear文件并不为空值,那么将创建空白Ear。 [0512] is not null, it will create a blank Ear If the parameter "isCreat ion" is true, and Ear file. 表6 所示的参数列表表示这个选项的一个示例: Table 6 shows an exemplary list of parameters for this option:

[0513] 表6从头开始创建Ear文件的示例性 [0513] Table 6 created from scratch exemplary Ear file

[0514] String earFiIePath = "D:/Test/Test.ear"; [0514] String earFiIePath = "D: /Test/Test.ear";

[0515] String codeGenerationPath = "D: /PALMYEAl I · 2/codeGeneration"; [0515] String codeGenerationPath = "D: / PALMYEAl I · 2 / codeGeneration";

[0516] boolean isCreation = true ; [0516] boolean isCreation = true;

[0517] String umlFilePath = null; [0517] String umlFilePath = null;

[0518] boolean sequenceStore = false ; [0518] boolean sequenceStore = false;

[0519] boolean verifyOnly = false; [0519] boolean verifyOnly = false;

[0520] String generationPack = ////; [0520] String generationPack = ////;

[0521] String sharedPack =; [0521] String sharedPack =;

[0522] String prefix =; [0522] String prefix =;

[0523] String version = 〃1 ·0〃; [0523] String version = 〃1 · 0〃;

[0524] boolean generatedCodeOnly = false ; [0524] boolean generatedCodeOnly = false;

[0525] String classPath = null; [0525] String classPath = null;

[0526] boolean generateJavaDoc = false ; [0526] boolean generateJavaDoc = false;

[0527] String businessServicesPath = null; [0527] String businessServicesPath = null;

[0528] Collection updatedServices=null; [0528] Collection updatedServices = null;

[0529] Collection updatedConfigurationFiIes = null; [0529] Collection updatedConfigurationFiIes = null;

[0530] String IogFiIePath = "D:/BUG·log"; [0530] String IogFiIePath = "D: / BUG · log";

[0531] String compilerPath = null; [0531] String compilerPath = null;

[0532] String compilerVersion = null; [0532] String compilerVersion = null;

[0533] AutomaticGene ration, generate (new Fi Ie (新文件)(earFi IePath), codeGenerationPath,isCreation,umlFiIePath,sequenceStore,verifyOnly, generationPack,sharedPack,prefix,version,GeneratedCodeOnly,classPath, generateJavaDoc,businessServicesPath ,updatedServices, updatedConfigurationFiIes,IogFilePath,compilerPath,compilerVersion); [0533] AutomaticGene ration, generate (new Fi Ie (new file) (earFi IePath), codeGenerationPath, isCreation, umlFiIePath, sequenceStore, verifyOnly, generationPack, sharedPack, prefix, version, GeneratedCodeOnly, classPath, generateJavaDoc, businessServicesPath, updatedServices, updatedConfigurationFiIes, IogFilePath, compilerPath, compilerVersion);

[0534] -如果参数codeGenerationPath为null (空值)或空字符串,那么将其设定为项目目录的父目录D在任何情况下,codeGeneration目录通常含有以下文件夹: [0534] - If codeGenerationPath parameter is null (the null value) or empty string, then it is set to the parent directory of the directory D project in any case, codeGeneration directory typically contains the following folders:

[0535] xml:含有服务配置所使用的xml文件 [0535] xml: xml file containing the service configuration used

[0536] ext:含有Palmyra jar [0536] ext: Palmyra jar containing

[0537] extLib:含有外部库 [0537] extLib: an external library containing

[0538] 如上文所提到的,ext目录含有在框架Palmyra内安装、部署和使用所生成的应用程序锁需要的所有Palmyra Jar。 [0538] As mentioned hereinabove, ext mounted within the frame containing the directory Palmyra, Palmyra Jar deployment and use all of the generated lock desired application. 下图展示ext目录的内容。 The following figure shows the contents of the directory ext.

[0539] 不同于ext目录,extLib文件夹仅包括Palmyra Components (Palmyra组件)以外的文件。 [0539] Unlike ext directory, extLib folder includes only the files other than Palmyra Components (Palmyra assembly). 一些组件供框架用于特定目的(举例来说,用于解析XML文档或管理模板)。 Some components for the framework for a specific purpose (for example, for parsing an XML document or template management).

[0540] 下图展示文件夹extLib的内容。 [0540] The following figure shows the contents of the folder extLib.

[0541] 文件夹xml含有一些框架组件所使用的xml配置文件^最常用来配置呈现标签和视图格式。 [0541] folder xml xml configuration file contains some frame assembly most commonly used to configure the presence tag ^ and view format.

[0542] 文档的这个部分的目的是展示如何在并不生成GeneratedCode. jar或更新Ear的情况下仓ij建Ear,因为所有参数umFilePath、updatedServices和updatedConf iguratioriFiles都为空值借助调用以下方法: [0542] The purpose of this section is to show how the document does not generate GeneratedCode jar or in the case of updating the warehouse Ear ij built Ear, because all parameters umFilePath, updatedServices and updatedConf iguratioriFiles are null value means call the following method:

[0543] AutomaticGeneration. generate (new File (earFilePath), CodeGenerationPathjIsCreationjUmlFiIePath,SequenceStorejVerifyOnlyj generationPack,sharedPack,prefix,version,GeneratedCodeOnIy,classPath, generateJavaDoCjbusinessServicesPathjUpdatedServices, updatedConf igurationFiIes,IogFiIePath,compiIerPath,compiIerVersion,hasJsf, excludedSharedPack); . [0543] AutomaticGeneration generate (new File (earFilePath), CodeGenerationPathjIsCreationjUmlFiIePath, SequenceStorejVerifyOnlyj generationPack, sharedPack, prefix, version, GeneratedCodeOnIy, classPath, generateJavaDoCjbusinessServicesPathjUpdatedServices, updatedConf igurationFiIes, IogFiIePath, compiIerPath, compiIerVersion, hasJsf, excludedSharedPack);

[0544] 参数applicationName提供ear文件的名称(不含扩展名ear”)。在这个示例中, applicationName = 〃Essai〃 [0544] Parameter Name applicationName provided (without extension ear ") ear file. In this example, applicationName = 〃Essai〃

[0545] 执行以下步骤: [0545] Perform the following steps:

[0546] 步骤1:创建临时文件夹 [0546] Step 1: Create a temporary folder

[0547] 在codeGenerat ion文件夹下创建目录TMPtj在这个示例中,TMP将放在以下路径下: “D: \Pro jects\PALMYRAll · 0\FRAMEWORKL\build\out\codeGeneration” D在这个新目录下, 我们可以复制目录ext和extLib文件夹(在codeGeneration目录下)下的所有内容D [0547] create a directory TMPtj in codeGenerat ion folder in this example, TMP will be placed under the following path: "D: \ Pro jects \ PALMYRAll · 0 \ FRAMEWORKL \ build \ out \ codeGeneration" D in this new directory we can copy the directory ext folder and all the contents extLib D (in codeGeneration directory) under the

[0548] -在codeGeneration 文件夹下创建目录Workingfolder0 [0548] - Create a directory folder Workingfolder0 in codeGeneration

[0549] -在新目录Workingfolder下创建目录UnEar0 [0549] - Create a new directory in the directory UnEar0 Workingfolder

[0550] -在目录unEar下创建目录basedir。 [0550] - create a directory in the directory basedir unEar.

[0551] -在目录basedir下创建目录META-INF。 [0551] - META-INF directory is created in the directory basedir.

[0552] -在目录unEar下创建目录conf ig。 [0552] - create a directory in the directory conf ig unEar.

[0553] 步骤2:构建应用程序文件 [0553] Step 2: build the application file

[0554] -将xml文件“application·xml”从当前目录(在包“com.palmyra, tools ·builder” 下)复制至lJ新目录config (codegenenration/workingFolder/uriEar/config) D [0554] - the xml file "application · xml" copied from the current directory (in the package "com.palmyra, tools · builder" under) to lJ new directory config (codegenenration / workingFolder / uriEar / config) D

[0555]-解析所复制的xml文件,然后去除忽略行(以“〈!”开头)。 [0555] - xml file parsing copied, then remove to ignore line (with "<!" At the beginning). 节点“display-name”和“context-root”的值设定为appl icationName (在这个示例中是“Essai”)的值,且节点“web-uri”的值设定为earFile名称(在这个示例中是“Essai . ear”)D [0556] 文件“〃application.xml”是针对J2EE应用的部署说明D这个文件必须放在顶层META-INF目录下。 Node "display-name", and "context-root" value is set to appl icationName (a "Essai" in this example), the value and the value of the node "web-uri" is set earFile name (in this example, It is "Essai. ear") D [0556] file "〃application.xml" is a D this file must be placed at the top level META-INF directory for the deployment of J2EE applications.

[0557] -将XML文件“ibm-application-ext· xml” 从当前目录(在包“com.palmyra, tools.builder”下)复制到目录config,且也移除忽略行。 [0557] - The XML file "ibm-application-ext · xml" (in the package "com.palmyra, tools.builder") copied from the current directory to the directory config, and also remove ignore line. 对于新复制的文件,我们关注于命名为“moduleExtensions”的任何元素的任何属性下命名为“xml: type”的每一项D如果我们找到值为“applicationext :WebModuleExtension”的项,那么我们将属性“altRoot” 的值更改成“ALT_INF/”+applicationName+“.war” D For the new copy of the file, we are concerned about any of the properties named under the name "moduleExtensions" any element of "xml: type" of each of the D If we find a value of "applicationext: WebModuleExtension" item, then we will attribute value "altRoot" is changed to "ALT_INF /" + applicationName + ". war" D

[0558] 将XML文件“jboss-app.xml”从当前目录(在包“com.palmyra.tools.builder”下) 复制到目录Configtj对于新复制的文件,我们将节点“loader-repositoryfocus”的值设为“com. vermeg. services: loader =〈appIicationName〉· ear”。 [0558] The XML file "jboss-app.xml" copied from the current directory (in the package "com.palmyra.tools.builder" under) to copy new files to the directory Configtj, we will node "loader-repositoryfocus" value set "com vermeg services:.. loader = <appIicationName> · ear". 然后将修改后的xml文件复制到目录workingFolder/unEar/basedir/META-INF下这类文件的实用性在于通过配置为一域来分离每一应用程序的类装载器。 Xml file and then copy the modifications to the practicality of such a file directory workingFolder / unEar / basedir / META-INF wherein separating each application class loader is configured by a domain.

[0559] -将所有修改后的应用程序文件(application · xml、ibm-appIication-bnd· xml、 ibm-application-extxml、jboss-app · xml)复制到目录workingFolder/unEar/basedir/ META-INF下D 我们也看复制文件“was. po I icy”(在包“com. palmyra, too Is. builder” 下)到这个目录下。 [0559] - the application file (application · xml, ibm-appIication-bnd · xml, ibm-application-extxml, jboss-app · xml) all modified copied to the directory workingFolder / unEar / basedir / META-INF we also see D copy file "was. po I icy" (in the package "com. palmyra, too Is. builder") to this directory.

[0560] -在目录Workingfolder 下创建目录unWar〇 [0560] - create a directory in the directory Workingfolder unWar〇

[0561] -在目录unWar下创建目录conf ig。 [0561] - create a directory in the directory conf ig unWar.

[0562] 步骤3: [0562] Step 3:

[0563] codegenenration/workingFolder/unffar/configTxmluweb.xml^ ? 针对新复制,特性“di sp I ay-name”的值将设为app I i ca ti onName的值。 [0563] codegenenration / workingFolder / unffar / configTxmluweb.xml ^? For a new copy, "di sp I ay-name" value to the value of the characteristic app I i ​​ca ti onName of. (记住applicationName = 〃Essai〃)D元素“web-app”下的属性id将设定为同一值。 (Remember applicationName = 〃Essai〃) D element "web-app" id attributes will be set to the same value. 下图展示这些修改。 The following figure shows these modifications.

[0564] -在unWar 下创建目录basedir。 [0564] - Create a directory basedir at unWar.

[0565] -在Workingfolder 下创建目录config。 [0565] - Creates config directory under Workingfolder.

[0566] -在Workingfolder 下创建目录handleConfig。 [0566] - Create a directory handleConfig in Workingfolder.

[0567] -创建含有earFile的终极目录(在这个示例中,我们将创建目录“D: \Essai_ codegen',) [0567] - create the ultimate directory containing earFile of (in this example, we will create the directory "D: \ Essai_ codegen ',)

[0568] 步骤4:处理外部文件夹 [0568] Step 4: treatment external folders

[0569] -迭代目录TMP的内容。 [0569] - TMP directory iteration of content.

[0570] 如果文件是war文件: [0570] If the file is a war file:

[0571] 如果是ear的war: war文件的名称是应用程序的名称,我们从war清单中获取war的版本,否则(如果仅仅是添加的war)获取这类war的清单文件的属性“earversion”的值。 [0571] If it is ear of war: war file name is the name of the application, we obtain version war from the war list, or (if only to add the war) get property "earversion" list of documents of this kind of war value. 然后将这类war文件的内容提取到(目录unWar下的)目录basedir下。 The contents of these war files extracted to the directory basedir (directory unWar).

[0572] 如果文件是ear文件: [0572] If the file is ear file:

[0573] 将这类ear的内容提取到(unEar下的)文件夹basedir下,然后我们迭代这个ear的内容,且针对遇到的文件(ear、jar或war)递归进行相同动作D [0573] The content of such ear to extract file (under unEar) folder basedir, then we iterate this ear, and the (ear, jar or war) recursively perform the same operation D encounter against file

[0574] 如果文件是jar文件且其文件名称不同于“GeneratedCode. jar”,将其复制到文件夹unEar/basedirl^ 〇 [0574] If the file is a jar file and its file name different "GeneratedCode. Jar", copy it to the folder unEar / basedirl ^ billion

[0575] -在目录unWar下创建目录META-INF D [0575] - create a directory META-INF D in the directory unWar

[0576] -在这个目录下,创建清单文件“MANIFEST. MF”。 [0576] - In this directory, create a manifest file "MANIFEST MF.". 在这类文件中,我们创建属性“Created-By”,其值设为“Palmyra at〈current Date〉”,且创建属性“Manifest-Version”, 其值设为“1.0”。 In this type of file, we create a property "Created-By", its value is set to "Palmyra at <current Date>", and create a property "Manifest-Version", its value is set to "1.0." 然后,针对获取到的每一war版本,创建相关的新属性。 Then, for each war to obtain version, create relevant new property.

[0577] -将jar文件“unEar/bas edir/service · jar” 的内容提取到目录unEar/basedir/ service^F〇 [0577] - the contents of the jar file "unEar / bas edir / service · jar" directory to extract unEar / basedir / service ^ F〇

[0578] 步骤5:更新未解压的service. jax [0578] Step 5: Update unpacked service jax.

[0579] -解析文件“workingFolder/Unear/basedir/service/META-INF/e jb_jar ·xml”, 以便查找节点“e jb-name”下名称类似于“AsynchronousX”的元素,这类元素将重命名为“Asynclrronous〈applicationName>',(在这个亦例中,为“AsynchronousEssai',)。 [0579] - parsing the file "workingFolder / Unear / basedir / service / META-INF / e jb_jar · xml", in order to find the node "e jb-name" under a name similar to "AsynchronousX" elements, such elements will be renamed is "Asynclrronous <applicationName> ', (in this embodiment also, as" AsynchronousEssai',).

[0580] -对于XML 文件“workingFolder/Unear/jasedir/service/META-INF/weblogic-ejb-jar.xml”,然后将执行以下修改: [0580] - For the XML file "workingFolder / Unear / jasedir / service / META-INF / weblogic-ejb-jar.xml", and then perform the following modifications:

[0581] -将“ejb-name”下名称类似于“AsynchronousX”的每一元素重命名为“Asynclrronous〈applicationName>',。 [0581] - each element of the "ejb-name" under the name like "AsynchronousX" Rename "Asynclrronous <applicationName> ',.

[0582] -将“jndi-name” 下每一元素的值设为applicationName。 [0582] - the value of each element of the "jndi-name" set applicationName.

[0583] -将“local-jndi-name” 下每一元素的值设为LocaKapp Ii cat ionName〉D [0583] - the value of each element of the "local-jndi-name" set LocaKapp Ii cat ionName> D

[0584] -将“ connection-factory -jndi-name” 下每一节点的值设为“ApplicationsQueueConnectionFactory',。 [0584] - the "connection-factory -jndi-name" value is set at "ApplicationsQueueConnectionFactory 'each node ,.

[0585] -将“dest inat ion-jndi-name” 下每一节点的值设为“〈appl i cat ionName〉 Pending',。 [0585] - the "dest inat ion-jndi-name" value at each node to "<appl i cat ionName> Pending ',.

[0586] 对XML文件“unEar/basedir/service/META-INF/ jboss · xml” 实施相同的修改,但将“destination-jndi-name” 下每一节点的值设为“queue/〈appIicationName>Pending”。 [0586] The same changes to the XML file "unEar / basedir / service / META-INF / jboss · xml", but the value is set at each node of the "destination-jndi-name" "queue / <appIicationName> Pending . "

[0587] 针对元素“e jbBindings” 下的XML 文件“workingFolder/unEar/basedir/service/ ]\^丁六-1?/;!_13111-6」_13-」_31'-1311(1.11111”,将属性“」_11(11他1116”的最终值设为3口口1;!_03七;!_011他1116,且 [0587] for the XML file element "e jbBindings" "workingFolder / unEar / basedir / service /] \ ^ DING Liu - 1 /;?! _ 13111-6" _13 - "_ 31'-1311 (1.11111", the property "" _11 (11 of his 1116 "the ultimate value to three ports 1;! _ 03 seven;! _ 011 of his 1116 and

[0588] 步骤6:创建jar文件service. jar [0588] Step 6: Create a jar file service jar.

[0589] 我们依据目录workingFolder/unEar/basedir/service的内容创建jar “service · jar”,其清单为workingFolder/unEar/basedir/service/META-DST/Manifest-mf。 [0589] we created jar "service · jar" in accordance with the contents of the directory workingFolder / unEar / basedir / service, the list is workingFolder / unEar / basedir / service / META-DST / Manifest-mf. 然后我们删除文件夹服务。 Then we remove the folder service.

[0590] 步骤7:处理配置文件 [0590] Step 7: Profile Processing

[0591] 将目录codeGenerat ion下的文件夹xml的内容复制到文件夹work ingFo Ider/ configl^〇 [0591] Copy the contents of the files in the directory codeGenerat ion xml folder to folder work ingFo Ider / configl ^ billion

[0592] 对于XML文件“workingFolder/config/service·Resource ·xml”,我们执行以下修改: [0592] For the XML file "workingFolder / config / service · Resource · xml", we perform the following modifications:

[0593] -将属性“dataSource” 的值设为“DataSource” D [0593] - the attribute "dataSource" value is set to "DataSource" D

[0594] -将属性“JmsCormectionFactoryName” 的值设为“ApplicationQueueConnectionFactory',。 [0594] - the attribute "JmsCormectionFactoryName" value is set to "ApplicationQueueConnectionFactory ',.

[0595] -将属性“LocalJndiName” 的值设为“Local〈applicationName>”。 [0595] - the attribute "LocalJndiName" value is set to "Local <applicationName>".

[0596] -将属性“]1〇11}(&amp;0&amp;七&amp;3〇111'。6”的值设为“〈&amp;卩卩1;!_。&amp;七;!_〇11似1116>?^〇11}(&amp;0&amp;七&amp;3〇111'。6”。 [0596] - the attribute "] 1〇11} (& amp; 0 & amp; seven & amp; 3〇111'.6" value is set to "<& amp; Jie Jie. 1; _ & amp; seven; 〇11 _!.! like 1116> ^ 〇11} (& amp;? 0 & amp; seven & amp; 3〇111'.6. "

[0597] -将属性“561^;[。60116116似1116”的值设为“〈&amp;卩卩1;!_。&amp;七;!_011似1116>?611(1;!_呢”。 [0597] - the attribute "561 ^; [60,116,116 like 1116." Value is set to "<& amp; Jie Jie 1; _ & amp; seven; _ 011 like 1116!.!> 611 (1; _ it?!."

[0598] 下图展示这些修改: [0598] The following diagram shows these modifications:

[0599] 对于XML文件“workingFolder/conf ig/appServersConf ig · xml”,执行以下修改: [0599] For the XML file "workingFolder / conf ig / appServersConf ig · xml", perform the following modifications:

[0600] -对于根节点“App Ser ver Conf i gura ti on s”下的所有节点,关注属性“initialContextFactory” 的值。 [0600] - For the root node "App Ser ver Conf i gura ti on s" at all nodes, the value of interest "initialContextFactory" attribute.

[0601] 如果值为“weblogicJndi_WLinitialContextFactory”,那么将属性“securityProvider” 的值设为“weblogic”。 [0601] If the value is "weblogicJndi_WLinitialContextFactory", then the attribute "securityProvider" value is set to "weblogic".

[0602] 如果值为“org jnp_int erf aces __NamingCon t ex tFactory”,那么将属性“securityProvider” 的值设为“jboss”。 [0602] If the value is "org jnp_int erf aces __NamingCon t ex tFactory", then the attribute "securityProvider" value is set to "jboss".

[0603] 如果值为“com—ibm—websphere—naming—WsnInitial ContextFactory”,那么将属性“securityProvider” 的值设为“websphere”。 [0603] If the value is "com-ibm-websphere-naming-WsnInitial ContextFactory", then the attribute "securityProvider" value is set to "websphere".

[0604] 步骤8:创建特性文件夹 [0604] Step 8: Create a profile folder

[0605] 迭代特性文件“/com/palmyra/arch/tool/updator/conf ig · properties ·” 的内容。 [0605] The iterative nature of the file "/ com / palmyra / arch / tool / updator / conf ig · properties ·" content. 对于遇到的每一特性,创建新目录,其名称为特性的值;新文件夹创建在workingFolder/handleConfigl^〇 For each characteristic encountered, create a new directory with a name for the value of the property; create a new folder in workingFolder / handleConfigl ^ billion

[0606] 在这个示例中,在目录“D:\Projects\PALMYRA11.0\FRAMEW0RK\build\out\ codeGenerat ion/workingFolder/handleConfig” 下,将创建以下文件夹: [0606] In this example, the directory "D: \ Projects \ PALMYRA11.0 \ FRAMEW0RK \ build \ out \ codeGenerat ion / workingFolder / handleConfig" next, will create the following folder:

[0607] Conf igs_conf ig\Labels [0607] Conf igs_conf ig \ Labels

[0608] Conf igs_conf ig\Viewf ormat [0608] Conf igs_conf ig \ Viewf ormat

[0609] Conf igs_config\AppViewf ormat [0609] Conf igs_config \ AppViewf ormat

[0610] Conf igs_conf ig\Reports [0610] Conf igs_conf ig \ Reports

[0611] Conf igs_conf ig\AppSer [0611] Conf igs_conf ig \ AppSer

[0612] Conf igs_conf ig\Transactions [0612] Conf igs_conf ig \ Transactions

[0613] Conf igs_conf ig\LifeCycle [0613] Conf igs_conf ig \ LifeCycle

[0614] Palmyra esources [0614] Palmyra esources

[0615] workingFolder/config下的每个文件将被复制到从其名称切换获得的对应目录下:名称以特性名称(特性文件中:config.properties)开头的文件将被复制到名称为这个特性的值的所创建目录下。 [0615] Each file in workingFolder / config will be copied to the corresponding directory name from the obtained handover: name attribute name (file characteristics: the config.properties) the beginning of the file will be copied to the name property value created directory.

[0616] 举例来说,xml 文件“appServersConf ig · xml” 将被复制到目录“workingFolder/ handleConf ig/Conf igs—conf ig/AppSer',下。 [0616] For example, xml file "appServersConf ig · xml" will be copied to the directory "workingFolder / handleConf ig / Conf igs-conf ig / AppSer ', below.

[0617] 如果文件名称不与任何特性名称匹配,那么这个文件将被复制到目录workingFolder/handleConf ig/Conf igs_conif ig^F 〇 [0617] If the file name does not match the name of any properties, then the file will be copied to the directory workingFolder / handleConf ig / Conf igs_conif ig ^ F billion

[0618] 步骤9:创建conf ig jar文件 [0618] Step 9: Create conf ig jar file

[0619] -在workingFolder/handleConf ig下,我们创建目录“META-INF”,然后在这文件夹下,我们创建清单文件“manifest.mf”,其中我们放入以下属性: [0619] - In workingFolder / handleConf ig, we create the directory "META-INF", then under this folder, we create a manifest file "manifest.mf", in which we place the following attributes:

[0620] Manifest-Version = "1.0〃 [0620] Manifest-Version = "1.0〃

[0621] Created-By=uPalmyra at<The system date>u [0621] Created-By = uPalmyra at <The system date> u

[0622] Version = ''Palmyra: Conf ig:〈version〉〃+ [0622] Version = '' Palmyra: Conf ig: <version> 〃 +

[0623] 将版本的值作为参数提供给所生成的方法。 [0623] A version of the method as a parameter to the value generated.

[0624] 这个文件将用作以下将创建的jar的清单: [0624] This document will be used as the list of jar will be created:

[0625] -jar文件“workingFolder\unEar\basedir\Configs—config. jar”,其将从目录“workingFolder\handleConf ig\Conf igs_conf ig” 的内容创建获得D [0625] -jar file "workingFolder \ unEar \ basedir \ Configs-config. Jar", which is from the catalog "workingFolder \ handleConf ig \ Conf igs_conf ig" of content creation obtain D

[0626] -jar文件“workingFolder\unEar\basedir\DeploymentConfig. jar”,其将从目录“workingFolder\conf ig” 的内容创建获得D [0626] -jar file "workingFolder \ unEar \ basedir \ DeploymentConfig. Jar", which is from the catalog "workingFolder \ conf ig" of content creation obtain D

[0627] -jar文件“workingFolder\unEar\basedir\PalmyraResources · jar”,其将从目录“workingFolder\handleConf ig\PalmyraResources” 的内容创建获得D Content [0627] -jar file "workingFolder \ unEar \ basedir \ PalmyraResources · jar", which is from the catalog "workingFolder \ handleConf ig \ PalmyraResources" created to obtain D

[0628] 步骤10:创建war文件 [0628] Step 10: Create a war file

[0629] -将jar文件“unEar/basedir/webService · jar” 的内容提取到目录unEar/ basedir/webservicel^〇 [0629] - the contents of the jar file "unEar / basedir / webService · jar" directory to extract unEar / basedir / webservicel ^ billion

[0630] -依据目录unEar/basedir的内容在这个目录下创建war文件〈applicationName〉 .war (在这个不;例中是Essai .war) Dwar的目录Web-Inf将含有文件夹“unEar/basedir/ webservice/com/palmyra/arch/webservice/web”的所有内容,·class和·see文件除外D [0630] - create a war based on files in the directory content directory unEar / basedir of <applicationName> .war (not in this; embodiment is Essai .war) Dwar directory Web-Inf containing the folder "unEar / basedir / webservice / com / palmyra / arch / webservice / web "of all content, · class and · see the files except for D

[0631] 步骤11:仓1J建ear文件 [0631] Step 11: Construction ear files cartridge 1J

[0632] -我们为ear “workingFolder\unEar\basedir\META_INF\manifest .mf” 创建清单文件。 [0632] - we "workingFolder \ unEar \ basedir \ META_INF \ manifest .mf" create a manifest file for the ear. 在这个清单中,我们填入以下特性: In this list, we fill in the following features:

[0633] -Manifest-Version= “1.0〃 [0633] -Manifest-Version = "1.0〃

[0634] -Created-By"= “Palmyra at〈The system date>'' [0634] -Created-By "=" Palmyra at <The system date> ''

[0635] -Class_Path =〈list of all the jar files under workingFolder/unEar/ basedir> [0635] -Class_Path = <list of all the jar files under workingFolder / unEar / basedir>

[0636] 在目录worlkingFolder/unEar/basedir下,我们用新创建的清单文件替换掉jar “service. jar',的清单。 [0636] In the directory worlkingFolder / unEar / basedir, we replace it with a list of newly created files out jar "service. Jar ', list.

[0637] 写入ear 的清单:我们创建清单文件workingFolder\unEar\basedir\META_INF/ manifest .mf,且填入以下特性: [0637] inventory write ear: we create a manifest file workingFolder \ unEar \ basedir \ META_INF / manifest .mf, and fill in the following features:

[0638] -Manifest-Version= “1.0〃 [0638] -Manifest-Version = "1.0〃

[0639] -Created-By"= “Palmyra at〈System Date〉" [0639] -Created-By "=" Palmyra at <System Date> "

[0640] -Class_Path =〈list of all the jar files under workingFolder/unEar/ basedir> [0640] -Class_Path = <list of all the jar files under workingFolder / unEar / basedir>

[0641] 在元素Palmyra Version Info (版本信息)下,将属性版本设为檫书版本的值(在这个示例中是1.0)。 [0641] In the element Palmyra Version Info (version information) and the version of the book attributes to Sassafras value (1.0 in this example).

[0642] 然后我们迭代文件夹workingFolder/unEar/basedir的jar文件,选择并非为外部jar的每一文件,因此,例如表##中列出的文件将不会被选中。 [0642] and then we iterate folder workingFolder / unEar / basedir jar file, select the file for each external jar is not, therefore, such as file listed in Table ## will not be selected.

[0643] 对于每一选定文件,将创建Palmyra Version Info下的新属性。 [0643] For each of the selected files, creates a new property in Palmyra Version Info. 新属性的名称为选定jar文件的名称(无jar”),且其值为选定jar的最后修改日期。 Name of the new property to the name (no jar ") jar file is selected, and its value is selected the last modified date of the jar.

[0644] 以jar文件commons-codec-l · 3为例,对于这个jar,属性“commons-codec-l · 3 3” 的值将被创建为这个jar的最后修改的日期。 [0644] in a jar file commons-codec-l · 3, for example, the value of "commons-codec-l · 3 3" will be created as the date of the last modification of the jar for the jar, property. 这个新清单文件将用来更新jar “service. jar”的清单文件D The new manifest file will be used to update the jar "service. Jar" list of documents D

[0645] -依据目录workingFolder/unEar/basedir (在这个;例中是D: \Essai_codegen/ Essai . ear)的内容创建ear文件D这个ear的清单将是文件workingFolder\unEar\basedir\ ]\^丁八-1即\11^111€68^111:[>,且其应用程序文件是11111文件¥0^;!_耶? [0645] - based directory workingFolder / unEar / basedir (in this; case is D:. \ Essai_codegen / Essai ear) of content creation ear file D list the ear will be the file workingFolder \ unEar \ basedir \] \ ^ D eight -1 that \ 11 ^ 111 € 68 ^ 111: [>, and its application file is the file 11111 ¥ 0 ^; _ yeah!? 01(161'\11仙31'/(3011:^8/ application.xml0 01 (161 '\ 11 cents 31' / (3011: ^ 8 / application.xml0

[0646] -删除文件夹workingFolder和TMP (codeGeneration 目录下)。 [0646] - delete folders workingFolder and TMP (under codeGeneration directory).

[0647] ii .仅生成所生成的代码 [0647] ii. Generating only the generated code

[0648] 这个选项在并不生成GeneratedCode. jar或更新ear的情况下创建Ear,因为所有参数“umFilePath”、“updatedServices” 和“updatedConf iguratioriFiles”都为空值D [0648] This option does not generate GeneratedCode. Ear create or update ear jar case, because all parameters "umFilePath", "updatedServices" and "updatedConf iguratioriFiles" are null D

[0649] 为了生成“GeneratedCode . jar”但不更新Ear且不创建新Ear,仅将参数“isCreation'”设为false,将“umlFilePath”设为UML文件的路径,且将参数“generatedCodeOnly',设为true 〇 [0649] In order to generate "GeneratedCode. Jar" but not without creating a new update Ear Ear, only the parameter "isCreation '" set to false, the "umlFilePath" UML path to the file, and the parameter "generatedCodeOnly', set up It is true billion

[0650] 此外,“updatedServices” 和“updatedConf igurationFiles” 必须为空值D [0650] In addition, "updatedServices" and "updatedConf igurationFiles" must be null D

[0651] 参数“sequenceStore',、“verifyOnly',、“generationPack',、“sharedPack',、 “prefix',、“version',、“classPath',、“generateJavaDoc',、“businessServicesPath',、 “compilerPath”以及“compilerVersion”是生成情况下的切换集合D [0651] Parameters "sequenceStore ',," verifyOnly' ,, "generationPack ',," sharedPack' ,, "prefix ',," version' ,, "classPath ',," generateJavaDoc' ,, "businessServicesPath ',," compilerPath "and" compilerVersion "is switched in the case of generating the set of D

[0652] GeneratedCode · jar将创建在earFilePath的根目录下(如果没有编译错误)。 [0652] GeneratedCode · jar will be created in the root directory of earFilePath (if no compilation errors). 表7 所示的参数列表表示这个选项的一个示例。 Parameter list shown in Table 7 shows an example of this option.

[0653] 表7:仅生成所生成代码的示例性参数 [0653] Table 7: generating only exemplary parameters generated code

[0654] String earFiIePath = "D: /Test/Test · ear"; [0654] String earFiIePath = "D: / Test / Test · ear";

[0655] String codeGenerationPath = "D: /PALMYRAl 1.2/codeGeneration"; [0655] String codeGenerationPath = "D: / PALMYRAl 1.2 / codeGeneration";

[0656] boolean isCreation = false ; [0656] boolean isCreation = false;

[0657] String UmlFilePath= “D:/Test/test.xml” ; [0657] String UmlFilePath = "D: /Test/test.xml";

[0658] boolean sequenceStore = false ; [0658] boolean sequenceStore = false;

[0659] boolean verifyOnly = false ; [0659] boolean verifyOnly = false;

[0660] String generationPack = [0660] String generationPack =

[0661] String sharedPack = ""; [0661] String sharedPack = "";

[0662] String prefix = [0662] String prefix =

[0663] String version = 〃1 ·0〃; [0663] String version = 〃1 · 0〃;

[0664] boolean generatedCodeOnly = false ; [0664] boolean generatedCodeOnly = false;

[0665] String classPath = null; [0665] String classPath = null;

[0666] boolean generateJavaDoc = true; [0666] boolean generateJavaDoc = true;

[0667] String businessServicesPath= “D:/BS” ; [0667] String businessServicesPath = "D: / BS";

[0668] Collection updatedServices=null; [0668] Collection updatedServices = null;

[0669] Collection updatedConfigurationFiIes = null; [0669] Collection updatedConfigurationFiIes = null;

[0670] String IogFiIePath = "D:/BUG·log"; [0670] String IogFiIePath = "D: / BUG · log";

[0671] String compilerPath = null; [0671] String compilerPath = null;

[0672] String compilerVersion = null; [0672] String compilerVersion = null;

[0673] AutomaticGeneration. generate (new File (earFilePath), codeGenerationPath,isCreatIonjUmlFilePathjsequenceStore,verifyOnly, generationPack,sharedPack,prefix,version,GeneratedCodeOnly,classPath, generateJavaDoc,businessServicesPath ,updatedServices, updatedConfigurationFiIes,IogFilePath,compiIerPath,compiIerVersion); [0673] AutomaticGeneration generate (new File (earFilePath), codeGenerationPath, isCreatIonjUmlFilePathjsequenceStore, verifyOnly, generationPack, sharedPack, prefix, version, GeneratedCodeOnly, classPath, generateJavaDoc, businessServicesPath, updatedServices, updatedConfigurationFiIes, IogFilePath, compiIerPath, compiIerVersion).;

[0674] 为了生成“GeneratedCode . jar”但不更新Ear且不创建新Ear,必须在参数“umlFilePath”中指定将生成的UML文件的路径,将参数“isCreation' ”设为false,且将参数“generatedCodeOnly” 设为true。 [0674] In order to generate "GeneratedCode. Jar" but not without creating a new update Ear Ear, you must specify the path of the generated UML file in the parameter "umlFilePath", the parameter "isCreation '" set to false, and the parameter " generatedCodeOnly "set to true. 同样,“updatedServices” 和“updatedConf igurationFiles”必须为空值。 Similarly, "updatedServices" and "updatedConf igurationFiles" should be null. 表8列出附加的5个参数D [0675] 表8:借助jar和war列表更新ear的示例性参数 Table 8 lists additional five parameters D [0675] TABLE 8: list update means jar and war exemplary parameters of the ear

[0676] String earFiIePath = "D: /Test/Test. ear"; [0676] String earFiIePath = ". D: / Test / Test ear";

[0677] String codeGenerationPath = "D: /PALMYRAl 1.2/codeGeneration"; [0677] String codeGenerationPath = "D: / PALMYRAl 1.2 / codeGeneration";

[0678] boolean isCreation = true ; [0678] boolean isCreation = true;

[0679] String umlFilePath = null; [0679] String umlFilePath = null;

[0680] boolean sequenceStore = false ; [0680] boolean sequenceStore = false;

[0681] boolean verifyOnly = false; [0681] boolean verifyOnly = false;

[0682] String generationPack = ////; [0682] String generationPack = ////;

[0683] String sharedPack =; [0683] String sharedPack =;

[0684] String prefix =; [0684] String prefix =;

[0685] String version = "1.0"; [0685] String version = "1.0";

[0686] boolean generatedCodeOnly = false ; [0686] boolean generatedCodeOnly = false;

[0687] String classPath = null; [0687] String classPath = null;

[0688] boolean generateJavaDoc = false ; [0688] boolean generateJavaDoc = false;

[0689] String businessServicesPath = null; [0689] String businessServicesPath = null;

[0690] Collection updatedServices = new ArrayListO ; [0690] Collection updatedServices = new ArrayListO;

[0691] updatedServices.add (new File (〃D:/Test/SmartPosition.jar〃)); [0691] updatedServices.add (new File (〃D: /Test/SmartPosition.jar〃));

[0692] updatedServices .add (newFile CD:/Test/statemonitoring. jarO); [0692] updatedServices .add (newFile CD:. / Test / statemonitoring jarO);

[0693] Collection updatedConfigurationFiIes = null; [0693] Collection updatedConfigurationFiIes = null;

[0694] String IogFiIePath = "D:/BUG·log"; [0694] String IogFiIePath = "D: / BUG · log";

[0695] String compilerPath = null; [0695] String compilerPath = null;

[0696] String compilerVersion = null; [0696] String compilerVersion = null;

[0697] AutomaticGeneration. generate (new File (earFilePath), codeGenerationPath,isCreation,umlFiIePath,sequenceStore,verifyOnly, generationPack,sharedPack,prefix,version,GeneratedCodeOnly,classPath, generateJavaDoc,businessServicesPath ,updatedServices, updatedConfigurationFiIes,IogFilePath,compiIerPath,compiIerVersion); . [0697] AutomaticGeneration generate (new File (earFilePath), codeGenerationPath, isCreation, umlFiIePath, sequenceStore, verifyOnly, generationPack, sharedPack, prefix, version, GeneratedCodeOnly, classPath, generateJavaDoc, businessServicesPath, updatedServices, updatedConfigurationFiIes, IogFilePath, compiIerPath, compiIerVersion);

[0698] -如果参数codeGenerationPath为空值或空字符串,那么将其设定为项目目录的父目录C3在任何情况下,CodeGeneration目录通常含有以下文件夹xml、ext和extLib (参照段落“从头开始创建Ear文件”)。 [0698] - if the parameter codeGenerationPath null or empty string, then it is set to the parent directory of the project directory C3, in any case, CodeGeneration folder directory typically contains the following xml, ext and extlib (see paragraph "scratch Ear create file ").

[0699]-如果用户未提到日志文件的路径,那么其值取为“AutomaticGeneration. log” D [0699] - If the user does not log file path mentioned, its value is set at "AutomaticGeneration log." D

[0700] -如果未提到参数classPath(空值或“”),那么将自动计算类路径:其含有代码生成目录中的所有现有jar和Business Service (业务服务)路径(如果提到)中的所有现有jar 〇 [0700] - if not mentioned parameter the classPath (null or ""), the path is automatically calculated based: which contains all of the existing code generation jar directory and Business Service (Business Services) path (if mentioned) of All existing jar billion

[0701] 借助调用以下方法: [0701] With call the following method:

[0702] AutomaticGeneration. generate (new File (earFilePath), CodeGenerationPathjIsCreationjUmlFiIePath,SequenceStorejVerifyOnlyj generationPack,sharedPack,prefix,version,GeneratedCodeOnIy,classPath, generatejavaDoCjbusinessServicesPathjUpdatedServices, updatedConf igurationFiIes,IogFiIePath,compiIerPath,CompilerVersion,hasJsf, excludedSharedPack); . [0702] AutomaticGeneration generate (new File (earFilePath), CodeGenerationPathjIsCreationjUmlFiIePath, SequenceStorejVerifyOnlyj generationPack, sharedPack, prefix, version, GeneratedCodeOnIy, classPath, generatejavaDoCjbusinessServicesPathjUpdatedServices, updatedConf igurationFiIes, IogFiIePath, compiIerPath, CompilerVersion, hasJsf, excludedSharedPack);

[0703] 执行以下步骤: [0703] Perform the following steps:

[0704] 步骤I:创建临时文件夹 [0704] Step I: Create a temporary folder

[0705] -在earpath的父路径下创建目录TEMP (在这个示例中,TEMP将创建在“D: \\Essai_ codegen',下) [0705] - create a directory in the parent path earpath TEMP (in this example, is created in the TEMP "D: \\ Essai_ codegen ', below)

[0706] -从xml文件(参数UmlFilePath中已指定)装载对象UMLApplication [0706] - From the xml file (parameter already specified UmlFilePath) loaded objects UMLApplication

[0707] -在63沖;[16?3也的父路径下删除最终文件夹(81'(3和(3138 86 8)(在这个示例中,在“D:\\Essai—codegen” 下) [0707] - the punch 63; [16 deletes the final folder 3 also parent path (81 '(and 3 (3,138,868) (in this example, the "D: \\ Essai-codegen" lower)?

[0708] -如果earpath的父路径(“D: \YEssai_codegen”)不存在,那么创建这个目录D [0708] - If earpath parent directories ( "D: \ YEssai_codegen") does not exist, create the directory D

[0709] -在earf i I e的父路径下创建新文件夹doc (在这个示例中是“D:\\Essai_ codegen\\doc',)',。 [0709] - create a new folder in the parent doc earf i I e of the path (in this example is "D: \\ Essai_ codegen \\ doc ',)' ,.

[0710]-修改所装载的应用程序,以便使其准备好生成代码(参照Generation Mechanism (生成机制)) [0710] - modifying the application loaded, so that it is ready to generate the code (see Generation Mechanism (generation mechanism))

[0711]-在earFile目录的父目录下创建目录MucSrc [0711] - create a directory in the parent directory earFile MucSrc directory

[0712]-在目录“src”和“MucSrc”中创建类和控制器的源渗照Generation Mechanism) [0712] - creating classes in the directory, and a controller "src" and "MucSrc" as the source retentate Generation Mechanism)

[0713] 步骤2:创建特性文件 [0713] Step 2: Create profile

[0714] -在目录src下创建特性文件“datasource.properties”。 [0714] - create profile "datasource.properties" in the directory src. 在这个文件中定义以下属性: Define the following attributes in this file:

[0715] AutotestDataSource (自动测试数据源) [0715] AutotestDataSource (Automatic Test Data Source)

[0716] DataSource (数据源) [0716] DataSource (data source)

[0717] SecurityStore (安全性存储) [0717] SecurityStore (security storage)

[0718] 这些属性的值将在setup (设置)期间设定。 [0718] values ​​of these attributes set in the period (setting) setup.

[0719]-创建特性文件“gcstorename .properties'在这个文件中将添加属性ATFi Ies。 [0719] - create profile "gcstorename .properties' add properties ATFi Ies in the file.

[0720] -在目录“src”下创建特性文件“sharedPackages.properties” D在这个文件中,我们将放入提到作为参数的前缀和共享包列表。 [0720] - create profile "sharedPackages.properties" D in the directory "src" In this document, we will refer to as parameters into the prefix and share the list of packages.

[0721] 步骤3:编译所生成的代码 [0721] Step 3: compiler generated code

[0722] 如果未提到编译器版本和编译器路径,那么使用缺省编译器,其路径是系统类路径变量的值。 [0722] If not mentioned compiler and compiler version path, then the default compiler, which is the value of the path system class path variable. 在执行编译任务之前,将编译器的错误输出重新导向到一个流,而不是导向到标准错误流,以使得编译器的错误输出可读取到错误阵列列表中。 Before performing compilations, a compiler error output redirected to a stream, rather than leading to the standard error stream, so that the error output of the compiler may be read to the array error list.

[0723] 然后编译目录“src”和“MuSrc”下的所有java源。 [0723] then compile all the java source in the directory "src" and "MuSrc". 编译获得的“.class”文件将添加到“classes”目录下。 Compile obtained ".class" file is added to the lower "classes" directory.

[0724] 步骤4:创建所生成的代码和源jar [0724] Step 4: Create the generated source code and jar

[0725]-为创建jar准备目录“classes” :在形成jar之前必须从这个目录删除文件列表这些排除的文件是: [0725] - jar ready to create the directory "classes": this directory must delete the file from the list prior to the formation jar excluded files are:

[0726] -“MuSrc”下的所有非目录文件 All non-directory files in the "MuSrc" - [0726]

[0727] -所有Palmyra 类 [0727] - All classes Palmyra

[0728] -依据目录“classes”的内容形成jar文件“TestI · jar” [0728] - form the basis of the contents of the directory "classes" jar file "TestI · jar"

[0729] -依据目录“src”的内容形成jar文件“TestISrc · jar” [0729] - form the basis of the contents of the directory "src" jar file "TestISrc · jar"

[0730] -如果提到13118;!_1168 8361^;!_。 [0730] - If the reference 13118; 11688361 ^ _; _!!. 68?&amp;七11(在这个;^;例中,13118;!_11688361^;!_。68?&amp;也="0:\ Projects PALMYBA11.0\TECHNICALSERVICES\out\lib”),那么迭代Umlapplication所使用的模块,针对每一模块查找名称为(theusedmodulename) Gen. jar的jar文件。 ? 68 & amp; 7:11 (in this; ^; example, 13118; _ 11688361 ^; _ 68 & amp; also =!!.? "0: \ Projects PALMYBA11.0 \ TECHNICALSERVICES \ out \ lib"), then the iteration Umlapplication module used to find names for each module Gen. jar jar file (theusedmodulename). 举例来说,如果应用程序使用的模块是“Calendar”,那么在businessServicesPath下查找命名为“CalendarGen. jar”的文件。 For example, if an application module using the "Calendar", then look for the name "CalendarGen. Jar" file under businessServicesPath. 如果找到了文件,那么将文件复制到TMP目录下。 If the file is found, then copy the files to the TMP directory. 对名称为(theusedmodulename) Impl · jar的文件重复这个步骤D Repeat this step for the name D is (theusedmodulename) Impl · jar file

[0731] -删除目录TEMP。 [0731] - delete the directory TEMP.

[0732] iii ·借助jar和war列表更新Ear [0732] iii · jar and war by means of an updated list Ear

[0733] 为了更新Ear,参数“updatedServices”必须含有表示待添加的jar和war列表的“java. io.File”的集合。 [0733] ​​In order to update Ear, the parameter "updatedServices" must contain a set of "java. Io.File" represents the jar and to be added to the list of war. 如果Ear文件不存在,那么丢弃这个异常。 Ear If the file does not exist, then discard the exception. 图8示出的参数列表表示这个选项的一个示例: Figure 8 shows the list of parameters represents one example of this option:

[0734] -在ear文件的父路径下创建目录“TEMP”(在这个示例中,“TEMP”将创建在D:\\ Essai_codegen下)。 [0734] - created in the parent directory path of the ear file "TEMP" (in this example, "TEMP" will be created in D: \\ Essai_codegen under).

[0735] -复制TEMP目录下集合updatedServices的所有文件D [0735] - copy the following TEMP directory of all the files in the collection updatedServices D

[0736] 步骤1:创建临时文件夹 [0736] Step 1: Create a temporary folder

[0737] -在CodeGenerationPath 下创建目录AppTemp [0737] - Create a directory AppTemp in CodeGenerationPath

[0738] -在CodeGenerationPath 下创建目录workingFolder [0738] - Create a directory workingFolder in CodeGenerationPath

[0739] -在workingFolder 下创建目录unEar [0739] - Create a directory unEar in workingFolder

[0740] -在unEar 下创建目录basedir [0740] - Create a directory basedir at unEar

[0741] -在unEar下创建目录conf ig [0741] - create a directory conf ig in unEar

[0742] -在workingFolder 下创建目录unWar [0742] - Create a directory unWar in workingFolder

[0743] -在unWar 下创建目录basedir [0743] - Create a directory basedir at unWar

[0744] -在unWar下创建目录conf ig [0744] - create a directory conf ig in unWar

[0745] 步骤2:构建web · xml文件 [0745] Step 2: Build web · xml file

[0746] 这个步骤与创建新ear的情况相同(参照段落“从头开始创建Ear文件”)。 [0746] This step is to create a new ear in the same situation (see paragraph "starting from scratch Ear file").

[0747] 步骤3:将ear文件复制到临时目录 [0747] Step 3: Copy the file to a temporary directory ear

[0748] 这个步骤包含将待更新的ear文件复制到CodeGenerationPath下的目录AppTemp。 Copy [0748] This step comprises ear file to be updated in the directory AppTemp CodeGenerationPath.

[0749] 步骤4:处理外部文件夹 [0749] Step 4: treatment external folders

[0750] 将所复制的ear文件的内容提取到目录下unEar\basedirD包括在这个ear中的war 文件的内容将被自然地提取到unWar\basedir下(参照段落“从头开始创建Ear文件”)。 [0750] The content of the copied ear files extracted to unEar \ basedirD include the contents of the war file in the ear will be naturally extracted directory to unWar \ under basedir (see paragraph "starting from scratch Ear file").

[0751] TEMP目录的内容(在这个示例中,其仅含有jar文件Agenda. jar)将被添加到目录unEar\basedir下的ear文件中D [0751] Content TEMP directory (in this example, only the jar file containing Agenda. Jar) is added to the ear file directory unEar \ basedir in D

[0752] 在用户借助jar文件service, jar更新ear的情况下,目录服务将被创建在unEar/ basedir下,从这个目录下提取这个添加文件的内容,然后将内容重新压缩以形成jar文件service·jar〇 [0752] In the case of the user by means of the jar file service, jar update ear, the directory service will be created in the unEar / basedir, extract the contents of this add files from this directory, then the contents of the re-compressed to form the jar file service · jar〇

[0753] 步骤5:创建war文件 [0753] Step 5: Create a war file

[0754] 依据unEar/basedir的内容在这个目录下创建war文件〈appl icationName〉· war (在这个不;例中是Essai . war) D war的目录Web-Inf将含有文件夹“unEar/basedir/ webservice/com/palmyra/arch/webservice/web” 的所有内容,但· see 文件除外D [0754] created based on the content unEar / basedir in this catalog war file <appl icationName> · war (this is not; case is Essai war.) D war directory Web-Inf containing folder "unEar / basedir / webservice / com / palmyra / arch / webservice / web "of all content, except · see file D

[0755] -迭代目录AppTemp的内容(在这种情况下,这个目录仅含有经复制的ear文件h [0755] - content directory AppTemp iteration of (in this case, this directory contains only file by copying the ear h

[0756] -打开找到的ear文件的清单,并查找属性“Palmyra Version Info.'如果找不到这个属性,那么丢弃这个异常。 [0756] - A list of open ear to find the file and find properties "Palmyra Version Info 'If you can not find this property, then discard the exception.

[0757] 步骤6:创建ear文件 [0757] Step 6: Create ear file

[0758] -创建ear的清单并形成ear文件,如段落“从头开始创建Ear文件”中所描述。 [0758] - Creates a list of ear and ear formation documents, as described in paragraph "Ear file created from scratch," as described.

[0759] -删除文件夹workingFo Ider [0759] - delete a folder workingFo Ider

[0760] -删除文件夹AppTemp [0760] - delete a folder AppTemp

[0761] iv.借助配置文件列表更新Ear文件 [0761] iv. With the profile list update Ear file

[0762] 为了向Ear添加一些配置文件,参数“updatedConf 1811從七;!_〇1^;!_168”必须含有表示待添加的文件列表的“java. io.File”的集合。 [0762] In order to add some configuration files to the Ear, parameter "updatedConf 1811 from seven;! ^ _ 〇1;! _ 168" indicates that the file must contain a list to be added to a collection of "java io.File." A. 如果Ear文件不存在,那么丢弃这个异常。 Ear If the file does not exist, then discard the exception. 每个配置文件将在“Conf igs_conf ig · jar”或“PalmyraRessources · jar”(从其名称切换获得) 中进行设置。 Each profile will be "Conf igs_conf ig · jar" or "PalmyraRessources · jar" (switch to get its name) set in.

[0763] b.利用特性文件使用自动生成 [0763] b. Profile automatically generated using

[0764] 使用自动生成的第二种方法是向特性文件填入所有需要的信息。 The second method [0764] is used to automatically generate all the information needed to fill profile. 表9所示的参数列表表示这个选项的一个示例其将作为唯一的第一个参数传递到类AutomaticGenerat ion (jar“ExtemalBuilder. jar” 中唯一的类)中的main方法D Table 9 shows an exemplary list of parameters indicates that this option will be passed as a parameter to the first single class AutomaticGenerat ion (the only class in jar "ExtemalBuilder. Jar") in the main method D

[0765] 表9:借助特性文件使用自动生成的示例性参数 [0765] Table 9: characteristics of the file by using exemplary parameters automatically generated

[0766] String earFiIePath = "D: /Test/Test. ear"; [0766] String earFiIePath = ". D: / Test / Test ear";

[0767] String codeGenerationPath = "D: /PALMYRAl 1.2/codeGeneration"; [0767] String codeGenerationPath = "D: / PALMYRAl 1.2 / codeGeneration";

[0768] boolean isCreation = true ; [0768] boolean isCreation = true;

[0769] String umlFilePath = null; [0769] String umlFilePath = null;

[0770] boolean sequenceStore = false; [0770] boolean sequenceStore = false;

[0771] boolean verifyOnly = false; [0771] boolean verifyOnly = false;

[0772] String generationPack = ////; [0772] String generationPack = ////;

[0773] String sharedPack =; [0773] String sharedPack =;

[0774] String prefix =; [0774] String prefix =;

[0775] String version = 〃1 ·0〃; [0775] String version = 〃1 · 0〃;

[0776] boolean generatedCodeOnly = false ; [0776] boolean generatedCodeOnly = false;

[0777] String classPath = null; [0777] String classPath = null;

[0778] boolean generateJavaDoc = false ; [0778] boolean generateJavaDoc = false;

[0779] String businessServicesPath = null; [0779] String businessServicesPath = null;

[0780] Collection updatedServices=null; [0780] Collection updatedServices = null;

[0781] Collection updatedConfigurationFiles = new ArrayListO ; [0781] Collection updatedConfigurationFiles = new ArrayListO;

[0782] updatedConfigurationFiles.add (new File ("D:/Test/ service·transaction+ File.xmll”)); [0782] updatedConfigurationFiles.add (new File ( "D: / Test / service · transaction + File.xmll"));

[0783] updatedConfigurationFiles. add (new FiIe (〃D:/Test/VF_Presentation_ ViewFormat · xml 〃)); [0783] updatedConfigurationFiles add (new FiIe (〃D: / Test / VF_Presentation_ ViewFormat · xml 〃));.

[0784] String IogFiIePath = "D:/BUG·log"; [0784] String IogFiIePath = "D: / BUG · log";

[0785] String compilerPath = null; [0785] String compilerPath = null;

[0786] String compilerVersion = null; [0786] String compilerVersion = null;

[0787] AutDmaticGeneration. generate (new FiIe (earFiIePath),codeGenre ' ationPath,isCreation,umlFiIePath,sequencestore,verifyOnly,generationPack, sharedPack,prefix,version,GeneratedCodeOnIy,cIassPath,generateJavaDoc, businessServjcesPath,updatedServices,updatedConf igurationFiIes,IogFilePath, compilerPath,compilerVersion); [0787] AutDmaticGeneration. Generate (new FiIe (earFiIePath), codeGenre 'ationPath, isCreation, umlFiIePath, sequencestore, verifyOnly, generationPack, sharedPack, prefix, version, GeneratedCodeOnIy, cIassPath, generateJavaDoc, businessServjcesPath, updatedServices, updatedConf igurationFiIes, IogFilePath, compilerPath, compilerVersion);

[0788] 这个文件中的特性是: [0788] characteristics of this file is:

[0789] ear Path: Ear文件的路径D [0789] ear Path: Ear file path D

[0790] isCreation:说明文件是创建的新Ear还是现有Ear文件的更新。 [0790] isCreation: Documentation is updated with new or existing Ear Ear file created. ture或false (缺省false) 〇 ture or false (default false) billion

[0791] codeGenerationPath: Palmyra的目录“CodeGenerat ion” 的路径。 [0791] codeGenerationPath: Palmyra directory path "CodeGenerat ion" of. 如果这个特性未分配到值,那么将其设为当前路径的父路径。 If this feature is not assigned to the value, set it to the parent path of the current path.

[0792] umlFiIePath:将由UML Designer生成的UML文件的完整路径。 [0792] umlFiIePath: UML Designer will generate the full path of UML file.

[0793] sharedPack:保持由逗号隔开的共享包列表的字符串。 [0793] sharedPack: holding shared packet string list separated by commas.

[0794] prefix:共享包的前缀。 [0794] prefix: prefix shared packet.

[0795] generationPack:由逗号隔开的所生成的包列表D [0795] generationPack: a comma-separated list of the generated packet D

[0796] verify:如果为true,那么将在并不生成任何java类的情况下验证XML文件。 [0796] verify: validating XML file If true, it would in any case does not generate java classes under. (缺省false) 〇 (Default false) billion

[0797] generatedCodeOnly:如果为true,那么将在并不更新Ear文件的情况下生成并编译java类“缺省false) D [0797] generatedCodeOnly: if, it will generate and compile in the case file does not update Ear is true java class "default false) D

[0798] IistJarWar:由逗号隔开的所添加的jar和war的列表D [0798] IistJarWar: separated by commas added jar and war list D

[0799] xmlConfig:将添加到Ear的由逗号隔开的配置文件列表。 [0799] xmlConfig: Adding to the Ear by a comma-separated list of profiles.

[0800] IogFi IePath :日志文件的路径。 [0800] IogFi IePath: path to the log file. 如果这个特性没有值,那么将设为“AutomaticGeneration.log”。 If this feature is not value, it will be set to "AutomaticGeneration.log".

[0801] sequenceStore:如果为true,那么用户可在Setup侧指定他自己的序列数据存储。 [0801] sequenceStore: If true, the user can specify his own sequence data stored in the Setup side. (缺省false) 〇 (Default false) billion

[0802] generateJavaDoc:ture或false (缺省false) 〇 [0802] generateJavaDoc: ture or false (default false) square

[0803] bus inessServi cesPath:将通过比较UML文件中的导入模块与这个路径下现有jar 的名称而自动添加到Ear的业务服务目录的路径。 [0803] bus inessServi cesPath: UML by comparing the file into the module prior to this path name is automatically added to the jar Ear path business service directory.

[0804] compilerPath:特定编译器(可选)的路径。 [0804] compilerPath: Compiler specific path (optional) is.

[0805] compilerVersion:特定编译器(可选)的版本。 [0805] compilerVersion: specific compiler version (optional) of.

[0806] classPath:用来编译所生成的代码的类路径。 [0806] classPath: to compile the class path of the generated code. 如果为空值,那么类路径将含有代码生成目录中的所有jar。 If the value is null, then the class path all the jar containing the code generation directory.

[0807] 表10表示示例性特性文件。 [0807] Table 10 shows an exemplary profile.

[0808] 表10:示例性特性文件 [0808] Table 10: Exemplary profile

[0809] *创建含有这些属性的特性文件: [0809] * Create profiles containing these attributes:

[0810] earPath = D: / test/Test. Ear [0810] earPath = D: / test / Test Ear.

[0811] isCreat ion = true [0811] isCreat ion = true

[0812] codeGenerationPath = 〃D: /Palmyra 11 · 2/codeGeneration〃 [0812] codeGenerationPath = 〃D: / Palmyra 11 · 2 / codeGeneration〃

[0813] UmlFilePath = D/ test/testGen. xml [0813] UmlFilePath = D / test / testGen. Xml

[0814] generatedCodeOnly = false [0814] generatedCodeOnly = false

[0815] pref ix = "d〃 [0815] pref ix = "d〃

[0816] verify = false [0816] verify = false

[0817] IistJarffar=D:/test/SmartPosition.jar,D:/test/statemonitoring.jar,D:/ test/test. jar,D:/test/dashBoard. war [0817] IistJarffar = D: /test/SmartPosition.jar,D: /test/statemonitoring.jar,D: / test / test jar, D:.. / Test / dashBoard war

[0818] xmlConfig=D:/test/presentationContext.test.xml,D:/test/test.xml [0818] xmlConfig = D: /test/presentationContext.test.xml,D: /test/test.xml

[0819] IogFiIePath = D :/test/GenerationLog. log [0819] IogFiIePath = D: / test / GenerationLog log.

[0820] businessServicesPath = "D: /BS〃 [0820] businessServicesPath = "D: / BS〃

[0821] 调用类AutomaticGeneration 中的main 方法 The main method [0821] of the calling class AutomaticGeneration

[0822] -使用windows控制台 [0822] - use windows console

[0823] >java-jar ExtcanalBuildcr. jar propertyFiIeName [0823]> java-jar ExtcanalBuildcr. Jar propertyFiIeName

[0824] -使用批处理文件 [0824] - using a batch file

[0825] path = D: \bea\ jdkl41_05\bin [0825] path = D: \ bea \ jdkl41_05 \ bin

[0826] java-Xms256m-Xmx512m-Xdebug-Xnoagent-Djava. compiler = NONE-Xrunjdwp: trarisport = dt_socket,server = y,address = 5051,suspend = n_jar ExtenalBuilder. jar propertyFiIeName [0826] java-Xms256m-Xmx512m-Xdebug-Xnoagent-Djava compiler = NONE-Xrunjdwp:. Trarisport = dt_socket, server = y, address = 5051, suspend = n_jar ExtenalBuilder jar propertyFiIeName.

[0827] V.部署 [0827] V. deployment

[0828] A.Palmyra Setup Tool (设置工具) [0828] A.Palmyra Setup Tool (setting tool)

[0829] Palmyra提供类似向导的设计工具,目的在于使将所生成的应用程序部署到各个应用程序服务器(例如,BEA Weblogic、或IBM Websphere或其他)的过程实现自动化。 [0829] Palmyra provides wizard-like design tool, the purpose is to make the generated application deployed to each application server (e.g., BEA Weblogic, IBM Websphere, or other) to automate the process. Palmyra设置工具隐藏了应用程序服务器的复杂本质。 Palmyra setup tool hides the complex nature of the application server. 这个设置工具也管理与不同数据库提供商(例如,〇racle、Microsoft SQL server或IBM DB2)的通信。 This setting also manage communication tool with a different database providers (eg, 〇racle, Microsoft SQL server or IBM DB2) is.

[0830] 当使用设置工具进行部署步骤时,用户建立的配置可存储在文件中供未来使用。 [0830] When a tool is provided for deployment step, the user may store the created configuration file for future use.

[0831] Palmyra设置工具支持多个存在系统、应用程序服务器和数据库,例如: [0831] Palmyra provided a plurality of tool support there is a system, application servers and databases, for example:

[0832] (1)操作系统:Windows、Linux; [0832] (1) Operating System: Windows, Linux;

[0833] (2)应用程序服务器:Weblogic 8.1、Weblogic 9.1、Weblogic 9.2、 Weblogicl0.0、JBoss 3.2.x、JBoss 4.0.x、JBoss 4.2.x、Websphere 5.1、Websphere 6·χ、 WebSphere 7.x; [0833] (2) application servers: Weblogic 8.1, Weblogic 9.1, Weblogic 9.2, Weblogicl0.0, JBoss 3.2.x, JBoss 4.0.x, JBoss 4.2.x, Websphere 5.1, Websphere 6 · χ, WebSphere 7.x ;

[0834] (3)数据库:0racle(10g 版本及以下版本)、DB2、DB2for z/0S、MYSQL(4.1.18 版本或更高版本)、391^8奸¥奸(2000、2005及2008版本)。 [0834] (3) Database: 0racle (10g version and below), DB2, DB2for z / 0S, MYSQL (4.1.18 or later editions), 391 ^ ¥ 8 rape rape (2000, 2005 and 2008 editions) .

[0835] Palmyra设置工具提供类似向导的步骤来完成设置操作。 [0835] Palmyra setting tool provides wizard-like steps to complete the setting operation. 第一步是欢迎屏幕。 The first step is the Welcome screen. 在欢迎屏幕中,用户可找到按钮“Options'单击按钮“Options”将弹出含有4个选项的选项板: Security数据源具有不同特性,Sequence数据源具有不同特性,Load设置参数以及Update 设置参数。 In the welcome screen, the user can find the button "Options' Click on the button" Options "will pop-up palette contains four options: Security data sources with different characteristics, Sequence data sources with different characteristics, Load and Update to set parameters to set parameters.

[0836] 第二步是指定操作系统和应用程序服务器。 [0836] The second step is to specify the operating system and application server. 在这个步骤中,可选择操作系统和应用程序服务器。 In this step, you select the operating system and application server.

[0837] 不同的应用程序服务器需要各种各样的详细信息。 [0837] different application server needs details varied. 对于Weblogic 9.1和Weblogic 9.2来说,必须传递Weblogic的管理帐户的用户名和密码。 For Weblogic 9.1 and Weblogic 9.2, you must pass Weblogic administrative account user name and password. 对于Weblogic 5.1来说,必须传递服务器名称和节点名称。 For Weblogic 5.1, you must pass the server name and node name. 对于Websphere 6.X来说,必须传递服务器名称、节点名称和配置文件名称,且必须选择应用程序服务器的类型(网络部署或正常情况)。 For Websphere 6.X, you must pass a server name, node name, and the name of the configuration file, and must select the type of the application server (network deployment or normal).

[0838] 第三步是指定应用程序服务器的主目录和JMS供应商。 [0838] The third step is to specify the home directory of the application server and the JMS provider. 对于所有版本的Weblogic 应用程序服务器来说,除了JMS供应商(MQSeries或缺省JMS)以外,还必须传递应用程序服务器的主目录、将使用到的域和服务器名称。 For all versions of Weblogic application servers, in addition to the JMS vendor (MQSeries or JMS default), it must also pass the home directory of the application server, and will use the domain name servers. 对于所有版本的JBoss来说,仅必须传递域目录。 For all versions of JBoss, it is only necessary to transfer the domain directory. 对于所有版本的Websphere来说,必须传递服务器主目录和JMS供应商。 For all versions of Websphere, it must pass the master directory server and the JMS provider.

[0839]第四步是指定Ear路径。 [0839] The fourth step is to specify Ear path. 在这个步骤中指定待安装的Ear的路径。 Specified to be mounted in this step Ear path.

[0840] 第五步是设置User Login Parameters (用户登录参数)。 [0840] The fifth step is to set the User Login Parameters (user login parameters). 在这个步骤中输入登录到所安装的应用程序的缺省帐户的用户名和密码。 Enter the default account to log in to the application installed in the user name and password in this step.

[0841] 最后一步是设置Data source parameters (数据源参数)。 [0841] The final step is to set the Data source parameters (parameter data source). 所有应用程序需要数据源来顺利运行,这些数据源具有必须传递的参数,例如: All applications need to run smoothly data sources, the data sources having the parameters must be passed, for example:

[0842] Database type:数据库的类型; [0842] Database type: type of database;

[0843] Operating system:数据库机器上的操作系统; [0843] Operating system: the operating system on the database machine;

[0844] Host name:数据库机器上的宿主名称; [0844] Host name: host name of the machine on the database;

[0845] Database name:数据库实例的名称; [0845] Database name: name of the database instance;

[0846] User name:待使用的数据库用户名称; [0846] User name: the name of the database to be used by the user;

[0847] Password:用户名的密码。 [0847] Password: password for the user name.

[0848]用户可通过单击按钮“Test Connection”来测试与指定数据库的通信。 [0848] The user can communicate by clicking on the button "Test Connection" to test the specified database.

[0849] 所有Palmyra Ear具有至少3个标准数据源:security store (安全性存储)、 autotest datasource (自动测试数据源)和data source (数据源)。 [0849] All Palmyra Ear standard data having at least three sources: security store (security storage), autotest datasource (Automatic Test data source) and the data source (data source). 在大多数情况下,安全性存储与数据源具有相同参数,因此缺省情况下设置工具无法显示安全性存储以供输入其参数。 In most cases, the security of stored data source with the same parameter, thus setting tool can not be displayed by default security parameters stored for its input. 如果想要显示安全性存储,转到选项板并选中复选框“security store has different properties”(安全性存储具有不同特性)。 If you want to display the security of storage, go to the palette and check the box "security store has different properties" (security of storage with different characteristics).

[0850] 可基于选定应用程序服务器的类型指定附加选项。 [0850] Additional options can be specified based on the type selected application server.

[0851] 对于Weblogic来说,附加选项包括: [0851] For Weblogic, the additional options include:

[0852] 部署和配置应用程序服务器:将应用程序安装到带有所有需要的配置的应用程序服务器。 [0852] Server application deployment and configuration: install the application to the application with all the required configuration server.

[0853] 去除所部署的应用程序:在安装新应用程序之前去除所有已部署的应用程序。 [0853] removal application deployment: remove all deployed applications before installing new applications.

[0854] 去除JMS文件存储:从这个应用程序服务器的队列中去除所有消息。 [0854] File storage JMS removed: remove all messages from the queue the application server.

[0855] 去除服务器高速缓存文件:清除应用程序服务器中的高速缓存。 [0855] removing the server cache files: Clear application server cache.

[0856] 复制数据库驱动器:将数据库驱动器复制到这个应用程序服务器。 [0856] replicate database driver: Copy the database driver to the application server.

[0857] 复制ant库:将ant库复制到这个应用程序服务器。 [0857] ant copy the library: The library ant copied to the application server.

[0858] 更新应用程序服务器类路径:更新应用程序服务器类路径。 [0858] Application server classpath update: Update the application server class path.

[0859] 设置参数路径:为了使设置设置操作更快,设置参数可保存在文本文件中,其可在稍后重复使用而无需重新手动写入。 [0859] Parameter settings path: in order to make the operation faster setting, setting parameters can be saved in a text file, which can be reused without the need to manually re-written later.

[0860] 用户可通过单击按钮选项板上的按钮“Load Setup Parameters”来重复使用所生成的文本文件,或者可通过单击按钮“update Setup Parameters”来更新。 [0860] The user can click the button palette button "Load Setup Parameters" to re-use the resulting text file, or can be updated by clicking the button "update Setup Parameters".

[0861] VI.创建数据库结构 [0861] VI. Creating a database structure

[0862] A.创建数据库表 [0862] A. Create a database table

[0863] 数据库结构由具有列、索引和约束的表构成。 [0863] database structure having a column, and a constraint index table configuration. 系统使用元数据来创建这个结构,所述元数据是设计阶段依据UML类图中定义的类而创建的。 The system uses the metadata to create this structure, the metadata is based on the design stage of the class defined in UML class diagram created.

[0864] 持久性模块依据以下规则从UML类生成表名: [0864] Persistent module generates a name from the UML class according to the following rules:

[0865] TableName = IastPackage+'_'+ClassName+'_'〇 [0865] TableName = IastPackage + '_' + ClassName + '_' square

[0866] 举例来说,如果类的完整名称是abcd MyClass,那么所生成的名称是d_ MyClass_。 [0866] For example, if the full name of the class is abcd MyClass, then the name is generated d_ MyClass_. 应注意,如果所生成的名称超过30个字符,那么将从头开始截断以适应最大长度(30包括常量下划线)。 It should be noted, if the generated names more than 30 characters, it will start from scratch truncated to fit the maximum length (30, including constant underscore).

[0867] 举例来说,如果类名称是 [0867] For example, if the class name is

[0868] abcdEntityWithLongNameForContractTest,那么所生成的名称是tyWithLongNameForContractTest_〇 [0868] abcdEntityWithLongNameForContractTest, then the generated name tyWithLongNameForContractTest_〇

[0869] 下文表示出各个类之间的关系。 [0869] Hereinafter shows the relationship between classes. 图15A示出1对1关系的示例。 FIG 15A shows an example of a 1 to 1 relationship. 在这个示例中,表X将含有54〇〇(16_和7知1^_。对54〇〇(16_和7知1^创建索引(仅在组合关系的情况下,对于聚合关系, UML必须如此说明)。 In this example, the table containing the X 54〇〇 (16_ _ ^ 1 and 7 known. For 54〇〇 (16_ ^ 1 and 7 to create an index known (only in the case of a combination of relationship, the relationship between the polymerization, the UML It must be described as such).

[0870] 图15B示出1对N关系的示例。 [0870] FIG 15B illustrates an example of a to-N relationship. 在这个示例中,表Y将含有1$(3〇(^_和1$?1^_。对x$ C〇deJ;PX$pk_a建索引(仅在组合关系的情况下,对于聚合关系,系统必须如此说明)。 In this example, the table containing the 1 $ Y (3〇 (^ _ ^ _ and 1 to $ x $ 1 C〇deJ;?. PX $ pk_a indexing (only in the case of the combination relation for aggregation relationship, The system must be described as such).

[0871] 图16示出带有接口的关系的示例。 [0871] FIG. 16 shows an example of the relationship with the interface. 在带有接口的聚合关系的情况下,我们向与类X 相关的表添加字段superlnterface$type_。 In the case where the syndication relationship with the interface, we add a field to the table superlnterface $ type_ related class X. 这个字段含有类Yl或Y2的完整名称。 This field contains the full name of the class Yl or Y2.

[0872] 注意:如果X的实例与Yl的实例有关系,那么表X_中的super lnterf ace$type_将设为类Yl的完整名称。 [0872] Note: If X instances associated with instances Yl, then X_ tables in the super lnterf ace $ type_ will be set to the full name of the class Yl.

[0873] 在带有接口的带有多样性η的聚合关系的情况下,并不添加属性…$type_。 [0873] In the case of polymerization with a diversity η relationship with the interface, does not add the attribute ... $ type_.

[0874] 类属性到表字段的映射依据以下规则: [0874] class attribute field in the mapping table according to the following rules:

[0875] Field name = attribute name+'_' [0875] Field name = attribute name + '_'

[0876] 例如:name—>name_ [0876] For example: name-> name_

[0877] 在一个特定的实施方案中,如果所生成的名称超过30个字符,那么将从头开始截断以适应最大长度(30包括常量下划线)。 [0877] In a particular embodiment, if the generated name exceeds 30 characters, the scratch truncated to fit the maximum length (including 30 constant underlined).

[0878] 举例来说,如果属性名称是 [0878] For example, if the attribute name is

[0879] longFieldNameForPersistenceContractTest,那么所生成的名称是nameForPersistenceContractTest_〇 [0879] longFieldNameForPersistenceContractTest, then the generated name nameForPersistenceContractTest_〇

[0880] 图17示出继承性的示例。 [0880] FIG 17 illustrates an exemplary inheritance. 正常创建表mother_(无特殊处理)。 Create a normal table mother_ (no special treatment). 表chilcL将仅含有字段pk_,其带有类Child (a2)中宣称的字段。 Table chilcL only the fields containing the pk_, fields declared Child (a2) with its class. 表child_*的每次插入将伴随表mother_中的每次插入。 Table child_ * insert will accompany each table mother_ in each insertion.

[0881] 依据完整性规则创建约束: [0881] create constraints based on integrity rules:

[0882] 实体E中字段F中的stereotype “unique”(唯一字段)将译为以下动作: [0882] entity E in the fields F stereotype "unique" (unique field) will be translated into the following actions:

[0883] 通过向字段F添加类型约束un i que来更改E_。 [0883] Type Constraints un i que by adding the field F to change the E_.

[0884] 实体E中字段F中的stereotype“code”(应为强制的)将译为以下动作: [0884] entity E in the fields F stereotype "code" (should be mandatory) will be translated into the following actions:

[0885] 对字段F添加类型约束unique。 [0885] Add constraints unique type of field F.

[0886] 实体E中字段F中的tagged value“index”将译为以下动作: [0886] fields in the entity E F is tagged value "index" will be translated into the following actions:

[0887] 对这个字段创建索引。 [0887] create an index on this field.

[0888] B.更新数据库表 [0888] B. update the database table

[0889] 使用迭代过程来开发目标软件应用程序。 [0889] using an iterative process to develop software applications that target. 通过这个过程,每一迭代产生新版本的软件应用程序,其相比前一版本具有更多功能性。 Through this process, each iteration to generate new versions of the software application, which has more functionality compared to the previous version. 每当针对每一迭代对UML模型进行修改, 应依据模型所表示的元数据更新数据库结构。 Whenever modify UML models for each iteration should update the database structure metadata model representation basis. 通过这个过程,系统允许数据库结构自动更新而不会丢失先前输入的数据。 Through this process, the system allows the database structure automatically updated without losing data previously entered.

[0890] 在应用程序的开发阶段,或将已部署的应用程序升级到新版式时,应用程序的设计通常有所更新,且这些更改又会影响数据库的设计。 When [0890] In the development phase of the application, or the application will be deployed to upgrade to the new layout, design applications typically been updated, and those changes would affect the design of the database. 这些更改包括向应用程序添加类/从应用程序去除类,向每个类添加字段类/从每个类去除字段。 These changes include the addition to the application class / class is removed from the application, add fields to each class category / removed from each class field. 为了保留存储中的当前数据, 在持久性服务中提供“Update Tables”操作,以便修改底层存储而同时最大限度地降低数据丢失风险。 To retain the current data store, providing "Update Tables" persistence service operations in order to modify the underlying storage while minimizing the risk of losing data.

[0891] 本文档描述了选择“Update Tables”操作后将执行的修改。 [0891] This document describes Select Edit "Update Tables" after the operation performed.

[0892] 在模型(带有η个属性)中添加新实体将译为以下动作: [0892] In a new entity added to the model (attributes with η) will be translated into the following actions:

[0893] -在数据库中创建实体的表。 [0893] - create a table entity in the database.

[0894] -向字段pkjgl加主键约束。 [0894] - adding to the primary key constraint field pkjgl.

[0895]-向表FormatData_添加n+7条记录,所述表FormatData_含有所有表的所有列的信息(η个属性,7个字段) [0895] - adding to the table records FormatData_ n + 7, the table containing information FormatData_ all tables for all columns ([eta] attributes, seven fields)

[0896] 从模型去除实体将译为以下动作: [0896] The entity is removed from the model translated into the following actions:

[0897] -无动作(实体的表是现有表) [0897] - No action (Table entity existing table)

[0898] 将模型中现有实体的名称从E更改为Ε2将译为以下动作: [0898] The model name of an existing entity is changed from E to be translated Ε2 following actions:

[0899] -创建新表Ε2_ (表E_是现有表) [0899] - Creates a new table Ε2_ (Table E_ existing table)

[0900] -执行先前情境下描述的相同动作。 [0900] - performing the same operation as previously described the context.

[0901] 向现有实体E添加新字段F将译为以下动作: [0901] Adding new fields to an existing entity E F will be translated into the following actions:

[0902] -通过添加新字段F来更改表Ε_。 [0902] - to change the table Ε_ by adding a new field F.

[0903] -删除表F〇rmatData_*与实体E相关的所有条目,然后添加新条目。 [0903] - delete all entries in the table F〇rmatData_ * E-related entities, and then add a new entry.

[0904] 去除现有实体E中的字段F将译为以下动作: [0904] F field is removed prior to the entity E is translated as the following:

[0905] -无动作(注意:如果这个字段从未被分配到)。 [0905] - No Action (Note: If this field is never assigned to).

[0906] 将现有实体E中字段F的名称更改为F2将译为以下动作: [0906] The name of an existing entity E in the field F2 will change the F translated following actions:

[0907] -通过添加新字段F2来更改表E_。 [0907] - by adding a new field F2 to change the table E_. (F是现有表E_中的现有字段) (F E_ existing an existing field in the table)

[0908] -删除与表FormatData_中实体E相关的所有条目,然后添加新条目。 [0908] - delete all entries in the table FormatData_ E-related entity, then add a new entry. (F无对应记录,F2有新记录) (F no corresponding record, F2 new record)

[0909] 在模型(含有η个属性)中添加与另一实体具有组合或聚合关系的新实体将译为以下动作: [0909] In the model (attributes containing η) Add a new entity or polymeric composition having a relationship with another entity to be translated into the following actions:

[0910] -在数据库中创建实体的表。 [0910] - create a table entity in the database.

[0911] -向字段pk_添加主键约束 [0911] - pk_ added to the primary key constraint field

[0912] -向表FormatData_添加n+9条记录(η个属性,7个字段,entity$code和entity$pk 字段)。 [0912] - n + 9 records added to the table FormatData_ (η attributes, seven fields, entity $ code field and entity $ pk).

[0913]-在ConstraintsDataJlI入用于索引的新记录和为这个实体创建的。 [0913] - a new record for the index in ConstraintsDataJlI and created for this entity. (下文详细描述) (Described in detail below)

[0914] 在两个实体之间添加组合或聚合类型的新关系将译为以下动作: [0914] Add a new combination or type of polymerization relationship between two entities will be translated into the following actions:

[0915] -通过添加所有者的$c〇de和$pk字段来更改在数据库中应具有外键的表。 [0915] - be changed by adding $ c〇de and $ pk field owners should have a foreign key table in the database.

[0916] -删除表F〇rmatData_*与应具有外键的表相关的所有条目,然后添加新条目。 [0916] - delete a table F〇rmatData_ * and all entries should have the relevant foreign key table, and then add a new entry. (包括owner$code和owner$pk) (Including the owner $ code and the owner $ pk)

[0917] 在两个实体之间添加继承性类型的新关系将译为以下动作: [0917] inheritance to add a new relationship between the two types of entities will be translated into the following actions:

[0918] -无需执行动作。 [0918] - no need to perform an action.

[0919] 更改关系的多样性将译为以下动作: [0919] Diversity relationship will change translated into the following actions:

[0920] -如果多样性更改不是将关系从单值更改为多值,那么无需执行动作,反之亦然。 [0920] - If diversity is not to change the relationship between the change from single to multi-valued value, you do not need to perform an action, and vice versa.

[0921] -当更新关系本质时,系统更改外键在具有可导航角色的表中的位置。 [0921] - When updating the nature of the relationship, the system changes the position of the foreign key in the table having a role in navigation.

[0922] 更改字段的类型将译为以下动作: [0922] the type of change field will be translated into the following actions:

[0923] -通过修改字段的数据类型来更改有关表,在RDBMS (关系数据库管理系统)允许的情况下继续这个步骤。 [0923] - about the table to change the data type field of modifying, in a case where this step continues RDBMS (relational database management system) is allowed.

[0924] -删除表FormatData_中与有关表相关的所有条目,然后添加新条目。 [0924] - delete all entries in the table FormatData_ relating to relevant table, and then add a new entry.

[0925] C.更新数据库约束 [0925] C. update database constraints

[0926] 依据UML模型中使用字段和关系多样性来定义的完整性规则创建数据库的表约束。 [0926] create a table constraint databases based on UML model used to define the diversity of fields and relationships of integrity rules. 每当对完整性规则进行修改,必须更新表约束。 Whenever the integrity of the rule changes, you must update the table constraint. 系统在可能时提供数据库约束的自动更新。 The system provides database constraints where possible be automatically updated. 当由于先前的现有数据与先约束不符合而导致约束无法自动更新时,系统生成促进手动干预的报告。 When due to the previously existing data and does not meet the first constraint caused by constraint does not automatically update, the system generates reports facilitate manual intervention. 系统提供诸如失败约束的信息。 The system provides information such as the failure constraints.

[0927] 有时候,对应用程序进行的设计更改并不包括添加/去除类或字段。 [0927] Occasionally, for design changes to the application does not include the addition / removal of a class or field. 有时候,您需要做的就仅仅是修改一些字段的约束。 Sometimes, you need to do is just to modify some of the constraints of the field. 在这种情况下,无需调用“Update Tables”操作。 In this case, no need to call the "Update Tables" operation. 反之,您需要使用“Update Tables”操作。 Conversely, you need to use the "Update Tables" operation.

[0928] 待执行的所生成的SQL代码针对每个DBMS (数据库管理系统)各不相同。 [0928] The generated SQL code to be performed for each of the DBMS different (database management system).

[0929] 下文是选择选项“Update Constraints”之后将执行的修改的细节。 After the modified [0929] The following is the option to select "Update Constraints" execution details.

[0930]向实体E中字段F (强制字段)添加stereotype“unique”将译为以下动作: [0930] Add stereotype "unique" to the entity in field E F (force fields) will be translated into the following actions:

[0931] -通过向字段F添加类型约束unique来更改E_。 [0931] - to change the type of E_ by adding constraints unique to the field F.

[0932] -更新C〇nstraintSData_ (去除所有条目,然后重新定义新条目) [0932] - Update C〇nstraintSData_ (removal of all entries, then redefine the new entry)

[0933]去除实体E中字段F (强制)的stereotype“unique”将译为以下动作: [0933] E is removed entity field F (force) of the stereotype "unique" will be translated into the following actions:

[0934]-通过去除约束unique来更改表E_。 [0934] - to change the table E_ by removing constraints unique.

[0935]-更新ConstraintsData_ [0935] - Update ConstraintsData_

[0936]去除实体E中字段F (非强制)的stereotype“unique”将译为以下动作: [0936] E is removed entity field F (non-mandatory) of the stereotype "unique" will be translated into the following actions:

[0937]-通过去除约束unique来更改表E_。 [0937] - to change the table E_ by removing constraints unique.

[0938] -通过将F渲染为nullable (可为空值)来更改E_。 [0938] - Change the E_ F by rendering Nullable (can be null).

[0939] -更新ConstraintsData_ [0939] - Update ConstraintsData_

[0940] 去除实体E中字段F的stereotype “code”将译为以下动作: [0940] F field E is removed entities of stereotype "code" will be translated into the following actions:

[0941] -去除对F创建的约束unique。 [0941] - removing the constraints unique to F created.

[0942] -更新ConstraintsData_ [0942] - Update ConstraintsData_

[0943] 向实体E中字段F添加tagged value“index”将译为以下动作: [0943] F is added to an entity E tagged value in the field "index" will be translated into the following actions:

[0944] -对这个字段创建索引。 [0944] - create an index on this field.

[0945] -更新ConstraintsData_ [0945] - Update ConstraintsData_

[0946] 去除实体E中字段F的tagged value“index”将译为以下动作: [0946] F field E is removed entities of tagged value "index" will be translated into the following actions:

[0947] -丢弃对这个字段创建的索引。 [0947] - the index dropped to the field created.

[0948] -更新ConstraintsData_ [0948] - Update ConstraintsData_

[0949] 将实体E中字段F的多样性更改为1将译为以下动作: [0949] The change in the E field F diversity entity 1 is translated as the following:

[0950] -通过修改F的定义(此后,F并不为空值)来更改表E_。 [0950] - be changed by modifying the definition table E_ F (hereinafter, F is not a null value).

[0951] -更新ConstraintsData_ [0951] - Update ConstraintsData_

[0952] 将实体E中字段F的多样性从1更改为nullable将译为以下动作: [0952] The diversity of the fields in the entity E F 1 from the translated changes to nullable following actions:

[0953] -通过修改F的定义(此后,F可为空值)来更改表E_。 [0953] - be changed by modifying the definition table E_ F (hereinafter, F can be null).

[0954] -更新ConstraintsData_ [0954] - Update ConstraintsData_

[0955] 去除组合或聚合类型的关系将译为以下动作: [0955] removing the composition or polymeric type of relationship will be translated following actions:

[0956] -丢弃对owner$code和owner$pk字段创建的索引。 [0956] - index dropped to owner $ code and the owner $ pk field is created.

[0957] -更新ConstraintsData_ [0957] - Update ConstraintsData_

[0958] 添加聚合类型的关系将译为以下动作: [0958] Relationship translated to add a polymerization type the following actions:

[0959]-如果多样性为1,那么向添加owner$pk添加约束unique。 [0959] - If diversity is 1, then add constraints unique to add the owner $ pk.

[0960] -更新ConstraintsData_ [0960] - Update ConstraintsData_

[0961] -(NO INDEXES ON FOREIGN KEYS)(外键无索弓丨) [0961] - (NO INDEXES ON FOREIGN KEYS) (no foreign key index bow Shu)

[0962] 添加组合类型的关系将译为以下动作: [0962] Relationship type additive composition will be translated into the following actions:

[0963] -对外键创建索引 [0963] - create foreign key index

[0964]-如果多样性为1,那么向添加owner$pk添加约束unique。 [0964] - If diversity is 1, then add constraints unique to add the owner $ pk.

[0965]-更新ConstraintsData_ [0965] - Update ConstraintsData_

[0966] VI.配置[0967] A.呈现[0968] 1.菜单 [0966] VI. Configuration [0967] A. presentation [0968] 1. Menu

[0969] 目标应用程序菜单含有应用程序所提供的到达屏幕的所有路径。 [0969] the target application menu containing all the paths to the screen provided by the application. 这些菜单中的每一个可含有子菜单和树状结构的附加路径。 Each of these may contain additional menus and submenus path tree structure.

[0970] 2.Menu Editor Tool (菜单编辑器工具) [0970] 2.Menu Editor Tool (Tools menu editor)

[0971] Palmyra提供称作Menu Editor Tool的工具,其用来定义应用程序菜单的结构。 [0971] Palmyra tools referred Menu Editor Tool, which is used to define the structure of the application menu. Menu Editor Tool实现了菜单配置能力。 Menu Editor Tool ability to achieve a configuration menu. 作为脱机工具的菜单编辑器需要来自服务器的信息,所述信息包括当前菜单、系统中定义的用户、模型的类路径、动作类型、案例、自由参数以及附加参数。 As an offline tool menu editor needs information from the server, the user information includes a class path, the current menu model, defined in the system, the type of operation, the case, and the free parameters additional parameters. 这个工具允许装载预建菜单配置文件,然后将这些配置文件反射到系统中。 This tool allows to load pre-built menu profile, these profiles are then reflected into the system. 这个工具还允许装载导入/导出配置文件,所述文件允许系统导入或导出当前配置,或者通过从另一文件导入配置而获得所述配置。 The tool also allows loading import / export configuration file, allowing the file to import or export the current system configuration, or the configuration is obtained by introducing a configuration file from another. 此外,这个工具允许操纵,其中可对当前配置文件进行操纵,且更改将应用到当前系统。 In addition, this tool allows manipulation, in which the current profile manipulation, and changes to the current system. 另外,工具也针对不同用户组提供不同配置,并提供经配置以支持特定语言的多语标签。 In addition, the tool also provides various configurations for different groups of users, and provides configured to support multi-language label specific language. 最后,这个工具还允许添加新菜单项。 Finally, this tool also allows you to add a new menu item. 图18表示Menu Editor Tool的用户接口。 18 shows a user interface Menu Editor Tool.

[0972] 必须通过定义初始器并调用方法AdvancedMenuGenerator .register ()来寄存配置菜单项。 [0972] must define and invoke the original method AdvancedMenuGenerator .register () to register the configuration menu items.

[0973] 表11示出添加新菜单项的示例。 [0973] Table 11 shows an example of adding new menu items.

[0974] 表11:添加新菜单项的示例 [0974] Table 11: example of the new menu item is added

[0975] SimpleContextImpl simpIeCtx = new [0975] SimpleContextImpl simpIeCtx = new

[0976] SimpleContextImpl (UseCaseConstants.EDIT, [0976] SimpleContextImpl (UseCaseConstants.EDIT,

[0977] Boolean · FALSE, [0977] Boolean · FALSE,

[0978] Menu.class.getName (), [0978] Menu.class.getName (),

[0979] ActionTypeConstants. TECHNICAL, [0979] ActionTypeConstants. TECHNICAL,

[0980] ActionConstants·CREATE); [0980] ActionConstants · CREATE);

[0981] AdvancedMenuGenerator. register (AdvancedMenuGenerator. PUBLIC, [0981] AdvancedMenuGenerator. Register (AdvancedMenuGenerator. PUBLIC,

[0982] 〃Configuration>Menu","Menu Manager" [0982] 〃Configuration> Menu "," Menu Manager "

[0983] simpleCtx,null,false, [0983] simpleCtx, null, false,

[0984] MenuProvider.class.getName ()); [0984] MenuProvider.class.getName ());

[0985] 在这个示例中,结构包括以下信息: [0985] In this example, the structure contains the following information:

[0986] Role:用于verm eg a dm in AdvancedMenuGenerator. VERMEG_ADMIN^c AdvancedMenuGenerator.ADMIN〇 [0986] Role: for verm eg a dm in AdvancedMenuGenerator VERMEG_ADMIN ^ c AdvancedMenuGenerator.ADMIN〇.

[0987] path:新建项的父路径。 [0987] path: parent paths for newly created items. 所述路径必须以以下形式写入:iteml>item2>....> parent。 The path must be written in the following form: iteml> item2> ....> parent. 如果找不到这个路径,那么创建这个路径。 If you can not find this path, this path is created.

[0988] label:项的名称。 [0988] label: name of the item.

[0989] targe tContext:调用的目标s imple上下文D [0989] targe tContext: s imple call target context D

[0990] islnit:说明是否在初始化模式下查看这个项D [0990] islnit: whether to view the items in the initialization mode D

[0991] additionalParameters:目标上下文中需要的附加参数。 [0991] additionalParameters: Additional parameters required in certain contexts.

[0992] resource:到达资源提供方的完整路径。 [0992] resource: the full path to the resource provider.

[0993] 当完成菜单结构的创建时,系统生成含有菜单结构的文件,所述文件将装载到目标应用程序D [0993] Upon completion of the menu structure is created, the system generates a file containing the menu structure, the file will be loaded into the target application D

[0994] 3. View-format (视图格式) [0994] 3. View-format (format view)

[0995] Palmyra自动生成用来创建、编辑和搜索Entity类的类型的对象的屏幕页面,所述类型在目标应用程序的UML模型中定义。 [0995] Palmyra generated automatically used to create, screen page type objects to edit and search Entity class, of the type defined in the UML model of the target application. 使用生成缺省屏幕布局的算法,依据实体类的字段和关系来生成屏幕内容。 Using an algorithm to generate a default screen layout, fields, and relationships based on the entity class to generate screen contents. 可稍后使用View格式配置工具来手动修改表示字段和关系的可视元素(文本框、组合框、列表、链接)的使用及其在屏幕上的分布。 Configuration tool can manually modify the visual indication element field and relationships (text boxes, combo boxes, lists, linked) and its distribution on the screen using the format View later. View-format还可从屏幕去除多余字段,并可创建字段组。 View-format also remove unnecessary fields from the screen, and can create a field group.

[0996] 类com .palmyra .arch .presentation .model .viewformat. ViewFormat ·的实例表示Palmyra屏幕的视图格式。 [0996] Class com .palmyra .arch .presentation .model .viewformat. ViewFormat · views showing examples of a screen format of Palmyra. 这个类含有: This class contains:

[0997] 屏幕特性: [0997] Screen Features:

[0998] Label:含有屏幕标题(title); [0998] Label: screen containing the title (title);

[0999] isForCaching:屏幕的概要(skeleton)是否可高速缓存; [0999] isForCaching: summary screen (Skeleton) whether a cache;

[Ί000] showTitle:屏幕的标题是否可见。 [Ί000] showTitle: the title of the screen is visible.

[1001] 字段特性: [1001] Field Characteristics:

[1002] Readonly:这个字段是只读还是可编辑; [1002] Readonly: This field is read-only or editable;

[1003] Mandatory:这个字段是否是强制的,以便保存实例到数据库中; [1003] Mandatory: whether the field is mandatory, for instance to save the database;

[1004] Visible:是显示还是隐藏这个字段。 [1004] Visible: whether to show or hide this field.

[1005]将一个视图格式实例链接到合适屏幕的信息存储在类文件中com · palmyra · arch · presentation .model · viewformat · FactoryEntry,存在两个字段: [1005] A format view of a link to the appropriate instance of the screen information is stored in the class file com · palmyra · arch · presentation .model · viewformat · FactoryEntry, there are two fields:

[1006] Context:指定对应屏幕的上下文; [1006] Context: the screen corresponding to the specified context;

[1007] Precise:指定视图格式是否使用精确上下文来寄存。 [1007] Precise: Specifies the view format is used to register the exact context.

[1008] 图23展示视图格式服务的UML Class Diagram (类图)。 [1008] FIG. 23 shows the format of the service view UML Class Diagram (FIG class).

[1009] 3.Action Configuration (动作配置) [1009] 3.Action Configuration (configuration operation)

[Ί0Ί0] Palmyra框架针对每个屏幕生成缺省动作。 [Ί0Ί0] Palmyra frame to generate a default operation for each screen. 用户可使用Action Configuration月艮务来修改这些动作的一些特性。 Users can use the Action Configuration month that works to modify some of the characteristics of these actions. 他可隐藏或显示动作、更改其图标、更改其位置(Top (顶部) 或Bottom (底部))、更改动作安排。 He can hide or display, change the icons to change its position (Top (top) or Bottom (bottom)), to change the action arrangements.

[1011] 4.TransIator (翻译器) [1011] 4.TransIator (translator)

[1012] Translator是Palmyra框架的配置模块,其管理像标签、枚举、屏幕标题等之类的许多呈现元素的国际化。 [1012] Translator is Palmyra frame configuration module, its management like labels, enumeration, many international title screen presentation elements and the like.

[1013] a.标签 [1013] a. Tag

[1014] 自动生成的屏幕页面具有带有描述性标签的屏幕元素(文本框、组合框、列表、链接等)。 [1014] automatically generated screen page having a screen element with a descriptive label (text boxes, combo boxes, lists, links, etc.). 使用UML类图中定义的字段名称或关系名称来生成这些标签。 Relationship name or field names defined in UML class diagram to generate these labels. 稍后可使用Translator模块来修改这些标签。 Translator module can be used later to modify these labels. 当使用屏幕页面时,依据用户配置文件中定义的语言来选择标签。 When using a screen page, based on the language defined in the user profile to select the label.

[1015] b.枚举 [1015] b. Enumeration

[1016] 枚举是Simple类的类型,其表示具有UML类图中定义的预定义可用值集合的文本。 [1016] Simple enumerated type is class, which represents a predefined text UML class diagram defined in the set of available values. 在屏幕页面中,具有枚举类的类型的字段显示为具有可用值集合的组合框。 In the screen page having a field type enumeration class combo box is shown with the available set of values. 可使用Translator模块来修改这些可用值。 Translator module may be used to modify the available values. 当使用屏幕页面时,依据用户配置文件中定义的语言来选择可用值。 When using a screen page, based on the language defined in the user profile to select the available values.

[1017] 5.缺省值配置 [1017] 5. Default Configuration

[1018] 缺省值配置服务允许针对特定领域和特定用户定义缺省值。 [1018] Default configuration service allows you to define a default value for a particular field of a particular user. 这就允许了定义每一客户的不同缺省值。 This allows different default values ​​defined for each customer.

[1019] B.安全性 [1019] B. Security

[1020] I .Authentication (认证) [1020] I .Authentication (authentication)

[1021] Authentication是访问方藉以证明他/她(们)的行为代表特定用户或系统的机制。 [1021] Authentication is the accessing party so as to prove that he / she (they) act on behalf of a specific mechanism or system user. Authentication使用诸如用户/密码的凭证来回答问题,“Who are you?”(您是谁?)。 Authentication using credentials such as user / password to answer the question, "Who are you?" (Who are you?).

[1022] 应用程序服务供应商(Application Service Provider;ASP)的概念包括在Authentication模块中。 [1022] application service provider (Application Service Provider; ASP) concept is included in the Authentication module. 实际上,Authentication模块将用户视为一对User Name (用户名称)和ASP Value (ASP值)。 In fact, Authentication module users as one pair User Name (user name) and ASP Value (ASP value). 这允许了定义具有相同名称的一个以上用户(假设他们具有不同ASP值)。 This allows the definition of more than one with the same user name (assuming they have different values ​​ASP).

[1023] 在Palmyra技术中,ASP是共享相同数据库的不同实体之间的数据和过程的Segregation (隔离)。 [1023] In the art Palmyra, ASP is Segregation (spacer) between the data and process the different entities share the same database. 实体可以是客户端所需要的银行、分支、部门或任何再分配。 Entity may be a bank client need, branch, department, or any redistribution. 举例来说:ASP Value为X的用户将仅看到与X相关的数据。 For example: ASP Value X users will see only data associated with X.

[1024] 图19展示Palmyra的示例性登录页面。 [1024] Figure 19 shows an example of Palmyra login page.

[1025] Palmyra 的Authentication 由两种方法完成: [1025] Palmyra Authentication is accomplished by two methods:

[1026] (I) Internal Authentication (内部认证):认证由应用程序自身使用内建组件来管理的认证机制。 [1026] (I) Internal Authentication (internal authentication): Certification by the applications themselves built-in components to manage the authentication mechanism. 此时,用户名和密码保存在数据库中。 At this point, the user name and password stored in the database. 当使用内部认证机制时,应用程序提供安全性配置工具来创建新用户,这通常由系统管理员来完成。 When using the internal authentication mechanism, the application provides security configuration tools to create new users, this is usually done by a system administrator.

[1027] (2) External Authentication (夕卜部认证):应用程序与用户藉以定义的外部系统通信。 [1027] (2) External Authentication (Xi authentication unit BU): The external system applications and user-defined thereby. 外部系统中存在定制寄存器,其存储用户名及其凭证(例如,LDAP ,Active Directory)〇 Present in the system to customize the external register which stores user names and credentials (e.g., LDAP, Active Directory) square

[1028] Palmyra中的Authentication使用Filters (过滤器)来检查用户发出的每一请求。 [1028] Using the Filters (filter) sent by the user to check each of Palmyra Authentication request. 如果是从经认证的会话发出,那么请求将被转发到所要求的资源。 If it is emitted from the authenticated session, then the request will be forwarded to the requested resource. 否则,请求将被转发到登录页面。 Otherwise, the request will be forwarded to the login page. Palmyra使用Form-Based (基于表单)的认证来向Filter发送用户名和密码,所述Filter验证用户名和密码。 Form-Based Palmyra transmitted using the username and password to Filter (form-based) authentication, the user name and password verification Filter. 在External Authentication的情况下,用户名和密码存储在诸如LDAP (轻量目录访问协议)的定制寄存器中。 In the case of External Authentication, user name and password are stored in such as LDAP (Lightweight Directory Access Protocol) custom register. 因此第一步是确保用于部署的应用程序服务器支持带有定制寄存器的集成。 So the first step is to make sure the application server for deployment support with custom integration register.

[1029] 应用程序服务器连接到用户寄存器,以便收集创建凭证时的用户相关信息,其然后用来在验证期间(举例来说,登录到应用程序以检查密码时)表示用户。 [1029] the application server connected to the user registers, in order to collect information related to the user created document, which is then used during verification (for example, log on to the application to check the password) indicating the user. 举例来说, Websphere Application Server安全性支持实施大多数主LDAP目录服务器(像Windows的ActiveDirectory)。 For example, Websphere Application Server security to support the implementation of most of the main LDAP directory server (like the Windows ActiveDirectory). 作为另一不例,Jboss也支持实施Active Directory。 As another embodiment not, Jboss embodiment also supports Active Directory.

[1030] 安全性内核提供称作AuthenticationDriver的认证接口。 [1030] Security kernel referred AuthenticationDriver authentication interface. 这个接口的实施取决于客户端所需要的认证技术。 This interface is implemented depends on authentication technology client needs.

[1031] AuthenticationDriver 接口含有6 种方法: [1031] AuthenticationDriver interfaces comprising six methods:

[1032] boolean init ():安全性认证驱动器的初始化(表达式:Load of setup user)。 [1032] boolean init (): initialize security authentication drive (Expression: Load of setup user).

[1033] String authenticate (ServletRequest servletRequest):这个方法的实施取决于认证所用的技术。 [1033] String authenticate (ServletRequest servletRequest): embodiment of this method depends on the technology used for authentication.

[1034] 举例来说,在内部认证的情况下,我们可实施这个方法来从参数ServletRequest 获得用户名、asp和密码,然后检查这对是否存在于DataStore中。 [1034] For example, in the case of internal authentication, we can implement this method to obtain a user name, asp and password from the ServletRequest parameters, then check whether it is present in the DataStore.

[1035] 在外部认证的情况下,其将被JSecurityCheck servlet (小服务程序)替换,所述JSecurityCheck servlet将起到检查用户凭证的相同作用。 [1035] In the case of the external authentication, which will be JSecurityCheck servlet (servlet) Alternatively, the same JSecurityCheck servlet will play a role of checking user credentials.

[1036] void login (String userName, ServletRequest servletRequest):在缺省认证的情况下,我们实施这个方法来高速缓存sessionld (会话ID)和userName (用户名)。 [1036] void login (String userName, ServletRequest servletRequest): In the case of default authentication, we implement this method to cache sessionld (session ID) and userName (user name). 在外部认证(JSecurityCheck)的情况下,用户名已高速缓存在会话中。 In the case of external authentication (JSecurityCheck), the user name already cached in the session.

[1037] String isAuthenticated (ServletRequest servletRequest):这个方法的实施用来在会话ID存在高速缓存器中的情况下返回用户名,否则返回空值。 [1037] String isAuthenticated (ServletRequest servletRequest): This embodiment of the method is used to return the user name exists at the cache, otherwise return NULL in session ID.

[1038] void logout (ServletRequest request, ServletResponse response):这个方法的实施允许通过无效会话使用户登出。 [1038] void logout (ServletRequest request, ServletResponse response): This embodiment of the method allows the user to make invalid session logout.

[1039] void failLogin (ServletRequest request, ServletResponse response):在认证失败的情况下,方法fai ILogin的实施用来告知在哪里转发请求。 [1039] void failLogin (ServletRequest request, ServletResponse response): in the case of authentication failure, the method used to inform fai ILogin embodiment where forwarding the request.

[1040] 认证驱动器的任何实施例需要以下静态块,其中我们如下寄存驱动器: [1040] Any embodiment requires the following authentication static drive block, wherein the register as we drive:

Figure CN102656557BD00581

[1042] 为每一个Security User (安全用户)存储最后的连接日期。 [1042] for each Security User (secure user) stored last connection date.

[1043] 为了在Palmyra框架中加强安全性,通过帐户锁定和密码策略来实施帐户管理。 [1043] In order to strengthen security in Palmyra framework by account lockout and password policies to implement account management. 帐户锁定和密码策略都可在称作PasswordConfiguration的特性文件中配置。 Account lockout and password policies can be configured in a file called PasswordConfiguration features. 所含特性是: [1044] minLength:定义密码UserCredentials所需要的最小长度的整数。 Contains characteristics are: [1044] minLength: integer defines the minimum password length UserCredentials required. 缺省值是0。 The default value is 0.

[1045] upAndLow:定义密码UserCredentials是否同时需要大写和小写字符的布尔值。 [1045] upAndLow: define whether the password UserCredentials also need capital and lowercase characters Boolean value. 缺省值是false。 The default value is false.

[1046] mixedChars:定义密码UserCredential s是否同时需要数字和字符的布尔值。 [1046] mixedChars: define whether the password UserCredential s also need a Boolean value numbers and characters. 缺省值是false。 The default value is false.

[1047] passwordValidity:定义密码的以天记的有效周期的整数。 passwordValidity [1047]: integer defined password effective period in days in mind. 这个特性缺省为空。 This feature defaults to empty.

[1048] warnBefore:定义天数的整数,在所述天数之前系统应开始警告用户需要更新其凭证。 [1048] warnBefore: integer definition of days, the number of days before the start the system should warn the user needs to update its credentials. warnBef ore必须与passwordVattdity—起使用。 warnBef ore must be the starting passwordVattdity-. 这个特性缺省为空。 This feature defaults to empty.

[1049] IockOutNbr:定义失败密码尝试次数的整数,所述次数将使用户变为无效(将SecurityUser的IsActive特性设为false)且因此无法再访问应用程序,除非管理员重新激活(将IsActive设为true)或用户在8小时后尝试。 [1049] IockOutNbr: definition of integer number of failed password attempts, the number of users will become invalid (the IsActive characteristics SecurityUser set to false) and therefore can no longer access the application, unless the administrator to reactivate (to the IsActive true) or a user attempts after 8 hours. 这个特性缺省为空。 This feature defaults to empty.

[1050] Palmyra还支持单点登录(Single Sign on; SS0)认证机制。 [1050] Palmyra also supports single sign-on (Single Sign on; SS0) authentication mechanism. 单点登录能够要求用户仅登录应用程序一次,且访问许多不同应用程序组件,尽管这些组件可能有其自身的认证机制。 Single sign-on to require users to log in only once the application and access many different application components, even though these components may have its own authentication mechanism. 这个特征允许终端用户针对每次会话登录一次,而不是独立登录每一资源或应用程序。 This feature allows the end user to log in once per session, rather than a separate login for each resource or application.

[1051] 2.Authorization (授权) [1051] 2.Authorization (authorization)

[1052] Authorization是藉以基于用户身份或其他信息而控制用户与应用程序资源之间的交互的过程。 [1052] Authorization is thereby based on user identity or other information to control the process of interaction between the user and application resources. 换句话说,Authorization回答问题“What can you access?(您可以访问什么?)”。 In other words, Authorization to answer questions "What can you access? (What can you visit?)."

[1053] 实施接口AumorizationDriver来定义应用程序所使用的授权过程方法。 [1053] Embodiment AumorizationDriver defined interfaces used by the application method of the authorization process.

[1054] 在以下不同层实施Palmyra的授权系统: [1054] Authorization system according Palmyra different layers in the following:

[1055] a.Groups (M) [1055] a.Groups (M)

[1056] 为易于管理,可对系统用户进行分组。 [1056] For ease of management, the system users can be grouped. 安全性配置工具允许创建分组和对应用户。 Security configuration tool allows you to create groups and corresponding user. 组还可分组到其他组中,以便创建层次结构。 Other groups may also be grouped into groups in order to create a hierarchy.

[1057] 第一次运行应用程序Admini strators和VermegAdmin时缺省创建2个组。 [1057] 2 groups created by default when you first run the application Admini strators and VermegAdmin. VermegAdmin 是组Admini strators 的部分。 VermegAdmin the group Admini strators portion.

[1058] 如果SecurityUser 属于VermegAdmin 或Administrators,那么SecurityUser 具有应用程序的全部特权。 [1058] If SecurityUser belong VermegAdmin or Administrators, then SecurityUser have full privileges of the application.

[1059] b.Roles (角色) [1059] b.Roles (role)

[1060] 角色是用来预建待应用到稍后创建的用户的配置集合的用户配置文件。 [1060] Pre-built role is to be applied to the user profile of the user to create a set of configurations later. 使用安全性配置工具来创建这些角色。 Use security configuration tool to create these roles. 稍后使用相同的安全性配置工具来将这些角色分配给先前创建的用户。 Later use the same security configuration tool to assign these roles to users previously created.

[1061] 第一次运行应用程序时缺省创建角色“admin”。 Create a default role "admin" when [1061] The first time you run the application. 这个角色具有应用程序资源的全部权限。 This role has all the permissions the application resources.

[1062] c.Rights (权限) [1062] c.Rights (permission)

[1063] 依据用户可访问哪些Entity类的类型和用户可运行哪些过程部分来表达用户的特权和约束。 [1063] Depending on the type and User Entity class which users can access which part of the process can be run to express a user's privileges and constraints. 使用安全性配置工具来配置权限。 Use security configuration tool to configure permissions. 稍后也使用安全性配置工具来将这些权限分配给先前创建的用户、组和角色。 Later using the Security Configuration Tool to assign these privileges to users previously created, groups, and roles.

[1064] Palmyra的授权过程在两个等级中完成。 [1064] Palmyra authorization process is completed in two levels.

[1065] (I) Entity等级:在这个等级中系统检查用户特权。 [1065] (I) Entity Level: At this level the system checks the user's privileges. 图20示出Palmyra实施的实体授权过程。 20 shows a physical embodiment of Palmyra authorization process.

[1066] (2) Service等级:在这个等级中系统检查是否允许执行特定动作。 [1066] (2) Service Level: At this level the system checks whether to allow performing certain actions. 图21示出服务授权过程的过程。 FIG 21 shows a process service authorization process.

[1067] Palmyra中的角色由其名称(RoleId)来定义。 [1067] Palmyra role in its name (RoleId) is defined. 角色附带Entity Policies (实体策略)和Service Policies (服务策略)。 Role comes Entity Policies (entity policy) and Service Policies (service policy). 服务策略将定义角色提供给用户或用户组的特权。 Service policy defines roles available to privileged users or user groups.

[1068] 为了使角色能够访问指定实体,将实体策略与Role (角色)相关联。 [1068] In order to be able to access the specified character entity, the entity strategies and Role (role) is associated. 这些关联性基于create condition (创建条件)、update condition (更新条件)、delete condition (删除条件)和find condition (查找条件)。 Based on these associations create condition (condition created), update condition (updated conditions), delete condition (delete condition) and find condition (search condition). 如果这些条件得到验证,那么被授予这个角色的用户可访问所述指定实体。 If these conditions are verified, then the user is granted this role can access the specified entity.

[1069] 通过Application Name:ALL或应用程序名称或Entity Name来识别实体策略。 [1069] By Application Name: ALL to identify the entity policy or application name or Entity Name.

[1070] “create condition”、“update condition”、“delete condition”或“find condition”字段是可为以下值的Boolean (布尔)表达式: [1070] "create condition", "update condition", "delete condition" or "find condition" may be a field is Boolean (Boolean) expression the following values:

[1071] Empty:这意味着这个create (创建)/update (更新)/delete (删除)/find (查找)动作并无约束。 [1071] Empty: This means that the create (create) / update (update) / delete (delete) / find (to find) the action in no way binding.

[1072] "false":无权执行create/update/delete/find 动作。 [1072] "false": not authorized to perform create / update / delete / find actions.

[1073] 表达式含有以下键date、hour、time、currentUser、userProperties或所述键的组合。 [1073] Expression comprising the following key date, hour, time, currentUser, userProperties or combinations of keys. 示例:attribute= =CurrentUser,这个delete条件意味着:依据这个角色,仅可删除属性值等于当前用户的实例。 Example: attribute = = CurrentUser, delete this condition means: According to this role, only to delete the attribute value is equal to the current instance of the user. 不例2: attribute = = UserProperties · propertyName 〇 No Example 2: attribute = = UserProperties · propertyName square

[1074] 实体com. Palmyra · arch · basicStruct · data · BusinessEntity 是业务实体的超实体。 [1074] entity com. Palmyra · arch · basicStruct · data · BusinessEntity ultra-entity business entity.

[1075] 实体com.Palmyra·arch.basicStruct ·data.AbstractValue是超实体(业务实体加上Pa Imyra实体)。 [1075] entity com.Palmyra · arch.basicStruct · data.AbstractValue is super entity (business entity plus Pa Imyra entity).

[1076] 为了使角色能够访问并执行特定服务中的指定动作,将服务策略与Role (角色)相关联。 [1076] In order to be able to access role and perform specific actions specified in the service, the service strategies and Role (role) is associated. 这些关联性基于某个条件。 These associations based on certain conditions. 如果这个条件得到验证,那么被授予这个角色的用户可访问application name/service/action (应用程序名称/服务/动作)。 If this condition is verified, then the user is granted this role can access the application name / service / action (name of the application / service / action).

[1077] 通过Application Name (应用程序名称)、Service name (服务名称)和Action name (动作名称)来识别范围策略。 [1077] By Application Name (application name), Service name (service name) and Action name (action name) to identify the scope of the policy.

[1078] Condition (条件)字段是可为以下值的布尔表达式: Boolean expressions [1078] Condition (Condition) is the value of the field are the following:

[1079] Empty:这意味着这个application name/service/action并无约束。 [1079] Empty: This means that the application name / service / action in no way binding.

[1080] "false":无权访问这个application name/service/action。 [1080] "false": no access to the application name / service / action.

[1081] 表达式含有以下键date、hour、time、currentUser、userProperties或所述键的组合。 [1081] Expression comprising the following key date, hour, time, currentUser, userProperties or combinations of keys. 假设给定语法identifier operator value,那么每一所述键可用作标识符或值。 Suppose a given grammar identifier operator value, then each said identifier or key value may be used.

[1082] Date:评估为当前日期,BusinessDate的一个实例。 [1082] Date: assessment of the current date, one example of BusinessDate.

[1083] 示例:date = = ' 10/12/2100b ',例如,仅允许2100年12月10日执行动作。 [1083] Example: date = = '10/12 / 2100b', for example, allows only operation December 10, 2100.

[1084] Hour:评估为当前小时,TimeValue的getHour ()的一个实例。 [1084] Hour: Evaluation example of a current hour, TimeValue the getHour () a.

[1085] 示例:hour == 8,例如,仅允许每天8点执行动作。 [1085] Example: hour == 8, for example, allow only 8 every day to perform an action.

[1086] Time:评估为当前时间,TimeValue的一个实例。 [1086] Time: assessment of the current time, an example of TimeValue.

[1087] 示例:time = = 〃08:00:00:000〃,例如,仅允许每天8点执行动作。 [1087] Example: time = = 〃08: 00: 00: 000〃, for example, allow only 8 every day to perform an action.

[1088] CurrentUser:评估为当前用户,StringVaIue的一个实例。 [1088] CurrentUser: assessment of the current instance of a user, StringVaIue's. 不例:currentUser = = "X"〇 No Example: currentUser = = "X" square

[1089] UserProperties:用于安全性特性名称之前,且带有以下语法: userPropert ies . propertyName。 [1089] UserProperties: Before name for security features, and with the following syntax:. UserPropert ies propertyName. 后者被评估为当前用户的安全性特性值。 The latter is evaluated for the current value of the user's security features. 示例: userProperties.method = = 〃valuel〃,例如,仅在当前用户菲菲设为值1的情况下允许执行动作。 Example: userProperties.method = = 〃valuel〃, for example, only in the case where the current user is set to the value 1 Felice allowed to perform an action.

[1090] Parameters:与有以下语法:parameters · paramName—起使用,其中paramName是ServicePolicy中定义为actionName的动作的参数。 [1090] Parameters: and has the following syntax: parameters · paramName- used together, which is ServicePolicy paramName defined as actionName action parameters. 示例: parameters · config. creatorUserld= = currentUser,这个条件意味着需要当前用户创建参数“config”,以便允许动作执行。 Example:. Parameters · config creatorUserld = = currentUser, this condition means that the current user created parameter "config", in order to allow actions to be performed.

[1091] 服务com.Palmyra.arch. service .BusiaessDelegate 是超服务。 [1091] service com.Palmyra.arch. Service .BusiaessDelegate super service.

[1092] 图22A、22B和22C示出示例性Authorization UML模型的主要部分。 [1092] 22A, 22B and a main portion of an exemplary Authorization UML model shown in FIG. 22C. 具体来说,图22A示出示例性SecurityItem的UML Model,图22B示出示例性Policies的UML Model,且图22C不出不例性SecurityItem的Roles UML ModeL0 Specifically, FIG. 22A shows an exemplary SecurityItem the UML Model, FIG 22B illustrates an exemplary Policies of UML Model, and the embodiment of FIG. 22C does not SecurityItem the Roles UML ModeL0

[1093] 当用户A访问应用程序资源时,检查用户是否被授权进行访问。 [1093] When the user A to access application resources, checks whether the user is authorized to access. 这些检查的操作原则依赖于与用户A相关的实体和服务策略。 Operating principle of these tests depends on the user A related entity and service strategies.

[1094] 当检查用户是否被授权时,从每个角色形成条件,并添加到所有角色的联合。 [1094] When checking whether the user is authorized, formed condition from each character, and added to the union of all roles.

[1095] 示例:用户A需要搜索实体E的实例。 [1095] Example: A user needs to search entity instances of E. 用户A具有一个角色X和继承自组B的角色Y,其中角色Y是组B的成员。 A user having the role of a character X and Y inherited from group B wherein group B is a member of the role of Y. 角色Y具有实体E的EntityPol icy实例P2,且查找条件设为creatorUserld = =CurrentUser。 Role of E Y entities having EntityPol icy example P2, and search conditions set creatorUserld = = CurrentUser. 这个条件意味着用户A查找E时仅可看到他创建的实例。 This condition means that the user can see only E A lookup example he created. 角色X具有实体E的EntityPolicy实例Pl,且查找条件设为空。 EntityPolicy example Pl X has a role entity E, and look set to null condition. 考虑到后一信息,用户A将看至IjE的所有实例。 Considering the latter information, the user A will look to all instances of IjE.

[1096] 原因仅仅是标准形成有作为联合的角色X和Y的两个条件,且作为查询发送到数据库。 [1096] simply because there is formed a standard role as both conditions X and Y are combined and transmitted as a query to the database. 标准是pk! =null I creatorUserld= = 〃A〃。 Standards are pk! = Null I creatorUserld = = 〃A〃.

[1097] C. Input and Output Devices (输入和输出装置) [1097] C. Input and Output Devices (input and output means)

[1098] 所生成的目标应用程序含有先前存在的库,其使用不同的通信和消息传送协议来管理与其他系统和应用程序的通信。 [1098] generated by the target application containing preexisting library, using different communication protocols and messaging managing communication with other systems and applications. 优选实施例支持的协议示例有FTP、Fi Ie、Queue、 WebDav、Mail via SMTP。 Preferred exemplary embodiment supports protocols are FTP, Fi Ie, Queue, WebDav, Mail via SMTP. 针对上述每一种协议,目标应用程序中都集成了输入和输出装置。 For each of the above protocol, the target application are integrated input and output devices.

[1099] 为了使用Input Device (输入装置),用户需要: [1099] To use the Input Device (input device), the user needs to:

[1100] 用特定消息类型定义Input Device Configuration (输入装置配置)。 [1100] defined Input Device Configuration (configuration input device) a specific message type. 他可在菜单Configuration Tools的子菜单IODevices Configuration中进行定义。 He can be defined in the menu Configuration Tools submenu IODevices Configuration in.

[1101] 定义用来实施接口InputDeviceListener的监听器类。 [1101] is used to define the interface InputDeviceListener embodiment listener class. 在这个类中,他必须将他的监听器预订为特定消息类型,并实施方法onreceive (MessageHeader mh)。 In this class, he had his reservation listeners for a specific message type, and implementation methods onreceive (MessageHeader mh).

[1102] Output Device (输出装置)实施例定义2个动作器: [1102] Output Device (output device) embodiment defines two actuator:

[1103] Output Device Configuration (输出装置配置):输出装置配置是code field为devicelD的实体类。 [1103] Output Device Configuration (configuration means output): The output device is configured as an entity class code field of devicelD. 其依据装置类型具有若干字段(举例来说,输出装置邮件配置中的邮件服务器或输出装置FTP配置中的主机姓名)。 Having a plurality of fields (for example, the message output device configuration mail server or FTP output means disposed in the host name) based on device type.

[1104] Output Device (输出装置):输出装置管理将值写入到装置。 [1104] Output Device (output means): output value is written to the device management apparatus. 因此,它与输出装置配置相关联。 Accordingly, it is associated with the output device configuration. 所有输出装置应扩展抽象类OutputDe V ice ja Imyra定义以下5种类型的OutputDevice:Output Device Queue、0utput Device File、0utput Device FTP、0utput Device Palmyra Service和Oulput Device Mail。 All output devices should extend the abstract class OutputDe V ice ja Imyra defines the following five types of OutputDevice: Output Device Queue, 0utput Device File, 0utput Device FTP, 0utput Device Palmyra Service and Oulput Device Mail. 每一扩展的输出装置继承ByteArrayOutputStream At tribute并实施方法flush。 Each spread output means succession ByteArrayOutputStream At tribute embodiment of the method and flush. 所继承的字段可通过调用方法getOutputStreamO来获得。 Inherited fields can be obtained by calling the method getOutputStreamO. 这个方法返回OutputStream。 This method returns OutputStream. 方法flush ()将所继承字段的内容写入到由相关联的输出装置配置所定义的装置。 Method flush () writes the contents of the field into the device inherited by the output device associated with the configuration defined above.

[1105] 可通过针对新1/0装置添加新模块和新库来添加新1/0和协议。 [1105] may be 1/0 and add new protocol by adding new modules and new library for the new device 1/0. 通常不在运行时执行1/0装置的修改。 1/0 devices typically perform modification is not running. 应用程序可利用新模块和库来下线并重新部署。 Applications can take advantage of new modules and libraries to offline and re-deployment.

[1106] D.Mapping Tool (映射工具) [1106] D.Mapping Tool (mapping tool)

[1107] Mapping是提供转化对象的能力的工具(例如,基于配置将字段值从源对象复制到目标对象)。 [1107] Mapping of the tool to provide the ability to be transformed (e.g., copy the configuration based on field values ​​from the source object to the target object). 图25示出Mapping过程的概况。 FIG 25 shows an overview of the Mapping Process.

[1108] I .Mapping机制的使用 Use [1108] I .Mapping mechanism

[1109] Mapping 机制用于: [1109] Mapping a mechanism for:

[1110] a.与外部世界连接 [1110] a. The connection with the outside world

[1111] 在Palmyra框架中,数据由特殊对象(接口“Value”及其实施器)表示。 [1111] In the framework of Palmyra, the data represented by a specific object (Interface "Value" and the enforcer). 使用通用驱动器解析来自外部驱动器的外部数据,因此输出通常呈特定于驱动器的格式。 Using the generic driver to resolve external data from an external drive, typically in the output drive-specific format. 特定于驱动器的对象应转化成上面定义有过程的应用程序数据对象。 Drive-specific objects to be converted into an application data object defined above with a process.

[1112] b.集成组件 [1112] b. Integration Component

[1113] 应用程序还使用业务服务,其可要求创建特定对象以便集成其过程。 [1113] The application also use business services, which may require the creation of a specific object in order to integrate their processes. 举例来说,结算业务服务的输入是结算消息(数据对象)。 For example, the input service is a billing settlement message (data objects). 如果用户想要将结算集成到应用程序,那么他应创建源为其他数据对象(诸如,客户端支付)的结算消息。 If the user wants the settlement integrated into the application, then he should create a data source for other objects (such as the client paid) billing messages.

[1114] 2 .Mapping 配置 [1114] 2 .Mapping Configuration

[1115] 运行时Mapping是可配置和可定制的:整个映射配置可随时进行更改,且配置效果即刻生效。 [1115] Mapping runtime is configurable and customizable: The entire mapping configuration can be changed at any time, and the configuration with immediate effect. 使用呈现层在应用程序运行时创建映射配置。 The presentation layer to create a map using the configuration application is running. 举例来说,在路由器中,针对每一传入消息类型配置解析器(驱动器),且然后可指定映射。 For example, in the router, for each incoming message parser type configuration (drive), and then specify the mapping. 图26示出Mapping的配置的示例。 FIG 26 shows an example of a configuration of Mapping.

[1116] 3 .Mapping 过程 [1116] 3 .Mapping process

[1117] 映射机制创建目的地类,以便映射对象。 [1117] mapping mechanism to create a destination type, in order to map objects. 使用映射创建的目的地类包括许多个Key (键)映射或基本映射。 Create a destination using the map of the class includes a number of Key (key) map or base map.

[1118] 键映射是目标中字段的基本映射配置。 [1118] is a basic key map mapping the fields in the target configuration. 每一字段可具有一个或更多个键映射,以定义如何从源提取值。 Each field may have one or more key mappings to define how the values ​​extracted from the source.

[1119] Source Formula (源公式)是基于来自源的字段来构建值的表达式,所述值将被映射或分配到目标。 [1119] Source Formula (formula source) is used to construct an expression value, the value is mapped or assigned to the target based on the fields from the source. 举例来说,源公式可读取为:grossAmount+commission。 For example, the source can be read as the formula: grossAmount + commission. 目标字段: netAmount。 Target field: netAmount.

[1120] Condition (条件)是定义条件的表达式。 [1120] Condition (condition) is the expression defining conditions. 如果结果为true,那么将执行映射。 If the result is true, the mapping is performed. 举例来说,条件可读取为:〇perationType= = 〃buy〃。 For example, conditions can be read as: = = 〃buy〃 〇perationType. 目标键:balanceType。 Target key: balanceType. 源公式:〃debit"〇 Source formula: 〃debit "square

[1121] 有时候,应用源公式的结果并不适应目标字段。 [1121] In some cases, the results of the application source formula is not adapted to the target field. 在这种情况下,应进行转换。 In this case, the conversion should be carried out. 由转化器来完成这个转化。 By a converter to complete the conversion.

[1122] 存在4种类型的转化器: [1122] There are four types of converters:

[1123] (I) Built-in Converter (内建转化器),其通过执行用户编辑的动作来完成转化。 [1123] (I) Built-in Converter (built-converter), which is converted by performing a user to complete the editing operation.

[1124] (2) Date Converter (数据转化器),用于将值从数据格式转化成另一数据格式。 [1124] (2) Date Converter (data conversion unit) for converting the value into the data format to another data format.

[1125] (3) Enumeration Converter (枚举转化器),所述转化器指定集合对。 [1125] (3) Enumeration Converter (enumerator converter), said converter specified collection pair. 每对集合指定将转化成一个值的多个值。 Each pair specifies a set of values ​​converted into a plurality of values.

[1126] (4) Numeric Converter (数值转化器),所述转化器指定转化类型:abs、ceil、 floor和log。 [1126] (4) Numeric Converter (conversion value), a conversion type specifies the conversion: abs, ceil, floor and log.

[1127] 在Palmyra应用程序中 [1127] In the application Palmyra

[1128] 图27详细示出Mapping转化器的过程。 [1128] FIG. 27 shows in detail the process Mapping converter.

[1129] 4 .Mapping 类型 [1129] 4 .Mapping type

[1130] Mapping用来将对象(源)映射到另一对象(目标)。 [1130] Mapping is used to target (source) mapped to another object (target). 存在以下2种类型的映射: The following two types of maps:

[1131] (1)字段到字段映射:来自源的一个字段将映射到目标中的一个字段(无表达式)。 [1131] (1) mapping to fields: one field from the source will be mapped to a field (no expression) of a target.

[1132] (2)丰富映射:新版本的映射,其将一个对象(源)映射到一个或更多个对象(目标)。 [1132] (2) rich mapping: a new version of the map, which is an object (source) mapped to one or more objects (targets). 可用公式提取源值(例如,公式可以是“firstName+lastName”)。 Extraction using Equation source value (e.g., the formula may be "firstName + lastName").

[1133] E.对象的装载生命周期和约束模型 Load life cycle and constraint model [1133] E. object

[1134] 过程图表示过程定义。 [1134] FIG showing the process definition process. 使用状态图建模技术来创建过程图,在所述技术中状态图称作生命周期或自动机。 Using the technology to create a state diagram modeling process diagram in the state of the art referred to FIG life cycle or automaton. 稍后,工作流引擎(其是管理业务过程的有限状态自动机)管理这些状态的生命。 Later, workflow engine (which is a finite state automaton business process management) manage the life of these states. 工作流与实体相关,由状态图表示于UML中,且用户可配置生命周期。 Workflow associated with the entity, from the state shown in FIG UML, and the user may configure the life cycle. 图28示出工作流引擎的示例以及如何管理系统中的状态。 FIG 28 shows an example of a workflow engine, and how to manage the state of the system.

[1135] 生命周期或自动机文件是以XML语言描述UML中定义的图形状态图的XML文件。 [1135] or the life cycle of the automaton file is an XML language to describe graphical UML state diagram defined in the XML file. 在UML中创建图形状态图之后,Pa Imrya将图形状态图重新解译为XML语言,因此在构建应用程序的过程期间及之后可易于理解。 After you create graphical state diagrams in UML, Pa Imrya the graphical state diagram re-interpreted as XML language, during the process of building applications and can then be easily understood.

[1136] 在生成步骤,将过程图变换为XML文件。 [1136] In the generating step, the process of FIG converted into an XML file. 使用特定配置工具将这些XML文件装载到应用程序中,所述特定配置工具允许稍后对所装载的过程定义执行语法检查,并将过程定义与先前定义的Entity类绑定。 Using a specific tool to load the XML configuration file into the application, the particular configuration of the tool to allow a later process defined syntax check is loaded, and the process defined Entity class bindings previously defined. 绑定是将实体类分配到过程的过程。 Binding is the process entity class assigned to the process. 在部署应用程序之后可随时对生命周期或过程定义进行修改。 May at any time or for the life cycle of the process definition to be modified after the application is deployed. 然后将在生成步骤得到的最终XML文件装载到系统中,同时考虑这些修改。 The final XML document is then obtained in the generating step loaded into the system, taking into account these modifications. 通常通过UML Des igner接口修改,以便利用内建验证能力。 Typically by UML Des igner interface modification, to take advantage of the built-in authentication capabilities. 生成器可经配置以仅导出XML文件。 Generator can be configured to export only the XML file. 约束模型是定义称作约束类的特定Entity类的类型的类图。 Constraint model is referred to the definition of a particular type of constraint classes Entity class class diagram. 约束模型向定义为Constrainable的先前存在的类的类型添加约束。 Type constraint model is defined as the pre-existing class Constrainable added constraint. 约束是基于现有实体类在UML中定义的附加完整性规则;所述约束随后在生成步骤转化成XML文件。 Additional constraints are based on existing entity integrity rules defined in UML class; the constraint is subsequently converted to an XML file in the generating step. 所生成的应用程序提供工具来将表示约束模型的XML文件装载到应用程序中。 The generated application provides tools to represent an XML document constraint model loaded into the application. 在部署应用程序之后可随时进行约束的修改或添加新约束。 Constraints can be modified at any time after the application is deployed or add a new constraint. 然后将最终XML文件装载到系统中,同时考虑这些修改。 And then load the resulting XML file to the system, taking into account these changes.

[1137] F.Trace Configuration (跟踪配置) [1137] F.Trace Configuration (tracking configuration)

[1138] 所生成的应用程序提供向服务器机器上创建的特定文件写入跟踪的功能性。 [1138] The generated application provides functionality to write to trace to a particular file created on the server machine. 有必要分析应用程序完成的任务且有必要对bug (错误)或技术问题记录日志时使用跟踪。 It is necessary to analyze applications and tasks necessary to use when logging on track bug (error) or a technical problem. Trace Conf iguration还可记录业务日志和模块特定日志。 Trace Conf iguration recording service may also log and log specific module.

[1139] 应用程序提供配置工具来决定将生成用来存储跟踪的文件的位置、大小和名称。 [1139] Application configuration tools provided to determine the position to store the generated trace file size and name. 应用程序还能在所生成的跟踪中从预定的等级的细节列表进行选择。 Applications can choose from a list of predetermined levels of detail in the generated trace.

[1140] G.报告 [1140] G. Report

[1141] Reporting工具对于处理数据的企业应用程序至关重要。 [1141] Reporting tool is essential for processing by enterprise applications data. Reporting工具使得用户能够依据给定的某个标准在工作日动态生成报告。 Reporting tool allows the user to set the basis for a standard dynamically generated reports on weekdays. Report模块是定义和生成报告的Palmyra工具。 Report module definition and generate reports Palmyra tool. Report模块提供简单易用的用户接口来构建Reports (“templates (模板)”), 其稍后可用来生成不同格式的Imports。 Report module provides an easy to use user interface to build Reports ( "templates (template)") can be used to generate Imports of its different formats later.

[1142] 所生成的应用程序提供使用输入到应用程序的日期来创建Reports的功能性。 [1142] generated application date using the input provided to the application to create a functional Reports. Report Writer (报告编写器)是呈现服务的部分。 Report Writer (Report Writer) is part of the services rendered. Report的定义基于Metadata (元数据),其说明将用作数据容器的实体类的类型和将在生成Report时输入以便选择合适对象的参数。 Report definition based on the Metadata (metadata), which is described as the type of the data entity class and a container in order to select the appropriate input object when Report generation parameters. Metadata是装载在应用程序存储器中的数据的定义。 Metadata is loaded in the memory of the application definition data. Metadata衍生自XML文件(例如,过程和约束)、所生成的代码、所写入的代码很先前存在的库。 Metadata is derived from the XML file (e.g., procedures, and constraints), the generated code, the code is written in the pre-existing library.

[1143] 基于数据和表单定义生成呈PDF或HTML或RTF之类的多种格式的报告。 [1143] yielded the various report formats PDF or RTF or HTML data and the like based on the form definition. Report设计器可定义标准中使用的一些参数。 Report Designer to define some of the parameters used in the standard. 这些参数的值仅在Report生成之前提供。 The values ​​of these parameters are provided only before Report generation. 这些参数是收集数据来生成Report时应用的可选条件集合。 These parameters are optional conditions to collect data generated when Report application set. 举例来说,如果用户只想要25岁以上的Employee (雇员)的个人信息,那么他可以定义搜索标准来定制Report的生成数据。 For example, if the user only wants to more than 25-year-old Employee (employee) of personal information, he can define the search criteria to customize the generated data Report. Report 还可定义实体,其是表示待显示实体的主类型(类)的名称。 Report entity may also be defined, which is a name of the main type (class) of the entity to be displayed. 举例来说,如果用户想要构建包括Employee的个人信息的Report,那么主Entity (实体)将是Employees Jeport可定义待在Report中显示的主Entity的属性(字段)的名称,例如,employee first name (雇员的姓)。 For example, if the user wants to build Employee Report of including personal information, the main Entity (entity) will be the primary attributes stay definable Employees Jeport Entity displayed in Report (field) name, e.g., employee first name (name the employee). 此外,还可对这些字段进行分组、排序,且以许多不同方式显示,诸如图表。 In addition, these fields may be grouped, sorted and displayed in many different ways, such as a chart. 最后,Palmyra系统还提供通过提供多种生成和修改程序员藉以工作的接口的方法来提供以可编程方式生成报告的能力。 Finally, Palmyra system also provides the ability to generate a report provided to programmably generated and modified by a variety of operating methods whereby the programmer interface. 表12示出Palmyra Reporting Tool以可编程方式展示以工作时带有报告工具的方法的示例。 Table 12 shows an example of Palmyra Reporting Tool programmably display methods to work with reporting tool. Report包括任何应用程序的关键部分。 Report includes key part of any application. 然而,Report的设计可能费事费力。 However, Report of possible protracted and painstaking design. 此外,对R印ort设计的任何简单修改可能会引起应用程序停止运行并要求重启。 In addition, any simple modification of the R ort printed design may cause the application to stop the run and require a restart. 出于上述原因,Palmyra具有促进用户的Report设计过程的XSL Editor Tool。 For these reasons, Palmyra promote the user's Report design process XSL Editor Tool. 这个工具允许多种设计功能性,诸如,修改报告的布局、添加动态数据、修改标签、添加表达式以及向设计添加图象。 This tool allows a variety of design features, such as, report layout modify, add dynamic data, modify the label, and the added image is added to the design expression. 最后,Report写入工具还提供方法以图格式呈现数据。 Finally, Report writing tool further provides a method of presenting data format in FIG. Palmyra系统含有图表库。 Palmyra system contains a chart library. 这个库是基于Java的图表,其使得用户能够向java应用程序和网页添加图表。 This library is a Java-based charts, which enables users to add graphs to java applications and web pages. 库含有基于AWT的图表组件、小程序和图表小服务程序(servlet)。 Libraries contain AWT-based chart components, chart applets and servlets (servlet). 图29示出报告生成步骤。 29 shows the step of generating a report.

[1144] 表12:Palmyra Reporting Tool以可编程方式展示利用报告工具进行工作的方法的示例 [1144] Table 12: Palmyra Reporting Tool programmably display methods using reporting tools working example

[1145] 报告生成的示例 Example [1145] Report generation

[1146] FileOutputStream output = new FileOutputStream (〃D:\\Report.pdf〃); [1146] FileOutputStream output = new FileOutputStream (〃D: \\ Report.pdf〃);

[1147] String reportName = //myReport//; [1147] String reportName = // myReport //;

[1148] CollectionValue parameters = new CollectionValueO ; [1148] CollectionValue parameters = new CollectionValueO;

[1149] parameters.set (〃parameterName〃,new stringValue (〃testParameter〃)); [1149] parameters.set (〃parameterName〃, new stringValue (〃testParameter〃));

[1150] String criteria = " (yl = = \〃testcriteria\〃)&amp; (xl = = {parameterName}) 〃; [1150] String criteria = "(yl = = \ 〃testcriteria \ 〃) & amp; (xl = = {parameterName}) 〃;

[1151] ReportGenerator reportGenerator = new ReportGenerator (); [1151] ReportGenerator reportGenerator = new ReportGenerator ();

[1152] reportGenerator·generateReport (output,reportName,parameters,new [1152] reportGenerator · generateReport (output, reportName, parameters, new

[1153] IODriverDefaultConfig () ? criteria); [1153] IODriverDefaultConfig () criteria)?;

[1154] 报告导出动作的;^例 [1154] Export report operation; ^ Example

Figure CN102656557BD00641

[1156] 报告下载控制器的示例 Example [1156] Report Download controller

Figure CN102656557BD00642

[1158] VI.测试 [1158] VI. Test

[1159] A.自动测试 [1159] A. Automatic Test

[1160] 基于应用程序的Palmyra可含有用来确保通过迭代方法添加新功能性时应用程序中无回归的测试工具。 [1160] Application may contain no regression when new functionality is added by an iterative method based on the test tool to ensure Palmyra applications. 通常,回归是预建构功能性的错误,其将在生成新代码后浮现。 Typically, the return of pre-construction of functional errors, which will emerge after generating new code. 这个工具称作Autotest,且用来记录测试脚本,手动创建测试步骤、脚本和套件,稍后运行,且比较结果。 This tool is called Autotest, and is used to record test scripts, create test procedures, scripts and packages manually run later, and compare the results. 这个工具通过保证先前版本的应用程序中创建的功能仍可在增建之后工作来确保所生成的应用程序中无回归。 The tools to ensure the functionality of the previous version of the application can still be created after the construction of additional work to ensure that the application generated no return. 这个工具有助于便捷地精确发现已发布测试的版本与已完成记录的版本之间在过程结果上的异常或不同。 This tool helps to easily find the exact test between the published version of the completed record of abnormal or different versions on the results of the process.

[1161] I .AutoTest (自动测试)术语 [1161] I .AutoTest (Automatic Test) The term

[1162] StepTest (步骤测试):是AutoTest中的核心项,且呈现您想要测试的服务。 [1162] StepTest (step test): is the core items in AutoTest, and the presence service you want to test.

[1163] ScriptTest (脚本测试):呈现程序给定案例的测试情境。 [1163] ScriptTest (test script): renderer given test case scenarios. 脚本由排序步骤的集合构成。 Script consists of a set of sorting step. ScriptTest可具有其自身的Initial State。 ScriptTest may have its own Initial State.

[1164] Suite (套件):如果您有多个情境要测试,那么您可将这些情况在一个套件上按序构成。 [1164] Suite (Suite): If you have multiple scenarios to test, you can use these situations sequentially formed on a suite. Suite可具有其自身的InitialState。 Suite can have its own InitialState.

[1165] InitialeState (初始状态):保存在xml文件中的数据库状态的图象,由用户创建。 [1165] InitialeState (initial state): saving state in the image database xml file, created by the user.

[1166] TestMessage (测试消息):供AutoTest用来创建适合Palmyra消息的配置,所述Palmyra消息呈现待测试服务。 [1166] TestMessage (test message): used to create suitable for Palmyra AutoTest configuration message, the service Palmyra message presentation to be tested. TestMessage由服务名称、动作名称和参数组成。 TestMessage by the service name, the action name and parameters.

[1167] Result (结果):TestStep的执行结果。 [1167] Result (Results): TestStep the execution result.

[1168] StepExpression (步骤表达式):用来评估结果的Palmyra表达式。 [1168] StepExpression (Step expression): Palmyra expression used to assess the results.

[1169] TestSearchResult (测试搜索结果):使得您能够在数据库中查找并显示Result (结果)。 [1169] TestSearchResult (test search results): enables you to find and display Result (result) in the database.

[1170] TestColIectionSearchResult (测试集合搜索结果):如果Result是值的集合且测试是否成功取决于这些值的个数,那么在TestCol IectionSearchResult中输入预期的个数。 [1170] TestColIectionSearchResult (test set of search results): If Result is a set of values ​​and success of the test depends on the number of these values, then enter the desired number in TestCol IectionSearchResult in.

[1171] TestFailure (测试失败):每当先前测试(StepExpression、TestSearchResult、 TestCoIlectionSearchResult)中的一个失败,且如果TestStep或TestScript运行失败,那么将创建新的TestFai lure来通知失败。 [1171] TestFailure (test failure): Whenever a previous test (StepExpression, TestSearchResult, TestCoIlectionSearchResult) is a failure, and if TestStep or TestScript fails, it will create a new TestFai lure fail to notice.

[1172] 2 ·使用Autotest 手动创建TestStep、TestScript 以及TestSuite [1172] 2 · created TestStep, TestScript and TestSuite use Autotest manual

[1173] 测试情境可编组为包括测试脚本的测试套件,而测试脚本还包括测试测试步骤。 [1173] Test scenarios include test scripts can be grouped into test suites, test scripts and test procedure also includes testing. 创建手动测试情境的第一步是创建测试步骤。 The first step is to create a manual test scenarios to create a test procedure.

[1174] AutoTest为Step Creation提供下拉菜单。 [1174] AutoTest provides a drop-down menu for the Step Creation. 为了查找旧Step或创建新Step,单击菜单AutoTest中的链接Step,然后单击按钮New来创建新Step。 To find or create a new legacy Step Step, click the link in the menu AutoTest Step, and then click the New button to create a new Step. 填入Step名称,且这个名称针对所有步骤是唯一的。 Fill Step name, and the name is unique for all the steps.

[1175] 现在创建TestMessage,这个字段是强制的,且呈现您想要测试的服务。 [1175] Now create TestMessage, this field is mandatory, and the presence service you want to test. 因此您必须为这个消息选择服务名称、动作名称和用户名称。 Therefore, you must select the service name, the action name and user name for this news. 如果消息需要参数,那么您可以通过单击选项卡(tab) Parameters来创建参数,且选择可用参数类型中的一种。 If the message requires parameters, you can create parameters by clicking on the tab (tab) Parameters, and select an available one parameter of type.

[1176] 从组合框选择Simple Parameter来为您的消息创建simple参数,然后选择参数名称和类型,并填入参数的Palmyra Value,这个值是运行时实际参数值。 [1176] Simple Parameter select from the combo box to create your message simple parameters, and then select the parameter name and type, and fill in the parameters of Palmyra Value, the value is the actual parameter values ​​at runtime.

[1177] 如果参数值不是simple值,那么从组合框选择Composite Parameter。 [1177] If the value of the parameter value is not simple, then the Composite Parameter selected from the combo box. 这样一来, 您能给选择组合值且将其用作这个参数的值。 Thus, you can give a combination of values ​​selected and used as the value of this parameter.

[1178] 用户可在两个选项之间选择,从而获得这个值。 [1178] The user can choose between two options, so as to obtain this value.

[1179] -单击链接Select Value (选择值),并设置类的类型和搜索标准,其将用来搜索参数值。 [1179] - Click the link Select Value (selection value), and set the type and class of search criteria, which will be used to search for the parameter value.

[1180] -单击链接Create Value (创建值),并设置类的类型和草稿代码,其将用来搜索草稿值中的参数值。 [1180] - click the link to Create Value (value creation), and set the type and class of the draft code that will be used to draft the search parameters values.

[1181] 当您需要组合值的集合时,仅需使用Col lection Parameter (集合参数)。 [1181] When you need a combination of a set of values, just use Col lection Parameter (set of parameters). StepExpression (步骤表达式)用来确保结果是正确的。 StepExpression (step expression) to ensure that the result is correct.

[1182] -Expression Name (表达式名称):针对所有StepExpression是唯一的。 [1182] -Expression Name (expression name): is unique for all StepExpression.

[1183] -Expression Value (表达式值):是Palmyra表达式。 [1183] -Expression Value (expression value): is Palmyra expression.

[1184] 填入Test Search Result名称(唯一的)、Class Type和标准,且Test Search Result将从Class Type搜索值。 [1184] Test Search Result fill in the name (only), Class Type and standards, and Test Search Result from Class Type search values.

[1185] Test Collection Search Result用来检查结果的个数,以及设定类的类、搜索所使用的标准和值的预期个数。 [1185] Standards and Test Collection Search Result expected number for the number of inspection results, and setting a class type, the value used for the search.

[1186] AutoTest还为Test Script Creation提供下拉菜单。 [1186] AutoTest Test Script Creation also provides pull-down menu. 为了查找旧Script (脚本)或创建新Script,单击菜单AutoTest中的链接Script,然后单击按钮New来创建新Script。 In order to find old Script (script) or create a new Script, click the link in the menu AutoTest Script, and then click the New button to create a new Script. 填入Script Name (脚本名称),且从组合框(可选)选择Script State (脚本状态),且Script可以或不可具有其自身的State。 Script Fill the Name (the name of the script), and selects Script State (state script) from the combo box (optional), and Script may or may not have its own State.

[1187] a.经由选项卡StepOrders (步骤次序)向ScriptTest添加TestSteps (测试步骤) [1187] a. Adding TestSteps (testing step) via a tab to ScriptTest StepOrders (step order)

[1188] 更改Script内的Steps的次序很重要,因为依据这个次序来执行第一步直到最后一步。 [1188] Steps sequence of changes in the Script very important, because according to this order to perform the first step until the last step. 幸运的是,您可以使用链接arc随时更改这个次序。 Fortunately, you can use the link arc to change this order.

[1189] AutoTest还为Test Suite creation提供下拉菜单。 [1189] AutoTest also provides drop-down menu for the Test Suite creation. 为了查找旧Suite或创建新Suite,单击菜单AutoTest中的链接Suite,然后单击按钮New来创建新Suite。 To find or create a new legacy Suite Suite, click the link in the menu AutoTest Suite, and then click the New button to create a new Suite. 填入Suite Name,且从组合框(可选)选择Suite State,且Suite可以或不可具有其自身的State。 Suite fill the Name, and select from the combo box Suite State (optional), Suite and may or may not have its own State.

[1190] b ·经由选项卡StepOrders 向TestSuite 添加TestScripts [1190] b · Add TestScripts to TestSuite via tab StepOrders

[1191] 更改Suite内的Scripts的次序很重要,因为依据这个次序来执行第一个Script直到最后一个Script。 [1191] Change Scripts in the Suite's order is important, because this order is executed in accordance with the first until the last Script Script. 您可以便捷地使用链接arc随时更改这个次序。 You can easily use the links arc to change this order.

[1192] 3 ·运行Tes tSteps、TestScripts 和TestSuites [1192] 3-run Tes tSteps, TestScripts and TestSuites

[1193] Autotest能给运行预先记录或创建的TestScr ipt、TestStep和TestSui te,这是通过将用户输入手动模拟到应用程序中并比较所生成的结果与所记录的等效值来完成。 [1193] Autotest give running prerecorded or created TestScr ipt, TestStep and TestSui te, which is input manually by a user to complete the simulation results of the application and to compare the generated values ​​with the recorded equivalent. 提供特定设计的用户接口来执行Te st Steps、Test Script s和Te st Suites。 Providing a user interface specifically designed to perform Te st Steps, Test Script s and Te st Suites. Auto test生成含有已获得结果与已记录结果之间的所有不同(如果存在)的报告。 Auto test generates a report containing the results have been obtained with all the differences between the results (if present) has been recorded. 然后使用报告来分析潜在异常。 Then use the report to analyze potential anomalies. 在分析结果并进行必要校正之后,应用程序开发人员可在结果不同是由于新版本的增强特征的情况下决定更新测试脚本。 After analyzing the results and make the necessary correction, application developers can be different in the case of the result is due to the enhanced features of the new version of the decision to update the test script. Autotest使得通过模拟用户输入和重新记录结果来自动更新已记录脚本的成为可能。 Autotest making by simulating user input and re-record the results automatically update the recorded script possible.

[1194] 运行测试步骤、脚本或套件像运行步骤一样简单,就像体验3个阶段的游戏一样: [1194] Step test run, the script or package as simple as running step, as experience three stages of games like:

[1195] 搜索; [1195] search;

[1196] 选择;以及 [1196] selection; and

[1197] 运行 [1197] Run

[1198] 4 .AutoTest Recorder (AutoTest记录器) [1198] 4 .AutoTest Recorder (AutoTest recorder)

[1199] AutoTest Recorder提供简单快捷的方式来创建Script Testsc3Auto Test Recorder缺省记录与Pa Imyra服务不同的所有服务。 [1199] AutoTest Recorder provides a quick and easy way to create and Pa Imyra different services Script Testsc3Auto Test Recorder records all default services. 但在您甚至可能需要记录Pa lmyra Services的一些情况下,您可以通过向配置文件添加Palmyra Services名称来轻松地实现对Palmyra Services的记录。 However, you may even need to record some cases, Pa lmyra Services under, you can add the name of Palmyra Services through the configuration file to easily achieve the record of Palmyra Services.

[1200] AutoTest Recorder已含有一些条目,以下示出您如何添加更多: [1200] AutoTest Recorder already contains a number of entries, the following shows you how to add more:

[1201] com.palmyra.arch.IifeCycle. adapter.manager.LifeCycIeExecuter = fire Event,f ireEventffithoutconf ig [1201] com.palmyra.arch.IifeCycle. Adapter.manager.LifeCycIeExecuter = fire Event, f ireEventffithoutconf ig

[1202] com. palmyra. arch. scheduler . Ctrl.JobEntryExeControlIer= immediate ExecuteJobEntry [1202] com. Palmyra. Arch. Scheduler. Ctrl.JobEntryExeControlIer = immediate ExecuteJobEntry

[1203] com.palmyr. arch. persistence.entitymanager = synchronize [1203] com.palmyr. Arch. Persistence.entitymanager = synchronize

[1204] Recorder Menu (记录器菜单):单击菜单AutoTest中的链接Record: [1204] Recorder Menu (Logger menu): Click the link in the menu AutoTest Record:

[1205] 然后您可以在仅记录Script Test,或Script Test以及其Record Results.之间选择。 [1205] then you can only record Script Test, or Script Test and its Record Results. Choose between.

[1206] Start recording scenarios (开始记录情境):输入Script和Step的前缀名称(可选,如果您不选择,将使用缺省前缀名称),然后单击按钮Recording (记录),且等待直到接收到确认消息。 [1206] Start recording scenarios (start recording situation): Enter the Script and Step prefix name (optional, if you do not choose, the default prefix name), and then click the button Recording (recording), and waits until it receives confirmation message.

[1207] Play test scenario (播放测试情境):现在您可以播放您预先准备的情境。 [1207] Play test scenario (playback test scenarios): Now you can play your scenarios prepared in advance.

[1208] Stop Recording (停止记录):完成您的情境时,停止Recorder。 [1208] Stop Recording (stop recording): Upon completion of your situation, stop the Recorder.

[1209] Start Recording scenarios and results (开始记录情境和结果):在开始记录之前您可能需要了解Record Result (记录结果)jecord Result呈现运行情境期间所使用的实体,在这种情况下,记录器散列应被同步到字符串中的每一实体,然后再次运行同一Script Test,AutoTest比较这些存储的散列与运行时计算的散列。 [1209] Start Recording scenarios and results (to start recording situation and results): Before you begin recording, you may need to know Record Result (Record result) jecord Result presentation entity used during running situations, in this case, the recorder scattered columns each entity should be synchronized to the string, and then re-run the same Script Test, it calculates the runtime AutoTest comparing the hash stored hash. 您可以通过向记录器分配Record Config来从所散列的实体中排除一些字段。 You can exclude some fields from the hash entities by assigning Record Config to the recorder. (参照下段来了解如何创建Record Config (记录配置)) (Refer to the following section to learn how to create a Record Config (recording configuration))

[1210] Create Record Conf ig (创建记录配置):在菜单AutoTest中选择Create Record Conf ig。 [1210] Create Record Conf ig (created record configuration): Select Create Record Conf ig AutoTest the menu. 输入唯一的名称。 Enter a unique name. 选择实体来排除它的一些键。 Select entity to exclude some of its bonds. 然后,选择您想要从选定实体的散列中排除的键。 Then, select the button you want to exclude from the hash of the selected entity.

[1211] 5· Script Delete (脚本删除) [1211] 5 · Script Delete (deleted script)

[1212] Script Delete的主要目的是将数据库回滚到先前状态,以便了解您为何在一些情境中可能需要这个特征。 [1212] The main purpose Script Delete the database is rolled back to a previous state, in order to understand why you might need this feature in some situations.

[1213] -The scenario-to be tested (待测试情境)_在数据库中创建并保存实体(City (城市))的新实例;城市名称通常是巴黎(Paris)。 [1213] -The scenario-to be tested (to be tested scenarios) _ create and save entity (City (city)) a new instance of the database; usually the name of the city is Paris (Paris).

[1214] -动作名称是(createCityO),其没有输入参数。 [1214] - the name of the action (createCityO), which no input parameters.

[1215] - (City)有两个字段,名称(name)和序列id (number),从1000开始。 [1215] - (City) has two fields, name (name) and a sequence id (number), starting with 1000.

[1216] -您第一次成功记录情境时,新城市将添加到数据库中。 [1216] - When you first successful recording situation, the new city will be added to the database.

[1217] PK_ Name_ Number_ [1217] PK_ Name_ Number_

[1218] 28052008 Paris 1000 [1218] 28052008 Paris 1000

[1219] -如果您尝试运行所记录的情境,那么您肯定会获得错误消息。 [1219] - If you try to run the recorded scenarios, then you'll get an error message. 消息通知您,数据库中已经存在名称为相同唯一名称(Paris)的城市。 Message informs you that, already in the database name is the same unique name (Paris) city.

[1220] -如果您以某种方式将数据库中的城市名称更改为像(London)这样的另一个名称,并运行所记录的情境,那么AutoTest就将在日志中报告错误,因为AutoTest预期(number= = 1000),但运行是获得的是(number= = 1001)。 [1220] - If you are in some way the city changed to the name of the database like (London) such other name, and run scenarios recorded, then AutoTest will report an error in the log, because AutoTest expected (number = = 1000), but the operation is obtained is (number = = 1001). 发生这种情况是因为序列字段是自动增加的。 This happens because the field is automatically incremented sequence.

[1221] 这是您需要Script Delete功能性的典型示例,因为您必须在运行情境之前从数据库删除旧城市并且将字段(number)的序列值重设为(1000)。 [1221] This is a typical example of Script you need the functionality of Delete, because you have to remove the old city from the database before running situations and field (number) sequence values ​​reset (1000).

[1222] 可依据Delete Conf iguration (删除配置)来生成脚本删除,所述Delete Conf i gurat i on含有待删除的类列表和待删除的序列列表。 [1222] may be generated based on a script delete Delete Conf iguration (delete the configuration), the Delete Conf i gurat i on the class containing the list to be deleted and a list of sequences to be deleted.

[1223] 这些类的列表在Class Conf iguration (类配置)和Package Conf iguration (包配置)中指定。 [1223] A list of these classes is specified in the Class Conf iguration (class configuration) and Package Conf iguration (package configuration). 在配置包的过程中,您可以指定排除类的列表。 During configuration of the package, you can specify a list of excluded classes.

[1224] 序列列表在sequence Conf iguration (序列配置)中指定。 [1224] In the sequence listing designated sequence Conf iguration (series configuration).

[1225] 为了删除类,执行以下步骤: [1225] In order to remove a class, perform the following steps:

[1226] 使用Persistence (持久性)层中的“volumeDeleteSimulation”服务来执行delete simulation (删除模拟)。 [1226] use Persistence (persistence) layer "volumeDeleteSimulation" service to perform delete simulation (delete simulation). 这个方法并不删除值,且仅仅是删除操作的模拟。 This method does not delete the value, and only the deletion of the simulation. 这个方法的输出是“De IetedOb ject” 对象的集合。 The output of this process is that "De IetedOb ject" collection object. 一个“De IetedOb ject” 对象由c IassName、valuePk和“Deletederror”对象的集合来定义。 A "De IetedOb ject" object is defined by a set of c IassName, valuePk and "Deletederror" object. 如果删除(错误)期间存在问题,那么这个动作将不停止模拟,但创建“Deletederror”并将其与引起这个错误的当前DeletedObject相关联。 If you delete the period (wrong) there is a problem, then this action will not stop the simulation, but to create "Deletederror" and associated with the current caused this error DeletedObject. 在Deletederrors的个数小于1000的情况下,DeIetederror的类型为“DeletederrorPK”。 In the case where the number of Deletederrors less than 1000, the type of DeIetederror "DeletederrorPK". 否贝丨J ,Deletederror的类型为“DeletedErrorCriterion”。 No Tony Shu J, type Deletederror for "DeletedErrorCriterion".

[1227] 检查删除模拟错误:验证删除错误列表中指定的所有实例都在删除对象列表中。 [1227] Checkremove simulation error: Verify remove all instances of error specified in the list are deleted object list.

[1228] 使用删除对象和删除错误的列表来创建脚本删除。 [1228] using the Remove and delete the wrong target list to create a script to delete.

[1229] 执行脚本删除。 [1229] execute the script to delete.

[1230] 依据当前删除配置所附加的序列配置中的指定序列值来更新数据库中的序列。 [1230] To delete the current value according to the specified sequence arranged in the appended sequence to update the configuration sequences in a database.

[1231] Create Script Delete (创建脚本删除):单击菜单AutoTest中的链接(Search Delete Config (搜索删除配置)): [1231] Create Script Delete (Create a script to delete): Click the link in the menu AutoTest (Search Delete Config (search Delete Configuration)):

[1232] -单击New [1232] - Click New

[1233] -键入Script Delete名称,其应是唯一的 [1233] - Type the Script Delete the name, it should be unique

[1234] -运行这个Script Delete时选择待删除的实体(City)。 [1234] - select the entity to be deleted when you run the Script Delete (City).

[1235] -运行这个Script Delete时选择序列(number)并将其值重设为(1000) [1235] - selecting a sequence (number) when running the Script Delete and reset its value (1000)

[1236] -返回并保存。 [1236] - Go back and save.

[1237] Run Script Delete (运行脚本删除):为了运行任何Script Delete,单击菜单AutoTest中的相同链接(Search Delete Config),搜索、选择和运行。 [1237] Run Script Delete (running script to remove): In order to run any Script Delete, click the same link (Search Delete Config) in the AutoTest menu, search, select and run.

[1238] Attach Script Delete to Script Test (将脚本删除附加到脚本测试):现在您知道您必须就在运行已记录情境(创建Ciry ())之前运行Script Delete (Delete-City)。 [1238] Attach Script Delete to Script Test (delete script script attached to the test): Now you know that you will be logged in the context of operation (create Ciry ()) Run Script Delete (Delete-City) before.

[1239] AutoTest向您提供将Script Delete附加到Script Test的功能性。 [1239] AutoTest to provide you with the Script Delete additional functionality to the Script Test. 这可通过编辑您的脚本并向其分配所要的Script Delete来轻松地完成。 You can edit and assign your script through the Script Delete to be easily accomplished.

[1240] -搜索并编辑您的Script Test [1240] - search and edit your Script Test

[1241] -附加所需要的Script Delete [1241] - Script Delete require additional

[1242] 当您已经将Script Delete附加到Script Test时,您无需单独运行其中的每一个,您只要运行本文档上文所示的Script Test。 [1242] When you have attached to the Script Delete Script Test, you do not need to run every single one of them, as long as you run described in this document hereinabove Script Test.

[1243] 6 · Check the Results (检查结果) [1243] 6 · Check the Results (test results)

[1244] 为了比较并提供所记录结果与当前测试结果之间的不同,Autotest比较两个结果的hash代码。 [1244] The difference between the results of the current test results and to compare the recorded and provided, Autotest two comparison results hash code. 值的hash代码是依据其字符串显示来创建的。 hash code value is based on its strings to create the display. 这个下显示类似于keyl = vall&amp; key2 = val2,其中1^}^1和1^72是带有值的键,且¥311和¥312分别是1^71和1^72的值。 This is similar to the display keyl = vall & amp; key2 = val2, wherein} ^ 1 ^ 1 ^ 1 and the value 72 is keyed, and ¥ 311 ¥ 312, respectively, and a value 1 and 1 ^ 71 ^ 72. 所记录结果与当前测试结果之间的不同是具有不同值的键的列表。 The difference between the results recorded with the current test result is a list of keys having different values.

[1245] 注意:用来创建值的字符串显示的键列表是简单的技术性键,其排除了序列和pk 代码字段、外来Pk字段、序列字段和Record Result Config中的测试器所指定的已排除hash 键。 [1245] Note: The value of the key used to create the list of strings shows a simple technical key which excluded the sequence code field and pk, Pk extraneous field, a sequence field, and the Record Result Config tester specified Excluded hash key.

[1246] 检查测试结果的最好方法是查阅AutoTest日志文件。 [1246] The best way to check the test results is AutoTest access to the log files. 您可以查找文件夹“autotestLogs”中的日志文件,日志文件的名称形式是: You can find the folder "autotestLogs" in the log file, the log file is the name of the form:

[1247] -针对Step的名称为:“step_step_name execution-date · log”。 [1247] - the name for Step is: "step_step_name execution-date · log".

[1248] -针对Script的名称为:“script_script-name execution-date · log”。 [1248] - Script for the name of: "script_script-name execution-date · log".

[1249] -针对Suite的名称为:“suite suite-name execution-date · log”。 [1249] - for the name of the Suite is: "suite suite-name execution-date · log".

[1250] 同样,如果您运行Step,并且出现了失败消息,那么您可以通过点击选项卡Failures来检查失败原因。 [1250] Similarly, if you run Step, and there has been a failure message, you can check the cause of the failure by clicking on the tab Failures.

[1251] 7 .Autotest Import Export (Autotest导入导出) [1251] 7 .Autotest Import Export (Autotest import and export)

[1252] 存在一组有助于您导入和导出完成您的测试所需要的数据的实用工具,且您可以在主菜单AutoTest中轻松地访问这些工具。 [1252] there is a group helps you to import and export utilities to complete your test data needed, and you can easily access these tools in the main menu AutoTest.

[1253] Export Draft (导出草稿):AutoTest使得您能够将值保存在.xml文件中作为草稿,然后您可以在测试时使用这个草稿值,且您可以在两个选项中选择。 [1253] Export Draft (export draft): AutoTest allows you to save as a draft value in the .xml file, and then you can use this draft value in the test, and you can choose between two options.

[1254] Export new Draft (导出新草稿):按下按钮“New”来依据文本框“Class Type (类的类型)”中指定的类型创建新值。 [1254] Export new Draft (deriving new draft): Press the button "New" to create a new value based on the text box "Class Type (type of class)" in the specified type. AutoTest如下导出新值至lj.xml文件中: AutoTest derived as follows lj.xml new value to the file:

[1255] -Class type:com.... City [1255] -Class type: com .... City

[1256] -由两个字段来呈现City类代码(名称和创建日期) [1256] - the two fields to render the City class code (name and creation date)

[1257] -文件名称变为F: $/drafts/ClassName_ClassCode · xml。 [1257] - file name becomes F: $ / drafts / ClassName_ClassCode · xml.

[1258] 例如:$/drafts/City_Paris_01072006 · xml [1258] For example: $ / drafts / City_Paris_01072006 · xml

[1259] Export exists Draft (导出存在草稿):选择结果中的一个,然后按下按钮“Export (导出)”,选定结果将从数据库中删除。 [1259] Export exists Draft (export presence draft): select a result, and then press the button "Export (Export)", delete selected results from the database.

[1260] 8 .AutoTest的Unit test (单元测试) [1260] 8 .AutoTest of Unit test (unit test)

[1261] 为了测试您的应用程序的方法,您可以使用单元测试案例。 [1261] In order to test your application method, you can use the unit test cases. 实际上,通过使用这个案例,您可以用已传递参数运行方法,显示结果和失败值,保存配置,然后在成功执行方法的情况下进行测试,否则不测试。 In fact, by using this case, you can use the method of operation parameters have been passed, and the results show the value of the failure, save the configuration, and then tested in the case of successful execution method, or do not test.

[1262] 为了添加Unit Test配置,您必须遵循以下步骤: [1262] In order to add Unit Test configuration, you must follow these steps:

[1263] -在路径“Auto Tes t\Unit Test”下的菜单中选择动作creat (创建)。 [1263] - select action creat path in the menu under "Auto Tes t \ Unit Test" in the (creation).

[1264] -向配置添加名称、服务名称、动作名称、用户名称和参数值。 [1264] - adding to the configuration name, service name, operation names, user names and parameter values.

[1265] -单击按钮Run (运行)来运行方法;结果或失败将会被添加。 [1265] - Click the button Run (Run) to run the method; the results or failure will be added. 最后,您可用预期结果或预期失败保存配置。 Finally, you can use the expected results or anticipated failure to save the configuration.

[1266] 在运行方法之后,您可查询结果。 [1266] After the run method, you can query results. 然后为了测试方法,您仅需要单击按钮Test (测试)。 Then in order to test the method, you only need to click the button Test (Test).

[1267] 9 .AutoTest Report (AutoTest报告) [1267] 9 .AutoTest Report (AutoTest Report)

[1268] AutoTest针对每一运行情境生成报告,且报告含有成功过程的成功消息和AutoTest在错误过程执行期间侦测到的错误消息。 [1268] AutoTest generate reports for each operational situation, and the report contains an error message and the message is successfully AutoTest success during the process of errors detected during the execution of. 可在应用程序的工作目录和以下路径下找到日志文件: You can find the log file in the working directory of the application and the following path:

[1269] .../Working Directory/AutoTest autotestLogs [1269] ... / Working Directory / AutoTest autotestLogs

[1270] 报告消息:实质上,在运行情境后,可在AutoTest报告中找到3种消息,其中2种,也就是成功和警告消息是好消息并且会令您开心,然而第3种消息,也就是失败消息是更好的消息并且会令您更开心。 [1270] report message: Essentially, after running situation can be found in AutoTest reports three kinds of messages, of which two kinds, that is success and a warning message is good news and will make you happy, but the first three kinds of news, that is, a failure message is good news and will make you happier. 为什么失败消息是更好的消息呢? Why failure message is better news?

[1271] 失败消息意味着发现了看不见的错误,打算解决这个错误(这是AutoTest工具的主要目标),并且在所测试的应用程序中定位这些错误。 [1271] found a failure message means invisible errors, intends to resolve this error (which is the main objective AutoTest tools), and locate these errors in the application of the test.

[1272] 10.Debug Mode (调试模式) [1272] 10.Debug Mode (debug mode)

[1273] 这个段落展示如何打开/关闭AutoTest调试模式,然后如何读取所得的调试日志。 How [1273] This paragraph shows the opening / closing AutoTest debug mode, and how to read the resulting debug log.

[1274] 何时需要? [1274] When do I need?

[1275] -在大多数失败情况下,不需要调试模式。 [1275] - a failure in most cases, do not need to debug mode. 因为正常的AutoTest日志将引导您解决失败的起因,但在极特殊情况下正常日志不充分。 Because the normal AutoTest log will guide you to solve the cause of the failure, but in exceptional circumstances normal log is not sufficient.

[1276] -在这些极少数情况下,检查人员需要知道记录和运行时都发生了什么,因此出现了调试模式这个角色,调试模式向检查人员提供2个日志文件来进行比较,并解决失败的原因。 [1276] - In these rare cases, inspectors need to know what happened to record and run-time, resulting in debug mode this role, debug mode available to inspectors two log files to compare, and resolve failures the reason.

[1277] -实际上,您可能需要使用调试模式的已知情况是您在正常日志中获得这个错误的情况。 [1277] - in fact, you may need to use debug mode known case scenario, you get this error in the normal log.

[1278] 步骤ADJU_EMISSI0NS_fireEvent_1207239411130 已失败 [1278] Step ADJU_EMISSI0NS_fireEvent_1207239411130 failed

[1279] [[ExecuteThread:'12'for queue:'weblogic·kernel.Default'][711833142]] [1279] [[ExecuteThread: '12'for queue:' weblogic · kernel.Default '] [711833142]]

[1280] 错误:这个同步中的记录结果的类型应为[X],而运行时找到的类型是[Y]。 [1280] Error: This type of synchronization should record the results of [X], and to find the type of runtime [Y].

[1281] Debug mode Οη/Off (调试模式打开/关闭):如果想要在AutoTest中打开调试模式,那么向以下路径添加文件(debug.mode): [1281] Debug mode Οη / Off (Debug Mode On / Off): If you want to turn on debug mode in AutoTest, then add the file (debug.mode) to the following path:

[1282] ../AutoTest/debug/debug.mode [1282] ../AutoTest/debug/debug.mode

[1283] 为了关闭调试模式,您必须删除或重命名这个文件(debug.mode)。 [1283] In order to close the debug mode, you must delete or rename the file (debug.mode).

[1284] Debug mode usage (调试模式使用):应遵循以下使用次序,以便获得调试模式的优势: [1284] Debug mode usage (use debug mode): Use the following order should be followed in order to gain an advantage in debug mode:

[1285] 1.打开调试模式 [1285] 1. Open the debug mode

[1286] 2.记录您的情境(si) [1286] 2. Record your situation (si)

[1287] 3.运行这个情境(si) [1287] 3. Run this situation (si)

[1288] 4.关闭调试模式 [1288] 4. Close the debug mode

[1289] 结果将是可在以下路径找到的许多个日志文件: [1289] The results will be found in the following path many log files:

[1290] ../AutoTest/debug/stepl_record_uniqueNum.log [1290] ../AutoTest/debug/stepl_record_uniqueNum.log

[1291] stepl_ run—uniqueNum.log [1291] stepl_ run-uniqueNum.log

[1292] step2—record—uniqueNum.log [1292] step2-record-uniqueNum.log

[1293] step2_ run—uniqucNum.log [1293] step2_ run-uniqucNum.log

[1294] Debug mode logs (调试模式日志):调试模式的额外结果(除了已记录脚本)是调试日志文件。 [1294] Debug mode logs (log debug mode): the results of additional debug mode (in addition to the recorded script) is a debug log file. 大多数已记录步骤具有2个调试日志,一个是记录时间的日志,而另一个是运行时间的日子。 Most already have two recording step debug log, a log is a record time, and the other is the running time of the day. 您可以通过名称来区分这2个日志: You can distinguish these two logs by name:

[1295] · ./AutoTest/debug/stepl_record_uiqueNum. log (在记录时间) [1295] · ./AutoTest/debug/stepl_record_uiqueNum. Log (in record time)

[1296] stepl_run_uniqueNum. log (运行时间) [1296] stepl_run_uniqueNum. Log (run time)

[1297] VII.最终应用程序的结构(Palmyra框架) [1297] VII. The final structure (frame Palmyra) applications

[1298] A.呈现层 [1298] A. The presentation layer

[1299] 1.层的设计[1300] a.选定架构 [1299] 1. The design layer [1300] a. Architecture selected

[1301] 出于许多原因(包括安全性、可维护性和处理的集中性),选择了瘦客户端架构。 [1301] For many reasons (including centralized security, maintainability, and handling), select the thin client architecture.

[1302] 在这个架构中,软件系统被分成至少3层。 [1302] In this architecture, the software system is divided into at least three layers. 以下是3层中每一层的简要描述: The following is a brief description of each layer of the 3 layer:

[1303] thin-client (瘦客户端):瘦客户端是与终端用户直接交互的层。 [1303] thin-client (thin client): layer is thin client interacts directly with the end user. 薄是因为根本不含业务逻辑。 Thin because contain no business logic. 瘦客户端仅提供与用户通信的方式,且由用户安装于每台机器上。 Thin client only way to communicate with a user, and installed by a user on each machine. 作为产品, 瘦客户端可以是完整软件解决方案的步伐,或是诸如web浏览器的第三方产品。 As a product, the thin client can be a complete software solutions for the pace, such as a web browser or third-party products.

[1304] presentation tier (呈现层):这一层在服务器侧运行。 [1304] presentation tier (presentation layer): This layer running on the server side. 这一层经由一些网络协议与瘦客户端通信。 This layer is a thin client to communicate with a number of network protocols via. 这一层知道如何将请求委托给适合服务,以及如何通过向瘦客户端发回响应来显示结果。 This layer knows how to delegate requests to the appropriate service, and how to thin client response is sent back to display the results. 这一层还使得用户能够从一个案例跳转至另一案例。 This layer also enables the user to jump from one case to another case.

[1305] business logic tier (业务逻辑层):仅在这个业务逻辑中执行应用程序的业务逻辑。 [1305] business logic tier (business logic): perform business logic of the application only in the business logic. 业务逻辑层可被视为相互调用、被呈现层调用以及知道需要处理已存储数据时如何连接到数据库的许多个服务。 Business logic layer can be viewed as call each other, the presentation layer to call and how to connect to the database when the stored data processing needs to know many services.

[1306]前面2个层都是与呈现模块相关的层,且将在本文档下文中着重描述这2个层。 [1306] the front layer 2 are modules associated with the presentation layer, and will focus on the two layers described in this document. [1307] b.选定设计模式 [1307] b. The selected design pattern

[1308] MVC2 (代表ModeUView和ControIler)设计模式是经过证明对具有先前说明的架构的应用程序很实用的设计模式,其中应用程序分成以下3种组件: [1308] MVC2 (behalf ModeUView and ControIler) design pattern is proven with the application of the previously described architecture very practical design pattern, where the application is divided into the following three components:

[1309] Model (模型):模型提供用来访问数据库(或应用程序的状态)以及运行业务过程的一组服务。 [1309] Model (model): model provides a set of services for accessing the database (or the state of the application), and running business process.

[1310] View (视图):知道如何针对每一可能案例建构用户接口的一组组件。 [1310] View (View): Case may know how to construct a set of components for each user interface.

[1311] Controller (控制器):从客户端接收请求并向其发回响应的组件。 [1311] Controller (Controller): receiving a request from a client component to send back its response. 控制器知道如何将这些请求转为内部请求,以及如何将这些请求委托给模型中的适合服务。 Controller knows how these requests into internal requests, and how to delegate these requests to the appropriate models of service. 控制器还知道如何选择将建构用户接口的适合视图组件 The controller also knows how to construct the user interface of choice for the view component

[1312] c.控制器的详述 [1312] c. DETAILED controller

[1313] 在MVC2设计模式中,明显的是,控制器组件仅负责与瘦客户端通信,因此,应了解将控制器组件连接到瘦客户端的网络协议,并且还应了解瘦客户端的语言,这样才能解译瘦客户端的请求,并向其同步回响应。 [1313] In MVC2 design mode, it is apparent, the controller is responsible for only a thin client to communicate with the assembly, therefore, be appreciated that the controller is connected to a thin client network protocol components, and also understood that the thin client language, so in order to interpret the request of thin clients, and its synchronous response back. 因此,我们期望实施控制器构建的大部分代码是依赖于客户端的。 Thus, we expect most of the code controller constructed embodiment is dependent on the client.

[1314] 另一方面,控制器还负责将请求委托给模型中的适合服务,且负责选择讲决定响应内容的视图组件。 [1314] On the other hand, the controller is also responsible delegates the request to the appropriate service model, and is responsible for selecting decided to speak in response to the view component content. 这个功能性与瘦客户端的类型毫无关系。 This type of thin client functionality and have nothing.

[1315] 因此,控制器组件可被视为以下两个单元的联合: [1315] Thus, the controller assembly may be regarded as the joint of two units:

[1316] Presentation Port (呈现端口):客户端可藉以连接到应用程序的呈现层的唯一单元。 [1316] Presentation Port (Port presentation): The client can be connected to a single unit whereby the application presentation layer. 呈现端口知道与瘦客户端的通信相关的所有技术细节。 Presents all the technical details related to communication port and thin clients know.

[1317] Presentation Controller (呈现控制器):这个单元用来从呈现端口接收独立于客户端的请求,将处理委托给适合服务,选择适合的视图组件,以及向呈现端口发回独立于客户端的响应。 [1317] Presentation Controller (presentation controller): This unit is used to receive independent client requests from the presentation port, delegates processing to the appropriate service, select the appropriate view component, as well as to the presentation port back independent of the client response.

[1318] 图48显示呈现层可如何得益于其设计而支持许多种技术。 [1318] Figure 48 shows how the presentation layer may thanks to its design supports a number of techniques.

[1319] d.Big Picture (大图) [1319] d.Big Picture (enlarge)

[1320] 通常,用户与程序模块之间的交互始于使用一些瘦客户端向“监听”客户端的呈现端口发送请求。 [1320] Typically, the interaction between the user and the program modules started to use some thin clients to "listen" to the client sends a request presented port side. 这个请求是依赖于客户端的,且呈现端口必须将其转化为独立于客户端的请求。 This is dependent on the request of the client, and rendering the port must be converted to the client's request independently. 一旦完成,呈现端口将这个请求转发给呈现控制器,其将执行必要动作来处理这个请求。 Upon completion, rendering the port forwards the request to the presentation controller, which will perform the necessary actions to process the request.

[1321] 一旦处理完请求,呈现控制器现在可进行响应。 [1321] Once the request has been handled, it can now be presented in response to the controller. 响应必须呈新图形用户接口的形式,或已显示接口的更新。 Response must form a new graphical user interface, or an interface update has been shown. 控制器应知道待渲染或更新的图形组件以及待绑定到这些组件的值。 The controller should know the value of graphics components to be updated and rendered or to be bound to these components. 然而,因为呈现控制器并不知道如何与瘦客户端通信,它需要通过呈现端口本身来与瘦客户端通信,而呈现端口必须向呈现控制器提供用来渲染用户接口的方法。 However, because the presentation controller does not know how to communicate with the thin client, it needs by presenting itself to the thin client to communicate with the port, the port must be presented to provide a method for rendering the user interface to the presentation controller. 因此,当呈现端口调用呈现控制器来构建用户接口时,它应传递呈现控制器将用来在用户接口上渲染组件的对象(tenderer,植染器)。 Accordingly, when the calling port presentation controller to build a user interface presentation, it should be passed to the presentation controller to render objects on a user interface component (tenderer, plant dyeing device).

[1322] 显示在用户接口上的组件通常是对当前会话中的值的图形显示。 [1322] Display on a user interface components is generally pattern values ​​in the current session is displayed. 当呈现端口由于用户与显示接口之间的交互而接收请求时,端口知道被更新的图形组件,但并不知道如何更新这些组件表示的值。 When the port due to the interaction between the user and the display interface to receive a request presented, graphics port known assembly is updated, but does not know how to update the values ​​of these components are represented. 因此,Renderer还是呈现控制器将对象(Value Bindings,数据绑定)传递到呈现端口的一种方法,以使得有助于呈现端口从构建的用户接口接收请求时更改会话中的值。 Thus, the Renderer objects pass or the presentation controller (Value Bindings, data binding) A method for presenting to a port, so as to facilitate presentation to change the value of the session when receiving a request from the user interface port built.

[1323] 为了避免一个用户接口的会话数据覆写另一个用户接口的会话数据,每一用户接口(或页面)必须在会话中具有其自身的存储器空间。 [1323] In order to avoid a session data overwriting user interface to another user interface session data, each user interface (or page) must have its own memory space in the session. 我们将这些独立空间称作Page Data (页面数据)。 We refer to these independent space called Page Data (data page). 呈现控制器是知道如何创建、初始胡和更新Page Data对象的构建,但呈现端口知道如何在保持呈现控制器在会话中返回的Page Data对象,以及如何将这个Page Data 对象与渲染页面(或用户接口)相关联。 The presentation controller is knowing how to create, build and update the initial Hu Page Data objects, but presents know how to keep the port Page Data object rendering controller returns in the session, and how this Page Data object to render the page (or user Interface) is associated.

[1324] 当然,为了遵循MVC2设计模式,呈现控制器自身不应处理从呈现端口接收到的请求,也不应构建页面,尽管从呈现端口的角度来看,这些看起来都是呈现控制器在做。 [1324] Of course, in order to follow the design patterns MVC2, the presentation controller request received from the process itself should be presented to the ports, the page should not be constructed, although presented from the perspective of the port, these looks are presented in the controller do. 相反, 呈现控制器应定位将处理所接收的请求或动作的合适服务。 Instead, the controller should be presented to the appropriate positioning process the received request service or action. 此后我们将这个服务称作Action Handler (动作处理器)。 After that we will this service called Action Handler (operation processor). 类似的是,当查看或植染页面时,呈现控制器必须定位合适的视图组件或View Builder (视图构建器),其知道如何渲染页面,并调用然后传递到Renderer (植染方)对象。 Similarly, when you view the page or plant dye, rendering controller must locate the appropriate view component or View Builder (View Builder), which knows how to render the page, and then to call the Renderer (plant dye side) objects. 图49示出上述示例的图示。 49 shows an illustration of the above example.

[1325] e.呈现端口的提取 [1325] e. Presented extraction port

[1326] 为了提取呈现端口,我们必须定义在呈现端口与呈现控制器之间通信的语言。 [1326] In order to extract rendered port, we have to define the port and the presentation presenting verbal communication between controllers. 这种语言可表达出在两个单元之间交换的对象。 Such language can express the objects exchanged between the two units. 以下是这些对象的列表: The following is a list of these objects:

[1327] Request (请求):请求含有客户端发送任何数据。 [1327] Request (Request): The client sends a request containing any data. 这个数据包括目标页面或待开始的案例,以及影响业务逻辑的执行的附加参数。 This data includes additional parameters to perform the target page or the case to be started, and the impact of business logic. 这个对象的接口必须在呈现控制器中宣称, 且每一呈现端口应提供其自身对那个接口的实施。 Interface object must be declared in the presentation controller, the presentation and each port should provide their own implementation of the interface. 实施将很有可能包装依赖于客户端的请求。 Package embodiments will likely depend on the client's request.

[1328] Page Data(页面数据):这个对象表示为每一显示页面保留的会话空间。 [1328] Page Data (data page): This object represents a session for each display page space reserved. 因此必须存储在会话中。 Therefore it must be stored in the session. 这个对象应使用唯一标识符来识别,因此它可在稍后的请求响应中加以引用。 This object must have a unique identifier to identify, it can be referenced at a later request response.

[1329] Session (会话):与请求包装特定于客户端的请求极其相似,会话也包装特定于客户端的会话。 [1329] Session (Session): a request with the requested client specific packaging is very similar, but also the packaging session client-specific session. 必须在呈现控制器中宣称的这个对象的接口仅含有向会话添加Page Data对象和从会话去除Page Data对象的必要方法。 Must be declared in the presentation controller in the object's interface contains only add objects Page Data Page Data and necessary method of removing the object from the session to session.

[1330] Renderer (渲染器):这个对象的接口(必须在呈现控制器中宣称)定义任何呈现端口应知道如何构建的一组组件。 [1330] Renderer (Renderer): The interface of this object (must be declared in the presentation controller) to define any port should be rendered to know how to build a set of components. 每一呈现端口必须提供其自身对那个接口的实施。 Each presentation port must provide their own implementation of the interface.

[1331] Value Binding (值绑定):当View Builder (视图构建器)调用Renderer来构建用户接口时,View Builder应将它传递到这个类的实例,以便指定每一可视组件如何映射到Page Data中的值。 [1331] Value Binding (bind value): when the View Builder (View Builder) Renderer call to build a user interface, View Builder it should be passed to an instance of this class to specify how each component is mapped to the visual Page Data values ​​are. 可稍后经由呈现端口来使用这些Value Binding对象,以便更新Page Data中的值(例如,接收到新请求时)。 Can later be presented via these ports Value Binding objects used to update the values ​​in the Page Data (e.g., when a new request is received).

[1332] f.装载合适动作处理器/视图构建器 [1332] f. Load the correct operation of the processor / View Builder

[1333] 在请求处理的传统方法中,控制器读取请求中的参数,然后其运行一连串if-else (如果-否则)语句(和嵌套的if-else语句),所述语句将最终使得正确的动作得以实施。 [1333] In the conventional method of processing the request, the controller reads the parameters in the request, which is then run a series of if-else (if - else) statements (and nested if-else statements), the statement that the final the correct action to be implemented. 这种方法中的控制器代码难以维护。 Controller code in this method is difficult to maintain. 因为必须添加新动作(其处理特殊请求),然后必须修改一连串if-else语句,这样一来可能会引入错误。 Because you must add a new action (which deal with special requests), then you must modify a series of if-else statements, so that you can introduce errors.

[1334] 更好的方法是使用寄存器/工厂(factory)设计模式。 [1334] A better approach is to use a register / factory (Factory) design pattern. 这种方法中的动作将其自身寄存到工厂处。 This method of operation to register itself at the factory. 当控制器接收到请求时,其查找工厂中对这个请求感兴趣的动作。 When the controller receives a request, which seek operation request to the plant of interest. 使用键对象来完成寄存和查找操作。 Use the key to complete the object storage and lookup operations. 这个键可以由请求中的数据和会话中的相关数据来创建。 The key may be created by the data request and the session data. 视图构建器必须以相同方式定位。 View builder must be positioned in the same manner.

[1335] g.对上下文的需要 [1335] g. The need for context

[1336] 假定用户接口含有按钮“Save (保存)”,且用户单击按钮“Save”。 [1336] Assume that the user interface consists of a button "Save (save)", and the user clicks the button "Save". 在这种情况下,呈现控制器将接收到告知必须完成“Save”动作的请求。 In this case, the presentation controller must inform the received request completed "Save" operation. 呈现控制器将查找针对这个动作寄存的处理器并调动这个处理器。 The presentation controller will look for the processor registers this action and mobilize the processor. 这是最简单的可能出现的情况,且从这个情况,我们推断出查找操作中使用的键是与被按压下的按钮相关联的动作名称。 This is the case of the simplest possible, and from this, we infer lookup key used in the operation is associated with the action button is pressed under the name. 然而,这还不够,针对动作“Save”寄存的动作处理器将处理所有“Save”动作,而不管源按钮存在于哪一页面。 However, that was not enough, the action processor register for action "Save" will handle all "Save" action, regardless of the source button which is present in the page. 这意味着呈现控制器需要知道事件藉以发生的精确上下文。 This means that the presentation controller needs to know the exact context of the event so as to occur.

[1337] i.定义上下文 [1337] i. Context Definition

[1338] 实际上,任何用户接口都是系统中一个实体的可视化表示,且系统中的每一实体是一些类型的实例。 [1338] Indeed, any user interface system is a visual representation of the entity, and each entity in the system are examples of some type. 用户执行的动作(诸如,“Save”动作)可依据实体类型而以不同方式处理。 Action (such as, "Save" operation) performed by the user can be processed in different ways according to the type of entity. 这意味着页面显示的实体类型是上下文的一部分。 This means that the entity type display page is part of the context.

[1339] 另外,与任何页面的交互实际上是以下已知案例中的一个的特殊情况。 [1339] In addition, any interaction with the page is actually following known case of a special case.

[1340] Edit (编辑):用户创建新实体或更新已有实体的案例。 [1340] Edit (edit): the user to create a new entity or update existing case entity.

[1341] View (视图):用户检查已创建实体的案例。 [1341] View (View): Check user case entity created.

[1342] Search Input (搜索输入):在这个案例中,用户指定其藉以搜索实体的搜索标准。 [1342] Search Input (search input): In this case, users specify their search criteria so as to search the entity.

[1343] Search (搜索):在这个案例中,用户显示他/她找到的满足在搜索输入案例中指定的标准的实体。 [1343] Search (search): In this case, he displayed to the user entity meets the specified search input in case the standard / she finds.

[1344] 在上文给出的示例中,动作“Save”是所显示实体上执行的业务动作。 [1344] In the example given above, the operation of "Save" operation is performed on the business entity displayed. 存在用来导航所显示实体的其他类型的动作。 The presence of other types of entities used to navigate the operation of the display. 借助于这类动作,用户可查看与所显示实体相关的实体。 By means of such action, the user can view the displayed entity associated with the entity. 还存在可源自用户接口的其他类型的动作。 There are also other types of motion may be derived from a user interface. 这类动作的示例是修改一个组件时刷新页面或其组件内容的动作。 Examples of such action is to refresh the page contents or a component thereof a component modifying action.

[1345] 总的来说,可使用以下属性来定义上下文: [1345] In general, the following attributes may be used to define the context:

[1346] 用户名称。 [1346] user name.

[1347] 实体类型。 [1347] entity type.

[1348] 动作类型(可视化动作、技术动作、导航、刷新、轻量刷新)。 [1348] the type of action (operation visualization, technical operation, navigation, refresh, refresh lightweight).

[1349] 说明动作名称、导航角色或所修改组件(视动作类型而定)的参数。 [1349] the operation name, role or modified navigation components (depending on the type of operation) parameters.

[1350] ii.更多精确上下文 [1350] ii. More precisely context

[1351] 上述上下文是可能在一些情况下不充分的简单上下文。 [1351] The context may be insufficient in some cases a simple context. 一般来说,我们需要知道动作藉以执行的精确上下文。 In general, we need to know the exact context of the action so as to perform. 精确上下文是依据当前页面的简单上下文和调用方页面的精确上下文而定义。 Precise context is defined in terms of the precise context of simple context and caller page of the current page. 调用方页面是用户藉以访问当前页面的页面。 The caller page is a page which the user can access the current page.

[1352] 图50示出动作如何从给定上下文的工厂获取动作。 [1352] FIG. 50 shows how to obtain an operation from the operation of the plant for a given context.

[1353] h.超动作处理器/视图构建器 [1353] h. Super action processor / View Builder

[1354] 缺省情况下,呈现模块将针对最一般和熟悉的案例寄存基础动作和视图构建器。 Under [1354] By default, the presentation module will deposit base and view the action builder for the most general case and familiar. 举例来说,针对以下上下文: For example, for the following context:

[1355] 案例:Edit (编辑) [1355] Case: Edit (edit)

[1356] 实体类型:任何类型(例如,Composite Value)。 [1356] Entity Type: Any type (e.g., Composite Value).

[1357] 动作类型:Action。 [1357] Action Type: Action.

[1358] 参数:Save。 [1358] Parameters: Save.

[1359] 我们将找到调用方法“synchronize”的寄存的缺省动作处理器。 [1359] we will find call the method "synchronize" the registered default action processor. 假定一个请求具有以下稍有不同的上下文: Suppose a request context with the following slightly different:

[1360] 案例:Edit [1360] Case: Edit

[1361] 实体类型:Currency (货币)(Composite Value的子类)。 [1361] Entity Type: Currency (currency) (Composite Value subclass).

[1362] 动作类型:Action。 [1362] Action Type: Action.

[1363] 参数:Save 〇 [1363] Parameters: Save billion

[1364] 尽管上下文不同,但是,由于没有动作处理器寄存这种情况,因此呈现控制器应选择“Super Action Handler (超动作处理器)”,其是针对最一般情况寄存的处理器(例如,缺省动作处理器)。 [1364] Despite the different contexts, however, since there is no operation of the processor storage case, so the presentation controller should select "Super Action Handler (Super action processor)", which is the most general case for the storage of the processor (e.g., The default action processor).

[1365] i.动作处理器接口 [1365] i. Action processor interface

[1366] 系统中的每一动作处理器必须实施接口 [1366] Each operation of the processor system must implement the interface

Figure CN102656557BD00741

[1369] 这个接口具有4种方法,其中最重要的1种方法是executeAction (执行动作),且其角色是执行与这个动作相关的业务逻辑。 [1369] This interface has four methods, the most important method is to executeAction 1 (perform action), and whose role is to execute business logic associated with this action. 这个方法具有以下3个参数: This method has the following three parameters:

[1370] (I)Request (请求)。 [1370] (I) Request (request). 请求含有客户端发送任何数据。 Client sends a request containing any data. 这个数据包括目标页面或待开始的案例,以及影响业务逻辑的执行的附加参数。 This data includes additional parameters to perform the target page or the case to be started, and the impact of business logic. 这个对象的接口必须在呈现控制器中宣称。 Interface object must be declared in the presentation controller.

[1371] (2) Super Action Handler (超动作处理器)。 [1371] (2) Super Action Handler (Ultra processor operation). 开发人员时常需要扩展特殊案例的动作处理功能性。 Developers often need to extend the special case of motion processing functionality. 这意味着开发人员必须从他/她的动作处理器调用超动作处理器。 This means that developers must call the super-processor operation from his / her action processor. 在并不知道并扩展超动作处理器的实际类型的情况下,动作处理器的接口必须允许传递特殊对象(具有类似于动作处理器接口的接口),藉此可调用超动作处理器。 In the case of extended and do not know the actual type of operation over the processor, the processor interface operation must be allowed to pass a particular object (an interface similar to the operation of the processor interface), whereby the operation of the processor can be called over. 这样一来,开发人员就无需知道超动作处理器的实际类型,或如何定位超动作处理器。 As a result, developers do not need to know the actual type of super action processor, or how to locate super-action processor. 相同技术必须与视图构建器一起使用。 Technique must be used with the same view of the builder.

[1372] (3) Page Data (页面数据)。 [1372] (3) Page Data (data page). 明显的是,页面数据是输入到将处理用户请求的业务服务的输入。 Evident that the page data is input to the input processing operations and services requested by the user. 由于这个数据保留Page Data对象(其是目的地为所显示页面的会话空间)中, 那么应这个对象传递到动作处理器。 Since this data retention Page Data Objects (which is a destination for the session page space as shown), then the object should be passed to the action processor.

[1373] ⑷Target Information (目标信息)。 [1373] ⑷Target Information (target information). 在执行动作之后,呈现控制器将进行以下操作中的一个,且动作处理器将通过保持Target Information对象来负责告知程序控制器接下来做什么: After executing the action, the presentation controller will be one of the following operations, and the operation of the processor will be responsible for informing the program controller by keeping Target Information objects what to do next:

[1374] Calling a new page (调用新页面):在这种情况下,动作处理器必须在其结构中指定所调用页面的上下文(包括调用之后将执行的动作)、将传递到所调用页面的数据,以及从所调用页面返回之后将执行的动作。 [1374] Calling a new page (call the new page): In this case, the processor must specify the context of an operation called pages (including action to be performed after the call) in its structure, it is passed to the calling page data, as well as from the action after the call to return to the page will be executed.

[1375] Forwarding to a new page (转发到新页面):类似于前一情况,仅仅是所调用页面无法返回到调用方页面,且因此无需指定返回之后将执行动作。 [1375] Forwarding to a new page (forwarded to the new page): Similar to the previous case, just the calling page can not be returned to the caller page, and therefore will not need to specify the implementation of the action after the return.

[1376] Staying in the same page (停留在同一页面):这个操作允许执行另一动作而并不将控制传输到另一页面。 [1376] Staying in the same page (same page stays): This operation allows operation without performing another transfer control to another page. 在Target Information对象的简单上下文中查找这个动作类型和名称。 Find this action type and name in the context of Target Information simple object.

[1377] Returning to a caller page (返回调用方页面):动作处理器必须指定待返回到调用方页面的数据。 [1377] Returning to a caller page (Page returns to the caller): action processor must specify the data to be returned to the caller of the page.

[1378] None of the previous operations (非以上操作中的任何一个)。 [1378] None of the previous operations (no more than one non-operation).

[1379] 因此,Target Information对象必须含有以下属性: [1379] Accordingly, Target Information object must contain the following properties:

[1380] Navigation Type (导航类型):可以是Call (调用)、Forward (前进)、Stay (停留)、 Return (返回)或None (没有)。 [1380] Navigation Type (type of navigation): may be Call (call), Forward (Forward), Stay (stay), Return (return) or None (no).

[1381] Target Context (目标上下文):用于Navigation Type是Call或Forward的情况。 [1381] Target Context (target context): Navigation Type is used or Call Forward case.

[1382] Use Case Configuration (案例配置):将传递到所调用页面(举例来说,待检查的值)的配置。 [1382] Use Case Configuration (Case configuration): is passed to the called page (for example, the value to be examined) configuration.

[1383] The On-Return Action (返回动作):从所调用页面返回之后将执行的动作的名称。 [1383] The On-Return Action (return operation): The name of the action from the page after the return of the call will be performed.

[1384] The On-Return Action Type (返回动作类型):从所调用页面返回之后将执行的动作的类型。 [1384] The On-Return Action Type (returns to action type): type from the page after the call to return to perform the action.

[1385] 表1是Presentation (呈现)通用动作处理器ActionSave (动作保存)的示例。 [1385] Table 1 is an example of a generic action handler Presentation ActionSave (save operation) (the rendering).

[1386]表I: Presentation通用动作处理器ActionSave的;^例 [1386] TABLE I: Presentation of the general operation of the processor ActionSave; ^ Example

Figure CN102656557BD00761

Figure CN102656557BD00771

[1389] j.视图构建器接口 [1389] j. View Interface Builder

[1390] 通常,当页面调用另一页面时,所调用页面必须渲染在调用方页面内部。 [1390] Typically, when a page calls another page, the page must be rendered within the call the caller page. 为了允许这么抽象,视图构建器必须具有以下方法: To allow such abstract view of the builder must have the following methods:

[1391] build View(构建视图):呈现控制器将在调用调用方页面的视图构建器内嵌套调用页面的视图构建器。 [1391] build View (View Construction): nested calls to view the presentation controller is a page builder constructs the caller calling the page view. 以下是任何视图构建器的输入: The following are input builder Any View:

[1392] Page Data (页面数据):页面数据必须含有将由视图构建器可视化呈现的数据。 [1392] Page Data (page data): page data must contain data constructed by the view of the visual rendering device.

[1393] Render (渲染器):呈现端口提供的这个对象用来辅助呈现控制器渲染可视化用户接口。 [1393] Render (renderer): presenting the object provided by the port to assist visual presentation controller to render a user interface.

[1394] Request (请求):有时候,呈现控制器可以决定仅必须更新一些页面而无需渲染全部页面。 [1394] Request (request): Sometimes, the presentation controller may decide to only have to update some of the pages without rendering the entire page. 出于这个原因,视图构建器含有在这种情况下使用的以下方法很实用: For this reason, a method used in this case containing very practical view Builder:

[1395] updateKeys (更新键):updateKeys方法必须返回待更新的组件列表。 [1395] updateKeys (updated key): updateKeys method must return a list of components to be updated.

[1396] 这是视图构建器接口的示例。 [1396] This is a view of an example interface construct.

Figure CN102656557BD00772

[1398] k. Page Data (页面数据) [1398] k. Page Data (data page)

[1399] 如上文所提到的,页面数据是为每一显示页面或用户接口保留的会话空间。 [1399] As mentioned above, the page data for each page or display a user interface session space reserved. Page Data对象具有用来访问会话中的页面数据的标识符。 Page Data object has an identifier used to access the page data session. 这些标识符还用来将所渲染表单绑定到其对应的Page Data对象。 These identifiers are also rendered to bind to its corresponding form Page Data Objects. 然而,一旦定位Page Data对象,必须恢复页面的上下文,以使得呈现控制器可定位将在所找到的Page Data对象上操作的合适动作处理器。 However, once positioned Page Data Objects, page context must be restored, so that the present operation of the controller may be located a suitable processor operating on the objects found Page Data. 恢复上下文的最好方法是将其保持在Page Data对象本身内。 The best way is to restore the context retained in Page Data objects within itself.

[1400] 另外,因为页面彼此调用,且因为这些必须渲染在表示完整案例的同一帧中,所以让每一Page Data对象保持对的调用方页面所对应的Page Data对象的引用很实用。 [1400] In addition, because the page call each other, and because they must be rendered in the same frame represents the complete case of, so let each Page Data Object to keep the caller on the page corresponding to the Page Data object reference very practical.

[1401] 这样一来,Page Data对象不再需要保持其完整的上下文。 [1401] Thus, Page Data objects are no longer needed to maintain its full context. 相反,Page Data对象仅需要保持简单上下文(例如,案例名称、类名称、动作类型和参数)。 Instead, Page Data Objects need only be kept simple context (e.g., case name, class name, operation type, and parameters). 上下文的其余信息可在调用方页面的Data对象中找至Ij。 The remaining context information can be found in the Data object to Ij caller page. 实际上,如果我们从Context对象衍生接口,Page Data对象可视为这个接口的实施例。 In fact, if we derived the interface from the Context object, Page Data objects can be seen as the embodiment of the interface.

[1402] 1.呈现控制器如何工作 [1402] 1. showing how the controller work

[1403] 当呈现控制器接收到请求时,这个请求将发起新案例,或是已发起案例的部分。 [1403] When the rendering controller receives a request, the request will initiate a new case, or part of the case has been initiated. 在前一情况下,请求必须含有待发起案例的简单上下文。 In the former case, the request must contain the context of a simple case to be initiated. 在后一情况下,请求必须提供对目标Page Data对象的引用和关于待执行动作的信息。 In the latter case, the request must be provided to the target object Page Data and information regarding the action to be performed by reference. 当发起新案例时,呈现控制器必须创建Page Data对象,并通过将上下文信息复制到其来初始化。 Upon initiation of new cases, the presentation controller Page Data objects must be created, and by copying its context information to be initialized. 对于已发起案例的情况,呈现控制器仅必须将关于待执行动作的信息复制到Page Data对象。 In the case has been initiated cases, the presentation controller only must copy the information on the action to be performed to Page Data Objects. 这实际上将修改Page Date对象的上下文。 This will actually modify the context Page Date object.

[1404] 在两种情况下,呈现控制器必须定位并调用适合Action Handler对象。 [1404] In both cases, the presentation controller must locate and call for Action Handler object. Action Handler对象将返回Target Information对象,其确定呈现控制器下一步应做什么。 Action Handler object will return to Target Information object whose presentation controller to determine what should be done next. 动作处理器可决定调用新案例,且因此必须建构新Page Date对象并将其链接到调用案例的Page Date对象,且必须调用新Act ion Handler。 Action processor may decide to call a new case, and therefore must construct new Page Date object and link it to the case of Page Date object is invoked, and must call the new Act ion Handler. 这意味着呈现控制器将进入当最后被调用的Action Handler决定不应再执行任何动作时中断的循环。 This means that when the interrupt controller will appear when the last one called Action Handler decided not to take any action cycle.

[1405] 2.⑶I (图形用户接口) [1405] 2.⑶I (Graphical User Interface)

[1406] 所生成的应用程序自动提供基于web的用户接口。 [1406] generated application automatically provides a web-based user interface. 自动化UI (用户接口)生成过程将元数据(包括类和过程)用作可实施为HTML页面或本地屏幕库的输入和输出可视元素。 Automation UI (User Interface) meta-data generation process (including classes and methods) may be implemented as an HTML page or the local input and the output screen library visual elements. 所生成的页面是创建新对象、搜索已创建对象和编辑或删除对象的基本案例。 The resulting page is to create a new object, search for objects and create a base case edit or delete an object. Palmyra框架自动生成用来创建、编辑和搜索Entity类的类型的屏幕页面,所述类型在目标应用程序的UML 模型中定义。 Palmyra frame generated automatically used to create, edit and search for the type of Entity class screen page, of the type defined in the UML model of the target application. 通过使用生成屏幕的缺省布局的算法,依据实体类的字段和关系来生成屏幕内容。 By using the default layout algorithm to generate screen, fields, and relationships based on the entity class to generate screen contents. 算法基于类的结构来生成布局,然后可稍后视需要使用视图格式工具来重新分配可视元素。 Generating a layout structure based on the algorithm class, you may then be used later as needed to redistribute view formats tool visual elements. 可稍后使用View格式配置工具来手动修改表示字段和关系的可视元素(文本框、组合框、列表、链接)的使用及其在屏幕上的分布。 Configuration tool can manually modify the visual indication element field and relationships (text boxes, combo boxes, lists, linked) and its distribution on the screen using the format View later. 可在运行使用View格式配置工具来修改用户接口。 You may be configured to modify the user interface tool View format operation.

[1407]自动生成的屏幕页面含有用来启动Save或Delete或Search这类动作的一组预定的按钮。 [1407] automatically generated screen page containing a predetermined set of buttons used to start or Delete or Save Search such actions. 过程相关的动作(过程图中定义)也在目标应用程序中自动生成。 Process-related actions (defined during the drawing) are generated automatically in the target application.

[1408] 当使用案例转换图定义目标应用程序中的案例时,还可向页面添加特定动作。 [1408] When a case is defined transition diagram in case the target application, certain actions may be added to the page.

[1409] 当添加特定动作时,手动编写动作相关的处理,并使用UML生成工具集成到应用程序中去。 [1409] When adding the specific operation, the manual operation process related to the preparation and use of UML generation tool to be integrated into the application.

[1410] 当并无预定的所要的处理或依据特定需要而需要增强时,需要手动编写的代码。 [1410] When the predetermined process is not to be or needs to be enhanced depending on the particular needs, the need to write code manually.

[1411] a · Dashboard (仪表板) [1411] a · Dashboard (dashboard)

[1412] 同样作为图形用户接口的部分,Palmyra还向用户提供Dashboard工具。 [1412] Also as part of a graphical user interface, Palmyra Dashboard tool is also provided to the user. 仪表板这个工具有助于每一应用程序用户知道他的“To do (任务)”列表,且这个工具还提供关于他任务量的说明。 Dashboard This tool can help each application the user knows his "To do (task)" list, and this tool also provides a description of the amount of his task. 仪表板列出用户必须执行的任务。 Dashboard lists the tasks that must be performed. 依据每一用户的特性,每一用户有他自己的任务列表。 According to the characteristics of each user, each user has his own list of tasks. 服务提供配置接口,以便允许超用户向用户分配特性和条件。 Service providing an interface for dispensing characteristics and conditions that allow the user to the user. 这个工具还保证了所有任务都能被分配出去。 The tool also ensures that all tasks can be assigned out.

[1413] 仪表板是一组节点,且每一节点含有子节点。 [1413] The dashboard is a set of nodes, and each node comprising a child node. 每一节点与实体相关。 Each node associated with the entity. 实体依据仪表板的管理员所定义的条件而显示。 Administrators entity in accordance with the conditions defined in the instrument panel and display. 任务类表对应于每一实体。 Task class table corresponding to each entity. 任务是通向使得这个任务能够完成的产品案例的链接。 This task is the way to make a link to complete the task of product cases. 运行时执行Dashboard的配置。 Dashboard configuration run-time execution.

[1414] 3.输入和输出装置 [1414] 3. The input and output means

[1415] a. I/O装置 [1415] a. I / O device

[1416] 输入和输出装置是机器与其他系统通信所基于的途径。 [1416] Input and output device is a way to communicate with other machine systems is based. 框架定义输入和输出装置应遵循的模板。 Should follow the template framework defines input and output devices. 框架还定义支持FTP/HTTP/Queues/EmaiIs via SMTP这类普通协议、打印机和传真机(作为输出装置)的一些输入和输出装置。 Framework also defines support FTP / HTTP / Queues / via SMTP EmaiIs such common protocols, printer and fax number of the input and output device (an output device).

[1417] 使用消息交换来进行通信。 [1417] communicating using a message exchange. 输入装置接收由其他系统生成且将被目标应用程序读取的消息,而输出装置发送目标应用程序生成的消息。 Input means for receiving a message generated by another system and be read target application and the output device transmits a message generated by the target application.

[1418] 应独立于所用输入装置的通信端口和类型而对到达系统的消息进行解析,以便将信息传输到针对目标应用程序以适合方式表示的数据中。 [1418] should be independent of the arrival and parsing the message system and a communication port type input device to be used for transmitting information to the target application in the data expressed in a suitable manner. 这通过两个独立模块,也就是驱动器和映射来完成。 This is accomplished by two separate modules, i.e. drives, and mapped.

[1419] 系统生成的消息还取决于映射和驱动器,以便将数据从内部表示变换成中间形式,且最终变换成消息。 [1419] message generated by the system also depends on the map and the drive to the data representation is converted into an intermediate form, and ultimately into the interior from the message.

[1420] b.Mapping (映身才) [1420] b.Mapping (enantiomer body only)

[1421] Mapping模块是基于配置的格式变换器。 [1421] Mapping module is configured based on the format converter. 配置定义源类型和目标类型(目标应用程序的元数据中定义的两个实体类的类型),且定义如何将源类型的字段值变换成目标类型的字段值。 Configuration define the source and target types (two types of target entity class metadata defined in the application), and defines how the field values ​​into a source type field value of the target type. 使用框架所定义的表达式语言来编写变换公式。 Expression language to write the framework defined by the transformation formula. 表达式使得进行算术运算或调用源元素的字段值上的预定义方法成为可能。 Expressions such methods predefined field value arithmetic element or the call source becomes possible. 配置还使得向映射指令添加条件成为可能, 因此仅执行满足条件的指令。 Was added to the configuration also makes it possible to map instruction condition, so the instruction execution condition is satisfied only.

[1422] 在应用程序部署之后完成映射配置,且配置存储在特定的数据表中。 [1422] After the mapping application deployment configuration, and the configuration is stored in a particular data table.

[1423] 映射模块原则上用于输入和输出操作中,其中数据从内部系统表示转化成驱动器所使用的中间表示,反之亦然。 [1423] The mapping module for inputting and outputting the principle of operation on which the data from the internal representation system is converted into the intermediate representation used by the drive, and vice versa.

[1424] c.驱动器 [1424] c. Drive

[1425] 驱动器用于从特定格式进行读取或写入成特定格式。 [1425] The drive for reading from or writing to a particular format specific format. 在输入装置中,来自外部系统的消息呈XMUXLS或SWIFT这类预定义格式。 In the input device, the message from the external system such as a predefined XMUXLS or SWIFT format. 将这些消息解析并转化成驱动器所定义的中间结构。 These messages are parsed and converted to an intermediate drive structure defined above. 在输出装置中,生成消息以便与其他系统进行通信。 In the output device, generate a message to communicate with other systems. 所生成的消息也具有预定义格式。 The generated message also having a predefined format.

[1426] 可针对每一格式或格式类型创建驱动器。 [1426] drive creates for each format type or format. 框架定义驱动器的模板。 Framework defined template drive. 框架还针对XML、固定文本和快速(swift)消息这类的一些格式定义一组驱动器。 Some frame format further defines a set of drivers for such messages XML, and fast fixed text (swift).

[1427] —些驱动器需要配置,尤其是当格式比较灵活时。 [1427] - Some drivers need to be configured, particularly when a more flexible format. 举例来说,XML是一种格式,但其也是一种语言,因此运行时以特定方案定义标记和元素的结构,且配置存储在特定的数据表中。 For example, XML is a format, but it is also a language, the runtime marks define structural elements and particular embodiment, and arranged in a particular stored data table.

[1428] C.业务层 [1428] C. business layer

[1429] 1.基本结构 [1429] 1. Basic Structure

[1430] 定义框架中的元数据的模板称作基本结构。 [1430] template definition frame metadata is referred to the basic structure. 基本结构被视为Palmyra框架的核心, 因为所有Palmyra服务都要使用基本结构。 The basic structure is regarded as the core framework of Palmyra, Palmyra because all the services have to use the basic structure. ,不论是借助所生成代码的元数据定义,还是使用约束模型的动态定义的元数据定义,还是借助于编写代码的元数据定义,所有元数据定义都是基于基本结构所定义的模板。 , Whether the code generated by the metadata definition, or dynamic model defining constraints metadata definition, or by means of a coding metadata definition, all metadata template definitions are based on the basic structure defined above. 借助于使用预定的模板,所有实施类型继承完整性检查、序列化、去序列化的功能性和具有自动计算字段的可能性。 By means of using a predetermined template types inherit all embodiments integrity checking, serialization, deserialization function and possibility of having an automatic calculation field.

[1431] 基本结构定义框架中所有实体的语法和基本行为。 [1431] in all its grammatical basic behavior and the basic structure definition entities frame. 基本结构是向Java中的基本类添加新特性的一组接口和类。 The basic structure is a set of classes and interfaces to add new features to the base class in Java. 基本结构由用于应用程序开发的类构成。 The basic structure consists of classes for application development. 这些类是Java原语和Java Collection (Java集合)框架的包装。 These classes are wrappers for Java primitives and Java Collection (Java collections) framework.

[1432] a.基本结构的包 [1432] a. The basic structure of the package

[1433] 主包com · palmyra · arch · bas icStru · ct含有若干子包。 [1433] the main package com · palmyra · arch · bas icStru · ct contains a number of sub-packets. 最重要的是: the most important is:

[1434] com. palmyra · arch · bas icStruct · data:这个子包含有框架中的简单和结构化数据类。 [1434] com palmyra · arch · bas icStruct · data:. This promoter comprises simple and structured data in a frame class.

[1435] com · palmyra · arch · bas i cStruct · metadata:这个子包含有描述符、元数据类、守护程序类表、完整性检查器和域管理器。 [1435] com · palmyra · arch · bas i cStruct · metadata: This sub-descriptor includes metadata categories, daemon class table, integrity checking, and the domain manager.

[1436] com. palmyra · arch · bas icStruct · exception:这个子包含有框架地址定制的异常。 . [1436] com palmyra · arch · bas icStruct · exception: This sub-frame containing the address of the custom exception. 图33示出这个包提供的异常。 33 shows the abnormality packages.

[1437] com.pabnyra·arch·basicStruct · init:这个子包含有负责在启动服务器时装载所有Palmyra 类的主类General Initializer, java。 [1437] com.pabnyra · arch · basicStruct · init: This sub-category contains the main responsible for loading all Palmyra General Initializer class when starting the server, java.

[1438] com.palmyra.arch·basicStruct · interfaces:这个子包含有连接到框架中不同模块的接口的定义,诸如,配置、安全性、序列、跟踪、持久性、翻译器、生命周期和文件管理器。 [1438] com.palmyra.arch · basicStruct · interfaces: This sub contains a definition of the interface connected to the frame in different modules, such as configuration, security, sequence, track, persistence, translator, life cycle and document management device. 这个子包也含有每一接口的缺省实施例。 The sub-packet also contains the default interface of each embodiment.

[1439] com·palmyra· arch ·basicStruct · io:这个子包定义可定义、配置和寄存驱动器的接口列表。 [1439] com · palmyra · arch · basicStruct · io: This definition defines sub-packet, and a configuration register drives a list of interfaces.

[1440] b·包com·palmyra·arch·bas icStruct·data [1440] b · package com · palmyra · arch · bas icStruct · data

[1441] 这个包含有框架中的基本建构。 [1441] This construct contains the basic framework. 这个包中的类是在Palmyra框架下构建应用程序所用的主数据块。 This package class is constructed main data block used by the application in the framework of Palmyra. 这些类实施框架中的最高抽象等级的接口Value。 These classes embodiment highest level of abstraction framework interface Value. 这个接口定义所有框架对象的通用行为。 This interface defines the common behavior of all objects in the frame. 接口Value规定所有实施类将Cloneable (可复制)Xomparable (可比较) 和Serializable (可序列化)。 Interface Class Value would require all embodiments the Cloneable (reproducible) Xomparable (comparable) and the Serializable (serializable). 另外,实施类可由适当格式化的人类可读字符串和XML文档来建构,且实施类可保存成类似字符串和XML。 Further, embodiments may be appropriately formatted based human-readable strings and construction of XML documents, and the embodiment can be stored as a string-like type and XML. 每一值与可用来检验这个值的定义和本质的类型Classe的元数据描述符类相关联。 Each value can be used to test Classe type definition and the nature of the value of the metadata descriptor associated with the class. 表13不出包com. palmyra · arch · basicStruct · data的接口Value中定义的主要方法。 Table 13 no packet COM. The main method of interfaces Value palmyra · arch · basicStruct · data is defined.

[1442] 表13:包的接口Value中定义的主要方法 [1442] Table 13: Value main method defined in the interface of the package

Figure CN102656557BD00811

[1444] c .BasicStruct (基本结构)主角色 [1444] c .BasicStruct (basic configuration) the main role

[1445] bas ic Struc t 由S imp I e Va I ue (简单值)、Co 11 ecti onVa I ue (集合值)和CompositcValue (组合值)构成。 [1445] bas ic Struc t a S imp I e Va I ue (simple value), Co 11 ecti onVa I ue (set value) and CompositcValue (combined value) configuration.

[1446] 这些类型中的每一类要求特殊的规程供使用。 [1446] Each class specific requirements of these types of procedures for use. 然而,在使用所有提到的类型方面存在以下通用规则: However, the following general rules in the use of all types mentioned:

[1447] 每一Value对象具有与类型Class相关联的Classe实例,这个实例用来描述这个值且由方法getClasse提供。 [1447] each Value object instance having Classe Class associated with the type, this example is used to describe the value provided by the process and getClasse. 图32示出Classe的组合。 32 shows a combination of Classe.

[1448] 每一Value对象具有缺省建构器,字符串参数建构器和方法setValue。 [1448] each Value object has a default builder, and a method of constructing string parameter setValue. 这个方法提取字符串并依据这个字符串建构对象的内容。 This method is based on the extraction of strings and string construction of the object content.

[1449] 每一Value可提供呈可读取字符串格式的内容。 [1449] Each Value may be provided as a string format readable content.

[1450] —般来说,借助对类Value进行类的细分、仓Il建新Classe实例并将其与Value的新类相关联来更改Value的约束。 [1450] - In general, the aid to be subdivided class Value class, Il to build a new warehouse and a new class Classe instance associated with the change of Value of Value constraints.

[1451] 当对任何类Value进行类的细分时,用户应总是创建描述这个值的Classe的适合实例、逾越方法getClasse,且明确宣称缺省建构器。 [1451] When segmenting classes for any class Value, the user should always create a description Classe Suitable examples of this value, beyond the method getClasse, and expressly declared default builder.

[1452] 接口Value中定义的主要方法是:用于检查内容、检查完整性和检查规则的方法; 用于得到有关对象元数据信息、getClasse和getField的方法;用于读取并保存呈不同格式的对象(1'68(1、¥1';^6、861:\^1116和1:〇31:1';[1^)的方法;以及命名方法。图30示出包com · palmyra · arch · bas i cStruct · data的接口Value 中定义的主要方法。 [1452] interface is primarily the method is defined in Value: for checking the contents, integrity checking, and checking rule; a method for obtaining information about the object metadata, getClasse and getField; a method for reading and saving the form in different formats object (1'68 (1, ¥ 1 '; ^ 6,861: \ ^ 1116 and 1: 〇31: 1 & apos;. [1 ^); and FIG. 30 illustrates a method of naming package com · palmyra · the main method i Value cStruct · data interfaces defined in the arch · bas.

[1453] d. Value Interface (值接口) [1453] d. Value Interface (Interface value)

[1454] 接口Value具有3种实施类。 [1454] connector embodiment has three kinds of class Value. 类SimpleValue是Java原语或包装类的对应部分,或者其可以仅仅是原子或简单值。 SimpleValue Java class is primitive or corresponding portions of the packaging, or it may simply be a simple value or atom. 类Col IectionValue是同类项的集合。 Col IectionValue class is a collection of similar items. 类CompositeValue是Java类的对应部分,或者其可以仅仅是具有不同类型的项的容器。 CompositeValue class is a Java class corresponding portion, or it may simply be a container of different types of items.

[1455] e. SimpleValue [1455] e. SimpleValue

[M50] 类SimpleValue是架构中单个或原子值的抽象。 [The M50] SimpleValue class is abstract architecture atoms or a single value. 这意味着这个类的实例逻辑上含有一个值。 This means that the logic of the instance of the class contains a value. 这个类的子类是Java s imp I e数据类型的包装。 This class is a subclass of Java s imp I e data type of package.

[1457] 图36表示SimpleValue类型及其子类的类图。 [1457] FIG. 36 shows a class diagram SimpleValue types and subclasses.

[1458] i .BooleanValue (布尔值) [1458] i .BooleanValue (Boolean)

[1459] 这个子类是包装Java布尔原语。 [1459] This sub-class is a wrapper Java boolean primitive. Boo IeanValue不具有特殊约束或规则。 Boo IeanValue no special constraints or rules. 表14示出BooleanValue的示例列表。 Table 14 shows a list of examples of BooleanValue. 表14中创建了2个Bool eanValue实例。 Table 14 created two Bool eanValue instance. 所创建的第二个BooleanValue的内容依据字符串参数设定。 Content created in accordance with the second BooleanValue set string parameters.

[1460] 表14:布尔值的实施 [1460] Table 14: boolean embodiment

[1461] BooleanValue bvl=new BooleanValue (); [1461] BooleanValue bvl = new BooleanValue ();

[1462] BooleanValue bv2 = new BooleanValue (^true7O ; [1462] BooleanValue bv2 = new BooleanValue (^ true7O;

[1463] bvl. setValue (true); . [1463] bvl setValue (true);

[1464] System.out.println(bvl.getValue()); [1464] System.out.println (bvl.getValue ());

[1465] System.out.println (bv2); [1465] System.out.println (bv2);

[1466] System.out.println (bv2.getClasse ()); [1466] System.out.println (bv2.getClasse ());

[1467] ii · StringValue (字符串值) [1467] ii · StringValue (a string value)

[1468] 这个类是Java String类的包装。 [1468] This class is a wrapper Java String class. 图34B示出类StringValue的示例。 FIG 34B illustrates an example of the class StringValue. StringValue 向Java String对象添加3个约束:内容字符串的最大长度、内容必须应用的平屏蔽和可能有效值的列表。 StringValue added three constraints to Java String objects: the contents of a string of maximum length, flat screen applications and content must be possible list of valid values. 这些约束保存在与StringValue对象相关联的StringCls元数据实例中,且缺省StringCls实例不具有这些约束的值。 These constraints StringCls stored in the metadata associated with the instance of the object associated StringValue, and the examples do not have a default value of StringCls these constraints. 为了更改这些约束中的一个或更多个,程序员必须对StringValue进行类的细分并修改与新类相关联的StringCls实例中的这些约束,如表15所示: To change these constraints one or more, the programmer must be broken to StringValue class and instance modify these constraints associated with the new class StringCls, as shown in Table 15:

[1469] 表15: StringValue的约束的示例 Example StringValue constraints: [1469] TABLE 15

Figure CN102656557BD00831

[1471] 这个代码定义具有最大长度4的新StringValue (字符串值)。 [1471] This code defines the StringValue having a new (String value) of the maximum length of 4.

[1472] 我们可从与StringValue相关联的StringCls得到最大长度和其他约束D [1472] We obtained the maximum length and other constraints from StringCls D associated with StringValue

[1473] MyStringValue sv = new MyStringValueO ; [1473] MyStringValue sv = new MyStringValueO;

[1474] Integer max= ((StringCls) sv.getClasse ()) .getMax (); [1474] Integer max = ((StringCls) sv.getClasse ()) .getMax ();

[1475] System.out .println (max) ;//打印输出:4 [1475] System.out .println (max); // printout: 4

[1476] iii .DateValue (日期值) [1476] iii .DateValue (date value)

[1477] 类DateValue是Java Date类的包装。 [1477] DateValue is a wrapper class Java Date class. DateValue具有2个约束:最小和最大日期。 DateValue having two constraints: the minimum and maximum date. 表16示出如何从Date (日期)或String (字符串)参数创建DateValue对象的示例D Table 16 shows how to create objects from DateValue Date (date) or String (String) Parameter Example D

[1478] 表16:如何从Date或String参数创建DateValue对象的示例 Examples of how to create an object from DateValue Date or String parameters: [1478] Table 16

[1479] DateValue dvl=new DateValueO ; [1479] DateValue dvl = new DateValueO;

[1480] DateValue dv2 = new DateValue ("22/1/1977"); [1480] DateValue dv2 = new DateValue ( "22/1/1977");

[1481] dvl. setValue (new Date ()); . [1481] dvl setValue (new Date ());

[1482] System.out .println (dvl .getValue ()); [1482] System.out .println (dvl .getValue ());

[1483] System.out .println (dv2); [1483] System.out .println (dv2);

[1484] iv. NumberValue (数值) [1484] iv. NumberValue (value)

[1485] 抽象类NumberValue是框架中所有数值类的超类。 [1485] abstract class NumberValue framework is the superclass of all classes of values. 这个值的元数据类是类NumberCl sD这个类对NumberValue的内容定义2个约束:最小和最大值D另外,和在类Java Number中一样,这个类提供用于在多个数值类之间进行转化的方法helper DNumberValue的子类是IntegerValue (整数值)、LongValue (长整型值)、FloatValue (浮点值)和DoubleValue (双精度值)。 Metadata class is a class value NumberCl sD This class defines the contents of NumberValue two constraints: the minimum and maximum value D Further, as in Java Number class, this class provides for conversion between the plurality of class values subclass is the method of helper DNumberValue, IntegerValue (integer), LongValue (long integer), FloatValue (floating point value) and DoubleValue (double value). 表17示出如何从Double、Integer或String参数创建不同类型的类Numb er Va I ue 的;^ 例D Table 17 shows how to create a different type from Double, Integer String parameter or class of Numb er Va I ue; ^ Example D

[1486] 表17:如何从Double (双精度值)、Integer (整数值)或String (字符串)参数创建不同类型的类Numb er Va I ue的示例 [1486] Table 17: how the Double (double value), Integer (integer value) or String (String) Parameter Examples of different types of classes to create Numb er Va I ue of

[1487] NumberValue nvl =new IntegerValue (); [1487] NumberValue nvl = new IntegerValue ();

[1488] NumberValue nv2 = NumberValue .newlnstance (new Double (88.421)); [1488] NumberValue nv2 = NumberValue .newlnstance (new Double (88.421));

[1489] IntegerValue nv3 = new IntegerValue (nv2.aslnteger ()); [1489] IntegerValue nv3 = new IntegerValue (nv2.aslnteger ());

[1490] IntegerValue nv4 = new Integervalue {〃1977"); [1490] IntegerValue nv4 = new Integervalue {〃1977 ");

[1491] System .out .print In (nvl} ;//打印输出:0 [1491] System .out .print In (nvl}; // printout: 0

[1492] System .out .print In (nv2} ;//打印输出:88.421 [1492] System .out .print In (nv2}; // printout: 88.421

[1493] System .out .print In (nv3} ;//打印输出:88 [1493] System .out .print In (nv3}; // printout: 88

[1494] System .out .print In (nv4} ;//打印输出:1977 [1494] System .out .print In (nv4}; // printout: 1977

[1495] v.DynamicStringValueClass (动态字符串值类) [1495] v.DynamicStringValueClass (dynamic value string class)

[1496] DynamicStringValue (动态字符串值)是可在运行时更改描述符类StringCls的3七1':[1^\^11^。 [1496] DynamicStringValue (Dynamic String value) is changed may be described at runtime seven operator class StringCls 3 1 ': [1 ^ \ ^ 11 ^. 类07紐111;!_03奸;!_1^\^11^的实例的3奸;!_1^(^18实例可在建构器或其生命周期的任一部分中设定D表18示出DynamicStringValueClass的示例D Class 07 New York 111;! _ 03 rape;! _ 1 ^ \ ^ 11 ^ Examples 3 rape;! _ 1 ^ (^ 18 examples set D table in any part of the builder or a life cycle 18 shown DynamicStringValueClass of example D

[1497] 表18:从格式化字符串创建ListValue (列表值)并向其添加项的示例 [1497] Table 18: Create a sample listValue (value list) and add items from the format string

Figure CN102656557BD00841

[1499] f .CollectionValue (集合值) [1499] f .CollectionValue (set value)

[1500] 这是框架中所有容器或数据结构的超类。 [1500] This is the superclass of all frames or data structures and containers. 图3 1示出包com · palmyra · arch .basicStruct. data 中实施的类Co llect ion 〇Co IlectionValue 的子类可以是具体实施方案或向现有具体实施方案添加特定特性的过滤器类。 FIG 31 shows a packet com · palmyra · arch .basicStruct. Data in the embodiment of class Co llect ion 〇Co IlectionValue subclass may be added to a specific embodiment or specific embodiments of the particular characteristics of the conventional filter class. Col IectionValue的子类包括:listValue、基于Java List的集合实施方案;MapValue(表19),基于Java Map的集合实施方案(表20) ;ConditionalCollection,基于特定条件过滤具体实施方案的内容的集合;以及PageByPageCoIIection,向其他实施方案添加分页行为的集合(表21)。 Col IectionValue subclass include: listValue, based on a set of embodiments of the Java List of; MapValue (Table 19), based on the set embodiment Java Map (Table 20); ConditionalCollection, based on the set specific conditions filtering content specific embodiments; and PageByPageCoIIection, add a page to the behavior of other embodiments collection (table 21). 类Co I IectionValue是Java中Co llect ion概念的框架对应部分D Co IlectionValue是具有类型为Value的项的包装。 Co I IectionValue class in Java is a conceptual framework Co llect ion corresponding portion D Co IlectionValue having a Value of type packaging items.

[1501]表19:MapValue Class的;^例 [1501] Table 19: MapValue Class; and ^ Example

Figure CN102656557BD00851

[1503]表20:类CoIlectionClass Value的;^例 [1503] Table 20: Class of CoIlectionClass Value; ^ Example

Figure CN102656557BD00852

[1505]另外,我们定义了条件 [1505] In addition, we define conditions

Figure CN102656557BD00861

[1507] 最后,我们将条件对象应用到丢弃ConditionalCollection (有条件集合)实例的ListValue (列表值)实例, [1507] Finally, we will apply the object to discard condition ConditionalCollection (set conditions) Examples of listValue (value list) of example,

Figure CN102656557BD00862

[1509]表21: PageByPagelterator 的;^ 例 [1509] Table 21: PageByPagelterator; a ^ Example

Figure CN102656557BD00863

[1511] 类Co I IectionCl s 的实例与每一类Co I IectionValue相关联D Co IlectionCl s强加给Col IectionValue的唯一约束是这个项的类型D The only constraint Examples of Co I IectionCl s [1511] classes and each class is associated Co I IectionValue D Co IlectionCl s Col IectionValue is imposed on the type of item D

[1512] 表22示出ReferencingClass (参考类)的示例D [1512] Table 22 shows ReferencingClass (reference class) Example D

[1513] 表22: ReferencingClass 的;^ 例 [1513] Table 22: ReferencingClass; a ^ Example

Figure CN102656557BD00871

[1515] 为了远程引用这个类,我们应创建扩展类Reference (参考)的新类,且其具有与这个类相同的名称。 [1515] In order to remotely refer to this class, we should create extension classes Reference (reference) new class, and the class that has the same name.

[1516] package remote; [1516] package remote;

[1517] public class NewStringValue extends Reference [1517] public class NewStringValue extends Reference

[1518] {} [1518] {}

[1519] g.CompositeValue (组合值) [1519] g.CompositeValue (combined value)

[1520] CompositeValue是含有预定的字段定义的数据结构字段的定义存在于与每一Compos it eValue对象相关联的Compo si teCl s实例中D这类似于由数字构成的类的概念D CompositeValue对象将其字段的定义存储在其元数据类中。 [1520] CompositeValue defined data structure containing predetermined field defines the fields present in each Compos it with the concept of the object D CompositeValue Compo si eValue teCl s associated with the object which is similar to example D class consisting of numbers which field definition metadata stored in its class.

[1521] CompositeValue的子类是:DynamicValue (动态值),其是可在运行时更改字段的CompositeValue;ID,其是由LongValue主键和StringValue代码成员构成的CompositeValue〇 [1521] CompositeValue subclass of: DynamicValue (dynamic values), which is the field change at runtime CompositeValue; ID, which is constituted by CompositeValue〇 LongValue primary key and the code member StringValue

[1522] 图34Atj^ 出类CompositeValue 的子类。 [1522] FIG 34Atj ^ CompositeValue subclass of the class. 类CompositeValue 扩展类CollectionValue,因此所有针对CoIlectionValue有效的运算针对CompositeValue也有效。 Class CompositeValue extended by CollectionValue, and therefore all effective against CoIlectionValue operation is also effective for CompositeValue. 不同于CollectionValue,用户无法设定类CompositeCls中并未定义的键的值,仅所宣称的字段具有值。 Unlike CollectionValue, the user can not set value is not defined in the class CompositeCls keys, only the claims of field has a value. 类Composi teValue在框架中的角色与类在Java中的角色相同类CompositeValue是由预定的字段构成的结构。 Composi teValue role category in the frame in Java classes with the same class of characters is CompositeValue structure consisting of a predetermined field.

[1523] 类Compos iteValue引用定义其的元数据类CompositeCl sD CompositeCl s又含有元素类型为Field的集合字段。 [1523] Class Compos iteValue reference definition metadata class CompositeCl sD CompositeCl s thereof also contains elements of type Field set field. 每一字段又与特定Classe类型相关联。 Each field in turn associated with a particular type of Classe.

[1524] 类Compos iteValue定义用来操纵其字段值的一组方法。 [1524] Compos iteValue class defines a set of methods to manipulate their field values. 最重要的方法如下所示: The most important methods are as follows:

[1525] get (String key):返回给定键的值。 [1525] get (String key): Returns the value of the given key. 键可以是simple (a)或composite (abc) D Key can be simple (a) or composite (abc) D

[1526] getSimple (String key):返回给定simple键的值D [1526] getSimple (String key): Returns the value D given simple bond

[1527] set (String key,Value value):设定带有给定值的字段的值。 [1527] set (String key, Value value): with a set value of a field value. 键可以是simple或composite。 Key can be simple or composite. 类Compos iteValue提供这个方法的许多重载版本D Compos iteValue class provides overloaded versions of this method many D

[1528] setSimple (String key ,Value value):设定带有给定值的simple 字段的值D [1528] setSimple (String key, Value value): D simple field setting value with a given value

[1529] remove (String key):从存储器去除键的值字段可以是simple或composite〇[1530] removeSimple (String key):从存储器去除simple键的值D [1529] remove (String key): removing the key from the value of the field memory may be simple or composite〇 [1530] removeSimple (String key): the value of D is removed from the memory key simple

[1531] isAssigned (String key):如果键在存储器中具有值,那么返回true。 [1531] isAssigned (String key): if the key has a value in memory, then returns true. 键可以是s impIe或compos i te 〇 S impIe key may be a square or a compos i te

[1532] isAssignedSimple (String key):如果simple键在存储器中具有值,那么返回true 〇 [1532] isAssignedSimple (String key): If a simple key, a value in memory, then returns true square

[Ί533] CompositeValue中定义的字段可呈两种状态中的一种D [Ί533] CompositeValue defined fields may be in a D-two states

[1534] Assigned (已分配):如果字段在存储器中具有现有值,那么字段视为已分配。 [1534] Assigned (assigned): If an existing field has a value in memory, then the field is considered to have been assigned. 在调用两个方法set或get之后,每一字段视为已分配。 After calling two methods set or get, be deemed to have assigned each field.

[1535] Not assignecK未分配):如果字段在存储器中不具有值,那么字段视为未分配。 [1535] Not assignecK unassigned): If the field does not have a value in memory, then the field is considered unallocated.

[1536] 在对字段执行去除操作之后,字段具有状态“not assigned”。 [1536] After the removal operation performed on the field, the status field has a "not assigned".

[Ί537] 图35示出创建并定义类CompositeValue的字段的示例 Example [Ί537] FIG. 35 illustrates the definition of the class and creating a field CompositeValue

[1538] i .DynamicValue (动态值) [1538] i .DynamicValue (dynamic value)

[1539] DynamicValue是与非静态Classe实例相关联的Compos iteValue。 [1539] DynamicValue Classe non-static instance is associated Compos iteValue. 因此,这个类实例可在运行时进行更新,且可在运行时向这个DynamicValue对象添加字段。 Thus, this instance of the class can be updated at run-time, and may add a field to the DynamicValue objects at run time. 表23示出使用这个类的示例。 Table 23 shows an example of the use of this class.

[1540] 表23:DynamicValueClass (动态值类)的示例 [1540] Table 23: Example DynamicValueClass (dynamic value class)

[1541] 首先,我们定义类DynamicValue, [1541] First, we define the class DynamicValue,

Figure CN102656557BD00881

[1543] 然后,我们创建Employee的实例,且我们在运行时向其添加字段, [1543] Then, we create an instance of Employee, and we have to add fields at runtime,

Figure CN102656557BD00882

[1546] ii · ID class (ID类) [1546] ii · ID class (ID-based)

[1547] ID类表示针对特定AbstractValue实例的标识符或主键JD扩展CompositeValue, 且由三个字段idPk、idCode和idType构成D每一八匕8奸3(^\^1116实例提供唯一的10实例,卩1^ 由序列服务提供并维护,code由字段AbstractValue在运行时评估,且type呈现type实例的名称D在表24中,code是由具有其order InCode特性组的字段组合构成的StringValue D我们从代码列表可以看出,这个类AbstractValue中定义的前3个字段的orderInCode特性设为整数值,而剩余字段的orderInCode特性设为缺省值nul 1。因此,在这个代码的输出中,可按所述次序打印指定字段的值。 [1547] ID JD extended CompositeValue class represents an identifier for a particular key or primary AbstractValue example, and consists of three fields idPk, idCode and D each constituted idType eight dagger rape 8 3 (^ \ ^ 1116 provides a unique example of example 10, Jie 1 ^ provided and maintained by serial service, code evaluated by field AbstractValue at runtime, and the type presented Title D type examples in table 24, code is StringValue D composed of a combination of fields with its order InCode characteristics set us from code listings can be seen, the first three fields orderInCode characteristic of this class AbstractValue defined set to an integer value, and remaining fields orderInCode characteristic set to the default nul 1. Thus, the output of this code, according to the said print order specified field.

[1548] 表24: ID类代码的示例 ID exemplary class code: [1548] Table 24

Figure CN102656557BD00891

[1551] h.Keys class (Key类) [1551] h.Keys class (Key class)

[1552] Key类是定义可存在于类Co IlectionValue或CompositeVa Iue中的可能字段的名称的Map结构。 [1552] Key Map class is defined in the name of the class structure may be present or may Co IlectionValue field in the CompositeVa Iue. “可能”意味着,键表示CompositeValue中定义的字段,但未必是现有字段。 "Likely" mean, represents a key field CompositeValue defined, but not necessarily an existing field. 只要装载了对象的类,字段自身的定义存在于可从与Value的类名称相关联的Classe实例中获得的Field对象中,但运行时这个值可具有键,且因此指定字段的值可能不具有键。 As long as the loading of the class of the object, a field definition itself present in Field objects available from Classe instance of class name Value of associated but the value of the operating time may have a bond, and thus the value of the specified field may not have key.

[1553] 类Keys的结构是Map,因此Map中的每一条目具有键和值。 Structure [1553] Map class Keys are, therefore each entry in the Map with keys and values. 键是含有字段名称的String对象,且值是含有这个字段的可能键或在这个字段不具有键的情况下为空值的Keys 对象。 String object containing key is a field name, and the value is null comprising Keys object may be a case where the key field or this field does not have the key.

[1554] 框架中的3种主要类型可如下返回Keys实例: [1554] three main types of frame may be returned following Example Keys:

[1555] SimpleValue:始终返回null (空值)。 [1555] SimpleValue: always return null (null).

[1556] CollectionValue:返回具有一个条目的Keys实例,所述条目中将作为键,这意味着Co IlectionValue对象可提取任何字段名称,且这个条目的值是这个Col IectionValue 的项的Keys结构。 [1556] CollectionValue: Keys returned instance has one entry, the entry will be used as the key, which means that Co IlectionValue field names of any object can be extracted, and that the value entry is the structure of the Col IectionValue Keys of items.

[1557] CompositeValue:返回含有与这个CompositeValue 实例相关联的CompositeCls 对象中所定义的所有字段的Keys实例。 [1557] CompositeValue: Keys to return to this example contains all fields CompositeValue CompositeCls objects associated with the instance as defined.

[1558] 框架使得提取与以下一组特性相关的键列表成为可能:owner (所有者)declared (宣称)、mandatory (强制)、assigned (已分配)、relation type (关系类型)、code (代码)、 calculated (计算)等。 [1558] extracting the frame such that a list of keys associated with the following set of characteristics becomes possible: owner (owner) declared (declared), mandatory (mandatory), assigned (allocated), relation type (relationship type), code (code) , calculated (calculated) and the like.

[1559] Classe类中定义了这些方法的这组特性。 [1559] Classe class defines the set of properties of these methods.

[1560] i .DeepMap class (DeepMap类) [1560] i .DeepMap class (DeepMap class)

[1561] 这个abstract (抽象)类是接口Value的第一实施方案。 [1561] The abstract (Abstract) class is the interface to the first embodiment of Value. 其逾越Map的缺省行为,并实施带有深度命名访问的新对象。 Beyond its default behavior Map and implement new objects with depth naming visit. 所有CollectionValue实施方案得益于这个类,并接受composite对象名称作为键D All embodiments benefit CollectionValue this class, the object name and accepted as a composite key D

[1562] j .AbstractValue (抽象值) [1562] j .AbstractValue (abstract value)

[1563] AbstractValue是应用程序中所有持久性对象的超接口DAbstractValue含有用于保存和获取来自任何存储服务的AbstractValue的缺省或技术字段技术字段有pk、type (类型)、accessPoint (接入点)、creationDate (创建日期)、creatorUserId (创建者用户Id)、updateDate (更新日期)、updatorUserId (更新者用户Id) D [1563] AbstractValue is over all application interfaces DAbstractValue containing persistent object storing and retrieving a default AbstractValue technical field or fields from any storage technology and services have pk, type (Type), accessPoint (access point) , creationDate (creation date), creatorUserId (creator user Id), updateDate (updated), updatorUserId (updated by the user Id) D

[1564] AbstractValue具有与持久性相关的3种方法: [1564] AbstractValue has three methods associated with persistence:

[1565] Synchronize (同步):告知持久性服务保存这个AbstractValue对象D [1565] Synchronize (synchronous): Tells the persistence service to save this AbstractValue D objects

[1566] Delete (删除):告知持久性服务删除这个AbstractValue对象D [1566] Delete (Delete): Tells the persistence service to delete this AbstractValue D objects

[1567] IazyGet (String key):从应用程序存储获取字段值。 [1567] IazyGet (String key): acquire from the application storage field value.

[1568] k. ^com. palmyra. arch. bas icStruct. metadata [1568] k. ^ Com. Palmyra. Arch. Bas icStruct. Metadata

[1569] 这个包含有4个主要部分:框架中所有元素的元数据描述(简单值、组合值、集合值和控制器)、守护程序(IfAddecUIfNeeded和IfRemoved)、域管理器和完整性检查器。 [1569] This comprises four main parts: a frame metadata of all elements described in (a simple value, a combination of values, set values, and a controller), daemon (IfAddecUIfNeeded and IfRemoved), the domain manager and integrity checker.

[1570] i.Meta Data classes [1570] i.Meta Data classes

[1571] 保持框架类的元数据描述的主类是Classe。 [1571] holding metadata described framework classes of the main class is Classe. 框架中的每一对象与Classe对象相关联。 Each object in the frame is associated with the object Classe. 这个实例保持关于Value的不同字段和Value自身特性的信息。 This example holds information about different fields and Value Value of the property itself. 这个类的主要方法如下: The main methods of this class are as follows:

[1572] Value newlnstance ():创建值的新实例。 [1572] Value newlnstance (): Creates a new instance of value.

[1573] Classe forName (String className):获取值的元数据描述D [1573] Classe forName (String className): Get metadata values ​​described D

[1574] Classe getSuperClasse ():返回超类的元数据描述D [1574] Classe getSuperClasse (): returns the metadata description superclass D

[1575] ListgetAllImplementedlnterfaces ():返回所有布植接口的名称D [1575] ListgetAllImplementedlnterfaces (): returns the names of all implant interfaces D

[1576] Keys getSubClasses ():返回所有子类的名称D [1576] Keys getSubClasses (): returns the names of all subclasses D

[1577] Classe具有许多子类。 [1577] Classe having a plurality of subclasses. 主要子类如下: Major subclasses as follows:

[1578] SimpleCls:是保持SimpIe值的类的元数据定义的根类。 [1578] SimpleCls: maintaining metadata definition class value SimpIe root class. 其主子类如下:与类型Boo IeanValue实例相关的Boo IeanCl s、与类型Boo IeanValue实例相关的BytesCl s、与类型DateValue 实例的DateCl s、与类型NumberValue 实例相关的NumberCl s、与类型StringValue 实例相关的StringClB以及与类型TimeZoneValue实例相关的TimeZoneCl sD His master classes are as follows: The examples relating to the type Boo IeanValue Boo IeanCl s, associated with the instance type Boo IeanValue BytesCl s, examples of the type of DateValue DateCl s, associated with the instance type NumberValue NumberCl s, associated with the instance type StringValue StringClB and TimeZoneCl sD instance associated with type TimeZoneValue

[Ί579] Col IectionCls:是保持Col Iect ion值的类的元数据定义的根类。 [Ί579] Col IectionCls: maintaining metadata definition of the class values ​​Col Iect ion root class. 这个类使得获得集合的项类型成为可能。 This class allows to obtain a set of item types possible.

[1580] CompositeCls:是保持框架中类Composite (实体和接口)的元数据定义的根类。 [1580] CompositeCls: Composite class is holding frame (entities and interfaces) metadata definitions root class. 其主要方法如下: The main methods are as follows:

[1581] Field getField (String name):返回字段的元数据描述。 [1581] Field getField (String name): Returns the field of metadata is described.

[1582] List getCodeFields ():返回标记为代码的字段列表。 [1582] List getCodeFields (): Returns the field labeled list of codes.

[1583] Keys getKeys ():返回所有字段的名称。 [1583] Keys getKeys (): Returns the names of all fields. CompositeCls定义这个方法的许多重载版本。 CompositeCls define many overloaded versions of this method.

[1584] Keys getDeclatedKeys ():仅返回所宣称的键。 [1584] Keys getDeclatedKeys (): returns only the claimed key.

[1585] Keys getOverriddenKeys:仅返回所逾越的键。 [1585] Keys getOverriddenKeys: Returns the key only insurmountable. 注意:所有键=所宣称的键+所逾越的键。 Note: All key = claimed by the crossed keys + key.

[1586] CompositeCls 具有许多子类: [1586] CompositeCls has many subclasses:

[1587] AVCls :与扩展CompositeValue和实施AbstractValue 的每一类或扩展AbstractValue 的每一接口相关。 [1587] AVCls: CompositeValue with each class extension or extensions and AbstractValue embodiment each of the interfaces associated AbstractValue.

[1588] ConstraintableCls:与UML模型中Stereotype 为“cons ttaintable” 的类相关; [1588] ConstraintableCls: Stereotype UML model related to "cons ttaintable" class;

[1589] InterfaceCls:与扩展接口Value 的每一接口相关。 [1589] InterfaceCls: an interface associated with each expansion interface of Value.

[1590] DynamicCls:与动态值的类相关。 [1590] DynamicCls: dynamic values ​​associated with the class.

[1591] ConstraintsCls:是DynamicCls的子类,与UML模型中标记为“constraints” 的类相关。 [1591] ConstraintsCls: DynamicCls subclass is labeled with the UML model to "constraints" of the relevant class.

[1592] 类Fi eld是元数据描述的基本对象。 [1592] Fi eld class is the basic object metadata described. 每一CompositeCls实例保持Fie Id实例的组。 Each instance remains set Fie Id CompositeCls instance. 每一CompositeCls实例描述带有另一类的属性或惯性。 Each example describes a property or inertial CompositeCls with another class. 使用如下一组特性来定义字段: name、Classe (等效于type)、最小和最大多样性、集合类型(映射、组或列表)、关系类型(Simple、compos it ion、aggregation 或association)、owner (所有者)、navigable (可导航)、transient (暂态)等。 Use the following set of characteristics define the fields: name, Classe (equivalent to type), the minimum and maximum diversity collection types (mapped, or list group), relationship types (Simple, compos it ion, aggregation or association), owner (owner), navigable (navigable), transient (transient) and so on.

[1593] 类Classe-Fi eld用来描述带有其字段的值。 [1593] Class Classe-Fi eld values ​​with which to describe the field. 然而,使用类Controller、Method和Patameter来描述控制器和方法的元数据。 However, using the class Controller, Method and Patameter described metadata controller and method.

[1594] Controller是描述用户定义的服务(或控制器)的元数据。 [1594] Controller description of the service is user-defined (or controller) metadata. Controller提供方法来访问名称、别名、超控制器、所宣称方法、所有方法等这类控制器特性。 Controller provides a way to access the names, aliases, super controller, controller features such methods, all methods are declared.

[Ί595] 类0〇]11:1'〇1161'还使得使用方法116¥1118七311〇6()来创建控制器实例和经由方法forName ()和forAlias ()来获取控制器元数据描述成为可能。 [Ί595] Class 0〇] 11: 1'〇1161 'also makes use of seven 311〇6 116 ¥ 1118 () to create an instance of the controller and the controller acquires the metadata via the forName method () and forAlias ​​() described as may.

[1596] Method是描述控制器中动作(或方法)的类。 [1596] Method controller operation is described (or method) of the class. Method提供方法来访问名称、返回类型和参数这类方法特性。 Method for providing access method name, return type and parameter characteristics such methods.

[1597] Parameter是描述方法中参数的类。 [1597] Parameter is a class method described in the parameters. Parameter提供方法来访问名称和类型这类方法特性。 Parameter provides a way to access the names and types of properties such method.

[1598] ii .Deamons (守护程序) [1598] ii .Deamons (daemon)

[1599] 可使用以下3种方法来管理Composite值实例中字段的值:get (获取)、set (设置) 和remove (去除)。 [1599] Composite control value may be the value of the field in the following examples of three methods: get (Get), set (set) and remove (removal). 上文所提及的每一方法的调用可影响其他字段的值或父Composite值实例的完整性。 Each call method mentioned above may affect the integrity of the value or values ​​of the instance of the parent Composite other fields. 守护程序是在后台运行的监听器,且在每一基本方法(get、set或remove)之后进行调用,以便执行所要处理。 Daemon is running in the background of the listener, and the call after each basic methods (get, set, or remove), in order to perform the desired processing. 守护程序分成以下4个部分: Daemon divided into the following four parts:

[1600] If Needed Deamons:在对字段执行get操作后调用这些守护程序。 [1600] If Needed Deamons: After performing the operation on the field get to call these daemons. 每一字段具有一个If Need Deamon,其负责获取与字段的以下特性相关的值:calculated (已计算)、asp (应用程序服务供应商)、f〇reign pk (外pk)、foreign code (外代码)、transient (暂态)、 navigable relation (可导航关系)、composition (组合)'association (关联)、pk、code (代码)等。 Each field has a If Need Deamon, which is responsible for obtaining value associated with the fields of the following characteristics: calculated (calculated), asp (application service provider), f〇reign pk (outside pk), foreign code (code outside ), transient (transient), navigable relation (relation navigable), composition (combination) 'association (association), pk, code (Code) and the like. 举例来说,为Simple字段寄存IfSimpleFieldlsNeeded,且如果父值是新的,则返回字段缺省值,否则的话,则试图使用惰性过程来获取键的值。 For example, for the Simple Storage field IfSimpleFieldlsNeeded, and if the parent value is a new field default value is returned, otherwise, is trying to use inert process to get the value of the bond.

[1601] Default Value Deamons:当系统试图向字段分配缺省值时调用这些守护程序。 [1601] Default Value Deamons: These daemons called when the system attempts to assign default values ​​to the fields. 每一字段具有一个缺省If Need Deamon,其负责获取与字段的以下特性相关的缺省值:pk、 type (类型)、calculated(已计算)、has a default formula tagged value (具有缺省公式标记值)、has an initial value (具有初始值)、sequence (序列)等。 Each field has a default If Need Deamon, which is responsible for obtaining the default values ​​associated with the fields of the following characteristics: pk, type (Type), calculated (calculated), has a default formula tagged value (having a default tag formula values), has an initial value (an initial value), sequence (sequence) and the like. 举例来说,针对stereo type为“sequence” 的Simp Ie字段寄存If Defau It Sequence IsNeedecU 且返回字段序列器的下一值。 For example, for the stereo type Simp Ie fields as "sequence" registers If Defau It Sequence IsNeedecU value of the field and returns the next sequencer.

[1602] If Added Deamons:在设定字段的值之后调用这些守护程序。 [1602] If Added Deamons: calling the daemons after setting the value field. 每一字段具有许多If Added Deamons,其负责维护字段值的完整性或完整Composit值实例的完整性。 Each field has a number If Added Deamons, which is responsible for maintaining the integrity or the integrity of the full value instance Composit field values. 服务器启动时就计算If Added Deamons的列表。 If Added Deamons calculated on a list of server startup. 就字段的以下特性进行计算:calculation base (计算基础)、code base (代码基础)、pk、code (代码)、type (类型)、foreign pk (外pk)、 foreign code (外代码)'transient (暂态)'collection relation (集合关系)、index field (索引字段)mandatory (强制)等。 Is calculated on the following characteristic fields: calculation base (calculated basis), code base (code base), pk, code (codes), type (Type), foreign pk (outer pk), foreign code (outer codes) 'transient ( transient) 'collection relation (set relationship), index field (field index) mandatory (mandatory) or the like. 举例来说,如果我们更改代码字段的值,那么系统必须重新计算技术字段代码的值。 For example, if we change the value of the code field, the system must be re-value technology field code calculations. 这由守护程序If CodeBaseIsAdded来执行。 This is performed by the daemon If CodeBaseIsAdded.

[1603] If Removed Deamons:在对字段执行去除操作之前调用这些守护程序。 [1603] If Removed Deamons: calling the daemons before performing the removal operation of the field. 每一字段具有许多If Removed Deamons。 Each field has a number If Removed Deamons. 这些监听器就字段的以下特性被寄存:calculation base (计算基础)、f〇reign pk (外pk)、foreign code (外代码)或immutable(不可变)(非可去除字段)等。 The following properties sniffer field is registered: calculation base (basic calculation), f〇reign pk (outer pk), foreign code (outer code) or the immutable (invariable) (non-removable field) and the like. 举例来说,针对参与计算公式的字段寄存IfCalculationBaseIsRemoved,并去除所计算字段的值。 For example, for participating in the calculation formula storage field IfCalculationBaseIsRemoved, and removing the calculated value field.

[1604] iii .Domain Managers (±或管理器) [1604] iii .Domain Managers (± or manager)

[1605] 域管理器是保持与字段相关的以下信息的类:possible valued可能值)、 visible (可见)、read only (只读)、calculation base (计算基石出)、min multipcity (最小多样性)和max multiplicity (最大多样性)等。 [1605] The domain manager to maintain the following information fields related classes: possible valued possible values), visible (visible), read only (read-only), calculation base (the cornerstone calculated), min multipcity (minimum diversity) and max multiplicity (maximum diversity) and so on.

[1606] 添加域管理机制使得通过使用适配器设计模式在运行时定制字段的特性成为可能。 [1606] Add the domain management system makes custom fields by using the adapter design pattern at runtime features possible.

[1607] 如果开发人员需要可编程地定义所提到特性中的一个,那么应定义一个类,这个类扩展DomainManagerAdapter、逾越所要求方法并使用接口Initializer将这个类寄存为静态块中所需字段的域管理器。 [1607] If the developer needs to define a programmable characteristics mentioned, then should define a class that extend DomainManagerAdapter, beyond the use of the claimed methods and interfaces required fields Initializer this class static storage block domain Manager.

[1608] 框架向服务器启动时计算的每一字段分配缺省DomainManager。 [1608] Each field of the frame is calculated when the server starts assigned default DomainManager.

[1609] iv. Integrity Checker (完整性检查器) [1609] iv. Integrity Checker (Integrity Checker)

[1610] 完整性检查器是负责验证字段值的完整性(正确性)的类。 [1610] integrity checker is responsible for validating the integrity of the class (correctness) field values. 所有完整性检查器实施方法CheckerFieIdIntegrify ()的接口FieIdIntegritychecker〇 All integrity checker implemented method CheckerFieIdIntegrify () interface FieIdIntegritychecker〇

[1611] 每一字段可具有许多完整性检查器。 [1611] Each field may have a number of integrity checker. 所寄存的完整性检查器用来当接口Value中定义的方法check Integrity ()被调用时验证字段内容的完整性。 The registered integrity checker to verify the integrity of the field when the content is called the interface methods defined Value check Integrity ().

[1612] SimpleValue及其子类中提供的方法checklntegrity 〇的实施例确保所包括值(值必须遵循min value (最小值)、max value (最大值)、the possible values (可能值)等这类所定义约束)的有效性。 [1612] Example embodiments checklntegrity square of its subclasses SimpleValue provided to ensure that comprises (value must follow the min value (minimum value), max value (maximum value), the possible values ​​(possible values) and the like such as define constraints) effectiveness.

[1613] CompositeValue中提供的方法checklntegrity 〇确保以下每一字段的完整性: multiplicity ranges (多样性范围)、value change in case of frozen field (冻结字段情况下的值修改)等。 [1613] The method provided checklntegrity square CompositeValue ensure the integrity of each of the following fields: multiplicity ranges (range of diversity), value change in case of frozen field (frozen value field where modifications) and the like.

[1614] CollectionValue中提供的方法checklntegrity ()确保集合中所有所包括值的完整性。 [1614] The method provided checklntegrity CollectionValue () to ensure the integrity of all of the set values ​​included.

[1615] Palmyra框架提供另一数据检查机制:检查规则。 [1615] Palmyra frame check mechanism providing another data: inspection rule. 可使用Rules (规则)机制来实施有关Composite值实例的业务规则。 Business rules can be implemented using the value of the instance Composite Rules (rule) mechanism. 开发人员应定义实施接口Rule的类和定义方法verify ()。 Developers should embodiment defined classes and interfaces define methods Rule verify (). 当业务语法检查未被验证时,开发人员应丢弃类型RuleException的异常。 When business grammar checker is not verified, the developer should be discarded abnormal type of RuleException.

[1616] I. ^com. palmyra. arch. basicStruct. exception [1616] I. ^ com. Palmyra. Arch. BasicStruct. Exception

[1617] 这个包含有框架定制异常。 [1617] This framework includes custom exception. 图33示出这个包提供的异常。 33 shows the abnormality packages. 主要异常如下: The main anomalies are as follows:

[1618] DataException (数据异常):这个异常是运行时间异常,其是数据操纵期间丢弃的异常的超类。 [1618] DataException (abnormal data): This is a run-time exception exception, which is discarded during data manipulation exception superclass.

[1619] IntegrityException (完整性异常):完整性被侵犯时丢弃。 [1619] IntegrityException (Exception Integrity): discarded integrity is violated.

[1620] KeyNotFoundException (键未找到异常):非定义键被请求时丢弃。 [1620] KeyNotFoundException (key no abnormality found): discarding non-defined key is requested.

[1621] PalmyralllegalFormatException (Palmyra非法格式异常):用户试图从未格式化字符串创建值时丢弃。 [1621] PalmyralllegalFormatException (Palmyra exception illegal format): When the user tries to never discard create formatted string value.

[1622] RuleException (规则异常):业务规则未被验证时丢弃。 [1622] RuleException (Rule exception): business rules is not verified discarded.

[1623] ValueNotFoundException (值未找到异常):系统无法从与错误外pk或外码相关的存储获取实体时丢弃。 [1623] (not found abnormal value) ValueNotFoundException: discarded from the system can not obtain an entity associated with an outer or external error codes stored pk.

[1624] ProcessException (过程异常):用来封装业务过程中丢弃的非Palmyra异常的运行异常。 [1624] ProcessException (exception process): used to encapsulate the non-discarded traffic during abnormal operation Palmyra abnormality.

[1625] PalmyraClassNotFoundException (Palmyra类未找到异常):用户试图提取应用程序中未定义类的元数据定义时丢弃。 [1625] PalmyraClassNotFoundException (Palmyra class no abnormality found): discard the user attempts to extract the application metadata undefined class definitions.

[1626] ImmutableFieldException (不可被字段异常):用户试图去除不可变字段(pk、 updateDate、updatorUserId)时丢弃。 [1626] ImmutableFieldException (fields are not abnormal): the user attempts to remove non-variable fields (pk, updateDate, updatorUserId) discarding.

[1627] m. "Scorn.pahnyra.arch.basicStruct. init [1627] m. "Scorn.pahnyra.arch.basicStruct. Init

[1628] 这个包含有主类Generallnitializer. java,其负责服务器启动时装载所有Palmyra类。 [1628] This contains the main class Generallnitializer. Java, all loaded classes Palmyra starts when the server is responsible. 这个类含有称作IoadAlIClasses ()的方法,其负责以下: This class contains a method called IoadAlIClasses (), which is responsible for the following:

[1629] 装载允许寄存所有Classe实例的存储器中的所有Palmyra实例。 [1629] Storage load enable all instances Palmyra Classe all instances in memory.

[1630] 执行应用程序中的所有静态块。 [1630] The application execution all static blocks. 这些块可用来寄存每一组件驱动器的实施例。 These blocks can be used to register each of the embodiments of the drive assembly.

[1631] 这个包含有含有接口: Initializer和Palmyralnitializer。 [1631] This comprises an interface comprising: Initializer and Palmyralnitializer. 接口Initializer可由非Palmyra类(业务类)实施,且接口PalmyraInitializer可由Palmyra类排他地实施。 Initializer class interfaces by non Palmyra (traffic class) embodiment, and the interface may be PalmyraInitializer Palmyra based exclusively embodiment. 当开发人员需要在服务器启动时执行特定处理时,诸如,寄存动作处理器、装载特性文件或填入高速缓存,开发人员应实施所提到接口中的一个,并定义带有以下签名public static boolean initialize的方法initialize。 When the developer needs to perform a specific process when the server starts, such as the operation of the processor registers, load profile or a cache fill, a developer should embodiment mentioned interface, and define with the following signature public static boolean the method initialize initialize.

[1632] 2.Expression (表达式) [1632] 2.Expression (expression)

[1633] 表达式定义应用程序业务的一些simple部分。 [1633] expression defines some simple application business section.

[1634] 表达式用于计算和缺省公式、业务规则、映射过程、生命周期设计等。 [1634] and the default expression is used to calculate formulas, business rules, the mapping process, life cycle design.

[1635] 表达式允许解析并评估用户定义的表达式(a = l,b>20,alias.f ())。 [1635] Evaluation and analytical expressions allow the expression (a = l, b> 20, alias.f ()) of user-defined.

[1636] 表达式可为算术表达式(a+Ι)、比较表达式(KlO)、逻辑表达式(c&amp;d I e)等D [1636] Expression may be arithmetic expression (a + Ι), comparison expression (KlO), logical expression (c & amp; d I e) like D

[1637] 在表达式管理的过程中,有两个子过程需要区分:Parsing (解析)和Evaluation (评估)D [1637] In the process of expression managed, there are two sub-processes need to be distinguished: Parsing (analysis), and Evaluation (Evaluation) D

[1638] Parsing是表达式编译的过程,其生成评估表达式所用的结构。 [1638] Parsing is the process of expression compiler, which generates estimated expression used in the structure. 可使用以下两种方法中的一种来解析表达式: Analytical expressions may be used in one of two ways:

[1639] Expression.parse (String exp):执行语法检查D [1639] Expression.parse (String exp): syntax check D

[1640] Expression.parse (String exp,Classe cls):执行语法和语义检查D [1640] Expression.parse (String exp, Classe cls): A syntax and semantics check D

[1641] Evaluation过程目的在于获取表达式最终值D [1641] Evaluation process object is to obtain the final expression value D

[1642] 所生成结构的主要概念有Constant (常数)、Variable (变量)、0peration (运算)和Function (函数)。 [1642] The main concept of the structure are generated Constant (constant), Variable (variable), 0peration (calculation) and Function (function).

[1643] a.Constant (常数) [1643] a.Constant (constant)

[1644] Cons tant表示常数值D [1644] Cons tant represents a constant value D

[1645] 从头开始定义评估结果。 [1645] Evaluation results of scratch defined.

[1646] Constant可具有不同类型(数字、日期、字符串等) [1646] Constant may be of different types (number, date, string, etc.)

[1647] 常数的语法依据以下类型而变: [1647] Syntax becomes constant based on the following types:

[1648] Number (数字):1.2;45200L;5.32E8 [1648] Number (number): 1.2; 45200L; 5.32E8

[1649] String (字符串):"constant value” [1649] String (String): "constant value"

[1650] Date (日期):,24/03/2006b' [1650] Date (date) :, 24/03 / 2006b '

[1651] Boolean (布尔值):true;false [1651] Boolean (Boolean): true; false

[1652] Null value (空值):null [1652] Null value (null value): null

[1653] b.Varible (变量) [1653] b.Varible (variable)

[1654] 变量通常表示Value字段(例如,仙1^、&amp;、131233&amp;11^丨6等)。 [1654] Variable Value field generally indicated (e.g., cents 1 ^, & amp;, 131233 & amp; 11 ^ 6 Shu, etc.). 变量是值由评估过程获取的字面。 Variable is a value obtained by the evaluation process literally.

[1655] 根据评估过程中使用的Value获取变量评估结果。 [1655] The evaluation result acquisition variable Value used in the evaluation process.

[1656] 变量用于定义Operation (运算)和Function (函数)D [1656] Operation for defining a variable (operation) and Function (function) D

[1657] c · Operation (运算) [1657] c · Operation (operation)

[1658] 运算时带有以下3项的表达式:Operandl (运算对象I)、opera tor (运算符)和0perand2 (运算对象2) D [1658] 3 with the following expression when calculation: Operandl (operands I), opera tor (operator) and 0perand2 (operand 2) D

[1659] Operandl和0perand2可以是变量或复杂表达式D [1659] Operandl and 0perand2 complex expression can be a variable or D

[1660] 以下是5组运算: [1660] The following set of expressions are 5:

[1661] Arithmetic (算术): +、-、*、/ [1661] Arithmetic (Arithmetic): +, -, *, /

[1662] Logical (逻辑):! [1662] Logical (logical) :! (not (非))、&amp; (and (与))、I (or (或)) (Not (non)), & amp; (and (and)), I (or (or))

[1663] Comparison (比车交):>、> =、=、! [1663] Comparison (ratio of the cross car):>,> =, =,! = =、〈 = = <

[1664] Assignment := [1664] Assignment: =

[1665] Delimiter (定界符):;(用于生命周期中的动作) [1665] Delimiter (Delimiter):; (for operation in the life cycle)

[1666] d.Function (函数) [1666] d.Function (Function)

[1667] 函数表达式可分解成2个部分:函数名称和参数。 [1667] function expression decomposed into two parts: the function name and arguments.

[1668] 函数表达式的语法是alias · functionName (parameterl,parameter2 ···)(别名· 函数名称(参数1,参数2···))。 Syntax [1668] function expression is alias · functionName (parameterl, parameter2 ···) (alias · function name (parameter 1, parameter 2 ???)).

[1669] 参数可以是变量或复杂表达式。 [1669] parameter can be a variable or complex expression.

[1670] 可独立评估参数,然后用评估结果来调用函数。 [1670] Evaluation parameters independently, and then the evaluation results to the calling function.

[1671] 函数表达式的评估结果是函数调用结果。 Assessment [1671] function expression is a function call result.

[1672] i · Service (月艮务) [1672] i · Service (Burgundy month service)

[1673] 目标应用程序是可部署于分布式环境中的面向服务的系统。 [1673] the target application is a system that can be deployed in a distributed environment, service-oriented. 分布式平台由应用程序藉以部署的许多个经配置的应用程序服务器形成。 Distributed by the application platform so as to deploy many application servers are configured to form.

[1674] 服务是可在本地或远端调用的一组函数。 [1674] is a set of functions and services can be called in a local or remote. 服务还可以同步或异步模式调用。 Services can also be synchronous or asynchronous mode call. 服务涉及使用独立于其实际物理位置的名称。 Services involving the use of its name independent of the actual physical location. Palmyra中的Service Pattern (服务模式)使用一个外观BIB来提供同步服务(称作Facade),以及一个消息驱动式bean EJB来提供异步服务(称作AsynchronousFacade)。 Palmyra of Service Pattern (service mode) using a look BIB to provide synchronization services (referred Facade), and a message driven bean EJB providing asynchronous services (referred AsynchronousFacade). 因此,用户可得益于所有可用J2EE特征。 Accordingly, the user can benefit from all available features J2EE.

[1675] Synchronous Call (同步调用):同步服务调用包括: [1675] Synchronous Call (synchronous call): synchronous service calls include:

[1676] 构建待执行消息 [1676] Construction of a message to be executed

[1677] 定义调用属性 [1677] defined call properties

[1678] 执行消息 [1678] execution message

[1679] 示例: [1679] Example:

[1680] //准备待执行消息 [1680] // message ready to be executed

[1681] ServiceMessage message = [1681] ServiceMessage message =

[1682] BSFactory. getServiceDriver () . createServiceMessage (X. class .getName (),〃actionB〃); . [1682] BSFactory getServiceDriver () createServiceMessage (X. class .getName (), 〃actionB〃).;

[1683] //将参数添加到消息 [1683] // add parameters to the message

[1684] message·setParameter (〃paramO〃,new StringValue (^first parameter")); [1684] message · setParameter (〃paramO〃, new StringValue (^ first parameter "));

[1685] //在构建消息之后,其准备好被执行 [1685] // After building the message, it is ready to be executed

[1686] BSFactory.getServiceDricer () . callService (message); . [1686] BSFactory.getServiceDricer () callService (message);

[1687] 对于每一控制器,Palmyra生成调用方类(ServiceNameCaller),其提供同步调用每一动作所需要步骤的实施例。 [1687] For each controller, Palmyra generated caller class (ServiceNameCaller), which provides each Example synchronous call operation required steps.

[1688] 示例:我们可调用我们在前一示例的一行代码中调用的服务。 [1688] Example: We call our service may invoke a single line of code in the previous example.

[1689] XCaller.actionB (new StringValue ("first Parameter")); [1689] XCaller.actionB (new StringValue ( "first Parameter"));

[1690] Asynchronous Call (异步调用):为了异步调用服务,我们仅需要向方法callService 〇添加InvocationAttribute (调用属性)。 [1690] Asynchronous Call (asynchronous call): In order to service an asynchronous call, we need only to add InvocationAttribute method callService billion (call property). 这个InvocationAttribute使得我们能够确定调用类型,Synchronous (同步)或Asynchronous (异步)(缺省调用类型是Synchronous)〇 This InvocationAttribute enables us to determine the type of call, Synchronous (sync) or Asynchronous (Asynchronous) (the default call type is Synchronous) billion

[1691] 以下是一个示例: [1691] The following is an example:

[1692] ServiceMessage message = [1692] ServiceMessage message =

[1693] BSFactory. getServiceDriver () . createServiceMessage (X. class .getName (),〃actionB〃); . [1693] BSFactory getServiceDriver () createServiceMessage (X. class .getName (), 〃actionB〃).;

[1694] //添加参数 [1694] // add parameters

[1695] message. setParameter (rrParamOrr ?new StringValue (7/first parameter77}); .? [1695] message setParameter (rrParamOrr new StringValue (7 / first parameter77});

[1696] InvocationAttributes att = BSFactory . getServiceDriver () .createlnvocationAttributes (); . [1696] InvocationAttributes att = BSFactory getServiceDriver () .createlnvocationAttributes ();

[1697] //该消息将被异步执行 [1697] // This message is to be executed asynchronously

[1698] att.setAsynchronous (true); [1698] att.setAsynchronous (true);

[1699] BSFactory.getServiceDriver () . callService (message,att); . [1699] BSFactory.getServiceDriver () callService (message, att);

[1700] 使用UML类图来定义服务。 [1700] using UML class diagrams define the service. 这些服务由称作控制器的类来表示。 These services are represented by a class called controller. 控制器具有名称、 较短名称或别名以及许多个方法。 The controller has a name, short name or alias, and many methods. 控制器被视为一组服务。 The controller is regarded as a set of services. 然后所生成代码表示定义服务所需要的结构骨架,然后添加手动编写的代码以使得在不考虑技术方面的情况下覆盖方法的功能实施例。 Is then defined as the service code indicates the required generation structural skeleton, and then add the code manually prepared cover so that the function of the method without technical considerations embodiment.

[1701] 对于每一控制器,存在以下主要生成类: [1701] For each controller, there is generated the main categories:

[1702] 名称为X的接口:这个接口含有UML中指定作为控制器中动作的方法。 [1702] X is the name of the interface: This interface is specified as containing UML controller operation method.

[1703] 称作AbstractX的抽象类:这个类用于技术原因,且不为这个控制器的用户所用。 [1703] abstract class called AbstractX: This class is used for technical reasons, and not for the controller used by the user.

[1704] 具体类XCal Ier:这个类含有接口X中定义的方法,且提供快捷键来借助服务的缺省合同调用服务X。 [1704] Specific categories XCal Ier: This class contains methods defined in the interface X, and provides a shortcut to invoke the aid of the default service contract service X.

[1705] 具体类XFactory:这个类提供不同方法来得到服务X的已寄存实施例。 [1705] DETAILED class XFactory: This class provides methods to obtain different service X has been deposited embodiment.

[1706] 开发人员必须提供扩展AbstractX的类,且他可以给这个类命名并编写额外代码来寄存它,否则他应将这个类命名为XImpl。 [1706] The developer must provide extended AbstractX class, and he can give a name to the class and write additional code to register it, or he should be the class named XImpl.

[1707] 可使用生命周期、表达式或手动编写的代码来调用UML模型中定义的服务。 [1707] using life cycle, code written expression or manually call the service UML model defined. 安全性模块来控制不同用户对服务的访问能力。 Security module to control different users the ability to access services. 可在运行时使用特定配置工具来配置服务的事务行为(不管服务是否支持事务,且不管服务是否启动新事务或嵌于调用方事务中)。 Specific configuration tool can be used to configure the service at run time transactional behavior (regardless of whether the service supports transactions, and regardless of whether the service starts a new transaction or embedded in the caller affairs).

[1708] Palmyra Service Module (Palmyra服务模块)使得终端用户能够配置或运行以下服务: [1708] Palmyra Service Module (Palmyra service module) so that the end user can configure or run the following services:

[1709] Is to be called remotely (是否远程调用):远程服务配置。 [1709] Is to be called remotely (if remote call): Remote service configuration.

[1710] Is to be executed with a specific transaction type (是否用特定事务类型执行):服务事务配置。 [1710] Is to be executed with a specific transaction type (whether to use a particular type of transaction execution): service transaction configuration.

[1711] Is to be broadcasted either in a Cluster or to other Applications (是否在集群(Cluster)或其他应用程序中广播):广播配置。 [1711] Is to be broadcasted either in a Cluster or to other Applications (whether in the cluster (Cluster), or other applications in the broadcast): broadcast configuration.

[1712] 对Web Serv ices (Web服务)的调用完全由服务层来实施。 [1712] calls to Web Serv ices (Web Services) is fully implemented by the service layer. 运行时通过WebServiceConfiguration (Web服务配置)实例来完成调用web服务所需要的配置。 The web service call to complete the configuration needed by WebServiceConfiguration (Web Services Configuration) instance running.

[1713] ii .Lifecycle (生命周期) [1713] ii .Lifecycle (life cycle)

[1714] Lifecycle管理组件依据表示过程的相关联状态图,逐个监测对象转换。 [1714] Lifecycle management component based on a state diagram showing the associated process, the object-by-conversion. 这个模块用来运行目标应用程序中定义的所有过程。 This module is used to run all the processes defined in the target application. 有可能在运行时装载新过程并将其与先前定义的类相关联。 There may be loaded at runtime a new process and associated with the previously defined class. 系统在装载这些新过程之后立即考虑这些新过程。 After loading the new system in the process to consider these new process immediately.

[1715] 如上文所描述,状态图用来定义过程。 [1715] As described above, the process used to define the state of FIG. 可在形成状态图的状态的输入点定义动作。 Operation input points can be defined in the state diagram of a state. 可定义条件以便引导执行路径。 Define the conditions so as to guide the execution path. 使用Palmyra Expressions语言(PEL)来定义动作和执行两者。 Use Palmyra Expressions Language (PEL) to define both the operation and execution.

[1716] 还可定义过程,以便引导若干其他过程(一个过程用来控制并启动若干其他过程)。 [1716] procedure may also be defined, so as to guide a number of other processes (a process for controlling the start and the number of other processes).

[1717] iii · Security (安全性) [1717] iii · Security (security)

[1718] 内部和外部认证和单点登录(SSO) [1718] Internal and external authentication and single sign-on (the SSO)

[1719] 基于角色的授权 [1719] role-based authorization

[1720] iv. Job-Scheduler (作业安排器) [1720] iv. Job-Scheduler (job scheduler)

[1721] Palmyra Scheduler是Palmyra框架中负责管理已安排作业的执行的技术模块。 [1721] Palmyra Scheduler Palmyra framework is responsible for managing the technical module scheduled execution of the job.

[1722] 作业是带有特定配置的Palmyra Controller方法。 [1722] The method of operation is Palmyra Controller with a specific configuration. 后者的配置是在运行时指定。 The latter configuration is specified at run time.

[1723] 作业可手动或自动创建、修改、删除、跟踪和执行。 [1723] jobs can be created manually or automatically, modify, delete, tracking and implementation.

[1724] Palmyra Scheduler管理包括重复和失败。 [1724] Palmyra Scheduler management, including repeated and failed.

[1725] Palmyra Scheduler与Palmyra Calendar (日历)模块紧密相关,后者负责Holiday (假日)和Business Calendars (业务日历)管理。 [1725] Palmyra Scheduler and Palmyra Calendar (calendar) is closely related to the module, which is responsible for Holiday (Holiday) and Business Calendars (Business calendar) management.

[1726] 对于与Palmyra Scheduler模块一起工作的Palmyra Application (应用程序),设计时需要完成一些前提条件: [1726] For Palmyra Application working with Palmyra Scheduler module (application), you need to complete some prerequisites design:

[1727] 需要在Control Ier中将待安排动作定义为方法。 [1727] Control will need to be in operation is defined as a method Ier arrangements.

[1728] 需要创建Business Calendar的实施方案。 [1728] need to create embodiment of Business Calendar. 这个实施方案Entity应封装属性和Stereotype“code”。 This embodiment should Entity packaging properties and Stereotype "code".

[1729] 示例:我们将基于TestControlIer的方法“add (添加)”以及称作“myCalendar (我的日历)”的实体MyCalendar的实例(都在图47A中示出)来配置Job (作业)。 [1729] Example: We TestControlIer based approach "the Add (Add)" and referred to "myCalendar (My calendars) 'Examples (both shown in FIG. 47A) configured Job (operation) of MyCalendar entity.

[1730] 在运行时,JobEntry (作业条目)实例存储有关如何安排动作的所有必要信息。 [1730] At runtime, JobEntry instance (job entry) to store all the necessary information about how to schedule actions.

[1731] Job Message (作业消息):待执行方法,例如,图47B中示出的serviceName “com.TestController” 的actionName“add”。 [1731] Job Message (message operations): a method to be performed, e.g., FIG. 47B serviceName shown "com.TestController" of actionName "add".

[1732] Repetition:安排从2009年12月24日起每日下午5点执行这个动作。 [1732] Repetition: arrangements for the implementation of this action since December 24, 2009 Daily 17:00. 重复还可安排为重复一次、每分钟重复、每小时重复、每周重复、每月重复或每年重复。 Repeat also scheduled to repeat, repeat every minute, every hour repeat, repeat weekly, monthly or repeat repeat every year. 图47C和图47D示出重复设定。 FIGS. 47C and FIG. 47D shows a set repeatedly.

[1733] Holiday Treatment:我们可以向日历myCalendar分配假日。 [1733] Holiday Treatment: We may assign holidays to the calendar myCalendar. 举例来说,我们假定是2009年12月25日是年度假日,2009年12月26日是特殊假日,且周日是每周的假日。 For example, we assume that 25 December 2009 is an annual holiday, December 26, 2009 is a special holiday and Sunday is the weekly holiday. 当如下执行作业时将考虑假日列表:是忽略还是考虑这个假日。 When the execution of the job will consider the following list of holidays: the holiday is ignored or considered. 假日创建在图47E、47F、47G和47H 中示出。 Holiday created is shown in Figure 47E, 47F, 47G and 47H in.

[1734] Track Execution:Palmyra Scheduler使得通过JobExecution实例跟踪Job的执行成为可能。 [1734] Track Execution: Palmyra Scheduler by the tracking Job JobExecution possible execution examples. 如图471和图47J所示,将在2009年12月24日下午5点第一次执行这个作业。 As shown in Fig. 471 and 47J, the first execution of the job in at 17 o'clock on the December 24, 2009. JobExecution实例的状态设为Waiting (等待)。 State JobExecution instance to Waiting (waiting). 如果成功完成,那么状态将更改为Success (成功)。 If successfully completed, the status will change to Success (success). 考虑到12月25日、12月26日和12月27日的假日,将在2008年12月28日下午5点第二次执行这个作业。 Taking into account December 25, December 26 holiday and December 27 will perform the job in 2008 at 17:00 on December 28th second.

[1735] 图51 不出Scheduler 的UML。 [1735] FIG. 51 is not Scheduler UML.

[1736] Palmyra Scheduler的操作原则是每当创建新作业,将其添加到工作作业列表,并按执行的最近日期进行排序。 [1736] The operating principle of Palmyra Scheduler is whenever you create a new job, add it to the job list to work, according to the most recent date of execution order. 命名为Palmyra-Scheduler-Thread的运行线程通过这个工作作业列表来知道将首先执行哪个作业,然后等待其执行时间并执行。 Named Palmyra-Scheduler-Thread thread running through this work to know which job list of jobs will be executed first, and then wait for their execution time and execution.

[1737] 创建Job导致创建对应JobExecution实例。 [1737] Create Job create the corresponding lead JobExecution instance.

[1738] 执行作业在于基于作业的JobMessage信息创建合适消息,然后让Service模块处理。 [1738] execution of the job is to create the right message based JobMessage information of the job, and then let the Service module for processing.

[1739] 命名为Palmyra-Jobs-Feeder-Thread的线程是负责管理工作作业列表的线程。 [1739] named Palmyra-Jobs-Feeder-Thread thread is responsible for managing the work of the job list thread. 其每隔LOAD_JOBS_INTERVAL (缺省120分钟)刷新列表。 Every other LOAD_JOBS_INTERVAL (default 120 minutes) to refresh the list. 刷新意味着向数据库发送查询,得到预期在后一时间间隔内执行的所有作业,例如,处于Waiting状态且执行日期“realDate”小于“(currentDate+LOAD_JOBS_INTERVAL) ” 的JobExecution实例。 Refresh means sends a query to the database to obtain the expected execution of all jobs in the latter time interval, e.g., in the Waiting state and perform JobExecution instance date "realDate" less than "(currentDate + LOAD_JOBS_INTERVAL)" a.

[1740] JobExecution实例的周期从状态“Waiting”开始(创建时),转到“Sent”(相关作业到达其执行日期且开始由Scheduler处理时),转到“InProcess”(jobMessage开始被执行时),且最终转到“Success”(如果jobMessage被成功执行)或“Fail”(如果出现错误,例如, 发生Exception) 〇 (When the relevant job execution date and reaches its start process by the Scheduler) [1740] Example JobExecution cycle starts (when created), go to "Sent" from the state of "Waiting", go to "InProcess" (started to be executed when jobMessage) and finally go to the "success" (if jobMessage successfully executed) or "Fail" (If an error occurs, for example, occur Exception) billion

[1741] 可在应用程序启动时通过称作AUTOMATCCALLY_START_SCHEDULER的特性或运行时通过Application Scheduler Menu (应用程序安排器菜单)来开始Scheduler线程。 [1741] Scheduler thread may be started by Application Scheduler Menu (Menu application arrangement) characteristics referred AUTOMATCCALLY_START_SCHEDULER or runtime when the application starts.

[1742] Palmyra Scheduler具有其自身的记录器,其具有非常特定的术语。 [1742] Palmyra Scheduler has its own logger, which has a very specific terms. 图52是Palmyra Scheduler Trace (Palmyra安排器跟踪)不例的说明。 FIG 52 is a diagram illustrating an example of not Palmyra Scheduler Trace (Palmyra tracking arrangement).

[1743] C.Storage Layer (存储层) [1743] C.Storage Layer (memory layer)

[1744] 1.持久性 [1744] Persistent

[1745] 持久性由以下若干主要子模块构成: [1745] Persistent constituted by a plurality of main sub-modules:

[1746] Entity Manager (实体管理器):负责接收和变换查询。 [1746] Entity Manager (Entity Manager): responsible for receiving and converting inquiries.

[1747] Data Store (数据存储):负责与数据库通信并将结果返回给Entity Manager。 [1747] Data Store (store data): responsible for communication with the database and returns the result to the Entity Manager.

[1748] PQL Parser (Palmyra Query Language) (Palmyra查询语言解析器):Entity Manager用来解析PQL查询。 [1748] PQL Parser (Palmyra Query Language) (Palmyra query language parser): Entity Manager to resolve PQL query.

[1749] a .Entity Manager (实体管理器) [1749] a .Entity Manager (manager entity)

[1750] Entity Manager是完全遵循Palmyra标准的控制器。 [1750] Entity Manager Palmyra is in full compliance with the standard controller. Entity Manager实施Business Delegate (业务委托)接口。 Entity Manager implementation Business Delegate (business consignment) interface. 从用户的角度来说,Entity Manager执行与将Palmyra值保存到数据存储/从数据存储获取Palmyra值相关的全部工作。 From the user's point of view, the preservation Entity Manager performs Palmyra value to a data storage / acquisition Palmyra all work-related values ​​from the data storage. Entity Manager 用作接口和解析阶段。 Entity Manager serves as an interface and the analytical stage. 另外,Entity Manager将处理委托给适合处理单元,而所述适合处理单元又执行实际工作。 Further, Entity Manager delegates processing to the appropriate processing unit, and said processing unit and adapted to perform the actual work. 除了执行PQL语句的动作以外,Entity Manager还定义了以下3组动作: In addition to the actions performed PQL statements, Entity Manager defines the following actions Group 3:

[1751] (I)Formatting actions (格式化动作):这些动作用来格式化数据存储、更新其格式或更新其约束。 [1751] (I) Formatting actions (Action Format): these actions to format the data storage, or update the update format constraints. 这些动作仅迭代已配置的数据源,并调用适合数据存储中的对应规程。 These actions only iterative configured data source, and invokes a corresponding procedure for the data store.

[1752] (2) Synchronization/deletion actions (同步/删除动作):这些动作用来插入、 更新或删除数据存储中的值。 [1752] (2) Synchronization / deletion actions (synchronous / deletion): These actions used to insert, update, or delete the value in the data store.

[1753] (3) Search actions (搜索动作):搜索满足相同条件的AbstractValue对象。 [1753] (3) Search actions (search operation): Searching the object satisfies AbstractValue same conditions.

[1754] 以下段落说明负责执行以上各组动作中的每一个动作的组件。 [1754] The following paragraphs describe the component responsible for executing the above operation each group of each of the operation.

[1755] b. Context-Driven Approach (上下文驱动式方法) [1755] b. Context-Driven Approach (context-driven approach)

[1756] 以特定方式设计Persistence服务,以使得其在Persistence服务所执行的操作的状态与执行这些操作并操纵其状态的组件的逻辑之间提供方便的等级分隔。 It provides a convenient separation between the logic levels [1756] In particular manner Persistence design services, so that its operation is performed in a state with the Persistence and services component performs these operations and manipulate its state. 这个分隔通过定义含有这些操作状态的许多个上下文来实现。 This is achieved by partitioning a plurality of context definition containing these operation state. 这些上下文是不含逻辑的bean状对象(例如,具有“set”和“get”方法的对象)。 These are context-free logic bean-shaped object (e.g., an object having a "set" and "get" method). 进行实际工作的组件是将上下文作为其参数并操纵这些上下文内容的单件无状态对象。 Component is the actual work context as its argument and manipulate the contents of a single piece of context-free state of the subject. 这样一来,参数在操作处理的多个阶段之间的传递得到了简化,并且从性能角度考虑成本得到降低。 In this way, parameters are passed between a plurality of operation processing stages is simplified, and costs are reduced from the viewpoint of performance perspective.

[1757] Persistence服务执行操作的方式非常类似于产品沿着工厂中产品线移动而制成。 [1757] Persistence service mode operation is performed very similar product line is made along the movement of the plant. 产品进入产品线时还是一组原材料。 When the product into the product line or a group of raw materials. 然后进入逐个阶段。 Then enter the stage one by one. 类似的,上下文可视为由多个单件组件进行处理的产品。 Similarly, the visual context of a single assembly by a plurality of processed products. 初始状态时提供Persistence服务的原始输入,而其最终状态含有适合输出。 Persistence and services provide the original input the initial state, and its final state contains a suitable output. 因此,上下文可含有所有处理阶段所要求的许多属性。 Thus, the context may contain all the processing stages required for many attributes. 然而,每一阶段或每一组件仅与这些属性的子集相关。 However, each stage or each of the components associated with only a subset of these attributes. 因此,每一组件必须具有其自身的上下文视图。 Thus, each component must have its own view of the context. 在这种情况下,必须定义单件组件来获取子上下文作为参数。 In this case, one-piece component must be defined to get the child context as a parameter. 每一子上下文实际上是一个接口,这个接口定义应在上下文中呈现以供对应组件进行处理的属性子集。 Each context is actually a sub-interface, which defines a subset of attributes should be rendered for the corresponding components in the context of the process. 一个操作的上下文是执行这个操作所涉及的所有组件的所有子上下文的实施。 The context of an operation is performed for all sub-operation of all the components involved in the context of this embodiment.

[1758] c ·处理单元 [1758] c · processing unit

[1759] 如上文所述,Entity Manager仅用传递到其的参数填入适合上下文,然后调用适合处理单元,从而传递将上下文传递过去。 [1759] As described above, Entity Manager only fill parameters passed to its appropriate to the context, and then calls the processing unit is suitable to transfer over the context transfer. 每一处理单元还可调用其他处理器单元等。 Each processing unit may also call other like processor units. 所有处理单元实施具有取上下文作为其单个参数的单个方法(过程)的相同接口(Processor接口)。 All the same processing unit interfaces (Processor Interface) has taken context of a single method (process) as the single parameter.

[1760] d.Cache-Aware (高速缓存感知)处理单元 [1760] d.Cache-Aware (cache-aware) processing unit

[1761] —些处理器可高速缓存其在执行运算时生成的一些或全部数据,因此,当稍后执行类似运算时,从高速缓存器获取待生成的数据,而不是重新生成。 [1761] - these processors may cache some or all of the data generated in the execution of its operation, and therefore, when a similar operation performed later, to obtain data to be generated from the cache, rather than re-generated. 这类处理器称作高速缓存感知处理器,且它们扩展向高速缓存过程提供提取的类CacheAwareProoes sor。 Such a processor is referred to cache-aware processor, and they extend to provide a caching process the extracted class CacheAwareProoes sor. 举例来说,假定高速缓存感知处理器(称作P)处理含有输入属性al、bl、cl和dl和输出属性a2、b2、 c2和d2的上下文。 For example, assume that cache-aware processor (referred to as P) comprising input processing context attribute al, bl, cl and dl and output attributes a2, b2, c2 and d2. 当设计这个处理器时,开发人员(持久性层开发人员)必须选择可被高速缓存且每次都应处理的输出属性。 When designing the processor, the developer (the developer persistence layer) can be selected should be cached and each processing output attributes. 从理论上来说,al、bl、cl和dl的可能值的个数是无穷的。 In theory, the number of al, bl, cl and dl of possible values ​​is infinite. 然而,假定在给定有限周期的应用程序使用寿命的实际情形下,我们发现,al、bl和cl的可能值的个数非常有限,而dl的可能值的个数相对多。 However, the case is assumed in a given limited application life cycle, we found that the number of possible values ​​of al, bl, and cl is very limited, and a relatively large number of possible values ​​of dl. 如果用户假定输出属性a2、b2、c2和d2 直接分别对应于输入属性al、bl、cl和dl,那么我们将推出如下结论:a2、b2和c2是可被高速缓存的,而d2应每次进行计算,因为al、bl和cl (藉以生成a2、b2和c2)的重新出现频率高于dl的重新出现频率。 If the user is assumed that the output attribute a2, b2, c2 and d2 correspond directly to the input attribute al, bl, cl and DL, we will introduce the following conclusions: a2, b2 and c2 are cacheable, but should each d2 calculated as al, bl, and cl (thereby generating a2, b2 and c2) is higher than the frequency of reappearance of the re-occurrence frequency dl. 此外,如果用户高速缓存d2,那么高速缓存器的大小应显著增大以放大性能。 Further, if the user cache d2, then the size of the cache should be significantly increased to enlarge performance.

[1762] 由于输入属性的可能值的个数通常不受限制,因此应使用循环高速缓存器,而不是使用映射来存储被高速缓存的值。 [1762] Since the number of possible input attribute value is generally not limited, so use cache cycle, instead of using the value of the mapping to the cache memory. 循环高速缓存器保持最后和最常用的键。 Loop cache holds the last and most commonly used keys. 在我们的示例中,用于高速缓存的键应由输入参数al、b 1和c 1构成。 In our example, the key for caching should input parameters al, b 1 and c 1 configuration.

[1763] 任何高速缓存感知处理器执行以下例程: [1763] Any cache-aware processor to perform the following routine:

[1764] ⑴从上下文的属性生成高速缓存键。 [1764] ⑴ generates a cache key from the contextual attributes.

[1765] (2)使用所生成的高速缓存键来从高速缓存器获取数据。 [1765] (2) using the generated key to retrieve the data cache from the cache.

[1766] (3)如果找到了被高速缓存的数据,那么将被高速缓存的数据写入到上下文中,然后生成不可高速缓存的输出属性。 [1766] (3) If the cached data is found, it will be written to the cache data to the context, and then generates a non-cacheable output attributes.

[1767] (4)否则,生成所有输出属性、从上下文读取可高速缓存的输出属性,然后使用高速缓存键将读取到的可高速缓存数据放入缓存器中。 [1767] (4) Otherwise, generating all the output attributes, cacheable read output attribute from the context, and then use the key to the read cache may cache data into the buffer.

[1768] 在每一高速缓存感知处理器中存在这个例程,使得能够通过为执行高速缓存路由的所有高速缓存感知处理器定义超类来提取高速缓存过程,从而留存一些部分作为将在子类中逾越的abstract方法。 [1768] This routine is present in each cache-aware processor, so that the extraction can be perceived by the processor during cache is defined as the superclass performing a cached route all of the cache, so as to retain some portion of the subclass in insurmountable abstract method.

[1769] 类CacheAwareProoessor中存在一种用于以下每一任务的abstract方法: Abstract present method of each of the following tasks for [1769] the class CacheAwareProoessor:

[1770] (1)从上下文生成高速缓存键。 [1770] (1) generates a cache key from the context.

[1771] (2)生成所有输出属性。 [1771] (2) generate all output properties.

[1772] (3)生成不可高速缓存的输出属性。 [1772] (3) generates an output property is not cached.

[1773] ⑷从上下文读取可高速缓存的输出属性。 [1773] ⑷ cacheable read output attribute from the context.

[1774] (5)将被高速缓存的输出属性写入到上下文中。 [1774] (5) will be cached context is written to the output attribute.

[1775] e .Operation Executer (运算执行器) [1775] e .Operation Executer (execution arithmetic unit)

[1776] 此后,由Entity Manager首先调用的根处理单元称作运算执行器。 [1776] Thereafter, the processing unit from the root Entity Manager called first actuator operation referred to. 这些运算执行器将遵循特殊的编号规则,以使得能加以辨别。 These operations will follow the implementation of a number of special rules, so that can be identified. 如果运算的名称是Xxx,那么其执行器的名称将是XxxExecuter (例如,SelectExecuter、SynchronizeExecuter等)。 If the operation name is Xxx, then the name of its actuators will be XxxExecuter (e.g., SelectExecuter, SynchronizeExecuter etc.).

[1777] 除了调用其他处理器以外,运算执行器还用作其他处理器的工厂对象。 [1777] In addition to call other than a processor, further performs arithmetic factory object as other processors. 如果处理器需要调用其他处理器,那么它可从运算执行器获得对那个处理器的引用。 If the processor needs to call other processors, it can get a reference to the processor from the operational actuator. 因此,运算执行器可视为处理器的中心“板”。 Thus, the actuator can be regarded as central arithmetic processor "plate." 这样一来,创建特定目的的定制执行器就变得简单可行。 As a result, create special purpose custom actuator becomes simple and feasible. 然而,这意味着运算执行器必须可访问其将调用的所有处理器,因此应在上下文中传递对运算执行器的引用。 However, this means that operation actuator must be accessible to all of its processors will be called, and should pass a reference to the operation of the actuator in context.

[1778] 大多数Select (选择)执行器调用至少2个处理器。 [1778] Most Select (Select) performs at least two call processor. 第一个处理器是映射处理器(或映射器),其生成将执行全部或部分运算的数据存储命令。 The first processor is a mapping processor (or mapper), which generates the execute all or part of the operation data storage command. 第二个处理器是组译处理器(或组译器),其将读取数据存储返回的数据,并将结果组译到Palmyra值中。 The second processor is a processor assembler (or assembler), which reads the data stored in the data returned, and the result to the assembler Palmyra value.

[1779] 在调用映射器之后且在调用组译器之前,将映射器生成的命令经由数据存储包装所表示的特殊软件层发送到数据存储,所述数据存储包装是控制Persistence服务与数据存储之间的数据流的对象。 Special software layer [1779] and prior to calling the assembler, the map is generated after the call indicated by mapper command via the data package to the data stored in memory, the data package is stored with the data storage service control Persistence of between the data stream of objects. 一些运算要求执行一个以上数据存储命令。 Some calculations required to perform more than one data storage command. 换句话说,为了执行一个运算,映射器和组译器可能会执行一次以上。 In other words, in order to perform a calculation, and the assembler mapper may perform more than once. 因此,运算执行器应认出其执行的两种运算。 Thus, operations performed should recognize it performs two operations. 第一种运算是可通过执行每一运算的单个数据存储命令来执行的原子运算。 The first operation is an atomic operation may be performed by a single command for each data storage operation. 第二种运算是要求执行一个以上数据存储命令的组合运算。 The second arithmetic operation is required to perform a combination of more than one data storage command. 每一后一类运算可分解成较简单的原子运算,且运算执行器负责分解。 After each class of operation can be decomposed into a relatively simple atomic operation, the actuator and the operator is responsible for decomposition.

[1780] f. PQL 与SQL的比较 [1780] f. PQL comparison with SQL

[1781] Entity Manager通过查询底层数据存储来执行PQL查询。 [1781] Entity Manager queries PQL query performed by the underlying data store. 数据存储提供的服务类似于关系数据库提供的服务。 Services similar to relational databases provide data storage to offer. 由于大多数关系数据库是通过SQL查询来查询,因此几乎每一数据存储运算可用SQL查询来表达。 Since most relational database is queried via SQL queries, data storage operation can be used almost every SQL query expression. 数据存储运算与SQL查询之间的一一对应使得SQL成为表达如何进行PQL查询的不错的工具。 One correspondence between the data storage operations with SQL queries makes SQL to be a good tool for expressing how PQL query. 因此,将SQL用作伪查询语言,这很像用伪代码来说明如何实施特定算法。 Therefore, as a pseudo-SQL query language, much like pseudo code to illustrate how to implement specific algorithms. 然而,详细细节(有关如何克服SQL的限制)不在本文的范围内。 However, within the scope for further details (on how to overcome the limitations of SQL) is not in this article.

[1782] g. Search (搜索)动作 [1782] g. Search (search) action

[1783] Select执行器是所有select-operation (选择运算)执行器(诸如select-count (选择计数)、select-historicized (选择记录))和剩余类似执行器的超类。 [1783] Select all actuators select-operation (select operation) an actuator (such as a select-count (count selection), select-historicized (select records)) and the residual superclass similar actuators. 如上文所描述, 像任何其他执行器一样,select执行器可多次调用映射阶段、数据存储和组译阶段,以便执行完整的选择或查找操作。 As described above, the same as any other actuator, the actuator may be called multiple times SELECT mapping stage, and assemble data storage stages in order to perform a complete lookup or selection operation. 这取决于以下两个因素: It depends on two factors:

[1784] (1)所查询的键或搜索标准含有表示与接口的关系的键。 [1784] (1) bond or a search query contains criteria represents a bond relationship with the interface.

[1785] (2)所查询的键含有表示一对一关系的键。 [1785] (2) containing the queried key represents a bond to one relationship.

[1786] h.处理接口 [1786] h. Processing Interface

[1787] 考虑图37A和37B中的UML,假定查找操作中的所查询类是X,且所查询字段是+、il. +、iI·i2·+和i3· + 〇 [1787] Consider FIG. 37A and 37B UML, assume that a query to find the type of operation is X, and the query field is +, il. +, II · i2 · + i3 · + square and

[1788] 由于接口没有数据存储容器且由于持久性服务无法提前知道与类型X的值相关的实体的实际类型,需要多次调用数据存储来查找这些实体。 [1788] Since the interface is not data storage container and due to the persistence service can not know in advance the actual type associated with a value of type X entities, several calls to data stored in these entities.

[1789] —种解决方案是在不获取键il、i2和i3的情况下执行查询。 [1789] - solution is to not get in the bond il, the query is executed in the case of i2 and i3. 然后惰性获取这些键。 Then inert get the keys. 这种方法具有以下两个缺点。 This method has the following two drawbacks. 第一个缺点是用户无法向这些键添加约束,或用户必须在获取值之后评估这些条件并滤出不满足条件的值,这从性能角度考虑成本很高。 The first drawback is that the user can not add constraints to these keys, the user must evaluate the condition or filtered value and the condition is not satisfied, it is costly from a performance perspective considered after acquiring the value. 第二个缺点是获取越多值,用户需要执行越多lazy-get (惰性获取)操作。 A second disadvantage is to obtain more values, the user needs to perform more lazy-get (inert acquisition) operation. 举例来说,如果查询获取到类X的100个实例,那么针对每一实例,用户需要执行3个惰性获取操作来获取il、il.i2和i3。 For example, if the query 100 is acquired instances of a class X, then for each example, three user needs to perform acquiring operation to acquire an inert il, il.i2 and i3. 这意味着用户需要300次附加惰性获取操作来获取找到的所有实例的关系。 This means that users need to get 300 additional inert operation to retrieve all instances of relationships found. 换句话说,用户需要调用数据存储l+n*m次(其中η是获取到的值的个数,且m是带有接口的所查询关系的个数)。 In other words, the user needs to call data store l + n * m times (where η is the number of values ​​acquired, and m is the number of relationship with the query interface).

[1790] —种比较好的解决方案是将这类运算分解成许多个原子运算。 [1790] - species better solution to this type of operation is decomposed into a plurality of operation atoms. 在每一运算中,用户将每一所查询接口播送到一个实施所述接口的类中。 In each operation, the user of each class to a broadcast query interface of the interface in the embodiment. 通过使用这种方法,对于给定运算, 对数据存储的调用次数将为常数。 By using this method, for a given operation, the number of stored data call will be constant. 这个常数取决于实施每一所查询接口的类的个数。 This constant depends on the number of each of the embodiments of the query interface class. 在我们的示例中,接口Il、12和13可如下播送: In our example, the interface Il, 12 and 13 may be cast as follows:

[1791] (I) Il作为A1、12作为A2以及13作为A3 [1791] (I) Il as A1,12 as A2, and A3 as 13

[1792] (2) Il作为A1、I2作为A2以及13作为B3 [1792] (2) Il as A1, I2 A2 as well as 13 B3

[1793] (3) Il作为Al、12作为A2以及13作为C3 [1793] (3) Il as Al, 12 A2 as well as C3 13

[1794] ⑷Il作为Al、12作为B2以及13作为A3 [1794] ⑷Il as Al, 12 and 13 as A3 as B2

[1795] (5) Il作为AU 12作为B2以及13作为B3 [1795] (5) Il AU 12 as well as 13 as B2 B3

[1796] ⑶Il作为AU 12作为B2以及13作为C3 [1796] ⑶Il 12 B2 as well as the AU 13 as C3

[1797] ⑵Il作为Bl、12作为A2以及13作为A3 [1797] ⑵Il as Bl, 12 A2 as well as A3 13

[1798] ⑶Il作为Bl、12作为A2以及13作为B3 [1798] ⑶Il as Bl, 12 and 13 as a B3 A2

[1799] (9) Il作为Bl、12作为A2以及13作为C3 [1799] (9) Il as Bl, 12 and 13 as a C3 A2

[1800] (10) Il作为Bl、12作为B2以及13作为A3 [1800] (10) Il as Bl, 12 and 13 as A3 as B2

[1801] (11) Il作为B1、I2作为B2以及13作为B3 [1801] (11) Il as B1, I2 B2 as well as 13 B3

[1802] (12) Il作为Bl、12作为B2以及13作为C3 [1802] (12) Il as Bl, 12 and 13 as a C3 B2

[1803] 因此,如果用户具有引用这些接口的η个键,且如果c (i)是实施键数i所引用的接口的类的个数,那么原子运算的个数将为: [1803] Thus, if the user has a reference η keys of these interfaces, and if c (i) is the number of the class number of keys embodiment referenced i interface, then the operation will be the number of atoms:

Figure CN102656557BD01011

[1805]考虑到我们的示例中存在第9次播送的可能性,也就是Il作为Bl播送、12作为A2播送以及13作为C3播送的可能性,在这种情况下,图37A中示出的UML将简化成图37B中示出的第二UML。 [1805] Considering the possibility that the 9th broadcast our example, is broadcast Il as Bl, A2-cast 12 as well as the possibility of broadcast C3 13, in this case, 37A shown in FIG. the second simplified UML UML shown in FIG. 37B. 因此,Select执行器必须: Therefore, Select actuator must:

[1806] (1)收集查询中涉及的所有键。 [1806] (1) to collect all the keys involved in the inquiry.

[1807] (2)搜索引用接口的所收集键,并将其添加到列表。 [1807] (2) the search key references the interface collected and added to the list.

[1808] (3)计算所有组的类的Cartesian产品,其中所述所有组的类实施步骤(2)中找到的键所引用的接口。 [1808] (3) Calculate the class Cartesian product of all groups, (2) a class key found in the all-group embodiment wherein the step of the cited interface. 这将给出所有播送可能性。 This will give all broadcast possibilities.

[1809] ⑷对于每一播送可能性或组合,应执行原子选择运算。 [1809] ⑷ possibilities for each broadcast or combined atoms selected operation should be performed. 播送组合应放入运算的上下文中,因此稍后阶段知道如何播送每一键。 Broadcast combination should be placed in the context of the operation, so a later stage know how to broadcast each key.

[1810] 所组译的值的个数一达到用户指定的待获取值的最大个数,Select执行器就必须中断播组合的迭代。 [1810] The number of values ​​to achieve a desired set of translation of the user-specified maximum number value to be obtained, Select actuator must interrupt the iteration sowing combination. 上述情况的唯一异常是还指定次序的情况。 The only exception is the case of the above-described case also in the order specified. 在这种情况下,每一原子运算可获取值,直到达到指定最大值为止。 In this case, each of the operations may acquire atomic value, until reaching the specified maximum value. 然后,对所获取值进行排序和修整,以使得不超出所述值。 Then, the values ​​obtained for sorting and trimming, so as not to exceed the value. 这意味着涉及接口、次序和待获取值的最大个数的查询相当昂贵。 This means that the inquiry relates to an interface, order and get the maximum number of values ​​to be quite expensive.

[1811] i.从PQL到SQL的示例 [1811] i. A sample from SQL to PQL

[1812] 在前一UML样品(图37A和图37B)中,如果用户执行以下PQL语句: [1812] UML a sample (FIGS. 37A and 37B) in the front, if the user performs the following statement PQL:

[1813] PQL:select+,il.+from X where pk>1000 [1813] PQL:. Select +, il + from X where pk> 1000

[1814] Select执行器将执行以下SQL查询的等效语言: [1814] Select actuator will perform the following SQL query language equivalent of:

[1815] (1)在将il播送到Al之后:select T.*,T_il .*from XT left join Al T_il on T. il$pk = T_il .pk where T_il.pk>1000 [1815] (1) After the broadcast il to Al:.. Select T *, T_il * from XT left join Al T_il on T. il $ pk = T_il .pk where T_il.pk> 1000

[1816] (2)在将il播送到BI之后:select T.*,T_il .*from XT left join BI T il on T. il$pk = T_il .pk where T_il.pk>1000 [1816] (2) After the broadcast il to BI:.. Select T *, T_il * from XT left join BI T il on T. il $ pk = T_il .pk where T_il.pk> 1000

[1817] j.接口键收集器 [1817] j. Interface key collector

[1818] 如上文所描述,Select执行器需要知道接口所引用查询中存在的键,且因此, Select执行器必须在查询中迭代所有呈现的键,以便搜索接口所引用的键。 [1818] As described above, Select query execution needs to know key interfaces in the presence of reference and therefore, Select actuator must iterate all keys appear in the query to the search key interface references. 然而,这类键可在所查询键、搜索标准、分组功能和其他字段中找到。 However, such keys can be found in the query key search criteria, grouping functions and other fields. 换句话说,这些分别在许多个结构中。 In other words, these are in many structures.

[1819] 接口键收集器遍历Select执行器上下文中的所有结果,且收集接口所设计的键。 [1819] Interface key collector through all actuators results Select context, and network interface designed key. 结果是将每一所述键映射到其引用的键的映射。 The result is the key to map each mapped reference bond. Select执行器使用这个映射来生成所有播送组合。 Select actuator uses this map to generate all combinations broadcast.

[1820] k.处理1对N关系 [1820] k. Process 1-to-N relationship

[1821] 以下段落中将国家与城市之间的关系作为示例。 [1821] in the following paragraphs relationship between the state and the city as an example. 这是1对N关系,因为每个国家含有一个或更多个城市。 This is one-to-N relationship, because each country contain one or more cities. 在数据存储中,城市容器中的记录必须含有引用国家容器中的记录的外键。 In data storage, the city recorded in the vessel must contain foreign key references to the national record in the container. 如果关系的名称是“cities (城市)”,且对称关系的名称是“country (国家)”,那么外键的名称是“countrySpk”。 If the name of the relationship is the "cities (cities)", and the name of the symmetrical relationship is the "country (countries)", then the name of the foreign key is "countrySpk".

[1822] 考虑以下PQL语句: [1822] Consider the following PQL statement:

[1823] select+,cities.+from Country where area>1000 [1823] select +, cities. + From Country where area> 1000

[1824] PQL语句的明显SQL等效语句将是: [1824] obviously equivalent SQL statement PQL statement would be:

[1825] selectT.氺,T_cities·氺from Country T left join City T_cities on T.pk= T_cities.country$pk where T.area>1000 [1825] selectT. Shui, T_cities · Shui from Country T left join City T_cities on T.pk = T_cities.country $ pk where T.area> 1000

[1826] 由于前一SQL语句的结果不具有树状结构(实际上是含国家和城市的字段的一组记录),一个国家的属性可在属于这个国家的许多城市的记录中找到。 [1826] As a result of the previous SQL statement does not have a tree-like structure (actually a set of records containing fields of countries and cities), a property belonging to this country can be recorded in many cities of the country found. 这些记录的唯一不同就是城市的属性。 The only difference is the property of the city of these records. 这个冗余将耗费大量存储器和网络带宽。 This redundancy takes a lot of memory and network bandwidth. 另外,需要附加计算来将这个大组简化成树。 Further, additional calculations need to be reduced to a large group of the tree. 借助这类PQL,可用单个SQL语句进行查询。 With this type of PQL, available single SQL query statement.

[1827] 参照图41C,我们需要执行查找操作来提取X实例及其Y实例,那么Persistence层将生成如下形状的查询: [1827] Referring to FIG. 41C, we need to perform a lookup operation example to extract the X and Y instance, the Persistence layer of a shape generating a query:

[1828] select T_.accessPoint_,T_y_.x$code_,T_y_.x$pk_,T_y_.accessPoint_,T_ y_.creat ionDate_,T_y_.creatorUserId_,T_y_.pk_,T_y_.type_,T_y_.updateDate_, [1828] select T_.accessPoint_, T_y_.x $ code_, T_y_.x $ pk_, T_y_.accessPoint_, T_ y_.creat ionDate_, T_y_.creatorUserId_, T_y_.pk_, T_y_.type_, T_y_.updateDate_,

[1829] T_y_.updatorUserId_,T_.creationDate_,T_.creatorUserId_,T_.pk_,T_ .type_,T_.updateDate_,T_.updatorUserId_from test_X_T_left join test_Y_T_y_on (T_. [1829] T_y_.updatorUserId_, T_.creationDate_, T_.creatorUserId_, T_.pk_, T_ .type_, T_.updateDate_, T_.updatorUserId_from test_X_T_left join test_Y_T_y_on (T_.

[1830] pk_=T_y_. x$pk_) order by T_.pk_asc [1830] pk_ = T_y_. X $ pk_) order by T_.pk_asc

[1831] —旦数据存储层返回封装结果的记录实例的向量,组译器就扫描这个向量两次, 一次是创建X实例,而另一次是创建Y实例,并在所创建的实例之间进行组合。 [1831] - the vector results returned package record instance denier data storage layer, the assembler to vector scanning twice, once created instance of X, Y and the another instance is created, and the created instances between combination.

[1832] 1.进一步优化 [1832] 1. further optimized

[1833] 考虑到图38中的以下UML,举例来说,假定我们想要执行以下查找操作: [1833] Considering Figure 38 the following UML, for example, suppose we want to find the following actions:

[1834] select+,il.+,il.i2.+from X where pk>1000 [1834] select +, il. +, Il.i2. + From X where pk> 1000

[1835] 如果我们遵循前一方法,那么通过如下播送il和i2来将查询分成4个较小的查询: [1835] If we follow the previous method, then by broadcast il and i2 to the query divided into four smaller queries:

[1836] (I) Il作为A1、I2作为A2 [1836] (I) Il as A1, I2 as A2

[1837] (2) Il作为A1、I2作为B2 [1837] (2) Il as A1, I2 as B2

[1838] (3) Il作为Bl、12作为A2 [1838] (3) Il as Bl, 12 as A2

[1839] ⑷Il作为B1、I2作为B2 [1839] ⑷Il as B1, I2 as B2

[1840] 然后,因为il与i2之间的1对N关系,4个小型查询中的每一个将再次分成2个原子查询。 [1840] Then, as to-N relationship between il and i2, 4 mini-queries into each of the two atoms query again. 我们以前面2个组合作为示例: We foregoing composition of example 2:

[1841] (1)在将Il作为Al且12作为A2播送之后,Select执行器将执行以下2个查询: [1841] (1) at the Il as Al and A2 after 12 as broadcast, Select the actuator 2 performs the following query:

[1842] PQLl:select+,il.+from X where pk>1000 cast il to Al and i2 to A2 [1842] PQLl:. Select +, il + from X where pk> 1000 cast il to Al and i2 to A2

[1843] PQL2 (I对N) : select+,il·i2·+from X where pk>1000 cast il to Al and i2 to A2 [1843] PQL2 (I to N): select +, il · i2 · + from X where pk> 1000 cast il to Al and i2 to A2

[1844] (2)在将Il作为Al且12作为B2播送之后,Select执行器将执行以下2个查询: [1844] (2) at the Il and 12 as an Al B2 after the broadcast, Select the actuator 2 performs the following queries:

[1845] PQL3:select+,il.+from X where pk>1000 cast il to Al and i2 to B2 [1845] PQL3: select +, il + from X where pk> 1000 cast il to Al and i2 to B2.

[1846] PQL4 (I对N) : select+,il·i2·+from X where pk>1000 cast il to Al and i2 to B2 [1846] PQL4 (I to N): select +, il · i2 · + from X where pk> 1000 cast il to Al and i2 to B2

[1847] 注意,查询PQLl和PQL3中播送子句中的第二项并不重要,且可以忽略,因为i2在查询中并不持久。 [1847] Note that the query PQLl and PQL3 broadcast clause in the second term is not important and can be ignored, since i2 did not last long in the query. 另外,这个播送将不会影响所生成的SQL查询。 In addition, the broadcast will not affect the generated SQL query. 因此,如果我们忽略,那么PQLl和PQL3将相同且获取相同值。 So, if we ignore, then PQLl and PQL3 the same and get the same value. 因此,如果我们检测到这类查询,可进行进一步优化。 Therefore, if we detect this type of query, can be further optimized.

[1848] m.简化组合 [1848] m. Simplified composition

[1849] 前一问题的解决方案是在生成每一原子查询之前检测非必要播送项,并忽略,从而生成新的简化组合。 [1849] Solution former problem is to generate each broadcast atoms optionally detected before the query terms and ignored, thereby generating new simplified combination. 如果Select执行器保持所执行原子查询的一组简化组合,那么在简化组合已存在于所述组的情况下能跳过原子查询。 If the Select actuator holding a simplified combination of a set of queries performed atoms, then the composition has been simplified in the present case where the skip group can query atoms.

[1850] 在一个示例中,在生成PQLl之前,组合(Al,A2)将简化成(Al)。 [1850] In one example, before generating PQLl, combinations (Al, A2) into simplified (Al). 这个简化组合将在执行PQLl之后添加到简化组合组中。 This simplified combination will be added to simplify the combination group after performing PQLl. 在生成PQL3之前,组合(Al,B2)将简化成(Al),而其已存在于简化组合组中。 Before generating PQL3, combinations (Al, B2) is simplified into (Al), which is already present in the combination group simplified. 在这种情况下,可跳过查询PQL3。 In this case, you can skip the query PQL3.

[1851] 检测非必要播送项的过程很简单。 [1851] broadcast detect non-essential items is a simple process. 将可看出,生成原子查询的第一步是收集所述查询中存在的所有键。 Will be seen, the first step is to generate a query atoms collecting all keys present in the query. 因此,如果播送项的键并不存在于所收集的键中,那么可放心地忽略所述播送项。 Thus, if a key is broadcast to the key not present in the collected, you can safely ignore the broadcast item.

[1852] η.映射阶段 [1852] η. Mapping phase

[1853] 映射阶段负责从上下文内容生成数据存储命令。 [1853] mapping stage is responsible for generating the content data storage command from the context. 如果通过执行多个数据存储命令来执行运算,那么运算执行器必须针对每一命令修改上下文的内容并调用适合映射器。 If the operation is performed by executing a plurality of data storage command, the operations performed must modify the contents of the context for each command and call for mapper. 另夕卜,映射阶段可生成用来优化随后组译阶段的工作的数据。 Another Bu Xi, mapping stage may be generated data is then used to optimize the work of the translation stage group. 映射阶段未必由处理器对象来表示。 Mapping stage may not be represented by a processor object. 映射阶段是可由多个处理器表示的逻辑阶段。 Stage is a logical mapping stage represented by a plurality of processors.

[1854] 对于给定的输入来说,最终数据的部分始终是由映射器生成。 [1854] For a given input, the final portion of the data is always generated by the mapper. 这些部分可被高速缓存,因此映射器无需在每次接收到相同输入时都重新生成。 These portions may be cached, and therefore eliminates the need for mapping are regenerated each time it receives the same input. 可以这么做,只要我们假定这些数据依赖于指定操作的当前用户。 You can do, if we assume that these data depend on a specified operating current user. 出于安全性考虑,实体管理器可能需要依据正执行操作的当前用户来修改这个操作的输入(例如,添加安全性条件)。 For security reasons, the entity manager may be required to modify the input operation (for example, adding security conditions) based on the current user is performing the operation. 这意味着相同PQL查询可能会针对每一用户形成不同的数据存储。 This means that the same PQL query may form different data storage for each user.

[1855] 因此,大多数阶段应分成以下2个阶段:适应阶段和变换阶段。 [1855] Thus, most of the phase should be divided into the following two phases: Phase transformation and adaptation phase. 适应阶段依据用户特性修改输入,以使得这个输入变成独立于用户。 Adaptation period based on user input to modify the characteristics, in order to make this independent of user input goes. 变换阶段将独立于用户的输入变换成数据存储命令。 The shift stage independent of user input into a data storage command.

[1856] 适应阶段由称作适配器的处理器来表示。 [1856] adaptation phase is represented by a processor called adapter. 而变换阶段由称作变换器的另一处理器来表示。 The shift stage represented by another processor referred to as a transducer. 由于与变换相关的数据需要适应并独立于用户,因此变换器可以是高速缓存感知处理器。 Because of the need to adapt and transform data independent of the user, thus the converter can be a cache-aware processor.

[1857] 〇.选择适配器 [1857] square. Choose adapter

[1858] 如上文所描述,选择适配器修改输入,以使其独立于当前用户。 [1858] As described above, the adapter selected to modify the input, to make it independent of the current user. 选择适配器主要调用称作Criterion Expander (标准扩展器)的处理器,其通过以下标准扩展输入标准对象: Select the adapter main call referred Criterion Expander (standard expander) processor, which extended input object through the standard the following criteria:

[1859] (1)安全性标准:针对根查询类和与根查询类具有直接或间接聚合关系的每一查询类,标准扩展器添加安全性标准。 [1859] (1) security standards: Class query for the root and the root of each query having a query class class direct or indirect relationship between the polymerization, adds standard extended safety standards.

[1860] (2)隔离标准:这些标准建自根查询类中ASP字段的值。 [1860] (2) isolation standards: These standards build ASP field values ​​from the root of the query category. 这些值从当前用户特性获取。 These values ​​are taken from the current user characteristics.

[1861] p.标准扩展器 [1861] p. Extender standard

[1862] 由于隔离标准的实施很简单,本文档将不进一步讨论。 [1862] Since the isolation standards is very simple embodiment, the present document will not be discussed further. 然而,添加安全性标准实施起来并不容易。 However, adding the implementation of security standards is not easy. 不同于隔离标准,针对根查询类和与根查询类具有直接或间接聚合关系的所有查询类,添加安全性标准。 Unlike standard isolation, for the root and root query query class class has all the queries based directly or indirectly to the polymerization relationship, added safety standards.

[1863] 当我们调用安全性模块来查询一个类的安全性标准时,所返回标准中的键与所述类相关,而并不与查找操作中的根查询类相关。 [1863] When we call the security module to query a class of security standards, the standards-based key associated with said return, and is not associated with the query lookup operation root class. 这意味着不能像原来那样添加安全性标准。 This means you can not add that security standards like the original. 必须转译这些键,以使得其变得与根查询类相关。 These keys must be translated so that it becomes the root of the query associated with the class.

[1864] 考虑图39中的UML。 [1864] FIG 39 UML consideration. 举例来说,假定查询键如下: For example, suppose the query keys are as follows:

[1865] [+,abcy+] [1865] [+, abcy +]

[1866] 在这种情况下,应针对类X和类Y (A、B和C与X具有组合关系)添加安全性标准。 [1866] In this case, should (in combination with the relationship between A, B and C and X) for class X and class Y Add safety standards. 假定针对Y的安全性标准如下: Assumed as follows for the Y's security standards:

[1867] sc.sb.sal.d.id = = 1000 [1867] sc.sb.sal.d.id = = 1000

[1868] 我们不能像原来那样添加标准,因为其并不是由X的键来表示,且因此应进行转译。 [1868] we did not add the standard as the original, because it is not represented by a bond X, and thus should be translated. 转译的最简单方法是如下向标准的键添加前缀: The easiest way translation is as follows adding the prefix to the standard keys:

[1869] abcysc.sb.sal.d. id = 1000 [1869] abcysc.sb.sal.d. Id = 1000

[1870] 这种方法的缺点是它可能会要求数据存储阶层的大量联合运算,因为组合键中的每一“点(dot) ”表示联合运算。 Disadvantage of [1870] this approach is that it may require a large amount of data storage sectors of a join operation, because each key combination "point (DOT)" indicates a joint operation. 在前一示例中,组合键“abcy sc. sb. sal. d. id”可简化成以下键“ad id”。 In the previous example, the key combination "abcy sc. Sb. Sal. D. Id" can be simplified into the following key "ad id". 但这仅在关系为1对1关系时可用。 But that is only available when the relationship is one to one relationship. 表25示出生成简化组合键的算法。 Table 25 shows a simplified composite key generating algorithm.

[1871] 表25:生成简化组合键的算法 [1871] Table 25: key generation algorithm simplified combination

Figure CN102656557BD01051

[1873] q.键扩展器 [1873] q. Key Expansion unit

[1874] 由于标准扩展需要知道所有查询键才能构建安全性标准,必须在扩展标准之前扩展键,从而意味着查询键不得含有两个使用的“通配符(wild card)”(例如,和“+”)。 [1874] Since the standard extensions need to know all of the query key to building safety standards, must be extended before the extension of the standard key, which means that the query key "wildcards (wild card)" must not contain two used (for example, and "+" ). 相反, 这些字符必须用其所表示的键来替换,而这正是键扩展器的预期目的。 Instead, these characters must be replaced with bonds that it represents, which is the key to the intended purpose of the expander.

[1875] 另外,对于稍后的变换阶段来说,也有必要进行键扩展。 [1875] Further, for the later shift stages, there is also a need for key expansion. 然而,由于在1对1键之后查询1对N键,这两类键必须分隔开。 However, due after 1-on-1 key queries 1-to-N bond, these two types of keys must be separated. 因此,键扩展器并不生成Keys结构。 Therefore, the key does not generate Keys extended configuration. 相反,键扩展器生成含有许多个分隔开的Keys结构的特殊结构。 Instead, the key expansion generates special structure comprising a plurality of spaced apart Keys configuration. 在不同原子查询中查询这些Keys结构中的每一个。 Each of these query Keys structures in the different atoms queries. 图40的UML类中示出这个结构。 40 UML class diagram is shown in this configuration.

[1876] 称作“第一”关系的键是将在下一原子查询中获取的键,而“第二”关系是指将在稍后原子查询中获取的一组键。 [1876] referred to as a key "first" relationship is acquired in the next query atom bond, and "second" refers to the relationship between a group of atoms key acquired in a later query. 这些查询获取到的值具有1对N关系,且值是从“第一”获取键组译得到。 These queries acquired value N having a pair relationship, and the key value is taken from the group translated "first" obtained. 针对1对N关系的键是“第二”关系的映射的键。 Key for one pair of N relationship is the "second" key mapping relationship. 实际上,这个结构与其所封装的Ckeys结构具有相同树状结构,但它旨在在表示1对N关系的键处分隔Ckeys结构。 In fact, the structure of the package and it has the same structure Ckeys tree structure, but it is intended to represent a bond at one-to-N relationship Ckeys partition structure.

[1877] 处理Select执行器中1对N关系的方法实际上递归地遍历所扩展的Keys结构且在每一递归阶层执行必要的原子查询。 [1877] The method of process-to-N relationship Select actuator actually traversed recursively in the expanded configuration and perform the necessary Keys atoms recursive queries each class.

[1878] 尽管扩展键是Select Adapter (选择适配器)执行的较早过程,但由于其仅取决于元数据,而并不取决于用户数据,因此选择适配器可以是高速缓存感知处理器。 [1878] While the earlier process is extended key Select Adapter (adapter selection) is performed, but because it is only dependent on the metadata, without depending on the user data, select the adapter may be a cache-aware processor.

[1879] r.键收集器 [1879] r. Button trap

[1880] 稍后可看出,数据存储需要知道查询所涉及的所有表,以及如何联合这些表。 [1880] As can be seen later, data storage needs to know all the tables involved in the query, and how a combination of these tables. 为了指定这些表,必须收集查询中存在的所有键。 To specify these tables, queries must collect all the keys that exist.

[1881] 键收集器执行这个任务。 [1881] key collectors perform this task. 键收集器遍历选定上下文中存在的许多个结构(例如,查询键、分组功能、次序键和标准)且收集这些结构中的键。 Key collector through the selected number of structures present context (e.g., a query key, the grouping function, the order of keys and standards) and the collection of these key structures. 这个处理器的输出是含有所有所收集键的单个Keys结构。 The output of the processor is a structure that contains all of the collected single bond Keys.

[1882] 键收集器不属于适应阶段,也不属于变换阶段,因为它不生成任何数据存储结构。 [1882] Collector key does not belong to the adaptation phase, nor shift stage, because it does not generate any data storage structure. 然而,由于键收集必须遵循适应过程,键收集器可以是高速缓存感知处理器。 However, since the key collection must follow the process of adaptation, key collector may be a cache-aware processor.

[1883] s.组译器 [1883] s. Assembler

[1884] 这个处理器负责依据Data Store Service (数据存储服务)所提供的记录列表创建Value对象。 [1884] The processor is responsible for creating a list of Value objects based on records Data Store Service (data storage service) provides.

[1885] 组译器迭代Record实例的这个列表,并依据KeyExpander所扩展的所要键创建Value。 [1885] assembler iteration of this list Record instances, and based on the expanded KeyExpander the key to create Value. 在要求待提取关系的Find (查找)操作的情况下,组译器多次扫描这个列表,以便创建这些关系的实例。 In the case of the requirements to be extracted relations Find (search) operation, assembler multiple scans this list to create instances of these relationships.

[1886] 组译值可以是取决于值的大小(待设字段的个数)的昂贵步骤。 [1886] value may be set depending on an expensive translation step size value (the number of fields to be provided) of. 为了优化这个关键步骤,Palmyra框架使用多线程方面来使得组译步骤并行。 To optimize this critical step, Palmyra frame using multithreading to assemble such a parallel step.

[1887] 并不是所有查找操作都能使用多线程组译器,因此,组译器依据所组译的键来决定是否并行工作。 [1887] Not all lookup operation can use multiple threads assembler, therefore, the assembler to decide whether to work in parallel in accordance with the set key translation.

[1888] t.收集标准的1对N键 [1888] t. Standard collected to-N bond

[1889] 考虑以下PQL语句: [1889] Consider the following PQL statement:

[1890] select+from Country where city.population>1000000 [1890] select + from Country where city.population> 1000000

[1891] 由于关系“city (城市)”是I对N关系,且前一查询返回的每一国家具有满足搜索标准的至少一个城市。 [1891] because of "city (city)" is the relationship I to N, and a return of the query before each country has at least one city to meet the search criteria. 等效SQL语句将是: Equivalent SQL statement would be:

[1892] select T·氺from Country T join City T_city on T.pk = T_city.country$pk where T_city.population>1000000 [1892] select T · Shui from Country T join City T_city on T.pk = T_city.country $ pk where T_city.population> 1000000

[1893] 当我们从城市关系查询字段时产生问题。 [1893] a problem when we query field from city relationship. 举例来说,考虑以下PQL语句: For example, consider the following PQL statement:

[1894] select+,city.+from Country where city.population>1000000 [1894] select +, city. + From Country where city.population> 1000000

[1895] 由两个SQL语句来执行这个查询。 [1895] to execute the query by the two SQL statements. 第一个SQL语句与先前所示的SQL语句相同。 The first SQL statement with the SQL statement shown in the previous same. 如果我们遵循选择执行器所执行的相同步骤,那么查询将是: If we choose to follow the same steps performed by the actuator, the query would be:

[1896] select T. pk, T_city . *from Country T join City T_city on T. pk = T_ city.country$pk where T_city.population)1000000 [1896] select T. pk, T_city. * From Country T join City T_city on T. pk = T_ city.country $ pk where T_city.population) 1000000

[1897] 然而,对于每一获取到的国家,这个查询将仅获取人口超出1000000的城市。 [1897] However, for each country get to this query will get only urban population exceeded 1,000,000. 稍后同步这些国家将导致人口未超出1000000的城市被删除,而这不是我们的预期行为。 Synchronize these countries will lead to later population not exceeding one million city is deleted, and this is not what we expected behavior.

[1898] 解决方案是改为执行以下SQL语句: [1898] The solution is to change the following SQL statement:

[1899] select distinct T.pk,T_city.*from Country T join City T_city on T.pk = T_city . country$pk join City C_city on T. pk = C_city. country$pk where C_ city. population)1000000 [1899] select distinct T.pk, T_city. * From Country T join City T_city on T.pk = T_city. Country $ pk join City C_city on T. pk = C_city. Country $ pk where C_ city. Population) 1000000

[1900] 在这个查询中,我们将表City与表Country联合两次,从而针对表City给出2个不同别名。 [1900] In this query, we will table a joint City and Country table twice, giving two different aliases for the table City. 从第一别名获取表City的字段,而依据第二别名指定条件。 City of obtaining table fields from the first alias and the second alias based on specified criteria. 关键词“distinct”用来避免获取每一城市的多个复制。 Keyword "distinct" to avoid acquiring multiple copy of each city.

[1901] 由于标准的1对N键被给出不同别名,必须用键控制器来标记,以使得变换器生成适合的表联合。 [1901] Since the standard-to-N bonds are given different aliases, the controller must be marked with the key, so that the combined converter to generate a suitable table.

[1902] u.Select Transformer (选择变换器) [1902] u.Select Transformer (inverter selection)

[1903] 每次Select Executer想要生成数据存储查询时,Select Executer调用选择变换器(Select Transformer)。 When the [1903] Every time Select Executer want to generate data stored queries, Select Executer call Select converter (Select Transformer). 因此,Select Transformer将原子查询(其属性可从上下文获得)变换成数据存储查询。 Thus, Select Transformer atomic queries (which properties may be obtained from the context) into a data store query.

[1904] Select Transformer的实施含有对其他处理器或变换器的一连串调用。 [1904] Select Transformer embodiment contains a series of calls to other processors or converters. 这些处理器将上下文中的结构如下变换成其数据存储的对应部分: These processors following structural context into which a corresponding portion of the stored data:

[1905] Queried/Needed Keys (查询/需要的键)_>Data Store Meta Record (数据存储元记录)(所查询字段) [1905] Queried / Needed Keys (query / key required) _> Data Store Meta Record (recording data storage element) (the query fields)

[1906] Queried Class (查询的类)+Collected Keys (收集的键)_>Data Store Table Structure (数据存储表结构) [1906] Queried Class (query class) + Collected Keys (collection keys) _> Data Store Table Structure (data storage table structure)

[1907] Criterion Data Store Condition (标准数据存储条件) [1907] Criterion Data Store Condition (standard data storage conditions)

[1908] Group Functions (组函数)->Data Store Functions (数据存储函数)(求和、最大值、最小值等) [1908] Group Functions (Function Group) -> Data Store Functions (data storage function) (sum, maximum, minimum, etc.)

[1909] Group Fields (组字段)(次序字段)-Data Store Order Record (数据存储次序记录) [1909] Group Fields (group field) (order of the fields) -Data Store Order Record (recording data storage order)

[1910] Order Fields (次序字段)_>Data Store Order Record (数据存储次序记录) [1910] Order Fields (order of the fields) _> Data Store Order Record (recording data storage order)

[1911] Select Transformer执行相对繁重的操作,且因此其必须是高速缓存感知处理器。 [1911] Select Transformer operation performed relatively heavy, and thus it must be cache-aware processor.

[1912] V.Key Transformer (键变换器) [1912] V.Key Transformer (key converter)

[1913] 无论存在于所查询键中还是搜索标准中还是任何其他结构中,原子查询中的每一键应变换成数据存储字段。 [1913] Whether present in the query in the search criteria or key or any other structures, the atoms of each key query strain into a data storage field. 数据存储字段是前缀表示字段所存在的表别名且后缀是字段名称的组合键。 Prefix data storage field is a field indicating the existence of an alias table is a bond, and the suffix field name combination. 由于所有变换器都需要进行键的这类变换,应由所有变换器共用的另一对象来进行这个通用操作。 Since all such converters are required for conversion key to be borne by all the other objects common to the converters General Procedure. 这个对象是Key Transformer。 This object is Key Transformer.

[1914] 一些键可能会在原子查询中出现多次且呈不同结构。 [1914] Some keys may appear in the form of atoms and query multiple different configurations. 因此,可调用键变换器来多次变换相同键。 Thus, the key converter can be called multiple times to transform the same key. 为了降低这类重复变换的成本,键变换器必须维护所变换键的内部映射。 To reduce the cost of such repeated transformation, the key converter must maintain an internal mapping transformation key.

[1915] 这意味着键变换器是无法在不同操作中重复使用的完整状态对象。 [1915] This means that the key converter is a complete state of the object can not be re-used in different operations. 然而,如果再次执行相同查询,那么可高速缓存键变换器以供稍后使用。 However, if you execute the same query again, you can cache key converter for later use. 因此,可将键变换器传递到上下文中的变换器中。 Thus, the key may be passed to the converter in the context converter.

[1916] 变换器必须遵循以下规则: [1916] converter must follow these rules:

[1917] (I) Relations (关系):是composite还是simple,仅生成表别名。 [1917] (I) Relations (relations): is a composite or simple, generating only a table alias.

[1918] (2) Keys (键):是composite还是simple,表示simple属性,生成完整的数据存储字段(例如,别名+字段名称)。 [1918] (2) Keys (key): is simple or composite, showing simple attributes to generate a complete data storage field (e.g., field name alias +).

[1919] (3)相同关系或键生成相同别名和数据存储字段。 [1919] (3) or the same relationship to generate the same key alias and a data storage field.

[1920] ⑷两种不同的关系永远无法生成相同别名。 [1920] Two different relationship ⑷ never be able to generate the same alias.

[1921] (5)两种不同的键永远无法生成相同数据存储字段,但假定它们前缀相同且后缀表示在相同类中宣称的simple属性,它们可能会生成相同别名。 [1921] (5) two different keys can never produce the same data storage field, but they assume that the same prefix and suffix claimed in simple attributes in the same class, they may produce the same alias.

[1922] (6)在标准中标记为1对N键的键是不同组的键。 [1922] (6) designated 1-to-N bond is a bond of a different set of keys in the standard. 变换这类键不应生成由其他键生成的相同别名。 Such conversion should not generate the same key generated by another key alias. 然而,这组中的变换仅遵循先前的规则。 However, this group transformed only to follow the previous rules.

[1923] Key Transformer将所扩展的查询键变换成查询数据存储字段的元记录。 [1923] Key Transformer The expanded query metadata record lookup key into the data storage field. 变换很简单,因为它仅迭代叶键并调用每一键的键变换器。 Transformation is very simple, because it only calls for each iteration leaf key and key key converter.

[1924] 举例来说,考虑图41A和图41B中的UML图,同时还考虑以下PQL语句: [1924] For example, consider the UML diagram in FIG. 41A and FIG. 41B, PQL also consider the following statement:

[1925] select+,y.+,yz+from X where pk>1000 [1925] select +, y. +, Yz + from X where pk> 1000

[1926] 通过执行一个SQL查询来执行上述查询: [1926] by executing a SQL query to perform the above query:

[1927] XView是X和Y的视图,而ZView是Z的视图。 [1927] XView is a view of X and Y, and Z is a view ZView. 在这个情境下,由于将不组译类Y的实例,无需获取Y的主键。 In this scenario, since the group is not translated instances of class Y, Y without acquiring primary key. 相反,应获取X (或XView)的主键,且第二查询将如下进行: Instead, obtaining X (or XView) primary key, and the second query as follows:

[1928] select distinct T.pk,T_y_z . *from XT left Join Y T_y on Ty$pk = T_ y.pk join Z T_y_z on T_y.pk = T_y_z.symY$pk where T.pk>1000 [1928] select distinct T.pk, T_y_z. * From XT left Join Y T_y on Ty $ pk = T_ y.pk join Z T_y_z on T_y.pk = T_y_z.symY $ pk where T.pk> 1000

[1929] 进行这个更改是因为,在执行第二查询之前,所组译值的高速缓存将仅含有类XView的实例,且针对这些实例的键将是X的主键。 [1929] This change is performed because, before the second query, the cache containing the value assembler class XView example only, and these examples for the key is the primary key of X.

[1930] 实际上,Select Executer负责确定待添加的隐式键,因为Select Executer是递归得迭代待获取1对N键的处理器,且因此Select Executer是知道前一递归阶层的主键的唯一处理器。 [1930] In fact, responsible for determining the implicit Select Executer key to be added, because Select Executer recursive iterations until acquisition processor available to-N bonds, and thus is the only processor Select Executer primary key hierarchy known previous recursion .

[1931] w.Table BuiIder (表构建器) [1931] w.Table BuiIder (Table builder)

[1932] Table Builder构建表结构,其指定表如何联合且别名如何提供给这些表。 [1932] Table Builder to build a table structure, which specifies how and how the joint table alias available to these tables. 为了构建这个结构,Table Builder递归地遍历所有所收集键,因为所收集键含有查询中存在的所有键。 To build this structure, Table Builder recursively through all of the collected key, because all the keys in the collection key contained in the query exists. Table Builder使用Key Transformer来确定表的别名。 Table Builder Key Transformer used to determine the alias table.

[1933] 如下联合表: [1933] Joint following table:

[1934] (I)Relation joins (关系联合):将每一关系变换成两个相关类的两个表之间的联合。 [1934] (I) Relation joins (United relationship): each relationship into the joint between the two tables two related classes.

[1935] (2) Generalization joins (泛化联合):将超类的表联合到其子类的表。 [1935] (2) Generalization joins (United generalization): Table joint superclass to a subclass of Table.

[1936] (3)从表示关系的字段的元数据获取关系联合的条件。 [1936] (3) acquisition condition joint relationship metadata field indicates the relationship between the.

[1937] (4)泛化联合的条件是Tl.pk = T2.pk,其中Tl是超类的表的别名,且T2是子类的表的别名。 [1937] (4) combined with the proviso that generalization Tl.pk = T2.pk, where Tl is the superclass of the alias table, an alias table T2 and subclasses.

[1938] (5)非强制关系的联合是左联合。 [1938] (5) Non-mandatory joint relationship is left joint. 强制关系或泛化的联合是内联合。 Mandatory relationship or generalization is a joint Joint.

[1939] 2 .Pa Imyra中的历史服务 History Services [1939] 2 .Pa Imyra in

[1940] Palmyra框架使得每当类型实例更改时保存其图象成为可能。 [1940] Palmyra frame type instance that changes whenever possible to save its image. 为了实现这一目标, 类型必须实施类型Historicized的接口。 To achieve this goal, the type must implement Historicized type of interface. 参照图46。 Referring to FIG. 46.

[1941] 对于每一类型Historicized,Persistence层创建另一表及其原始表,以便保存所述类型实例的图象。 [1941] For each type Historicized, Persistence layer creating another table and the original table, in order to preserve the picture type instances. 表名称添加由后缀项History_。 Add a table name suffix entry History_.

[1942] 注意,这个表含有列pk_,但不是唯一列,因为相同实例的图象具有实例本身的pk。 [1942] Note that this table contains columns PK_, but not the only column, the same image as an example of the instance itself having a pk. 向这个表的列(pk_、creationDateJ)添加唯一约束,且表History的列于原始表的列相同。 The only constraint is added to the list of (pk_, creationDateJ), and the History table listed in the same column of the original table.

[1943] 每次创建、修改或删除实例时,图象保存在表History中。 [1943] Each time you create, modify or delete instance, the image stored in the table in History. 可使用类型HistoricizedOnDelete的接口来完成异常,其使得系统仅可在删除操作中保存图象。 HistoricizedOnDelete abnormality may be accomplished using the type of interface, which enables the system can only be stored in the image deleting operation.

[1944] 通过按同步事件的精确时间填入cr eat i onDate列和按值Long . max填入updateDate列来保存图象。 [1944]. Max updateDate filled column by filling the column cr eat i onDate by value and by Long precise time synchronization event to save the image.

[1945] 当需要保存另一图象时,上一图象的updateDate值将取当前同步日期,就像新图象的creationDate列等。 [1945] When the need to save another image on an image will take the current value of the synchronization updateDate date, as a new image, and the like creationDate column.

Figure CN102656557BD01081

[1947] 示例: [1947] Example:

[1948] 如果要求得到pk= 10且日期介于2009年8月8日到2009年8月11日之间的Person (人)实例的图象,其中,那么系统将执行如下查询: [1948] If the date is between 10 and images the Person (al) Examples of between August 8, 2009 to August 11, 2009 requirements are pk =, wherein the system performs the following query:

Figure CN102656557BD01082

[1950] 3.带有大量结果的查找操作 [1950] 3. Find operation with a large number of results

[1951] 对于执行可能返回大量结果的查找操作来说,Palmyra框架足够安全。 [1951] For the execution might return a large result of the search operation is, Palmyra framework adequate security. 获取大容量可能引起存储器问题。 To obtain a large capacity may cause memory problems.

[1952] 所用技术是将查找操作中所要求实例的pk带入使用已传递标准的所关注表的pk 列,然后,当迭代结果的一些日期时,系统使用所获得的Pk子列表来提取结果页面。 [1952] As used technique is to find the operation required in instances pk into using the passed standard pk interest column of a table, and then, when some of the date iteration result, the system uses Pk sublist the obtained extraction result page.

[1953] 使用类LazyPageByPageCcl lection来完成页面查找操作。 [1953] uses the class LazyPageByPageCcl lection to complete page of the search operation. 这个类使得按序随机访问结果成为可能。 This class allows sequential random access results possible.

[1954] 使用以下方法来通过获得特殊迭代器来完成按序访问: [1954] using the following method to be completed by obtaining a special iterator sequential access:

Figure CN102656557BD01091

[1956]通过设定待获取页码来完成随机访问,然后使用以下方法来访问: [1956] random access is done by setting the page number to be obtained, then use the following methods to access:

Figure CN102656557BD01092

[1958] 以及 [1958] and

Figure CN102656557BD01093

[1960] a.Synchronize Actions (同步动作) [1960] a.Synchronize Actions (synchronization)

[1961] 为了同步值,实体管理器依据动作类型(删除、插入或更新)调用合适“ProcessExecuter” aPalmyra中操纵的所有值都具有类型Deep Map。 [1961] For synchronization value, the entity manager according to the type of operation (delete, insert or update) invokes the appropriate "ProcessExecuter" All values ​​are manipulated aPalmyra type having Deep Map. 因此,出于这个原因, ProcessExecuter检查完整性和权限,并调用遍历所有对象关系且调用合适Mapper (映射器)的Traverser (遍历器)〇 Therefore, for this reason, ProcessExecuter check the integrity and rights, and calls to traverse all object relationships and call the appropriate Mapper (mapper) of Traverser (walker) billion

[1962] b. ProcessExecuter (过程执行器) [1962] b. ProcessExecuter (execution unit)

[1963] 图42的UML中给出ProcessExecuter的设计模型。 UML [1963] FIG. 42 is given ProcessExecuter design model.

[1964] 所有同步动作的超类是类“ProcessExecuter”。 [1964] all synchronized actions superclass is a class "ProcessExecuter". 删除动作的处理不同于另外2个动作(插入和更新)。 Further operation is different from the process of deleting two operations (insert and update). 出于这个原因,我们具有2个子类“SynchronizeExecuter (同步执行器)” 和“DeleteExecuter (删除执行器)”。 For this reason, we have two sub-categories "SynchronizeExecuter (synchronous actuators)" and "DeleteExecuter (delete actuators)."

[1965] c · Traverser (遍历器) [1965] c · Traverser (walker)

[1966] 图43的UML图中给出Traverser的设计模型。 FIG Traverser UML design model [1966] 43 given in FIG.

[1967] 存在以下两类遍历器: [1967] there are two types walker:

[1968] (I) SingleTraverser (单遍历器):遍历单个值且对这个值执行动作。 [1968] (I) SingleTraverser (single walker): traversing a single value and performing operation on this value. 单个Traverser具有2个子类“DeIeteTraverser (删除遍历器)”和“InsertTraverser (插入遍历器)”。 Single Traverser has two subclasses "DeIeteTraverser (Delete walker)" and "InsertTraverser (Visitor insertion)."

[1969] (2) UpdateTraverser (更新遍历器):遍历2个值,其中旧值从数据库获得,而新值由用户修改。 [1969] (2) UpdateTraverser (Update walker): traversing the two values, wherein the old value obtained from the database, the new value is modified by the user.

[1970] d.Mapper (映射器) [1970] d.Mapper (mapper)

[1971] 图44的UML图中给出Mapper的设计模型。 [1971] Mapper FIG UML design model 44 are given in FIG. 数据库中最后执行的动作时删除、插入或更新动作。 Delete the last action performed in the database, the insert or update action. 出于这个原因,我们具有以下3个类:类De IeteAct ion (删除动作)、类UpdateAction (更新动作)和类InsertAction (插入动作)。 For this reason, we have the following three categories: Class De IeteAct ion (deletion), class UpdateAction (update action) and class InsertAction (insert action).

[1972] 所有同步动作的超类是类SynchronizationAction (同步动作)。 [1972] All of the superclass is synchronized actions based SynchronizationAction (synchronous operation).

[1973] 4.Persistence Layer Listener (持久性层监听器) [1973] 4.Persistence Layer Listener (Listener persistence layer)

[1974] 持久性层使得干扰查找、组译、保存和删除操作成为可能。 [1974] persistence layer allows interference to find, assemble, save, and delete operations possible.

[1975] 搜索监听器:为了操作针对搜索操作的监听器,程序员必须实施接口SearchListener (搜索监听器)并将实现器寄存到关注搜索类型的Classe中。 [1975] Search listener: to operate the listener for the search operation, the programmer must implement interfaces SearchListener (search listeners) and is implemented to register interest in Classe search type. 在开始所需查找操作之前调用这个监听器。 Call this listener before starting the operation you want to find. 这个监听器通常用来更改已传递标准。 The listener is often used to change the transfer standard.

[1976] [1976]

Figure CN102656557BD01101

[1977] 组译监听器:就像前一类监听器,程序员必须实施接口AssembleListeneH组译监听器)并寄存这个实现器: [1977] assembler listeners: Like the former listener, the programmer must implement the interface AssembleListeneH assembler listeners) and register the implementor:

[1978] [1978]

Figure CN102656557BD01102

[1979] 对于同步操作来说,在以下一个或更多个情形下程序员必须实施接口SynchronizeListener (同步监听器),并寄存待调用的实现器: [1979] For synchronous operation, in one or more of the following situations must embodiment programmer interfaces SynchronizeListener (synchronous listeners), and registered to be called is realized:

[1980] 插入之前。 [1980] prior to insertion.

[1981] 插入成功之后。 [1981] After a successful insertion.

[1982] 插入失败之后。 [1982] inserted after the defeat.

[1983] 更新之前。 [1983] before the update.

[1984] 更新成功之后。 [1984] After a successful update.

[1985] 更新失败之后。 [1985] After the update fails.

[1986] [1986]

Figure CN102656557BD01103

[1987] 注意,寄存使用经由BSFactory · getPersistenceDriver ()获得的持久性驱动器; [1987] Note that the use of persistent storage drive is obtained via BSFactory · getPersistenceDriver ();

[1988] 注意:由于运行时完成寄存,那么程序员必须使用条件性子句对监听器必须起作用时的情形进行控制。 [1988] Note: due to the completion of registering a running time, the programmer must use the conditional clause of the case when the listener function must be controlled.

[1989] 对监听器的调用是累计的,这意味着除了所关注类型的监听器以外,Persistence 层还调用针对所关注类型实施的接口寄存的所有监听器。 [1989] calls the listener is cumulative, which means that in addition to the type of listener interest beyond, Persistence layer also calls all listeners for the type of interest the implementation of the interface registers. 使用监听器适配器来收集这些监听器,所述监听器适配器对针对所关注类型必须被调用的所有监听器进行分组。 Listeners use these adapters to collect listener, the listener adapter for all listeners for the type of interest must be called grouping.

[1990] 监听器适配器被高速缓存,以使得每次要求监听器适配器时Persistence层无需进行重新计算。 [1990] Listener adapter is cached, so that each layer is required Persistence without recalculating the listener adapter.

[1991] a.数据库连接服务 [1991] a. Database Connection Service

[1992] 持久性层基于经由JDBC与数据库直接通信的数据连接服务。 [1992] Persistent layer is based on a data connection via a direct communication with the JDBC database services. 为了优化性能数据库,供应商通常提供更好地支持其产品的特定驱动器。 In order to optimize the performance of the database vendors typically provide a specific drive to better support its products. 将数据库连接服务与实体管理器分开,使得能够针对每一供应商使用正确的驱动器而无需在持久性层中进行任何修改。 The separate database connection services with the entity manager, without making any modification in the persistence layer to use the correct driver for each vendor.

[1993] 本领域技术人员从上述规范将易于了解优选实施例的上述和其他优势。 [1993] Those skilled in the art will readily appreciate from the specification above and other advantages of the preferred embodiment. 因此,本领域技术人员应理解,可在不偏离本发明的广泛发明概念的情况下对上述实施例进行更改或修改。 Thus, those skilled in the art should be understood that the embodiments described above changes or modifications without departing from the broad inventive concepts of the present invention. 因此,应了解,本发明并不限于本文描述的特定实施例,而是预期包括所附权利要求书的范围和精神内的全部更改和修改。 Thus, it should be understood that the invention is not limited to the particular embodiments described herein, but is intended to include the entire range of changes and modifications within the spirit and scope of the appended claims.

[1994] 这个层负责处理针对时刻Oracle、MySql、MS SqlServer以及DB2的不同RDBMS。 [1994] This layer is responsible for processing time Oracle, MySql, MS SqlServer and of different RDBMS DB2.

[1995] 类似于Persistence层的数据存储层使用上下文模式。 [1995] Persistence similar to the data storage layer using a context model layer. 另外,这个层广泛地使用多态,以便针对每一KDBMS建立方言。 Further, this layer is widely used multi-state, so as to establish for each dialect KDBMS.

[1996] 数据存储层使用标准SQL规范处理DBMS,但在一些情况下,可能会由于标准SQL与供应商特定SQL之间的不同而产生一些偏差。 [1996] Data storage layer using standard SQL specification the DBMS processing, but in some cases it may be due to the difference between the standard and vendor-specific SQL generated SQL some deviations.

[1997] 管理与RDBMS的通信的缺省类是Dbds,且处于对上文提到的偏差的考虑,Palmyra 框架形成这个主类的子类。 [1997] with a default management class communication is the RDBMS Dbds, and in consideration of the above mentioned variations, Palmyra frame forms the main class subclasses. 参照图45。 45 Referring to FIG.

[1998] 使用规程在数据存储成中完成对KDBMS的处理,且规程可独自进行整个操作,或者也可调用一些其他规程来完成作业。 [1998] using the procedure to complete the process in the data storage into KDBMS, and the entire operation procedure may be performed alone, or can call other procedures to complete the job.

[1999] 类Dbds提供对不同规程的访问,所述不同规程负责执行从Persistence层变换的操作。 [1999] Dbds class provide access to different procedures, different protocols is responsible for executing the operation from the converted Persistence layer. 当Dbds的子类为了提供适合RDBMS而逾越某个procedure getter时,多态清晰地出现。 When Dbds subclass RDBMS and beyond to provide a suitable procedure getter, polymorphic clearly appear.

[2000] 所有数据存储规程实施接口Procedure: [2000] All data stored procedures embodiment Interface Procedure:

Figure CN102656557BD01111

[2002] 示例: [2002] Example:

[2003] 在MySql中,为了获得行号,SQL语句应使用表达式@rn,而不是Oracle中所使用的rownum,这意味着负责insert-from-select语句的规程必须特定于供应商,因此,在Dbds中返回这类规程的方法在相关RDBMS Dbds类中有所逾越。 [2003] In MySql, in order to obtain the line number, SQL statements, you should use the expression @rn, rather than rownum Oracle used, which means that responsible procedures insert-from-select statement must be vendor-specific, and therefore, return of such procedures in the DBDS methods are beyond the RDBMS Dbds related class.

[2004] 在Dbds 中: [2004] In Dbds in:

[2005] [2005]

Figure CN102656557BD01121

[2006] 在MySqlDbds 中: [2006] In MySqlDbds in:

[2007] [2007]

Figure CN102656557BD01122

[2008] 本领域技术人员从上述规范将易于了解优选实施例的这些和其他优势。 [2008] Those skilled in the art from the foregoing specification will be readily understood and other advantages of these preferred embodiments. 因此,本领域技术人员应理解,可在不偏离本发明的广泛发明概念的情况下对上述实施方案进行更改或修改。 Thus, those skilled in the art should be understood that changes or modifications to the embodiments described above without departing from the broad inventive concepts of the present invention. 因此,应了解,本发明并不限于本文描述的特定实施方案,而是旨在包括所附权利要求书的范围和精神内的全部更改和修改。 Thus, it should be understood that the invention is not limited to the particular embodiments described herein, but is intended to include the entire range of changes and modifications within the spirit and scope of the appended claims.

Claims (13)

1. 一种用于使用计算机系统来生成软件应用程序的方法,其包括以下步骤: (a)在所述计算机系统中实施的图形设计工具(410)中对业务过程建模; ⑹通过使用表示所建模的业务过程的一个或更多个状态图以及表示数据模型并表示应用到所建模的业务过程的预定的业务规则的一个或更多个类图,在所述计算机系统中创建至少一个UML模型,以形式化在步骤(a)中建模的所述业务过程,其中一个或更多个范型被添加到所述一个或更多个类图的类; (c)通过使用预定的语法来检测语法错误,在所述计算机系统中验证所述至少一个UML 模型(420),以验证所述一个或更多个状态图或所述一个或更多个类图或者所述一个或更多个状态图和所述一个或更多个类图的组合,产生至少一个经验证的UML模型; ⑹在所述计算机系统中将在步骤(c)中验证的所述至少一个UML模型变换成 1. A method of using a computer system for generating a software application, comprising the steps of: (a) graphic design tools (410) implemented in the computer system in the business process modeling; ⑹ represented by using a modeled business process one or more data representing a state diagram and the model and represents a predetermined business rules applied to the modeled business processes or more class diagram, created at least in the computer system a UML model, the formal business process to step (a) is modeled, wherein the one or more paradigms is added to the one or more classes class diagram; (c) by using a predetermined syntax to detect syntax errors, verification of the at least a UML model (420) in the computer system, to verify the one or more state diagram or the one or more classes, or one or FIG. FIG composition and more states of the one or more class diagram, generating at least one verified UML model; ⑹ verified in the computer system in the step (c) said at least one transformed UML model to make 来生成所述软件应用程序的功能性和非功能性方面的元数据,所述软件应用程序是作为插件位于UML可视化建模工具的顶层的层;以及(e)生成包含所述至少一个经验证的UML模型的项目,其中生成所述项目包括去除所有冲关的沮型。 Generating the software application metadata functional and non-functional aspects of the software application is located as a plug-visual UML modeling tool top layer; and (e) generating at least one verified comprising UML model items, wherein said generating includes removing all items ju washed off type.
2. 根据权利要求1所述的方法,其中所述变换步骤包括生成所述软件应用程序(430)。 2. The method according to claim 1, wherein said converting step includes generating the software application (430).
3. 根据权利要求2所述的方法,其中所生成的所述软件应用程序与先前存在的库(440) 相组合。 3. The method according to claim 2, wherein the generating of the software application and pre-existing library combined (440).
4. 根据权利要求2所述的方法,其中所生成的所述软件应用程序与手动编写的代码(450)相组合。 The method according to claim 2, wherein the code generated by the software application written with a manual (450) in combination.
5. 根据权利要求1所述的方法,其中所述元数据包括应用程序代码、约束模型、自动化文件和文档中的至少一个。 5. The method according to claim 1, wherein the metadata comprises application code, model constraints, automation and documentation at least one.
6. 根据权利要求2所述的方法,其中所生成的所述应用程序包括预定的功能性要求集合。 6. The method according to claim 2, wherein the application comprises generating a predetermined set of functional requirements.
7. 根据权利要求2所述的方法,其中所生成的所述应用程序包括预定的非功能性要求集合。 7. The method according to claim 2, wherein the application comprises generating a predetermined set of non-functional requirements.
8. 根据权利要求7所述的方法,其中所述预定的非功能性要求集合包括安全性管理、装载平衡、事务管理、用户接口和在其上构建算法的骨架至少之一。 8. The method according to claim 7, wherein said predetermined set of non-functional requirements include security management, load balance, transaction management, user interface, and at least one skeleton construction algorithm thereon.
9. 根据权利要求2所述的方法,其中生成所述软件应用程序的步骤包括向所生成的所述应用程序添加手动编写的代码。 9. The method according to claim 2, wherein said generating comprises adding software application code written to the application program manually generated.
10. 根据权利要求1所述的方法,还包括借助部署工具(490)部署目标应用程序。 10. The method according to claim 1, further comprising a means of deploying the target application deployment tool (490).
11. 根据权利要求1所述的方法,其中所述语法包括用于类、状态、字段和关系的范型。 11. The method according to claim 1, wherein said grammar comprises a class, status, and the relationship between field paradigm.
12. —种用于使用计算机系统来生成软件应用程序的方法,其包括以下步骤: (a)在所述计算机系统中实施的图形设计工具(410)中对业务过程建模; ⑹通过使用表示所建模的业务过程的状态图以及表示数据模型并表示应用到所建模的业务过程的预定的业务规则的类图,在所述计算机系统中创建至少一个UML模型,以形式化在步骤(a)中建模的所述业务过程,其中所述业务过程中的步骤通过所述状态图的状态来表达,且所述状态的互连性通过转换来表达,其中所述状态之间的转换在满足条件后发生; (c)通过使用预定的语法来检测语法错误,在所述计算机系统中验证所述至少一个UML 模型(420),以验证所述状态图或者所述类图或所述状态图和所述类图的组合,产生经验证的UML模型;以及⑹生成所述软件应用程序(430),使得通过将经验证的所述UML模型变换成源代 12. The - method for using a computer system to generate a software application, comprising the steps of: (a) graphic design tools (410) implemented in the computer system in the business process modeling; ⑹ represented by using FIG state modeled business process model and the data representing the class diagram and represents a predetermined business rules applied to the modeled business process to create at least a UML model in the computer system, to formal in step ( the service a) modeling a process, wherein the state of the business process step through said state diagram expressed, and the interconnectivity state expressed by the conversion, wherein the conversion between the state occurs after the condition; (c) a syntax error is detected by using a predetermined syntax verification on the computer system at least one of the UML model (420) to verify the state of FIG FIG or the class or the FIG state combination and the class diagrams, UML model to produce validated; ⑹ and generating the software application (430), such that by the UML model validated into source code 、将经变换的代码与先前存在的库和配置文件相组合,能够将所述软件应用程序部署到服务器,其中所述软件应用程序作为插件被部署为位于UML可视化建模工具的顶层的层。 The code conversion by the pre-existing libraries and configuration files in combination, it is possible to deploy the application to the server software, wherein the software application is deployed as a plug located visual UML modeling tool top layer.
13.根据权利要求12所述的方法,其中步骤(d)包括将经验证的UML模型变换成用来生成所述软件应用程序的功能性和非功能性方面的元数据。 13. The method according to claim 12, wherein step (d) comprises proven to UML model into meta data generation and non-functional aspects of the software application.
CN201080056912.0A 2009-10-14 2010-08-17 Automation enterprise software development CN102656557B (en)

Priority Applications (3)

Application Number Priority Date Filing Date Title
US25142009P true 2009-10-14 2009-10-14
US61/251,420 2009-10-14
PCT/IB2010/002037 WO2011045634A1 (en) 2009-10-14 2010-08-17 Automated enterprise software development

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201610670224.2A CN106445494A (en) 2009-10-14 2010-08-17 Automated enterprise software development

Publications (2)

Publication Number Publication Date
CN102656557A CN102656557A (en) 2012-09-05
CN102656557B true CN102656557B (en) 2017-11-21

Family

ID=43034446

Family Applications (2)

Application Number Title Priority Date Filing Date
CN201610670224.2A CN106445494A (en) 2009-10-14 2010-08-17 Automated enterprise software development
CN201080056912.0A CN102656557B (en) 2009-10-14 2010-08-17 Automation enterprise software development

Family Applications Before (1)

Application Number Title Priority Date Filing Date
CN201610670224.2A