NC单据开发初学者手册.docx
- 文档编号:7854313
- 上传时间:2023-01-26
- 格式:DOCX
- 页数:10
- 大小:22.11KB
NC单据开发初学者手册.docx
《NC单据开发初学者手册.docx》由会员分享,可在线阅读,更多相关《NC单据开发初学者手册.docx(10页珍藏版)》请在冰豆网上搜索。
NC单据开发初学者手册
此文件受到UFIDA的保护,并已在保护中心注册,外泄必纠!
UFIDAGUID1{162153F0-8B62-6E8D-1D46-54499B5A622B}
UFIDAGUID1{31C26706-1290-5BDE-DD7D-D594B804C93C}
NC单据开发初学者手册
编写者:
NC-UAP
薄奇赖宏伟
用友软件股份有限公司
二零零六年四月
第一章概述
一.3基本概念
单据:
比如报销时的报销单,一般由表头和表体组成(有些时候还含有表尾)。
表头中包含了单据的主信息,比如日期、部门、预算项目;表体包含了单据的明细信息,比如具体的事项和金额;
单据类型:
一个业务系统为了使结构更清晰,通常也是分层的。
比如,供应链系统包含了采购、库存等子系统,每个子系统都具有一个系统类型,而每个子系统都会具有很多张单据,为了区分这些单据,为每张单据命名一个单据类型,作为唯一标识;
模板:
单据开发涉及到三大模板(单据模板、查询模板、打印模板)。
单据模板定义了单据的显示外观和基本框架,查询模板定义了单据的查询对话框,打印模板定义了单据信息打印到打印机的样式和格式;
VO:
值对象,用作传输数据的载体
聚合VO:
单据一般由表头和表体构成,因此单据的数据表通常设计成主表和子表。
聚合VO是对单据数据的抽象,它用于装载主表VO和一组子表VO.;
UI工厂:
虽然能通过三大模板定义出单据的显示,但每张单据都有一些公共的或特殊的行为。
UI工厂是一种单据开发框架,它将常用单据抽象成了很多类型,因此,UI工厂相当于是单据开发的代码模板,预置了单据的各种公共行为,比如增、删、改、查,并且可以连接到NC流程平台,支持审批、单据驱动等应用。
一.4单据开发主要流程
NC平台对开发过程进行很多抽象和封装,使得单据开发变得非常容易。
一般地,开发环境中,开发一个单据主要包括以下步骤:
第一步、PowerDesigner中建立单据的物理模型(数据库表),保存成pdm文件(xml);
第二步、利用PowerDesigner生成单据的建表脚本(SQL语句),在数据库中执行此脚本建立数据库表结构;
第三步、利用NC集成辅助工具中的数据字典生成工具导入pdm文件,生成相应的数据字典;
第四步、利用NC集成辅助工具中的CodeSeedVO工具利用odbc连接数据库,将单据涉及的数据表生成VO对象;
第五步、以UI工厂为基础,应用Template模式,编写自己的单据类。
下面,我们以一个简单的员工信息管理系统分别介绍这几个步骤。
第二章搭建开发环境
二.3本文软件开发环境
1、操作系统:
Windows2000Server
为了给数据表自动生成时间戳(ts)、删除标志(dr)字段,需给PD打上插件补丁:
db2cs7.xdb,oracl8i2.xdb,sqlserv7.xdb
3、数据库:
MSSQLServer2000
4、开发工具:
Eclipse3.1.1
二.4给PD打补丁
将三个补丁文件全部拷贝到PD的安装目录的ResourceFiles\DBMS下即可
二.5建立数据库
因为NC本身使用了很多数据库表,所以我们建立的数据库中必须包含NC系统表和其中的某些数据,而不是简单新建库。
本文以SQLServer2000为例。
第一步、建立数据库v5test
第二步、在v5test数据库名上右键选择导入数据,根据其它已经建好的库来生成库。
或者根据数据库的备份和还原操作来建库。
这样,我们就建立起包含NC系统表的数据库,在此基础上,我们建立自己的数据表进行开发。
二.6建立开发工程
现在已经存在NC_UAP_UIFactory工程,其中包含了部分UI工厂源码和依赖的jar包,依此工程建立我们自己的eclipse工程。
第一步、打开eclipse,新建java工程(在V5中则新建MDE工程)
第二步、设置工程名,本例为UIFactoryV5,选择从存在的资源中创建工程,选择NC_UAP_UIFactory文件夹,依次确定建立工程。
第三章数据库表pdm及SQL脚本的生成
PD是一种高端的数据建模工具,使用它可以很方便的建立数据库、导出SQL脚本,其物理模型文件的后缀名为pdm,所以,NC辅助开发工具多处依赖PD来完成数据库相关操作。
三.3数据模型
我们的员工信息管理系统包括员工的基本信息,员工的类别信息,员工工资,为了增强系统的可扩展性,从员工基本信息中独立出员工的家庭住址信息,街道信息。
下图显示了实体间的关系。
三.4生成pdm步骤
第一步、打开PD文件夹中的可执行文件pdshell9.exe,启动PD,会出现如下界面,选择新建一个物理模型。
第三步、确定后左侧面板中会出现一个节点,双击弹出如下对话框,设置此模型的name,code等
第四步、在新建节点上点击右键选择New->Table
第五步、在General选项卡中,设置表名,表的中文描述
第六步、在Columns选项卡中定义列,列的中文描述。
注意此处列的数据类型,一般地,主键前缀为pk_,数据类型为char(20),boolean类型的列前缀为b,数据类型为char
(1),日期类型前缀为d,数据类型为char(10),等等,更多数据库表字段命名规范参照附录开发规范文档。
第七步、保存到指定目录,便得到pdm文件
三.5生成SQL脚本步骤
第一步、选择菜单项Database->GenerateDatabase…
第二步、在弹出界面中,设置生成脚本文件的存放路径,并对Tables&Views选项卡做如下设置
第三步、对Keys&Indexs选项卡做如下设置,注意,取消除主键外的所有选项,因为此时我们没有这些选项信息
第四步、取消Database选项卡中的所有选项
第五步、按下确定按钮后,便生成了SQL脚本
第四章生成数据字典
数据字典是NC二次开发工具中探测数据库表结构的数据基础,而不是采用每次需要数据都连接数据库的方式。
数据字典由上一步骤生成的pdm文件生成,NC二次开发工具提供了相应的生成工具。
四.3步骤
第一步、启动NC集成辅助开发工具,选择菜单系统管理工具->数据字典管理
第二步、在弹出的界面中,选择菜单项工具->导入数据字典
第三步、选择数据字典导入文件类型,此处选择解析PDM文件
第四步、在弹出的界面中点击选择按钮,选择上一章生成的PDM文件
第五步、选择覆盖方式,一般地,选择全部覆盖
第六步、在弹出的窗口左侧会出现可供选择的数据表,选中需要导入的数据库表加到右边的窗口中
第七步,会出现如下窗口,此时便完成了数据字典的导入
第五章生成VO
VO值对象是数据传递的载体,其结构和数据库表结构紧密相关。
一般我们在一个专门的包中存放VO对象,VO对象命名规则表现为类名以VO结尾。
NC二次开发工具中也提供了相应的工具,用于生成数据库表的VO类。
五.3准备工作
VO类通过ODBC连接数据库探测数据库表结构生成,所以,我们首先要建立起数据库表结构和ODBC连接源。
第一步、在SQLServer2000查询分析器中执行第二章生成的SQL脚本,生成数据库表
第二步、选择控制面板->管理工具->数据源(ODBC),弹出如下界面
第三步、选择SQLServer驱动模式
第四步、指定数据源名称和数据库服务器
第五步、在弹出的界面中,按下图进行设置
第六步、选择刚才建立的数据库,此处为v5test
第七步、在弹出的界面采用默认设置
第八步、测试数据库连接,如果出现如下信息,则表明建立的数据源有效
五.4生成VO
建立起数据库和ODBC数据源之后,我们就可以开始生成VO对象。
第一步、启动NC集成辅助开发工具,选择菜单向导工具->codeseedVO
第二步、设置我们刚刚生成的ODBC数据源,数据库访问的用户名和密码,如果数据库表很多,可以勾选上“表前缀过滤”选项,输入需要表的前缀,按下“列表”按钮后会在界面的左边列表框中列出所有符合前缀条件的表名,选择一个主表,其它需要生成VO的表选作子表。
在右边设置生成VO对象的存储路径和VO类的包名及创建者,按下“为当前表生成文件”按钮,这样就在目标路径下生成了VO类。
第六章第一个单据
在以上准备工作的基础上,我们现在着手开发第一个单据。
六.3步骤一、建立单据模板
第一步、启动NC集成辅助开发工具,选择菜单项模板管理->单据模板设置工具
第二步、在弹出的界面中,输入新单据模板标识,如T01,然后按下“显示模板”按钮,如果此模板已经存在,会显示出已经设置好的信息,如果此模板不存在,右侧的“增加”按钮会变亮,表明可添加此模板。
然后,通过表前缀过滤器,列出需要的数据表,主表只能选一个,子表可多选,本例我们选择员工信息作为主表,员工家庭住址作为子表,按下“增加”按钮。
第三步、弹出的界面的右上是我们刚才选择的数据表,左上为表头部分,左中为表体部分。
第四步、接下来我们设置表头和表体的显示内容,左键单击选中主表(uap_test_employee)不放,拖动到表头区域松开,此时会弹出如下对话框。
第五步、采用默认设置,确定,同样操作,将子表(uap_test_address)拖动到表体区域,此时界面变成如下样子。
第六步、我们可以修改具体显示字段的排列顺序,在表头/表体区域按下鼠标右键,会弹出下图右键菜单。
第七步、选择“项目重新排序”菜单,通过上移下移改变排列顺序。
第八步、我们还可以去掉一些不需要显示的字段,在不需要显示的字段上按下鼠标右键,弹出如下右键菜单,选择“删除项目”菜单,就完成字段的删除。
第九步、保存编辑完的模板,选择菜单项模板操作->保存模板
第十步、输入模板的显示标题和节点标识,便完成了模板的设置。
六.4步骤二、建立工程包结构
其次、建立VO对象包,将我们第五章生成的VO包拷贝到工程的src目录下即可。
六.5步骤三、定制界面控制类
publicclassMyTestControllerimplementsICardController{
//……
}
第二步、重载getBillType()方法,其返回值为单据类型。
本例中为T01。
publicStringgetBillType(){
return"T01";
}
第三步、重载getBillVoName()方法,关联VO类,控制单据数据的获得。
publicString[]getBillVoName(){
returnnewString[]{
TestAddress
};
}
第四步、重载getBusinessActionType()方法,设置单据是否走流程平台。
IbusinessActionType为常量接口,BD表明单据不走流程平台。
publicintgetBusinessActionType(){
returnIBusinessActionType.BD;
}
这样,就完成了Controller类
六.6步骤四、定制界面UI类
publicclassMyTestUIextendsBillCardUI{
//……
}
第二步、重载createController()方法,关联界面控制类,此处返回刚刚创建的MyTestController类。
protectedICardControllercreateController(){
returnnewMyTestController();
}
这样,就完成了UI类
六.7步骤四、连接模板到NC集成辅助开发工具中查看效果
第一步、从Eclipse的packageexplore打开NC_HOME/ierp/
DevelopToolConfig.xml文件
第二步、在其自定义菜单位置,添加一个新的子菜单,并将className设置为我们编写的UI类。
第三步、启动NC集成开发工具,会在自定义菜单项下发现我们刚刚添加的菜单项“我的单据模板”,选择此菜单项,就会弹出如下界面。
第七章参照
七.3什么是参照
参照录入,是一种辅助的数据输入方式,通常弹出界面的形式提供可以参考的数据,比如在录入省份信息时,提供一个全国省份列表以供选择。
单据开发中,有很多输入字段存在类似的需求。
NC系统中预置了很多种常见参照(基本覆盖了所有的基本档案,比如人员参照,存货参照),如果要自定义一种参照,则需要简单的开发工作。
下面我们对员工家庭住址中的街道做一个参照,方便街道信息的录入。
七.4建立参照类
DefaultRefModel类,用于录入员工数据。
publicclassRoadRefModelextendsDefaultRefModel{
//……
}
步骤二、设置存储参照信息的数据库表名,及其关键字字段名
publicStringgetTableName(){
return"uap_test_road";
}
publicStringgetPkFieldCode(){
return"pk_road";
}
步骤三、分别重载getFieldCode()和getFieldName()方法,设置需要参照的字段(数据库表中的列名),及其显示名称
publicString[]getFieldCode(){
returnnewString[]{"vname","vdescription"};
}
publicString[]getFieldName(){
returnnewString[]{"街道名称","描述信息"};
}
步骤四、设置参照弹出对话框的标题
publicStringgetRefTitle(){
return"道路参照";
}
这样,就完成了参照类,下面将单据模板中的某些字段设置上参照。
七.5在单据模板上设置参照
如果在第六章建立的单据模板中添加一条员工家庭住址信息,输入住址所在街道时需要输入街道数据表对应记录的主键,这是添上参照,使得用户录入员工家庭住址时,可以通过选择街道来填充对应的街道字段
步骤一、启动NC集成辅助开发工具,在模板管理->单据模板设置工具菜单中,修改之前建立的“T01”单据模板。
步骤二、为了给用户更加直观的感受,我们给表体增加“街道名称”列,并将这列作为参照录入的列。
在表体上按下右键菜单,选择“增加自定义项目”。
步骤三、此时会弹出如下对话框。
第四步、每一列都有一个标识,输入列标识后按下确定。
这时,表体增加roadname列,单击列头右边的属性窗口会显出出项目主键和显示名称。
第五步、修改显示名称为“街道名称”
第六步、选择高级属性选项卡,将数据类型设置为“参照”,参照类型设置为我们建立的参照类,放到“<>”中,即为“”。
设置关键字名为主键所在列的road,这是因为,员工地址表中关联的是街道主键,当客户在参照中选择了某个街道,需要将这条数据的主键带到界面中的road字段;
第七步、此时,点击每行的街道名称单元格时,单元格中会显示出一个按钮,提示此格数据可以选择录入。
第八步、按下按钮,弹出如下对话框。
选择某一条纪录按下确定,表体对应的单元格中就会显示出相应的数据。
第八章单据模板中的公式使用
八.3什么是公式
单据模板中的公式为数据的展现提供了很多灵活性,比如可定义字段C=字段A+字段B,最常用的公式还是通过主键查询数据表中其它描述字段信息的公式,比如员工家庭地址中的街道字段存储着街道详细信息表中对应记录的主键,打开单据界面时,客户不希望看到一堆难以理解的主键而是更加直观的信息,如街道名称,街道描述信息等。
同样的,选择一个街道名称后,对应的街道描述信息和街道主键也应该相应的。
公式就定义了表体中各列间数据的依赖关系,主要有显示公式、编辑公式,显示公式在界面初始化或刷新时会自动运算,编辑公式在修改列数据时自动运算。
八.4给单据模板设置公式
下面我们就用公式实现此功能。
第一步、修改单据模板,给表体添加自定义表项:
街道描述信息“roadinfo”。
第二步、选中街道名称列头,打开其高级属性,单击编辑公式项。
第三步、在弹出的对话框中输入公式,本例公式为:
roadname->getColValue(uap_test_road,vname,pk_road,road);
roadinfo->getColValue(uap_test_road,vdescription,pk_road,road);
公式左边为模板中要置值项的项目主键,getColValue公式的第一个参数为数据库表名称,第二个参数为数据库表中要返回的列名称,第三个参数为数据库表主键,第四个参数为从当前模板中那个字段中取数
按下确定按钮后,就完成了编辑公式的定义。
在单据模版定义窗口,在“街道名称”字段通过上一章的参照选择某条道路信息后,“街道”和“街道信息”字段会自动填充相应信息。
同理,建立显示公式。
第一步、选择“街道”列头,打开高级属性,选择“显示公式”
第二步、设置关联字段的值
这样,在界面显示时,街道名称和街道描述就会自动显示出来。
第九章参考文献
1、更多UI工厂单据开发,请参阅《UI模式化开发手册》,刘剑、赖宏伟
2、更多参照和公式使用细节,请参阅“NC230培训-模板管理”
3、更多公式细节,请参阅“新版公式解析器使用指南”,程操红
4、更多数据库命名规范,请参阅“数据库设计手册_V230_1.0试行版”
5、更多Java编码规范,请参阅“Java编码规范-v230-0.9”
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- NC 单据 开发 初学者 手册