Keep Issue Open Until Everything Blocking It Is Closed
This custom subroutine can be used to not allow users to transition an issue which is linked via linktype 'Blocking' to issues not in a user specified state. (you could easily extend this routine to allow the linktype to be user-specified as well)
When using the condition in a JIRA workflow the user must supply a single parameter 'closedstate' which contains the 'id' primary key value (1 or more, comma separated) of the issue state(s) the linked issues must be in to allow the workflow transition.
One big shortcoming to this simple task - no overriding of the condition is possible. In itself this is ok as you can just have it in a 'or' clause with an additional check for the groups the user is a member of. If however you wish to have more complicated logic - i.e.:
if (the user is a member of project-admin group AND all subtasks are closed) OR (user is a jira-administrator)
you have to create a 'meta-condition' class which contains the logic for the 'and' conditions. There is supposed to be a supported syntax with the JIRA 3.0.3 opensymphony osworkflow library but I haven't determined what this is yet.
Custom Workflow Condition Skeleton -> go here to get frame to use below subroutine.
You can deploy this subroutine into your instance by wrapping it in a custom workflow element plugin.