基于Axis2架构+TC—ITK实现Teamcenter系统的Web Service接口

2019-09-10 07:22袁远
现代信息科技 2019年4期

摘 要:随着智能制造的推广和普及,企业实现系统间数据的互联互通变得十分必要。Teamcenter(以下简称TC)做为一款被广泛使用的全生命周期产品数据管理系统,必然会产生和其他系统如ERP、CRM、MES等的数据连接需求。本文对将Axis2作为Web Service架构向其他系统开放TC的Web Service接口,并通过TC-ITK提取TC数据向接口传递的实现方法进行了介绍。

关键词:Axis2;Teamcenter;TC-ITK;数据连接传递;Web Service接口

中图分类号:TP391 文献标识码:A 文章编号:2096-4706(2019)04-0007-03

Teamcenter System Web Service Interface Implemented Based on

Axis2 Architecture +TC-ITK

YUAN Yuan

(Department of Information Technology,Guangxi Yuchai Machinery Co.,Ltd.,Yulin 537005,China)

Abstract:With the popularization of intelligent manufacturing,it is necesSary for enterprises to realize the interconnection and interoperability of data between systems. Teamcenter(hereinafter referred to as TC) as a widely used life cycle product data management system,will inevitably produce data connection requirements with other systems such as ERP,CRM,MES,and so on. In this paper,Axis2 is used as Web Service architecture to open TC’s Web Service interface to other systems,and the implementation method of extracting TC data and transferring it to the interface through TC-ITK is introduced.

Keywords:Axis2;Teamcenter;TC-ITK;data connection transfer;Web Service interface

1 概述

本文簡单介绍了Axis2实现Web Service的优势所在,对TC系统下的TC-ITK开发模式进行了简单的介绍。然后深入探讨了Axis2+TC-ITK实现TC Web Service接口的流程,并对这种实现方法的优势进行了分析。最后根据该方法介绍了玉柴TC系统与CRM客服实现电控程序自动下载的案例。

2 Axis2与TC-ITK简介

Axis2是通过用Java语言开发Web Service的工具,当在其内部处理SOAP消息时,这一切对于用户都是透明的。Axis2在封装处理SOAP消息的同时,还提供了如下多种功能。

(1)提供了一个处理SOAP消息的框架,这个框架极易扩展,用户可以在每个服务或操作上扩展它。用户也可以在这个框架的基础上对不同的消息交换模型(MesSage Exchange Patterns)MEPs进行建模。

(2)部署Web Service(可以用WSDL或者不用)。

(3)提供了客户端API用来调用Web Service,可以用同步或者异步的编程方式。

(4)通过部署来配置Axis2和它的组件。

此文中不对Axis2做具体介绍,读者可从参考文献中进一步了解Axis2的相关信息。

TC系统是一整套全方位的数字化生命周期管理、解决方案。而ITK全称为The Integration Toolkit(集成工具包),是TC系统提供的系统程序或由用户自主开发的程序,可用于处理系统数据、与其他系统集成等。TC系统提供了一系列的C函数以用于ITK开发。

TC系统服务端包含了数据库模型,永久对象模型、应用程序对象模型等结构。这些结构使用C/C++开发。TC系统向外提供了部分C\C++的函数,使得用户可以通过这些函数直接与服务端对象模型交互,这就是ITK开发可以实现的功能。而若在客户端通过Java语言开发模型处理请求(TC系统提供的另一种开发技术,称为RCP),处理请求则需通过CORBA IIOP/SOAP HTTP传递到服务端,然后再调用C/C++处理对象模型,最后返回结果。相比可知,ITK明显是最有效率的开发模式。

ITK常处理的对象模型有如下内容:

▶ POM:永久对象管理

– AOM:应用程序对象模型

· IMF:IMAN文件

· VM:TC卷

· CR:流程发布

· EPM:企业流程模块

· WSOM:工作空间对象

– AE:应用程序封转

– ITEM:Item

– FORM:表单

– FL:文件夹管理

– MAIL:TC邮件

– PS:产品管理

· SA:系统管理员

· UOM:单位

3 Axis2+TC-ITK实现TC Web Service接口

Axis2+TC-ITK实现TC Web Service接口的流程如图1所示。

(1)与TC有接口请求的系统(处理TC数据或请求TC数据)通过SOAP向Axis2服务发送TC账号密码及请求信息。

(2)Axis2服务接收到请求后,调用相应的处理程序处理请求。

(3)Axis2的处理程序调用TC-ITK程序,TC-ITK程序通过接收到的账号密码登录TC系统,通过请求信息处理/请求TC数据返回信息到Axis2的处理程序。

(4)Axis2的处理程序对返回信息做进一步处理后,返回给客户系统。

通过以上方法实现TC Web Service接口的优点如下。

(1)Axis2本质上就是一个SOAP引擎,提供创建服务器端、客户端和网关SOAP操作的基本框架。因此用户无需编写SOAP的相关代码,只需专注完成数据的处理代码后,注册到Axis2上即可实现Web Service接口。

(2)TC-ITK技术与TC其他开发技术相比,TC-ITK的效率是最优的。

(3)虽然TC的SOA技术可实现Web Service,但TC并没有向外提供TC SOA技术的开发文档与接口文档。同时TC SOA在开发难度及与工具的兼容性上都不甚理想。

(4)Axis2与TC-ITK是成熟及应用广泛的技术,网络上可以搜索到大量的开发应用资料。

4 玉柴应用案例介绍

以下将对玉柴CRM客服系统从TC系统自动下载电控程序的案例进行介绍,其实现流程如图2所示。

(1)用户在CRM客服上创建电控程序申请单。

(2)在申请单中调用Axis2服务的电控程序下载接口,并向下载接口传递TC系统的账号密码,需下载的图号的参数信息。

(3)Axis2服务的电控程序下载接口调用TC-ITK程序,向TC-ITK传递TC系统的账号密码,需下载的图号的参数信息。

(4)TC-ITK使用传递过来的账号密码参数登录TC系统,根据图号参数找到相应的电控程序并下载到电脑上。

(5)TC-ITK向Axis2服务的电控程序下载接口返回执行成功/失败的信息。如成功,向接口传递电控程序文件数据流。

(6)Axis2服务的电控程序下载接口调用CRM客服提供的接口,把电控程序上传到CRM客服的DMS(文件服务器)上。

(7)CRM服务把电控程序的路径更新到电控程序单中。

以下为流程中Axis2服务-电控下载接口→TC系统的实现关键点介绍。

(1)通过TC-ITK登录TC系统并下载电控程序:

int ITK_user_main(int argc, char* argv[]){

//接收登录系统的账号密码及需要下载的电控程序图号的各项参数

char* usr = ITK_ask_cli_argument("-u=");/* 用户账号 */

char* upw = ITK_ask_cli_argument("-p=");/* 用户密码 */

char* ugp = ITK_ask_cli_argument("-g=");/* 用户组 */

char* puid = ITK_ask_cli_argument("-m=");/* 图号 */

//登录TC系统

ITK_initialize_text_services (0);

ITK_init_module( usr,upw,ugp);

//通过电控程序图号在TC中的找到电控程序并下载

tag_t Item = NULLTAG;

ITEM_find_item(puid,&Item);

ITKCALL(ifail = ITEM_ask_latest_rev (Item,&rev));

ITKCALL(GRM_find_relation_type(RL,& relation_type));

ITKCALL( GRM_list_secondary_objects_only (rev,relation_type,&count,&second_objects));

............................................

以上C程序編译为YCCRMDownload.exe。

(2)通过BAT脚本调用TC-ITK程序:

:: argv1=%1 argv2=%2 argv3=%3 argv4=%4

set USER=%1

set PW=%2

set GROUP=%3

set PUID=%4

SET TC_ROOT=C: \\Teamcenter11

SET TC_DATA= C: \\Teamcenter11\\tcdata

start D:\\ Teamcenter11\\bin\\YCCRM Download.exe -u=%user%-p=%pw% -g=%group% -m=%puid%

以上脚本名称为YCCRMDownload.bat。

(3)通过MyEclipse建立WebProject调用BAT脚本:

publicclass Download {

public String GetFileFromTC(String userid, String pw,String group ,String item_id){

String batpath = path+"D:\\ Teamcenter11\\bin\\YCCRMDownload.bat";

String[] cmd =WebUtil.runcmd (batpath,new String[]{userid,pw,group,item_id});

Process ps;

try {

ps = Runtime.getRuntime().exec(cmd); ps.waitFor();

StringBuffer sb = new String-Buffer();

BufferedReader br = new BufferedReader(new InputStreamReader(ps.getInputStream()), 4096);

String line = null; int i = 0;

while ((line = br.readLine()) != null) {

if (0 != i) sb.append("\r\n");

i++;

sb.append(line);

}

int r=ps.exitValue();

ps.destroy();

............................................

以上WebProject項目名为DownloadCode。

(4)打包及部署:将DownloadCode打包为Download File.aar,并将此aar包放入到Axis2.war中的\web-inf\services路径下,修改该路径下的配置文件services.list,添加aar包的名称。最后将此Axis2.war部署到weblogic中。打包及部署的方法在参考文献中有详细的介绍,读者可从参考文献中进一步了解相关信息。

参考文献:

[1] 陈传超.基于SOAP消息扩展的Web服务安全模型研究与实现 [D].重庆:重庆大学,2008.

[2] 程飞.基于SOA的安全服务软件架构 [D].西安:西安电子科技大学,2012.

[3] 汪炜.电信大客户离网和欠费预警系统设计与实现 [D].长沙:湖南大学,2011.

作者简介:袁远(1981-),男,汉族,广西人,助理工程师,本科,学士学位,研究方向:企业信息技术。