青华模具培训学校

 找回密码
 注册

QQ登录

只需一步,快速开始

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

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

[复制链接]
发表于 2010-1-4 13:41 | 显示全部楼层 |阅读模式
今天加班,终于把Teamcenter 2007自定义错误消息的问题解决了,部分信息来自顾问公司的指导,部分是通过研究帮助文档做出来的。6 E+ O7 F: |$ @: `0 S
6 |, ]1 R* `6 k- Z; P
    首先在Teamcenter 2007的ITK帮助文档里有用户定义message的大概步骤描述:
- |4 ?% T0 y; B& D2 y% y) ~7 ~0 y  N5 _% ^& a$ r
Create a custom error message2 R7 W: ]' S- d9 B8 |" A
--------------------------------------------------------------------------------
- W- U% ]. E# l" O/ I- s0 u5 ]4 p5 `7 m' Q- s8 ~: m, `
Update your code to include the tc/emh_const.h file.
4 ]1 m; \! e" L8 M3 x9 q* K' A( E2 q0 j
Add the #define statement for your error message in your code using the following syntax:
; o! T; C5 Y. I% @/ ~) C; b0 m% N
7 b3 v+ n4 G  @#define USER_ERROR_NAME (EMH_USER_error_base + nnn)  L4 H9 [4 w& \/ H6 A
' T8 \- @% G0 o3 w
where nnn is your error number. For example, you can define a connection failure error with a number of 10 as follows:. M- u  p$ [5 s
& p1 J- h; ~( d5 w5 z: v
#define CONNECT_FAILURE (EMH_USER_error_base + 10)5 l5 ~0 w! v) v9 F% D- Q) w
! O& X* f! f' |9 m# e* c+ j. Z$ w
Compile your code.& q( L6 A$ K! I
9 ]; n  J# w3 w( B% y/ |
Create the local shared library file.5 `, G) [+ }5 H7 R, s/ T6 q6 j! a4 U2 v$ @

0 u0 N2 L  {2 F# z/ _$ K6 |/ uCopy 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." u3 r0 c+ N* g/ D% K
, B+ h9 k/ _4 Y! O8 x6 j2 V4 [
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:
1 b! R- ?- W$ ~7 d3 v  U6 c& x
* B* p7 ]- }$ p5 U8 }( s* B<error id = "10">Unable to connect %1$</error>
4 ^& T' ]1 ?4 Q: f0 j2 k4 e8 j. P! T4 S9 \0 b& a# c! n
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.
; B3 a$ f% F6 l; s% X
3 G( o! i" H; @9 C% ^在流程定义的rule handler中,当遇到需要返回错误消息的时候,利用Teamcenter 2007提供的emh.h的系列方法来保存错误消息,如EMH_store_error(),这个不传参数到错误消息中,也可以利用后面的EMH_store_error_s1() 一直到EMH_store_error_s5() ,也就是说最多可以一次向错误消息中返回5个参数,最大限度地给用户更多的提示。2 c& \0 x2 j9 \" G- W$ N" b

; K6 U' M9 X+ F& q具体步骤如下:1 x# J$ e- W: l) `# j

7 I- T' o3 R  a- h, b* Y步骤1 修改%TC_DATA%\lang\textserver\en 下的ue_errors.xml文件,添加自定义的错误消息,如果消息中有中文的话,需修改配置文件引用的字符集为GB2312,错误消息如下定义:( `% G, Q# y$ b1 E, t# t
<?xml version="1.0" encoding="GB2312" standalone="yes"?># v9 N+ A5 N8 ~3 H$ Y' i
<!--
3 e& X, ^, m3 k===============================================================================
! U5 C/ G0 W- C$ p: s                Copyright (c) 2003-2005 ugS Corporation
' x! h% C' m- S" T: }; I# g                   Unpublished - All Rights Reserved
  l" A( W+ k2 S===============================================================================9 t5 _# [$ ?# ^2 O& W/ L2 m
File description:5 q" r' {5 `- o

+ C) w3 T9 [! z  x  ]  U" s            Filename:2 d& ?' P7 N8 g) D4 {; n
            Module:
1 X& U3 S% ^' S7 E$ m: ^. R5 r- b* r; x( D2 c  W2 \" ~6 n1 J6 y& |
            XML File defining ___ module text/error messages.
8 g! ]9 I2 ]( A$ |8 I9 p            This was previously done in UIH/UIL/VIL format.' Q1 n- b' P# f* s- ~7 {9 L
-->0 g& X% S+ q% _' F, x# u
<textsrv filename="ue_errors.xml">
" \. w2 S" }% J$ L$ c+ ]# z<errors module="ue" error_base="919000">
+ t3 t0 {0 H6 }  r8 m<error id="1">USER_EXIT:    User Exit %1$ failed</error>* `2 Z+ ^( k  P, @) N
<error id="300">错误: 流程目标不能为Item,必须为Item版本类型!</error>
% p% d) }4 v8 e) k<error id="301">错误: 此流程必须有立项Item版本的附件才能启动!</error>
1 K% M+ y! I0 |9 q% m<error id="302">错误: 流程附件类型不能为零组件下的view类型,只能为零组件版本下的view类型!</error>
  B/ T( @" L3 W2 Y. l7 }1 W<error id="303">错误: 此流程目标某附件的所有者为%1$,必须由%2$本人才能发起此流程!</error>
# A3 `/ C% o* `/ ~5 _$ m9 p7 d</errors>
7 o5 B( w( l) J</textsrv>
' ^! B9 Y- {$ S8 X- m
/ x8 r. J7 U. [" U2 w1 e3 K5 t# r这里的%1$代表传入的第1个参数,同理,%2$代表传入的第2个参数。
4 k4 t1 k' r& D7 D. J# C! A8 t' z1 |- _# m: ?
步骤2:在rule handler的代码中定义错误代码:
5 Y% c+ p: V2 |! S
: c6 X+ Y  s. O: N#define WORKFLOW_ERROR1 ( EMH_USER_error_base + 300 )- @8 v& ~# m% M4 V1 P" ^4 v
#define WORKFLOW_ERROR2 ( EMH_USER_error_base + 301 )
5 Z& g- _! C/ T5 V- b( H. }2 J#define WORKFLOW_ERROR3 ( EMH_USER_error_base + 302 )
. L% m7 G! q2 \  y
# F+ f1 o7 U3 ^& W4 R: V#define WORKFLOW_ERROR4 ( EMH_USER_error_base + 303 )5 i' \  z+ L3 x$ _: @0 N

% X: N& p' N+ }6 ?使ID和配置文件中的错误消息ID号一致。
, R- G. B5 f! P9 P, \4 a  s' W" d( k* U4 R2 S7 N
步骤3:在rule handler的代码中,当不满足条件时,调用EMH_store_error的相关方法如(需要传递参数的话参照帮助文档):4 q" \- `+ {' l/ |
EMH_store_error (EMH_severity_user_error,WORKFLOW_ERROR2) ;
; s! ~  g) x9 o0 sstatus=WORKFLOW_ERROR2;
5 a( p0 h( B# `2 `/ k1 }  \EMH_ask_error_text(status, &message);' A4 D4 g% g8 j( w6 E
printf("error is [%s]", message);
" p  m' i, u) s4 l; c不满足条件仍然返回EPM_nogo即可。8 _$ D2 L' G' d/ j0 {+ c/ J- D9 C: C
* ]  f4 n- W2 a
步骤4:按照帮助文档Create a custom error message的最后部分提示,先设置服务器端的环境变量
* p* ~: z& s% n. y% |- s3 {* @  _set TC_USER_MSG_DIR=%TC_DATA%\lang\textserver\en 使TC_USER_MSG_DIR指向ue_errors.xml所在的目录,并修改tcdata目录下的tc_profilevars.bat文件内容,内容如下:
1 z( x, S" x+ ~) L0 |6 n( Zif not defined TC_USER_MSG_DIR set TC_USER_MSG_DIR=%TC_ROOT%\lang\textserver\en3 H2 l/ ~) @2 ?' i3 |+ f

1 Y+ R, q- U) p% O7 Y这样自定义消息就算完成了。编译文件,将dll和pdb文件放置到服务器端的bin目录下,如果是两层客户端,需要更新客户端的TC2007下bin目录下的相应的dll和pdb文件。, {9 q7 R% \: [& j8 R
7 j8 `, O& S1 f3 L6 j9 E1 }3 w
实际测试中,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-8-8 14:13 , Processed in 0.069228 second(s), 25 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2025 Discuz! Team.

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