Normally you declare flowlinks and datalinks next to each-other and whenever the logic follows a flowlink, the related datalinks are looked up and all the output values will be provided to the target inputs. This can however create problems if you have different flowlinks that go to the same target element, but that should connect different outputs to the same input. You are now able to tie datalinks to a specific flowlink.
For example:
<element id="ShowPaste" implementation="elements.ShowPaste"
url="paste/*" pathinfo="strict">
<flowlink srcexit="show current" destid="ShowPaste">
<datalink srcoutput="currentid" destinput="id"/>
</flowlink>
<flowlink srcexit="show parent" destid="ShowPaste">
<datalink srcoutput="parentid" destinput="id"/>
</flowlink>
<flowlink srcexit="show amendment" destid="ShowPaste">
<datalink srcoutput="amendmentid" destinput="id"/>
</flowlink>
</element>
In the example above, three flowlinks point to the same ShowPaste element. However, depending on the triggered exit, different entries need to be shown. This means that the IDs of either the current paste, the parent paste or an amendment need to be provided to the "id" input of ShowPaste.