Question

How to use Variable Setter and Retriever together?

  • 16 April 2021
  • 4 replies
  • 26 views

Badge +8

New workspace >> add Creator >> add VariableSetter >> define a variable name and a value >> add VariableRetriever >> connect Setter to Retriever.

>> Run --> I get warning about Retriever being used without corresponding Setter. This doesn't make sense, they are clearly connected.

2021-04-15 14_51_34-_NONE → NONE (Untitled) - FME Workbench 2020.2Question 2: why does the Setter output use the name of the Creator (_creator_instance) and not the name I defined in the settings?

 

2021-04-15 14_58_16-_NONE → NONE (Untitled) - FME Workbench 2020.2 

 

 

 

 


4 replies

Userlevel 4
Badge +25

Q1:

I think this only occurs when you're using Feature Caching and do a partial run that does include the VariableRetriever but not the VariableSetter. In other words: in that case the variable is not set. The solution is to include the VariableSetter in that run (e.g. by running from that transformer) or simply not using feature caching.

 

Q2:

_creation_instance is the attribute created by the Creator, the variable you're setting is not actually an attribute of the feature yet, that's what the VariableRetriever is for.

Badge +8

Q1:

I think this only occurs when you're using Feature Caching and do a partial run that does include the VariableRetriever but not the VariableSetter. In other words: in that case the variable is not set. The solution is to include the VariableSetter in that run (e.g. by running from that transformer) or simply not using feature caching.

 

Q2:

_creation_instance is the attribute created by the Creator, the variable you're setting is not actually an attribute of the feature yet, that's what the VariableRetriever is for.

Q1: Yes feature cache is on, but the variable has been set, or at least it should have been. See screenshot and the (1) on the connectors preceeding Retriever. Turning feature caching off isn't really an option at this stage. It's too important to be able to inspect what's passed through the processing chain as I develop.

 

Something wierd here. If I select a "Creator-->Set-->Retrieve" chain from a workspace where it doesn't work, paste into a new workspace, change nothing, run it: It works. Now, if I select this 3-part chain in the new workspace and copy-paste it back to the old workspace: it continues to work. And: the original chain continues to not work. Inspecting all the properties of the 3 components shows nothing different other than the component name (appended underscore and number: Creator_2, VariableSetter_2, ...).

Attached is a workspace that demonstrates this, on my machine anyway.

 

I tried various combinations of Run (F5), Run Entire (Shift-F5), Run To This, and disabling caching, running, and then enabling caching and running again. I did not identify a path where setting and retrieving would work or not work reliably. Meaning I did not identify a workspace creation sequence where I could reliably get the var-set-retrieve sequence to always work, or always not work.

 

 

 

Userlevel 4

Q1: Yes feature cache is on, but the variable has been set, or at least it should have been. See screenshot and the (1) on the connectors preceeding Retriever. Turning feature caching off isn't really an option at this stage. It's too important to be able to inspect what's passed through the processing chain as I develop.

 

Something wierd here. If I select a "Creator-->Set-->Retrieve" chain from a workspace where it doesn't work, paste into a new workspace, change nothing, run it: It works. Now, if I select this 3-part chain in the new workspace and copy-paste it back to the old workspace: it continues to work. And: the original chain continues to not work. Inspecting all the properties of the 3 components shows nothing different other than the component name (appended underscore and number: Creator_2, VariableSetter_2, ...).

Attached is a workspace that demonstrates this, on my machine anyway.

 

I tried various combinations of Run (F5), Run Entire (Shift-F5), Run To This, and disabling caching, running, and then enabling caching and running again. I did not identify a path where setting and retrieving would work or not work reliably. Meaning I did not identify a workspace creation sequence where I could reliably get the var-set-retrieve sequence to always work, or always not work.

 

 

 

I realize this is an old thread, but I just created an Idea for this issue, feel free to upvote to gain visibility: https://community.safe.com/s/bridea/a0rDm000000CbI9IAK/variableretriever-variablesetter-should-play-nice-with-feature-caching

Badge +8

Q1: Yes feature cache is on, but the variable has been set, or at least it should have been. See screenshot and the (1) on the connectors preceeding Retriever. Turning feature caching off isn't really an option at this stage. It's too important to be able to inspect what's passed through the processing chain as I develop.

 

Something wierd here. If I select a "Creator-->Set-->Retrieve" chain from a workspace where it doesn't work, paste into a new workspace, change nothing, run it: It works. Now, if I select this 3-part chain in the new workspace and copy-paste it back to the old workspace: it continues to work. And: the original chain continues to not work. Inspecting all the properties of the 3 components shows nothing different other than the component name (appended underscore and number: Creator_2, VariableSetter_2, ...).

Attached is a workspace that demonstrates this, on my machine anyway.

 

I tried various combinations of Run (F5), Run Entire (Shift-F5), Run To This, and disabling caching, running, and then enabling caching and running again. I did not identify a path where setting and retrieving would work or not work reliably. Meaning I did not identify a workspace creation sequence where I could reliably get the var-set-retrieve sequence to always work, or always not work.

 

 

 

done!

Reply