Change state recursively in a workflow transition
For all that, you need to transition the children objects automatically when the parent object is transitioned. To this effect, you will need to create a script as follows. Note that this script will apply the same transition to child objects as is being applied to the parent object. Hence, you may get errors if the child objects do not currently support that transition.
#retrieve children objects
children = context.ZopeFind(state_change.object, search_sub=1)
wftool = context.portal_workflow
#loop through the children objects
for _, obj in children:
#transition each object
wftool.doActionFor(obj, state_change.transition.id)
Then, for each transition, apply the script (before, for instance).
You will also need to give the proxy role "Manager" to the script (accessing portal_membership requires "Manage portal" permission).
You are good to go!
Many thanks to Dieter Maurer, Raphael Ritz and Yannick Biet for their help.

