青华模具培训学校

 找回密码
 注册

QQ登录

只需一步,快速开始

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

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

[复制链接]
发表于 2010-1-4 13:41 | 显示全部楼层 |阅读模式
今天加班,终于把Teamcenter 2007自定义错误消息的问题解决了,部分信息来自顾问公司的指导,部分是通过研究帮助文档做出来的。
* x/ W! j) @, ?  t  P) s" K# u$ _8 L/ |3 S! x* d( F0 q
    首先在Teamcenter 2007的ITK帮助文档里有用户定义message的大概步骤描述:* z* q. m) M* ?2 q5 c
+ H$ w# t8 [7 [* t6 I
Create a custom error message, f: v7 R3 y5 r( y# T
--------------------------------------------------------------------------------
5 T) l7 u0 G) l$ a  E  }* r  R0 j4 V0 v: J+ C2 j$ O
Update your code to include the tc/emh_const.h file.' e5 c" Z- r- V

3 C; ~7 I) t5 G. _9 @' eAdd the #define statement for your error message in your code using the following syntax:% Y/ m) z+ @5 V
4 G1 W7 @2 j( ]' u" T/ E$ t8 J# ]
#define USER_ERROR_NAME (EMH_USER_error_base + nnn)( E' N9 L2 U# e4 W) w  G
1 I' H: y6 I$ h0 L7 J
where nnn is your error number. For example, you can define a connection failure error with a number of 10 as follows:
, M& [! f+ f9 ?8 @( W$ b# p* E- u, k9 ?& X6 x! Z
#define CONNECT_FAILURE (EMH_USER_error_base + 10)# ]9 N1 z. y' k

5 h' N1 k' B! YCompile your code.4 m) `  [; x  l
0 p* F) ]& r: F% J
Create the local shared library file.# H9 C" S8 W% ^: L" V4 A
. A2 `# H! M" a; T( n3 {
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.0 L; w# B4 _& b- F

: u8 r  h; y  n9 p& JIn 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:6 P: H) I% L# ?; C. G$ I4 Z% w
9 d$ B5 H% T" g8 s3 e
<error id = "10">Unable to connect %1$</error>
+ k6 F( g# \3 Q) N/ Q- C2 ]) V; `  ^3 B& c! u* q& Q# e9 c
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.- k  e' U' \& J+ L

3 x+ U4 B0 B4 |6 q1 V在流程定义的rule handler中,当遇到需要返回错误消息的时候,利用Teamcenter 2007提供的emh.h的系列方法来保存错误消息,如EMH_store_error(),这个不传参数到错误消息中,也可以利用后面的EMH_store_error_s1() 一直到EMH_store_error_s5() ,也就是说最多可以一次向错误消息中返回5个参数,最大限度地给用户更多的提示。9 G  F- B, X2 T* d4 h

- C! m$ U! J9 K/ x具体步骤如下:
5 W0 {+ [% C! |* B% F) s
! `" g- @; ]- x- V3 _步骤1 修改%TC_DATA%\lang\textserver\en 下的ue_errors.xml文件,添加自定义的错误消息,如果消息中有中文的话,需修改配置文件引用的字符集为GB2312,错误消息如下定义:& \2 _0 l8 Q; G/ T9 ^
<?xml version="1.0" encoding="GB2312" standalone="yes"?>- m8 R/ H+ {& _) A* s* W
<!--
3 F) u5 `3 m- ^) T3 U% {% N3 i===============================================================================0 J' V. e1 t4 e* Y$ A8 n; e0 _2 U
                Copyright (c) 2003-2005 ugS Corporation1 ^+ {* H2 Z; D! n& J) F, z
                   Unpublished - All Rights Reserved3 K0 z* x/ r- _
===============================================================================
  [7 P/ F' S5 W' T' R# ]8 AFile description:: f1 x3 o0 V; O# f
3 j3 B/ O+ B' U# T3 p
            Filename:
( {0 g1 b' l" g+ N" T! v+ b            Module:' I; i& D) i4 R9 v# k2 G

1 M2 F, _* P# m+ {9 V) V. b6 @  t            XML File defining ___ module text/error messages.
) t$ p* W6 Z! T& Q: {: ^* ^            This was previously done in UIH/UIL/VIL format.7 O, K3 U% g4 z. w2 w* q& c3 N
-->
  c6 ^3 k. ^" I2 I/ ~2 U<textsrv filename="ue_errors.xml">2 N' |3 J% [3 U$ b8 a
<errors module="ue" error_base="919000">
, x( g/ I: o& s/ Q6 M  q<error id="1">USER_EXIT:    User Exit %1$ failed</error>
* R+ Q) G4 P/ J) y. B/ T: Q<error id="300">错误: 流程目标不能为Item,必须为Item版本类型!</error>
& Z$ g+ f1 W7 E1 B% W+ |) T<error id="301">错误: 此流程必须有立项Item版本的附件才能启动!</error>; r& j4 t" i. K: l+ B" K% n
<error id="302">错误: 流程附件类型不能为零组件下的view类型,只能为零组件版本下的view类型!</error>
0 c. M; Z; Q3 K- S( x1 s<error id="303">错误: 此流程目标某附件的所有者为%1$,必须由%2$本人才能发起此流程!</error>: Z; e2 b6 O8 Q! R8 B: b1 o+ k+ e7 Q
</errors>1 ?& f, E- ~) C( Q' n
</textsrv>; v. J5 _# |/ p) j0 ~4 G5 q7 i4 t) d
0 t4 M3 E! o& p  g
这里的%1$代表传入的第1个参数,同理,%2$代表传入的第2个参数。
* x  }: w  Q4 q+ E5 I0 |$ E8 w5 d4 Y, C( ^- A2 l
步骤2:在rule handler的代码中定义错误代码:
# ~8 ]" ~( u# H7 ~* G* I
3 w& @& K3 x9 `( _1 i4 n' ^1 H7 p7 C! r#define WORKFLOW_ERROR1 ( EMH_USER_error_base + 300 )
5 |  }4 z& a/ s1 ^. D, x#define WORKFLOW_ERROR2 ( EMH_USER_error_base + 301 )
8 K) j% n0 `4 f) ~#define WORKFLOW_ERROR3 ( EMH_USER_error_base + 302 )  K* D  i: y7 T( ?% Q
; l: x2 s/ e/ D/ i; }
#define WORKFLOW_ERROR4 ( EMH_USER_error_base + 303 )3 m& b* r$ S$ d! u5 f# o) _
2 F! b9 G% R0 R
使ID和配置文件中的错误消息ID号一致。4 r  [+ p( g% O& u* t+ S$ a  ]9 z" `

' {) T+ ?5 l2 f$ z4 S) N步骤3:在rule handler的代码中,当不满足条件时,调用EMH_store_error的相关方法如(需要传递参数的话参照帮助文档):- u5 e6 Y# W& e' a
EMH_store_error (EMH_severity_user_error,WORKFLOW_ERROR2) ;
9 J  s4 ]; C/ }. ]9 w$ Z8 @) Fstatus=WORKFLOW_ERROR2;- a/ X1 U6 j+ o2 R/ l2 B
EMH_ask_error_text(status, &message);
% Z  p. J7 N* H! M8 U+ T/ N- ?$ h8 tprintf("error is [%s]", message); " ~/ R9 L$ s8 |% Z8 f
不满足条件仍然返回EPM_nogo即可。% m, d* X& W' H; b& s; I
( _% n6 s* }5 k1 d. W  m
步骤4:按照帮助文档Create a custom error message的最后部分提示,先设置服务器端的环境变量/ N, N4 ]0 x; K5 n
set TC_USER_MSG_DIR=%TC_DATA%\lang\textserver\en 使TC_USER_MSG_DIR指向ue_errors.xml所在的目录,并修改tcdata目录下的tc_profilevars.bat文件内容,内容如下:; l4 D5 ?0 w% \# T$ I
if not defined TC_USER_MSG_DIR set TC_USER_MSG_DIR=%TC_ROOT%\lang\textserver\en
# X$ l5 \" O6 o! I8 N1 W; `/ X% m% M! h0 }% r) e
这样自定义消息就算完成了。编译文件,将dll和pdb文件放置到服务器端的bin目录下,如果是两层客户端,需要更新客户端的TC2007下bin目录下的相应的dll和pdb文件。0 u0 j0 v9 p. R- c- p6 p

9 N0 Y2 [5 o: d3 g' a: H实际测试中,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:51 , Processed in 0.095421 second(s), 25 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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