Question

Order of features in automations

  • 27 April 2020
  • 2 replies
  • 12 views

Badge +3

Hi,

I am trying to understand the behavior of features etc. in 2020 Automations, primarily the processing order. Below is a quick example of a test I made and it appears that when features come out and trigger an external action, they are processed in parallel (btw, I really miss the debugging features of Workbench where I can see the features move across and preview the data!). Is this observation correct? In my example, "a" was supposed to happen and finish before "b", "c", and "d" are performed. If I made the HTTP call within a workspace, this issue would not happen since it's all serial: features are processed in the order they arrive at each transformer (for the most part).

I'm not finding a lot of documentation for creating complex automations where you can control what gets processed based on a previous result, limited looping (ex: allow only 20 loops to prevent endless looping) etc. Looping, which can be done within a custom transformer, can be controlled to prevent infinite looping but am not seeing anything directly related to this in automations.

Back to the above test example, I actually need to update "b", "c" and "d" when "a" completes (update some parameters before I have the complete HTTP string to GET). I can do all this is a workspace but am trying to leverage and learn to use automations instead. Am I trying to use the wrong tool for the job or is there functionality in automations that I am just not aware of and how to use?

Please note that the http call I am making will always stream back a success (it runs an FME Server workspace that streams back a json response). So to determine whether it was a true success or to parse data from that response to update the next URLs to GET, I have to use other workspaces to parse the info and then make a new HTTP call or do some kind of looping. Hope this makes some sense, thanks for reading and for any insight!


2 replies

Userlevel 4
Badge +26

Interesting finding - We are very much used to the way FME processing things in order aren't we.

 

If you are calling an FME Server workspace can't you just use a workspace node rather than a HTTP call? Or is it on another server?

Looks like there needs to be some kind of 'wait' node. Then you'd be able to send 'a' into one HTTPRequest node and have b,c and d waiting until a was complete.

 

 

Automations are still in early days I guess and are mostly build around the old notification system with some new handy things like being able to make an http request.

 

 

It would also make sense for Automations to have some way of dealing with JSON without the need of a workspace, even if it was just drilling down to a particular Key Value pair in a response.

 

 

Badge +3

Exactly my thoughts...you have to stop thinking "workspace" when looking at automations! I am just experimenting at this point and trying to find out if it makes sense to use looping within an Automation or whether to do looping in a custom transformer. So far I'm not seeing any value for what I'm trying to do (not criticising Automations in any way...just trying to understand whether they make sense for certain workflows). You probably have to use a lot of mergers etc. in automations or you end up triggering a workspace multiple times rather than processing all inputs as if they were features, and triggered workspaces as if they were transformers. Hope this makes sense...in my scenario I need to take a single json as input in some cases, then process that once within a workspace (fragment it into multiple features, process and re-assemble etc.).

The reason I used an http external action within an automation was because I was trying to learn how to pass data back and forth especially using the new automation writer. And actually having the http caller work in parallel could be useful (and the time spent running in the automation vs. a workspace can also free up precious engine time). However for what I'm currently working on, I think a workspace that encompasses all the logic and creating custom transformers for looping if necessary, is still the way to go for me, and not just because I'm wore comfortable in Workbench.

Reply