#!#!bla

" destination="NONE" destination_routing_file="" doc_extents="1802 966" doc_top_left="82 -1032" end_python="" end_tcl="" explicit_bookmark_order="false" fme_build_num="18531" fme_document_guid="0880eb08-c5f3-44f1-a1dc-988909505b91" fme_document_priorguid="6c616562-a8cc-11e4-ba28-60030894943e,904237c5-99d8-406b-aee6-7bce45f3bc04" fme_geometry_handling="Enhanced" fme_implicit_csmap_reprojection_mode="Auto" fme_reprojection_engine="FME" fme_server_services="" fme_stroke_max_deviation="0" history="" ignore_reader_failure="No" last_save_build="FME(R) 2018.1.0.2 (20180802 - Build 18531 - macosx)" last_save_date="2018-12-05T10:46:37" log_file="" log_max_recorded_features="200" markdown_description="" markdown_usage="" max_log_features="200" multi_writer_dataset_order="BY_ID" password="" python_compatibility="27" redirect_terminators="NONE" show_annotations="true" show_info_nodes="true" source="NONE" source_routing_file="" terminate_rejected="NO" title="" usage="" use_markdown="NO" view_position="-267.003 -195.002" warn_invalid_xform_param="Yes" workspace_version="1" zoom_scale="100"> #! #!#! #!#! #!#! #!#! #!#! #!#! #!#!

Notifies the FME Server with the
generated JSON. Remember to set your
server URL and password here.

" POSITION="1884 -146" TOP_LEFT="1884 -146" BOTTOM_RIGHT="1884 -146" BOUNDING_RECT="1884 -146 0 0" ORDER="6" FOLLOW_ANCHOR="true" INFO_NODE="false" COLOUR="1,1,0.78431372549019607,1" SIZE_POLICY="8" ANCHORED_NODE="9">
#!

send_test_email.fmw
2015, Safe Software


Updated for 2018.1

Sends a simple test email from FME Server
using the FMEServerNotifier.

" POSITION="82 -1032" TOP_LEFT="82 -1032" BOTTOM_RIGHT="82 -1032" BOUNDING_RECT="82 -1032 0 0" ORDER="7" FOLLOW_ANCHOR="true" INFO_NODE="false" COLOUR="1,1,0.78431372549019607,1" SIZE_POLICY="10" ANCHORED_NODE="0">
#!
#! #!#! #!#! #! #!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#! #!#!#!#!#!#!#!#!#!#!#!#!#!#!#! #!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#! #!#!#!#! #!#! #!#! #!This transformer provides an easy method for creating an email message to be sent by the FME Server Notification Service.

" doc_dynamic_input_attrs="1" doc_extents="3985 1128" doc_top_left="38 -1194" fme_document_guid="411718c1-7b1a-4e88-8025-b4ff8df36d1a" fme_document_priorguid="" fme_process_count="NO_PARALLELISM" fme_process_groups_ordered="No" fme_process_group_by="" fmx_attribute_propogation_mode="AUTO" guid="411718c1-7b1a-4e88-8025-b4ff8df36d1a" history="21-03-2013,AaronKoning,Created" is_visible="false" last_save_build="" last_save_date="" markdown_description="" markdown_usage="" python_compatibility="" suppress_upgrade="false" title="FMEServerEmailGenerator" usage="

1. Create Topic and Email Subscriber


In the FME Server Web Interface, create a topic for notifications to be sent to and also create a email subscriber that subscribes to this topic.


2. Create a Workspace


Once you file out the the email fields in the transformer you can send the email message in two different ways:


A. Send an email when the workspace completes

  • add a text file writer to the workspace
  • connect this transformer to the text file writer's feature type
  • publish the workspace
  • register it with the Job Submitter, Data Download and/or Notification Service
  • for each service, click the edit button
  • for Topics to Publish (Success), select the topic you created earlier
  • for Notification Writer, select the text file writer you added eariler
  • finish publishing the workspace
  • now the workspace will send an email whenever it is run through the FME Server Service you registered it with.


B. Send an email using a transformer

  • add a FMEServerNotifier transformer to your workflow
  • configure it to publish to the topic that you created earlier
  • for Content, select the text_line_data attribute
  • now the workspace will send an email whenever it is run.
" use_markdown="NO" view_position="0 0" xform_deprecated="No" zoom_scale="100"> #! #!#!#!#!#!#!#!#!#! #!#! #!#! #! #!#!#! #! #!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#! #!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#! #!#!#!#!#!#!#!#!#!#!#!#!#!#! #!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#! #!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#! #!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#! #!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#! #!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#! #!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#! #!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#! #!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#! #! #!#! #!#!#! #!#!#!#!#!#!#!#!#!#!#!#!#!#!#! #!#! #!#!
#!
#! #!#!
FME_PYTHON_VERSION 27 # !START_HEADER # !START_WB_HEADER READER_TYPE MULTI_READER 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)send_test_email.log" LOG_APPEND NO LOG_TIMINGS YES LOG_FILTER_MASK -1 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 # ------------------------------------------------------------------------- MULTI_READER_CONTINUE_ON_READER_FAILURE No # ------------------------------------------------------------------------- MACRO WORKSPACE_NAME send_test_email MACRO FME_VIEWER_APP fmedatainspector 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 *} } ] INCLUDE [ if { {Geometry Object} == {2D Coordinate List} } { puts {MACRO Creator_2D3D 2D_GEOMETRY}; puts {MACRO Creator_CLASSIC *} } ] INCLUDE [ if { {Geometry Object} == {3D Coordinate List} } { puts {MACRO Creator_2D3D 3D_GEOMETRY}; puts {MACRO Creator_CLASSIC *} } ] INCLUDE [ if { {Geometry Object} == {2D Min/Max Box} } { set comment { We need to turn the COORDS which are minX minY maxX maxY into a full polygon list of coordinates }; set splitCoords [split [string trim { }]];if {[llength $ splitcoords]> 4} {set trimmedcoords {};foreach项目$ splastcoords {如果{$项目!= {}} {lappend trimmedcoords $ Item}};设置splitcoords $ trimmedcoords;};if {[llength $ splitcoords]!= 4} {错误{creator:坐标列表预计将是四个数字的空间分隔列表,为“minx miny maxx maxy” - ` ' is invalid}; }; set minX [lindex $splitCoords 0]; set minY [lindex $splitCoords 1]; set maxX [lindex $splitCoords 2]; set maxY [lindex $splitCoords 3]; puts "MACRO Creator_COORDS $minX $minY $minX $maxY $maxX $maxY $maxX $minY $minX $minY"; puts {MACRO Creator_2D3D 2D_GEOMETRY}; puts {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. standalone= geometry 尺寸= 2 空值 geometry (美元)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_Cloner INPUT FEATURE_TYPE _____CREATED______ @Tcl2(Creator_CoordSysRemover) @CoordSys() NUMBER_OF_COPIES 1 COPY_NUMBER_ATTRIBUTE "_creation_instance" OUTPUT FEATURE_TYPE Creator_CREATED fme_feature_type Creator FACTORY_DEF * BranchingFactory FACTORY_NAME "Creator_CREATED Brancher -1 3" INPUT FEATURE_TYPE Creator_CREATED TARGET_FACTORY "$(WB_CURRENT_CONTEXT)_CREATOR_BRANCH_TARGET" MAXIMUM_COUNT None OUTPUT PASSED FEATURE_TYPE * # ------------------------------------------------------------------------- FACTORY_DEF * TeeFactory FACTORY_NAME "$(WB_CURRENT_CONTEXT)_CREATOR_BRANCH_TARGET" INPUT FEATURE_TYPE * OUTPUT FEATURE_TYPE * # ------------------------------------------------------------------------- FACTORY_DEF * TeeFactory FACTORY_NAME "FMEServerEmailGenerator INPUT Input Collector" INPUT FEATURE_TYPE Creator_CREATED OUTPUT FEATURE_TYPE FMEServerEmailGenerator_INPUT MACRO FMEServerEmailGenerator_WORKSPACE_NAME FMEServerEmailGenerator MACRO $(FMEServerEmailGenerator_WORKSPACE_NAME)_XFORMER_NAME FMEServerEmailGenerator MACRO $(FMEServerEmailGenerator_WORKSPACE_NAME)_TRANSFORMER_GROUP MACRO $(FMEServerEmailGenerator_WORKSPACE_NAME)___COMPOUND_PARAMETERS MACRO $(FMEServerEmailGenerator_WORKSPACE_NAME)_SUB_DOC_NAME FMEServerEmailGenerator MACRO $(FMEServerEmailGenerator_WORKSPACE_NAME)_email_to foo bar.com MACRO $(FMEServerEmailGenerator_WORKSPACE_NAME)_email_cc MACRO $(FMEServerEmailGenerator_WORKSPACE_NAME)_email_from foo@baz.com MACRO $(FMEServerEmailGenerator_WORKSPACE_NAME)_email_replyto MACRO $(FMEServerEmailGenerator_WORKSPACE_NAME)_email_subject Test Email MACRO $(FMEServerEmailGenerator_WORKSPACE_NAME)_email_subscriber_content Hi 你的 FME Server MACRO $(FMEServerEmailGenerator_WORKSPACE_NAME)_email_attachment_paths DEFAULT_MACRO FMEServerEmailGenerator_WORKSPACE_NAME "" INCLUDE [puts {MACRO WB_OLD_CONTEXT_$(FMEServerEmailGenerator_WORKSPACE_NAME) $(WB_CURRENT_CONTEXT)}; puts {MACRO WB_CURRENT_CONTEXT $(FMEServerEmailGenerator_WORKSPACE_NAME)}] FACTORY_DEF * TeeFactory FACTORY_NAME "$(FMEServerEmailGenerator_WORKSPACE_NAME)_INPUT1544035597 Input Splitter" INPUT FEATURE_TYPE "$(FMEServerEmailGenerator_WORKSPACE_NAME)_INPUT" OUTPUT FEATURE_TYPE "$(FMEServerEmailGenerator_WORKSPACE_NAME)_INPUT" # ------------------------------------------------------------------------- # Create the DomainName that this transformer will use. # Because @Count itself will evalute the expression to calculate the # domain, we don't need to do anything in Tcl per feature going by INCLUDE [ set domainPrefix {}; if { {Local} == {Local} } { set domainPrefix [FME_EncodeText {$(FMEServerEmailGenerator_WORKSPACE_NAME)_Counter_}]; }; puts "MACRO $(FMEServerEmailGenerator_WORKSPACE_NAME)_Counter_FULL_DOMAIN ${domainPrefix}counter"; ] FACTORY_DEF * ExecuteFunctionFactory FACTORY_NAME $(FMEServerEmailGenerator_WORKSPACE_NAME)_Counter_Rejector COMMAND_PARM_EVALUATION SINGLE_PASS INPUT FEATURE_TYPE "$(FMEServerEmailGenerator_WORKSPACE_NAME)_INPUT" FUNCTION_DEFINITION @Count(REJECTABLE_WITH_FLAG,fme_encoded,$($(FMEServerEmailGenerator_WORKSPACE_NAME)_Counter_FULL_DOMAIN),"0") RESULT_ATTRIBUTE "_email_feature_id" OUTPUT COMPLETE FEATURE_TYPE "$(FMEServerEmailGenerator_WORKSPACE_NAME)_Counter_OUTPUT" OUTPUT REJECTED FEATURE_TYPE "$(FMEServerEmailGenerator_WORKSPACE_NAME)_Counter_ " FACTORY_DEF * TeeFactory FACTORY_NAME "$(FMEServerEmailGenerator_WORKSPACE_NAME)_Counter Transformer Output Nuker" INPUT FEATURE_TYPE "$(FMEServerEmailGenerator_WORKSPACE_NAME)_Counter_ " # ------------------------------------------------------------------------- Tcl2 proc $(FMEServerEmailGenerator_WORKSPACE_NAME)_ParameterFetcher_doFetch {} { foreach {name val} {"_email_from {$($(FMEServerEmailGenerator_WORKSPACE_NAME)_email_from$encode)} _email_replyto {$($(FMEServerEmailGenerator_WORKSPACE_NAME)_email_replyto)} _email_attachment_paths {$($(FMEServerEmailGenerator_WORKSPACE_NAME)_email_attachment_paths)} _email_cc {$($(FMEServerEmailGenerator_WORKSPACE_NAME)_email_cc)}"} { if { [string match {* *} $ val) = = 1}{设置val [FME_Execute EvaluateExpression {STRING} $val {$(FMEServerEmailGenerator_WORKSPACE_NAME)_ParameterFetcher}]; } elseif {[string match {*FME_CONDITIONAL*} $val] == 1} { set val [FME_Execute EvaluateExpression {STRING} $val {$(FMEServerEmailGenerator_WORKSPACE_NAME)_ParameterFetcher}]; } else { set val [FME_DecodeTextOrAttr $val]; }; FME_SetAttribute [FME_DecodeText $name] $val } } FACTORY_DEF * TeeFactory FACTORY_NAME $(FMEServerEmailGenerator_WORKSPACE_NAME)_ParameterFetcher INPUT FEATURE_TYPE "$(FMEServerEmailGenerator_WORKSPACE_NAME)_Counter_OUTPUT" OUTPUT FEATURE_TYPE "$(FMEServerEmailGenerator_WORKSPACE_NAME)_ParameterFetcher_OUTPUT" @Tcl2($(FMEServerEmailGenerator_WORKSPACE_NAME)_ParameterFetcher_doFetch) # ------------------------------------------------------------------------- FACTORY_DEF * AttrSetFactory FACTORY_NAME $(FMEServerEmailGenerator_WORKSPACE_NAME)_AttributeCreator NULL_ATTR_MODE EMPTY MULTI_FEATURE_MODE YES NUM_PRIOR_FEATURES 0 NUM_SUBSEQUENT_FEATURES 0 NULL_ATTR_VALUE_PROMPT "Attribute Replacement Value:" NULL_ATTR_VALUE "" INPUT FEATURE_TYPE "$(FMEServerEmailGenerator_WORKSPACE_NAME)_ParameterFetcher_OUTPUT" ATTR _email_to $($(FMEServerEmailGenerator_WORKSPACE_NAME)_email_to) ATTR _email_subject $($(FMEServerEmailGenerator_WORKSPACE_NAME)_email_subject) ATTR _email_subscriber_content $($(FMEServerEmailGenerator_WORKSPACE_NAME)_email_subscriber_content) OUTPUT OUTPUT FEATURE_TYPE "$(FMEServerEmailGenerator_WORKSPACE_NAME)_AttributeCreator_OUTPUT" # ------------------------------------------------------------------------- FACTORY_DEF * XMLTemplaterFactory FACTORY_NAME $(FMEServerEmailGenerator_WORKSPACE_NAME)_JSONTemplater INPUT CONTROL_FEATURE FEATURE_TYPE "$(FMEServerEmailGenerator_WORKSPACE_NAME)_AttributeCreator_OUTPUT" INPUT DATA_FEATURE FEATURE_TYPE $(FMEServerEmailGenerator_WORKSPACE_NAME)_JSONTemplater_DataFeatures RESULT_ATTR text_line_data OUTPUT_XML_HEADER NO CONSECUTIVE_GROUPS NO BUCKET_ATTR_NAME __xml_templater_bucket__ CONTROL_TEMPLATE_EXPR 发邮件给 fme:get-attribute _发邮件给 Email_cc. fme:get-attribute _mail_cc. email_from fme:get-attribute _email_from 电子邮件_replyto. fme:get-attribute _email_replyto 电子邮件主题 fme:get-attribute _电子邮件主题 subscriber_content fme:get-attribute _email_subscriber_content 输出xml_document feature_type“$(fmeserveremailgenerator_workspace_name)_jsontemplatter_output”#------------------------------------------------------------- Factory_def * testfactory factory_name $(fmeserveremailgenerator_workspace_name)_tester输入feature_type“$(fmeserveremailgenerator_workspace_name)_jsontemplater_output“test _email_attachment_paths attribute_is_empty ENCODED BOOLEAN_OPERATOR OR OUTPUT PASSED FEATURE_TYPE "$(FMEServerEmailGenerator_WORKSPACE_NAME)_Tester_PASSED" OUTPUT FAILED FEATURE_TYPE "$(FMEServerEmailGenerator_WORKSPACE_NAME)_Tester_FAILED" # ------------------------------------------------------------------------- Tcl2 set $(FMEServerEmailGenerator_WORKSPACE_NAME)_AttributeSplitter_1430ab9e_c567_444e_bc3a_66fd445b47a31_splitDelim [FME_DecodeText { }]; if { [regexp {^([1-9][0-9]*s)+$} [set $(FMEServerEmailGenerator_WORKSPACE_NAME)_AttributeSplitter_1430ab9e_c567_444e_bc3a_66fd445b47a31_splitDelim]] } { set $(FMEServerEmailGenerator_WORKSPACE_NAME)_AttributeSplitter_1430ab9e_c567_444e_bc3a_66fd445b47a31_splitWidths [split [regsub -all {s$} { } {}] s];proc $ (FMEServerEmailGenerator_WORKSPACE_NAME)_AttributeSplitter_doSplit {} { global $(FMEServerEmailGenerator_WORKSPACE_NAME)_AttributeSplitter_1430ab9e_c567_444e_bc3a_66fd445b47a31_splitWidths; set source [FME_GetAttribute {"_email_attachment_paths"}]; set attrNum 0; set listName {_email_attachment_path_list}; set attrPos 0; foreach width [set $(FMEServerEmailGenerator_WORKSPACE_NAME)_AttributeSplitter_1430ab9e_c567_444e_bc3a_66fd445b47a31_splitWidths] { set endPos [expr $attrPos + $width - 1]; set bit [string range $source $attrPos $endPos]; FME_SetAttribute "$listName{$attrNum}" [string trim $bit]; incr attrPos $width; incr attrNum; }; }; } else { proc $(FMEServerEmailGenerator_WORKSPACE_NAME)_AttributeSplitter_doSplit {} { global $(FMEServerEmailGenerator_WORKSPACE_NAME)_AttributeSplitter_1430ab9e_c567_444e_bc3a_66fd445b47a31_splitDelim; set delim [set $(FMEServerEmailGenerator_WORKSPACE_NAME)_AttributeSplitter_1430ab9e_c567_444e_bc3a_66fd445b47a31_splitDelim]; set delimLength [string length $delim]; set source [FME_GetAttribute {"_email_attachment_paths"}]; set keepEmptyParts [string equal {No} {No}]; set bits {}; set startIndex 0; set nextIndex [string first $delim $source $startIndex]; while {$nextIndex >= 0} { set part [string range $source $startIndex [expr $nextIndex-1]]; if { $keepEmptyParts || $part != \"\" } { lappend bits $part; }; set startIndex [expr $nextIndex + $delimLength]; set nextIndex [string first $delim $source $startIndex]; }; set lastPart [string range $source $startIndex end]; if { $keepEmptyParts || $lastPart != \"\" } { lappend bits $lastPart }; set listName {_email_attachment_path_list}; set attrNum 0; foreach bit $bits { FME_SetAttribute "$listName{$attrNum}" [string trim $bit]; incr attrNum; } } } FACTORY_DEF * TeeFactory FACTORY_NAME $(FMEServerEmailGenerator_WORKSPACE_NAME)_AttributeSplitter INPUT FEATURE_TYPE "$(FMEServerEmailGenerator_WORKSPACE_NAME)_Tester_FAILED" OUTPUT FEATURE_TYPE "$(FMEServerEmailGenerator_WORKSPACE_NAME)_AttributeSplitter_OUTPUT" @Tcl2($(FMEServerEmailGenerator_WORKSPACE_NAME)_AttributeSplitter_doSplit) # ------------------------------------------------------------------------- FACTORY_DEF * ElementFactory FACTORY_NAME $(FMEServerEmailGenerator_WORKSPACE_NAME)_ListExploder INPUT FEATURE_TYPE "$(FMEServerEmailGenerator_WORKSPACE_NAME)_AttributeSplitter_OUTPUT" LIST_NAME "_email_attachment_path_list{}" ELEMENT_NUMBER_FIELD "_element_index" CLONE_GEOMETRY MODE LEAN OUTPUT ELEMENT FEATURE_TYPE "$(FMEServerEmailGenerator_WORKSPACE_NAME)_ListExploder_LIST_FOUND" @RemoveAttributes(ElementFactory.baseCloned) # ------------------------------------------------------------------------- Tcl2 proc $(FMEServerEmailGenerator_WORKSPACE_NAME)_StringConcatenator_1ca700d1_cc79_4179_8cb3_a508e6cd832e1_doSetAttr {attrText} { FME_SetAttribute [FME_DecodeText {_email_attachment_json}] [FME_DecodeText $attrText] } FACTORY_DEF * TeeFactory FACTORY_NAME $(FMEServerEmailGenerator_WORKSPACE_NAME)_StringConcatenator INPUT FEATURE_TYPE "$(FMEServerEmailGenerator_WORKSPACE_NAME)_ListExploder_LIST_FOUND" OUTPUT FEATURE_TYPE "$(FMEServerEmailGenerator_WORKSPACE_NAME)_StringConcatenator_OUTPUT" @Tcl2("$(FMEServerEmailGenerator_WORKSPACE_NAME)_StringConcatenator_1ca700d1_cc79_4179_8cb3_a508e6cd832e1_doSetAttr {@EvaluateExpression(STRING_ENCODED, 电子邮件附件 价值 _element_index 价值 _email_attachment_path_list ,$(fmeserveremailgenerator_workspace_name)_stringconcatenator)}“)#---------------------------------------------------------------------------- yemend_macro $(fmeserveremailgenerator_workspace_name)_aggregator_break_attr包括[if {“否”==“是“} {看跌{宏$(FMEServerEmailGenerator_WORKSPACE_NAME)_Aggregator_BREAK_ATTR BREAK_BEFORE_FIELD_CHANGE _email_feature_id}}] FACTORY_DEF {*} AggregateFactory FACTORY_NAME $(FMEServerEmailGenerator_WORKSPACE_NAME)_Aggregator INPUT FEATURE_TYPE ”$(FMEServerEmailGenerator_WORKSPACE_NAME)_StringConcatenator_OUTPUT“ MODE ONE_LEVEL GROUP_BY {_email_feature_id} $($(FMEServerEmailGenerator_WORKSPACE_NAME)_Aggregator_BREAK_ATTR)Acculate_Attributes是concatenate_fields {_mail_attachment_json}分隔符 生成_multis是输出聚合feature_type“$(fmeserveremailgenerator_workspace_name)_aggregator_aggregate”@geometry(set_to_contain_individual_geoms,no)#--------------------------------------------------------------------------------宏CASEMAC包括[如果{{否} == {no}} {puts {宏casemac -nocase}} tcl2 proc $(fmeserveremailgenerator_workspace_name)_stringreplacer_2_a50345d7_b3ab_4f78_8800_0855a7800ffc1_replacer {findtext replayeText Invalidvalue} {set attrs [split \“_ email_attachment_json \”{,}];set sendvalue [fme_decodeText $ findtext];set replacevalue [fme_decodeText $ replaceText];foreachtrat $ attrs {set attrval [fme_getattribute $ attr];设置nom暂停真的;如果{{否} == {是}} {set newattrval [regsub $(casemac) - $ - $ findvalue $ atterval $ replacevalue];} else {set newattrval [string映射$(casemac)[list $ $ findvalue $ replacevalue] $ atterval];};如果{$ newattrval ne $ atterval} {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 $(FMEServerEmailGenerator_WORKSPACE_NAME)_StringReplacer_2 INPUT FEATURE_TYPE "$(FMEServerEmailGenerator_WORKSPACE_NAME)_Aggregator_AGGREGATE" OUTPUT FEATURE_TYPE "$(FMEServerEmailGenerator_WORKSPACE_NAME)_StringReplacer_2_OUTPUT" @Tcl2("$(FMEServerEmailGenerator_WORKSPACE_NAME)_StringReplacer_2_a50345d7_b3ab_4f78_88e0_0855a7800ffc1_replacer { } { } {_FME_NO_OP_}") # ------------------------------------------------------------------------- MACRO casemac INCLUDE [ if { {NO} == {NO} } { puts {MACRO casemac -nocase}} ] Tcl2 proc $(FMEServerEmailGenerator_WORKSPACE_NAME)_StringReplacer_67dc20ed_43c5_478c_832c_83f09c2c58c61_replacer { findText replaceText invalidValue} { set attrs [split \"text_line_data\" {,}]; 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 $(FMEServerEmailGenerator_WORKSPACE_NAME)_StringReplacer INPUT FEATURE_TYPE "$(FMEServerEmailGenerator_WORKSPACE_NAME)_StringReplacer_2_OUTPUT" OUTPUT FEATURE_TYPE "$(FMEServerEmailGenerator_WORKSPACE_NAME)_StringReplacer_OUTPUT" @Tcl2("$(FMEServerEmailGenerator_WORKSPACE_NAME)_StringReplacer_67dc20ed_43c5_478c_832c_83f09c2c58c61_replacer { } {@EvaluateExpression(STRING_ENCODED, 价值 _mail_attachment_json. , (FMEServerEmailGenerator_WORKSPACE_NAME) _StringR美元eplacer)} {_FME_NO_OP_}") FACTORY_DEF * TeeFactory FACTORY_NAME "$(FMEServerEmailGenerator_WORKSPACE_NAME)_OUTPUT1544035597 Output Collector" INPUT FEATURE_TYPE "$(FMEServerEmailGenerator_WORKSPACE_NAME)_StringReplacer_OUTPUT" INPUT FEATURE_TYPE "$(FMEServerEmailGenerator_WORKSPACE_NAME)_Tester_PASSED" OUTPUT FEATURE_TYPE "$(FMEServerEmailGenerator_WORKSPACE_NAME)_OUTPUT" INCLUDE [puts {MACRO WB_CURRENT_CONTEXT $(WB_OLD_CONTEXT_$(FMEServerEmailGenerator_WORKSPACE_NAME))}] FACTORY_DEF * TeeFactory FACTORY_NAME "FMEServerEmailGenerator OUTPUT Output Renamer/Nuker" INPUT FEATURE_TYPE FMEServerEmailGenerator_OUTPUT OUTPUT FEATURE_TYPE FMEServerEmailGenerator_OUTPUT # ------------------------------------------------------------------------- FACTORY_DEF * ServerFactory FACTORY_NAME FMEServerNotifier_2 INPUT FEATURE_TYPE FMEServerEmailGenerator_OUTPUT ACTION PUBLISH_TO_TOPIC HOST "bp-fmeserver15" USERNAME "admin" PASSWORD "fme_decrypt(MDowfCN8I3xcG3GQ/TeRRUJUZ5LDPtdvpscbh7Nj9gG/INBkAGA+fkaDrNbhZtfa3rmkUUrCxKWaAFwiYsKgWJNl/0mRpxUuP+IT2c+Qhh26JEZtUWAmpuoaQCdQ3ykKWm2zaoAM5MBCGaGEuYe+6AS07/nLNRJwqp1jdwP1FgVCbXRvZtWfKjEZlNJYQ+EicVc6cv2DxCYJyTljvXwF8mKxenML6FKJiHARQCO8OMJidKKZQJP1SeYIhqB0YrtGw4cGV2ZquQKifvRjB2Tl6wBAWDmeCg+R1jvft1tR17SISyTDv77K+mV80w2aaUSgybbF7coM0BrQPcpehfjlW+YxV73+9mPMFXKQeznZ22T8MJor57O44p8U2NQCw35HiFBs0oVP9VkkY0D/WzGRevseyX1pIEWJSQSFwkJVhiyXavMDz5E5SEYgTZHfVeGBXCDuIEEbfRRkPU5yD2nw2ZAVimDRD7UQhEEY6PosGqU17He4y35WEfAggQ40+EKuupOQSZRsKotTTqlYGHJtX49ymuKqfyZzOAUSUzDMcj8gfDgzOCcuhw2sK3fJaMszdHl2+FTIYwYcDZLOXh1Lp9tCqYg73bcOpl9kZt53WLDyxaQ6tgVwXtXbJeoUkrSjtmAxoJbIZILy4hYc5T9Uot+HIj1elugKHEPFu0Cryk8JF7Fb305F6mXYLu7AkdufV4dyyD/0GgEKBpY0eramM7+fA1/d7DBGe6kpgJ0YadhxrkdMoQOX1gOTjuZqEzTngVXguM0kALt106olrKQGoJYokLDi0k4JmQgOUrS8Lf1m6DoP56TbEZVfSwNCoViVsTypNXiy3SICXQSsy9rxXsgCWLB4ePWHRRyrMzoL/M54zSQmLM83sJZQHKUSj5NXR6lvuU7/WgjPsy9+vhtlHn65NkmQpTIe)" TOPIC "@EvaluateExpression(FDIV,STRING_ENCODED, 价值 _creation_instance. ,FMEServerNotifier_2)" BODY "@EvaluateExpression(FDIV,STRING_ENCODED, 价值 text_line_data. ,FMEServerNotifier_2)" OUTPUT OUTPUT FEATURE_TYPE FMEServerNotifier_2_OUTPUT OUTPUT REJECTED FEATURE_TYPE FMEServerNotifier_2_ factory_def * teefactory factory_name“fmeservernotifier_2输出变压器输出nuker”输入feature_type fmeservernotifier_2_output factory_def * teefactory factory_name“fmeservernotifier_2 Transformer Output Nuker" INPUT FEATURE_TYPE FMEServerNotifier_2_ # ------------------------------------------------------------------------- FACTORY_DEF * RoutingFactory FACTORY_NAME "Destination Feature Type Routing Correlator" COMMAND_PARM_EVALUATION SINGLE_PASS INPUT FEATURE_TYPE * FEATURE_TYPE_ATTRIBUTE __wb_out_feat_type__ OUTPUT ROUTED FEATURE_TYPE * OUTPUT NOT_ROUTED FEATURE_TYPE __nuke_me__ @Tcl2("FME_StatMessage 818059 [FME_GetAttribute fme_template_feature_type] 818060 818061 fme_warn") # ------------------------------------------------------------------------- FACTORY_DEF * TeeFactory FACTORY_NAME "Final Output Nuker" INPUT FEATURE_TYPE __nuke_me__