I am working through the above episode and I have a sound understanding from previous discussions and interactions with Chris Muir wrt DC scopes and task flow transactions. I am just not sure that my understanding of the EO cache usage is 100% correct.
As in the example in the episode, a UTF calls BTF's set to shared and isolated scope. If in the shared scenario I edit the record on the shared BTF and return to the UTF, the changes will be visible to me. In the isolated scenario, changes made on the isolated BTF, will not be visible in the UTF. My understanding I need clarified is that if the VO is based on an EO, the changes made in both scenarios will be applied to the EO cache for that users session. For the user to be able to see the changes made in scenario 2, isolated scope, a refresh of the page/VO will retrieve the changed data from cache and not from a trip to the database.
Hi Leon, nice to hear from you, best wishes for 2014. Great to hear the TV episodes are prompting more questions.
Your question implies you think the EO cache is a singular construct shared either across sessions or across AM instances. It's not. Per root AM attached to a session, for each EO accessed by that AM (by 1 or more VOs), there is a single EO cache. As such for the scenario you're identifying, for one user, across the UTF/BTF boundary with an isolated data control scope, as two AM instances are created, even though at DT there is one EO, there will be two separate EO caches for each AM instance. This implies when you return from the BTF to the UTF, refreshing the page is not enough. You must force the VO to requery the data from the database.
Obviously you can test this in ADF, but also just use a JVM monitor to watch how many instances of EntityCache are created.
Keep the questions rolling.