Process Management Module System Call

Wenn ein Prozess von einer Aktivität zu einer anderen Aktivität wechselt, kann dem Sequenzfluss eine Aktion angehängt werden. Diese Aktionen werden als Module definiert, um bestimmte Aufgaben auszuführen, wie z.B. Ticket-Attribute ändern, Artikel erstellen, dynamische Felder festlegen usw. Die Module können auch an bestimmte Aktivitäten der Prozessverwaltung angehängt werden, die als Aktivitäten vom Typ Skript bezeichnet werden und das angehängte Modul ausführen, wenn sie aufgerufen werden.

Das Systemaufruf-Modul ermöglicht es den Agenten, jedes Programm, Skript, Binär- oder Exe-Datei aufzurufen, das im Betriebssystem des Servers, auf dem OTRS läuft, verfügbar ist. Das Ergebnis des Systemaufrufs kann zur Aktualisierung der Ticket-Informationen verwendet werden.

Das Systemaufrufmodul erfordert die Verwendung von XSLT-Mappings. Das Outbound-Mapping wird verwendet, um den aufzurufenden Systembefehl zu definieren, und das Inbound-Mapping wird verwendet, um die Ergebnisse des Systemaufrufs zu konvertieren, um das aktuelle Ticket zu aktualisieren.

Im ausgehenden Mapping ist es notwendig, den Schlüssel <Command> und bei Bedarf einen oder mehrere Schlüssel <Argument> zu haben. Die zu setzenden Werte können aus dem Prozess-Ticket unter dem Schlüssel <Ticket> und dann den normalen Ticket-Attributen als Unterschlüssel wie z.B. <Priorität>, <QueueID>, <Titel> usw. transformiert werden. Oder sie könnten als feste Werte definiert werden.

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    <xsl:template match="/">
        <xsl:copy>
            <RootElement>
                <Command>command</Command>
                <Arguments>argument1</Arguments>
                <Arguments>argument2</Arguments>
                <Arguments>argumentN</Arguments>
                <Arguments><xsl:value-of select="//Ticket/Priority"/></Arguments>
            </RootElement>
        </xsl:copy>
    </xsl:template>
</xsl:stylesheet>

Aus Sicherheitsgründen können dem Schlüssel <Command> nur solche Befehle hinzugefügt werden, die der Einstellung ProcessManagement::Modules::SystemCall::CommandWhiteList als erlaubte Befehle hinzugefügt werden. Dadurch wird verhindert, dass Benutzer nicht erlaubte Befehle auf dem Server ausführen.

Das eingehende Mapping wird verwendet, um die Ergebnisse aus dem Systemaufruf in Informationen zur Aktualisierung des aktuellen Tickets umzuwandeln. Alle Unterschlüssel müssen sich innerhalb des Schlüssels `<Ticket> befinden. Hier ist die mögliche Liste von Unterschlüsseln:

<CustomerUser>
<DynamicField>
<Lock>
<LockID>
<Owner>
<OwnerID>
<Pending>
<Priority>
<PriorityID>
<Queue>
<QueueID>
<Responsible>
<ResponsibleID>
<Service>
<ServiceID>
<SLA>
<SLAID>
<State>
<StateID>
<Title>
<Type>
<TypeID>

Auf die Ergebniswerte kann zugegriffen werden von:

<ReturnCode>

Der numerische Wert, der von der Ausführung eines Systemprozesses zurückgegeben wird.

<Output>

Beliebiger Text, der auf der Standardausgabe ausgegeben wird.

<ErrorOutput>

Beliebiger Text, der auf der Standardfehlerausgabe ausgegeben wird.

Hier ist ein Beispiel für ein eingehendes Mapping, das die Ausgabe des Systemaufrufs als Ticket-Titel festlegt:

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    <xsl:template match="/">
        <xsl:copy>
            <RootElement>
                <Ticket>
                    <Title><xsl:value-of select="//Output" /></Title>
                </Ticket>
            </RootElement>
        </xsl:copy>
    </xsl:template>
</xsl:stylesheet>

Siehe auch

Es gibt einen Abschnitt Erläuterung zur Handhabung des Mappings in der Ansicht der Konfiguration. Diese Erklärung kann als Referenz verwendet werden.

Die Systemaufrufe werden durch den OTRS-Daemon im Hintergrund mit den entsprechenden Berechtigungen asynchron ausgeführt. Wenn ein Systemaufruf einige Zeit dauert, wartet das Prozessmanagement, bis der Systemaufruf beendet ist und die Ergebnisse des Systemaufrufs vorliegen. Während dieser Zeit kann der Prozess nicht in den nächsten Zustand versetzt werden, aber der andere Teil der Agentenschnittstelle kann weiterhin verwendet werden.

Beispielverwendung

In diesem Beispiel werden wir einen sehr einfachen Prozess mit einer Skript-Task-Aktivität definieren. Der Prozess ist so konfiguriert, dass der Titel des Tickets in das Ergebnis des Systembefehls uname -s geändert wird. Das Ergebnis könnte je nach Betriebssystem Darwin, Linux, GNU usw. sein.

So definieren Sie einen Beispielprozess:

  1. Gehen Sie zur Ansicht „Prozessmanagement“ und legen Sie einen neuen Prozess an.

  2. Fügen Sie dem Prozess eine neue Skript-Task-Aktivität hinzu.

  3. Wählen Sie im Feld Script im Abschnitt Script-Einstellungen den Wert SystemCall . Klicken Sie auf die Schaltfläche Speichern.

  4. Klicken Sie neben dem Feld Script auf die Schaltfläche Konfigurieren.

  5. Fügen Sie die folgenden Zeilen zur Vorlage Ausgehend: XSLT-Mapping hinzu.

    <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
        <xsl:template match="/">
            <xsl:copy>
                <RootElement>
                    <Command>uname</Command>
                    <Arguments>-s</Arguments>
                </RootElement>
            </xsl:copy>
        </xsl:template>
    </xsl:stylesheet>
    
  6. Fügen Sie die folgenden Zeilen zur Vorlage Eingehend: XSLT-Mapping hinzu.

    <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
        <xsl:template match="/">
            <xsl:copy>
                <RootElement>
                    <Ticket>
                        <Title><xsl:value-of select="//Output" /></Title>
                    </Ticket>
                </RootElement>
            </xsl:copy>
        </xsl:template>
    </xsl:stylesheet>
    
  7. Klicken Sie auf die Schaltfläche Speichern und beenden.

  8. Nehmen Sie den Prozess in Betrieb.

  9. Erstellen Sie ein neues Prozess-Ticket im Agent-Interface und klicken Sie dann auf die Aktivität Start.

  10. Warten Sie, bis der Daemon den Systemaufruf ausführt.

  11. Der Ticket-Titel wird in das Ergebnis von uname -s geändert.

Nach oben scrollen