Skip to main content
Question

Navigation through the workbench

  • September 5, 2014
  • 7 replies
  • 8 views

I have a FME workbench here and at certain points the output of transformers is connected to two other transformers. So the workbench get seperated in several branches. I wonder in which sequence order the transformers are activated. This is important, because in the several branches editing is done on the same objects.

 

Is it possible to steer this sequence order?

7 replies

david_r
Celebrity
  • September 5, 2014
Hi,

 

 

the short answer: it's not very easy to control the sequence order between separate branches.

 

 

But it is possible to influence it to some degree, start looking here: http://fmepedia.safe.com/articles/FAQ/In-what-order-are-features-processed-in-a-workspace

 

 

David

 

 

 


Forum|alt.badge.img
I agree with David that it can be challenging. In addiiton to ordering your readers, I have used FeatureHolders with some success in the past.

 

 

Recently, I built a tool with a similar challenge. I needed feature A to be read in first but it had <10 features. Feature B I read in second except that it had 3MM+ records. Now normally I would do it the other way around as FME can start processing each feature as it comes in but I put it second in the reader order as Feature A had some steps I needed to process before be even entered the workbench. Long (and confusing) story short, I used a FeatureHolder to reign in Feature B. 

 

 

A feature similar to ArcGIS model builders "precondition" would be a nice and welcome addition I think. 

 

 

 


takashi
Evangelist
  • September 6, 2014
Hi,

 

 

If your question is how to control processing order of transformers belonging to different data flows, I don't think it's possible and also important in general. Once you branch a data flow into several flows, FME creates copies of feature objects for each flow at the branching point; transformations against features on a flow will not cause any influence to features on other flows.

 

 

Takashi

  • Author
  • September 8, 2014
The question was not about the sequence order of the features, but the way one feature is traveling through the network of transformers in the work bench. The input of David R. and Takashi give me some information, though the answers are quit different from each other ???

david_r
Celebrity
  • September 8, 2014
Hi,

 

 

the answer isn't clear, it depends entirely on your workspace and the transformers used, how they're configured and how they're connected.

 

 

Some factors to consider would be blocking transformers (the FeatureMerger is a good example), transformers with Group By clauses, custom transfomers (may even contain loops), etc. Some transformers will also behave differently depending on your settings, such as the NeighborFinder and the "Candidates first" option.

 

 

You can, howerver, use the inspection point feature (http://docs.safe.com/fme/html/FME_Workbench/Default.htm#about_feature_inspection.htm) in the FME Workbench to "debug" the order of features in a particular workspace, by settings inspection points at different places and observe how they're triggered when you execute your workspace.

 

 

David

Forum|alt.badge.img
  • September 9, 2014
Each feature is (usually) processed one at a time in FME (it's NOT one transformer at a time processing all features). and the current feature being processed will pass through many transformers in the workspace as far as it can, until it is either written out or has to wait for other features.

 

 

Why would it wait for other features? Because it is part of a group operation (for example clipping is a group operation - you can't clip a Clippee feature until you also have the Clipper boundary features).

 

 

So it comes down to knowing which transformers process on a feature-basis, and which on a group basis - but you can usually tell from the action it is trying to perform.

 

 

The new "live feature counts" functionality in 2015 will help to show the order of featues being processed (demo at: http://screencast.com/t/OJCNzJpCbm) as would turning on Feature Inspection.

 

 

Theoretically, when there are two connections from the same output port, the order is defined by the order in which those connections were made in the workspace - in practice that should work, but I don't know if that's really an official piece of functionality (i.e. we wouldn't maintain backwards compatibility for it) so relying on it would be dangerous.

 

 

Hope this is of use

 

 

Regards

 

 

Mark

runneals
Contributor
Forum|alt.badge.img+22
  • Contributor
  • May 20, 2015
Reviving this thread with FME 2015 :)

 

Agreed! It would be nice to be able to do pre-condition statements, especially for workspaces like the Directory Watch (see https://knowledge.safe.com/articles/How_To/Directory-Watch-tutorial). Currently there are 2 workspaces/engines needed, but if there was preconditioning, it could get it down to 1.

Cookie policy

We use cookies to enhance and personalize your experience. If you accept you agree to our full cookie policy. Learn more about our cookies.

 
Cookie settings