-
Notifications
You must be signed in to change notification settings - Fork 0
Konzept
Der Tag Microservice basiert darauf, dass beliebig viele Tags angelegt werden können, die anschließend TagCollections zugewiesen werden können. Um den Microservice möglichst universell zu halten, gibt es keine Projekte oder Profile,sondern diese werden als Sammlung von Tags zu einem bestimmten ID betrachtet (TagCollection). Für jedes Projekt wird z.B. eine neue Collection angelegt mit der ID des Projektes.
Zusätzlich zur Verwaltung der Zuordnung von Tags zu Projekten, Profilen, etc. ist es die Aufgabe dieses Services Vorschläge für ähnliche Tags anzubieten.
Ein Tag ist ein eindeutiger String, der mit einer ID versehen wird.
Zur Validierung des TagNamens wurde dafür eine eigene Klasse angelegt. Dabei wird vor allem die Länge des Strings überprüft. Dieser muss zwischen einem und 40 Zeichen lang sein.
Jeder Entity, die eine UUID besitzt, können Tags zugeorndet werden. Diese Zuordnung wird im Tag Service gespeichert, um daraus die Recommendations zu berechnen und um Tags nicht explizit in jedem Service implementieren zu müssen. Bei den Entities kann es sich um Projekte oder zukünftig auch Profile handeln. Der Tag Service speichert nur die Zuordnung von Tags zu einer UUID. Wo diese UUID her kommt und um was genau es sich dabei handelt spielt für den Tag Service keine Rolle.
Die Tag Counter werden intern verwendet, um die eine Grundlage für die Recommendations zu schaffen. Jeder Tag Counter gibt an, wie oft zwei Tags gemeinsam verwendet wurden. Diese Counter werden in regelmäßigen Abständen aktualisiert. Details auf der Seite Tag Counter.
Projekte im Project Service kennen ihre Tags nicht, sondern verweisen nur mit einem Link auf die Ressource des Tag Service. Wenn es für eine UUID noch keine Tag Collection gibt, wird mittels eines Filters vor dem Ausführen der eigentlichen Anfrage eine entsprechende Collection angelegt. Dadurch wird für jede UUID immer eine TagCollection zurückgegeben und Puts/Posts/... auf die Association sind möglich ohne diese vorher expliziet anzulegen.
Durch Tag Recommendations soll es ermöglicht werden, zu einer Liste von Tags eine weitere Liste von vorgeschlagenen Tags zu erhalten. Diese Liste an vorgeschlagenen Tags enthält Tags, welche der Nutzer höchstwahrscheinlich zusätzlich zu den bisherigen Tags verknüpfen möchte. Details auf der Seite Tag Recommendation.