NC-UAP客户化开发-数据建模

bianruifeng 2020-06-08

NC的单据模型介绍,通过PowerDesigner (v12)进行数据模型、建表、建数据字典、生成VO对象模型,为以后的单据、报表开发提供数据模型。

单据模型介绍

NC 中的多数节点所实现的功能,从技术的角度上看都是针对“单据”的相关操作。这里的“单据”泛指所有能表示为主子表模型的业务数据,比如订单,合同等等。

NC-UAP客户化开发-数据建模

图1.2就是一个最典型主子表的关系数据库模型( Data Model )。主表的一行记录对应于子表的多行记录。主表和子表之间通过主外键相互关联。对于这样的数据模型NC 是利用如图1.3所示的对象模型( Object Model )来实现对其的建模。

NC-UAP客户化开发-数据建模

由于主子表模型是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;

 PowerDesigner介绍 

安装数据库设计工具: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来完成数据库相关操作。

pdm文件数据类型问题

用powerdesigner设计数据库表的.pdm文件时出现了数据类型为varchar和varchar2等不一样的数据类型,这是怎么回事?这是由于在设计过程之中出现了数据库更改的操作。各个数据库的类型不同,其中varchar2为Oracle的数据类型,表示变长字符型的数据,varchar为SQL Server的数据类型,也表示变长字符型的数据。另外还有小数数据类型的表示不同,Oracle的小数表示为Number(m,n),SQL Server的小数表示为Decimal(m,n)。

  • 若是生成Orcale的SQL语句的话,我们要将数据库设为Oracle的数据库,设置操作如下:

² Database->Change Current DBMS…

NC-UAP客户化开发-数据建模

² 在弹出的对话框中选择General选项卡,选中Oracle较高版本的数据库,如ORACLE Version 10g

NC-UAP客户化开发-数据建模

² 选择确定,弹出“更改成功”的对话框。

  • 而在将pdm文件导入到数据字典里面时,需要将数据库设置为Microsoft SQL Server版本,方法与上面操作基本相同。

 NC数据字典

数据字典是NC客户开发工具中探测数据库表结构的数据基础,而不是采用每次需要数据都连接数据库的方式。

实例讲解

PowerDesigner建模 

  • 数据模型

NC-UAP客户化开发-数据建模

  • 生成pdm步骤

第一步、打开PD文件夹中的可执行文件pdshell12.exe,启动PD,会出现如下界面,选择新建一个物理模型。

NC-UAP客户化开发-数据建模

第二步、我们以MS SQL Server数据库为例,选择数据库为Miscrosft SQL Server 7.x,注意:由于补丁文件只针对SQL Server 7.x版本,所以,无论我们用SQL Server 7.x还是2000或以上版本,此处的DBMS都要选择SQL. Server.7.x。

NC-UAP客户化开发-数据建模

第三步、确定后左侧面板中会出现一个节点,双击弹出如下对话框,设置此模型的name,code等

NC-UAP客户化开发-数据建模

第四步、在新建节点上点击右键选择 New->Table

NC-UAP客户化开发-数据建模

第五步、在General选项卡中,设置表名,表的中文描述

NC-UAP客户化开发-数据建模

第六步、在Columns选项卡中定义列,列的中文描述。

 NC-UAP客户化开发-数据建模

第七步、保存到指定目录,便得到pdm文件

注意:

1、此处列的数据类型,一般地,主键前缀为pk_,数据类型为char(20);boolean类型的列前缀为b,数据类型为char(1);日期类型前缀为d,数据类型为char(10),等等,更多数据库表字段命名规范参照附录开发规范文档;

2、表的主键约束名不能大于15位;业务类型(pk_busitype)用于后续篇章设置流程时使用。

3、在保存PDM文件之前,一定要将DBMS设成SQL Server 7.0;

  • 生成SQL脚本步骤

第一步、选择菜单项 Database -> Generate Database …

NC-UAP客户化开发-数据建模

第二步、在弹出界面中,设置生成脚本文件的存放路径

NC-UAP客户化开发-数据建模

第三步、按下确定按钮后,便生成了SQL脚本

第四步、将生成的Sql脚本在数据库中执行,或在Preview页签中copy脚本,在数据库中执行,建表完成。

NC-UAP客户化开发-数据建模

注意:

1、可以看到上图红框中内容是由pd的补丁生成出来的;

2、如果PD没有打补丁,在向数据库中执行生成的脚步前,一定要按要求先将ts、dr两个字段补全后,再执行。

3、根据你所用数据库类型不同,在生成脚本之前设置DBMS;

生成NC数据字典

数据字典由上一步骤生成的pdm文件生成,NC二次开发工具提供了相应的生成工具。在节点客户化-二次开发工具-系统管理工具-数据字典

NC-UAP客户化开发-数据建模

选择菜单项 工具 -> 导入数据字典

选择pdm文件,按照向导就可以将表结构导成数据字典。

NC-UAP客户化开发-数据建模

 NC-UAP客户化开发-数据建模

相关推荐