Skip to main content
Solved

Automation Efficiency

  • June 29, 2026
  • 5 replies
  • 27 views

deanhowell
Influencer
Forum|alt.badge.img+24

I have an automation that passes a value from one workbench to another.

The first workbench reads in a list of lines from one database table, creates a new attribute using one of the attributes and passes that attribute through the output port to a second workbench. The second workbench is used to find the closest features to the input feature.

My issue is there is 300,000 records in the table and the process is very slow but since the automation calls a second workbench, I end up with 300,000 queued jobs. So is not only hogging the queue but if it fails for any reason there is a momumentental task to deleted all the queued jobs.

Is there a better way for me to do this, either in a single work bench or a setting that grabs the first record, passes that to the second workbench and then when completed gets the next record?

 

 

 

 

Best answer by deanhowell

Thanks everyone for the input. I was just over thinking it and just need a few extra ‘group processing’ settings and it runs through each record as expected.

5 replies

j.botterill
Influencer
Forum|alt.badge.img+58
  • Influencer
  • June 29, 2026

First tip in FME form is to turn off the feature cache

 

If you have FME Flow - consider creating an automation

If the processing must remain separate, add an Automation Writer from FME Form.

The workspace can batch features and hand them off to an Automation rather than creating a new Flow job for every record.

This allows you to:

  • Control throughput.
  • Batch multiple features into a single message.
  • Reduce queue pressure dramatically.
  • Maintain decoupled processing.

 

If you only have Form, then batch the records with a parent workspace creating groups, then using a workspace runner, pass the batch identifier or SQL to the second workspace, where you only run X records per run instead of 300k


s.jager
Influencer
Forum|alt.badge.img+26
  • Influencer
  • June 29, 2026

Why would you want to do it that way? Why not use an SQLCreator (or if the process is triggered by a single feature/event/message, an SQLExecutor) to read the rows from the database, then do whatever it is needs doing with those rows in a single workspace? It’s one of the reasons I haven’t been using Automations yet, there really isn’t much reason for me to do so. 

Make sure to change the defaults on the SQLCreator as well, so it reads those 300.000 rows in as few batches as possible. If you really need to process all of those rows one by one, take a look to see if you can do the work in the database itself with some clever sql. For all modern RDBMS’ses 300.000 rows is peanuts, so I always try to let them do as much work as possible.


j.botterill
Influencer
Forum|alt.badge.img+58
  • Influencer
  • June 29, 2026

definitely a database driven workspace has many advantages, I prefer orchestrating sub jobs/routines myself

either way you can’t get away from FME being a feature/record based processer. Performance can only be improved

  • turning off the cache in Form(use inspector transformer where you need a result to inspect
  • with cache, collapse bookmarks 
  • minimising group based transformers
  • jdbc over odbc?
  • using SQL to run before or after writing - advanced pattern - disable and enable index your table. Without indexes:
    • Faster bulk inserts
    • Reduced transaction logging
    • Less page splitting

Working with Databases & Data Warehouses and FME – FME Support Center


hkingsbury
Celebrity
Forum|alt.badge.img+73
  • Celebrity
  • June 29, 2026

Whilst 300,000 features seems a lot, it should be managable by FME in one process. The (simplified) way I read your problem is you want to find the closest set of features to your input lines.

The NeighbourFinder should be able to handle this amount of features pretty easily


deanhowell
Influencer
Forum|alt.badge.img+24
  • Author
  • Influencer
  • Best Answer
  • June 30, 2026

Thanks everyone for the input. I was just over thinking it and just need a few extra ‘group processing’ settings and it runs through each record as expected.