青华模具培训学校

 找回密码
 注册

QQ登录

只需一步,快速开始

青华模具培训学院
查看: 50518|回复: 8

Teamcenter二次开发--自定义错误消息

[复制链接]
发表于 2010-1-4 13:41 | 显示全部楼层 |阅读模式
今天加班,终于把Teamcenter 2007自定义错误消息的问题解决了,部分信息来自顾问公司的指导,部分是通过研究帮助文档做出来的。9 v9 _: K$ l0 G7 B

2 T2 @; d( k6 M6 r1 h    首先在Teamcenter 2007的ITK帮助文档里有用户定义message的大概步骤描述:
  T. V; a' k7 Y4 o- N8 E7 {2 G/ d- T' R2 ~0 J7 s- n" W! e
Create a custom error message
( z4 C& A' ?$ ~) U--------------------------------------------------------------------------------/ w: _6 I& ^7 s" ~9 U8 p
! f5 B) ~% B( W' T% V
Update your code to include the tc/emh_const.h file.
$ l& s$ V3 ~6 Y+ G4 U: h2 ~% H4 M$ \! R! r  w
Add the #define statement for your error message in your code using the following syntax:
5 _' f5 `* H/ _1 V1 d8 p8 v
& v; l9 A  i3 e, X# h  r# N#define USER_ERROR_NAME (EMH_USER_error_base + nnn)8 @* b3 }# L% z% D: A

% |3 Z$ I/ d7 @8 Y& [where nnn is your error number. For example, you can define a connection failure error with a number of 10 as follows:0 ?, w' p& {; L1 n( Z/ L

! y( q( l) h- F* R+ ~#define CONNECT_FAILURE (EMH_USER_error_base + 10)0 _5 L, Q( R+ `+ ?; G4 B
0 ^4 h+ `# x, H+ G' _
Compile your code.
4 Y8 R! m+ E( `% |) A0 ^, i6 g& x, Z
Create the local shared library file.9 O' r! K: k: `5 h% V1 Q0 ~1 G6 S( ^" E
4 F1 Y* u# P" R( _  s' A* m0 v) Y& |
Copy the TC_MSG_ROOT\TC_LOCALIZATION_DIR\ue_errors.xml file to your TC_USER_MSG_DIR directory. To view XML structure and format, see any of the XML files in the TC_MSG_ROOT\TC_LOCALIZATION_DIR directory.
7 b% ]8 u8 N* F! H) U% C2 E1 `* Q
In your copy of the ue_errors.xml file, add a line to define the error string corresponding to your custom message. Type the text within a pair of error tags in the file. If you want to use a substitution marker, use %n$. For example:4 L- t! P0 K' p- U

1 t6 ~: Y9 @# S$ Y$ ?4 R0 E# v+ M6 n$ _* r<error id = "10">Unable to connect %1$</error>* x. K. d/ n+ ?( Z7 @
+ k; r8 k, d; R7 [
Set the TC_USER_MSG_DIR environment variable in the TC_DATA\tc_profilevars.bat file to point to the directory that contains your ue_errors.xml file.7 ~/ C, V# f: P8 H( e
! r2 T4 Y0 w0 ~' }
在流程定义的rule handler中,当遇到需要返回错误消息的时候,利用Teamcenter 2007提供的emh.h的系列方法来保存错误消息,如EMH_store_error(),这个不传参数到错误消息中,也可以利用后面的EMH_store_error_s1() 一直到EMH_store_error_s5() ,也就是说最多可以一次向错误消息中返回5个参数,最大限度地给用户更多的提示。+ e+ V, y( m! a, o

6 `5 b0 L% C& F  A- h7 Y) T- q具体步骤如下:7 m% Y+ d1 e; Q
$ j7 ~  d$ a, R) ^) @
步骤1 修改%TC_DATA%\lang\textserver\en 下的ue_errors.xml文件,添加自定义的错误消息,如果消息中有中文的话,需修改配置文件引用的字符集为GB2312,错误消息如下定义:
7 @% G7 @2 N$ H! {2 j<?xml version="1.0" encoding="GB2312" standalone="yes"?>
/ X$ e' E; ~4 N0 U: {7 C<!--7 r0 ^0 Z5 H4 U+ @6 U
===============================================================================
) J6 ~7 F( P% J- D, h& P                Copyright (c) 2003-2005 ugS Corporation
: ?0 c: j/ k! a6 Q                   Unpublished - All Rights Reserved
4 f, R. h; g( S, |- S" C# Q4 P===============================================================================
6 P6 [7 R9 g5 t, n. q. i% W) u& }0 EFile description:3 ?" l! h4 l- d0 @# ^6 p

2 B# L+ E" Q2 p. j/ T# ]            Filename:
9 s& u' T% e  Q) W! v6 K            Module:
3 O, V; M' I# E9 d6 s! N5 d1 _: }) _
+ `) L0 s7 s1 f, q0 r            XML File defining ___ module text/error messages.
! O" c8 i, n( H3 d            This was previously done in UIH/UIL/VIL format.9 Z* M* R* i' n% o  W, S
-->/ y: E4 j( K6 g1 U+ ^
<textsrv filename="ue_errors.xml">7 W' @$ y% k  r' Q/ K; f0 O
<errors module="ue" error_base="919000">
8 z/ o) S. P1 z; l4 N! \<error id="1">USER_EXIT:    User Exit %1$ failed</error>
0 n! O  ^0 a7 ]) X: ?0 e<error id="300">错误: 流程目标不能为Item,必须为Item版本类型!</error># f7 v* M( r5 h
<error id="301">错误: 此流程必须有立项Item版本的附件才能启动!</error>+ c4 E: l# M" Y9 ~7 ~3 S$ L
<error id="302">错误: 流程附件类型不能为零组件下的view类型,只能为零组件版本下的view类型!</error>- d9 S; u* F" h" ?+ e# r. ^
<error id="303">错误: 此流程目标某附件的所有者为%1$,必须由%2$本人才能发起此流程!</error>
, o- S8 V  o" x: f</errors>1 O7 P0 Z# g4 U$ I7 v3 U
</textsrv>* Y/ C' Y  |& W0 v+ z$ l2 r

5 b$ n. L5 w8 Q8 t$ i3 v9 x这里的%1$代表传入的第1个参数,同理,%2$代表传入的第2个参数。. V" J2 F" e4 {9 c9 \0 r
- o, ^5 ?5 q" T& B8 }8 ?
步骤2:在rule handler的代码中定义错误代码:9 V+ }; O$ H4 [) A

+ m8 r9 U5 @2 D7 l#define WORKFLOW_ERROR1 ( EMH_USER_error_base + 300 )* H: i. m. c: q) s6 E; H! w
#define WORKFLOW_ERROR2 ( EMH_USER_error_base + 301 )
9 V  l" D/ {6 v# t: |' J#define WORKFLOW_ERROR3 ( EMH_USER_error_base + 302 ): H) B! P% x/ }, P0 B& g* j& l, h, c

& \5 O/ K, j+ g7 s7 [* V#define WORKFLOW_ERROR4 ( EMH_USER_error_base + 303 )
8 Y' N8 L1 z; O3 d4 F9 i
" u* T/ A3 a9 t% r使ID和配置文件中的错误消息ID号一致。; ~$ U% J" \' Z$ H# P

& M/ S; m; R' U  Q0 _. y步骤3:在rule handler的代码中,当不满足条件时,调用EMH_store_error的相关方法如(需要传递参数的话参照帮助文档):
! |8 }6 k  }3 V1 wEMH_store_error (EMH_severity_user_error,WORKFLOW_ERROR2) ;
4 c% c7 ]  h# D" y# |! I  [status=WORKFLOW_ERROR2;, U. c) z, l4 X% z% ^. e
EMH_ask_error_text(status, &message);
/ q! F# p( j0 x6 V' Mprintf("error is [%s]", message); " V1 b+ r' E6 u
不满足条件仍然返回EPM_nogo即可。- D3 j$ r+ u$ p! b
" m4 Q2 f0 f" ~6 D, a
步骤4:按照帮助文档Create a custom error message的最后部分提示,先设置服务器端的环境变量
# W6 T* f* r, y* w/ K0 o; J  cset TC_USER_MSG_DIR=%TC_DATA%\lang\textserver\en 使TC_USER_MSG_DIR指向ue_errors.xml所在的目录,并修改tcdata目录下的tc_profilevars.bat文件内容,内容如下:: N/ {0 Q& G3 _/ r0 m8 F( W% E
if not defined TC_USER_MSG_DIR set TC_USER_MSG_DIR=%TC_ROOT%\lang\textserver\en9 ~, E5 G; m; _4 f( O3 Q

# g- w) Q+ D' q6 Q3 o" F. m) Y这样自定义消息就算完成了。编译文件,将dll和pdb文件放置到服务器端的bin目录下,如果是两层客户端,需要更新客户端的TC2007下bin目录下的相应的dll和pdb文件。
2 e1 k* O! W$ p
* W  V3 t! q4 {# f& |. i( b实际测试中,Teamcenter 2007两层胖客户端只需要重新登录就可以看到想要的结果,而四层的客户端需要重启服务器才能生效。
发表于 2010-1-10 18:37 | 显示全部楼层
这是什么东西吗
回复 支持 反对

使用道具 举报

头像被屏蔽
发表于 2010-1-13 17:29 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复 支持 反对

使用道具 举报

发表于 2010-2-7 22:00 | 显示全部楼层
2次开发是不是开发自己常用的功能做成外挂呀,听说有些牛哦
回复 支持 反对

使用道具 举报

发表于 2010-11-14 00:19 | 显示全部楼层
分享下,很有用哦
回复 支持 反对

使用道具 举报

头像被屏蔽
发表于 2011-3-18 10:48 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复 支持 反对

使用道具 举报

发表于 2011-3-18 21:52 | 显示全部楼层
teamcenter 好像是用JAVA开发的哈?
回复 支持 反对

使用道具 举报

发表于 2012-8-10 16:55 | 显示全部楼层
楼主好有心啊,好帖子,哈哈哈哈,顶一下 yiyuanmm.com/   toonyin.com
回复 支持 反对

使用道具 举报

发表于 2014-5-17 19:21 | 显示全部楼层
好帖要顶,楼主的头像还是不错滴
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|关于我们|sitemap|小黑屋|Archiver|手机版|UG网-UG技术论坛-青华数控模具培训学校 ( 粤ICP备15108561号 )

GMT+8, 2025-1-24 02:21 , Processed in 0.060324 second(s), 25 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表