Before" and "After" property sets allow you to transfer properties from one clip into another clip. This will allow you to share the same values to any clip depth level.
It is similar to a subroutine call in any language. And just like in any structured or object-oriented language, each caller must pass things to whatever it calls, and return things to whatever calls it, propagating values back up.
As with some languages, we also allow you to (some would say) "violate" typical object-oriented programming practices and directly access the properties of some other item.
When you access a property, you access it through a starting point and a "path". And just like traversing a directory structure in the file system, ".." is available. For example, if you knew that a parent two levels above you has a property named "X", you could use the property path "../../X". Or, if you know your parent Track has a property named "X" you could use a starting point of "Track" and a path of simply "X". Just as with traversing a file system hierarchy, you need to be aware of where you are in the hierarchy in order to traverse it.
We would suggest that you come up with naming standards and/or documentation of the "input" and "output" properties of each Clip, so that when you "call" a Clip you know what values to set with the "Before" propset and what values to get with the "After" propset. This is basically equivalent to making a subroutine call in a language that supports output parameters -- when you make the call, you have to map the input values to parameters the subroutine takes, and you have to map the output values that the subroutine returns to where you want them to go.
We would not recommend using Global Properties as they require Repository access, since they are persisted, and therefore would affect performance. They are also sort of the moral equivalent to "global variables", which some would frown on using in a structured language for value passing.
The link below is a very informative video on this topic:
Example Case of Property Sets Before:
Passing Seed Data values from the Parent Clip to a nested Clip. Property Sets Before will be brought into a clip before the clip has been run.
First, create the Seed Data property within the Parent Clip:
Then, select the Login clip and select the Property Sets Before:
Select the 3 dots button [...] next to the Path value and this dialog will open, where you can select any property from any level. We will be selecting the username value from the Users Seed Data at the parent clip level:
Finally, the Username and Password properties inside the Login clip will be set to the values of UserDetails.username and UserDetails.password from the parent clip:
Example Case of Property Sets After:
A clip has been run and a value from this clip needs to be passed into another embedded clip. Property Sets After will handle this.
Example: Our Login clip has been completed and we need to pass the sessionID into our next embedded clip Buy.
First, Select the Login Clip and the Selected Tab, and the Property Sets After button:
Then select the 3 dots button [...] next to the Path value and this dialog will open, select the property we would like to store our newly created sessionID within. For this case we want the sessionID within the Buy clip to retain our Login clips sessionID after Login has been run:
Finally, it will look like this: