Your problem statement is very close to something we are currently doing with the Problem Report workflow as well. I cannot answer the question directly, but part of what we're doing is based on a slightly different approach. Perhaps this might give you a different perspective.
We also want to route a task to a user based on a prior user selection. Our approach is based on something we did successfully for a promotion workflow:
- add/maintain our own Lookup table in the database
- this lookup table basically contains a list of users and locations
- create an info*engine task that takes the location as an input parameter and returns the relevant username from the Lookup Table.
- within the workflow, use a robot that calls the info*engine task, passing the location that was entered earlier in the workflow from another activity. The robot expression uses an orgserviceshelper method to return the user properly, into a workflow variable (of type wt.org.WTUser)
- the next activity in the workflow is then routed by "variable" instead of by usual "role". The variable of course being the workflow variable that was just populated by the robot.
Our approach means that the lookup table is not really configurable by container (though we could mimic that by adding another column), our need does not require it. Maintenance of the lookup table is done by a simple web gui outside of Windchill, for admin staff.