e-works数字化企业网  »  文章频道  »  产品创新数字化(PLM)  »  PDM/PLM

基于Teamcenter Engineering 的报表系统二次开发实现

2010/8/31    来源:万方数据    作者:温伟鸽  李二伟  王志勇  罗阳      
关键字:PDM  Teamcenter Engineering   二次开发  报表系统  
PDM 系统Teamcenter Engineering 难以满足设计人员需要的报表自动生成的要求。本文在对Teamcenter Engineering 二次开发主要问题研究的基础上,提出了一种基于Teamcenter Engineering 的报表系统二次开发新方法,并详细阐述了环境 搭建、开发过程及关键技术解决方案。

1. 前言
    Teamcenter Engineering(TCEng)是UGS 公司开发的专门为企业提供产品数据管理PDM(Product Data Management)软件系统,由一个窗口工作界面、一组实用程序、一个集成开发工具包ITK(INTEGRATION TOOLKIT)和一个关系数据库管理系统(ORACLE)组成,支持建立、存储、检索和管理在产品研发过程中使用的各种数据,对于产品设计、制造、测试等过程中的各种数据及相关的组织信息提供了集成的、安全的、可控制的多种访问路径。该系统采用C/S 结构,其客户端和服务器端均能够进行二次开发以满足用户的特殊需求。其中,客户端使用JAVA 语言开发的用户界面层,同样它的二次开发也使用JAVA 语言;服务器端的二次开发则要利用ITK 工具包及C 语言,ITK 实质上就是一套经过封装的C 语言程序集。利用ITK 可以开发报表、客户化TCEng 接口、定制新窗体等。

    报表的自动化生成对企业成功实施PDM 系统有着重要意义。尽管TCEng 中PSE 程序处理BOM 方面功能非常强大,但缺乏对各类清单的输出和打印功能,另外,由于企业内部各类报表都有固定的模版和格式,比如产品(组件、部件)按装配关系排列的全套图样清单;表示产品(组件、部件)组成部分的代号、名称数量和材料等的清单;对产品及其组成部分按需要进行分类,整理汇总而编制的清单等都有固定的格式。报表系统既要统计出符合要求的数据,又要使生成的报表符合规定的格式,并且要嵌入TCEng 系统运行,实现无缝集成。本文对这些功能的开发过程进行了详细的阐述,以期对当前从事TCEng二次开发的人员有所帮助。本文的开发基于我院目前应用的Teamcenter EngineeringV9.1 版本,对其他版本的开发同样具有借鉴意义。

2. 二次开发方法
2.1 开发工具及环境搭建
    客户端开发需要的工具为JDK1.4.2 或更高;JAVA 集成开发环境(IDE)如:Eclipse,JBuilder 等。JBuilder 是一种非常不错的JAVA 开发工具,但价格昂贵;Eclipse 是一个完全免费的开源项目,同Eclipse 提供了plug-in 的功能,并且Eclipse在资源占用率、响应速度方面都较JBuilder 更为出色,在开发中选用了Eclipse。

    从Eclipse 官方网站www.eclipse.org 中可以下载到最新的压缩包。使用前需要首先安装JDK,并设置JAVA_HOME 及CLASSPATH 环境变量的值,然后解压缩到指定的目录就可以了。在Windows 平台下,例如JDK 安装在C:\j2sdk 目录下,Eclipse 安装在D:\eclipse 目录下。先设置环境变量JAVA_HOME=C:\j2sdk,然后运行D:\eclipse 下的eclipse.exe 即可。Eclipse启动后需配置外部库文件、源文件夹名和输出文件夹名等,外部库文件路径为%PORTAL_ROOT%portal.jar,PORTAL_ROOT是指TCENG PORTAL 的安装路径,源文件夹名和输出文件夹名可以分别设为src 和classes。然后使用File-〉New-〉Project,这样,新建的工程下就有两个文件夹,源文件夹src 和输出文件夹classes。

    服务器端的二次开发要利用ITK 工具包及C 语言,需要安装VC,并设置MSDEV_HOME 环境变量的值。利用ITK 开发时,经常要用到以下几个目录(TCENG_ROOT 是指TCENG 的安装路径):
    1)可执行文件:在%TCENG_ROOT%\bin 目录下;
    2)头文件:在%TCENG_ROOT%\include 目录下;
    3)库文件:在%TCENG_ROOT%\lib 目录下;
    4)编译和连接脚本及ITK 程序示例:在%TCENG_ROOT%\sample 下;

2.2 客户端的二次开发
    TCENG 客户端(portal)的二次开发分为注册程序和开发程序两个阶段。对portal 开发而言,注册程序是一个至关重要的环节。所谓注册程序,就是要在TCENG 的界面上的某个程序组内增添程序入口,用于启动新开发的程序。不论是二次开发,还是portal 自身的原开发,都是通过这一注册机制调用属性文件来定义应用程序的实现类(classes)、启动图标、本地化标题等。

    2.2.1 注册程序
    注册程序的具体实现步骤如下:
    1)在PORTAL 界面上增加一个新组 :
    在PORTAL 安装路径下找到Portal_user.properties 文件(或使用Portal.properties 文件,前者具有更高优先权),在GROUPS=IMAN,IMANAdministrator,Utilities 的行末增加新组名, 假设为mytools , 如下所示:
“GROUPS=IMAN,IMANAdministrator,Utilities,mytools”。
    重新启动Portal 后可看到新增的组mytools,在组内可加入按钮以调用客户程序。如果不需要增加新的组,可直接进行第二步。
    2)在组中加进客户程序:
    a. 运行Utilities 组内的快速向导(Application Wizard),然后输入应用程序名称,假设为mypro,并按下一步(Next)。
    b. 在左边拉开某个组,比如刚创建的组mytools,使客户程序的按钮加入到该组,按下一步。
    c. 输入客户程序的包名,例如“com.mycom.mypro”,缺省值是“com.mypro”。然后单击某适当目录,系统将在该目录下自动建立与包名对应的子目录,并使所有与该客户程序相关的源文件在该子目录下生成。
    系统在目录mypro 中自动生成六个文件: mypro.properties 、mypro_user.properties 、MyproApplication.java 、
MyproApplicationMenuBar.java、MyproApplicationPanel.java、MyproApplicationToolBar.java。
    前两个文件是程序注册文件,用户可使用mypro_user.properties 也可使用mypro.properties来注册程序,前者可覆盖后者。系统自动使用后者。
    后四个文件分别创建了四个应用类。要集成到portal 的程序要有一个基类,它应是类AbstractAIFUIApplication 的子类。
    d. 按下一步后接受缺省的类名,按下一步,再按“Yes”按钮以创建新类。然后用单击方式选择Portal 的安装目录,在这个路径中含有portal.jar 等TCEng 的JAVA 类库。按下一步后系统显示“成功创建程序”。这时portal_user.properties 系统注册文件自动修改,完成客户程序的注册。

    2.2.2 开发程序
    经过注册之后的新程序只是一个框架,并不能执行任何功能。程序开发阶段就是对前述空壳源文件进行代码编写、调试、编译的过程。所需要的工具就是java 语言的编译环境,包括JDK 或Eclipse 这样的java 集成开发环境(IDE)等。本文直接运用JDK1.4.2 和IDE 工具Eclipse 进行开发。

    当开发完成后,用%JAVA_HOME%\bin\javac 命令编译客户程序,然后用%JAVA_HOME%\bin\jar 命令打包java 类、图标文件、属性文件等。当然,也可以直接使用IDE 工具进行编译。最后,编辑portal.bat 文件,将客户程序(如Mypro.jar)包含到portal.jar 之前,如下所示:

    Set JAVA_COMMAND_LINE=%JAVA_COMMAND% -DIMAN_DATA=%IMAN_DATA% %JAVA_HEAP_SIZE%
-classpath “%IPR%;…%IPR%\Mypro.jar;…%IPR%\portal.jar;…%CLASSPATH%”。

2.3 服务器端的二次开发
    服务器端的二次开发主要是动态链接库libserver_exits.dll 和libuser_exits.dll,部署在%TCENG_ROOT%\bin 目录下。环境设置及开发过程以libserver_exits.dll 为例说明如下:
    1)建立新文件夹server_exits;
    2)在server_exits 目录下创建所需的程序文件;
    3)把%TCENG_ROOT%\sample 目下的compile.bat 和link_server_exits.bat 以及%TCENG_ROOT%\sample\userservice 目录下的user_server_exits.c 和user_server_exits.h 拷贝到新建的server_exits 目录下;
    4)启动TCEng Menu 到TCENG Dos 环境下;也可以通过set 命令设置;
    5)编译:compile –DIPLIB=libserver_exits *.c;
    6)连接:link_server_exits。经过以上步骤,在server_exits 目录下生成libserver_exits.dll 文件,将之拷贝到%TCENG_ROOT%\bin 目录下即可。

3. 基于Teamcenter Engineering报表系统的设计实现
3.1 系统设计思想
   由于报表系统嵌入PDM 系统运行,二次开发工作既有客户端的界面设计,也要在服务器端进行二次开发实现数据提取及处理。该系统的设计思路是:采用客户/服务器模式,利用TCEng portal 端提供的API 在portal 窗口工作界面上增加报表输出的菜单项,并开发类似PSE 中BOM 树形结构的选择界面供用户选择要输出的子部件;在服务器端开发动态链接库libserver_exits.dll,每个菜单命令响应对应Dll 模块里面的某个主功能函数,动态链接库实现将需要的数据按要求排序汇总后提取到系统临时文件目录下的中间文本文件中;最后,利用脚本来处理将中间文本文件的数据写入到已定制好的Word 模版或Excel 模版中。脚本和模版可以放在数据集中,调用时先把脚本和模版从数据集中导出到临时文件目录下,动态链接库放在%TCENG_ROOT%\bin 目录下,客户端二次开发的jar 包部署在portal.jar 之前。

3.2 软件架构
    基于对报表系统的报表系统由三个模块实现:界面交互部分是Java 实现的,提取数据到中间文本文件是由C 实现的,把中间文本文件中的数据读取到定制的word 模版或excel 模版中是由VBA 脚本实现的,如图1 所示。

图1 系统架构

图1 系统架构


    主程序主要是响应交互界面上的“确定”按钮,主要功能是接收用户选择的BOMLine,并获得动态链接库服务句柄,将BOMLine 转换为Object 对象之后,调用动态库中处理函数,然后将已定义好的word 模板文件或excel 模版文件(根据用户在界面上的选择而定)和脚本文件从数据集中导出到临时文件目录下,利用java 的runtime.exec()方法执行脚本文件,由脚本来处理将中间文本文件的数据写入到word 模版文件或excel 模版文件,格式为:wscript.exe + 脚本文件 + 中间文本文件 + 要生成的word 或excel 文件 + word 或excel 模版文件,并在客户端直接打开生成的word 或excel 文件。

责任编辑:许小倩
本文为授权转载文章,任何人未经原授权方同意,不得复制、转载、摘编等任何方式进行使用,e-works不承担由此而产生的任何法律责任! 如有异议请及时告之,以便进行及时处理。联系方式:editor@e-works.net.cn tel:027-87592219/20/21。
e-works
官方微信
掌上
信息化
编辑推荐
新闻推荐
博客推荐
视频推荐