NC开发笔记——二开知识点

用友集团ERP客户化开发系列丛书

NC客户化开发进阶

培训教程

V2.0版

本教程是用友软件股份有限公司内部培训资料,只限于用友公司内部开发应用,任何人未经过事先书面许可不得扩大本教程的使用范围。同样,未经过用友公司书面许可,任何人不得以任何形式对本手册进行增删、改编、节选、翻译、翻印或仿制,违者必究!

?本手册的著作权属于用友软件股份有限公司

版权所有?翻制必究

2009年1月第一次印刷

在中华人民共和国印制

用友软件股份有限公司

目录

第一篇 入门篇 ................................................................................................................................. 5

1. 建立NC环境 ........................................................................................................................... 5

内容概述 ................................................................................................................................... 5

详细介绍 ................................................................................................................................... 6

1.1.1. 建立数据库 ....................................................................................................... 6

1.1.2. 安装NC ............................................................................................................ 7

1.1.3. 配置启动NC .................................................................................................... 9

1.1.4. Eclipse中建立NC开发环境 ......................................................................... 13

1.1.5. 产品参数,档案初始化 ................................................................................. 19

1.1.6. 权限管理 ......................................................................................................... 22

1.1.7. 产品主要目录结构介绍 ................................................................................. 24

2. NC基础技术 .......................................................................................................................... 25

内容概述 ................................................................................................................................. 25

详细介绍 ................................................................................................................................. 25

2.1.1. NC UAP 总体介绍 ........................................................................................ 25

2.1.2. NC开发中的一些基本概念 .......................................................................... 30

2.1.3. NC的开发模型 .............................................................................................. 32

2.1.4. 开发远程接口 ................................................................................................. 34

? 定义接口 ......................................................................................................... 34

? 实现该接口 ..................................................................................................... 34

? 部署组件 ......................................................................................................... 34

? 客户端调用 ..................................................................................................... 35

? 事务型组件发布 ............................................................................................. 36

? 客户端代码 ..................................................................................................... 38

3. 数据建模 ................................................................................................................................. 40

内容概述 ................................................................................................................................. 40

详细介绍 ................................................................................................................................. 40

3.1.1. PowerDesigner建模 ....................................................................................... 40

3.1.2. 生成NC数据字典 ......................................................................................... 48

第二篇 中级篇 ............................................................................................................................... 49

4. 单据开发 ................................................................................................................................. 50

内容概述 ................................................................................................................................. 50

详细介绍 ................................................................................................................................. 50

4.1.1. 进入Workshop ............................................................................................... 50

4.1.2. 表单开发流程导航工具 ................................................................................. 52

4.1.3. UI工厂............................................................................................................ 65

5. NC数据库持久化技术 .......................................................................................................... 68

内容概述 ................................................................................................................................. 68

详细介绍 ................................................................................................................................. 69

5.1.1. 核心类介绍: ................................................................................................. 69

5.1.2. 通过JDBC FrameWork访问数据库 ............................................................. 70

5.1.3. 通过BaseDao进行对象的持久化................................................................. 73

1

用友软件股份有限公司

5.1.4. 结果集控制 ..................................................................................................... 74

6. 单据开发其他相关技术 ......................................................................................................... 75

内容概述 ................................................................................................................................. 75

详细介绍 ................................................................................................................................. 75

6.1.1. 参照开发 ......................................................................................................... 75

6.1.1.1. 参照的类结构图 ..................................................................................... 75

6.1.1.2. 自定义参照开发规范 ............................................................................. 76

6.1.1.3. UIRefPane 和refModle设置 ................................................................ 78

6.1.2. 单据号 ............................................................................................................. 79

6.1.2.1. 单据号规则 ............................................................................................. 79

6.1.2.2. 接口方法 ................................................................................................. 81

6.1.3. 公式 ................................................................................................................. 83

6.1.4. 锁 ..................................................................................................................... 88

6.1.5. 日志 ................................................................................................................. 90

6.1.6. 异常 ................................................................................................................. 91

7. 报表开发 ................................................................................................................................. 93

内容概述 ................................................................................................................................. 93

详细介绍 ................................................................................................................................. 93

7.1.1. 入门 ................................................................................. 错误!未定义书签。

7.1.2. 查询模型 ......................................................................... 错误!未定义书签。

7.1.3. 格式设计 ......................................................................... 错误!未定义书签。

7.1.4. 发布报表 ......................................................................... 错误!未定义书签。

第三篇 高级篇 ............................................................................................................................... 93

8. 预警平台 ................................................................................................................................. 93

内容概述 ................................................................................................................................. 93

详细介绍 ................................................................................................................................. 94

8.1.1. 预警类型注册 ................................................................................................. 94

8.1.2. 预警条目注册 ................................................................................................. 96

9. 交换平台 ............................................................................................................................... 101

内容概述 ............................................................................................................................... 101 详细介绍 ............................................................................................................................... 101

9.1.1. 交换平台使用 ............................................................................................... 101

9.1.2. 交换平台插件开发 ....................................................................................... 107

10. 流程平台 ....................................................................................................................... 109

内容概述 ............................................................................................................................... 109 详细介绍 ............................................................................................................................... 109

10.1.1. 流程平台介绍 ............................................................................................... 109 10.1.2. 业务流程 ....................................................................................................... 111

业务类型 ............................................................................................................... 112

流程配置 ............................................................................................................... 113

单据权限配置 ....................................................................................................... 114

单据来源配置 ....................................................................................................... 115

动作约束配置 ....................................................................................................... 116

动作事件控制配置 ............................................................................................... 117

2

用友软件股份有限公司

动作驱动配置 ....................................................................................................... 117

单据VO交换 ....................................................................................................... 118

下面是一个最小化的推式流程过程 ................................................................... 120

拉式单据(单据的上下游参照) ....................................................................... 121

10.1.3. 审批流 ........................................................................................................... 122

审批流定义 ........................................................................................................... 122

审批流编程 ........................................................................................................... 127

10.1.4. 消息中心 ....................................................................................................... 135

11. 会计平台 ....................................................................................................................... 139

内容概述 ............................................................................................................................... 139 详细介绍 ............................................................................................................................... 139

11.1.1. 会计平台注册 ............................................................................................... 140 11.1.2. 代码调用 ....................................................................................................... 146

12. 单点登陆 ....................................................................................................................... 147

内容概述 ............................................................................................................................... 147 详细介绍 ............................................................................................................................... 148

12.1.1. 单点登陆 ....................................................................................................... 148 12.1.2. 打开代办事项 ............................................................................................... 151

13. NC开发webservice-Axis ............................................................................................ 152

内容概述 ............................................................................................................................... 152 详细介绍 ............................................................................................................................... 152

13.1.1. 发布webservice ............................................................................................ 152 13.1.2. 客户端代码调用 ........................................................................................... 156 第四篇 附录 ................................................................................................................................. 157

14. XML和EXCEL ........................................................................................................... 157

内容概述 ............................................................................................................................... 157 详细介绍 ............................................................................................................................... 157

14.1. 利用XmlUtils读取XML ............................................................................ 157 14.2. Excel文件读写 ............................................................................................. 163

15. 多语言 ........................................................................................................................... 164

内容概述 ............................................................................................................................... 164 详细介绍 ............................................................................................................................... 164

15.1.1. 生成资源文件 ............................................................................................... 165 15.1.2. 代码调用 ....................................................................................................... 165

16. 补丁与安装盘 ............................................................................................................... 166

内容概述 ............................................................................................................................... 166 详细介绍 ............................................................................................................................... 166

16.1. 安装盘结构 ................................................................................................... 166 16.2. 产品结构 ....................................................................................................... 167 16.3. 模块结构 ....................................................................................................... 167 16.4. 制作补丁 ....................................................................................................... 170

17. 设计开发规范 ............................................................................................................... 173

内容概述 ............................................................................................................................... 173 详细介绍 ............................................................................................................................... 173

3

用友软件股份有限公司

17.1. SQL规范 ...................................................................................................... 173 17.2. java开发规范 ............................................................................................... 176

18. 开发常见问题与技巧 ................................................................................................... 189

内容概述 ............................................................................................................................... 189 详细介绍 ............................................................................................................................... 189

18.1. 环境变量类 nc.ui.pub.ClientEnvironment................................................... 189 18.2. 发送待办消息 ............................................................................................... 191 18.3. 模板中下拉框的值 ....................................................................................... 192

4

用友软件股份有限公司

第一篇 入门篇

欢迎您成为用友NC开发队伍中的一员!如果您从未接触过NC的开发,本篇将从NC产品使用开始,序渐进的带您步入精彩的NC产品世界.本学时教程是在完成NC产品使用入门阅读的最佳起点。在开始学习之前,您需要掌握以下基本技能:

? Eclipse使用

? JAVA和JE22基础知识

本学时教程中将会讲述以下内容:

NC产品入门,本章旨在为那些对NC尚不了解的新进人员就NC的大体形态做个简单的讲解,以便对NC产品有个简单的认识,并学习到与NC产品二次开发有关的产品操作技术入门知识。

开发环境的安装和搭建,本章是为第一次使用NC的人员做准备,达到迅速的安装和搭建NC环境。

NC技术框架简介,本章您将会学习NC技术框架理论概念,通过学习范例代码掌握VO\BO\远程接口的概念。

NC5.X的数据建模,使用PowerDesigner进行数据库建模。

1. 建立NC环境

内容概述

第一次在NC环境中做开发,需要首先建立一个数据库环境,这个数据库环境中指定了NC所要使用的表空间,并预先建立了NC的系统表、视图、索引等,并预置了大量的初始化数据。然后,在Eclipse中建立一个开发项目,引用UAP的jar包即可。经过这两步,就完成了NC开发环境的建立。

NC环境安装完成后还需要对系统进行初始化,包括参数,组织结构,权限,基本档案的建立,这样一个系统才算真正可以使用。

5

用友软件股份有限公司

详细介绍

1.1.1. 建立数据库

在数据库服务器(Oracle,MS SQLServer,DB2)中新建一个空数据库,并执行数据库脚本建立NC需要的表空间,不同的数据库使用的脚本不一样(正式安装盘下有安装说明),以MS SQLServer为例:假设新建的数据库叫ncdemo,MS SQLServe的数据文件存放在D:\Microsoft SQL Server\data 下,那么数据库脚本为

6

用友软件股份有限公司

安装NC

该步骤的目的是建立NC测试服务器,并利用它建表,并初始化数据表。 运行UAP V5安装盘 下的ncsetup.bat文件,会进入下面的安装向导:

1) 选择NC服务器端环境根目录:

2) 选择要安装的UAP产品模块:

3) 开始NC环境的安装

7 1.1.2.

用友软件股份有限公司

4) 选择第三方中间件,如果没有则默认使用NC自带中间件。

执行完此向导后,可以在你指定的NC_HOME目录中创建NC服务器端环境,如下图:

8

用友软件股份有限公司

1.1.3. 配置启动NC

1)在NC_HOME\BIN 目录下运行ncSysConfig.bat,首先需要建立数据源。

2)部署代码,NC5.X需要通过部署生成Ejb代码,否则程序无法使用。所以在添加数据源后必须部署产品,选择需要部署的模块,点击部署按钮。

9

用友软件股份有限公司

3)修改服务器端口,可以在server页签修改web服务器的端口

4) 下面启动NC自带的中间件,方法是在上面的NC_HOME目录中双击startup.bat,中间件即可启动,启动界面如下:

10

用友软件股份有限公司

5) 利用InternetExplore作为客户端登陆,在地址栏输入即可看到下面的界面:输入用户名root,密码为空,登陆到系统管理帐套中

6)帐套管理里面新建帐套,用户。

前面建立了NC要使用的数据库,并为数据库设置了表空间信息,但这还不够,还必须为其安装NC的系统数据表和初始化数据。方法是点击上面 帐套管理 页面的“升级帐套”按钮,开始进行数据表的建立和初始化,如下图:

11

用友软件股份有限公司

然后开始初始化:

12

用友软件股份有限公司

至此,NC数据环境已准备好。注销后再登陆到”学习帐套”,即进入了真正的NC系统,如下所示:

1.1.4. Eclipse中建立NC开发环境

在上一个步骤中,演示了怎么搭建NC的数据环境和测试环境,但作为开发人员,日常的工作都是在Eclipse开发环境中进行。在Eclipse中建立开发环境分下面几个步骤:

1.在Eclipse插件中加入NC开发所需的MDE插件(nc.uap.mde.editor_1.0.1.jar和

13

用友软件股份有限公司

nc.uap.mde_1.0.2.jar),这些插件可以在 相关工具\Eclipse_NC插件 中找到,拷贝到eclipse安装路径下的plugins目录下即可。

2.取得NC_HOME,NC_HOME包含了开发环境所需的所有jar包, NC_HONE就是安装完NC产品的主目录。通过Preferences中MDE Development 中设置NC Home。 还可以设置数据源,模块选择。

3.打开Eclipse,点击菜单“新建/项目”,弹出下面的对话框:

14

用友软件股份有限公司

选择MDE Development下的Moudle Project即可。

4.点击下一步,开始创建Moudle Project,在下面的对话框中填入信息:

5.点击完成后,会创建项目,形成下图所示的目录结构:

15

用友软件股份有限公司

6.至此,开发环境已建立完毕。在开发环境中调试程序,一般需要首先启动NC中间件,然后启动UAP客户端调试器。下面我们在eclipse调试器中建立这两个程序:

建立中间件调试启动点,方法是在调试点管理界面左边列表的Module Application下新建一个调试点,MDE插件会为它设置默认参数,我们只需改变一下调试点名称,如下所示:

16

用友软件股份有限公司

program arguments设置如下:

${FIELD_NC_HOME}/ierp/bin/prop.xml -Dnc.server.location=${FIELD_NC_HOME} -DEJBConfigDir=${FIELD_NC_HOME}/ejbXMLs

-DExtServiceConfigDir=${FIELD_NC_HOME}/ejbXMLs

VM arguments设置如下:

-Dnc.server.location=${FIELD_NC_HOME}

-DEJBConfigDir=${FIELD_NC_HOME}/ejbXMLs

-DExtServiceConfigDir=${FIELD_NC_HOME}/ejbXMLs

Working directory

选择Other 内容为 ${FIELD_NC_HOME}

启动中间件快捷方式是在工程点击右键,在run as出点击NC Milldeware就可以。

建立UAP客户端调试器启动点,该调试器的入口类是nc.starter.test.Jstarter,因此可以新建一个 Java Application类型的调试点,输入入口类,如下所示:

在设立这两个调试点之后,要注意两个问题:一是你的项目所使用的JRE的安全

17

用友软件股份有限公司

策略必须是:

这可以通过修改 {$JRE根目录}/jre/lib下的java.policy文件来实现,否则在启动中间件时会出现java.security.AccessControlException;二是要成功运行UAP客户端调试器(JStarter),必须将jre/lib下的plugin.jar,Tools.jar也加入到项目默认的JRE的classpath中,如下所示:

此时即可先启动中间件,再启动客户端调试环境。客户端调试环境启动图如下:

18

用友软件股份有限公司

上面显示连接的是本机中间件,如果在远程有中间件,填入其IP和端口,也可用

于调试开发环境中的客户端代码。点击“Start”按钮后即可进入NC登陆界面,如

下所示:

至此,NC的环境完全建立起来。

1.1.5. 产品参数,档案初始化

利用NC-UAP进行开发的时候并不是做一个单据,报表就可以运行的,NC作为一个ERP软件,需要对系统进行一些初始化才可以正常运行,主要是对组织机构,人员,权限,会计期间,参数,档案的初始化。(本节只对这些设置进行简单描述,详细介绍可参考相应产品手册,比如基本档案,权限手册)

? 参数

在 NC 管理软件中,参数设置平台管理系统所有的参数,并对参数按实际需要进行逐级分配,实现既能统一控制,又能满足单位灵活运用。参数包括公共参数和业务参数,以集团进入还是以公司进入看到的参数设置界面内容是不同的。主菜单中双击【客户化】-【参数设置】:

19

用友软件股份有限公司

必须设置的参数是集团本位币。

? 币种

对于全集团用到的币种在本功能中进行设置。总公司或上级单位确定集团公司或所属下级单 位使用的全部币种,包括本位币。币种设置完成后,集团公司所有内部单位还需在各自单位 账中录入相应的主辅币信息及汇率信息,待这些信息录入完毕后,方能在日常业务使用的这 些币种。在主菜单中双击【客户化】-【基础数据】-【币种】,系统将弹出界面。属于集团档案

20

用友软件股份有限公司

? 会计期间方案和会计期间

会计期间方案用来定义账套拥有的会计期间数目,然后为每个期间方案定义一套会计期间。 在主菜单中双击击【客户化】-【基础设置】-【会计期间方案】

会计期间节点用来定义账套的会计月度和会计季度。启用多账簿的情况下会计期间按照会计 期间方案分别进行设置。

在主菜单中双击击【客户化】-【基础设置】-【会计期间】,

? 公司目录

公司目录用于定义集团公司所有公司的基本信息、联系信息,包括公司编号、名称、联系方 式等相关信息,并确定分子公司之间的关系。以公司身份登陆后,只能查询。

在主菜单中双击【客户化】-【基础数据】-【公司目录】

? 建公司帐

新建公司账是为已经存在公司目录中的公司建账、增补系统模块,以便初始化业务数据及业 务参数,已建账的公司才能处理有关业务。新建公司账还可为已建账公司增补功能节点。 在主菜单中双击【客户化】-【建公司账】-【新建公司账】

21

用友软件股份有限公司

? 基本档案

在基本档案节点为集团和公司建立基本信息,以便于业务系统使用,包括部门、人员、库存、自定义项、组织机构、财务信息、业务信息、制造信息等等。除少数几个档案只能在集团增加外,其他档案受集团参数设置节点的【客户化】中的【基本档案】参数决定,为“是”公司和集团均可增加档案内容,为“否”则公司不能增加。

常见的档案添加比如:部门档案在公司增加,人员类别在集团,人员档案在公司。具体档案初始化参考基本档案产品手册,不一一介绍。

1.1.6. 权限管理

NCV5.0权限管理与之前版本最大的区别在于在权限管理中引入了“角色”概念。先规划好各种角色并分配权限,再将用户与角色关联起来,将角色作为桥梁把“用户”和“权限”连接起来。换句话说就是:通过规划好各种角色先将用户分类,再为各类用户分配权限。

资源权限控制界面用来为当前登录公司以及当前登录公司的下属公司启用按钮权限控制和数据权限控制。

NC系统中的权限由三个部分构成,分别为功能权限、数据权限和按钮权限。功能权限是指节点的查看和打开的权限;数据权限是指档案的参照权限,而按钮权限是只指各个界面上按钮的查看和使用权限。如果不启用权限控制,则不需要分配权限,系统默认角色具有所

22

用友软件股份有限公司

有权限;启用权限控制后,可以为具体的角色分配具体的权限。NCV5.0系统默认启用了功能权限控制,且该设置不可修改;数据权限和按钮权限的权限控制默认为不启用状态,但可在本界面对设置进行修改。

在用户管理界面可以为当前登录公司以及当前登录公司的下级公司增加用户,还可以为在这些公司创建的用户委派角色。用户必须被委托角色才有相应权限

角色管理的界面如图所示。角色管理节点用来为当前登录公司以及当前登录公司的下属公司创建角色,将创建的角色分配给下属公司以及为角色关联用户。

23

用友软件股份有限公司

权限分配的界面如图所示。权限分配节点用来为当前登录公司和当前登录公司下属公司的角色分配功能权限、按钮权限以及档案的数据权限。

经过以上操作可以为公司建立角色,用户,并赋予相应权限。深入的权限管理参考权限管理产品手册。

1.1.7. 产品主要目录结构介绍

ierp/bin: 与整个产品相关的配置文件都存放在该目录,如日志配置文件logger-confing.properties

modules: NC产品模块存放的目录,下面的所有模块在系统启动时得到加载

modules/<模块名>: 某个模块的目录,模块名必须是小写的英文字母,在能表达意义的

24

用友软件股份有限公司

基础上尽量的短

modules/<模块名>/META-INF/module.xml: 必须存在,配置模块的一些通用属性,如名称,描述,classloader等,注意名称必须与模块名称同名

modules/ <模块名>/lib: 模块公开的API类,如接口,接口相关的VO等,放JAR包 modules/ <模块名>/classes:模块公开的API类,如接口,接口相关的VO等,放带目录的.class文件等,用于补丁

modules/ <模块名>/META-INF/lib: 模块私有的代码,如DMO, 业务实现等,放JAR包 modules/ <模块名>/META-INF/classes:模块私有的代码,放带目录的.class文件等,用于补丁

modules/<模块名>/extension/lib,classes: 用于二次扩展的公开的API

modules/<模块名>/extension/META-INF/lib,classes:用于二次扩展的私有的API

modules/<模块名>/client/lib,classes: 用于从目标上来说不属于公共的API,但是客户端用到的代码

webapps/nc_web:NC产品的web应用

hotwebs: 下面放其他的web应用,如hrss, lfw等

resource: 存放与整个产品相关的资源,如产品的多与资源

lib, classes, external/lib, classes: 由平台维护和提供的类库,不允许第三方调整

2. NC基础技术

内容概述

本章将介绍UAP-NC平台的技术结构,开发模型,并通过一个例子亲身感受远程接口开发。

详细介绍

2.1.1. NC UAP 总体介绍

UAP-NC作为基于多组织架构的企业应用运行平台、基于模式化的开发平台、开放的系

25

用友软件股份有限公司

统集成平台及统一的系统管理平台,是建立在Java语言所提供的强大功能的基础上开发的。Java是一种简单的、面向对象的、分布式的、结构中立的、安全的、可移植的、性能优异的、多线程的、动态的开发语言,适合构建基于网络计算的企业应用。由于Java的平台无关性,使得UAP-NC可以运行在不同硬件平台、不同操作系统平台上。基于UAP-NC所开发的应用软件采用Browser/Server(浏览器/服务器)的方式来运行。B/S的运行方式最大限度地方便了用户部署和维护大型软件系统,保证了瘦客户机运行,从而大大降低了用户目标系统的总体拥有成本(TCO)。

UAP-NC体系框架图

系统框架层主要指基础软件,如操作系统、数据库及J2EE应用服务器。UAP-NC支持多种操作系统(Solaris、AIX、Linux、Windows等),可运行于符合J2EE规范的多种应用服务器(IBM WebSphere、BEA WebLogic、UFIDA Application Server等),支持多种数据库DBMS(DB2、Oracle、SQL Server、OSCAR等)。UAP-NC还提供Portal服务器进行内容集成以使用户对企业资源有一个统一的访问点。

技术框架层是在系统框架层(操作系统、数据库及应用服务器)和应用系统之间建立的一层技术封装层和系统资源监控和管理层。技术框架层屏蔽不同具体技术实现的细节,减少

26

用友软件股份有限公司

直接使用系统资源带来的复杂性、异构性、不安全性及不稳定性;技术框架层监控和管理系统资源,保证系统资源的可用性及其合理使用;技术框架层提供最佳编程模式,加快在不同技术平台上开发和部署应用的速度,保证应用的健壮性。技术框架层所屏蔽技术实现细节包括界面风格、远程接入、EJB实现/访问、多数据库适配、事务处理、并发处理、缓存处理、安全管理等等。

? 企业服务架构(Enterprise Service Architecture,ESA)

企业服务架构是一个服务集成总线,支持异构环境的服务、消息及基于事件的交互。通过ESA,可以使用与实现无关的接口来定义服务,可发现和调用所需的服务,可解决服务之间的相互依赖。

? 连接框架(Connect Framework)

连接框架连接客户端与服务器,使不同客户端(浏览器小应用程序、Java应用程

序、浏览器JSP)可通过不同访问协议(HTTP/HTTPS,RMI)使用服务器提供的服务。 ? 同步(Synchronization)

同步服务实现客户端与服务器代码和数据的同步,及集群环境下服务器之间的资源

同步。

? SQL翻译器(SQL Translator)

SQL翻译器将SQL翻译成适合目标数据库的SQL语句,以适配不同数据库厂商提供

的产品;优化SQL,充分发挥不同数据库的最大性能。

? 元数据管理(Metadata Management)

元数据是描述系统数据(包括界面定义、规则定义、流程定义等)的数据。通过元

数据管理,对系统数据统一进行维护以支持用户自定义,如改变字段的可编辑属性、字段的取值范围等。

? 工作流引擎(Workflow)

? 工作流引擎根据工作过程的描述,通过执行一系列已定义的工作项,完成此工作过程。UAP-NC的工作流引擎支持多种工作流模式,如分支、合并、并行、选择、循环、回退等;支持工作项的抢占与会签;支持可配置的动作执行脚本,等等。

? 规则引擎(Rule Engine)

? 规则引擎用来定义和执行各种规则,包括界面规则、关联关系、计算规则、条件跳转规则等。使用规则可以让应用更加富有柔性。规则需要通用的行业化语言精确表达且浅显易懂。规则引擎需要满足一定的计算速度,支持规则的批量处理及理解外部数据。

27

用友软件股份有限公司

? 持久化框架(Persistence Framework)

封装不同持久化技术(如JDBC、普通文件、XML、Excel)。持久化框架可解决对象与关系之间的“阻抗失配”问题。

? 基础算法(Basic Algorithms)

提供统一的基本算法,如排序,XML文档操作,方便开发与编程,统一代码规范。 ? 登录和安全(Login/CA Security)

统一管理系统登录时的身份认证。支持多种身份认证策略,如静态密码认证、基于USB Key的CA身份认证等。支持对业务敏感数据使用证书进行签名和验证以防止数据篡改和提供抗抵赖性。

? 调度引擎(Scheduler)

? 调度引擎对服务和线程进行统一管理,以屏蔽不同应用服务器的异构性。调度引擎调度各种服务、常驻系统服务、客户端的请求服务、以及一些服务的组合。

? 异常(Exception)

统一解释与封装异常消息,如不同厂商的数据库异常的不一致。

? 缓存(Cache)

提供在服务器端与客户端的临时内存中进行缓存的机制,包括对象的创建、共享访问、假脱机(Spooling)、失效等,加快对用户操作的响应。

? 日志(Log)

日志机制提供对系统运行时的监控及支持对系统异常的追踪与定位。日志机制可控制日志输出的格式、日志信息的级别、日志信息输出的目的地(文件、控制台、SocketServer等)。通过配置文件进行灵活的设置,用户可以细致地控制日志的生成过程,而不需修改程序代码。

应用框架层是基于企业建模理论的、以业务导向和驱动的、可快速构建应用软件的软件平台。应用框架层的出现是一种技术创新,它使软件平台多了一个具有革命性意义的战略层次,为降低大型复杂软件系统的实现难度提供了新的途径。将应用软件的业务逻辑和开发技术相对分开,使得应用软件的开发者可以仅关注应用的业务逻辑,而不必关注其繁琐的技术实现。这使管理层与业务人员参与应用软件的开发成为可能。UAP-NC应用框架层基于业务和管理层面,以业务建模(组织、流程、功能、资源、信息)为基本手段,从而构造、开发和维护业务应用系统。使用UAP-NC提供的应用框架层,可大大缩短研发周期,提高研发效率,加快应用开发的速度;减少企业信息系统开发的风险;降低开发成本;实现最终用户的

28

用友软件股份有限公司

个性化的需求;支持用户在发展过程中各种各样的需求变化;提供应用的高价值。

? 国际化(I18N)

实现界面的多语化及数据和展示的本地化。界面的多语化是指根据用户登录时指定的语种显示相应的语言界面。企业用户可以修改相应的语言信息及显示的图片。数据和展示的本地化指日期、时间、数字、货币、汇率等可根据企业用户本地的习惯进行展示。 ? 消息管理(Message Management)

消息管理集中显示通过ESA所传送的消息,如应用系统所产生的预警消息,通知消息,业务流程相关的消息,及企业公告和用户对发消息等。

? 移动管理(Mobile Management)

支持通过移动设备进行消息的交互及操纵业务数据等。对无线设备的广泛支持,UAP-NC带来的是企业管理的无处不在和服务的无限拓展,同时也为企业决策人员提供了高端、迅捷的管理机制。

? 组织管理(Organization Management)

提供从不同维度管理企业,如公司、部门、主体账簿等。

? 数据传输(Data Transfer)

数据传输负责传输以规则定义的数据集以支持数据层的应用集成。

? 数据交换(Data Exchange)

与第三方系统进行数据交换,提供灵活的数据映射及数据绑定,支持根据业务规则的转换,同时结合工作流平台整合业务流程。

? 动态会计平台(Financial Account Platform)

通过定义会计科目类别和凭证模板,使用凭证生成器,根据业务数据生成实时凭证。在保持业务数据与财务数据相对独立的基础上保证数据的一致性和及时性。 ? 预警平台(PreAlert)

? 在预警平台上可定义多种方式的预警条件以进行形式多样的预警,如时间条件、库存大小、生日等。预警还可配置在用户登录时触发。预警消息可以用HTML网页的形式发布,可以通过邮件发布,还可使用短消息发送。

? 业务流程和审批流程的编排(Business Process and Approval Flow

Orchestration)

用来定义业务流程和审批流中数据的流向,数据间的关系及以人员的关系。

? 访问控制(Access Control)

29

用友软件股份有限公司

使用基于用户角色和对象权限的权限分配方式。每一角色都包含公有权限和属于某一具体公司的私有权限。角色还提供信任功能。

? 应用模式(Application Patterns)

UAP-NC根据经验积累与用户实施,总结出一套与应用界面相关的模式(表单、报表和打印),更好地提供满足用户需求的界面展现,更快地满足用户个性化的需求。

UAP 部署图

2.1.2. NC开发中的一些基本概念

单据:比如报销时的报销单,一般由表头和表体组成(有些时候还含有表尾)。表头中包含了单据的主信息,比如日期、部门、预算项目;表体包含了单据的明细信息,比如具体的事项和金额;

单据类型:一个业务系统为了使结构更清晰,通常也是分层的。比如,供应链系统包含了采购、库存等子系统,每个子系统都具有一个系统类型,而每个子系统都会具有很多张单据,为了区分这些单据,为每张单据命名一个单据类型,作为唯一标识;

30

用友软件股份有限公司

模板:单据开发涉及到三大模板(单据模板、查询模板、打印模板)。单据模板定义了单据的显示外观和基本框架,查询模板定义了单据的查询对话框,打印模板定义了单据信息打印到打印机的样式和格式;

VO是ValueObject的简写,在NC中是一个抽象类,它实现了Cloneable和Serializable接口。是NC业务数据的载体在系统各层之间传递业务数据。

CircularlyAccessibleValueObject是ValueObject的子类,提供了对自身的属性进行存取操作的方法。

SuperVO是CircularlyAccessibleValueObject的子类,是NC系统中最常使用的VO类型,它与一张数据库表对应,可以方便的利用NC的JDBCFramework进行持久化操作。

以上是对一个数据对象的抽象,在NC产品中,绝大部分功能是通过单据的形式提供的,而NC的单据大部分是一对多的关系,我们称之为一个主表记录对应多个子表记录。

AggregatedValueObject就是用于存储一对多关系的主子表数据。对于一主多子的情况,实现IExAggVO接口。

聚合VO:单据一般由表头和表体构成,因此单据的数据表通常设计成主表和子表。聚合VO是对单据数据的抽象,它用于装载主表VO和一组子表VO.;

UI工厂:虽然能通过三大模板定义出单据的显示,但每张单据都有一些公共的或特殊的行为。UI工厂是一种单据开发框架,它将常用单据抽象成了很多类型,因此,UI工厂相当于是单据开发的代码模板,预置了单据的各种公共行为,比如增、删、改、查,并且可以连接到NC流程平台,支持审批、单据驱动等应用。

远程接口:V5远程组件开发都是基于接口(替代原先的BO访问),访问也都是基于接口。

参照:是一种辅助的数据输入方式,通常弹出界面的形式提供可以参考的数据,比如在录入省份信息时,提供一个全国省份列表以供选择。单据开发中,有很多输入字段存在类似的需求。NC系统中预置了很多种常见参照(基本覆盖了所有的基本档案,比如人员参照,存货参照),如果要自定义一种参照,则需要简单的开发工作。

ToftPanel:提供对NC产品功能节点开发的支持,统一功能节点的注册类型(ToftPanel)。提供了节点开发过程中按钮的注册机制以及按钮与界面的互动机制(通过ToftPanel的onButtonClick(bo)方法进行事件响应)。节点打开时,真正运行的是FramePanel实例,它提供了ButtonBar进行按钮展示,TitlePanel进行节点标题的显示,同时将用户开发的ToftPanel子类放置到中心位置进行展现。下图是ToftPanel区域介绍:

31

用友软件股份有限公司

2.1.3. NC的开发模型

系统前端为客户端UI代码,UI端代码继承ToftPanel,UI代码通过调用远程组件与服务器端进行交互,中间传递的数据模型为VO,远程组件调用底层的业务实现代码,完成整个交互逻辑。通过JDBCFramework,系统提供了一套良好的数据持续机制,解决数据库交互的复杂问题。

下图是NCV5的代码结构图

32

用友软件股份有限公司

NC5后将代码分区域存放:

? Public目录存放 接口和公共代码(比如VO和公共算法)

? Private目录存放 实现和其它实现细节

? Client目录存放 客户端代码

? gen 目录存放 工具生成的ejb代码

? META-INF目录存放模块配置文件目录,包括module.xml文件和xxx.module

接口配置文件。

针对上面的开发模式,我们规范一下代码的包结构:

33

用友软件股份有限公司

? nc.itf.<模块>: 表示该模块定义的接口

? nc.impl.<模块>:表示该模块定义的接口实现

? nc.vo<模块>: 表示VO的实现

? nc.bs.<模块>: 普通的后台应用

? nc.ui.<模块>.*: 客户端代码

2.1.4. 开发远程接口

V5.0版本的远程组件开发是基于接口,因此远程组件的开发按照下面两个步骤开发: 定义远程接口,注意这里的远程接口不用实现java.rmi.Remote接口,普通接口就可以了 对该接口进行实现

把该组件部署为远程组件

下面以HelloWord为例子:

? 定义接口

? 实现该接口

?

部署组件

编辑或新建该产品模块下的模块部署描述文件(META-INF下的.module文件),加入一个公共组件:

34

用友软件股份有限公司

远程组件只要指出他的remote属性为true即可。

? 客户端调用

接下来客户端就可以通过下面的方式进行远程访问了:

系统输出:

你的一个实现可以同时实现多个接口,并且可以在部署的时候选择性的公布出你需要远程分布的接口,例如你的一个实现类,实现了多个接口IService1, IService2, IService3,你可以选择只远程公布接口IService2, IService3,部署信息如下:

35

用友软件股份有限公司

注意我们使用了supportAlias属性,指出我们可以通过两个接口中的任何接口进行远程组件的查找。supportAlias为true只有在公共组件中才起作用。

? 事务型组件发布

定义远程接口,就是普通接口,分有事务和无事务,区别在于部署文件时 放在private下而不是public下,部署成private的接口需要生成ejb代码,否则无法调用,部署成public的代码不需要生成ejb代码。一般来说,增删改操作发布成private接口,查询发布成public接口。下面是两种接口的发布事例:

配置文件规范:

36

用友软件股份有限公司

对于事务型的组件 (是指该组件的方法调用中事务处理会自动参与 )可通过后缀名来判断事务类型:

方法名后缀RequiresNew: 新事物

方法名后缀Mandatory: 必须在一个已有的事务环境中运行改方法

方法名后缀Supports: 只是支持事务,不建议使用

方法名后缀NotSupported:不支持事务,不建议使用

方法名后缀Never:不能有事务,否则出错

37

用友软件股份有限公司

没有方法名后缀: 如果有事务,就在该事务环境下工作,否则新启事务,这是大部分事务型组件的情况

事务型组件一般都是针对数据库等事务性资源进行操作,如果没有对事务性资源进行操作,请不要把组件定义为事务性组件。

对于发布成private的组件,需要点击xxx.module部署文件,在代理组件生成页签,选择需要发布的接口,输入ejb名字,点击生成就可将代码生成到gen目录下。只有这样,才可以调用private的接口。安装nc产品后通过sysconfig部署代码操作也是这个过程。

? 客户端代码

客户端调试代码可以通过junit和注册Toftpanel来实现。

通过junit运行调试接口比较方便,不需要进行客户端登陆。新做一个类继承AbstractTestCase,实现一个以test开头的方法,在方法里面写调用远程组件的方法。然后以JUnit来运行。

Toftpanel方式是写一个ToftPanel的子类,将此类注册成nc节点,然后通过eclipse启动jstarter来进入nc,点击相应节点执行相应方法。通过扩展ToftPanel,实现getTitle()方法,在postInit()方法中初始化界面,调用

38

用友软件股份有限公司

setButtons(ButtonObject[])方法设置菜单,实现onButtonClicked(ButtonObject)方法响应菜单事件。

39

用友软件股份有限公司

3. 数据建模

内容概述

通过PowerDesigner进行数据库模型,建表,建数据字典,生成VO。为以后的单据,报表开发提供数据模型。

详细介绍

3.1.1. PowerDesigner建模

安装数据库设计工具:Sybase PowerDesigner Version 9.5.0.648(以下简称PD) 为了给数据表自动生成时间戳(ts)、删除标志(dr)字段,需给PD打上插件补丁(将三个补丁文件db2cs7.xdb,oracl8i2.xdb,sqlserv7.xdb全部拷贝到PD的安装目录的 Resource Files\DBMS 下即可)。如果没有补丁,在建表的脚本处需要手工增加下面两个字段。Ts字段是时间戳,供系统判断修改时使用,dr字段是删除标记,NC系统单据表删除时并不是物理删除,而是更新dr字段为1。

ts char(19) null default convert(char(19),getdate(),20), dr smallint null default 0,

PD是一种高端的数据建模工具,使用它可以很方便的建立数据库、导出SQL脚本,其物理模型文件的后缀名为pdm,所以,NC辅助开发工具多处依赖PD来完成数据库相关操作。

? 数据模型

我们的员工信息管理系统包括员工的基本信息,员工的类别信息,员工工资,为了增强系统的可扩展性,从员工基本信息中独立出员工的家庭住址信息,街道信息。下图显示了实体间的关系。

40

用友软件股份有限公司

? 生成pdm步骤

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

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

41

用友软件股份有限公司

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

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

42

用友软件股份有限公司

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

第六步、在Columns选项卡中定义列,列的中文描述。注意此处列的数据类型,一般地,

43

用友软件股份有限公司

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

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

? 生成SQL脚本步骤

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

44

用友软件股份有限公司

第二步、在弹出界面中,设置生成脚

45

用友软件股份有限公司

第三步、对Keys & Indexs 选项卡做如下设置,注意,取消除主键外的所有选项,因为此时我们没有这些选项信息

46

用友软件股份有限公司

第四步、取消 Database 选项卡中的所有选项

47

用友软件股份有限公司

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

  • 8
    点赞
  • 59
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
用友NC是一款非常常用的企业管理软件,通过二次开发可以对其进行定制和扩展,满足企业个性化的需求。 使用用友NC进行二次开发需要一些基础知识和技能。首先,需要具备Java编程基础,使用Java语言进行开发。其次,需要了解用友NC的架构和开发框架,包括模块化设计、基础数据结构和常用开发接口等。还需要掌握用友NC的数据库结构和相关开发工具,如Eclipse集成开发环境和用友NC Studio开发工具。 学习用友NC的二次开发,可以通过以下几个步骤实施: 1. 学习用友NC的基础知识:了解用友NC的功能和模块,掌握其基本操作和基础数据结构,为后续的开发做好准备。 2. 学习Java编程:掌握Java语言的基础知识和面向对象编程的概念,了解Java开发框架和相关工具,包括JDK、Eclipse等。 3. 学习用友NC开发框架:深入学习用友NC开发框架,了解其模块化设计和常用开发接口,掌握二次开发的基本原理和方法。 4. 实践开发项目:通过实际开发项目,锻炼自己的开发能力和解决问题的能力,掌握用友NC的二次开发技术和实践经验。 5. 持续学习和提升:用友NC的二次开发属于持续学习的过程,需要不断更新知识和技能,关注用友NC的新功能和技术,与同行交流经验和分享成果。 总之,用友NC的二次开发是一项具有挑战性的任务,但是通过学习和实践,可以掌握其开发技术和方法,为企业定制和扩展用友NC,提高企业管理效率和精确度。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值