Branding

Dynamische Queries

Mit dem Auto-Revisit-Workflow wird die Möglichkeit einer nachträglichen Parametrisierung einer vorhandenen Query eingeführt.

Die Änderungsregeln werden in der Query selbst mitgeführt, wofür das Kommentarfeld genutzt wird: der zweite Reiter im Recherchefenster. Alle Workflows, die zur Ermittlung der zu bearbeitenden Ressourcen diesen Mechanismus verwenden, können so dynamisiert werden. Dies betrifft konkret folgende Workflows:

  • Newsletter-Erstellen-Workflow,
  • Auto-Revisit-Workflow und
  • zeitgesteuerter Linkcheck-Workflow.

Die Auswertung erfolgt außerhalb des eigentlichen CoreMedia-Query-Mechanismus in einer vorgeschalteten Komponente. Diese neue Komponente interpretiert das Kommentarfeld, sucht die angegebenen Felder im Suchbaum und modifiziert die darin enthaltenen Werte (z. B. Datumsangaben). Es werden keine Platzhalter, sondern die (internen) Propertynamen sowie eine Ordinalzahl zur Identifizierung verwendet.

Der Vorteil bei dieser Methode ist die ansonsten uneingeschränkte Verwendbarkeit der Recherche und die Editierbarkeit über den Standardeditor.

Die folgenden beiden Screenshots zeigen zwei mögliche Recherchen (=Query):

  • Suche nach seit längerem publizierten News (Abbildung 2)
  • Suche nach Metadaten mit überschrittenem followUpAt-Datum sucht (Abbildung 3)

Abbildung 5: Suche nach seit längerem publizierten News Abbildung 5: Suche nach seit längerem publizierten News

Abbildung 6: Suche nach Metadaten mit überschrittenem followUpAt-Datum Abbildung 6: Suche nach Metadaten mit überschrittenem followUpAt-Datum

Abbildung 4 zeigt den Kommentar-Reiter der Query in Abbildung 1, in welchem das Publikationsdatum auf den Zeitpunkt der Abfrage minus 6 Monate gesetzt wird:

Abbildung 7: Kommentartreiter der Suche in Abbildung 2 Abbildung 7: Kommentartreiter der Suche in Abbildung 2

Query-Modifizierer

Ein Modifizierer-Ausdruck wird durch Angabe der Version der Grammatik eingeleitet. Es können mehrere Implementierungen parallel verwendet und über die Versionsangabe unterschieden werden:

Grammar version 1:

Danach wird jede Zeile als ein Ausdruck angesehen. Eine Datumsersetzung ist nach folgendem Muster vorgesehen:

  • date FELDNAME=DATUMSAUSDRUCK
  • oder
  • date FELDNAME[INDEX]=DATUMSAUSDRUCK
  • oder
  • date FELDNAME(POSITION)=DATUMSAUSDRUCK

Durch das Schlüsselwort „date“ wird eine Suche nach Datumsfeldern in der Query eingeleitet, die dem internen Namen FELDNAME entsprechen. Intern bedeutet dies, dass der Propertyname aus dem Dokumentenmodell, bzw. der Implied Properties verwendet werden muss.

Da es mehrere gleichlautende Felder geben kann – etwa, wenn man nach Datumsbereichen sucht – müssen die Felder angesprochen werden können. Dazu verwendet man bei Notation in eckigen Klammern den INDEX (erster FELDNAME zählt als 0) oder alternativ in runden Klammern die POSITION (beginnend bei 1). Welche Notation man wählt, entscheidet lediglich die persönliche Präferenz.

Beispiel

Die folgende Query sucht alle Metainformations-Dokumente, deren Property „Wiedervorlage am“ (entspricht „followUpAt“ im Dokumentenmodell) zwischen dem 18.11. und 22.11.2003 liegt.

Abbildung 8: Einschränkung der Suche auf einen bestimmten Zeitraum Abbildung 8: Einschränkung der Suche auf einen bestimmten Zeitraum

Diese Query kann man natürlich zum Zeitpunkt der Erstellung mit dem Editor ausführen und auf prinzipielle Funktionsfähigkeit testen. Soll in einem monatlich laufenden Auto-Revisit-Workflow jedes Metainformations-Dokument mit

  • einem Wiedervorlagedatum innerhalb des letzen Monats
  • und einschließlich des nächsten Tages

gefunden werden, trägt man im Kommentarfeld die folgenden Zeilen ein:

Grammar version 1:

date followUpAt(1)=DAY+1

date followUpAt(2)=MONTH-1

Bitte beachten Sie die Reihenfolge der Ausdrücke in der Recherchemaske.

Beliebig viele Zeitangaben können in einer Zeile durch Komma getrennt sein. Es sind positive oder negative ganzzahlige Werte erlaubt. Gültige Schlüsselwörter sind:

  • SECOND
  • MINUTE
  • HOUR
  • DAY
  • WEEK
  • MONTH
  • YEAR

Die Einheiten folgen dem Gregorianischen Kalender, d.h., am 31. März resultiert der Ausdruck „MONTH-1“ in den 28. oder 29. Februar.

Beispiel

MONTH-1,WEEK+2,DAY-3,SECOND+999

Ist eine gültige Angabe. Erlaubt sind auch Kleinschreibung und Leerzeichen zwischen den Blöcken, z. B.:

Day +1 , wEeK –2, Year +1

Leerzeichen zwischen + und - und der Zahl sind nicht erlaubt.

Ausführen einer dynamischen Query

Der ExecuteDynamicQuerySubWorkflow bietet den in anderen Workflows eingebetteten Mechanismus explizit zum Testen an. Dadurch ist es möglich, eine dynamische Query zu erstellen und die korrekte Funktion zu verifizieren.

Eine herkömmliche oder dynamische Query wird über den Automatik-Workflow dem ExecuteDynamicQuerySubWorkflow zugeführt und eine Referenzzeit eingegeben. Normalerweise ist die Bezugszeit immer die der jeweiligen Ausführung. Hier aber lassen sich die Ergebnisse zu beliebigen Zeitangaben testen.

Nach Abschluss dieses Tasks wird die Query ausgeführt und die ermittelten Ressourcen angezeigt. Danach kann wieder eine neue Zeit oder eine andere Query angegeben werden.

Die Schleife kann durch Abbruch des Workflowprozesses oder durch Entfernen der Query aus der Liste beendet werden.

Die folgenden Screenshots zeigen die beiden Hauptschritte:

Abbildung 9: Auto-Revisit-Workflow 1 Abbildung 9: Auto-Revisit-Workflow 1

Abbildung 10: Auto-Revisit-Workflow 2 Abbildung 10: Auto-Revisit-Workflow 2