ADO-Arbeitselemente
Plugin: wkdoadowi
Namespace: lib/plugins/wkdoadowi/
Autor: Wolfgang van der Stille Wolfgang.van.der.Stille@gmail.com (The White Knight Labs)
Lizenz: GPL 2.0-only
Zweck
Bringt die Arbeitselemente eines Azure-DevOps-Projekts in die Projektarbeitsfläche: eine Trefferliste über WIQL mit Volltextsuche und fünf Filtern, eine Einzelansicht mit Feldern, Verknüpfungen, Kommentaren und Verlauf, und — abhängig von der Projektrolle — Anlegen, Ändern, Zuweisen, Kommentieren und Verknüpfen.
Alles läuft über ein einziges ADO-Dienstkonto; Leser und Mitwirkende brauchen keine eigene ADO-Lizenz. Die Autorisierungsgrenze ist die Projektrolle dieses Wikis, nicht eine ADO-Lizenz.
Zielgruppe: Administratoren und Entwicklerinnen, die verstehen wollen, was dieses Paket entscheidet.
Das Gegenstück zu wkdoadogit
| Paket | Was es aus Azure DevOps holt |
|---|---|
| wkdoadogit | Repositories: Dateibaum, Verlauf, Branches, Tags, Clone-Endpunkt |
| wkdoadowi | Arbeitselemente: Liste, Einzelansicht, Schreiboperationen |
| wkdoado | Beides darunter: Verbindungen, Anmeldeinformationen, der gehärtete REST-Client |
Nicht zu verwechseln mit wkdoworkitems, wkdoboards und wkdoqueries: die arbeiten auf einer lokalen Ablage dieses Wikis und haben mit Azure DevOps nichts zu tun. Beide Bestände zählen ab eins und lassen sich an ihren Nummern nicht unterscheiden.
Es wird nichts kopiert
Das Paket ist eine Sicht, kein Abgleich. Die Liste stellt eine WIQL-Abfrage; die Einzelansicht liest das Element im Augenblick des Öffnens; eine Änderung geht als JSON-Patch an denselben Server. Es gibt keinen zweiten Stand, der veralten könnte.
Was vom Server kommt und nicht im Code steht
Nichts an Prozessvorlagen-Vokabular ist hier hinterlegt. Gelesen werden:
| Angabe | Endpunkt |
|---|---|
| Arbeitselementtypen mit ihren Zuständen | {projekt}/_apis/wit/workitemtypes |
| Zustände eines Typs, mit Kategorie | {projekt}/_apis/wit/workitemtypes/{typ}/states |
| Felder eines Typs | {projekt}/_apis/wit/workitemtypes/{typ}/fields |
| Bereiche und Iterationen | {projekt}/_apis/wit/classificationnodes/… |
| Verknüpfungsarten | _apis/wit/workitemrelationtypes |
| Zuweisbare Personen | die Teams des Projekts und deren Mitglieder |
Die Antworten werden zwischengespeichert (Vorgabe sechs Stunden), ein Fehlschlag deutlich kürzer (Vorgabe zwei Minuten): eine unerreichbare Verbindung darf nicht bei jedem Seitenaufruf fünf Zeitüberschreitungen kosten, muss aber von selbst wieder anspringen.
Antwortet der Server nicht, bleibt das Vokabular leer — und ein Bedienelement ohne Auswahl wird nicht angezeigt. Es wird nie ein wahrscheinlicher Wert erfunden.
Was „offen" bedeutet
Azure DevOps ordnet jeden Zustand einer Kategorie zu: Proposed, InProgress, Resolved, Completed, Removed. Der Filter Nur offene schließt die letzten beiden aus. Zustandsnamen sind über Typen hinweg nicht eindeutig; ein Name gilt nur dann als abgeschlossen, wenn ihn kein Typ als offen führt. Ist im Filter ein Typ gewählt, entscheidet dessen eigenes Vokabular.
Test Case legt Design und Ready unter Removed, Test Suite auch In Progress. Das ist die Angabe des Servers, keine Annahme dieses Pakets.
Berechtigungen
Die Projektrolle kommt aus wkdocore — dieselbe, die über Seiten und Repositories entscheidet.
| Rolle | Lesen | Anlegen | Ändern | Kommentieren | Verknüpfen |
|---|---|---|---|---|---|
| keine | – | – | – | – | – |
| Leser | ja | – | – | – | – |
| Mitwirkender | ja | ja | ja | ja | – |
| Betreuer | ja | ja | ja | ja | ja |
| Administrator | ja | ja | ja | ja | ja |
Verknüpfen steht eine Stufe höher, weil es die Form eines fremden Arbeitsbestands ändert: ein umgehängtes Feature nimmt alle untergeordneten Elemente mit, und die Änderung erscheint im Verlauf des anderen Elements.
Vor jeder Ansicht wird zusätzlich die DokuWiki-ACL der umgebenden Seite geprüft. Ein Bedienelement, das abgewiesen würde, wird nicht gezeichnet — und an seiner Stelle steht die Anfrage nach der Rolle, die es erlauben würde.
Schreiben
| Operation | Wie |
|---|---|
| Anlegen | PATCH {projekt}/_apis/wit/workitems/${typ} mit add-Operationen |
| Ändern | PATCH _apis/wit/workitems/{nr}, test /rev als erste Operation |
| Kommentieren | POST {projekt}/_apis/wit/workItems/{nr}/comments |
| Verknüpfen | add /relations/- mit der Adresse, die der Server für das Ziel nennt |
| Verknüpfung lösen | remove /relations/{index}, Fassungsprüfung zwingend |
Nur Felder aus einer festen Liste werden geschrieben: Titel, Zustand, Zuweisung, Bereich, Iteration, Schlagwörter, Beschreibung, Reproduktionsschritte, Grund. Ein Formular, das jedes Feld schreiben kann, kann auch die Nachvollziehbarkeit überschreiben.
Nebenläufigkeit. Der Server antwortet auf eine fehlgeschlagene Fassungsprüfung mit HTTP 412 und TestPatchOperationFailedException; das wird als Konflikt gemeldet, nicht als Netzstörung. Der Patch wird ganz abgelehnt.
Nicht enthalten: Löschen (Azure DevOps verschiebt in einen Papierkorb, den dieses Wiki nicht wieder ausleeren kann), Anhänge hochladen, Felder außerhalb der Liste, gespeicherte Abfragen, Boards.
Bildschirme
do= | Was |
|---|---|
wkdoadowi | Trefferliste. Zugleich das Ziel des Projektbereichs Arbeitselemente. |
wkdoadowi_item | Einzelansicht; tab= wählt fields, links oder history. |
wkdoadowi_new | Formular für ein neues Arbeitselement. |
Schreiboperationen laufen als POST mit Sicherheitsmerkmal gegen dieselben Adressen und enden in einer Weiterleitung; der Ausgang reist als Kennung in der Adresse, nie als Text.
Ein AJAX-Aufruf wkdoadowi_states liefert die Zustände eines Typs für das Anlegeformular. Er liest nur und ist die einzige Stelle, an der dieses Paket JavaScript braucht — ohne ihn bietet das Formular die Zustände des zuerst gewählten Typs an, und der Server entscheidet.
Welches Azure-DevOps-Projekt gemeint ist
- Das Hinweisfeld der Verbindung, wenn es gesetzt ist.
- Sonst das ADO-Projekt, das die eingebundenen Repositories dieses Projekts am häufigsten nennen.
- Sonst gar keins — es wird nicht aus dem Projektschlüssel geraten. Auf dieser Installation heißt das Wiki-Projekt
zimund sein ADO-ProjektPKIaaS; ein geratener Name hätte drei von vier Projekten richtig getroffen und eines still falsch.
Einstellungen
| Schlüssel | Vorgabe | Bedeutung |
|---|---|---|
meta_ttl | 21600 | Sekunden, die das Prozessvorlagen-Vokabular zwischengespeichert wird. |
meta_fail_ttl | 120 | Sekunden, die ein fehlgeschlagener Abruf gemerkt wird. |
Grenzen
- Der Urheber ist immer das Dienstkonto. Im Verlauf eines Arbeitselements steht nicht, wer die Änderung im Wiki ausgelöst hat. Wer namentlich zeichnen muss, kommentiert oder arbeitet in Azure DevOps.
- Ein Projekt, eine Verbindung. Die erste aktive Verbindung eines Projekts gewinnt; mehrere werden nicht zusammengeführt.
- Keine gespeicherten Abfragen. Ein Filter ist eine Adresse und wird als Lesezeichen abgelegt.
- Keine Aggregation über Projekte hinweg. Der Bereich gehört zu einem Projekt.
Verwandte Themen
- Arbeiten mit Arbeitselementen — die Anleitungen