Benutzer-Werkzeuge

Webseiten-Werkzeuge


admin:issues

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen Revision Vorhergehende Überarbeitung
Nächste Überarbeitung
Vorhergehende Überarbeitung
admin:issues [2022/04/05 18:00]
karpenko [Automatisierte Issues Behebung]
admin:issues [2023/02/25 16:57] (aktuell)
karpenko [Plausichecks hinzufügen]
Zeile 31: Zeile 31:
 Zur automatisierten Behebung muss **pro Fehlercode** definiert werden, **wenn ein aufgetretener Issue** für diesen Fehler als **behoben** gilt. Hierzu sind folgende Schritte notwendig: Zur automatisierten Behebung muss **pro Fehlercode** definiert werden, **wenn ein aufgetretener Issue** für diesen Fehler als **behoben** gilt. Hierzu sind folgende Schritte notwendig:
   * Wenn noch nicht erfolgt: **Festlegen des Fehlercodes** sowie //​fehler_kurzbz//,​ //​fehlertext//,​ //​fehlertyp_kurzbz//​ (z.B. //error//, //​warning//​). Dies erfolgt als SQL entweder im //​fehlerupdate.php//​ File im Core oder in einer Extension. ​   * Wenn noch nicht erfolgt: **Festlegen des Fehlercodes** sowie //​fehler_kurzbz//,​ //​fehlertext//,​ //​fehlertyp_kurzbz//​ (z.B. //error//, //​warning//​). Dies erfolgt als SQL entweder im //​fehlerupdate.php//​ File im Core oder in einer Extension. ​
-  * **Anlegen einer library im //​libraries/​issues//​ Ordner** mit Definition der Prüfung zur Fehlerbehebung. Die library muss die Methode ''​checkIfIssueIsResolved($params)''​ implementieren. Diese muss ein **success objekt mit "​true"​**,​ wenn der Issue **behoben** ist, oder **"​false",​ wenn nicht**, oder ein **error objekt wenn Fehler bei der Prüfung** aufgetreten sind, zurückgeben. Die Methode akzeptiert einen **$params Array**, welcher **zusätzliche,​ zur Behebung notwendige Parameter** beinhaltet (z.B. //​prestudent_id//,​ wenn der Fehler einen bestimmten Prestudent betrifft). Die Parameter müssen bei Auftreten des issues ​(in der jeweiligen Applikation) in die //​system.tbl_issue//​ Tabelle als JSON-Object (Spalte //​behebung_parameter//​) geschrieben werden. Gemäss Konvention sollte die **library genauso wie der betreffende Fehlercode** benannt werden. Im nachfolgenden Beispiel für eine Issue library wird geprüft, ob das **ZGV Datum eines Studenten in der Zukunft** liegt. Wenn nicht, gilt der Fehler als behoben und es wird success(true) retourniert. Dies hat zur Folge dass der IssueResolver Job den Fehler auf Status "​behoben"​ setzt. Das ZGV Datum ist pro Prestudent gespeichert,​ daher muss als Parameter die prestudent_id übergeben werden. Dieser Parameter muss beim Schreiben des Issues mitgespeichert werden.+  * **Anlegen einer library im //​libraries/​issues//​resolvers ​Ordner** mit Definition der Prüfung zur Fehlerbehebung. Die library muss die Methode ''​checkIfIssueIsResolved($params)''​ implementieren. Diese muss ein **success objekt mit "​true"​**,​ wenn der Issue **behoben** ist, oder **"​false",​ wenn nicht**, oder ein **error objekt wenn Fehler bei der Prüfung** aufgetreten sind, zurückgeben. Die Methode akzeptiert einen **$params Array**, welcher **zusätzliche,​ zur Behebung notwendige Parameter** beinhaltet (z.B. //​prestudent_id//,​ wenn der Fehler einen bestimmten Prestudent betrifft). Die Parameter müssen bei Auftreten des Issues ​(in der jeweiligen Applikation) in die //​system.tbl_issue//​ Tabelle als JSON-Object (Spalte //​behebung_parameter//​) geschrieben werden. Gemäss Konvention sollte die **library genauso wie der betreffende Fehlercode** benannt werden. Im nachfolgenden Beispiel für eine Issue library wird geprüft, ob das **ZGV Datum eines Studenten in der Zukunft** liegt. Wenn nicht, gilt der Fehler als behoben und es wird success(true) retourniert. Dies hat zur Folge dass der IssueResolver Job den Fehler auf Status "​behoben"​ setzt. Das ZGV Datum ist pro Prestudent gespeichert,​ daher muss als Parameter die prestudent_id übergeben werden. Dieser Parameter muss beim Schreiben des Issues mitgespeichert werden.
 {{ :​admin:​issue_library_example.png?​520 |}} {{ :​admin:​issue_library_example.png?​520 |}}
   * **Setzen der Zuordnung des Fehlers zur library im IssueResolver**. Damit der IssueResolver **erkennt**,​ dass eine **library für die automatische Überprüfung des Issuestatus** existiert, muss im File //​IssueResolver.php//​ das **codeLibMappings Array** ergänzt werden. Der Eintrag hat die Form **'​Fehlercode'​ => '​Library Name'​** und weist die library Klasse einem bestimmten Fehlercode zu.   * **Setzen der Zuordnung des Fehlers zur library im IssueResolver**. Damit der IssueResolver **erkennt**,​ dass eine **library für die automatische Überprüfung des Issuestatus** existiert, muss im File //​IssueResolver.php//​ das **codeLibMappings Array** ergänzt werden. Der Eintrag hat die Form **'​Fehlercode'​ => '​Library Name'​** und weist die library Klasse einem bestimmten Fehlercode zu.
 {{ :​admin:​issue_resolver_fehler_libraries_zuordnungen.png?​420 |}} {{ :​admin:​issue_resolver_fehler_libraries_zuordnungen.png?​420 |}}
  
-Nun wird bei Aufruf des IssueResolver Jobs für jeden noch nicht behobenen Issue geprüft, ob der Issue noch besteht, und der Status des Issues wird entsprechend angepasst.+Nun wird bei Aufruf des IssueResolver Jobs für jeden noch nicht behobenen Issue geprüft, ob der Issue noch besteht, und der Status des Issues wird auf "​**behoben**"​ gesetzt, wenn nicht.
  
 ==== Fehler Zuständigkeiten ==== ==== Fehler Zuständigkeiten ====
Zeile 42: Zeile 42:
 Zur Verwaltung der Zuständigkeiten existiert eine grafische Benutzeroberfläche. Zur Verwaltung der Zuständigkeiten existiert eine grafische Benutzeroberfläche.
  
 +==== Plausichecks hinzufügen ====
 +Plausichecks können verwendet werden, um einen **fehlerhaften Zustand** zu **identifizieren** und **aufzuzeigen**. Hierzu werden ebenfalls Issues produziert, die in der Fehler Monitoring Übersicht aufscheinen.
  
 +Um einen Plausicheck hinzuzufügen,​ sind folgende Schritte notwendig:
 +
 +  * Wenn noch nicht erfolgt: **Festlegen des Fehlercodes** sowie //​fehler_kurzbz//,​ //​fehlertext//,​ //​fehlertyp_kurzbz//​ (z.B. //error//, //​warning//​). Dies erfolgt als SQL entweder im //​fehlerupdate.php//​ File im Core oder in einer Extension.  ​
 +  * **Anlegen einer library im //​libraries/​issues/​plausichecks//​ Ordner**. Diese muss die //​executePlausiCheck//​ Methode der Elternklasse //​PlausiChecker//​ implementieren. Die Methode muss alle vom Fehler betroffenen Objekte zurückliefern. Der Methode können Paremeter (//​$params//​) übergeben werden, welche zur Bestimmung des Fehlerzustandes notwendig sind (z.B. Studiengang oder Semester, für welche auf den Fehler geprüft werden soll).
 +
 +{{ :​admin:​issue_plausicheck_plausichecker_example.png?​700 |}}
 +
 +Im obigen Beispiel wird geprüft, ob es Studierende gibt, für die kein Sponsionsdatum eingetragen ist.
 +Die Prüfung kann auf Studiensemester und Studiengang eingeschränkt werden (//​$params//​).
 +Zurückgegeben werden Ids und Organisationseinheiten aller betroffenen Studierenden. Zusätzlich werden //​prestudent_id//​ und //​abschlusspruefung_id//​ zurückgegeben,​ da diese im Fehlertext des Issues aufscheinen sollen (optional, //​fehlertext_params//​). Die //​abschlusspruefung_id//​ wird auch in den //​resolution_params//​ (optional) übergeben, da der Issue automatisch behoben werden soll und dafür die Id der Abschlussprüfung notwendig ist.
 +Die eigentliche Prüfung des Fehlers (//​getDatumSponsionFehlt//​) ist in die //​PlausicheckLib//​ ausgelagert. Da für die automatische Behebung die gleiche Logik wiederverwendet wird, ist dies hier sinnvoll.
 +  * **Setzen der Zuordnung des Fehlers zur library im PlausiIssueProducer**. Damit der IssueProducer **erkennt**,​ dass eine **library für den Plausicheck** existiert, muss im File //​PlausiIssueProducer.php//​ das **fehlerLibMappings Array** ergänzt werden. Der Eintrag hat die Form **'​Fehlerkurzbezeichnung'​ => '​Library Name'​** und weist die library Klasse einer bestimmten Fehlerbezeichnung zu.
 +==== Plausichecks durchführen ====
 +  * **PlausiIssueProducer starten**: Der //​PlausiIssueProducer//​ Job **produziert Issues für alle definierten Plausichecks**. Dieser kann als Job Controller im Core oder in der [[developer:​extensions|extension]] angelegt werden und muss den //​PlausiIssueProducer_Controller//​ erweitern:
 +
 +{{ :​admin:​issue_plausicheck_issueproducer_example.png?​600 |}}
 +
 +Obige Abbildung zeigt einen //​PlausiIssueProducer//​ in einer [[developer:​extensions|extension]],​ der Plausichecks für den Fehler //​UhstatStaatsbuergerschaftFehlt//​ durchführt.
 +  * **Plausicheck GUI**: Hier können Plausichecks **manuell durchgeführt** werden. So kann geprüft werden, welche Fehler momentan bestehen, ohne Jobs starten zu müssen. Hierbei werden keine Issues produziert, es wird nur ausgegeben, ob und für welche Objekte ein Fehler besteht.
 +
 +{{ :​admin:​issue_plausicheck_gui.png?​700 |}}
 +
 +Beispiel der Durchführung von Plausichecks für den Studiengang Biomedical Engineering in der GUI
  
/var/www/wiki/data/attic/admin/issues.1649174409.txt.gz · Zuletzt geändert: 2022/04/05 18:00 von karpenko