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

Create _firstOfTheMonth as first of the given month by concatenating _sourceDate with 1

" POSITION="-1111.68 258.084" TOP_LEFT="-1111.68 258.084" BOTTOM_RIGHT="-597.923 132.249" BOUNDING_RECT="-1111.68 258.084 513.76 125.834" ORDER="5e+14" FOLLOW_ANCHOR="true" INFO_NODE="false" COLOUR="1,1,0.784314,0.196078" SIZE_POLICY="10" COMMENT_TYPE="REGULAR" ANCHORED_NODE="11">
#!

Convert _firstOfTheMonth into FME datetime format

" POSITION="-560.667 13.9151" TOP_LEFT="-560.667 13.9151" BOTTOM_RIGHT="-105.413 -114.003" BOUNDING_RECT="-560.667 13.9151 455.254 127.918" ORDER="5e+14" FOLLOW_ANCHOR="true" INFO_NODE="false" COLOUR="1,1,0.784314,0.196078" SIZE_POLICY="10" COMMENT_TYPE="REGULAR" ANCHORED_NODE="7">
#!

Calculate _firstOfTheNextMonth by adding 1 month to _firstOfTheMonth

" POSITION="-5.24981 258.084" TOP_LEFT="-5.24981 258.084" BOTTOM_RIGHT="587.506 132.249" BOUNDING_RECT="-5.24981 258.084 592.756 125.834" ORDER="5e+14" FOLLOW_ANCHOR="true" INFO_NODE="false" COLOUR="1,1,0.784314,0.196078" SIZE_POLICY="10" COMMENT_TYPE="REGULAR" ANCHORED_NODE="5">
#!

Calculate previous Saturday for _firstOThefNextMonth

" POSITION="608.34 75.3328" TOP_LEFT="608.34 75.3328" BOTTOM_RIGHT="1160.43 -50.5015" BOUNDING_RECT="608.34 75.3328 552.089 125.834" ORDER="5e+14" FOLLOW_ANCHOR="true" INFO_NODE="false" COLOUR="1,1,0.784314,0.196078" SIZE_POLICY="10" COMMENT_TYPE="REGULAR" ANCHORED_NODE="10">
#!
#! #!#! #!


" TOP_LEFT="-1147.93 360.42" BOTTOM_RIGHT="1212.51 -408.337" BOUNDING_RECT="-1147.93 360.42 2360.44 768.758" STICKY="true" COLOUR="1,1,0.411765" CONTENTS="17 7 14 13 5 22 11 9 10 15 16 ">
#!
#! #! #!#!#!#!#!#!#!#!#!#!#!#!#!#!#! #!#!#!#!#!#!#!2018">#!#!#!#!#!#!#!#!#! #!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#! #!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#! #!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#! #!#!#!#!#!#!#!#!Value_sourceDate">#!#!#!#!#!#!#!#!#! #!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#! #!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#! #!#!#!#!#!#!#!#!#! #!#! #!#! #!Holiday project.

" suppress_upgrade="false" usage="

Input Ports

Input

Accepts and processes features one by one.

Output Ports

Output

Outputs features with valid _result_datetime attribute.

<Rejected>

Outputs invalid results, which are set to NULL.

Parameters

Source Datetime

Type in a date, datetime, or datetime with UTC offset; or specify an attribute that contains a date, datetime, or datetime with UTC offset; or select Today from the list.

Find Previous

Type in a week day name or number, or specify an attribute that contains a week day name or number, or select a week day from the list.

The current version of this transformer supports English week day names only. To use week day numbers instead of names please refer to the list below:

  • 1 - Monday

  • 2 - Tuesday

  • 3 - Wednesday

  • 4 - Thursday

  • 5 - Friday

  • 6 - Saturday

  • 7 - Sunday

" zoom_scale="100" doc_dynamic_input_attrs="0" last_save_date="2017-12-04T18:39:06" view_position="-527.089 400.004" markdown_description="Calculates previous selected week day from the given date, datetime, or datetime with UTC offset. The calculated value is stored in **_result_datetime** attribute and has the same temporal type as the source value. This transformer was inspired by [Holiday project](https://github.com/martinjw/Holiday)." guid="c527279c-3452-4544-a9eb-5c81e517d3b5" fme_process_count="NO_PARALLELISM" use_markdown="YES"> #! #!#!#!#! #!#! #!#! #!#! #! #!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#! #!#!#!#!#!#!#!#!#!#!#!#!#!#!Value___sourceDay-Value___findPrevious'BOOL_OP;OR;COMPOSITE_TEST;;TEST Value___findPrevious < Value___sourceDay'Value___sourceDay-Value___findPrevious'FME_NUM_CONDITIONS2___"]HOURS]0]MINUTES]0]SECONDS]0]RESULT_GROUP]]RESULT_DATETIME]_result_datetime]FME_CONTROLLER_QUERY_FILE]transformersdependenciesdatetimecalculatorDATETIMECALC_1_ADD_INTERVAL.fme">#!#!#!#!#!#! #!#!#!#!#!#!#!#!#!#! #!#!#!#!#!#!#!#!UpperCaseValue___sourceDatetime ___sourceDatetime SET_TO "FME_CONDITIONAL:DEFAULT_VALUE'_FME_NO_OP_'BOOL_OP;OR;COMPOSITE_TEST;;TEST Value___sourceDatetime CONTAINS TODAY'DateTimeCastDateTimeNowdate'FME_NUM_CONDITIONS2___" ___sourceDay SET_TO Value___sourceDatetime ___findPrevious SET_TO UpperCaseValue___findPrevious ___findPrevious SET_TO "FME_CONDITIONAL:DEFAULT_VALUE'FME_NULL_VALUE'BOOL_OP;OR;COMPOSITE_TEST;;TEST Value___findPrevious CONTAINS MONDAY;TEST Value___findPrevious = 1'1'BOOL_OP;OR;COMPOSITE_TEST;;TEST Value___findPrevious CONTAINS TUESDAY;TEST Value___findPrevious = 2'2'BOOL_OP;OR;COMPOSITE_TEST;;TEST Value___findPrevious CONTAINS WEDNESDAY;TEST Value___findPrevious = 3'3'BOOL_OP;OR;COMPOSITE_TEST;;TEST Value___findPrevious CONTAINS THURSDAY;TEST Value___findPrevious = 4'4'BOOL_OP;OR;COMPOSITE_TEST;;TEST Value___findPrevious CONTAINS FRIDAY;TEST Value___findPrevious = 5'5'BOOL_OP;OR;COMPOSITE_TEST;;TEST Value___findPrevious CONTAINS SATURDAY;TEST Value___findPrevious = 6'6'BOOL_OP;OR;COMPOSITE_TEST;;TEST Value___findPrevious CONTAINS SUNDAY;TEST Value___findPrevious = 7'7'FME_NUM_CONDITIONS8___"">#!#!#!#!#!#!#!#!#! #!#!#!#!#!#!#!#!#!#!#!#!#!#!#! #!#!#!#!#!#!#!#!#!#!#!#!0.message SET_TO Failedtoevaluate_FINDPREVIOUSparametervalue.Resultissettonull. fme_expression_warnings0.paramValue SET_TO $(_FINDPREVIOUS) _result_datetime SET_TO FME_NULL_VALUE fme_rejection_code SET_TO INVALID_INPUT">#!#!#!#!#!#!#!#!#! #!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#! #! #!#!#! #!#!#!#!#!#! #!#!#! #!#!#!#!#!#!#!#!#!#!#!#!#! #!#! #!#!
#!
#! #!#!
FME_PYTHON_VERSION 27 # !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) lastsaturdayinapr .log" LOG_APPEND NO LOG_MAX_FEATURES 200 LOG_MAX_RECORDED_FEATURES 200 FME_REPROJECTION_ENGINE FME FME_IMPLICIT_CSMAP_REPROJECTION_MODE自动fme_geometry - handling增强FME_STROKE_MAX_DEVIATION 0 LOG_TIMINGS YES LOG_FILTER_MASK -1 #------------------------------------------------------------------------- MULTI_READER_CONTINUE_ON_READER_FAILURE没有 # ------------------------------------------------------------------------- 宏WORKSPACE_NAME lastSaturdayInApril宏观FME_VIEWER_APP fmedatainspector DEFAULT_MACRO WB_CURRENT_CONTEXT #------------------------------------------------------------------------- Tcl2 proc Creator_CoordSysRemover{}{全球FME_CoordSys;设置FME_CoordSys {}; } MACRO Creator_XML NOT_ACTIVATED MACRO Creator_CLASSIC NOT_ACTIVATED MACRO Creator_2D3D 2D_GEOMETRY MACRO Creator_COORDS INCLUDE [if{{几何对象}=={几何对象}}{puts {MACRO Creator_XML *}}] INCLUDE [if{{几何对象}== {2D坐标列表}}{puts {MACRO Creator_2D3D 2D_GEOMETRY};puts {MACRO Creator_CLASSIC *}}] INCLUDE [if {{Geometry Object} == {3D Coordinate List}} {puts {MACRO Creator_2D3D 3D_GEOMETRY};{MACRO Creator_CLASSIC *}}] INCLUDE [if {{Geometry Object} == {2D Min/Max Box}} {set comment{我们需要将COORDS minX minY maxX maxY转换为完整的多边形坐标列表};set splitCoords [split] [string trim] }]];if {[llength $splitCoords] > 4} {set trimmedCoords {};$splitCoords {if {$item != {}} {lappend trimmedCoords $item}};设置splitCoords trimmedCoords美元;};如果{[llength $splitCoords] != 4} {error {Creator: Coordinate list is expected to be a space delimited list of four numbers as 'minx miny maxx maxy' - ' 的是无效的};};set minX [lindex $ splitcoordds 0]; / /设置lindexset minY [lindex $splitCoords 1]; / /设置lindexset maxX [lindex $splitCoords 2]; / /设置lindexset maxxy [lindex $splitCoords 3]; / /设置lindexMACRO Creator_COORDS $minX $minY $maxY $maxX $maxX $minY $minX $minY;puts {MACRO Creator_2D3D 2D_GEOMETRY};{MACRO Creator_CLASSIC *}}] create_def $(Creator_XML) creatorfactory FACTORY_NAME Creator_XML_Creator CREATE_AT_END no OUTPUT FEATURE_TYPE _____CREATED______ @Geometry(FROM_ENCODED_STRING, xml ? 版本= 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_Cloner INPUT FEATURE_TYPE _____CREATED______ NUMBER_OF_COPIES 1 COPY_NUMBER_ATTRIBUTE "_creation_instance" OUTPUT FEATURE_TYPECreator_CREATED @Tcl2 (Creator_CoordSysRemover) @CoordSys () fme_feature_type创造者FACTORY_DEF * BranchingFactory FACTORY_NAME“Creator_CREATED布兰凯尔1 4”输入FEATURE_TYPE Creator_CREATED TARGET_FACTORY " $ (WB_CURRENT_CONTEXT) _CREATOR_BRANCH_TARGET“输出通过FEATURE_TYPE * @RemoveAttributes(“Creator_CREATED布兰凯尔14“.BranchingFactory.Count ) # ------------------------------------------------------------------------- FACTORY_DEF * TeeFactory FACTORY_NAME " $ (WB_CURRENT_CONTEXT) _CREATOR_BRANCH_TARGET“输入输出FEATURE_TYPE FEATURE_TYPE * * # ------------------------------------------------------------------------- FACTORY_DEF {*} AttrSetFactory FACTORY_NAMEAttributeCreator INPUT FEATURE_TYPE Creator_CREATED MULTI_FEATURE_MODE NO NULL_ATTR_MODE NO_OP ATTRSET_CREATE_DIRECTIVES propagate_missing_fdiv ATTR_ACTION {"" "_sourceDate" "SET_TO" " 4月 2018 "}输出输出FEATURE_TYPE AttributeCreator_OUTPUT # ------------------------------------------------------------------------- FACTORY_DEF {*} AttrSetFactory FACTORY_NAME AttributeCreator_2输入FEATURE_TYPE AttributeCreator_OUTPUT MULTI_FEATURE_MODE没有NULL_ATTR_MODE NO_OP ATTRSET_CREATE_DIRECTIVES _PROPAGATE_MISSING_FDIV ATTR_ACTION{”“"_firstOfTheMonth" "SET_TO" "1 价值 _sourceDate ”}输出输出FEATURE_TYPE AttributeCreator_2_OUTPUT # ------------------------------------------------------------------------- DEFAULT_MACRO DateTimeConverter_EXPRESSION_LIST DEFAULT_MACRO DateTimeConverter_TEST_CLAUSE_LIST包括[组repairInput {};if {{NO} eq {YES}} {set repairInput " 修复”;};FME | ISO设置备用{};如果{{% d %B. %Y} ne {}} {set inFormat {%d %B. % Y};如果{[string first] " = -1} {set inFormat [string map {" ”“ ”}$备用);};};设置outFormat FME} {:;如果{[string first] " $outFormat = -1} {set outFormat [string map {" ”“ ”}$ outFormat];};设置parmList {};设置testList {};set attrs [split {_firstOfTheMonth} {}];foreach attr $attrs {append parmList $attr;设置funcAttr attr美元;如果{[string first] " $attr = -1} {set funcAttr [string map {" ”“ “}$ attr];附加funcAttr” ”;设置funcAttr” 美元funcAttr”;};lappend parmList DateTimeFormat dateTimeparse. 价值 funcAttr美元 美元备用 repairInput美元 outFormat美元 ;lappend testList "TEST $attr ATTRIBUTE_VALUE_NULL \"\" ENCODED"};insert "MACRO DateTimeConverter_EXPRESSION_LIST [join $parmList {,}]";MACRO DateTimeConverter_TEST_CLAUSE_LIST [join $testList {}];@EvaluateExpression(ATTR_CREATE_EXPR_PROPAGATE_MISSING_FDIV, $(datetime econverter_expression_list), / / datetime econverter_expression_listDateTimeConverter) FACTORY_DEF * TestFactory FACTORY_NAME DateTimeConverter_2 INPUT FEATURE_TYPE DateTimeConverter__TEST_NULL__ $(DateTimeConverter_TEST_CLAUSE_LIST) BOOLEAN_OPERATOR OR OUTPUT FAILED FEATURE_TYPE DateTimeConverter_OUTPUT # ------------------------------------------------------------------------- DEFAULT_MACRO START_DATETIMEDefault_macro end_datetime Default_macro operator Default_macro years Default_macro months Default_macro days Default_macro hours Default_macro minutes Default_macro seconds Default_macro iso_interval Default_macro表达式Default_macro result_type Default_macro result_interval Default_macro result_datetime Default_macro result Default_macroDateTimeCalculator_EXPRESSION expression DEFAULT_MACRO DateTimeCalculator_RESULT_ATTR attr INCLUDE [set expression {};设置result_attr {};if {"DATETIMECALC_1_ADD_INTERVAL" eq "DATETIMECALC_1_ADD_INTERVAL" || "DATETIMECALC_1_ADD_INTERVAL" eq "DATETIMECALC_2_ADD_ISO_INTERVAL"} {set interval {$(ISO_INTERVAL)}; if { "DATETIMECALC_1_ADD_INTERVAL" eq "DATETIMECALC_1_ADD_INTERVAL" } { set interval { datetimeintervalcreate. 0 1 0 0 0 0 };};设置signed_interval美元区间;如果{"ADD" eq "SUBTRACT"}{设置signed_interval DateTimeIntervalNegate 美元区间 ;};设置result_attr {_firstOfTheNextMonth};集表达式 DateTimeAdd @EvaluateExpression (FDIV STRING_ENCODED, 价值 _firstOfTheMonth DateTimeCalculator) signed_interval美元 ;} elseif {"DATETIMECALC_1_ADD_INTERVAL" eq "DATETIMECALC_3_CALCULATE_INTERVAL"} {set result_attr {$(RESULT_INTERVAL)};组表达{ DateTimeDiff $ (END_DATETIME) @EvaluateExpression (FDIV STRING_ENCODED, 价值 _firstOfTheMonth DateTimeCalculator) $ (RESULT_TYPE) };} elseif {"DATETIMECALC_1_ADD_INTERVAL" eq "DATETIMECALC_4_EXPRESSION"} {set result_attr {$(RESULT)};设置表达式{$(表达式)};};puts "MACRO DateTimeCalculator_EXPRESSION $expression";{MACRO DateTimeCalculator_RESULT_ATTR $result_attr}}@EvaluateExpression(ATTR_CREATE_EXPR_PROPAGATE_MISSING_FDIV,$(DateTimeCalculator_RESULT_ATTR),"$(DateTimeCalculator_EXPRESSION)",DateTimeCalculator) FACTORY_DEF * TestFactory FACTORY_NAME DateTimeCalculator_1 INPUT FEATURE_TYPE DateTimeConverter_OUTPUT OUTPUT FEATURE_TYPE __TEST_NULL__INPUT FEATURE_TYPE __TEST_NULL__ TEST "$(DateTimeCalculator_RESULT_ATTR)"ATTRIBUTE_VALUE_NULL "" ENCODED OUTPUT FAILED FEATURE_TYPE DateTimeCalculator_OUTPUT # ------------------------------------------------------------------------- FACTORY_DEF * TeeFactory FACTORY_NAME "PreviousSaturdayCalculator Input Input Collector" Input FEATURE_TYPE DateTimeCalculator_OUTPUT OUTPUT FEATURE_TYPE PreviousSaturdayCalculator_Input宏PreviousSaturdayCalculator_WORKSPACE_NAME PreviousSaturdayCalculator宏(PreviousSaturdayCalculator_WORKSPACE_NAME)美元_XFORMER_NAME PreviousSaturdayCalculator宏(PreviousSaturdayCalculator_WORKSPACE_NAME) _TRANSFORMER_GROUP宏(PreviousSaturdayCalculator_WORKSPACE_NAME)美元___COMPOUND_PARAMETERS宏 $(PreviousSaturdayCalculator_WORKSPACE_NAME)_SUB_DOC_NAME PreviousSaturdayCalculator MACRO $(PreviousSaturdayCalculator_WORKSPACE_NAME)__SOURCEDATETIME @Value(_firstOfTheNextMonth) MACRO $(PreviousSaturdayCalculator_WORKSPACE_NAME)__FINDPREVIOUS Saturday DEFAULT_MACRO PreviousSaturdayCalculator_WORKSPACE_NAME "" INCLUDE [puts {MACRO WB_OLD_CONTEXT_$(PreviousSaturdayCalculator_WORKSPACE_NAME) $(WB_CURRENT_CONTEXT)}; puts {MACRO WB_CURRENT_CONTEXT $(PreviousSaturdayCalculator_WORKSPACE_NAME)}] FACTORY_DEF * TeeFactory FACTORY_NAME "$(PreviousSaturdayCalculator_WORKSPACE_NAME)_Input1513048034 Input Splitter" INPUT FEATURE_TYPE "$(PreviousSaturdayCalculator_WORKSPACE_NAME)_Input" OUTPUT FEATURE_TYPE "$(PreviousSaturdayCalculator_WORKSPACE_NAME)_Input" # ------------------------------------------------------------------------- Tcl2 proc $(PreviousSaturdayCalculator_WORKSPACE_NAME)_ParameterFetcher_doFetch {} { foreach {name val} {"___sourceDatetime {$($(PreviousSaturdayCalculator_WORKSPACE_NAME)__SOURCEDATETIME$encode)} ___findPrevious {$($(PreviousSaturdayCalculator_WORKSPACE_NAME)__FINDPREVIOUS$encode)}"} { if { [string match {* * $val] == 1} {set val [FME_Execute EvaluateExpression {STRING} $val {$(PreviousSaturdayCalculator_WORKSPACE_NAME)_ParameterFetcher}];} elseif {[string match {*FME_CONDITIONAL*} $val] == 1} {set val [FME_Execute EvaluateExpression {string} $val {$(PreviousSaturdayCalculator_WORKSPACE_NAME)_ParameterFetcher}];} else{设置val [FME_DecodeTextOrAttr $val];};FME_SetAttribute [FME_DecodeText $name] $val}} FACTORY_DEF * tefactory FACTORY_NAME $(PreviousSaturdayCalculator_WORKSPACE_NAME)_ParameterFetcher INPUT FEATURE_TYPE "$(PreviousSaturdayCalculator_WORKSPACE_NAME)_Input INPUT FEATURE_TYPE "$(PreviousSaturdayCalculator_WORKSPACE_NAME)_ParameterFetcher_OUTPUT"@Tcl2 ($ (PreviousSaturdayCalculator_WORKSPACE_NAME) _ParameterFetcher_doFetch ) # ------------------------------------------------------------------------- FACTORY_DEF {*} AttrSetFactory FACTORY_NAME $ (PreviousSaturdayCalculator_WORKSPACE_NAME) _AttributeCreator_2输入FEATURE_TYPE " $ (PreviousSaturdayCalculator_WORKSPACE_NAME) _ParameterFetcher_OUTPUT”MULTI_FEATURE_MODE NO NULL_ATTR_MODE NO_OP ATTRSET_CREATE_DIRECTIVES _PROPAGATE_MISSING_FDIV ATTR_ACTION { "" "___sourceDatetime" "SET_TO" " 大写字母 价值 ___sourceDateTeme. “} attr_action {”“”___sourceatatetime“”set_to“”fme_conditional:default_value'_fme_no_op_'bool_op;或; composite_test; 测试; 价值 ___sourceDateTeme. 今天包含' DateTimeCast DateTimeNow 日期 ”FME_NUM_CONDITIONS2___} ATTR_ACTION { "" "___ sourceDay”“SET_TO”“ 价值 ___sourceDateTeme. “} attr_action {”___findprevious“”set_to“” 大写字母 价值 ___findPrevious } ATTR_ACTION {"" __findprevious "" SET_TO" "FME_CONDITIONAL:DEFAULT_VALUE'FME_NULL_VALUE'BOOL_OP;或; 测试; 价值 ___findPrevious 测试包含周一; 价值 ___findPrevious = 1的1 'bool_op;或者,COMPOSITE_TEST; 测试; 价值 ___findPrevious 测试包含周二; 价值 ___findPrevious = 2的2 'bool_op;或者,COMPOSITE_TEST; 测试; 价值 ___findPrevious 测试包含周三; 价值 ___findPrevious = 3 ' 3 'bool_op;; COMPOSITE_TEST; 测试; 价值 ___findPrevious 测试包含周四; 价值 ___findPrevious = 4 ' 4 'bool_op;或者,COMPOSITE_TEST; 测试; 价值 ___findPrevious 测试包含周五; 价值 ___findPrevious = 5 ' 5 'bool_op;; COMPOSITE_TEST; 测试; 价值 ___findPrevious 测试包含周六; 价值 ___findPrevious = 6尺6 'bool_op;; COMPOSITE_TEST; 测试; 价值 ___findPrevious 测试包含周日; 价值 ___findPrevious = 7'7'fme_num_conditions8 ___“}输出输出effect_type”$(previoussaturdaycalculator_workspace_name)_attributecreator_2_output“#------------------------------------------------------------- express_def * teefactory factory_name $(previoussaturdaycalculator_workspace_name)_TestFilter INPUT FEATURE_TYPE “$(PreviousSaturdayCalculator_WORKSPACE_NAME)_AttributeCreator_2_OUTPUT” 输出FEATURE_TYPE $(PreviousSaturdayCalculator_WORKSPACE_NAME)_TestFilter_TESTFILTERINPUTLINE_0 FACTORY_DEF * TestFactory中FACTORY_NAME $(PreviousSaturdayCalculator_WORKSPACE_NAME)_TestFilter_TestFactory_0 INPUT FEATURE_TYPE $(PreviousSaturdayCalculator_WORKSPACE_NAME)_TestFilter_TESTFILTERINPUTLINE_0 TEST ___findPrevious NOT_ATTRIBUTE_VALUE_NULL “” ENCODED BOOLEAN_OPERATOR OR COMPOSITE_TEST_EXPR 输出通过FEATURE_TYPE $(PreviousSaturdayCalculator_WORKSPACE_NAME)_TestFilter_WeekDay输出失败FEATURE_TYPE $(PreviousSaturdayCalculator_WORKSPACE_NAME)_TestFilter_WeekDay输出失败美元(PreviousSaturdayCalculator_WORKSPACE_NAME) _TestFilter_TESTFILTERINPUTLINE_1输出FEATURE_TYPE (PreviousSaturdayCalculator_WORKSPACE_NAME) _TestFilter_Invalid美元 # ------------------------------------------------------------------------- FACTORY_DEF {*} AttrSetFactory FACTORY_NAME (PreviousSaturdayCalculator_WORKSPACE_NAME) _AttributeCreator_3美元MULTI_FEATURE_MODE NO NULL_ATTR_MODE NO_OP ATTRSET_CREATE_DIRECTIVES _PROPAGATE_MISSING_FDIV ATTR_ACTION {"" "fme_expression_warnings 0 .message”“SET_TO”“失败了 评估 _FINDPREVIOUS 参数 价值。 结果 零。”} ATTR_ACTION {"" "fme_expression_warnings 0 .paramValue”“SET_TO”“$ ((PreviousSaturdayCalculator_WORKSPACE_NAME) __FINDPREVIOUS编码美元)”} ATTR_ACTION{”““_result_datetime”“SET_TO”“FME_NULL_VALUE”}ATTR_ACTION{”““fme_rejection_code”“SET_TO”“INVALID_INPUT”}输出输出FEATURE_TYPE”(PreviousSaturdayCalculator_WORKSPACE_NAME) _AttributeCreator_3_OUTPUT美元 " # ------------------------------------------------------------------------- DEFAULT_MACRO$(PreviousSaturdayCalculator_WORKSPACE_NAME) _datetimeconverter_clause_list INCLUDE [set repairInput{}; / /修复输入;if {{NO} eq {YES}} {set repairInput " 修复”;};FME | ISO设置备用{};if {{} ne {}} {set inFormat {};如果{[string first] " = -1} {set inFormat [string map {" ”“ ”}$备用);};};设置outFormat {% u};如果{[string first] " $outFormat = -1} {set outFormat [string map {" ”“ ”}$ outFormat];};设置parmList {};设置testList {};set attrs [split {___sourceDay} {}];foreach attr $attrs {append parmList $attr;设置funcAttr attr美元;如果{[string first] " $attr = -1} {set funcAttr [string map {" ”“ “}$ attr];附加funcAttr” ”;设置funcAttr” 美元funcAttr”;};lappend parmList DateTimeFormat dateTimeparse. 价值 funcAttr美元 美元备用 repairInput美元 outFormat美元 ;lappend testList "TEST $attr ATTRIBUTE_VALUE_NULL \"\" ENCODED"};puts“宏$(previoussaturdaycalculator_workspace_name)_datetimeconverter_expression_list [加入$ parmlist {,}]”;puts“宏$(previoussaturdaycalculator_workspace_name)_datetimeconverter_test_clause_list [加入$ testlist {}]”;] FACTORY_DEF * TeeFactory FACTORY_NAME $(PreviousSaturdayCalculator_WORKSPACE_NAME)_DateTimeConverter_1 INPUT FEATURE_TYPE “$(PreviousSaturdayCalculator_WORKSPACE_NAME)_TestFilter_WeekDay” 输出FEATURE_TYPE $(PreviousSaturdayCalculator_WORKSPACE_NAME)_DateTimeConverter__TEST_NULL__ @EvaluateExpression(ATTR_CREATE_EXPR_PROPAGATE_MISSING_FDIV,$($(PreviousSaturdayCalculator_WORKSPACE_NAME)_DateTimeConverter_EXPRESSION_LIST),$(PreviousSaturdayCalculator_WORKSPACE_NAME)_DateTimeConverter)FACTORY_DEF * TestFactory中FACTORY_NAME$(PreviousSaturdayCalculator_WORKSPACE_NAME)_DateTimeConverter_2 INPUT FEATURE_TYPE $(PreviousSaturdayCalculator_WORKSPACE_NAME)_DateTimeConverter__TEST_NULL__ $($(PreviousSaturdayCalculator_WORKSPACE_NAME)_DateTimeConverter_TEST_CLAUSE_LIST)BOOLEAN_OPERATOR或输出PASSED FEATURE_TYPE“$(PreviousSaturdayCalculator_WORKSPACE_NAME)_DateTimeConverter_ INVALID_INPUT“fme_rejection_code输出FEATURE_TYPE失败”(PreviousSaturdayCalculator_WORKSPACE_NAME) _DateTimeConverter_OUTPUT美元 " # ------------------------------------------------------------------------- FACTORY_DEF {*} AttrSetFactory FACTORY_NAME $ (PreviousSaturdayCalculator_WORKSPACE_NAME) FEATURE_TYPE _AttributeCreator_4输入“$ (PreviousSaturdayCalculator_WORKSPACE_NAME) _DateTimeConverter_ “MULTI_FEATURE_MODE NULL_ATTR_MODE NO_OP ATTRSET_CREATE_DIRECTIVES _PROPAGATE_MISSING_FDIV ATTR_ACTION{”““_result_datetime”“SET_TO”“FME_NULL_VALUE”}输出输出FEATURE_TYPE”(PreviousSaturdayCalculator_WORKSPACE_NAME) _AttributeCreator_4_OUTPUT美元 " # ------------------------------------------------------------------------- DEFAULT_MACROStart_datetime default_macro end_datetime default_macro operator default_macro years default_macro months default_macro days default_macro hours default_macro minutes default_macro seconds default_macro iso_interval default_macro expression default_macro result_type default_macro result_interval default_macro result_datetime default_macro resultDEFAULT_MACRO $(PreviousSaturdayCalculator_WORKSPACE_NAME)_DateTimeCalculator_RESULT_ATTR attr包括[set expression {};设置result_attr {};if {"DATETIMECALC_1_ADD_INTERVAL" eq "DATETIMECALC_1_ADD_INTERVAL" || "DATETIMECALC_1_ADD_INTERVAL" eq "DATETIMECALC_2_ADD_ISO_INTERVAL"} {set interval {$(ISO_INTERVAL)};if {"DATETIMECALC_1_ADD_INTERVAL" eq "DATETIMECALC_1_ADD_INTERVAL"} {set interval { datetimeintervalcreate. 0 0 @EvaluateExpression (FDIV、浮点数、FME_CONDITIONAL: DEFAULT_VALUE 7 + 价值 ___sourceDay - 价值 ___findPrevious “BOOL_OP;或者,COMPOSITE_TEST; 测试; 价值 ___findPrevious < 价值 ___sourceDay 价值 ___sourceDay - 价值 ___findPrevious FME_NUM_CONDITIONS2___,美元(PreviousSaturdayCalculator_WORKSPACE_NAME) _DateTimeCalculator) 0 0 0 };};设置signed_interval美元区间;如果{"SUBTRACT" eq "SUBTRACT"}{设置signed_interval DateTimeIntervalNegate 美元区间 ;};设置result_attr {_result_datetime};集表达式 DateTimeAdd @EvaluateExpression (FDIV STRING_ENCODED, 价值 ___sourceDateTeme. 美元(PreviousSaturdayCalculator_WORKSPACE_NAME) _DateTimeCalculator) signed_interval美元 ;} elseif {"DATETIMECALC_1_ADD_INTERVAL" eq "DATETIMECALC_3_CALCULATE_INTERVAL"} {set result_attr {$(RESULT_INTERVAL)};组表达{ DateTimeDiff $ (END_DATETIME) @EvaluateExpression (FDIV STRING_ENCODED, 价值 ___sourceDateTeme. 美元(PreviousSaturdayCalculator_WORKSPACE_NAME) _DateTimeCalculator) $ (RESULT_TYPE) };} elseif {"DATETIMECALC_1_ADD_INTERVAL" eq "DATETIMECALC_4_EXPRESSION"} {set result_attr {$(RESULT)};设置表达式{$(表达式)};};{MACRO $(PreviousSaturdayCalculator_WORKSPACE_NAME)_DateTimeCalculator_EXPRESSION $expression};{MACRO $(PreviousSaturdayCalculator_WORKSPACE_NAME)_DateTimeCalculator_RESULT_ATTR $result_attr};$(PreviousSaturdayCalculator_WORKSPACE_NAME)_DateTimeConverter_OUTPUT" OUTPUT FEATURE_TYPE __TEST_NULL__ . txt . txt@EvaluateExpression (ATTR_CREATE_EXPR_PROPAGATE_MISSING_FDIV, $ ((PreviousSaturdayCalculator_WORKSPACE_NAME) _DateTimeCalculator_RESULT_ATTR美元),“美元($ (PreviousSaturdayCalculator_WORKSPACE_NAME) _DateTimeCalculator_EXPRESSION)”,美元(PreviousSaturdayCalculator_WORKSPACE_NAME) _DateTimeCalculator) FACTORY_DEF * TestFactory FACTORY_NAME$($(PreviousSaturdayCalculator_WORKSPACE_NAME) _DateTimeCalculator_2 INPUT FEATURE_TYPE __TEST_NULL__ TEST "$($(PreviousSaturdayCalculator_WORKSPACE_NAME)_DateTimeCalculator_RESULT_ATTR)"ATTRIBUTE_VALUE_NULL "" ENCODED OUTPUT PASSED FEATURE_TYPE "" encoding OUTPUT PASSED FEATURE_TYPE “fme_rejection_code ”INVALID_INPUT“ OUTPUT失败FEATURE_TYPE ”$(PreviousSaturdayCalculator_WORKSPACE_NAME)_DateTimeCalculator_OUTPUT“ FACTORY_DEF * TeeFactory FACTORY_NAME ”$(PreviousSaturdayCalculator_WORKSPACE_NAME)_Output1513048034输出集电极“ INPUT FEATURE_TYPE ”$(PreviousSaturdayCalculator_WORKSPACE_NAME)_DateTimeCalculator_OUTPUT“ 输出FEATURE_TYPE ”$(PreviousSaturdayCalculator_WORKSPACE_NAME)_output“ @RemoveAttributes(___ sourceDatetime,___ sourceday,___ find previous)factory_def * teefactory factory_name“$(prevarardsaturdaycalculator_workspace_name)_ 1513048034输出收集器“输入feature_type”$(previoussaturdurecalculator_workspace_name)_attributecreator_3_output“输入feature_type”$(previoussaturdudeCalculator_workspace_name)_attributecreator_4_output“输入feature_type”$(previoussaturdaycalculator_workspace_name)_datetimecalculator_ $(PreviousSaturdayCalculator_WORKSPACE_NAME)_ “@RemoveAttributes (___sourceDatetime ___sourceDay ___findPrevious)包括(把{宏WB_CURRENT_CONTEXT $ (WB_OLD_CONTEXT_ (PreviousSaturdayCalculator_WORKSPACE_NAME)美元)}]FACTORY_DEF * TeeFactory FACTORY_NAME”PreviousSaturdayCalculator输出输出重命名/核”输入FEATURE_TYPE PreviousSaturdayCalculator_Output FEATURE_TYPE输出PreviousSaturdayCalculator_Output FACTORY_DEF * tefactory FACTORY_NAME "PreviousSaturdayCalculator INPUT FEATURE_TYPE PreviousSaturdayCalculator_ 输出FEATURE_TYPE PreviousSaturdayCalculator_ # ------------------------------------------------------------------------- FACTORY_DEF * TeeFactory FACTORY_NAME Rejected_Logger输入FEATURE_TYPE PreviousSaturdayCalculator_ 输出Feature_type Rejected_logged @log(“拒绝:”,“20”,“20”)@featureType(recketed_logged)factory_def * teefactory factory_name“被拒绝的记录输出nuker”输入feature_type recketed_logged#---a---------------------------------------------------------------------------------- FACTORY_DEF * TeeFactory FACTORY_NAME Output_Logger INPUT FEATURE_TYPE PreviousSaturdayCalculator_Output OUTPUT FEATURE_TYPE Output_LOGGED @Log("Output: Feature is:","20","20") @FeatureType(Output_LOGGED) FACTORY_DEF * TeeFactory FACTORY_NAME "Output LOGGED Output Nuker" INPUT FEATURE_TYPE Output_LOGGED # ------------------------------------------------------------------------- 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__