Wie kann ich in JIRA einen bestimmten Status meines Workflows so einschränken, dass er nur ein Problem pro Zeit enthält?

Wie kann ich in JIRA einen bestimmten Status meines Workflows so einschränken, dass er nur ein Problem pro Zeit enthält?

Da wir unseren gesamten Workflow automatisieren, möchte ich einen bestimmten Status (AKZEPTANZ) haben, der nur EIN Problem pro Zeit akzeptiert. In unserem Board sollte also kein normaler Benutzer in der Lage sein, eine zweite oder mehr Karten in diese Spalte zu verschieben, während sich dort eine Karte befindet.

Antworten (1)

Mit JIRA können Sie standardmäßig die Anzahl der Probleme als Spaltenbeschränkung in den Spalteneinstellungen der Konfiguration eines bestimmten agilen Boards festlegen. Ich glaube jedoch nicht, dass dies einen Statuswechsel verhindert. Es verwendet einfach visuelle Indikatoren (Farbe der Spalte), wenn die Anzahl der Probleme das definierte Limit erreicht oder überschreitet.

Um es tatsächlich zu blockieren, müsste eine Bedingung zu allen Übergängen hinzugefügt werden, die in Ihren Workflows auf „Akzeptanz“ zeigen. Keine nativen JIRA-Bedingungstypen können dies für Sie tun (ab JIRA 7), aber es gibt Add-Ons, die helfen. ScriptRunner und JJupin kommen mir in den Sinn, ebenso wie JIRA Misc Workflow Extensions, die Unterstützung für das Schreiben von groovigen Skriptbedingungen hinzufügen.

Nun, ich habe keinerlei Kenntnisse in Groovy, und ich breche jede Programmierregel für Anfänger im Buch, aber ausgehend von einem Beispiel in der ScriptRunner-Dokumentation für ein Skript, das JQL verwendet, konnte ich etwas erstellen, das funktioniert, wenn es als Skript verwendet wird Zustand:

import com.atlassian.jira.component.ComponentAccessor
import com.atlassian.jira.issue.search.SearchProvider
import com.atlassian.jira.jql.parser.JqlQueryParser
import com.atlassian.jira.web.bean.PagerFilter

def jqlQueryParser = ComponentAccessor.getComponent(JqlQueryParser)
def searchProvider = ComponentAccessor.getComponent(SearchProvider)
def issueManager = ComponentAccessor.getIssueManager()
def user = ComponentAccessor.getJiraAuthenticationContext().getLoggedInUser()

// edit this query to suit
def query = jqlQueryParser.parseQuery("project = ABC and status = ACCEPTANCE")

def results = searchProvider.search(query, user, PagerFilter.getUnlimitedFilter())

return (results.total == 0)

(angepasst von JQL-Abfrage ausführen vom 26.11.2016)

Die Abfrage kann beliebig sein, sodass Probleme im eingeschränkten Status zurückgegeben werden. Die letzte Zeile gibt im Grunde nur dann TRUE zurück, wenn die Abfrage keine Ergebnisse hat, die Bedingungen der Bedingung erfüllt und der Statusübergang angezeigt wird.

Wenn Sie möchten, dass es portierbarer ist, gibt es wahrscheinlich eine Möglichkeit, den Projektschlüssel der aktuellen Ausgabe abzurufen und ihn in JQL zu verketten. Aber wenn dies nur in einem Projekt passiert, können Sie die Extras überspringen.