NC单据开发初学者手册_第1页
NC单据开发初学者手册_第2页
NC单据开发初学者手册_第3页
NC单据开发初学者手册_第4页
NC单据开发初学者手册_第5页
已阅读5页,还剩49页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、此文件受到UFIDA的保护, 并已在保护中心注册 , 外泄必纠!UFIDAGUID1162153F0-8B62-6E8D-1D46-54499B5A622BUFIDAGUID131C26706-1290-5BDE-DD7D-D594B804C93CNC 单据开发初学者手册编写者:NC-UAP- 3 -薄奇 赖宏伟用友软件股份有限公司二零零六年四月第一章 概述 11.1 基本概念1.1.2 单据开发主要流程1.第二章 搭建开发环境12.1 本文软件开发环境1.2.2 给 PD 打补丁 1.2.3 建立数据库1.2.4 建立开发工程2.第三章 数据库表pdm及SQL脚本的生成 33.1 数据模型3

2、.3.2 生成pdm 步骤 3.3.3 生成SQL 脚本步骤7.第四章 生成数据字典114.1 步骤 1.1.第五章 生成 VO155.1 准备工作1.5.5.2 生成 VO1.8.第六章 第一个单据205.3 步骤一、建立单据模板2.05.4 步骤二、建立工程包结构2.55.5 步骤三、定制界面控制类2.55.6 步骤四、定制界面UI 类 2.6.5.7 步骤四、连接模板到NC 集成辅助开发工具中查看效果2 6第七章 参照 287.3 什么是参照2.8.7.4 建立参照类2.8.7.5 在单据模板上设置参照2.9第八章 单据模板中的公式使用338.1 什么是公式3.3.8.2 给单据模板设置

3、公式3.3.第九章 参考文献36- ii -第一章概述第一章 概述1.1 基本概念单据: 比如报销时的报销单,一般由表头和表体组成(有些时候还含有表尾)。表头中包含了单据的主信息,比如日期、部门、预算项目;表体包含了单据的明细信息,比如具体的事项和金额;单据类型:一个业务系统为了使结构更清晰,通常也是分层的。比如,供应链系统包含了采购、库存等子系统,每个子系统都具有一个系统类型,而每个子系统都会具有很多张单据,为了区分这些单据,为每张单据命名一个单据类型,作为唯一标识;模板:单据开发涉及到三大模板(单据模板、查询模板、打印模板)。单据模板定义了单据的显示外观和基本框架,查询模板定义了单据的查询

4、对话框,打印模板定义了单据信息打印到打印机的样式和格式;VO:值对象,用作传输数据的载体聚合VO:单据一般由表头和表体构成,因此单据的数据表通常设计成主表和子表。聚合VO 是对单据数据的抽象,它用于装载主表VO 和一组子表VO. ;UI 工厂:虽然能通过三大模板定义出单据的显示,但每张单据都有一些公共的或特殊的行为。UI 工厂是一种单据开发框架,它将常用单据抽象成了很多类型,因此,UI 工厂相当于是单据开发的代码模板,预置了单据的各种公共行为,比如增、删、改、查,并且可以连接到NC 流程平台,支持审批、单据驱动等应用。1.2 单据开发主要流程NC 平台对开发过程进行很多抽象和封装,使得单据开发

5、变得非常容易。一般地,开发环境中,开发一个单据主要包括以下步骤:第一步、PowerDesigner 中建立单据的物理模型(数据库表),保存成pdm文件 (xml);第二步、利用PowerDesigner生成单据的建表脚本(SQL 语句),在数据库中执行此脚本建立数据库表结构;第三步、利用NC 集成辅助工具中的数据字典生成工具导入pdm 文件,生成相应的数据字典;第四步、利用NC 集成辅助工具中的CodeSeedVO工具利用odbc 连接数据库,将单据涉及的数据表生成VO 对象;第五步、以UI 工厂为基础,应用Template模式,编写自己的单据类。下面,我们以一个简单的员工信息管理系统分别介绍

6、这几个步骤。- 2 -第二章搭建开发环境第二章 搭建开发环境2.1 本文软件开发环境1、操作系统:Windows 2000 Server2、数据库设计工具:Sybase PowerDesigner Version 9.5.0.64(以下简称 8PD)为了给数据表自动生成时间戳(ts)、删除标志(dr)字段,需给PD 打上插件补丁:db2cs7.xdb, oracl8i2.xdb, sqlserv7.xdb3、数据库:MS SQL Server 20004、开发工具:Eclipse 3.1.12.2 给 PD 打补丁将三个补丁文件全部拷贝到PD 的安装目录的Resource FilesDBMS

7、下即可2.3 建立数据库因为 NC 本身使用了很多数据库表,所以我们建立的数据库中必须包含NC系统表和其中的某些数据,而不是简单新建库。本文以SQL Server 2000为例。第一步、建立数据库v5test第二步、在v5test数据库名上右键选择导入数据,根据其它已经建好的库来生成库。或者根据数据库的备份和还原操作来建库。这样,我们就建立起包含NC 系统表的数据库,在此基础上,我们建立自己的数据表进行开发。2.4 建立开发工程现在已经存在NC_UAP_UIFactory 工程,其中包含了部分UI 工厂源码和依赖的 jar 包,依此工程建立我们自己的eclipse工程。第一步、打开eclips

8、e,新建java工程(在V5 中则新建MDE 工程)第二步、设置工程名,本例为UIFactoryV5,选择从存在的资源中创建工程,选择 NC_UAP_UIFactory 文件夹,依次确定建立工程。- 2 -第三章数据库表pdm 及 SQL 脚本的组成- 12 -第三章 数据库表pdm及 SQL脚本的生成PD 是一种高端的数据建模工具,使用它可以很方便的建立数据库、导出 SQLpdm,所以,NC 辅助开发工具多处依赖PD3.1 数据模型我们的员工信息管理系统包括员工的基本信息,员工的类别信息,员工工资,从员工基本信息中独立出员工的家庭住址信息,街道3.2 生成 pdm 步骤第一步、打开PD 文件

9、夹中的可执行文件pdshell9.exe,启动PD,会出现如第二步、我们以MS SQL Server数据库为例,选择数据库为Miscrosft SQLServer 7.x,注意,由于补丁文件只针对SQL Server 7.x版本,所以,无论我们用SQL Server 7.x还是 2000或以上版本,此处的DBMS 都要选择SQL. Server.7.x。第三步、确定后左侧面板中会出现一个节点,双击弹出如下对话框,设置此模型的name,code等第四步、在新建节点上点击右键选择New->Table第五步、在General选项卡中,设置表名,表的中文描述第六步、 在 Columns选项卡中定

10、义列,列的中文描述。注意此处列的数据类型,一般地,主键前缀为pk_,数据类型为char(20), boolean类型的列前缀为b,数据类型为char(1),日期类型前缀为d,数据类型为char(10),等等,更多数据库表字段命名规范参照附录开发规范文档。第七步、保存到指定目录,便得到pdm 文件3.3 生成 SQL 脚本步骤Tables & Views第一步、选择菜单项Database -> Generate Databas e第二步、 在弹出界面中,设置生成脚本文件的存放路径,并对选项卡做如下设置第三步、对Keys & Indexs 选项卡做如下设置,注意,取消除主键外

11、的所有选项,因为此时我们没有这些选项信息第四步、取消Database 选项卡中的所有选项第五步、按下确定按钮后,便生成了SQL 脚本第四章生成数据字典第四章 生成数据字典数据字典是NC 二次开发工具中探测数据库表结构的数据基础,而不是采用每次需要数据都连接数据库的方式。数据字典由上一步骤生成的pdm 文件生成,NC 二次开发工具提供了相应的生成工具。4.1 步骤第一步、启动NC 集成辅助开发工具,选择菜单系统管理工具-> 数据字典管理第二步、在弹出的界面中,选择菜单项工具 -> 导入数据字典- 17 -第三步、选择数据字典导入文件类型,此处选择解析 PDM 文件第四步、在弹出的界面

12、中点击选择 按钮,选择上一章生成的PDM 文件第五步、选择覆盖方式,一般地,选择全部覆盖第六步、 在弹出的窗口左侧会出现可供选择的数据表,选中需要导入的数据库表加到右边的窗口中第七步,会出现如下窗口,此时便完成了数据字典的导入第五章生成 VO第五章 生成 VOVO 值对象是数据传递的载体,其结构和数据库表结构紧密相关。一般我们在一个专门的包中存放VO 对象, VO 对象命名规则表现为类名以VO 结尾。 NC二次开发工具中也提供了相应的工具,用于生成数据库表的VO 类。5.1 准备工作VO 类通过 ODBC 连接数据库探测数据库表结构生成,所以, 我们首先要建立起数据库表结构和ODBC 连接源。

13、第一步、 在 SQL Server 2000查询分析器中执行第二章生成的SQL 脚本,生成数据库表第二步、选择控制面板-> 管理工具-> 数据源 (ODBC) ,弹出如下界面第三步、选择SQL Server 驱动模式- 25 -第四步、指定数据源名称和数据库服务器第五步、在弹出的界面中,按下图进行设置第六步、选择刚才建立的数据库,此处为v5test第七步、在弹出的界面采用默认设置第八步、测试数据库连接,如果出现如下信息,则表明建立的数据源有效5.2 生成 VO建立起数据库和ODBC 数据源之后,我们就可以开始生成VO 对象。第一步、启动NC 集成辅助开发工具,选择菜单向导工具-&g

14、t; codeseedVO第二步、设置我们刚刚生成的ODBC 数据源,数据库访问的用户名和密码,如果数据库表很多,可以勾选上“表前缀过滤”选项,输入需要表的前缀,按下“列表” 按钮后会在界面的左边列表框中列出所有符合前缀条件的表名,选择一个主表, 其它需要生成VO 的表选作子表。在右边设置生成VO 对象的存储路径和 VO 类的包名及创建者,按下“为当前表生成文件”按钮,这样就在目标路径下生成了VO 类。第六章第一个单据第六章 第一个单据在以上准备工作的基础上,我们现在着手开发第一个单据。6.3 步骤一、建立单据模板第一步、启动NC 集成辅助开发工具,选择菜单项模板管理-> 单据模板设置工

15、具第二步、在弹出的界面中,输入新单据模板标识,如T01 ,然后按下“显示模板”按钮,如果此模板已经存在,会显示出已经设置好的信息,如果此模板不存在,右侧的“增加”按钮会变亮,表明可添加此模板。然后,通过表前缀过滤器,列出需要的数据表,主表只能选一个,子表可多选,本例我们选择员工信息作为主表,员工家庭住址作为子表,按下“增加”按钮。- 46 -第三步、 弹出的界面的右上是我们刚才选择的数据表,左上为表头部分,左第四步、接下来我们设置表头和表体的显示内容,左键单击选中主表uap_test_employee)不放,拖动到表头区域松开,此时会弹出如下对话框。第五步、采用默认设置,确定,同样操作,将子表

16、(uap_test_addres)拖动s到表体区域,此时界面变成如下样子。第六步、我们可以修改具体显示字段的排列顺序,在表头/表体区域按下鼠标右键,会弹出下图右键菜单。第七步、选择“项目重新排序”菜单,通过上移下移改变排列顺序。第八步、 我们还可以去掉一些不需要显示的字段,在不需要显示的字段上按下鼠标右键,弹出如下右键菜单,选择“删除项目”菜单,就完成字段的删除。第九步、保存编辑完的模板,选择菜单项模板操作-> 保存模板第十步、输入模板的显示标题和节点标识,便完成了模板的设置。6.4 步骤二、建立工程包结构首先、建立自己的模板包,此处包名为nc.ui.mytest。其次、建立VO 对象包

17、,将我们第五章生成的VO 包拷贝到工程的src 目录下即可。6.5 步骤三、定制界面控制类第一步、在nc.ui.mytest包中新建MyTestControler 类,实现ICardController接口。public class MyTestController implements ICardController / 第二步、重载getBillType()方法,其返回值为单据类型。本例中为T01。public String getBillType() return "T01"第三步、重载getBillV oName()方法,关联VO 类,控制单据数据的获得。publi

18、c String getBillV oName() return new StringHYBillVO.class.getName(),TestEmployeeVO.class.getName(), TestAddressVO.class.getName() ;第四步、重载getBusinessActionType()方法,设置单据是否走流程平台。IbusinessActionType为常量接口,BD 表明单据不走流程平台。public int getBusinessActionType() return IBusinessActionType.BD;这样,就完成了Controller 类6.

19、6 步骤四、定制界面UI 类第一步、在nc.ui.mytest包中建立MyTestUI 类,继承自BillCardUI 类public class MyTestUI extends BillCardUI/第二步、重载createController()方法,关联界面控制类,此处返回刚刚创建的 MyTestController 类。protected ICardController createController() return new MyTestController();这样,就完成了UI 类6.7 步骤四、连接模板到NC 集成辅助开发工具中查看效果第一步、从Eclipse的 packa

20、ge explore打开NC_HOME/ierp/DevelopToolConfig.xml 文件第二步、在其自定义菜单位置,添加一个新的子菜单,并将className设置为我们编写的UI 类。<menuItem><menuItemName>我的单据模板</menuItemName> <className>nc.ui.mytest.MyTestUI</className></menuItem>第三步、 启动 NC 集成开发工具,会在自定义菜单项下发现我们刚刚添加的菜单项“我的单据模板”,选择此菜单项,就会弹出如下界面。第七

21、章 参照7.3 什么是参照参照录入,是一种辅助的数据输入方式,通常弹出界面的形式提供可以参考的数据, 比如在录入省份信息时,提供一个全国省份列表以供选择。单据开发中,有很多输入字段存在类似的需求。NC 系统中预置了很多种常见参照(基本覆盖了所有的基本档案,比如人员参照,存货参照),如果要自定义一种参照,则需要简单的开发工作。下面我们对员工家庭住址中的街道做一个参照,方便街道信息的录入。7.4 建立参照类步骤一、 建立自己的参照类,定制被参照的数据及其显示样式及格式。我们用 nc.ui.mytest.ref 包来存放参照类,新建RoadRefModel 继承 DefaultRefModel类,用

22、于录入员工数据。public class RoadRefModel extends DefaultRefModel/ 步骤二、设置存储参照信息的数据库表名,及其关键字字段名public String getTableName() return "uap_test_road"public String getPkFieldCode() return "pk_road"步骤三、 分别重载getFieldCode()和getFieldName()方法,设置需要参照的字段(数据库表中的列名),及其显示名称public String getFieldCode()

23、return new String "vname", "vdescription"public String getFieldName() return new String " 街道名称", " 描述信息" ;步骤四、设置参照弹出对话框的标题public String getRefTitle() return "道路参照"这样,就完成了参照类,下面将单据模板中的某些字段设置上参照。7.5 在单据模板上设置参照如果在第六章建立的单据模板中添加一条员工家庭住址信息,输入住址所在街道时需要输入街道数

24、据表对应记录的主键,这是添上参照,使得用户录入员工家庭住址时,可以通过选择街道来填充对应的街道字段步骤一、 启动 NC集成辅助开发工具,在 模板管理-> 单据模板设置工具菜单中,修改之前建立的“T01”单据模板。步骤二、为了给用户更加直观的感受,我们给表体增加“街道名称”列,并将这列作为参照录入的列。在表体上按下右键菜单,选择“增加自定义项目”。步骤三、此时会弹出如下对话框。第四步、每一列都有一个标识,输入列标识后按下确定。这时,表体增加roadname列,单击列头右边的属性窗口会显出出项目主键和显示名称。第五步、修改显示名称为“街道名称”第六步、选择高级属性选项卡,将数据类型设置为“参

25、照”,参照类型设置为我们建立的参照类,放到“<>”中,即为“<nc.ui.mytest.ref.RoadRefModel>”。设置关键字名为主键所在列的road, 这是因为,员工地址表中关联的是街道主键,当客户在参照中选择了某个街道,需要将这条数据的主键带到界面中的road 字段;第七步、 此时, 点击每行的街道名称单元格时,单元格中会显示出一个按钮,提示此格数据可以选择录入。第八步、按下按钮,弹出如下对话框。选择某一条纪录按下确定,表体对应的单元格中就会显示出相应的数据。第八章 单据模板中的公式使用8.1 什么是公式单据模板中的公式为数据的展现提供了很多灵活性,比如可定义字段C=字段 A+ 字段B,最常用的公式还是通过主键查询数据表中其它描述字段信息的公式,比如员工家庭地址中的街道字段存储着街道详细信息

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论