We use Named Parameters for parameterized connections in a Configuration artifact. Our sources and targets are databases. What I have found is you have to access the connection in order to populate NamedParameters, so we have one dataflow that just has dummy read table operators connected to trash, just to populate NamedParameters.
We also use utility.store_string (and store_integer) and their retrieve counterparts so that one dataflow can set the values and one or more dataflows later can access them. We have a configuration file that has the name/value pairs that we load with utility.store_string. In other cases, we use a store function to return some data (usually a max sequence from some logic that counts records processed and then later in the same dataflow or another dataflow, we can do something with that max value.
I am not sure how you are getting the NamedParameter table to load. I have used this to check in an initialize function whether the table is actually populated:
for k,v in pairs(expressor.NamedParameters) do