Technisches Konzept - garaio/jira2vertec-Gateway GitHub Wiki

JIRA Plug-in

REST Service

Um die Projekt und Phase Dropdowns des CustomFields per JQuery zu füllen, wird ein REST-Plugin implementiert, welches diese Daten liefert.

Custom Field

Um die Vertec Phase für einen Jira-Task oder Subtask auszuwählen, wird ein neues CustomField benötigt. Projekt und Phase müssen nacheinander ausgewählt werden können (-> Cascading Select). Die Daten für diese Combos werden über ein REST-PLugin von Vertec bezogen.

Event-Listener

Um bei Mutationen an Worlog-Einträgen im Jira notifiziert zu werden, muss ein Jira-Event-Listener implementiert werden. Der Code dazu kann wohl teilweise vom JiraToWombat Gateway übernommen werden.

Konfiguration

Das Plugin wird über ein Konfigfile konfiguriert.

Zu konfigurierende Werte:

Vertec Service URL
Vertec User/Passwort
Default Vertect Phase wenn in Jira Zuordnung fehlt
Vertect Phase wenn Nachbearbeitung nötig
Projekt-Beschrieb in Projekt-Auswahl anzeigen
Maximale Länge des Projekt-Beschriebes (wenn aktiviert)
Caching aktivieren

Rules

  • Eine Leistung bezieht sich immer auf ein oder kein Worklog aus dem Jira. Die Id des Worklogs aus dem JIRA wird im Feld 'Leistungsreferenz' der Leistung abgelegt.
  • Die Vertec Phase wird auf dem Jira Issue konfiguriert. Wenn dies nicht der Fall ist und es sich um einen Subtask handelt, wird diejenige des Parent-Issues verwendet (sofern eine konfiguriert ist).
  • Wenn auf einem Jira Issue die Vertec Phase konfiguriert oder mutiert wird, dann werden automatisch alle bereits vorhandenen Leistungen aus diesem Issue in Vertec auf die neu konfigurierte Projektphase umgebucht. Ausgenommen von dieser Regel sind Leistungen, deren Datum vor dem Sperrdatum liegt. In diesem Fall wird die alte Phase beibehalten.
  • Wird ein Subtask, auf welchem keine Phase konfiguriert ist, zu einem anderen Parent-Issue verschoben, dann werden ebenfalls alle vorhandenen Leistungen aus diesem Subtask in Vertec auf die Projektphase des Parent-Issues umgebucht.
  • Neben dem Sperrdatum wird auch die persönliche Freigabe des Benutzers beachtet. Da hierbei die Regeln identisch sind, wird letzteres aber nicht extra erwähnt.
Es existiert ... Reaktion des Systems
... keine Leistung zum gegeben Worklog. Leistung wird im Vertec erstellt.
... keine Leistung zum gegeben Worklog mit einer inaktiven Phase. Leistung wird im Vertec mit konfigurierter Nachbearbeitungs-Phase erstellt.
... keine Leistung zum gegeben Worklog, Datum ist vor dem Sperrdatum. Leistung wird im Vertec mit konfigurierter Nachbearbeitungs-Phase erstellt.
... keine Leistung zum gegeben Worklog, keine Phase vorhanden. Leistung wird im Vertec mit konfigurierter Default-Phase erstellt.
... eine offene Leistung zum gegebene Worklog. Leistung wird im Vertec aktualisiert.
... eine offene und eine oder mehrere verbuchte Leistungen. Die offene Leistung wird so aktualisiert, dass die Summe aller Leistungen mit dem Worklog übereinstimmt. Resultiert daraus eine offene Leistung mit dem Wert 0, so wird diese gelöscht.
... mehrere offene Leistungen. Eine der offenen Leistungen wird so aktualisiert, sodass die Summe aller Leistungen mit dem Worklog übereinstimmt. Falls die neuste offene Leistung dadurch den Wert 0 erhält, wird diese gelöscht.
... eine oder mehrere offene Leistungen mit anderem Datum. Alle offenen Leistungen werden auf das Datum des WorkLogs gesetzt.
... eine verbuchte Leistung mit anderem Datum (Datum wurde geändert). Die Differenz wird auf das aktuelle Datum gebucht.
... eine verbuchte Leistung auf einer andere Phase. Es wird eine Korrekturleistung auf die Phase des Issues gebucht.
... eine verbuchte Leistung auf einer inaktive Phase. Es wird eine Korrekturleistung auf die Konfigurierte Nachbearbeitungs-Phase gebucht und muss anschliessend manuell korrigiert werden.
... eine verbuchte Leistung mit einem Datum vor dem Sperrdatum. Es wird eine Korrekturleistung auf die Konfigurierte Nachbearbeitungs-Phase gebucht und muss anschliessend manuell korrigiert werden.
... eine offene Leistung auf einer inaktiven Phase. Die offene Leistung wird aktualisiert.