Hi Hans, do you have a screenshot for those that have no beta installed yet? So we can see the magic appear on our screens?
Dank u wel! Greetings, Jeff On 7/12/07, Hans van der Maarel <[EMAIL PROTECTED]> wrote:
Bruce Harold wrote: > This sounds eminently sensible to me. Otherwise its > TransportSender/Receiver in the same workbench (if that is possible). It is... See the attached workbench (FME Professional, build 5024). It's almost like magic :) I do wonder how 'smooth' this would be in a big workbench with a lot of data running through it. I'll see if I have some time for benchmarking soon... -- Hans van der Maarel Red Geographics Zevenbergsepoort 44b www.redgeographics.com 4791 AE Klundert [EMAIL PROTECTED] <hans%40redgeographics.com> The Netherlands phone: +31-168-401035#! <?xml version="1.0" encoding="iso-8859-1" ?> #! <WORKSPACE # # # Commandline to run this workspace: # # # fme.exe tunnel.fmw # # #! MAX_LOG_FEATURES="200" #! SOURCE="NONE" #! END_TCL="" #! DESTINATION="NONE" #! SHOW_BOOKMARKS="true" #! GRID_VISIBLE="false" #! GRID_HEIGHT="50" #! SHOW_INFO_NODES="true" #! BEGIN_PYTHON="" #! BEGIN_TCL="" #! VIEW_POSITION="0 0" #! ZOOM_SCALE="100" #! PASSWORD="" #! VIEW_PAGE_BREAKS="false" #! FME_CACHED_OBJECTS_HINT="7500" #! SHOW_ANNOTATIONS="true" #! LOG_MAX_RECORDED_FEATURES="200" #! END_PYTHON="" #! FME_REPROJECTION_ENGINE="FME" #! FME_BUILD_NUM="5024" #! GRID_SNAPTO="false" #! GRID_WIDTH="50" #! SOURCE_ROUTING_DIR="" #! LOG_FILE="" #! DESTINATION_ROUTING_DIR="" #! WORKSPACE_VERSION="1" #! TITLE="" #! FME_USE_RICH_GEOMETRY="Classic" #! IGNORE_READER_FAILURE="No" #! ATTR_TYPE_ENCODING="SDF" #! > #! <DATASETS> #! </DATASETS> #! <DATA_TYPES> #! </DATA_TYPES> #! <GEOM_TYPES> #! </GEOM_TYPES> #! <FEATURE_TYPES> #! </FEATURE_TYPES> #! <GLOBAL_PARAMETERS> #! </GLOBAL_PARAMETERS> #! <COMMENTS> #! <COMMENT #! IDENTIFIER="6" #! COMMENT_VALUE="Lots of other stuff goes here...|" #! POSITION="1514 -745" #! ORDER="7" #! FOLLOW_ANCHOR="true" #! INFO_NODE="false" #! /> #! </COMMENTS> #! <CONSTANTS> #! </CONSTANTS> #! <BOOKMARKS> #! <BOOKMARK #! IDENTIFIER="7" #! NAME="The rest of the workbench" #! DESCRIPTION="" #! TOP_LEFT="1306 -327" #! BOTTOM_RIGHT="2306 -1269" #! STICKY="true" #! COLOUR="0.584887,0.664205,0.640889" #! /> #! </BOOKMARKS> #! <TRANSFORMERS> #! <TRANSFORMER #! IDENTIFIER="0" #! TYPE="2DGridCreator" #! VERSION="1" #! POSITION="187 -685" #! ORDER="3" #! PARMS_EDITED="true" #! ENABLED="true" #! > #! <OUTPUT_FEAT NAME="CREATED"/> #! <FEAT_COLLAPSED COLLAPSED="0"/> #! <XFORM_ATTR ATTR_NAME="_row" IS_USER_CREATED="false" FEAT_INDEX="0"/> #! <XFORM_ATTR ATTR_NAME="_column" IS_USER_CREATED="false" FEAT_INDEX="0"/> #! <XFORM_PARM PARM_NAME="NUMROWS" PARM_VALUE="10"/> #! <XFORM_PARM PARM_NAME="GRID_TYPE" PARM_VALUE="Polygons"/> #! <XFORM_PARM PARM_NAME="COL_ATTR" PARM_VALUE="_column"/> #! <XFORM_PARM PARM_NAME="XFORMER_NAME" PARM_VALUE="2DGridCreator"/> #! <XFORM_PARM PARM_NAME="YINC" PARM_VALUE="10"/> #! <XFORM_PARM PARM_NAME="LOWERLEFTX" PARM_VALUE="0"/> #! <XFORM_PARM PARM_NAME="NUMCOLS" PARM_VALUE="10"/> #! <XFORM_PARM PARM_NAME="XINC" PARM_VALUE="10"/> #! <XFORM_PARM PARM_NAME="LOWERLEFTY" PARM_VALUE="0"/> #! <XFORM_PARM PARM_NAME="ROW_ATTR" PARM_VALUE="_row"/> #! </TRANSFORMER> #! <TRANSFORMER #! IDENTIFIER="1" #! TYPE="TransporterSender" #! VERSION="1" #! POSITION="816 -686" #! ORDER="4" #! PARMS_EDITED="true" #! ENABLED="true" #! > #! <XFORM_PARM PARM_NAME="MODE" PARM_VALUE="TCP/IP"/> #! <XFORM_PARM PARM_NAME="FEATURES_PER_FILE" PARM_VALUE="<Unused>"/> #! <XFORM_PARM PARM_NAME="FILE_NAME" PARM_VALUE="<Unused>"/> #! <XFORM_PARM PARM_NAME="XFORMER_NAME" PARM_VALUE="TransporterSender"/> #! <XFORM_PARM PARM_NAME="PORT" PARM_VALUE="8586"/> #! <XFORM_PARM PARM_NAME="INITIATION_SEQUENCE" PARM_VALUE="ESTABLISH"/> #! <XFORM_PARM PARM_NAME="HOST" PARM_VALUE="localhost"/> #! </TRANSFORMER> #! <TRANSFORMER #! IDENTIFIER="3" #! TYPE="TransporterReceiver" #! VERSION="1" #! POSITION="2388 -750" #! ORDER="5" #! PARMS_EDITED="true" #! ENABLED="true" #! > #! <OUTPUT_FEAT NAME="TRANSPORTED"/> #! <FEAT_COLLAPSED COLLAPSED="0"/> #! <XFORM_PARM PARM_NAME="MODE" PARM_VALUE="TCP/IP"/> #! <XFORM_PARM PARM_NAME="XFORMER_NAME" PARM_VALUE="TransporterReceiver"/> #! <XFORM_PARM PARM_NAME="PORT" PARM_VALUE="8586"/> #! <XFORM_PARM PARM_NAME="INITIATION_SEQUENCE" PARM_VALUE="CONNECT"/> #! <XFORM_PARM PARM_NAME="HOST" PARM_VALUE="localhost"/> #! </TRANSFORMER> #! <TRANSFORMER #! IDENTIFIER="4" #! TYPE="Visualizer" #! VERSION="1" #! POSITION="3236 -731" #! ORDER="6" #! PARMS_EDITED="false" #! ENABLED="true" #! > #! <XFORM_PARM PARM_NAME="TACKATTRS" PARM_VALUE=""/> #! <XFORM_PARM PARM_NAME="AREA_COLOR" PARM_VALUE=""/> #! <XFORM_PARM PARM_NAME="XFORMER_NAME" PARM_VALUE="TransporterReceiver_TRANSPORTED"/> #! <XFORM_PARM PARM_NAME="PEN_COLOR" PARM_VALUE=""/> #! </TRANSFORMER> #! </TRANSFORMERS> #! <FEAT_LINKS> #! <FEAT_LINK #! IDENTIFIER="2" #! SOURCE_NODE="0" #! TARGET_NODE="1" #! SOURCE_PORT_DESC="fo 0" #! TARGET_PORT_DESC="fi 0" #! ENABLED="true" #! EXTRA_POINTS="" #! /> #! <FEAT_LINK #! IDENTIFIER="5" #! SOURCE_NODE="3" #! TARGET_NODE="4" #! SOURCE_PORT_DESC="fo 0" #! TARGET_PORT_DESC="fi 0" #! ENABLED="true" #! EXTRA_POINTS="" #! /> #! </FEAT_LINKS> #! <ATTR_LINKS> #! </ATTR_LINKS> #! <SUBDOCUMENTS> #! </SUBDOCUMENTS> #! <LOOKUP_TABLES> #! </LOOKUP_TABLES> #! </WORKSPACE> #! #! 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 #! END_HEADER LOG_FILENAME "$(FME_MF_DIR)tunnel.log" LOG_APPEND NO LOG_MAX_FEATURES 200 LOG_MAX_RECORDED_FEATURES 200 FME_CACHED_OBJECTS_HINT 7500 FME_REPROJECTION_ENGINE FME FME_USE_RICH_GEOMETRY no # ------------------------------------------------------------------------- MULTI_READER_CONTINUE_ON_READER_FAILURE No # ------------------------------------------------------------------------- MACRO WORKSPACE_NAME tunnel DEFAULT_MACRO WB_CURRENT_CONTEXT # ------------------------------------------------------------------------- FACTORY_DEF * CreationFactory FACTORY_NAME 2DGridCreator 2D_GEOMETRY 0 0 NUMBER_TO_CREATE @Evaluate("10 * 10") OUTPUT FEATURE_TYPE __TO_TESTER__ _column @Evaluate(int("(&creation_instance+0) / 10")) _row @Evaluate("(&creation_instance+0) % 10") xOffset @Evaluate(&_column * 10) yOffset @Evaluate(&_row * 10) @Offset(&xOffset,&yOffset) @RemoveAttributes(xOffset,yOffset,creation_instance) FACTORY_DEF * TestFactory FACTORY_NAME 2DGridCreator_Tester INPUT FEATURE_TYPE __TO_TESTER__ TEST Polygons == "Points" OUTPUT PASSED FEATURE_TYPE __TO_CLEANER__ OUTPUT FAILED FEATURE_TYPE __TO_CLEANER__ xPt @XValue() yPt @YValue() @XValue(&xPt,RESET) @YValue(&yPt) @XValue(&xPt) @YValue(@Evaluate(&yPt+10)) @XValue(@Evaluate(&xPt+10)) @YValue(@Evaluate(&yPt+10)) @XValue(@Evaluate(&xPt+10)) @YValue(&yPt) @XValue(&xPt) @YValue(&yPt) @GeometryType(fme_polygon) @RemoveAttributes(xPt,yPt) FACTORY_DEF * TeeFactory FACTORY_NAME 2DGridCreator_Cleaner INPUT FEATURE_TYPE __TO_CLEANER__ OUTPUT FEATURE_TYPE 2DGridCreator_CREATED # ------------------------------------------------------------------------- # FACTORY_DEF * TransporterFactory FACTORY_NAME TransporterSender INPUT FEATURE_TYPE 2DGridCreator_CREATED MODE TCP/IP HOST localhost INITIATION_SEQUENCE ESTABLISH DIRECTION SEND PORT 8586 FILE_NAME <Unused> FEATURES_PER_FILE <Unused> # ------------------------------------------------------------------------- # FACTORY_DEF * TransporterFactory FACTORY_NAME TransporterReceiver MODE TCP/IP HOST localhost INITIATION_SEQUENCE CONNECT DIRECTION RECEIVE PORT 8586 OUTPUT TRANSPORTED FEATURE_TYPE TransporterReceiver_TRANSPORTED # ------------------------------------------------------------------------- # Set the directive to add all the meta-attributes to the features. # We do this so users see all possible information in the viewed # features. READER_META_ATTRIBUTES fme_feature_type fme_dataset fme_basename # First, set up the temporary directory that will be used for # the recordings we will be viewing (these three lines do this) # They assume that the WORKSPACE_NAME macro has already been set DEFAULT_MACRO WORKSPACE_TEMP_DIR INCLUDE [ if {[string length {$(WORKSPACE_TEMP_DIR)}] < 2} { if {[info exists env(TEMP)]} {set gVisualizerTemp $env(TEMP)} 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"; } ; if { [string length {}] > 0 } { set catter "" ; set comma "" ; foreach attr "" { set catter "$catter$comma&$attr" ; set comma ",_," ; } ; puts "MACRO CATMAC [EMAIL PROTECTED]($catter)" ; } else { puts "MACRO CATMAC " ; }; set safeName "[regsub -all {[^a-zA-Z0-9]} {TransporterReceiver_TRANSPORTED} _]_[expr round(rand() * 1000000)]_[clock clicks]"; puts "MACRO SAFE_FFS_NAME $safeName"; ] # Make the temporary directory that the FFS files will live in. FACTORY_DEF * CreationFactory FACTORY_NAME TransporterReceiver_TRANSPORTED_DirCreator OUTPUT FEATURE_TYPE __nukeme__ @Tcl2("catch {file mkdir {$(WORKSPACE_TEMP_DIR)}}") FACTORY_DEF * TeeFactory FACTORY_NAME TransporterReceiver_TRANSPORTED_DirCreatorCleanerUpper INPUT FEATURE_TYPE __nukeme__ # Now route all the features into the recorder, changing their # feature type to the transformer name so that they view nicely FACTORY_DEF * TeeFactory FACTORY_NAME TransporterReceiver_TRANSPORTED_SetterUpper INPUT FEATURE_TYPE TransporterReceiver_TRANSPORTED OUTPUT FEATURE_TYPE __viewme__ FACTORY_DEF * RecorderFactory FACTORY_NAME TransporterReceiver_TRANSPORTED_Recorder INPUT FEATURE_TYPE __viewme__ @FeatureType(TransporterReceiver_TRANSPORTED$(CATMAC)) FEATURE_FILE "$(WORKSPACE_TEMP_DIR)/$(SAFE_FFS_NAME).ffs" MODE RECORD_PASS_THROUGH FACTORY_DEF * CreationFactory FACTORY_NAME TransporterReceiver_TRANSPORTED_Trigger CREATE_AT_END OUTPUT FEATURE_TYPE __nukeme__ @TCL("lappend gVisualizerFilesToView $(SAFE_FFS_NAME)") FACTORY_DEF * TeeFactory FACTORY_NAME TransporterReceiver_TRANSPORTED_CleanerUpper INPUT FEATURE_TYPE __nukeme__ # ------------------------------------------------------------------------- FACTORY_DEF * TestFactory FACTORY_NAME "Final Output Feature Type Router" INPUT FEATURE_TYPE * TEST @Value(__wb_out_feat_type__) != "" OUTPUT PASSED FEATURE_TYPE * @FeatureType(@Value(__wb_out_feat_type__)) # ------------------------------------------------------------------------- DEFAULT_MACRO WORKSPACE_TEMP_DIR INCLUDE [ if {{$(WORKSPACE_TEMP_DIR)} == {}} { puts {MACRO __WB_ENABLE_VISUALIZER__ no} } else { puts {MACRO __WB_ENABLE_VISUALIZER__ *} } ] FACTORY_DEF $(__WB_ENABLE_VISUALIZER__) CreationFactory CREATE_AT_END OUTPUT FEATURE_TYPE __NUKEME__ @TCL("eval FME_Execute System \173fmeview /ownffs {$(WORKSPACE_TEMP_DIR)} $gVisualizerFilesToView & }") FACTORY_DEF * TeeFactory INPUT FEATURE_TYPE __NUKEME__
-- Jeff Konnen INSER SA Switzerland +41 (0) 21 643 77 11
