v1.0 可编辑可修改 Teamcenter(UA)中实现历史数据导入
发表时间:2009-12-31 特约通讯员: 郭宇 来源:e-works 关键字:Teamcenter Item 二次开发 历史数据导入 PDM
本文阐述了在Teamcenter(UA)上实现的一个比较通用的历史数据导入工具的实现方法。通过Java Eclipse和POI技术实现了对历史数据的分批导入。
PDM(Product Data Management)最重要的功能之一是实现企业业务流程的电子化,为了实现这个目标,我们必须保证各种数据能够存储到PDM系统并且能很好得共享。其中包括了文档、设计资料(二维三维图纸)的存储和共享。同时我们还需要实现企业业务流程的电子化乃至核心研发流程优化再造,以规范企业的研发流程,帮助企业提高核心竞争力。
Teamcenter(UA)有良好的架构和开发接口,我们可以通过客户化为企业量身定做适合企业自身的业务工作流,满足客户的特殊需要。在PDM实施过程中系统上线前,企业历史数据必须有步骤分批导入到一个全新的PDM系统以支持日常业务流程。本文阐述了在Teamcenter(UA)上实现的一个比较通用的历史数据导入工具的实现方法。通过Java Eclipse和POI技术实现了对历史数据的分批导入。
一、实现原理
Teamcenter(UA)中的基本数据结构是Item结构:
图1. Item结构
Item是系统最基本的业务对象,Item Revision是版本对象,用来管理各个版本的数据。其中属性表保存了版本的详细属性,包括了客户化属性;数据集(用DS缩写)封装了物理文件。Item对象还可以通过各种关系关联其他的Item对象。
在实施过程中,我们通常会帮助企业整理一部分有价值的历史数据作为PDM系统上线时的基础和参考,比如标准件库,有代表性的机种等等。一般情况下,我们会把整理数据整理成Excel格式。所以要求历史数据导入工具需要能够分析Excel文件,并且在Teamcenter(UA)系统中创建上(图1)中的数据结构。对于最常用的数据导入要求,我把它分为三个主要的功能模块进行设计:
Item对象:逐个导入Item对象结构,包括Item、Item Revision、数据集以及他们的关联关系
1
v1.0 可编辑可修改
图2. 导入Item程序框图
BOM对象:在导入Item对象结构的基础上再创建Bom结构,表达零部件Bom关系;
2
v1.0 可编辑可修改
图3. 导入Bom程序框图
Relation对象:导入若干Item对象之间的关系
3
v1.0 可编辑可修改
图4. 导入关系程序框图
对于上述三种业务逻辑,可以把程序划分为“Excel读取”“数据创建”“驱动引擎”“导入日志”等模块进行设计:
图5. 模块划分
二、关键技术 1. 通用性设计
面对各个不同的类,如何把各种具有不同属性的类导入到系统是导入工具设计的首要问题。为了解决这个问题,导入工具必须能读取具有可变列的Excel表格。下面是导入程序应有的一些重要逻辑:
每个属性都有标示符,表示它属于(图1)中哪个类的属性,是Item的还是DS的 当读取属性名称列,遇到空白列时,标记这是列结尾。
4
v1.0 可编辑可修改
当读取到行号为空的行时,标记这是最后一行数据
提供多种可选选项,配置导入后的一些后续动作。如:若同名DS存在是否覆盖,若对象存在是否覆盖
标记Bom关系上的属性,例如:单位、数量等等
2. POI读写Excel技术
导入必要的包
import 定义Workbook对象:
public HSSFWorkbook wb = null;
打开Excel工作簿
public boolean open(File in) {
FileInputStream filein = null; try {
filein = new FileInputStream(in); } catch (FileNotFoundException e) { ();
return false; } try {
wb = new HSSFWorkbook(filein); ();
} catch (IOException e) { ();
return false; }
return true; }
读取单元格
读入字符串使用语句:
cellval = (isheet).getRow(iline).getCell((short)irow).getStringCellValue(); 读入数字使用语句:
celldval = (isheet).getRow(iline).getCell((short)irow).getNumericCellValue();
写入单元格(按格式写入)
5