Figure 7 Define Attribute (Properties) window
4.保存。 你已经建立了包含了两级的发票事务: ? 一个基本级,我们详细说明了发票头的所有要信息。 ? 一个嵌套级,我们在这里列入了在每一个发列将会重复的信息。
注意我们没有用行号作为发票行的主键。这是有设计决定。通过用产品号作为发票行的主键,我了对一个相同的产品,将不会有两行在同一个不太好理解
必票意识的们定义票。 //
Figure 8
Invoice Structure 通用关系假设 GeneXus方法的一个键元素是有同一个名字的属性是同一个属性;这被称为通用关系假设,它说明: ? 任何概念上相同的的东西都应该有相同的名字。 ? 不同概念,就不能同名。 这使我们能通过它的名字在其他GeneXus对象中用它一个属性。GeneXus基于属性名字在数据模式中建立表之间的关系(外键)。 GeneXus Incremental Knowledge-Based (GIK)术语 ARTech 已经定义了一个循环但是标准的属性术语GIK,被广泛的应用于GeneXus群体。在这种术语里,一个属性名字由四部分组成,它们当中的一些是可选的: Object+Category[+Qualifier][+Complement] 第 11 页 共 77 页
? Object:被属性描述的真正实体。这经常(也不绝对)是被属性定义的事务的名字,所以它被存在和事务相关联的一个表中,例如:发票,顾客,产品和行。 //这个行不太好理解 ? Category:属性的种类。它定义了在对象和应用环境中属性显示的角色。例如:编号,日期,发票,描述等。 ? Qualifiter和Complement 是可选项。例如:开始,结束,最小化,最大化等。 第四步:定义计算字段====公式 本步主要内容 公式是可以从其它属性推算出来的属性。一个公式属性的定义方式和正常属性定义的方式一样,也就是说,它有名子,日期类型和描述,再加上它如何被计算出来的公式。 ? 除非另有说明,被定义为公式的属性不被存到数据库(它们是虚属性)。 ? 公式是全局的;它们在整个知识库中有效地使用,不仅仅是在定义它们的事务中。这意味着公式总是在事务或者其他的GeneXus对象调用中被计算(报告,工作面板等)。 ? 用户定义的变量不能被公式调用,因为它们在定义他们的对象中是局部的,在此范围之外,它们无值。 你现在要定义下面的公式属性:
? LineTotal = ProductPrice * LineQuantity ? InvoiceSubtotal = SUM(LineTotal) ? InvoiceTax = InvoiceSubtotal * .085
? InvoiceTotal = InvoiceSubtotal + InvoiceTax
1.在LineTotal属性上双击Formula字段(在描述属性的右边).
2.输入下面的表达式:“ProductPrice * LineQuantity”。TIP:你也可以右键
单击formula字段,选择Edit formula选项打开Formula Edit。
3.重复第一和第二步,将开始的公式字段都输入。
4.保存。
第 12 页 共 77 页
Figure 9 Invoice Transaction with formulas
第五步:通过GeneXus推断查看数据模型 智能数据模型产生 无论你在任何时候保存,GeneXus将自动推断出支持终端用户描述事务对象的数据模型。根据这个模型,GeneXus将在你定义prototype 或者Production模型时,自动生成数据库。 本步主要内容 智能数据模型产生器:事务对象结构决定了表格和索引的生成。 ? 通过事务名称,表格和索引的名字自动被GeneXus产生,但是,如果需要可以改正。 ? GeneXus推断了一个没有冗余的数据模型。但是,你可以定义被GeneXus自动管理的传统冗余。 ? 相应于n级事务的表的主键可以被他之前的n-1嵌套级所获取。 //有点模糊
1.在Tools菜单上,单击List DataBase
2.如果Modify复选框被选中的话,取消。
3.在Select Object对话框中,单击Select All,单击OK。一个数据库表单报告北
第 13 页 共 77 页
生成了。
Figure 10 Select Object dialog box
数据库表单报告显示了:GeneXus根据规格数据模型自动生成了支持发票事务对象的两个表格,Invoice(发票头)和Invoice1(发票行),结构如下:
第 14 页 共 77 页
Figure 11 Database (Data Model) Listing
1. Invoice1表的主键是由两个属性组成:InvoiceID和ProduceID(第一级别的标识符InvoiceID加上第二级别的标识符ProductID).
2.GeneXus自动将我们定义的公式在表中移除,将他们自动转化成全局的公式,这样你可以在知识库内的任何地方调用他们。
3.在Invoice表中:
不会有两个发票有相同发票编号。
对于每一个发票编号,只有唯一的发票日期,顾客编号和顾客姓名。 4.在Invoice1表中:
不会有两个发票行有两个相同的发票编号和产品编号。
对于每一对发票编号和产品编号,只有唯一的产品描述,产品价格和行数。
第六步:查看事务对象表格
对于新产生的事务对象,核实查看自动生成的GUI和Web Form。 本步主要内容 GUI和Web Form:保存了一个新的事务对象之后,一个默认的表单(GUI)和Web表单将会自动生成,它们分别在GUI和Web应用程序上接受数据。两个表单都能够被的商业分析家用户化。
要看两个表单,按照如下步骤:
1.在发票事务中,选择Form选项卡。
第 15 页 共 77 页