Tipp: Um die Expressions in diesem Artikel direkt auszuprobieren, empfehlen wir die freie Jira Cloud App Expression Tester. Damit lassen sich Jira Expressions spielend leicht direkt in Jira ausprobieren.
ABER WAS GENAU SIND JIRA EXPRESSIONS?
Zuerst die kurze Antwort: Jira Expressions sind eine domänenspezifische Sprache mit der Daten aus Jira mit einem kurzen Ausdruck selektiert, aggregiert und verglichen werden können.
So, und nun die besser verständliche Antwort. Eine Jira Expression ist letztlich nichts weiter als eine kurze Formel, die von Jira ausgewertet wird und ein Ergebnis zurück liefert. Meistens begegnet man diesen Expressions beim Anlegen von benutzerdefinierten Workflow-Bedingungen und -Validatoren. Aber mit Jira Expressions lässt sich noch einiges mehr machen. So können App-Entwickler über Jira Expressions bestimmt UI-Elemente ein- und ausblenden oder Expressions über die REST API auswerten lassen. Die offizielle Dokumentation von Atlassian enthält einige Beispiele und eine komplette Referenz aller Datentypen. Wir von Jodocus sind richtig große Fans von Jira Expressions und verwenden diese recht häufig in den verschiedensten Anwendungsfällen.
EIN ERSTES BEISPIEL
Für unser erstes Beispiel nehmen wir einfach mal, wir wollten alle Kommentare eines Vorgangs sehen, aber sonst nicht weiter. Dies kann recht einfach über die folgende Jira Expression erreicht werden:
issue.comments
.map(c => c.body.plainText)
Diese Expression liefert den Text aller Kommentare eines Vorgangs zurück, etwa so:
[“Hello World “,”A small comment made by me”,”some comment”]
Ganz nett, oder? Exakt nur die Daten, die wir brauchen und sonst nichts. Keinerlei Overhead! Aber wie funktioniert das nun genau?
Eine Jira Expression wird immer in einem bestimmten Kontext ausgewertet. Der Kontext sind in diesem Zusammenhang die Daten die während der Auswertung zur Verfügung stehen. In unserem obigen Beispiel ist das der Vorgang CTP-1, welcher als ‚issue‘ in der Formel zur Verfügung steht. Einfach nur ‚issue‘ ist bereits eine eigenständige Jira Expression, wenn auch keine sehr komplizierte oder nützliche; issue gibt einfach nur den Vorgang selbst als Datensatz zurück.
Wir wollen jetzt aber die Kommentare lesen und diese sind als Attribut des Vorgangs verfügbar. Ein Attribut auslesen klappt einfach mit einem Punkt und dem Namen des Attributs:
issue.comments
Schon sehr viel besser, aber immer noch nicht ganz was wir wollen. Klar, das sind alle Kommentare, aber auch noch so viel mehr Informationen als wir wollen. Hier kommt uns die map()-Funktion entgegen. Mit map() können wir eine kleine Formel auf alle Elemente einer Liste anwenden und bekommen so eine angepasste Liste zurück. Wir können also auf jeden Kommentar in der Liste der Kommentare eine Formel anwenden, das von einem großen Kommentar-Datensatz nur den Text zurück liefert. Und diese Formel heißt:
c => c.body.plainText
In natürliche Sprache übersetzt: Hey Jira, für jeden Kommentar-Datensatz aus dieser Liste, nennen wir den mal c, hätte ich gerne das Attribut c.body.plainText.
Und genau das macht Jira dann auch, und wir bekommen eine hübsche Liste mit nur den Kommentartexten.
Und das ist es auch schon: Eine kurze, nette Jira Expression mit der wir alle Kommentartexte zu einem Vorgang erhalten können. Damit könnte man jetzt zum Beispiel die REST-API befragen oder die Expression im Expression Tester ausführen und das Ergebnis als JSON herunterladen.