Please enable JavaScript to view this site.

Administrationshandbuch

Navigation: Tech Doc > Customizing

Eigene Code-Templates

Scroll Zurück Oben Weiter Mehr

Für häufig verwendete Code-Schnipsel können eigene Templates im Verzeichnis <jobrouter>/setup/xml/custom abgelegt und verwendet werden. Als Vorlage können Sie die JobRouter-Templates <jobrouter>/setup/xml/phptemplates.xml und <jobrouter>/setup/xml/jstemplates.xml verwenden.

Die Templates stehen in allen Prozessen zur Verfügung.

PHP

PHP-Templates werden im Verzeichnis <jobrouter>/setup/xml/custom/phptemplates als XML-Dateien abgelegt. Werden die dort abgelegten Templates nicht im Dialog-Editor angezeigt, werden Fehler in der Log-Datei system.log aufgezeichnet. Ein Grund dafür kann sein, dass die Dateien nicht valide sind, z.B. nicht geschlossene Tags aufweisen oder mit der DTD phptemplates.dtd nicht konform sind.

Eine Datei kann mehrere Templates beinhalten. Ein Template hat folgende Attribute:

id - eine eindeutige ID

name - eine Bezeichnung die im Editor angezeigt wird. Die Bezeichnung ist nicht mehrsprachig.

type - anhand des Typs können mehrere Templates zu einer Gruppe zusammengefasst werden

Beispiel

XML-Datei mit Templates:

<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE phptemplates SYSTEM "phptemplates.dtd">

 

<phptemplates>

 

    <types>

        <type id="php_exception_logic" label="Exception handling" />

        <type id="php_external_data_logic" label="Templates for external data" />

    </types>

 

    <template id="custom-exception-handling-with-logging" name="try{ } catch() {logging}" type="php_exception_logic">

<![CDATA[

try {

} catch (JobRouterException $e) {

    $this->error('Type your general message here', ['message' => $e->getMessage(), /* more error context */]);

}

]]>

    </template>

 

    <template id="get-contact-address" name="select address for contact" type="php_external_data_logic">

<![CDATA[

try {

    $externalDB = $this->getDBConnection('external_connection');

    $sql = 'SELECT ADDRESS FROM CONTACT_DATA WHERE CONTACT_NAME = :c_name';

    $parameters = ['c_name' => $this->getTableValue('CHOSEN_CONTACT')];

 

    $types = [ConnectionInterface::TYPE_TEXT];

    $result = $externalDB->preparedSelect($sql, $parameters, $types);

 

    $contact = $externalDB->fetchOne($result);

 

    // handle selected contact ...

} catch (Exception $e) {

    $this->error('Error loading contact data.', [ 'originalMessage' => $e->getMessage()]);

    throw new JobRouterException($this->getMessage('get_address_err'));

}

]]>

</template>

 

</phptemplates>

Die Templates werden im Editor nach den JobRouter-Templates aufgelistet:

php_template_example

JavaScript

JavaScript-Templates werden analog zu PHP-Templates im Verzeichnis <jobrouter>/setup/xml/custom/jstemplates als XML-Dateien abgelegt. Alle Eigenschaften und Verhaltensweisen entsprechen denen der PHP-Templates.

Beispiel

XML-Datei mit Templates:

<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE jstemplates SYSTEM "jstemplates.dtd">

 

<jstemplates>

 

    <types>

        <type id="js_general_logic" label="JS general logic"/>

    </types>

 

    <template id="console-log" name="console.log(...)" type="js_general_logic">

<![CDATA[

console.log('type your message here');

]]>

    </template>

 

    <template id="is-positive" name="isPositive(...)" type="js_general_logic">

<![CDATA[

function isPositive(a) {

  return (Math.sign(a) > 0);

}

]]>

    </template>

 

</jstemplates>

Die Templates werden im Editor nach den JobRouter-Templates aufgelistet:

js_template_example