青华模具培训学校

 找回密码
 注册

QQ登录

只需一步,快速开始

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

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

[复制链接]
发表于 2010-1-4 13:41 | 显示全部楼层 |阅读模式
今天加班,终于把Teamcenter 2007自定义错误消息的问题解决了,部分信息来自顾问公司的指导,部分是通过研究帮助文档做出来的。: _5 Y* _% `( V9 |2 S" O

: \: _. Z( W, Q    首先在Teamcenter 2007的ITK帮助文档里有用户定义message的大概步骤描述:
: q" _2 n5 C! w2 k# F! C6 b+ p' u  o$ Q7 R* e9 _) K% S" \
Create a custom error message9 l: t$ R2 l' I$ b, ?$ ^7 k, B( v
--------------------------------------------------------------------------------% @' {' c1 F+ k6 H) z0 X2 l

& x, ^( t- \( P6 {# Y  R# S- h* iUpdate your code to include the tc/emh_const.h file.
7 N' z# t: C3 E0 V' @" k$ B7 X* r( l# i
Add the #define statement for your error message in your code using the following syntax:
4 S9 L7 `0 e! C. Q3 }) H3 w9 }" C6 T: K5 h; Q
#define USER_ERROR_NAME (EMH_USER_error_base + nnn)6 p, M2 w' E! M, g0 r

) B# n: b3 m0 d1 c- Lwhere nnn is your error number. For example, you can define a connection failure error with a number of 10 as follows:6 t3 @) h; X. i7 m) {
! f3 _: t1 t; e. }4 l, e
#define CONNECT_FAILURE (EMH_USER_error_base + 10)
! `  h$ _+ ?- S0 Y2 j8 L: n0 V, Z2 K5 f$ _/ H% x0 R  b& E* E) v
Compile your code.
& [) c0 Q  Y$ x* I7 t& x( F) ?# |: K
Create the local shared library file.
: ?! k/ _' |9 z1 r- L8 z1 u" J, G* I: p. @
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." I  L7 h; P+ k1 z9 A( b

* M- k' b" `5 p7 T  }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:* r0 W, z/ B8 j: ]! |  T: h
& u1 [- {$ U. K. w* u# ~
<error id = "10">Unable to connect %1$</error>* B; w) ]$ R% ^* s$ a0 T9 P

: k6 F" ^" e" }) sSet 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.: W, {: ]' j8 Z' e2 I  E

! a# |  \7 j/ T( D2 ^; d! Q# W: ~" Z在流程定义的rule handler中,当遇到需要返回错误消息的时候,利用Teamcenter 2007提供的emh.h的系列方法来保存错误消息,如EMH_store_error(),这个不传参数到错误消息中,也可以利用后面的EMH_store_error_s1() 一直到EMH_store_error_s5() ,也就是说最多可以一次向错误消息中返回5个参数,最大限度地给用户更多的提示。
& Z5 l, l) s- J" ~
9 G4 d  d' L0 J9 }5 u# n具体步骤如下:
5 w# F# R0 y' q  h1 T# L' l9 I' ?- I( a' A6 f" M7 N
步骤1 修改%TC_DATA%\lang\textserver\en 下的ue_errors.xml文件,添加自定义的错误消息,如果消息中有中文的话,需修改配置文件引用的字符集为GB2312,错误消息如下定义:: J7 U! R2 A1 {1 [( i7 h; @
<?xml version="1.0" encoding="GB2312" standalone="yes"?>3 h3 b, u4 l* |
<!--1 s+ M( N: @1 U
===============================================================================
# m7 w  `" J3 a* b6 Z( y$ o                Copyright (c) 2003-2005 ugS Corporation! s4 Q$ ]8 U  F1 g4 o
                   Unpublished - All Rights Reserved* }) W! t0 o2 A" K& k5 v
===============================================================================
1 F+ [' ^' A8 r8 p: S- jFile description:
# X* t3 L' q% w( z: ]  R
& i7 R3 u1 \/ T3 O            Filename:+ E8 }) Z% q# y& e4 ~0 Z1 _
            Module:3 G0 f2 y8 n$ r) Y: b

9 h9 T9 E" {  b+ u7 o& w2 N9 ^            XML File defining ___ module text/error messages.. I6 N& u0 n0 X1 O' u0 F' R
            This was previously done in UIH/UIL/VIL format.9 S4 V" X( k" r& I, V* @
-->
) V* R( [  i# J! E. F<textsrv filename="ue_errors.xml">
) }6 X2 x0 h+ Q# A. M& b: K) X<errors module="ue" error_base="919000">4 B. s5 @6 e/ K' F
<error id="1">USER_EXIT:    User Exit %1$ failed</error>1 I7 ]4 d1 W9 u2 C6 U1 A: j5 R
<error id="300">错误: 流程目标不能为Item,必须为Item版本类型!</error>
; U$ ?3 W0 w& o- k" V7 H* \* c3 Z<error id="301">错误: 此流程必须有立项Item版本的附件才能启动!</error>
' E9 f/ }2 a$ U8 Z. {; N<error id="302">错误: 流程附件类型不能为零组件下的view类型,只能为零组件版本下的view类型!</error>. x' K  C- Z5 Y2 `0 ], r
<error id="303">错误: 此流程目标某附件的所有者为%1$,必须由%2$本人才能发起此流程!</error>; g; B1 D+ o: W3 s1 H* b; _+ c4 ^9 c) t
</errors>
8 I" T, ^# o' q  p</textsrv>2 w% t! B: Z8 f
- }! z& y5 y; K+ i; z
这里的%1$代表传入的第1个参数,同理,%2$代表传入的第2个参数。
: ^2 `+ y9 G7 e+ h2 Q7 }
6 i. B6 t! K$ V9 B6 W! X步骤2:在rule handler的代码中定义错误代码:- W! e1 K4 |% Q3 `8 L
# O# ^( x( \0 ]) l( A# h5 e; j1 f
#define WORKFLOW_ERROR1 ( EMH_USER_error_base + 300 )* D# [( s, g' B' A
#define WORKFLOW_ERROR2 ( EMH_USER_error_base + 301 )
3 Q( \4 B) g' C- \. p0 Y8 b8 Y#define WORKFLOW_ERROR3 ( EMH_USER_error_base + 302 )) \# c8 M% C$ G( }9 D& u

$ b8 J$ M! B, d" x% ]5 P8 T#define WORKFLOW_ERROR4 ( EMH_USER_error_base + 303 ). c8 R  D4 g/ w0 |
7 s, R/ o5 ^+ y' S$ r$ M) {
使ID和配置文件中的错误消息ID号一致。
; _8 U% T+ G0 K7 @8 {+ Q* Y0 C0 g8 K+ q
步骤3:在rule handler的代码中,当不满足条件时,调用EMH_store_error的相关方法如(需要传递参数的话参照帮助文档):: a3 p) Q; ?) [8 x0 J
EMH_store_error (EMH_severity_user_error,WORKFLOW_ERROR2) ;
) s& @2 C, z* v4 c5 Istatus=WORKFLOW_ERROR2;
4 I2 Z, }3 X1 `9 r8 x( s5 qEMH_ask_error_text(status, &message);
, N; R) J: R. f. u, P% M* |printf("error is [%s]", message);
2 X, y5 Z5 v* |- f不满足条件仍然返回EPM_nogo即可。8 D- `$ W8 M9 x& I. M

9 H% t8 }  D$ {. V6 S步骤4:按照帮助文档Create a custom error message的最后部分提示,先设置服务器端的环境变量) |2 ^) p: |3 G; D- d- a( \; b" _0 F
set TC_USER_MSG_DIR=%TC_DATA%\lang\textserver\en 使TC_USER_MSG_DIR指向ue_errors.xml所在的目录,并修改tcdata目录下的tc_profilevars.bat文件内容,内容如下:% B  E) Y0 c, X8 k
if not defined TC_USER_MSG_DIR set TC_USER_MSG_DIR=%TC_ROOT%\lang\textserver\en8 {7 `" T& t4 E3 x& P. G: u

  H+ K$ A( z7 b- {  G& r; d这样自定义消息就算完成了。编译文件,将dll和pdb文件放置到服务器端的bin目录下,如果是两层客户端,需要更新客户端的TC2007下bin目录下的相应的dll和pdb文件。
) @" ]. z  e5 [2 n9 i) _! o! K: Y. h2 i& X7 y, S- B/ v
实际测试中,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, 2024-11-15 20:54 , Processed in 0.049905 second(s), 24 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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