It would be good to show an example with multiple branching steps that are determined by results from previous steps and computed from step templates.
One such example could be a workflow that accepts a VPR from the client in the first step and responds with VCs in the either the next step or a subsequent one, where intermediate steps do not generate any output to send to the client, but just store results for the step templates to use.
So one idea:
First step: Allows an exchange client to (optionally) send its own VPR (optionally validated against a schema as well).
Second step: Uses the stored VPR (from exchange.variables.results[firstStep]) in its step template to either: send either a stored VP with VCs or issue VCs into results. The next step (none or third step) is determined by this choice.
Third step: Include the issued VCs from step 2 in a VP, along with other VCs that are issued in this step.