User, tell us your Jdev version, please!
A reason represents a unit of work and should not be coupled to other regions out things. Check out adfregioninteraction.html which describes interaction patterns between regions.
If you describe your use case we can advice on how to best handle the situation.
Jdev version: JDEVADF_188.8.131.52.0_GENERIC_130608.2330.6668
My usecase is to refresh one af:region when user changes a value and presses af:button in another region on the same page. While I realize we can achieve this through (1) contextual events (programmatic ppr), or (2) taskflow Refresh property set to ifNeeded and modifying a taskflow parameter value upon button-press (taskflow reinitialization), I was interested in whether declarative ppr can support such a requirement, and if not, why.
Declarative ppr will not work in your case. As you need to refresh a region from a button in another region. This leads to communication between region to region. Since both regions have their own context, you need to decide an approach to do this.
Conditional Refresh of regiones - (posted above)
Region to region communication:
i think only for refresh you should not use ContextualEvent , if you don't need to get -set any value
refresh- if needed and partial trigger on region is sufficient, and yes refresh -if needed only works when there is a change in input param value
so just take a parameter like- PARAM_REFRESH and set it's value (change) when you need to refresh other region (on button click)
i think it is the simplest way to achieve this
>I was interested in whether declarative ppr can support such a requirement,
>and if not, why.
Because, taskflow is built with set of different activities (ideally). You need to go back to the first default activity (depending on your taskflow design) or other activity based on some condition which cannot be notified to the target taskflow declaratively. As Timo suggested which you've correctly understood, use any of the two approaches you've mentioned.