Hallo Karim,
eine spannende Frage, die sich glaube ich gar nicht so leicht beantworten lässt.
Wer einen Schritt erhalten hat, wird in der Tabelle JRINCIDENTS festgehalten. Dort kann neben der Rolle einer Einzelperson (#Username#) auch eine JobRouter-Rolle stehen. Auch dafür kann man ja theoretisch eine Vertretung einrichten, damit einen Person XY in der Rolle YZ vertritt.
Ich würde bei diesem Problem wie folgt vorgehen:
In einer PHP-Dialogfunktion über die WorkflowID den recipient (User oder Rolle) aus der JRINCIDENTS ermitteln und dann mit dem aktuellen User abgleichen. Bei echten Rollen mit mehreren Usern könnte man noch schauen, ob die Person selbst in der Rolle ist oder für diese Rolle Vertretung macht. nktion über die WorkflowID den recipient (User oder Rolle) aus der JRINCIDENTS ermitteln und dann mit dem aktuellen User abgleichen. Bei echten Rollen mit mehreren Usern könnte man noch schauen, ob die Person selbst in der Rolle ist oder für diese Rolle Vertretung macht.
Noch ein kleiner Nachtrag zum Feld "in_substitution_for":
Dieses wird erst gefüllt, wenn der Schritt gesendet wurde. Ich zitiere dazu mal das Handbuch: "Benutzername, der den Schritt hätte bearbeiten sollen, wenn der Schritt von einem Vertreter gesendet wurde.".