DokuWiki

It's better when it's simple

User Tools

Site Tools


playground:playground

This is an old revision of the document!


Funktionen des Pattern Endpunktes für den Pattern Editor

Einleitung

Um die neuen Use-Cases des Pattern Editors zu erfüllen, muss der Pattern Endpunkt einzelne Pattern laden können und speichern/aktualisieren. Die beiden Standard Cases sind:

  1. Ein Pattern wird mithilfe des Editors erstellt und soll in der Datenbank abgelegt werden
  2. Ein Pattern wird aus der Datenbank geladen und im Editor verändert und danach erneut gespeichert werden

Anforderungen

IST-Zustand

Der Endpunkt kann keine Pattern speichern/aktualisieren. Der Endpunkt kann keine einzelnen einzelnen Pattern Gruppen laden.

SOLL-Zustand

Der Endpunkt pattern.controller.ts soll um die folgenden Punkte erweitert werden:

Diese Methoden sind über folgende Endpunkt erreichbar:

get pattern/user/{eMail}/{patternIdentifier} ---> getUserPattern
get pattern/role/{userRoleName}/{patternIdentifier} ---> getUserRolePattern
get pattern/default/{patternIdentifier} ---> getDefaultPattern
put pattern/ {email}/{patternIdentifier} ---> saveUserPattern
put pattern/{userRoleName}/{patternIdentifier} ---> saveUserRolePattern
put pattern/default/{patternIdentifier} ---> saveDefaultPattern

Umsetzung

Ablauf

Save/Update

  1. Der Endpunkt wird aufgerufen
  2. Es wird geprüft, ob sich bereits ein Pattern mit den übergebenen Kriterien in der Datenbank befindet, sollte dieser Fall eintreten
  3. Das übergebende Pattern wird in eine PatternBuilder importiert
  4. Anhand der übergebenen Parameter wird das Pattern erweitert, sodass es möglich ist es an den PatternToNeo4j Parser zu übergeben
  5. Das erzeugte Cypher wird mithilfe des neo4j service ausgeführt

Diagramm ablauf_save_pattern.wsd einbinden

Get

  1. Der Endpunkt wird aufgerufen
  2. Anhand des PatternIdentifiers wird ein Pattern erstellt, das die betroffene Element lädt
  3. Mithilfe der Parameter wird das Pattern um entscheidende Wert angereicht. Dieser Werte können Benutzer Email oder Benutzerrollen Name sein
  4. Das erzeugte Cypher wird mithilfe des neo4j service ausgeführt

<WRAP center round important 60%> 'Anhand der übergebenen Parameter wird das Pattern erweitert […]' ist mir etwas zu vage. Was soll gemacht werden? </WRAP>

Schritt 1

Erstellen der Endpunkt. Die Endpunkt müssen wie in dem oben zu sehenden Diagramm umgesetzt werden. Dabei sollen 6 neue Endpunkt entstehen. Diese sollen mit einem e2e Test versehen werden, ob die über die angedachte URL verfügbar sind.

Schritt 2

Die Klasse patternIdentifierToNeo4j.parser.ts muss refakturiert werden. Innerhalb der Klasse muss der gemeinsame Code der Methoden createUserCypher und createUserRolePattern zusammengefasst werden. Dazu ist es nötig, den PatternBuilder um eine weitere Methode zu erweitern. Diese Methode soll den Index eines Knoten anhand des Namen wiedergeben. <WRAP center round important 60%> Hier verstehe ich das “wozu” nicht? Kannst du das erläutern? </WRAP>

Schritt 3

Die Methoden getUserPattern, getUserRolePattern, getDefaultPattern der Klasse pattern.service.ts werden zu öffentlichen Methoden und müssen eine eigenständige Testabdeckung erhalten. Auch ist es nötig, dass die Testdaten erweitert werden.

Schritt 4

Es müssen acht neue Klassen erstellt werden. Diese haben folgende Aufgaben:

  1. Laden von Pattern
  2. Umwandeln eines Graph Results in ein PatternDto[]
  3. Entscheiden, ob create oder update
  4. Erstellen eines Patterns zum Createn
  5. Erstellen eines Patterns zum Updaten
  6. Createn von Pattern in der Datenbank
  7. Updaten vom Pattern in der Datenbank

Schritt 5

Der pattern.loader.ts stellt kann dazu verwendet werden Pattern anhand ihrere Identifiers aus der Datenbank zu laden. Seine Methoden geben ein oder mehrere PatternDto wieder.

Schritt 6

Der pattern.converter.ts konvertiert ein GraphResult zu einem PatternDto oder einem Array von PatternDto.

Schritt 7

Der pattern.saveActionDecisionMaker.ts trifft die Entscheidung, ob ein Pattern aktualisiert werden muss oder es sich um ein neues Pattern handelt und es in der Datenbank neu erstellt werden muss.

Schritt 8

Der pattern.createStoredPatternPatternCreator.ts erzeugt mithilfe seiner Parameter ein Pattern, das einen neuen Pattern Knoten in der Datenbank hinterlegt.

Schritt 9

Der pattern.updateStoredPatternPatternCreator.ts erzeugt mithilfe seiner Parameter ein Pattern, das einen neuen Pattern Knoten in der Datenbank hinterlegt.

Schritt 10

Der pattern.creator.ts ist dafür verantwortlich ein Pattern neue Pattern zu beziehen.

Schritt 11

Der pattern.updater.ts ist dafür verantwortlich ein Pattern zu aktualisieren.

<WRAP center round important 60%> Anstatt hier viele einzelne Klassen zu sehen, hätte ich lieber ein Diagramm mit alle drin, in dem auch Abhängigkeiten sichtbar sind. </WRAP>

playground/playground.1537782125.txt.gz · Last modified: 2018-09-24 11:42 by Sebastian Kluth

Except where otherwise noted, content on this wiki is licensed under the following license: CC Attribution-Share Alike 4.0 International
CC Attribution-Share Alike 4.0 International Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki