bianruifeng 2020-06-08
NC的单据模型介绍,通过PowerDesigner (v12)进行数据模型、建表、建数据字典、生成VO对象模型,为以后的单据、报表开发提供数据模型。
NC 中的多数节点所实现的功能,从技术的角度上看都是针对“单据”的相关操作。这里的“单据”泛指所有能表示为主子表模型的业务数据,比如订单,合同等等。
图1.2就是一个最典型主子表的关系数据库模型( Data Model )。主表的一行记录对应于子表的多行记录。主表和子表之间通过主外键相互关联。对于这样的数据模型NC 是利用如图1.3所示的对象模型( Object Model )来实现对其的建模。
由于主子表模型是NC 中最常见的数据组织形式,也是流程平台目前唯一支持的数据模型,所以图1.3所示的模型是NC中的缺省配置。当然通过一些开关和参数的设置就可以支持一些变化的形式。最常见的变化形式有以下几种:
主子表 也就是UI 工厂的默认形式。这种情况不需特别的配置。只需实现IControllerBase.getBillVOName() 方法,通过一个String数组返回聚合VO、主表VO、子表VO的ClassName 即可。 多子表 有多个子表.这种情况需要继承专门的多子表基类。在IControllerBase.getBillVOName() 的方法里依次返回聚合VO、主表VO、子表VO1、子表VO2. . . 子表VOn的ClassName 即可。其中聚合VO需要实现IExAggVO 接口。 单表头 没有表体的卡片。实际实现时是把聚合VO的子表当成NULL处理。需要让UI 的Controller 实现ISingleController 接口。并在isSingleDetail 方法中返回false ; 单表体 没有表头的卡片,一般用于一些基本档案节点。实际实现时是把聚合VO的主表当成NULL处理。需要让UI 的Controller 实现ISingleController 接口。并在isSingleDetail 方法中返回true;
安装数据库设计工具:Sybase PowerDesigner Version 12(以下简称PD)。
为了给数据表自动生成时间戳(ts)、删除标志(dr)字段,需给PD打上插件补丁(将三个补丁文件db2cs7.xdb,oracl8i2.xdb,sqlserv7.xdb全部拷贝到PD的安装目录的 Resource Files\DBMS 下即可)。如果没有补丁,在建表的脚本处需要手工增加下面两个字段。Ts字段是时间戳,供系统判断修改时使用,dr字段是删除标记,NC系统单据表删除时并不是物理删除,而是更新dr字段为1。
SQL SERVER数据库手工增加dr、ts两个字段脚本如下:
ts char(19) null default convert(char(19),getdate(),20), dr smallint null default 0,
Oracl数据库手工增加dr、ts两个字段脚本如下:
TS CHAR(19) default to_char(sysdate,‘yyyy-mm-dd hh24:mi:ss‘), DR NUMBER(10) default 0,
PD是一种高端的数据建模工具,使用它可以很方便的建立数据库、导出SQL脚本,其物理模型文件的后缀名为pdm,所以,NC辅助开发工具多处依赖PD来完成数据库相关操作。
用powerdesigner设计数据库表的.pdm文件时出现了数据类型为varchar和varchar2等不一样的数据类型,这是怎么回事?这是由于在设计过程之中出现了数据库更改的操作。各个数据库的类型不同,其中varchar2为Oracle的数据类型,表示变长字符型的数据,varchar为SQL Server的数据类型,也表示变长字符型的数据。另外还有小数数据类型的表示不同,Oracle的小数表示为Number(m,n),SQL Server的小数表示为Decimal(m,n)。
² Database->Change Current DBMS…
² 在弹出的对话框中选择General选项卡,选中Oracle较高版本的数据库,如ORACLE Version 10g
² 选择确定,弹出“更改成功”的对话框。
数据字典是NC客户开发工具中探测数据库表结构的数据基础,而不是采用每次需要数据都连接数据库的方式。
第一步、打开PD文件夹中的可执行文件pdshell12.exe,启动PD,会出现如下界面,选择新建一个物理模型。
第二步、我们以MS SQL Server数据库为例,选择数据库为Miscrosft SQL Server 7.x,注意:由于补丁文件只针对SQL Server 7.x版本,所以,无论我们用SQL Server 7.x还是2000或以上版本,此处的DBMS都要选择SQL. Server.7.x。
第三步、确定后左侧面板中会出现一个节点,双击弹出如下对话框,设置此模型的name,code等
第四步、在新建节点上点击右键选择 New->Table
第五步、在General选项卡中,设置表名,表的中文描述
第六步、在Columns选项卡中定义列,列的中文描述。
第七步、保存到指定目录,便得到pdm文件
注意:
1、此处列的数据类型,一般地,主键前缀为pk_,数据类型为char(20);boolean类型的列前缀为b,数据类型为char(1);日期类型前缀为d,数据类型为char(10),等等,更多数据库表字段命名规范参照附录开发规范文档;
2、表的主键约束名不能大于15位;业务类型(pk_busitype)用于后续篇章设置流程时使用。
3、在保存PDM文件之前,一定要将DBMS设成SQL Server 7.0;
第一步、选择菜单项 Database -> Generate Database …
第二步、在弹出界面中,设置生成脚本文件的存放路径
第三步、按下确定按钮后,便生成了SQL脚本
第四步、将生成的Sql脚本在数据库中执行,或在Preview页签中copy脚本,在数据库中执行,建表完成。
注意:
1、可以看到上图红框中内容是由pd的补丁生成出来的;
2、如果PD没有打补丁,在向数据库中执行生成的脚步前,一定要按要求先将ts、dr两个字段补全后,再执行。
3、根据你所用数据库类型不同,在生成脚本之前设置DBMS;
数据字典由上一步骤生成的pdm文件生成,NC二次开发工具提供了相应的生成工具。在节点客户化-二次开发工具-系统管理工具-数据字典
选择菜单项 工具 -> 导入数据字典
选择pdm文件,按照向导就可以将表结构导成数据字典。