There is an Interface C which has parent as B and B has parent as A. Now I am passing via rule input from C it is working in B but not in A.
The value gets refreshed at A interface automatically. FYI the rule input data types are same for all 3 interfaces A, B and C.
Discussion posts and replies are publicly visible
If ri! Resets to null:A has a local! variable overwriting the rule input on refresh. -> Remove/fix that reassignment.Never receives the value :B is not forwarding the rule input to A. -> In A, explicitly bind ri!value: ri!value when calling B.ri! don't auto-propagate - each level must explicitly pass them.
Pass the rule inputs from A to B using keyword syntax and similarly from B to C. The refresh variable definition at A might be hindering the value reflection between the three interfaces. So dont use a!refreshVariable in interface A but have the keyword syntax take care of sync between all variables.
Check my blog post for connecting data flows in interfaces.
appian.rocks/.../
Are you experiencing this behavior in the Interface Designer or just in a User Input Task?
FWIW there is basically no limit to the number of parent/child levels that values can be referenced across, but the configuration has to be correct and may sometimes get tripped up due to factors more complex than a 1-sentence description of the issue. Any additional details (and/or screenshots or code snippets of your configuration across the various levels) would be helpful if the prior replies haven't already helped you solve it.
Values normally move from Parent to Child. So when C changes a value and sends it to B, B gets the updated value correctly. But A will not automatically get that updated value unless B explicitly sends it back to A using a save. A still has its own original local value. Since that local value is not updated when B or C changes it, A keeps showing the old value or resets during refresh. To make the updated value reach A, B must save the changed value back to A explicitly.