9DECAE1C81FF44CD900F5C17C8F05086
  • Thomas Pollinger
  • 11.03.2019
  • DE/EN

How-To: Projektwartung mit benutzerdefinierten Aufträgen

Wenn man viele Projekte hat, kommt man mit den bekannten Arten der benutzerdefinierten Aufträge schnell an die Grenzen. Denn wenn man z.B. 70 Projekte hat, so müsste man für jedes Projekt einen eigenen benutzerdefinierten Auftrag einrichten. Sowas kann beim initialen einrichten und später bei einer Änderung ganz schnell in viel Arbeit enden. Doch dafür gibt es auch direkt OotB eine Lösung mit einem Beispiel, welches die s.g. RQLCommand zum Einsatz.

Die RQLCommand sind s.g. Kontrollstrukturen, auf die in später in ein paar weiteren Artikeln noch tiefer eingehen möchte. 
 

Publizierungsberichte im Projekt bereinigen

Dieses Beispiel mit dem Namen: OT_DeleteOldPublishingReports wird direkt bei der Installation eines Management Servers mitgeliefert. 

<!-- Deletes publication job reports from the database (IO_EXR) and publication log files from the Management Server instance this job runs on. -->
<RQLCOMMAND type="for" name="PROJECTS">

  <!-- List all projects to apply the OBJECTIVES commands to them. -->
  <LIST>
    <IODATA loginguid="[!guid_login!]" sessionkey="">
      <ADMINISTRATION>
        <USER guid="[!guid_user!]">
          <PROJECTS action="list" extendedinfo="1" />
        </USER>
      </ADMINISTRATION>
    </IODATA>
  </LIST>

  <!-- The commands in the OBJECTIVES element are executed for all result elements of the LIST element -->
  <OBJECTIVES>

    <!-- Connect to the current project -->
    <IODATA loginguid="[!guid_login!]">
      <ADMINISTRATION action="validate" guid="[!guid_login!]">
        <PROJECT guid="[!guid_project!]" />
      </ADMINISTRATION>
    </IODATA>

    <!-- Remove the publishing reports and and logfiles for the current project if they are older than seven days (days="7") -->
    <IODATA loginguid="[!guid_login!]" sessionkey="[!guid_login!]">
      <PROJECT guid="[!guid_project!]" sessionkey="[!guid_login!]">
        <EXPORTREPORT days="7" action="deleteall" deletelogfiles="1" />
      </PROJECT>
    </IODATA>

  </OBJECTIVES>

</RQLCOMMAND>

Mit der Erweiterung durch die RQLCommands, mehreren RQLs und einem Benutzerkonto, welches Zugriff auf alle Projekte hat. Kann man nun mit einem benutzerdefinierten Auftrag über alle Projekte die Publizierungsberichte bereinigen. Wie das genau im einzelnen funktioniert, werde ich ab kommender Woche, nach dem WSM-Camp in einer Artikelserie Schritt für Schritt erläutern. Ebenso werde ich viele Beispiele und Einsatzmöglichkeiten aufzeigen. Jetzt nur kurz erläutert was der o.g. benutzerdefinierte Auftrag Schritt für Schritt tut:

  • Als erstes werden die verfügbaren Projekte des verwendeten Benutzers ausgelesen.
  • Das Ergebnis wird als eine Liste zurückgegeben.
  • Für jedes Ergebnis in der Liste, werden im Bereich OBJECTIVES die aufgeführten RQLs ausgeführt.
    • Anmeldung am Projekt.
    • Alle Berichte älter 7 Tage aufräumen.
  • Die OBJECTIVES werden solange ausgeführt, bis das Ende der Ergebnisse von LIST erreicht wurde.
  • Das ganze läuft, wie alle andere benutzerdefinierten Aufträge auch, als async. Prozess im System ab.

Diese Form der benutzerdefinierten Aufträge sind eine elegante und zugleich mächtige Möglichkeit im System Automatisierungen einzurichten. Jedoch mehr dazu in den kommenden Wochen in der neuen Artikelserie zu den RQLCommands ;)


Über den Autor:
Thomas Pollinger

... ist Senior Site Reliability Engineer bei der Vodafone GmbH in Düsseldorf. Seit dem Jahr 2007 betreut er zusammen mit seinen Kollegen die OpenText- (vormals RedDot-) Plattform Web Site Management für die deutsche Konzernzentrale.

Er entwickelt Erweiterungen in Form von Plug-Ins und PowerShell Skripten. Seit den Anfängen in 2001 (RedDot CMS 4.0) kennt er sich speziell mit der Arbeitweise und den Funktionen des Management Server aus.