版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、文档此文件受到UFIDA的保护,并已在保护中心注册,外泄必纠!UFIDAGUID1162153F0-8B62-6E8D-1D46-54499B5A622BUFIDAGUID131C26706-1290-5BDE-DD7D-D594B80 4C93CN5据开发初学者手册编写者:NC-UAP薄奇赖宏伟用友软件股份有限公司二零零六年四月第一章概述11.1 基本概念 11.2 单据开发主要流程 1第二章搭建开发环境12.1 本文软件开发环境 12.2 给PD打补丁 12.3 建立数据库 12.4 建立开发工程 2第三章数据库表pdm及SQL却本的生成33.1 数据模型 33.2 生成pdm步骤 33.
2、3 生成SQL却本步骤 7第四章 生成数据字典 114.1 步骤 11第五章生成VO155.1 准备工作 155.2 生成 VO 18第六章第一个单据206.3 步骤一、建立单据模板 206.4 步骤二、建立工程包结构 256.5 步骤三、定制界面控制类 256.6 步骤四、定制界面UI类 266.7 步骤四、连接模板到NC®成辅助开发工具中查看效果 26第七章参照287.3 什么是参照 287.4 建立参照类 287.5 在单据模板上设置参照 29第八章单据模板中的公式使用338.1 什么是公式 338.2 给单据模板设置公式 33第九章参考文献36第一章概述1.1 基本概念单据:
3、比如报销时的报销单,一般由表头和表体组成(有些时候还含有表尾)。 表头中包含了单据的主信息,比如日期、部门、预算项目;表体包含了单据的明 细信息,比如具体的事项和金额;单据类型:一个业务系统为了使结构更清晰,通常也是分层的。比如,供应 链系统包含了采购、库存等子系统,每个子系统都具有一个系统类型,而每个子 系统都会具有很多张单据,为了区分这些单据,为每张单据命名一个单据类型, 作为唯一标识;模板:单据开发涉及到三大模板(单据模板、查询模板、打印模板) 。单据 模板定义了单据的显示外观和基本框架,查询模板定义了单据的查询对话框,打 印模板定义了单据信息打印到打印机的样式和格式;VO值对象,用作传
4、输数据的载体聚合VQ单据一般由表头和表体构成,因此单据的数据表通常设计成主表 和子表。聚合VO是对单据数据的抽象,它用于装载主表 VO和一组子表VO.;UI工厂:虽然能通过三大模板定义出单据的显示,但每张单据都有一些公 共的或特殊的行为。UI工厂是一种单据开发框架,它将常用单据抽象成了很多 类型,因此,UI工厂相当于是单据开发的代码模板,预置了单据的各种公共行 为,比如增、删、改、查,并且可以连接到 NC流程平台,支持审批、单据驱动 等应用。1.2 单据开发主要流程NC平台对开发过程进行很多抽象和封装,使得单据开发变得非常容易。一 般地,开发环境中,开发一个单据主要包括以下步骤:第一步、Pow
5、erDesigner中建立单据的物理模型(数据库表),保存成pdm 文件(xml);第二步、利用PowerDesigner生成单据的建表脚本(SQL语句),在数据库中 执行此脚本建立数据库表结构;第三步、利用NC集成辅助工具中的数据字典生成工具导入 pdm文件,生成 相应的数据字典;第四步、利用NC集成辅助工具中的CodeSeedVO:具禾I用odbc连接数据库, 将单据涉及的数据表生成VO对象;第五步、以UI工厂为基础,应用Template模式,编写自己的单据类。下面,我们以一个简单的员工信息管理系统分别介绍这几个步骤。第二章搭建开发环境2.1 本文软件开发环境1、操作系统: Windows
6、 2000 Server2、数据库设计工具:Sybase PowerDesigner Version 9.5.0.648 (以下简称PD为了给数据表自动生成时间戳(ts)、删除标志(dr)字段,需给PD打上插 件补丁 : db2cs7.xdb , orac2.xdb , sqlserv7.xdb3、数据库:MS SQL Server 20004、开发工具:Eclipse 3.1.12.2 给PD打补丁将三个补丁文件全部拷贝到 PD的安装目录的Resource FilesDBMS下即可2.3 建立数据库因为NC本身使用了很多数据库表,所以我们建立的数据库中必须包含NC系统表和其中的某些数据,而不
7、是简单新建库。本文以 SQL Server 2000为例。第一步、建立数据库v5test第二步、在v5test数据库名上右键选择导入数据,根据其它已经建好的库 来生成库。或者根据数据库的备份和还原操作来建库。这样,我们就建立起包含 NC系统表的数据库,在此基础上,我们建立自己的数据表进行开发2.4 建立开发工程现在已经存在NC_UAP_UIFactory工程,其中包含了部分UI工厂源码和依赖 的jar包,依此工程建立我们自己的 eclipse工程。第一步、打开eclipse ,新建java工程(在V5中则新建MDH程)第二步、设置工程名,本例为UIFactoryV5 ,选择从存在的资源中创建工
8、程, 选才? NC_UAP_UIFactory文件夹,依次确定建立工程。第三章数据库表pdm及SQL脚本的生成PD一种高端的数据建模工具,使用它可以很方便的建立数据库、导出 SQL 脚本,其物理模型文件的后缀名为 pdm所以,N8甫助开发工具多处依赖PD来 完成数据库相关操作。3.1 数据模型我们的员工信息管理系统包括员工的基本信息, 员工的类别信息,员工工资, 为了增强系统的可扩展性,从员工基本信息中独立出员工的家庭住址信息, 街道 信息。下图显示了实体间的关系。is cataloged byi.n员工分类码 A20 亚1.n1.1分爰害林父节点VA20A20卡1,1K*y_1 <pk
9、>士镀 姓等 洋於是安党同 入职三期羹第<信A20<E>WA20SIA1A10A20则俄干取.员工冢底住址A20VA20VA10VA2DKey1 <pi>1,1加留-街道地囹演码3彳时1速街道名称VA20楮诬脩息VASCOKey_1 <pi>1»n1.1 -3.2 生成pdm步骤第一步、打开PD文件夹中的可执行文件pdshell9.exe ,启动PD,会出现如下界面,选择新建一个物理模型第二步、我们以MS SQL Server数据库为例,选择数据库为 Miscrosft SQL Server 7.x ,注意,由于补丁文件只针对 SQL
10、Server 7.x版本,所以,无论我 们用 SQL Server 7.x 还是2000或以上版本,此处的DBMSffi要选择 SQL.Server.7.x 。第三步、确定后左侧面板中会出现一个节点,双击弹出如下对话框,设置此模型的name,code等可c e+迅 Physi c&lD&taMpdeI_2 *定 Model Properties - myUlXJ idl试(myLII 1JJnl xjExtended DependfkciegVerEioa Inf*GeneralNo te e| Rui e MD ependenci esName:Code:mjuifrWnr
11、UI工,时任Comment:Fite narrie:Author:VersionDBMS:Mi ctoeo ft SQL Server T. zDatabase:<Norie>LocalReposi torydefault diagram: I /J Phj-sicalDiuETam_2匕3 T或le;洌益于友一员工工贸1 Script C-eneiat ion compl eted i;电血电工*ti口m successfuli=j 确. 1 聃肖应用| 帮助 |ugag e:(1) Co to the di recto iy E: i: est(2) Run th色 dat取b
12、dg会/if电片tiicn script!第四步、在新建节点上点击右键选择 New->TableCkjeDetach From WorkspaceCtrl+Alt+F4Find Objects.Check ModelCtrl+FLocal-Cq巾苫。ModelMerge ModelModel OptionsList aFNewPackagePhysical DiagramMultidimensional DiagramBusiness RuleUsDomainCon&olidate.Update from Rep05rtwy,HCompare with Repository.Ed
13、itRenameF2PropertiesAlt+EnterTableReferenceView ReFerencViewTest Data ProfileStorageProcedure第五步、在General选项卡中,设置表名,表的中文描述Code:Corrment:Owner:Nunjber:Hpe确定 I 联消 I 应用也I _帮助_ 第六步、在Columns选项卡中定义列,列的中文描述。注意此处列的数据类 型,一般地,主键前缀为pk_,数据类型为char(20) , boolean类型的列前缀为 b,数据类型为char(1),日期类型前缀为d,数据类型为char(10),等等,更 多数
14、据库表字段命名规范参照附录开发规范文档。mix Table Properties - SI试主表-员工信息YrtvivuGan«r«l叫 appimtColumnNot*工 Indtxit直I曲屈次。苦电包定义表字段及其 中文描述,注意 字段的命名规期Ekt/nded Dtptndancits | Version Inf。 c«dur«£ Ch.ek | Script | OptiensLitNanwCodeLJataTypi姓名 辐一 符吾真甫. 人明巳期=J employ st viuima iac bpi r 17 dindat echa
15、r(20)vticMr(20)ftfl 1*1 UHchar (1Jchar (10)F_J.rFPptr IJ Frrrrrrnrrrrrrr!rirILxlxrr':rirIL 厂 lX2=1 浦定 | 取消 |用| 帮助第七步、保存到指定目录,便得到 pdm文件3.3 生成SQLW本步骤第一步、选择菜单项 Database -> Generate Database101Database Repositor/ Tock Window Help建Chancie Current DBMS.n.Edit Current DBMS.Default Physical Options.a
16、|ii余陶渐号 DatCW-HSGen erate Triggers 8t Proce dures,Ctrl+5hift+P Generate Privilege 5.Reverse E ngineer Dwta b备e Ctrl+-RMadiF/ D 才d 序.s,圭裹-层March arnall i chmq- 丹 eh a fl;'Estimdts Database 颈we:u,Gen erats 工色比 Dta.C trl4-ShiFt+DGenerate Extraction ScriptsExecute 雪L .C trlf-ShiFt+ECaQfiqure Connect
17、ionst mCpnnecL.-C trlH-Shift+NDrsconnett.Connect on InFormation,E于爱生二 haj ICh3l(B fl诵tn第二步、在弹出界面中,设置生成脚本文件的存放路径,并对Tables & Views 选项卡做如下设置第三步、对Keys & Indexs 选项卡做如下设置,注意,取消除主键外的所 有选项,因为此时我们没有这些选项信息第四步、取消Database选项卡中的所有选项Databases Create databaser Fhyric引口创 th、F Begin script End script Open dat
18、aba比厂 Lioi datc-ba itI- Drop databaseSeguencear Create sequenceV Corrmtnl Ctrop: sequsncer" PermissionS.loragt5 Create slo-agsI Comment Drop sborsge-Jabtespaces - Create tabdespace 厂B日货n script F End sciipl L CornmentI- D rop tiblesp-jce-Rules Create ruleL CommentUser'defined da3 加士* Create
19、 data typeI Default 阅Ue CheckL Ccmfinent Drop 加启typ曰Abstract data typesI Create data type Corn?mei-itL Drop datcr typeI Install JAVA classR ernove J AVA c :as *I- Permissan确定 | 取消 |稽助 |第五步、按下确定按钮后,便生成了 SQL却本第四章生成数据字典数据字典是NC二次开发工具中探测数据库表结构的数据基础,而不是采用每次需要数据都连接数据库的方式。数据字典由上一步骤生成的pdm文件生成,NC二次开发工具提供了相应的生
20、成工具。4.1步骤第一步、启动NC®成辅助开发工具,选择菜单系统管理工具-> 数据字典 管理环境变量系统省理工具 参数设置 模孩说明自定义菜单数据字典首理功能注册 编吗映射 数据极限注册 功能节点默i人模板设置 操fE端程设计小.| m rran第二步、在弹出的界面中,选择菜单项工具-> 导入数据字典第三步、选择数据字典导入文件类型,此处选择解析PD帔件第四步、在弹出的界面中点击 选择 按钮,选择上一章生成的PDMC件第五步、选择覆盖方式,一般地,选择 全部覆盖第六步、在弹出的窗口左侧会出现可供选择的数据表, 选中需要导入的数据 库表加到右边的窗口中第七步,会出现如下窗口
21、,此时便完成了数据字典的导入第五章生成VOVQfi对象是数据传递的载体,其结构和数据库表结构紧密相关。一般我们在 一个专门的包中存放 VO对象,VO对象命名规则表现为类名以 VO结尾。NC二次 开发工具中也提供了相应的工具,用于生成数据库表的 VO类。5.1准备工作VO类通过ODBC1接数据库探测数据库表结构生成,所以,我们首先要建立 起数据库表结构和ODBC1接源。第一步、在SQLServer 2000查询分析器中执行第二章生成的 SQL脚本,生 成数据库表第二步、选择控制面板-> 管理工具-> 数据源(ODBC),弹出如下界面事勤程式凿裁速共用匾网於使用者管料来褥名穗|系统资料
22、来源名穗|幅案宜料米避名隔使用着资料来源回:噩蓟程式旺僦 园鹿WordE4 4 FiksFoxPto Files - WorfMQISMB Access DatatweVisual FoxPro TablesMicrosoft dEtftst DriverMicrosoft dEkss VFP Driver (华dhf)Microsoft Esc® Diiver (*.ids)Microsoft FoxPro VFP DriverSQL £小虹Microsoft Access Diiv?i (*.mdb)Mitro5*ftDriverMucnosaft VilFbxfm D
23、riverDH匚便用者宣料来源曾存放如何速瀛恃定的瓷才I提供者的膂度用着聋相聚源F.有笆能看见,且只能用在目前的谶器上*确定 取消 | 应用® | 帮助第三步、选择SQL Server驱动模式.引遛取您想要的陋物程式求定阖料来源保,名耦FB MEROT OEM 3.7D 32-EI7 SQL ServerPB MERAKT OEM 3.7C r-BIT SQL Seri 6PD MERAlfT OEM 3.7C -BIT Syb16ss A2EPD MERAKT OEM 3.7C 势BIT TextFik (#力Rathnal DataDirecI DE2 Wire Protocol
24、Rathjial E»atsDireci Orasle Wire Protocolapiivi? Server Anywhere B.O (Raticnal) Sybase EQL Anywlieie 5.0 日血nal)11 1第四步、指定数据源名称和数据库服务器取消第五步、在弹出的界面中,按下图进行设置第六步、选择刚才建立的数据库,此处为 v5test第七步、在弹出的界面采用默认设置第八步、测试数据库连接,如果出现如下信息,则表明建立的数据源有效5.2生成VO建立起数据库和ODB嗷据源之后,我们就可以开始生成 VO对象第一步、启动NC#成辅助开发工具,选择菜单向导工具->
25、codeseedVO2S向导工具自定义SlartDirectServercodeseedVOC:nrlRXaRfjAllne.code.sBed.v2.Cod6SeeclCJ k!,_- I 匚口u模式化开发向导工具第二步、设置我们刚刚生成的 ODB做据源,数据库访问的用户名和密码, 如果数据库表很多,可以勾选上“表前缀过滤”选项,输入需要表的前缀,按下“列表”按钮后会在界面的左边列表框中列出所有符合前缀条件的表名,选择一个主表,其它需要生成VO的表选作子表。在右边设置生成VO对象的存储路径和 VO类的包名及创建者,按下“为当前表生成文件”按钮,这样就在目标路径下 生成了 vcgfeo第六章第
26、一个单据在以上准备工作的基础上,我们现在着手开发第一个单据6.3步骤一、建立单据模板第一步、启动NC®成辅助开发工具,选择菜单项模板管理-> 单据模板设 置工具置模板省理单据营理预njLii划lit向s MainPanel|,账表榄桢世置打印模板设置模模分配卡片模板分配一查府模板初始犯第二步、在弹出的界面中,输入新单据模板标识,如 T01,然后按下“显示 模板”按钮,如果此模板已经存在,会显示出已经设置好的信息,如果此模板不 存在,右侧的“增加”按钮会变亮,表明可添加此模板。然后,通过表前缀过滤 器,列出需要的数据表,主表只能选一个,子表可多选,本例我们选择员工信息 作为主表,
27、员工家庭住址作为子表,按下“增加”按钮。第三步、弹出的界面的右上是我们刚才选择的数据表, 左上为表头部分,左 中为表体部分。第四步、接下来我们设置表头和表体的显示内容,左键单击选中主表(uap_test_employee )不放,拖动到表头区域松开,此时会弹出如下对话框。第五步、采用默认设置,确定,同样操作,将子表(uap_test_address )拖 动到表体区域,此时界面变成如下样子。第六步、我们可以修改具体显示字段的排列顺序,在表头 /表体区域按下鼠 标右键,会弹出下图右键菜单。噌加当前表噌加当前表选定项目噌加自定义项目增加表到新页茎二 增加表项目到新页签 噌加自定义项目到新页签删除页
28、签页签项目编辑第七步、选择“项目重新排序”菜单,通过上移下移改变排列顺序。第八步、我们还可以去掉一些不需要显示的字段, 在不需要显示的字段上按 下鼠标右键,弹出如下右键菜单,选择“删除项目”菜单,就完成字段的删除。1*11避目复楠目到表头 复制项目到表体 复制项目到表尾复制项目到表头新页签. 复制项目到表体新页签. 复制项目到表尾新应签一移动项目到表头 移动项目到表体一 移动项目到表尾移动项目到表头新页签 移动项目到表体新页签. 移动项目到表尾新页签一增加关联字段增加顼定义关联字段街小第九步、保存编辑完的模板,选择菜单项模板操作-> 保存模板操作模板粒览显示-上一页i生成推表模板城四生成
29、拒表模板生成打印模根第十步、输入模板的显示标题和节点标识,便完成了模板的设置6.4 步骤二、建立工程包结构首先、建立自己的模板包,此处包名为nc.ui.mytest 。其次、建立VO对象包,将我们第五章生成的VO包拷贝到工程的src目录下 即可。6.5 步骤三、定制界面控制类第一步、在 nc.ui.mytest 包中新建 MyTestControler 类,实现 ICardController 接 口。public class MyTestController implements ICardController /第二步、重载getBillType()方法,其返回值为单据类型。本例中为 T0
30、1。public String getBillType() return "T01"第三步、重载getBillVoName()方法,关联V”,控制单据数据的获得。public String口 getBillVoName() return new StringHYBillVO.class.getName(),TestEmployeeVO.class.getName(),TestAddressVO.class.getName();第四步、重载getBusinessActionType()方法,设置单据是否走流程平台 IbusinessActionType 为常量接口,BD表明单
31、据不走流程平台。public int getBusinessActionType() return IBusinessActionType.BD;这样,就完成了 Controller类6.6 步骤四、定制界面UI类第一步、在nc.ui.mytest 包中建立 MyTestUI类,继承自BillCardUI 类 public class MyTestUI extends BillCardUI/ 第二步、重载createController() 方法,关联界面控制类,此处返回刚刚 创建的 MyTestController 类。protected ICardController createCont
32、roller() return new MyTestController();这样,就完成了 UI类6.7 步骤四、连接模板到NC集成辅助开发工具中查看效果第一步、从 Eclipse 的 package explore 打开 NC_HOME/ierp/DevelopToolConfig.xml 文件E- R NC_HOME 申fint 申 o bin E- confE' ejbi+ 后 ejbXMLsE- B externalIt - framework百“& ierpFE LS? binm 1:1kiDevelopToolCo 小泉xml第二步、在其自定义菜单位置,添加一个新
33、的子菜单,并将className设置 为我们编写的UI类。<menuItem><menuItemName>的单据模板 </menuItemName> <className>nc.ui.mytest.MyTestUI</className></menuItem>第三步、启动NC集成开发工具,会在自定义菜单项下发现我们刚刚添加的 菜单项“我的单据模板”,选择此菜单项,就会弹出如下界面。|gjx|hr".暇录单位用友软件股份女司操作品:比h如用友软件2006-03-30我的第一个模板姓名-1年龄类别I'是否党员
34、人明日朗第七章参照7.3 什么是参照参照录入,是一种辅助的数据输入方式,通常弹出界面的形式提供可以参考 的数据,比如在录入省份信息时,提供一个全国省份列表以供选择。单据开发中, 有很多输入字段存在类似的需求。NC系统中预置了很多种常见参照(基本覆盖 了所有的基本档案,比如人员参照,存货参照),如果要自定义一种参照,则需 要简单的开发工作。下面我们对员工家庭住址中的街道做一个参照,方便街道信息的录入。7.4 建立参照类步骤一、建立自己的参照类,定制被参照的数据及其显示样式及格式。 我们 用 nc.ui.mytest.ref 包来存放参照类,新建 RoadRefModel继承 DefaultRef
35、Model 类,用于录入员工数据。public class RoadRefModel extends DefaultRefModel/ 步骤二、设置存储参照信息的数据库表名,及其关键字字段名public String getTableName() return "uap_test_road"public String getPkFieldCode() return "pk_road"步骤三、分别重载 getFieldCode()和getFieldName()方法,设置需要参照 的字段(数据库表中的列名),及其显示名称public String口 getF
36、ieldCode() return new String口 "vname", "description"public String口 getFieldName() return new String " 街道名称","描述信息"步骤四、设置参照弹出对话框的标题public String getRefTitle() return "道路参照"这样,就完成了参照类,下面将单据模板中的某些字段设置上参照7.5 在单据模板上设置参照如果在第六章建立的单据模板中添加一条员工家庭住址信息, 输入住址所在 街
37、道时需要输入街道数据表对应记录的主键, 这是添上参照,使得用户录入员工 家庭住址时,可以通过选择街道来填充对应的街道字段步骤一、启动NC1成辅助开发工具,在模板管理-> 单据模板设置工具 菜 单中,修改之前建立的“ T01”单据模板。步骤二、为了给用户更加直观的感受,我们给表体增加“街道名称“歹I,并 将这列作为参照录入的列。在表体上按下右键菜单,选择“增加自定义项目”。增加当前表噌加当前表选定项目噜加表到新页签一 噌加表项目到新页签 噌加自定义项目到新页签删除页签凝重新拓二页签项目编辑噌加共享页步骤三、此时会弹出如下对话框诘片人鱼目主键;诘输入项目主障loadname第四步、每一列都有一个标识,输入列标识后按下确定。这时,表体增加 roadname列,单击列头右边的属性窗口会显出出项目主键和显示名称。第五步、修改显示名称为“街道名称”第六步、选择高级属性选项卡,将数据类型设置为“参照”,参照类型设置 为我们建立的参照类,放至U “<>”中,即为“<nc.ui.mytest.ref.RoadRefModel
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024年英文员工劳动协议范本
- 体育场地的儿童安全与保护考核试卷
- 基于大数据的财务预测与决策支持系统考核试卷
- 心理健康教育和培训的必要性考核试卷
- 塑料制品的创新与智能化生产技术考核试卷
- 炼铁行业中的员工培训与发展考核试卷
- 信息系统故障诊断与恢复策略要点和技巧分享与总结考核试卷
- 南京信息工程大学《算法设计与分析II》2022-2023学年期末试卷
- 南京信息工程大学《艺术鉴赏与美学修养》2021-2022学年第一学期期末试卷
- 《TGF-β1-Smad3在hUMSCs移植改善原发性卵巢功能不全大鼠卵巢纤维化的机制研究》
- 2023燃气工程分包合同正规版
- 陕西师范大学学位英语试题
- 【基于嵌入式的人体健康智能检测系统设计与实现14000字(论文)】
- 基础管理风险分级管控清单(双体系)
- 医学课件:临床决策分析
- 江苏开放大学2023年秋《中级会计实务(上) 050284》第4次任务参考答案
- 屋顶光伏安全专项施工方案
- 4.与食品经营相适应的主要设备设施布局操作流程等文件
- 四班三倒排班表
- 银行业信息系统灾难恢复管理规范
- 医院重点岗位工作人员轮岗制度
评论
0/150
提交评论