NC开发基本技术

更新时间:2023-08-16 03:13:01 阅读量: 教学研究 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

NC开发基本技术

NC开发基本技术

变更日期 2011-4-10

功能点 初版

变更内容 初版

提出人 周君

变更人

1 创建测试项目

1.1 下载行业平台框架项目代码

Svn地址:

http://172.16.3.204:8080/svn/mmpub/mmpub

1.2 导入行业平台框架项目

创建一个新项目,选择创建项目所在目录时,按照图示选择从svn下载的代码所在目录。

NC开发基本技术

1.3 创建测试项目

按照之前文档中示例,创建一个新项目并设置相应的依赖关系,此处我们创建了一个名为NC57TEST的项目。对该项目右键->Properties,在左边的Java Build Path目录中

NC开发基本技术

NC的代码结构主要分为public、private、client三个包,分别存放公共类、后台业务类以及前台UI相关类。

Public中主要存放接口、VO类; Client中主要存放前台的UI类;

Private中主要存放后台的业务以及持久化相关类。

2 功能注册

功能注册及权限分配部分请参考

建一个节点

此处建立了新节点“测试BOM维护”节点 功能注册信息存放在表sm_funcregister中

NC开发基本技术

3 数据库以及VO设计

3.1 数据库设计

设计了主子表结构,分别为BOM表头以及BOM表体。 1)通过PowerDesigner设计表,并保存为pdm文档

2)导出为脚本

注意组中需要在脚本中增加如下字段:

NC开发基本技术

Create table xxxx ( …

ts char(19) default to_char(sysdate,'yyyy-mm-dd hh24:mi:ss'), dr number(10) default 0 )

其中ts字段为时间戳,表示当前单据的修改、新增的时间。Dr字段为删除标志位,有些数据

3.2 实现VO类

两种类型:

聚合VO:代表一张单据,包含一个表头以及多个表体。可以继承自MMAggregatedValueObject。样例节点中为类

表头VO、表体VO:代表一个表头或者某一条表体数据,可继承自MMSuperVO(有时也会继承自MMCircularlyAccessibleValueObject)

4 前台界面及单据模板

4.1 前台界面简介

根据单据类型,可以简单的分为如下几种界面: 1)卡片型:

NC开发基本技术

2)列表型

NC开发基本技术

3)卡片列表管理型:

初始界面为列表型,查询结果显示在列表界面中。当选中列表中的某列数据后,点击“浏览”按钮后切换至卡片界面,并显示当前选中单据。点击“新增”、“修改”按钮也会自动切换至卡片界面进行操作

4)树卡性界面 (略)

在本课程中以创建一个最常见的管理型界面为例。

4.2 前台界面类ClientUI

建立前台界面的主要几个步骤如下:

1)首先创建必要的ClientUI类(注:此处的类名已经在功能注册中注册过) ClientUI继承自nc.ui.mmpub.MMToftPanel类,作为节点的入口类。 主要分为如下几个部分:

Initialize:初始化部分,用于构造界面布局,利用懒加载方式来实例化界面元素。 InitButtons子方法:按钮初始化部分,由于有UI状态这个概念(见nc.ui.mmpub.IUIState类),所以此处为每个按钮设置能够操作的UI状态。最后通过setButtons方法 getBillListPanel子方法:构造列表界面,利用loadTemplate来加载单据模板

NC开发基本技术

getBillCardPanel子方法:构造卡片界面,利用loadTemplate来加载单据模板

onButtonClicked子方法:覆写父类的方法,当界面点击按钮后会回调本方法。

postInit方法:初始化后调用,用于设置精度,增加监听等

具体的按钮处理方法:onQuery、onAdd、onDel等方法,参考具体样例节点的处理方法。

4.3 导入数据字典

打开“客户化”->“二次开发工具”->“系统管理工具”->“数据字典管理”节点,左树中选中“生产制造”目录,并在菜单中选择“导入数据字典”

NC开发基本技术

4.4 单据模板初始化

为了能够使得界面的展现变得更加人性化,在NC中提出了单据模板的概念,即提供了一个界面“客户化”->“二次开发工具”->“模板管理”->“单据模板初始化”节点,来自定义界面上表头表体的字段名。

首先在界面中的右上部分单据模板类型中输入单据类型或者节点号(可以输入任意值,但按照惯例,一般为单据类型或节点号);在左侧点击“列表显示”,会列出数据库表,将demo_bd_bom加入主表中,将demo_bd_bom_b加入子表列表中(如果不出现请重启服务端);点击右边的增加按钮。

4.5 前台列表界面懒加载

1)实现监听器ListSelectionListener,监听表头行选择事件,

增加监听器,实现监听void valueChanged(ListSelectionEvent e)方法;在postInit方法中添加监听器注册语句。

getBillListPanel().getHeadTable().getSelectionModel().addListSelectionListener(this);

NC开发基本技术

查询后台(或前台缓存),加载表体

注:如何使用前台缓存,参考 nc.ui.pd.pd4010.v5.BomData类的实现

5 后台业务类以及持久化

5.1 后台业务类

主要提供了两部分,接口以及其实现。

接口放置于public中,例如nc.itf.mm.demo.IDemoBom 需要注意如下几点:

1、方法中必须抛出BusinessException异常。 2、方法名不能有重名(之后会详细介绍)。

3、实现类放置于private中,例如nc.bs.mm.demo.DemoBomImpl

4、在方法边界中捕获异常,记录日志后包装成BusinessException抛出

5.2 UPM文件的作用

使用upm文件来描述后台业务类接口与实现之间的关系,具体内容请见之前的培训课件。 以下是需要注意的内容: 1、module.xml必须存在

2、upm中<interface>...</interface>放在一行,不能有回车。 3、单个upm中所有接口不能有同名方法。

5.3 前台调用后台方法

前台通过NCLocator.getInstance().lookup(IMyInterface.class)方法调用后台类。

NC开发基本技术

例如:

5.4 持久化类简介

1)UAP平台:

BaseDAO:不推荐使用,应基于接口编程,通过后两个接口 IVOPersistence:对VO进行持久化的接口 IUAPQueryBS:对VO进行查询的接口

2)行业平台框架:

MMBaseDAO: 提供了泛型支持

MMAggDAO: 新功能,提供了对聚合VO的持久化支持

3)UAP平台:继承CommonDataDMO类,不推荐使用 注:如何如何增加TS校验以及加动态锁,请使用平台中的nc.bs.mmpub.lock.MMLockBO类以及nc.bs.mmpub.checkts.TimeStampBO类。相似的例子可以参考nc.bs.mo.mo2015.ReqPickmBO类的lockByTs方法。

6 查询模板简介

为显示查询对话框而服务,根据设定的模板显示查询条件组合对话框,可供用户设定查询条件。

NC开发基本技术

6.1 创建查询模板

创建查询模板的方法: 1)通过单据模板创建

通过在单据模板中的生成查询模板按钮来自动生成

NC开发基本技术

注意:单据模板字段如果是参照的话一定要设置,否则生成的查询模板就无法选择参照了,变成输入纯字符串了。

2)通过查询模板初始化界面创建

最基本的创建方法,一般通过第一种方法创建完后利用本节点进行适当的修改

注:需要将查询模板分配至指定节点,见节点“功能节点默认模板分配”

6.2 查询模板的使用

1)继承自QueryConditionClient的查询对话框

2)通过setTempletID方法进行加载,需要有节点编码等信息

3)获取选择的查询条件

4)查询条件的转化(只能后台)

NC开发基本技术

本文来源:https://www.bwwdw.com/article/l8oj.html

Top