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">Accepts and processes features one by one.
Outputs features with valid _result_datetime attribute.
Outputs invalid results, which are set to NULL.
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.
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
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 parmListDateTimeFormat 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 parmListDateTimeFormat 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; 测试; 价值