#!#! #! #!#! #!#! #!#! #!#! #! #! #! #!#!#!#!#!#!#!#!#!#!#!#! #!#!#! #!#! #!#! #!#! #! #!#!#!#!#!#!#!#!#!#!#!#!#!#! #!#!#!#!#!#! #!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#! #!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#! #!#!#!#!#! #!#! #!#! #! #! #!#!#!#!#!#! #!

Get FME Server Token

" POSITION="212.991 103.999" TOP_LEFT="212.991 103.999" BOTTOM_RIGHT="211.991 104.999" BOUNDING_RECT="212.991 103.999 -1 -1" ORDER="5e+14" FOLLOW_ANCHOR="true" INFO_NODE="false" COLOUR="1,1,0.784314,1" SIZE_POLICY="8" COMMENT_TYPE="REGULAR" ANCHORED_NODE="39">
#!

Set offset to 1000 to read sets of 1000

jobs from FME Server in a single request. This is the

maximum number of items that can be returned from

FME Server in a single REST Request.

" POSITION="1045.25 -857.575" TOP_LEFT="1045.25 -857.575" BOTTOM_RIGHT="1044.25 -856.575" BOUNDING_RECT="1045.25 -857.575 -1 -1" ORDER="5e+14" FOLLOW_ANCHOR="true" INFO_NODE="false" COLOUR="1,1,0.784314,1" SIZE_POLICY="8" COMMENT_TYPE="REGULAR" ANCHORED_NODE="4">
#!

Make call to Job History via FME

Server REST API.

" POSITION="1483.17 -145.288" TOP_LEFT="1483.17 -145.288" BOTTOM_RIGHT="1482.17 -144.288" BOUNDING_RECT="1483.17 -145.288 -1 -1" ORDER="5e+14" FOLLOW_ANCHOR="true" INFO_NODE="false" COLOUR="1,1,0.784314,1" SIZE_POLICY="8" COMMENT_TYPE="REGULAR" ANCHORED_NODE="1">
#!

Create one feature for each job

that is returned from FME Server.

" POSITION="2036.47 -127.995" TOP_LEFT="2036.47 -127.995" BOTTOM_RIGHT="2035.47 -126.995" BOUNDING_RECT="2036.47 -127.995 -1 -1" ORDER="5e+14" FOLLOW_ANCHOR="true" INFO_NODE="false" COLOUR="1,1,0.784314,1" SIZE_POLICY="8" COMMENT_TYPE="REGULAR" ANCHORED_NODE="2">
#!

Only keep jobs that used the workspace

we are looking for. This test can be adjusted

to filter based on other criteria as well.

" POSITION="4322.31 -84.3192" TOP_LEFT="4322.31 -84.3192" BOTTOM_RIGHT="4321.31 -83.3192" BOUNDING_RECT="4322.31 -84.3192 -1 -1" ORDER="5e+14" FOLLOW_ANCHOR="true" INFO_NODE="false" COLOUR="1,1,0.784314,1" SIZE_POLICY="8" COMMENT_TYPE="REGULAR" ANCHORED_NODE="7">
#!

Remove temporary attributes.

" POSITION="5172.41 2.08016" TOP_LEFT="5172.41 2.08016" BOTTOM_RIGHT="5171.41 3.08016" BOUNDING_RECT="5172.41 2.08016 -1 -1" ORDER="5e+14" FOLLOW_ANCHOR="true" INFO_NODE="false" COLOUR="1,1,0.784314,1" SIZE_POLICY="8" COMMENT_TYPE="REGULAR" ANCHORED_NODE="14">
#!
#! #!#! #!#!#!#!

After 1000 features have been read, send one back to the input port to make the call to get the next set of 1000 features.

" TOP_LEFT="4944.34 -354.004" BOTTOM_RIGHT="6281.11 -957.586" BOUNDING_RECT="4944.34 -354.004 1336.77 603.583" STICKY="true" COLOUR="0.411765,0.8,0.529412" CONTENTS="27 16 32 10 6 ">
#!
#! #! #!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#! #!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#! #!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#! #!#!#!#!#!#!#!#!#!#!#!#!#!#!#! #!#!#!#!#!#!#!#!#!#!#!#! #!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#! #!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#! #!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#! #!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#! #!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#! #!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#! #!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#! #!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#! #!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#! #!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#! #!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#! #! #!#! #!#! #!#! #!#!#!#!#!#!#!#!#!#!#!#!#!#! #!#!#! #!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#! #!#! #!#!
#!
#! #!#!
FME_PYTHON_VERSION 27 DEFAULT_MACRO FME_SHAREDRESOURCE_DASHBOARD GUI IGNORE可选文本FME_SHAREDRESOURCE_DASHBOARD共享资源:#!START_HEADER # !START_WB_HEADER READER_TYPE NULL READER_KEYWORD NULL_SOURCE NULL_SOURCE_DATASET NULL WRITER_TYPE NULL WRITER_KEYWORD NULL_DEST NULL_DEST_DATASET NULL #!END_WB_HEADER # !START_WB_HEADER # !END_WB_HEADER # !END_HEADER LOG_FILENAME "$(FME_MF_DIR)GetJobsByWorkspaceName.log" LOG_APPEND NO LOG_MAX_FEATURES 200 LOG_MAX_RECORDED_FEATURES 200 FME_REPROJECTION_ENGINE FME FME_IMPLICIT_CSMAP_REPROJECTION_MODE Auto FME_GEOMETRY_HANDLING Enhanced FME_STROKE_MAX_DEVIATION 0 LOG_FILTER_MASK -1 #------------------------------------------------------------------------- MULTI_READER_CONTINUE_ON_READER_FAILURE没有 # ------------------------------------------------------------------------- 宏WORKSPACE_NAME GetJobsByWorkspaceName宏观FME_VIEWER_APP fmedatainspector # -------------------------------------------------------------------------INCLUDE [ if {[info exists env(FME_TEMP)] && [file isdirectory $env(FME_TEMP)]} {set gVisualizerTemp $env(FME_TEMP)} elseif {[info exists env(TEMP)] && [file isdirectory $env(TEMP)]} {set gVisualizerTemp $env(TEMP)} elseif { $tcl_platform(platform) == "unix" } {set gVisualizerTemp "/tmp"} else {set gVisualizerTemp c:}; regsub -all {[ ,&]} {$(WORKSPACE_NAME)} {_} wsname; set gVisualizerTemp $gVisualizerTemp/${wsname}_[clock format [clock seconds] -format %H%M%S]; puts "MACRO WORKSPACE_TEMP_DIR $gVisualizerTemp"; MACRO VISUALIZER_FEATURE_FILE $(WORKSPACE_TEMP_DIR)/inspector.ffs MACRO VISUALIZER_SCHEMA_FILE $(WORKSPACE_TEMP_DIR)/inspector.fsc MACRO VISUALIZER_CREATE_SPATIAL_INDEX YES DEFAULT_MACRO WB_CURRENT_CONTEXT # ------------------------------------------------------------------------- Tcl2 proc Creator_CoordSysRemover {} { global FME_CoordSys; set FME_CoordSys {}; } MACRO Creator_XML NOT_ACTIVATED MACRO Creator_CLASSIC NOT_ACTIVATED MACRO Creator_2D3D 2D_GEOMETRY MACRO Creator_COORDS INCLUDE [if {{Geometry Object} == {Geometry Object}} {puts {MACRO Creator_XML *}}] {if {{Geometry Object} == {2D Coordinate List}} {puts {MACRO Creator_2D3D 2D_GEOMETRY};[if {{Geometry Object} == {3D坐标列表}}{puts {MACRO Creator_2D3D 3D_GEOMETRY};{{Geometry Object} == {2D Min/Max Box}} {set comment{我们需要将坐标minX minY maxX maxY转换为一个完整的多边形坐标列表};set splitCoords [split [string trim]{/ /设置字符串长度 }]];如果{[llength $splitCoords] > 4} {set trimmedCoords {};foreach item $splitCoords {if {$item != {}} {lappend trimmedCoords $item}};设置splitCoords trimmedCoords美元;};如果{[llength $splitCoords] != 4} {error {Creator:坐标列表应该是一个以空格分隔的列表,包含4个数字,如'minx miny maxx max ' - ' 的是无效的};};设置minX [lindex $splitCoords 0];set minY [lindex $splitCoords 1]; / /设置lindex $splitCoords 1set maxX [lindex $splitCoords 2]; / /设置索引set maxY [lindex $splitCoords 3]; / /设置maxY"MACRO creatator_coords $minX $minY $minX $max $maxX $max $maxX $minY $minX $minY";{MACRO Creator_2D3D 2D_GEOMETRY};{MACRO Creator_CLASSIC *}}] FACTORY_DEF $(Creator_XML) CreationFactory FACTORY_NAME Creator_XML_Creator CREATE_AT_END no OUTPUT FEATURE_TYPE _____CREATED______ @Geometry(FROM_ENCODED_STRING, xml ? version = 1.0 编码= US_ASCII 独立的= 没有 几何 尺寸= 2 几何 ) FACTORY_DEF $(Creator_CLASSIC) CreationFactory FACTORY_NAME Creator_CLASSIC_Creator $(Creator_2D3D) $(Creator_COORDS) CREATE_AT_END no OUTPUT FEATURE_TYPE _____CREATED______ FACTORY_DEF * TeeFactory FACTORY_NAME creator_clone INPUT FEATURE_TYPE _____CREATED______ NUMBER_OF_COPIES 1 OUTPUT FEATURE_TYPE Creator_CREATED . txt@Tcl2 (Creator_CoordSysRemover) @CoordSys () fme_feature_type创造者FACTORY_DEF * BranchingFactory FACTORY_NAME“Creator_CREATED布兰凯尔1 10”输入FEATURE_TYPE Creator_CREATED TARGET_FACTORY " $ (WB_CURRENT_CONTEXT) _CREATOR_BRANCH_TARGET“输出通过FEATURE_TYPE * @RemoveAttributes(“Creator_CREATED布兰凯尔1 10”.BranchingFactory.Count) #------------------------------------------------------------------------- FACTORY_DEF * TeeFactory FACTORY_NAME " $ (WB_CURRENT_CONTEXT) _CREATOR_BRANCH_TARGET“输入输出FEATURE_TYPE FEATURE_TYPE * * # ------------------------------------------------------------------------- FACTORY_DEF * TeeFactory FACTORY_NAME“JobHistoryReader_GetJobsByWorkspaceName输入输入收集器”输入FEATURE_TYPE Creator_CREATED输出FEATURE_TYPE JobHistoryReader_GetJobsByWorkspaceName_Input宏观JobHistoryReader_GetJobsByWorkspaceName_WORKSPACE_NAME JobHistoryReader_GetJobsByWorkspaceName宏(JobHistoryReader_GetJobsByWorkspaceName_WORKSPACE_NAME) _XFORMER_NAME美元JobHistoryReader_GetJobsByWorkspaceName宏(JobHistoryReader_GetJobsByWorkspaceName_WORKSPACE_NAME) _TRANSFORMER_GROUP宏(JobHistoryReader_GetJobsByWorkspaceName_WORKSPACE_NAME)美元___COMPOUND_PARAMETERS宏(JobHistoryReader_GetJobsByWorkspaceName_WORKSPACE_NAME)美元_SUB_DOC_NAME JobHistoryReader_GetJobsByWorkspaceName宏$(JobHistoryReader_GetJobsByWorkspaceName_WORKSPACE_NAME)_SERVER_HOST http://localhost/ MACRO $(JobHistoryReader_GetJobsByWorkspaceName_WORKSPACE_NAME)_SERVER_USERNAME adminfme_decrypt (MDowfCN8I3xcG3GQ / TeRRUJUZ5LDPtdvpscbh7Nj9gG / INBkAGA + fkaDrNbhZtfa3rmkUUrCxKWaAFwiYsKgWJNl / 0 mrpxuup + IT2c + Qhh26JEZtUWAmpuoaQCdQ3ykKWm2zaoAM5MBCGaGEuYe + 6 as07 / nLNRJwqp1jdwP1FgVCbXRvZtWfKjEZlNJYQ + EicVc6cv2DxCYJyTljvXwF8mKxenML6FKJiHARQCO8OMJidKKZQJP1SeYIhqB0YrtGw4cGV2ZquQKifvRjB2Tl6wBAWDmeCg + R1jvft1tR17SISyTDv77K + mV80w2aaUSgybbF7coM0BrQPcpehfjlW + YxV73 + 9 mpmfxkqeznz22t8mjor57o44p8u2nqcw35hifbs0ovp9vkky0d / WzGRevseyX1pIEWJSQSFwkJVhiyXavMDz5E5SEYgTZHfVeGBXCDuIEEbfRRkPU5yD2nw2ZAVimDRD7UQhEEY6PosGqU17He4y35WEfAggQ40 + EKuupOQSZRsKotTTqlYGHJtX49ymuKqfyZzOAUSUzDMcj8gfDgzOCcuhw2sK3fJaMszEP4nbuiKM7Fok8HZYnMtVjMtDMgfbOtKqE6DWYeRRkS9qlkhiq5eTp12JCJ73GBKkpWRXxUm ySUj / 7 s6mdjpethls2zkntslxxv9jdq17pqsfj86 ym6jjtpbhmd4pqrkhpuphed6ogjy751lwjgffjaphodi3qlajur7agvs16xyas8i1r + sC4TvZ8IG4dDcTQk + nwBrghGEguaYrrm3LCrcdVWbfosktmtd13T1cUpyHz2Ltnm / J00x0SLnqW3mwZKJhSZMyNb6t1bM9oh6B7RlZ87PA3ZIFcBi9TeDAPPzztzBMCTfJKddvVG9Jr3gbpMSUuKFJVgCEMeJ7zXBsYBvYk5ZYnf)宏(JobHistoryReader_GetJobsByWorkspaceName_WORKSPACE_NAME)美元_WorkspaceName austinApartments。fmw DEFAULT_MACRO JobHistoryReader_GetJobsByWorkspaceName_WORKSPACE_NAME "" INCLUDE [puts {MACRO WB_OLD_CONTEXT_$(JobHistoryReader_GetJobsByWorkspaceName_WORKSPACE_NAME) $(WB_CURRENT_CONTEXT)};{MACRO WB_CURRENT_CONTEXT $(JobHistoryReader_GetJobsByWorkspaceName_WORKSPACE_NAME)}] FACTORY_DEF * TeeFactory FACTORY_NAME "$(JobHistoryReader_GetJobsByWorkspaceName_WORKSPACE_NAME)_LoopHere1476316402 Input Splitter" Input FEATURE_TYPE "$(JobHistoryReader_GetJobsByWorkspaceName_WORKSPACE_NAME)_LoopHere" OUTPUT FEATURE_TYPE$(JobHistoryReader_GetJobsByWorkspaceName_WORKSPACE_NAME)_LoopHere" FACTORY_DEF * TeeFactory FACTORY_NAME "$(JobHistoryReader_GetJobsByWorkspaceName_WORKSPACE_NAME)_Input1476316402 Input Splitter" Input FEATURE_TYPE "$(JobHistoryReader_GetJobsByWorkspaceName_WORKSPACE_NAME)_Input" OUTPUT FEATURE_TYPE .“$ (JobHistoryReader_GetJobsByWorkspaceName_WORKSPACE_NAME) _Input " # ------------------------------------------------------------------------- FACTORY_DEF * HTTPFactory FACTORY_NAME $ (JobHistoryReader_GetJobsByWorkspaceName_WORKSPACE_NAME) _HTTPCaller_2输入FEATURE_TYPE TARGET_URL“(JobHistoryReader_GetJobsByWorkspaceName_WORKSPACE_NAME) _Input美元” "@EvaluateExpression(FDIV,STRING_ENCODED,$($(JobHistoryReader_GetJobsByWorkspaceName_WORKSPACE_NAME)_SERVER_HOST$encode) fmetoken 生成、$ (JobHistoryReader_GetJobsByWorkspaceName_WORKSPACE_NAME) _HTTPCaller_2) "Http_method post save_file no output_filename " “OUTPUT_DIRECTORY” “FILE_EXTENSION” TARGET_ATTR "_response_body" FILE_PATH_ATTR " “UPLOAD_FILE” “UPLOAD_BODY”@EvaluateExpression (FDIV STRING_ENCODED, 用户= $ ((JobHistoryReader_GetJobsByWorkspaceName_WORKSPACE_NAME) _SERVER_USERNAME编码)美元 密码= $ ((JobHistoryReader_GetJobsByWorkspaceName_WORKSPACE_NAME) _SERVER_PASSWORD编码美元),$ (JobHistoryReader_GetJobsByWorkspaceName_WORKSPACE_NAME) _HTTPCaller_2) "MULTIPART_UPLOAD NO UPLOAD_CONTENT_TYPE "application/x-www-form-urlencoded" “AUTH_PASSWORD” “AUTH_METHOD” TARGET_ATTRIBUTE_ENCODING auto-detect RESPONSE_HEADER_LIST_ATTR "_headers" STATUS_CODE_ATTR "_http_status_code" ERROR_ATTR "_error" CONNECTION_TIMEOUT_LENGTH 60 TRANSFER_TIMEOUT_LENGTH 90 FOLLOW_REDIRECTS Yes VERIFY_SSL_CERTIFICATES Yes NAMED_CONNECTION " " USE_COOKIES No OUTPUT OUTPUT FEATURE_TYPE "$(JobHistoryReader_GetJobsByWorkspaceName_WORKSPACE_NAME)_HTTPCaller_2_Output" OUTPUT REJECTED FEATURE_TYPE "$(JobHistoryReader_GetJobsByWorkspaceName_WORKSPACE_NAME)_HTTPCaller_2_ . " # ------------------------------------------------------------------------- FACTORY_DEF * AttrSetFactory FACTORY_NAME $ (JobHistoryReader_GetJobsByWorkspaceName_WORKSPACE_NAME) _AttributeCreator ATTRSET_CREATE_DIRECTIVES _PROPAGATE_MISSING_FDIV输入FEATURE_TYPE " $ (JobHistoryReader_GetJobsByWorkspaceName_WORKSPACE_NAME) _HTTPCaller_2_Output“ATTR_offset 0 ATTR _token 价值 _response_body 输出输出FEATURE_TYPE”(JobHistoryReader_GetJobsByWorkspaceName_WORKSPACE_NAME) _AttributeCreator_OUTPUT美元 " # ------------------------------------------------------------------------- FACTORY_DEF * AttrSetFactory FACTORY_NAME $ (JobHistoryReader_GetJobsByWorkspaceName_WORKSPACE_NAME) _AttributeCreator_2 ATTRSET_CREATE_DIRECTIVES_PROPAGATE_MISSING_FDIV INPUT FEATURE_TYPE "$(JobHistoryReader_GetJobsByWorkspaceName_WORKSPACE_NAME)_LoopHere" ATTR _offset 评估 价值 _offset + 1000 输出输出FEATURE_TYPE”(JobHistoryReader_GetJobsByWorkspaceName_WORKSPACE_NAME) _AttributeCreator_2_OUTPUT美元 " # ------------------------------------------------------------------------- FACTORY_DEF * HTTPFactory FACTORY_NAME $ (JobHistoryReader_GetJobsByWorkspaceName_WORKSPACE_NAME) FEATURE_TYPE _HTTPCaller输入“$ (JobHistoryReader_GetJobsByWorkspaceName_WORKSPACE_NAME) _AttributeCreator_OUTPUT“输入FEATURE_TYPE TARGET_URL“$ (JobHistoryReader_GetJobsByWorkspaceName_WORKSPACE_NAME) _AttributeCreator_2_OUTPUT @EvaluateExpression (FDIV STRING_ENCODED, $ ((JobHistoryReader_GetJobsByWorkspaceName_WORKSPACE_NAME) _SERVER_HOST编码美元) 以前 v3 转换 工作 完成后,美元(JobHistoryReader_GetJobsByWorkspaceName_WORKSPACE_NAME) _HTTPCaller)”Http_method get save_file no output_filename “OUTPUT_DIRECTORY” TARGET_ATTR "_response_body" FILE_PATH_ATTR " “UPLOAD_FILE” “UPLOAD_BODY” “MULTIPART_UPLOAD UPLOAD_CONTENT_TYPE” @EvaluateExpression(FDIV,STRING_ENCODED,fmetoken . txt,fmetoken . txt 令牌= 价值 _token ,$(JobHistoryReader_GetJobsByWorkspaceName_WORKSPACE_NAME)_HTTPCaller) ADDITIONAL_URL_PARAMETERS limit; 价值 _offset 美元(JobHistoryReader_GetJobsByWorkspaceName_WORKSPACE_NAME) _HTTPCaller AUTH_USERNAME” “AUTH_PASSWORD” “AUTH_METHOD” TARGET_ATTRIBUTE_ENCODING auto-detect RESPONSE_HEADER_LIST_ATTR "_headers" STATUS_CODE_ATTR "_http_status_code" ERROR_ATTR "_error" CONNECTION_TIMEOUT_LENGTH 60 TRANSFER_TIMEOUT_LENGTH 90 FOLLOW_REDIRECTS Yes VERIFY_SSL_CERTIFICATES Yes NAMED_CONNECTION " " USE_COOKIES No OUTPUT OUTPUT FEATURE_TYPE "$(JobHistoryReader_GetJobsByWorkspaceName_WORKSPACE_NAME)_HTTPCaller_Output" OUTPUT REJECTED FEATURE_TYPE "$(JobHistoryReader_GetJobsByWorkspaceName_WORKSPACE_NAME)_HTTPCaller_ . " # ------------------------------------------------------------------------- FACTORY_DEF * JSONQueryFactory FACTORY_NAME $ (JobHistoryReader_GetJobsByWorkspaceName_WORKSPACE_NAME) _JSONFragmenter输入FEATURE_TYPE " $ (JobHistoryReader_GetJobsByWorkspaceName_WORKSPACE_NAME) _HTTPCaller_Output”模式爆炸EXPLODE_FORMAT JSON EXTRACT_ATTR是的JSON_ATTR _response_body EXPLODE_QUERY "json “RECURSIVE_FLATTEN是的输出FEATURE_TYPE爆炸”(JobHistoryReader_GetJobsByWorkspaceName_WORKSPACE_NAME) _JSONFragmenter_EXPLODED美元 " # ------------------------------------------------------------------------- FACTORY_DEF * TeeFactory FACTORY_NAME $ (JobHistoryReader_GetJobsByWorkspaceName_WORKSPACE_NAME) FEATURE_TYPE _BulkAttributeRenamer输入"$(JobHistoryReader_GetJobsByWorkspaceName_WORKSPACE_NAME) _jsonfragment_explore_output "$(JobHistoryReader_GetJobsByWorkspaceName_WORKSPACE_NAME)_BulkAttributeRenamer_OUTPUT" @RenameAttributes(PATTERN_REPLACE, REMOVEPREFIX, YES, " ”、“结果。”、“ ”、“ ”、“-_") # ------------------------------------------------------------------------- FACTORY_DEF * TeeFactory FACTORY_NAME $(JobHistoryReader_GetJobsByWorkspaceName_WORKSPACE_NAME)_BulkAttributeRenamer_2 INPUT FEATURE_TYPE "$(JobHistoryReader_GetJobsByWorkspaceName_WORKSPACE_NAME)_BulkAttributeRenamer_OUTPUT" OUTPUT FEATURE_TYPE "$(JobHistoryReader_GetJobsByWorkspaceName_WORKSPACE_NAME)_BulkAttributeRenamer_2_OUTPUT" @RenameAttributes(PATTERN_REPLACE, REMOVEPREFIX, YES, " ”、“请求。”、“ ”、“ ”、“-_") # ------------------------------------------------------------------------- MACRO casemac INCLUDE [ if { {NO} == {NO} } { puts {MACRO casemac -nocase}} ] Tcl2 proc $(JobHistoryReader_GetJobsByWorkspaceName_WORKSPACE_NAME)_StringReplacer_2_3afebf6e_90d4_11e6_93a7_60030894943e11_replacer { findText replaceText invalidValue} { set attrs [split \"workspacePath\" {,}]; set findValue [FME_DecodeText $findText]; set replaceValue [FME_DecodeText $replaceText]; foreach attr $attrs { set attrVal [FME_GetAttribute $attr]; set noMatch true; if {{NO} == {YES}} { set newAttrVal [regsub $(casemac) -all -- $findValue $attrVal $replaceValue]; } else { set newAttrVal [string map $(casemac) [list $findValue $replaceValue] $attrVal]; }; if { $newAttrVal ne $attrVal } { set noMatch false; FME_SetAttribute $attr $newAttrVal; }; if {$noMatch} { if { $invalidValue == {FME_NULL_VALUE} } { FME_SetAttributeNull $attr; } elseif { $invalidValue != {_FME_NO_OP_} } { FME_SetAttribute $attr [FME_DecodeText $invalidValue]; }; }; }; } FACTORY_DEF * TeeFactory FACTORY_NAME $(JobHistoryReader_GetJobsByWorkspaceName_WORKSPACE_NAME)_StringReplacer_2 INPUT FEATURE_TYPE "$(JobHistoryReader_GetJobsByWorkspaceName_WORKSPACE_NAME)_BulkAttributeRenamer_2_OUTPUT" OUTPUT FEATURE_TYPE "$(JobHistoryReader_GetJobsByWorkspaceName_WORKSPACE_NAME)_StringReplacer_2_OUTPUT" @Tcl2("$(JobHistoryReader_GetJobsByWorkspaceName_WORKSPACE_NAME)_StringReplacer_2_3afebf6e_90d4_11e6_93a7_60030894943e11_replacer { } {} {_FME_NO_OP _}") # ------------------------------------------------------------------------- 宏casemac包括(如果{{没有}= ={没有}}{把{宏casemac查看nocase}}] Tcl2 proc美元(JobHistoryReader_GetJobsByWorkspaceName_WORKSPACE_NAME) _StringReplacer_3_3afecbd0_90d4_11e6_93a7_60030894943e11_replacer {findText replaceText invalidValue}{集attrs [split \"workspacePath\" {,}]; set findValue [FME_DecodeText $findText]; set replaceValue [FME_DecodeText $replaceText]; foreach attr $attrs { set attrVal [FME_GetAttribute $attr]; set noMatch true; if {{NO} == {YES}} { set newAttrVal [FME_ReplaceRegex $(casemac) $findValue $attrVal $replaceValue]; } else { set newAttrVal [string map $(casemac) [list $findValue $replaceValue] $attrVal]; }; if { $newAttrVal ne $attrVal } { set noMatch false; FME_SetAttribute $attr $newAttrVal; }; if {$noMatch} { if { $invalidValue == {FME_NULL_VALUE} } { FME_SetAttributeNull $attr; } elseif { $invalidValue != {_FME_NO_OP_} } { FME_SetAttribute $attr [FME_DecodeText $invalidValue]; }; }; }; } FACTORY_DEF * TeeFactory FACTORY_NAME $(JobHistoryReader_GetJobsByWorkspaceName_WORKSPACE_NAME)_StringReplacer_3 INPUT FEATURE_TYPE "$(JobHistoryReader_GetJobsByWorkspaceName_WORKSPACE_NAME)_StringReplacer_2_OUTPUT" OUTPUT FEATURE_TYPE "$(JobHistoryReader_GetJobsByWorkspaceName_WORKSPACE_NAME)_StringReplacer_3_OUTPUT" @Tcl2("$(JobHistoryReader_GetJobsByWorkspaceName_WORKSPACE_NAME)_StringReplacer_3_3afecbd0_90d4_11e6_93a7_60030894943e11_replacer { } { } {_FME_NO_OP _}") # ------------------------------------------------------------------------- FACTORY_DEF * TeeFactory FACTORY_NAME $ (JobHistoryReader_GetJobsByWorkspaceName_WORKSPACE_NAME) _FilenamePartExtractor_2输入FEATURE_TYPE FEATURE_TYPE“$ (JobHistoryReader_GetJobsByWorkspaceName_WORKSPACE_NAME) _StringReplacer_3_OUTPUT”输出“$ (JobHistoryReader_GetJobsByWorkspaceName_WORKSPACE_NAME) _FilenamePartExtractor_2_OUTPUT“@SupplyAttributes(“folderpath”,@Filenamepart(编码、目录名、“@EvaluateExpression (FDIV STRING_ENCODED, 价值 workspacePath 美元(JobHistoryReader_GetJobsByWorkspaceName_WORKSPACE_NAME) _FilenamePartExtractor_2)”))@SupplyAttributes(“WorkspaceName”,@Filenamepart(编码、文件名、“@EvaluateExpression (FDIV STRING_ENCODED, 价值 workspacePath , (JobHistoryReader_GetJobsByWorkspaceName_WORKSPACE_NAME) _FilenamePartExtractor_2美元 )")) # ------------------------------------------------------------------------- Tcl2设置$ (JobHistoryReader_GetJobsByWorkspaceName_WORKSPACE_NAME) _AttributeSplitter_3_3afede86_90d4_11e6_93a7_60030894943e11_splitDelim [FME_DecodeText { });如果{[regexp {^ ([1 - 9] [0 - 9] * s) + $}[设置(JobHistoryReader_GetJobsByWorkspaceName_WORKSPACE_NAME) _AttributeSplitter_3_3afede86_90d4_11e6_93a7_60030894943e11_splitDelim美元]]}{设置$ (JobHistoryReader_GetJobsByWorkspaceName_WORKSPACE_NAME) _AttributeSplitter_3_3afede86_90d4_11e6_93a7_60030894943e11_splitWidths[分裂[regsub -{新元}{ } {}] s];proc $(JobHistoryReader_GetJobsByWorkspaceName_WORKSPACE_NAME)_AttributeSplitter_3_doSplit {} {global $(JobHistoryReader_GetJobsByWorkspaceName_WORKSPACE_NAME)_AttributeSplitter_3_3afede86_90d4_11e6_93a7_60030894943e11_splitWidths;set source [FME_GetAttribute [FME_DecodeText {workspacePath}]];设置attrNum 0;set listName [FME_DecodeText {_path}];设置attrPos 0;设置keepEmptyParts [string = {No} {No}];foreach width [set $(JobHistoryReader_GetJobsByWorkspaceName_WORKSPACE_NAME)_AttributeSplitter_3_3afede86_90d4_11e6_93a7_60030894943e11_splitWidths]{设置endPos [expr $attrPos + $width - 1];设置位[字符串范围$source $attrPos $endPos];设置部分[字符串修剪$bit]; if { $keepEmptyParts || $part != \"\" } { FME_SetAttribute "$listName{$attrNum}" $part; incr attrNum; }; incr attrPos $width; }; }; } else { proc $(JobHistoryReader_GetJobsByWorkspaceName_WORKSPACE_NAME)_AttributeSplitter_3_doSplit {} { global $(JobHistoryReader_GetJobsByWorkspaceName_WORKSPACE_NAME)_AttributeSplitter_3_3afede86_90d4_11e6_93a7_60030894943e11_splitDelim; set delim [set $(JobHistoryReader_GetJobsByWorkspaceName_WORKSPACE_NAME)_AttributeSplitter_3_3afede86_90d4_11e6_93a7_60030894943e11_splitDelim]; set delimLength [string length $delim]; set source [FME_GetAttribute [FME_DecodeText {workspacePath}]]; set keepEmptyParts [string equal {No} {No}]; set bits {}; set startIndex 0; set nextIndex [string first $delim $source $startIndex]; while {$nextIndex >= 0} { lappend bits [string range $source $startIndex [expr $nextIndex-1]]; set startIndex [expr $nextIndex + $delimLength]; set nextIndex [string first $delim $source $startIndex]; }; lappend bits [string range $source $startIndex end]; set listName [FME_DecodeText {_path}]; set attrNum 0; foreach bit $bits { set trimmedPart [string trim $bit]; if { $keepEmptyParts || $trimmedPart != \"\" } { FME_SetAttribute "$listName{$attrNum}" $trimmedPart; incr attrNum; }; } } } FACTORY_DEF * TeeFactory FACTORY_NAME $(JobHistoryReader_GetJobsByWorkspaceName_WORKSPACE_NAME)_AttributeSplitter_3 INPUT FEATURE_TYPE "$(JobHistoryReader_GetJobsByWorkspaceName_WORKSPACE_NAME)_FilenamePartExtractor_2_OUTPUT" OUTPUT FEATURE_TYPE "$(JobHistoryReader_GetJobsByWorkspaceName_WORKSPACE_NAME)_AttributeSplitter_3_OUTPUT" @Tcl2($(JobHistoryReader_GetJobsByWorkspaceName_WORKSPACE_NAME)_AttributeSplitter_3_doSplit) # ------------------------------------------------------------------------- FACTORY_DEF * AttrSetFactory FACTORY_NAME $(JobHistoryReader_GetJobsByWorkspaceName_WORKSPACE_NAME)_AttributeCreator_6 ATTRSET_CREATE_DIRECTIVES _PROPAGATE_MISSING_FDIV INPUT FEATURE_TYPE "$(JobHistoryReader_GetJobsByWorkspaceName_WORKSPACE_NAME)_AttributeSplitter_3_OUTPUT" ATTR WorkspaceName 价值 _path 2 ATTR库 价值 _path 0 ATTR工作 价值 状态 输出输出FEATURE_TYPE”(JobHistoryReader_GetJobsByWorkspaceName_WORKSPACE_NAME) _AttributeCreator_6_OUTPUT美元 " # ------------------------------------------------------------------------- FACTORY_DEF * TestFactory FACTORY_NAME $ (JobHistoryReader_GetJobsByWorkspaceName_WORKSPACE_NAME) FEATURE_TYPE _Tester输入“$ (JobHistoryReader_GetJobsByWorkspaceName_WORKSPACE_NAME) _AttributeCreator_6_OUTPUT“测试@EvaluateExpression (FDIV STRING_ENCODED, ((JobHistoryReader_GetJobsByWorkspaceName_WORKSPACE_NAME) _WorkspaceName)美元美元,美元(JobHistoryReader_GetJobsByWorkspaceName_WORKSPACE_NAME) _Tester)包含@EvaluateExpression (FDIV STRING_ENCODED, 价值 WorkspaceName ,$(JobHistoryReader_GetJobsByWorkspaceName_WORKSPACE_NAME)_Tester) ENCODED boolean operator OR OUTPUT PASSED FEATURE_TYPE "$(JobHistoryReader_GetJobsByWorkspaceName_WORKSPACE_NAME)_Tester PASSED" FACTORY_DEF * tefactory FACTORY_NAME "$(JobHistoryReader_GetJobsByWorkspaceName_WORKSPACE_NAME)_Tester PASSED Splitter" INPUT FEATURE_TYPE"$(JobHistoryReader_GetJobsByWorkspaceName_WORKSPACE_NAME) _test_passed " OUTPUT FEATURE_TYPE "$(JobHistoryReader_GetJobsByWorkspaceName_WORKSPACE_NAME) _test_passsed_0_5pmzt4yz9ia ="输出FEATURE_TYPE "$(JobHistoryReader_GetJobsByWorkspaceName_WORKSPACE_NAME) _test_passsed_1_qhpks0 /dZiY=" #------------------------------------------------------------------------- 包括[macroLine“宏(JobHistoryReader_GetJobsByWorkspaceName_WORKSPACE_NAME) _AttributeRemover_LIST_EXP美元”;/ /分页 _headers . name _headers .value"] {set attr [FME_DecodeText $attr];设置attr [regsub "{}$" $attr "{}.*"];设置attr (regsub——“{}”美元attr”\ \ {\ [0 - 9 \]+ \ \}");附加macroLine”^ attr美元”;};把macroLine美元;[FACTORY_DEF * tefactory FACTORY_NAME $(JobHistoryReader_GetJobsByWorkspaceName_WORKSPACE_NAME)_AttributeRemover INPUT FEATURE_TYPE "$(JobHistoryReader_GetJobsByWorkspaceName_WORKSPACE_NAME) _test_passsed_0_5pmzt4yz9ia ="输出FEATURE_TYPE "$(JobHistoryReader_GetJobsByWorkspaceName_WORKSPACE_NAME)_AttributeRemover_OUTPUT"@RemoveAttributes (fme_encoded、json_index _response_body、_min_job_age _http_status_code, _token, json_type, engineName, id, _offset) @RemoveAttributes (fme_pcre_match“$(美元_AttributeRemover_LIST_EXP (JobHistoryReader_GetJobsByWorkspaceName_WORKSPACE_NAME) )") # ------------------------------------------------------------------------- 包括(将“宏REAL_RATE [expr 1000 * 1]] FACTORY_DEF * SamplingFactory FACTORY_NAME美元(JobHistoryReader_GetJobsByWorkspaceName_WORKSPACE_NAME) _Sampler SAMPLE_RATE美元(REAL_RATE)输入FEATURE_TYPE”(JobHistoryReader_GetJobsByWorkspaceName_WORKSPACE_NAME)美元_Tester_PASSED_1_qHpks0 / dZiY = "输出采样FEATURE_TYPE ___SAMPLED___ #这TeeFactory是必要的因为如果Sampler没有指定output子句,它仍然输出特性。 # This way we behave nicely even if there are no output connections on the transformer. See PR#28886. FACTORY_DEF * TeeFactory FACTORY_NAME $(JobHistoryReader_GetJobsByWorkspaceName_WORKSPACE_NAME)_Sampler_Sampled INPUT FEATURE_TYPE ___SAMPLED___ OUTPUT FEATURE_TYPE "$(JobHistoryReader_GetJobsByWorkspaceName_WORKSPACE_NAME)_Sampler_SAMPLED" # ------------------------------------------------------------------------- INCLUDE [ set macroLine "MACRO $(JobHistoryReader_GetJobsByWorkspaceName_WORKSPACE_NAME)_AttributeKeeper_3aff035c_90d4_11e6_93a7_60030894943e11_LIST_EXP "; foreach attr [split ""] { set attr [FME_DecodeText $attr]; set attr [regsub "{}$" $attr "{}.*"]; set attr [regsub -all "{}" $attr "\\{\[0-9\]+\\}"]; append macroLine ",^$attr$"; }; puts $macroLine; ] FACTORY_DEF * TeeFactory FACTORY_NAME $(JobHistoryReader_GetJobsByWorkspaceName_WORKSPACE_NAME)_AttributeKeeper INPUT FEATURE_TYPE "$(JobHistoryReader_GetJobsByWorkspaceName_WORKSPACE_NAME)_Sampler_SAMPLED" OUTPUT FEATURE_TYPE "$(JobHistoryReader_GetJobsByWorkspaceName_WORKSPACE_NAME)_AttributeKeeper_OUTPUT" @KeepAttributes(fme_encoded,_offset,_token,_min_job_age,fme_pcre_match,"^fme_$($(JobHistoryReader_GetJobsByWorkspaceName_WORKSPACE_NAME)_AttributeKeeper_3aff035c_90d4_11e6_93a7_60030894943e11_LIST_EXP)") FACTORY_DEF * BranchingFactory TARGET_FACTORY "$(JobHistoryReader_GetJobsByWorkspaceName_WORKSPACE_NAME)_LoopHere1476316402 Input Splitter" FACTORY_NAME "Loop to $(JobHistoryReader_GetJobsByWorkspaceName_WORKSPACE_NAME)_LoopHere1476316402 Input Splitter" MAXIMUM_COUNT -1 INPUT FEATURE_TYPE "$(JobHistoryReader_GetJobsByWorkspaceName_WORKSPACE_NAME)_AttributeKeeper_OUTPUT" OUTPUT PASSED FEATURE_TYPE "$(JobHistoryReader_GetJobsByWorkspaceName_WORKSPACE_NAME)_LoopHere" FACTORY_DEF * TeeFactory FACTORY_NAME "$(JobHistoryReader_GetJobsByWorkspaceName_WORKSPACE_NAME)_ 1476316402输出收集器" INPUT FEATURE_TYPE "$(JobHistoryReader_GetJobsByWorkspaceName_WORKSPACE_NAME)_HTTPCaller_ " INPUT FEATURE_TYPE "$(JobHistoryReader_GetJobsByWorkspaceName_WORKSPACE_NAME)_HTTPCaller_2_ " OUTPUT FEATURE_TYPE "$(JobHistoryReader_GetJobsByWorkspaceName_WORKSPACE_NAME)_ " FACTORY_DEF * TeeFactory FACTORY_NAME "$(JobHistoryReader_GetJobsByWorkspaceName_WORKSPACE_NAME)_Output1476316402输出Collector" INPUT FEATURE_TYPE "$(JobHistoryReader_GetJobsByWorkspaceName_WORKSPACE_NAME)_AttributeRemover_OUTPUT" Output FEATURE_TYPE "$(JobHistoryReader_GetJobsByWorkspaceName_WORKSPACE_NAME)_Output"@RemoveAttributes(workspacePath,folderpath) @RemoveAttributes(fme_regexp_match,_path{}) INCLUDE [puts {MACRO WB_CURRENT_CONTEXT $(WB_OLD_CONTEXT_$(JobHistoryReader_GetJobsByWorkspaceName_WORKSPACE_NAME)}JobHistoryReader_GetJobsByWorkspaceName_Output OUTPUT FEATURE_TYPE JobHistoryReader_GetJobsByWorkspaceName_Output FACTORY_DEF * TeeFactory FACTORY_NAME "JobHistoryReader_GetJobsByWorkspaceName . 输出Renamer/Nuker" INPUT FEATURE_TYPE JobHistoryReader_GetJobsByWorkspaceName_ 输出FEATURE_TYPE JobHistoryReader_GetJobsByWorkspaceName_ # ------------------------------------------------------------------------- # 默认行为是中止任何特性进入变压器。#如果Workbench将_wb_bypass_terminate宏设置为“Yes”值,那么特性将被传递为特性类型# __WB_BYPASS_TERMINATOR__, Workbench将发送给可视化器或# some之类的。DEFAULT_MACRO _wb_bypass_terminate No FACTORY_DEF * TestFactory FACTORY_NAME Terminator INPUT FEATURE_TYPE JobHistoryReader_GetJobsByWorkspaceName_ . DEFAULT_MACRO _wb_bypass_terminate No FACTORY_DEF * TestFactory FACTORY_NAME Terminator INPUT FEATURE_TYPE JobHistoryReader_GetJobsByWorkspaceName_ . DEFAULT_MACRO _wb_bypass_terminate No 测试" $ (_WB_BYPASS_TERMINATION) "== Yes OUTPUT PASSED FEATURE_TYPE __WB_BYPASS_TERMINATOR__ @SupplyAttributes(_wb_termination_feature_type,@FeatureType()) @SupplyAttributes(ENCODED,_wb_termination_message,"@EvaluateExpression(FDIV,STRING_ENCODED,Translation . 终止: 在那里 一个 错误 得到 工作 历史。 错误 信息: 价值 _error @SupplyAttributes(_wb_termination_xformer,"Terminator") @SupplyAttributes(_wb_termination_feature,Yes) OUTPUT FAILED FEATURE_TYPE * @Abort(ENCODED,"@EvaluateExpression(FDIV,STRING_ENCODED,Translation . " 终止: 在那里 一个 错误 得到 工作 历史。 错误 信息: 价值 _error ,《终结者》 )") # ------------------------------------------------------------------------- # 设置指令所有通过meta属性添加到功能。#我们这样做是为了让用户看到所有可能的信息在查看#功能。READER_META_ATTRIBUTES fme_feature_type fme_dataset fme_basename #假设已经设置并创建了工作区临时目录。参见ControlDefs .cpp - ControlDefs::writeVisualizerTempDir DEFAULT_MACRO WORKSPACE_TEMP_DIR INCLUDE [set grpByAttrs {};如果{[string length $grpByAttrs] > 0} {if {[string first "@EvaluateExpression" $grpByAttrs] == 0} {puts "MACRO CATMAC _$grpByAttrs";} else {set catter "";设置逗号“”;foreach attr $grpByAttrs {set catter "$catter$comma@Value(\"$attr\")";设置逗号“,_,”; } ; puts "MACRO CATMAC _@Concatenate($catter)" ; } } else { puts "MACRO CATMAC " ; }; set safeName "[regsub -all {[^a-zA-Z0-9]} {JobHistoryReader_Output} _]_[expr round(rand() * 1000000)]_[clock clicks -milliseconds]"; puts "MACRO SAFE_FFS_NAME $safeName"; ] # Make the temporary directory that the FFS files will live in. FACTORY_DEF * CreationFactory FACTORY_NAME JobHistoryReader_Output_DirCreator OUTPUT FEATURE_TYPE __nukeme__ @Tcl2("catch {file mkdir {$(WORKSPACE_TEMP_DIR)}}") FACTORY_DEF * TeeFactory FACTORY_NAME JobHistoryReader_Output_DirCreatorCleanerUpper INPUT FEATURE_TYPE __nukeme__ # Send raster, point cloud and vector features down different paths to prepare # them for viewing FACTORY_DEF * TestFactory FACTORY_NAME JobHistoryReader_Output_FeatureDirector INPUT FEATURE_TYPE JobHistoryReader_GetJobsByWorkspaceName_Output TEST &fme_type == "fme_raster" OUTPUT FAILED FEATURE_TYPE JobHistoryReader_Output___NotRasterFeatures___ OUTPUT PASSED FEATURE_TYPE JobHistoryReader_Output___RasterFeatures___ FACTORY_DEF * TestFactory FACTORY_NAME JobHistoryReader_Output___FeatureDirector1 INPUT FEATURE_TYPE JobHistoryReader_Output___NotRasterFeatures___ TEST &fme_type == "fme_point_cloud" OUTPUT FAILED FEATURE_TYPE JobHistoryReader_Output___VectorFeatures___ OUTPUT PASSED FEATURE_TYPE JobHistoryReader_Output___PointCloudFeatures___ # Vector features simply may get their colors overridden FACTORY_DEF * TeeFactory FACTORY_NAME JobHistoryReader_Output_VectorSetterUpper INPUT FEATURE_TYPE JobHistoryReader_Output___VectorFeatures___ OUTPUT FEATURE_TYPE __viewme__ # Point Cloud Features Might Need to be thinned # Note that we don't call the ThinPointCloud function directly, but rather # do it through TCL. This should allow this transformer to be used with a # Desktop license, even though ThinPointCloud requires Professional. Tcl2 proc JobHistoryReader_Output_62028fd2_90d4_11e6_93a7_60030894943e10_thinPointCloud {} { if {[string equal {NO_THINNING} {KEEPNPOINT}]} { FME_Execute ThinPointCloud NO_THINNING "\" \ ";} elseif {[string equal {no_thin} {MAXNUMPOINTS}]} {FME_Execute ThinPointCloud no_thin "\" \ ";} elseif {[string equal {no_thin} {FIRSTNPOINTS}]} {FME_Execute ThinPointCloud no_thin "\" \ ";} elseif {[string equal {no_thin} {LASTNPOINTS}]} {FME_Execute ThinPointCloud no_thin "\" \ ";};} FACTORY_DEF * TeeFactory FACTORY_NAME jobhistoryreader_output__pointcloudthinner INPUT FEATURE_TYPE jobhistoryreader_output__pointcloudfeatures___ OUTPUT FEATURE_TYPE __viewme__ @Tcl2("JobHistoryReader_Output_62028fd2_90d4_11e6_93a7_60030894943e10_thinPointCloud") Tcl2 procjobhistoryreader_output_62028fd2_90d4_11e6_93a7_60030894943e10_prepareeraster {subsetStartRow subsetNumRows subsetStartCol subsetNumCols} {set useDI [string equal -nocase {$(FME_VIEWER_APP)} {fmedatainspector}];如果{!$useDI} {FME_Execute ApplyRasterRotation BILINEAR;};设置doResample [string equal {NoReduction} {Resample}];set doSubset [string equal {NoReduction} {Subset}]; / /设置一个子集设置doBounds [string equal {NoReduction} {BoundingBoxOnly}]; if {$doBounds} { FME_Execute GeometryType fme_polygon; } elseif {$doResample || $doSubset} { set comment { First, we need to prefix all the attributes. This is done because we are going to call @RasterProperties, and we want to make sure it doesn't overwrite any existing attributes. }; set kAttrPrefix "."; set allNames [FME_AttributeNames]; foreach oldName $allNames { set newName $kAttrPrefix; append newName $oldName; FME_RenameAttribute $newName $oldName; }; FME_Execute RasterProperties RASTER; if {$doResample} { set oldNumCols [FME_GetAttribute _num_columns]; set oldNumRows [FME_GetAttribute _num_rows]; set oldSpacingX [FME_GetAttribute _spacing_x]; set oldSpacingY [FME_GetAttribute _spacing_y]; set kMinNumCells 32; set kMaxNumCells 512; set comment { We will only resample if both dimensions are greater than the minimum num cells, and at least one is greater than the maximum. }; if {$oldNumRows > $kMinNumCells && $oldNumCols > $kMinNumCells && ($oldNumRows > $kMaxNumCells || $oldNumCols > $kMaxNumCells)} { set newSpacingX 1.0; set newSpacingY 1.0; if {$oldNumRows > $oldNumCols} { set comment { If we have more rows than columns, we need to choose a spacing that reduces the number of rows to the maximum we've chosen. }; set newSpacingY [expr 1.0 * $oldNumRows * $oldSpacingY / $kMaxNumCells]; set newSpacingX [expr 1.0 * $newSpacingY / $oldSpacingY * $oldSpacingX]; set comment { Now we need to check if doing this will result in the columns going below the minimum. If so, choose the spacing such that we only go down to the minimum (and not past). }; set newNumCols [expr $oldNumCols * $oldSpacingX / $newSpacingX]; if {$newNumCols < $kMinNumCells} { set newSpacingX [expr 1.0 * $oldNumCols * $oldSpacingX / $kMinNumCells]; set newSpacingY [expr 1.0 * $newSpacingX / $oldSpacingX * $oldSpacingY]; }; } else { set comment { This is identical to the above case, except the roles of rows and cols are reversed. }; set newSpacingX [expr 1.0 * $oldNumCols * $oldSpacingX / $kMaxNumCells]; set newSpacingY [expr 1.0 * $newSpacingX / $oldSpacingX * $oldSpacingY]; set newNumRows [expr $oldNumRows * $oldSpacingY / $newSpacingY]; if {$newNumRows < $kMinNumCells} { set newSpacingY [expr 1.0 * $oldNumRows * $oldSpacingY / $kMinNumCells]; set newSpacingX [expr 1.0 * $newSpacingY / $oldSpacingY * $oldSpacingX]; }; }; FME_Execute ResampleRaster CELL_SIZE $newSpacingX $newSpacingY NearestNeighbor; }; } elseif {$doSubset} { set comment { Get the value of some strings that may be attributes or constants. Note that we pass in the attribute prefix we're using, because if one does turn out to be an attribute, it won't actually be the exact name in the string (since we renamed all our attributes above). }; set rasterNumRows [FME_GetAttribute _num_rows]; set rasterNumCols [FME_GetAttribute _num_columns]; set comment { Only do subsetting if the specified start position is actually within the raster. }; if {$subsetStartRow < $rasterNumRows && $subsetStartCol < $rasterNumCols} { set comment { Now bound the subset to the size of the raster, so that we don't create padding. }; if {[expr $subsetStartRow + $subsetNumRows] > $rasterNumRows} { set subsetNumRows [expr $rasterNumRows - $subsetStartRow]; }; if {[expr $subsetStartCol + $subsetNumCols] > $rasterNumCols} { set subsetNumCols [expr $rasterNumCols - $subsetStartCol]; }; FME_Execute SubsetRaster $subsetStartRow $subsetNumRows $subsetStartCol $subsetNumCols; }; }; set comment { Remove all the attributes added by @RasterProperties and remove the prefix from the real attributes. We assume they all start with an underscore. }; FME_Execute RemoveAttributes fme_regexp_match {^_}; foreach oldName $allNames { set newName $kAttrPrefix; append newName $oldName; FME_RenameAttribute $oldName $newName; }; }; } FACTORY_DEF * TeeFactory FACTORY_NAME JobHistoryReader_Output_RasterSetterUpper INPUT FEATURE_TYPE JobHistoryReader_Output___RasterFeatures___ OUTPUT FEATURE_TYPE __viewme__ @Tcl2("JobHistoryReader_Output_62028fd2_90d4_11e6_93a7_60030894943e10_prepareRaster { } { } { } { # JobHistoryReader_Output_62028fd2_90d4_11e6_93a7_60030894943e10_VIS_FEAT_TYPE更改正在可视化的特性的特性类型#。DEFAULT_MACRO JobHistoryReader_Output_62028fd2_90d4_11e6_93a7_60030894943e10_VIS_FEAT_TYPE JobHistoryReader_Output$(CATMAC) DEFAULT_MACRO VISUALIZER_FEATURE_FILE $(WORKSPACE_TEMP_DIR)/$(亚搏在线SAFE_FFS_NAME)。数据检查器将限制它在WIN32上读取的最大特性数量,因此我们将相应地限制使用MAX_FEATURES_TO_RECORD指令记录的#特性数量。FACTORY_DEF * RecorderFactory FACTORY_NAME JobHistoryReader_Output_Recorder INPUT FEATURE_TYPE __viewme__ _wb_termination_feature Yes @FeatureType(TERMINATOR_@Value(_wb_termination_xformer)) INPUT FEATURE_TYPE __viewme__ @FeatureType($(JobHistoryReader_Output_62028fd2_90d4_11e6_93a7_60030894943e10_VIS_FEAT_TYPE) FEATURE_FILE" $ (VISUALIZER_FEATURE_FILE) "CREATE_SPATIAL_INDEX " $ (VISUALIZER_CREATE_SPATIAL_INDEX) "检查员" $ (VISUALIZER_CREATE_SPATIAL_INDEX) "FSC_SCHEMA timeFinished、varchar 255 、timeStarted varchar 255 、地位、varchar 255 、statusMessage varchar 255 、timeQueued varchar 255 、timeDelivered varchar 255 、timeSubmitted varchar 255 、描述、varchar 255 、numFeaturesOutput varchar 255 、WorkspaceName varchar 255 库,varchar 255 、工作、varchar 255 MODE RECORD RECORD_DIRECTLY_TO_DISK YES MAX_FEATURES_TO_RECORD WIN32 2000000 # ------------------------------------------------------------------------- FACTORY_DEF * RoutingFactory FACTORY_NAME "目的特性类型路由相关器" COMMAND_PARM_EVALUATION SINGLE_PASS INPUT FEATURE_TYPE * ROUTE FME_GENERIC __WB_BYPASS_TERMINATOR__ Tcl2 FME_StatMessage 818062 价值 _wb_termination_message 价值 _wb_termination_xformer 818063 TO FME_GENERIC __WB_BYPASS_TERMINATOR__ __wb_out_feat_type__,__WB_BYPASS_TERMINATOR__ GEOMETRY FEATURE_TYPE_ATTRIBUTE __wb_out_feat_type__输出路由FEATURE_TYPE *输出not_路由FEATURE_TYPE __nuke_me__ @Tcl2("FME_StatMessage 818059 [FME_GetAttribute fme_template_feature_type] 818060 818061 fme_warn") # . # fme_type_type __wb_type_type __wb_type_type * OUTPUT not_路由FEATURE_TYPE __nuke_me__ @Tcl2("FME_StatMessage 818059 [FME_GetAttribute fme_template_feature_type] 818060 818061 fme_warn") #------------------------------------------------------------------------- FACTORY_DEF * TeeFactory FACTORY_NAME“最终输出核武器”输入FEATURE_TYPE __nuke_me __ # ------------------------------------------------------------------------- FACTORY_DEF * CreationFactory CREATE_AT_END输出FEATURE_TYPE __NUKEME__ @TCL(“如果[文件存在{$(WORKSPACE_TEMP_DIR)}]{设置文件[glob -nocomplain -directory {$(WORKSPACE_TEMP_DIR)} -tails *.ffs];如果{[llength $files] == 1} {set theFile {$(WORKSPACE_TEMP_DIR)/};添加文件[lindex $files 0];eval FME_Execute System \173\042$(FME_HOME_UNIX)/fmedatainspector\042——visualizer——single-application——delete-on-close——no-source-prompt -f FFS $theFile & \175;} else {[llength $files] == 0} {catch {file delete -force {$(WORKSPACE_TEMP_DIR)}};} else {set filesNoExt {};设置lastfile {};foreach {fileName} [lsort $files] {set fileNoExt [string trimright $fileName {.ffs}]; if [regexp {(.*)_[0-9]*$} $fileNoExt wholething fileNoExtBase] { if { $fileNoExtBase == $lastfile } { continue } }; set lastfile $fileNoExt; lappend filesNoExt $fileNoExt }; eval FME_Execute System \173\042$(FME_HOME_UNIX)/fmedatainspector\042 --visualizer --single-application --delete-on-close --no-source-prompt -d {$(WORKSPACE_TEMP_DIR)} -a ffs -f FFS $filesNoExt & \175; }; }; ") FACTORY_DEF * TeeFactory INPUT FEATURE_TYPE __NUKEME__