Zum Inhalt

Befehlszeile

Die Anwendung lässt sich auch über die Befehlszeile steuern. Dazu muss die Befehlszeilen-App angesprochen werden. Dies erfolgt über den Aufruf:

/opt/alvine-platform/bin/alvine-platform

Hinweis

Einige Sonderzeichen, wie $ oder Klammern {, (, usw. haben in unterschiedlichen Shells Sonderfunktionen und müssen u.U. escaped werden. Wie das genau erfolgt ist in der Dokumentation zur entsprechenden Shell nachzulesen.

Im folgenden werden die einzelnen Befehle aufgeführt.

Allgemeine Befehle

Hilfe

Mittels help wird eine Hilfe mit allen Befehlen angezeigt. Über die Option --filter kann die Ausgabe auf einen Befehl beschränkt werden. Im folgenden Beispiel werden nur Befehle, die im dev-Namensraum liegen ausgegeben.

/opt/alvine-platform/bin/alvine-platform help --filter dev
Argument Kurzform Beschreibung Beispiel
--filter Filterung der Ausgabe auf den angegebenen Befehl dev

Version

Der Befehl version zeigt die Version des Alvine-Systems und die Version der aktuellen Daten an.

Dieser Befehl hat keine Argumente

Legacy

Legacy-Befehle ausführen

Befehle (cmd) des Legacy-Backends lassen sich über das legacy:run aufrufen. Die Ausführung erfolgt im Legacy-Kontext. Über die Optionen können verschiedene Werte übergeben werden.

Argument Kurzform Beschreibung Beispiel
--argument -a URL-Encoded Zeichenkette mit den an das System zu übergebenden Variablenwerten. a=4&b=5
--cmd -c CMD des Alvine Backends 5
--output -o Ausgabe des Befehls in eine Datei schreiben /tmp/out.txt
--uid -u Die für den Befehl zu verwendende User-ID 100
--debug -d Debugausgabe ausgeben
/opt/alvine-platform/bin/alvine legacy:run --uid=1 --cmd=5 -d --argument="sxx_export=true&submit=true&sxx_cli_systemintern=true"

Devop

Die folgenden Befehle sind für den Betrieb des Systems ausgelegt.

Dateiänderungen prüfen

Mit dem Befehl devop:changedfiles lassen sich Änderungen im Dateisystem prüfen. Beim ersten Durchlauf werden für die Dateien Prüfsummen gebildet und die Datei über --md5file angegebene Datei geschrieben. Bei weiteren Durchläufen werden die angegebenen Dateien mit den Werten in der Prüfdatei verglichen und Änderungen ausgegeben.

Die Ausgabe der Änderungen kann als text (default), json oder xml erfolgen.

Dieser Befehl kann zum Beispiel mit cron oder inotifywait Anwendung finden.

Argument Kurzform Beschreibung Beispiel
--path -p Das zu prüfende Verzeichnis /srv/images/
--md5file -m Der Dateiname der MD5-Prüfdatei (die Datei sollte nicht im zu prüfenden Verzeichnis liegen /srv/img.md5
--format -f Das Ausgabeformat (Unterstützt werden text (default), json und XML xml
--host -h Parameter für den Hostname für den Zugriff auf eine externe Ressource sftp.example.com
--user -u Parameter für den Benutzer für den Zugriff auf eine externe Ressource sftpuser
--login -l Parameter für den Password für den Zugriff auf eine externe Ressource sftppassword
--output -o Ausgabe des Befehls in eine Datei schreiben /tmp/out.txt
/opt/alvine-platform/bin/alvine  devop:changedfiles --path=/srv/www/images \
      --md5file=/srv/www/images.md5 --format=json

Die Ausgabe ist im Fall von JSON sieht folgendermaßen aus:

{
  "changed": [],   // geänderte Dateien
  "created": [],   // neue Dateien
  "removed": [],   // entfernete Dateien
  "files": [],     // Alle geänderten, neuen und entfernten Dateien
  "errors": [],    // Fehler im Script
  "totals": { 
    "created": 0,  // Anzahl der neuen Dateien
    "changed": 0,  // Anzahl der geänderten Dateien
    "removed": 0,  // Anzahl der entferneten Dateien
    "files": 0,    // Anzahl aller geänderten Dateien
    "total": 0     // Anzahl aller Dateien im Verzeichnis
  }
}

Die gleiche Ausgabe im XML-Format:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<result>
  <changed>
  </changed>
  <created>
  </created>
  <removed>
  </removed>
  <files>
  </files>
</result>
<totals>
  <changed>0</changed>
  <created>0</created>
  <removed>0</removed>
  <files>0</files>
  <total>0</total>
</totals>

Scripte ausführen

Der Befehl devop:run-script führt das über das Argument --script angegebene Skript aus.

!!! note Hinweis Neben dem Standardmodus, in dem die Skripte im Anwendungskontext ausgeführt werden, können auch ältere Skripte im Legacy-Modus ausgeführt werden. Der Legacy-Modus darf für neue Scripte nicht mehr verwendet werden.

Über die Optionen können verschiedene Werte übergeben werden.

Argument Kurzform Beschreibung Beispiel
--argument -a URL-Encoded Zeichenkette mit den an das System zu übergebenden Variablenwerten. a=4&b=5
--legacy -l Use legacy Environment (deprecated) 1
--uid -u Die für den Befehl zu verwendende User-ID 100
--debug -d Debugausgabe ausgeben
--path -p Verzeichnis in dem das Script liegt, ansonsten das aktuelle Verzeichnis. /Pfad/zum/Script
--script -s Name des Scripts testscript.php
--output -o Ausgabe des Befehls in eine Datei schreiben /tmp/out.txt
/opt/alvine-platform/bin/alvine devop:run-script --legacy=1 \
      --uid=1 -d --path=/Pfad/zum/Script -s=testscript.php 

Die einzubindenden Scriptdatei wird im Kontext einer Funktion aufgerufen. In dieser Funktion kann zum Beispiel über Assembly::getInstance() auf die Anwendung und darüber auf die Datenbankverbindung zugegriffen werden.

Dokumentation

UML-Diagramm erstellen

Mit diesem Befehl dev:createuml können für Klassen UML-Diagramme im plantUML Format erzeugt werden.

Argument Kurzform Beschreibung Beispiel
--class -c Name der Klasse inklusive Namespace /A/B/C
--output -o Ausgabe des Ergebnisses in eine Datei und nicht auf die Konsole c:\temp\a.puml

Entwicklung

Im Bereich Entwicklung dev sind Befehle zur Systementwicklung und Erweiterung des Systems zusammengefasst.

Phars herunterladen

Mit dem Befehl dev:downloadphars werden die aktuell in der assembly.ini definierten Phars heruntergeladen.

Argument Kurzform Beschreibung Beispiel
--output -o Verzeichnis in das die Phars gespeichert werden sollen. c:\temp
--verbose -v Namen der Phar-Archive ausgeben

Wird kein Pfad angegeben, so werden die Dateien in das in der Konfiguration definierte Vendor-Verzeichnis geschrieben.

Webkomponenten erstellen

Vorlagen für neue Webkomponenten zur Darstellung in der Benutzerschnittstellen lassen sich über dev:createwebcomponent erstellen.

Argument Kurzform Beschreibung Beispiel
--namespace Namensraum a.b.c
--version -v Version 1.0.0
--name -n Name der Komponente myComponent

Klassen erstellen

Neue Klassen können über das Argument dev:createclass erstellt, bzw aktualisiert werden.

Argument Kurzform Beschreibung Beispiel
--class -c Name der Klasse inklusive Namespace /A/B/C
--type -t Typ der Klasse (model) model

Weitere Konfigurationsoptionen hängen vom Typ ab.

Modelklassen (Typ model)

Argument Kurzform Beschreibung Beispiel
--table Name der Tabelle, die das Model repräsentiert co_user
--exclude -e Felder, die nicht in die Objektmap übernommen werden sollen sys_erpID
--use -u Zu verwendende Traits (erp, archived, ranking) archive

Delta SQL Statements erstellen

Ein Delta Statement kann über das Argument dev:createdeltasql erstellt, bzw aktualisiert werden.

Argument Kurzform Pflicht Beschreibung Beispiel
--name -n ja Name der Tabelle sh_order
--id -i ja ID der Tabelle 7
--output -o ja Ausgabe des Statements (print, file, database) print
--file -f nein Ausgabe in einer Datei
--print -p nein Ausgabe in der Console
--database -d nein Ausgabe in der Datenbank
--primarykey -k nein Primary Key der Tabelle wird automatisch ermittelt OID
--exclude -e nein Die Felder, die nicht für den MD5 verwendet werden sollen zum Beispiel:-e sys_erpLastUpdate -e sys_erpCreation sys_erpLastUpdate
--dateto nein Feld für Gültig ab 1 date_from
--datefrom nein Feld für Gültig bis 1 date_to
/opt/alvine-platform/bin/alvine createdeltasql --name=sh_order -i 7 -o print -e sys_erpLastUpdate -e sys_erpCreation

Die ID muss in der Delta Route definiert und hier übergeben werden. Der Nummernraum der IDs ist im Standard ab der ID '1' und Benutzerdefinierte IDs ab der ID '1000'

Beipsiel : Hier wurde die ID 1 für die Items vergeben.

<configuration>
     <urls>
        <url name="item" id="1" ><![CDATA[/api/commerce/item/search?q=item.iid%20IN%20%22${idlist}%22]]></url>
     </urls>   
</configuration>

Ausgabeoptionen

Die Ausgabe kann kommagetrennt -o print, file oder einzeln -o print -o file oder mit --print -- file übergeben werden

print

Bei der Ausgabe print werden die Statements direkt in der Console ausgegeben und können kopiert werden.

file

Bei der Ausgabe file werden die Statements in eine sql Datei geschrieben \deployment\database\trigger_[Name der Tabelle].sql

database

Bei der Ausgabe database werden die Statements in der Datenbank ausgeführt.

Builder

Suchdatenbank aktualisieren

Mit dem Befehl build:update-index kann die Suchdatenbank aktualisiert werden.

Argument Kurzform Beschreibung Beispiel
--datasource -s DataSource-Klasse vom Typ \Alvine\Application\Platform\Types\DataSource
--indexer -i Indexer-Klasse vom Typ \Alvine\Application\Platform\Builder\Indexer
--locale -l Zu verwendende Lokale
--company -c Mandant
--debug -d Debugging des Befehls einschalten

Die von \Alvine\Application\Platform\Types\DataSource abgeleitete Klasse muss die Daten bereitstellen.

Abgeleitete Klassen können Traits verwenden, die Inject-Methode definieren. Alle Methoden, die mit inject anfangen werden beim Erstellen der Datasource aufgerufen.

Die von \Alvine\Application\Platform\Builder\Indexer abgeleitete Klasse trägt die Daten in die entsprechende Datenbank ein.

HTML-Fragmente bauen

Der Befehl build:create-fragment erlaubt es mit den Daten einer \Alvine\Application\Platform\Types\DataSource HTML-Fragmente zu bauen.

Argument Kurzform Beschreibung Beispiel
--datasource -s DataSource-Klasse vom Typ \Alvine\Application\Platform\Types\DataSource
--template -t Pfad auf die zu verwendende HTML-Datei /tmp/template.html
--locale -l Zu verwendende Lokale de
--company -c Mandant 1
--idlist -i Einschränkungen der zu ladenen IDs, Kommaliste der Primären Schlüssel zum Beispiel IIDs 10094,10095
--selector -e DOM-Selektor zum Ausschneiden von Nodes. #myID
--output -o Zieldatei, in das das Ergebnis geschrieben wird. Der Dateiname kann Platzhalter aus der Datasource enthalten (Die Platzhalter müssen mit geschweiften Klammern eingefasst sein z.B. /tmp/result
--debug -d Debugging des Befehls einschalten

Javscript zusammenfassen

Mit dem Befehl build:js könne Javascript-Dateien zu einer Datei zusammengefasst werden.

Argument Kurzform Beschreibung Beispiel
--source -s Verzeichnis in dem die Quelldateien liegen. /src
--output -o Zieldatei in das das Ergebnis geschrieben wird. /dist
--node-path -n Verzeichnis in dem das Verzeichnis node_modules liegt. /var/lib/nodejs
--extern -e URL externer Dateien, die eingebunden werden sollen. /var/lib/nodejs
--no-minify Ergebnis nicht minimieren.

Css zusammenfassen

Mit dem Befehl build:css können Css-Dateien zu einer Datei zusammengefasst werden.

Argument Kurzform Beschreibung Beispiel
--source -s Verzeichnis in dem die Quelldateien liegen. /src
--output -o Zieldatei in das das Ergebnis geschrieben wird. /dist
--node-path -n Verzeichnis in dem das Verzeichnis node_modules liegt. /var/lib/nodejs
--extern -e URL externer Dateien, die eingebunden werden sollen. /var/lib/nodejs
--no-minify Ergebnis nicht minimieren.

Voraussetzungen

Für einige Befehle sind NodeJS Bibliotheken notwendig. Diese können über folgendes Skript installiert werden:

cat <<"EOF" > package.json
{
  "devDependencies": {
    "@babel/cli": "^7.2.3",
    "@babel/core": "^7.2.2",
    "@babel/highlight": "^7.0.0",
    "@babel/polyfill": "^7.2.5",
    "@babel/preset-env": "^7.2.3",
    "html-minifier": "^3.5.21",
    "uglify-js": "^3.4.9",
    "uglifycss": "0.0.29",
    "uglifyjs": "^2.4.11",
    "webpack": "^4.28.3",
    "webpack-cli": "^3.2.0"
  },
  "dependencies": {
    "core-js": "^2.6.1"
  }
}
EOF

npm install

Infos zum Setup von Babel finden sich hier.


  1. Datensätze die eine Gültigkeit haben , die evtl. in der Zukunft erst gültig werden oder die Gültigkeit verlieren. Müssen zu den Entsprechenden Zeitpunkten wieder getriggert werden damit das Delta erkannt wird. Hierzu wird der Trigger erweitert mit einem Insert in die ´co_delta_schedule_event´ Tabelle.