Is it possible to steer this sequence order?
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.
Page 1 / 1
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
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.
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
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 ???
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
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
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.