span8
span4
FME_BEGIN_TCL set gtransionstarttime[时钟格式[时钟秒]]FME_END_TCL puts“转换开始时间:$gtransionstarttime\n转换结束时间:[时钟格式[时钟秒]。”
FME_END_TCL proc finally{}{\global FME_Status;\如果{$FME_Status==“1”}{\puts“翻译成功”;\}否则{\puts“翻译失败”;\ };\ };同样的例子也可以在不使用过程的情况下编写:
如果{$FME_Status=“1”}{\puts“翻译成功”,则FME_END_TCL;\}否则{\puts“翻译失败”;\ }
#此映射文件中用于设置目标数据集目录的宏是DestDataset。DWG_DATASET“$(DestDataset)”#在转换结束时运行的Tcl脚本中的源。#脚本与此映射文件存储在同一目录中。FME_BEGIN_TCL source$(FME_MF_DIR_UNIX)/backup.TCL;备份{$(DestDataset)}
PROC备份{文件名} {{{file存在$FiNeNAM}}}{file拷贝-强制$file文件$FiNeNAM.BAK}
#源代码在Tcl脚本运行结束时进行此翻译。#脚本与此映射文件存储在同一目录中。FME_END_TCL source$(FME_mfu DIR_UNIX)/tryAnother.TCL
设置outputFile[打开c:/temp/status.txt w+]如果{$FME_status==“1”}{将$outputFile“转换成功”}否则{将$outputFile“转换失败--运行备用转换”exec FME.exe alternate Translation.FME 2>NUL:}关闭$outputFile
FME_日志消息FME_通知{hi dale inline}
来自pyfme import*log=FMELogfile()log.log(“你好”)
FME_END_TCL set outputFile[打开$FME_LogFileName a];\放入$outputFile{};\把$outputFile{在末尾写些东西};\放入$outputFile{};\关闭$outputFile;
#设置映射文件id,以便Tcl终结过程“知道”正在运行哪个映射文件将文件id形状映射到AutoCAD,记录所有消息编号,以便我们以后可以只提取我们感兴趣的消息编号。结束此翻译时运行的Tcl脚本中的LOG_MESSAGE_NUMBERS yes#Source。#脚本与此映射文件存储在同一目录中。FME_END_TCL source$(FME_MF_DIR_UNIX)/TCL定版.TCL
#打开一个文件,写出翻译统计数据集output file[Open c:/temp/stats_out.txt w+];检查翻译状态,如果{$FME_status==“1”}{puts$outputFile“翻译成功”}则输出所需的消息,否则{puts$outputFile“翻译失败”puts$outputFile“错误消息为:$FME_FailureMessage”};puts$Output file“”#使用Mapping_file_ID输出映射文件中设置的唯一映射文件标识符puts$outputFile“针对$FME_MappingFileId的转换摘要”#输出每种功能类型读写的功能数。将$outputFile“??”---“放置$outputFile”“功能读取摘要”将$outputFile“??”---“循环浏览已读取的功能类型的排序列表,并输出每个集合的#计数formatSpec“%-65s:%12s”for each featuretype[lsort[array names FME_FeaturesRead]{puts$outputFile[format$formatSpec$featuretype$FME_FeaturesRead($featuretype)]}puts$outputFile“--------------------------------------”puts$outputFile[format$formatSpec”Total功能读取“$FME_TotalFeaturesRead”;看跌期权$ OUTPUTFILE“-------------------------------------------------------------------------------" puts $outputFile "" puts $outputFile "-------------------------------------------------------------------------------" puts $outputFile " Features Written summary" puts $outputFile "-------------------------------------------------------------------------------" # Loop through a sorted listed of the feature types that were written, and output the # count for each one foreach featType [lsort [array names FME_FeaturesWritten]] { puts $outputFile [format $formatSpec $featType $FME_FeaturesWritten($featType)] } puts $outputFile "" puts $outputFile "-------------------------------------------------------------------------------" puts $outputFile [format $formatSpec "Total Features Written" $FME_TotalFeaturesWritten] puts $outputFile [format $formatSpec "Total Coordinates Written" $FME_TotalCoordinates] puts $outputFile "-------------------------------------------------------------------------------" puts $outputFile "" # Look for any lines in the logfile that were warnings, and output a count of them to # the summary file.此外,检查是否有任何“意外输入卸妆”#统计数据线,如果有报告非零计数(当工作台生成的映射文件对输入数据集#与预期不同功能类型比运行可能出现这种情况#)#并且还捞出系统状态日志消息(这是#246014)和拷贝#到输出文件集logFileExists [文件存在$ FME_LogFileName]设置警告0如果{$ logFileExists} {设置日志[开$ FME_LogFileName R] while {[gets $logFile line] >= 0} { if {[regexp {WARN} $line]} { incr warnings } elseif {[regexp {#246014} $line]} { puts $outputFile "-------------------------------------------------------------------------------" puts $outputFile $line puts $outputFile "-------------------------------------------------------------------------------" puts $outputFile "" } elseif {[regexp {Unexpected Input Remover} $line]} { set totalFeatures 0 set acceptedFeatures 0 set rejectedFeatures 0 set line [regsub {^.*Unexpected} $line {Unexpected}] catch {scan $line "Unexpected Input Remover(TestFactory): Tested %d input features -- %d features passed, %d features failed." totalFeatures acceptedFeatures rejectedFeatures} if {$rejectedFeatures > 0} { puts $outputFile "---------------------------------------------------------------------------- ---" puts $outputFile [format $formatSpec "Features with Unexpected Feature Types" $rejectedFeatures] puts $outputFile "---------------------------------------------------------------------------- ---" puts $outputFile "" } } } close $logFile } puts $outputFile "-------------------------------------------------------------------------------" puts $outputFile [format $formatSpec "Logfile $FME_LogFileName Warnings" $warnings] puts $outputFile "-------------------------------------------------------------------------------" puts $outputFile "" puts $outputFile "-------------------------------------------------------------------------------" puts $outputFile [format $formatSpec "Total Elapsed Time (seconds)" $FME_ElapsedTime] puts $outputFile [format $formatSpec "Total CPU Time (seconds)" $FME_CPUTime] puts $outputFile "-------------------------------------------------------------------------------" puts $outputFile "" # And close the file close $outputFile
本例使用外部脚本插入翻译的活动记录到使用TclODBC包的数据库。在这个例子中,一个Access数据库中创建(如果需要),并与一排用于填充每个翻译这就完成。
tclobc公司
到FME环境中使用TclODBC,请按照下列步骤操作:
FME_END_TCL源$(FME_MF_DIR_UNIX)/recordTranslationODBC.tcl
#========================================================================= # # recordTranslationODBC.tcl # # This script records the execution of a translation using # the TclODBC package.这个例子包括#Access数据库,用于存储翻译结果的创建和表。#每个翻译运行一个行被插入到表中。#请注意,为acutal生产系统的“看跌期权”语句#将被删除。包装要求tclodbc#========================================================================= # # Set up some variables that are used within to create and connect # to the database via ODBC set driver "Microsoft Access Driver (*.mdb)" set dbfile c:/translations.mdb set dsn XLATION # ========================================================================= # Create the database if it isn't already there.我们不会这样做,如果#数据库是一个基于服务器的一个,但在本例中,我们只使用访问。如果{!“创建数据库$DBFILE”数据库配置CONTIOSDSN$$Realth[Real] CytAydB= \“$DBfile \“一般”] } {使用“现有数据库$DBFILE”} [文件存在$DBFIL] }{如果它已经在那里了。如果我们使用ODBC连接到一个“真实”数据库,那么我们只假设DSN已经是有效的catch{database configure remove DSN$driver“DSN=$DSN”}database configure a d d DSN$driver[list“DSN=$DSN=$DSN”“DBQ=$dbfile”]database db$DSN$driver[list“DSN=$DSN”“DBQ=$dbfile”]database db$DSN$DSN$driver[list“DSN=$DSN”[list“DSN=$DSN”“DBQ=$dbfile”]database db db数据库db$DSN$DSN$DSN[DSN$DSN$DSN$DSN$DSN$DSN$DSN$DSN$DSN=====创建我们想要的表如果{[llength[db tables XLATION_RESULTS]==0}{将“Creating XLATION_RESULTS table in database$dbfile”db“CREATE table XLATION_RESULTS”(MappingFileID VARCHAR(50),StartTime TIMESTAMP,EndTime TIMESTAMP,CpuTime DOUBLE,Successful CHAR(3),则插入(如果尚未插入),NumFeatures INTEGER)“}else{puts”XLATION_RESULTS table present in database$dbfile“}else{puts”XLATION_RESULTS table存在于数据库$dbfile“}else{puts”XLATION挈u RESULTS table中,现在我们可以插入行,提交它了,如果{$FME_Status==0}{set Success no}db“插入到XLATION结果(MappingFileID,StartTime,EndTime,CpuTime,Successful,NumFeatures)值('$FME_MappingFileID',\{ts'$FME_StartingTimeStamp'},'{ts'$FME_EndingTimeStamp'},$FME_CpuTime,'$Success',$FME_totalfeatureswrited)“db commit”,则断开与数据源的连接set Success yes数据库断开连接#如果连接到基于服务器的数据库,则可能不会在最后删除ODBC DSN。但由于我们是基于文件的,所以我们将删除它数据库配置删除dsn$driver“dsn=$dsn”
本例使用外部脚本,使用Oratcl包将翻译活动的记录插入到Oracle数据库中。
雄辩
要在FME环境中使用Oratcl,请遵循以下步骤:
FME_END_TCL source$(FME_mfu DIR_UNIX)/recordTranslationOracle.TCL
#一个脚本使用Oratcl包记录翻译的执行。此示例包括创建用于存储翻译结果的“XLATION”结果表。#每个翻译运行一个行被插入到表中。需要Oracl #的包需要Oracl年年年年年年年年年年年年久的情况在目前的情况下,具体情况是:一个具体的情况在一个具体的情况下,一个具体的情况在一个具体的情况下,一个具体的情况在一个具体的情况下,一个具体的情况在一个具体的情况下,一个具体的情况在一个具体的情况下,具体的具体的情况是:一个具体的情况在一个具体的情况下,一个具体的情况在一个具体的情况下,一个具体的情况是:请登录到Oracle服务集服务集用户名scott设置密码scott设置密码scott设置密码老虎设置密码老虎设置服务阿米达拉集服务阿米达拉集登录Inhanndle[oralogon$用户名$$确定是否我们希望将结果记录到存在集合表中,不存在STATEMESTANDLE(ORAOPEN$ $ Login句柄)ORASQL $ STATEMESTANDELE“从USER表中选择*,其中TabLEYNAME==XLATIORIX结果”,而{[OrAftETC$STATEMESTANDLE -DATAVALIABLE ROUL]==0 }{SETABLE存在“是”}如果我们需要{{$table table = =“否”}{Orasql $ StestEnEndEl“创建表XLATION结果(MappIn FILID ID VARCHAR(50)),启动时间戳,终端时间戳,CPUTIME浮标,XlationSuccessful CHAR(3))财产税NumFeatures INTEGER)“}\\r\n\r\n\r\r\n\r\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\r\n\r\r\n\r\r\n\r\r\n\r\n\r\n\r\r\n\r\r\n\r\r\n\r\r\n\r\r\n\r\r\n\r\r\r\n\r\r\r\n\r\r\r\r\r\r\r\r\r\r\r\r\r\r\r\r\r\r\r\r\n CpuTime,XLATION成功,NumFeatures)值('$FME_MappingFileId',timestamp'$FME_StartingTimeStamp',timestamp'$FME_EndingTimeStamp',$FME_CPUTime,'$Success',$FME$FME$FME$FME$totalFeatureswwrited)“-commit ාාා截至目前为止,其工作状况的工作状况仍处于一个==============================================================================================================================================退出oracle服务或注销$loginHandle
©2019安全亚搏在线软件公司|法律