Tags auf User-Einträgen

Produktlinien: Expert
Module: Leistung & CRM
Erstellt: 11.04.2017, Änderung:
Abfragen von Tags via SQL eingefügt
Mehr ansehen

In Vertec werden Objekte (z.B. Projekte, Leistungen) vielfach über Boolean Zusatzfelder kategorisiert. Die daraus resultierenden OCL-Abfragen der Art

  leistungen->select(zusatzfeldbool('istmarkiert'))

sind nicht performant, da für jedes Element in der Liste die Zusatzfelder geladen werden müssen.

Um diese Anforderung performant abbilden zu können, wurde mit Vertec Version 6.1.0.10 die Möglichkeit geschaffen, User-Einträge mit Tags zu versehen, nach denen gefiltert werden kann.

Dafür gibt es ein Tags Feld auf jedem UserEintrag (UserEinträge sind alle Objekte in Vertec, welche in Ordnern abgelegt werden können, wie Adressen, Projekte, Bearbeiter, Leistungen, etc.), welches via Python oder COM mit beliebigen Stichworten (Tags) befüllt werden kann.

Setzen eines Tags

Gesetzt werden die Tags mit der COM- oder Python Methode addtag(tagname), z.B.

argobject.addtag('mytag')

Abstände in den Tagnamen sind erlaubt. Anführungszeichen und Kommas sollten nicht verwendet werden, da es sonst Probleme mit der Abfrage geben kann aufgrund des Escapings.

Ist ein Tag bereits vorhanden, wird er nicht erneut hinzugefügt.

Die maximale Länge aller auf einem User-Eintrag gesetzten Tags ist gesamthaft 1000 Zeichen. Wird diese Länge überschritten, erscheint eine Fehlermeldung.

Abfragen von Tags

Abgefragt werden können die Tags via COM, Python oder OCL per hasTag:

hastag(tagname): boolean

Der Rückgabewert ist true, wenn der Tag gesetzt ist, und false, wenn es ihn nicht gibt.

So können Listen mit Abfragen der Art leistungen->select(hasTag('istmarkiert')) schnell und peformant gefiltert werden.

Abfragen von Tags via SQL

Tags können auch via SQL abgefragt werden, zum Beispiel in SQL-Ordnern. Die entsprechende Abfrage geschieht mit einem Vergleich, z.B.

tags like '%tagname%'

Löschen von Tags

Um Tags zu löschen, steht die COM- oder Python Methode removetag(tagname) zur Verfügung, z.B.

argobject.removetag('mytag')
Wird ein Tag gelöscht, den es nicht gibt, dann geschieht nichts, es gibt keinen Fehler.