Python-Ausdrücke |
|
<< Klicken um Inhaltsverzeichnis anzuzeigen >> Navigation: Module und Plug-ins > 2analyze >
|
Im Folgenden finden Sie die Anleitung zum Plug-in Python-Ausdrücke.
|
Bitte beachten Um mit dem Plug-in arbeiten zu können, müssen einige Voraussetzungen erfüllt werden. Details dazu können im Kapitel Python nachgelesen werden. |
Inhalt des Kapitels
4. Neues Statement erstellen und bearbeiten
5. Python Skripte online ausführen
Mit Hilfe des Plug-ins Python-Ausdrücke können Python-Skripte eingelesen und verarbeitet werden.
Die Skripte und die darin enthaltenen Parameter können dabei über eine graphische Benutzeroberfläche manipuliert und ausgeführt werden.
Die Ergebnisse der Skriptdurchläufe können anschließend mit den in SimAssist zur Verfügung stehenden Plug-ins ausgewertet und visualisiert werden.
|
Hinweis Seit SimAssist Version 9.0 ist es möglich, einige der mitgelieferten Skripte auch online zu verwenden, ohne das eine lokale Python Installation nötig ist. |

Abbildung 1 - Übersicht
Der Aufbau des Plug-ins ist dreigeteilt.
Im oberen Bereich befindet sich das Menü, mit unterschiedlichen Buttons zur Bedienung des Plug-ins, unterteilt in die Kategorien Pfade, Abfragen und Daten. Diese werden in 2.2 Plug-in-Menü genauer erläutert.
Im Bereich darunter auf der linken Seite befindet sich der Datenbereich. Hier werden alle an SimAssist angebundenen Daten aufgelistet und können von hier aus per Drag&Drop zum Plug-in hinzugefügt werden.
Rechts daneben befindet sich das Plug-in Fenster. Hier findet die eigentliche Arbeit mit dem Plug-in statt.
In nachstehender Tabelle werden die Funktionen der einzelnen Buttons genauer beschrieben.
Button |
Beschreibung |
|
Öffnet den Order über den Windows Explorer, in dem die Python Skripte abgelegt sind. Standardpfad: ...\Plugins\p_sp_4python\Scripts |
|
Öffnet den Order über den Windows Explorer, in dem die Python Installation abgelegt ist. Dieser Ordner muss vor der erstmaligen Verwendung des Plug-ins in den Optionen festgelegt werden. |
|
Öffnet den Windows Explorer, um den Pfad zur lokalen Python Installation festzulegen. Alternativ kann dieser Pfad in den Optionen des Plug-ins eingestellt werden. |
|
Öffnet einen Dialog, in dem die Serveradresse eingegeben werden kann, um Python Skripte online auszuführen. Details siehe Python Skripte online ausführen. |
|
Öffnet eine neue Ansicht, um ein neues Python Statement zu erstellen. |
|
Öffnet eine neue Ansicht, in der das ausgewählte Skript bearbeitet werden kann. |
|
Kopiert die ausgewählten Skripte. Das neue Skript wird zur Liste der vorhandenen Skripte hinzugefügt, jedoch nicht automatisch ausgeführt |
|
Löscht die ausgewählten Skripte aus der Liste |
|
Setzt die Ergebnisse aller Skripte in der Liste zurück, unabhängig von der Auswahl/Markierung |
|
Setzt die Ergebnisse der ausgewählten Skripte in der Liste zurück |
|
Führt die ausgewählten Skripte aus. Während die Skripte ausgeführt werden, wird in der Statusleiste der Fortschritt angezeigt. Über das X-Icon kann die Ausführung jederzeit abgebrochen werden.
|
|
Führt alle Skripte in der Liste aus, unabhängig von der Auswahl |
Nachfolgende Tabelle gibt einen Überblick über die möglichen Statusänderungen, sowie die Elemente der Übersichtsliste:
Name der Spalte |
Beschreibung |
Status |
Die Spalte Status kann folgende Ausprägungen anzeigen:
Im Fehlerfall kann eine kurze Info darüber sofort angezeigt werden, in dem der Cursor über das Icon platziert wird. Außerdem wird der Fehler in der SimAssist Log-Datei protokolliert. Diese ist über das SimAssist Hauptmenü über den Button Logdatei aufzurufen. |
Daten |
Das Datenbank-Icon |
Name |
Name, welcher beim Erstellen des Ausdrucks im Bereich Name angegeben wurde |
Kategorie |
Beschreibungstext, welcher beim Erstellen des Ausdrucks im Bereich Kategorie angegeben wurde |
Pythonskript |
Name des verwendeten Skripts |
In diesem Abschnitt werden die Plug-in spezifischen Optionen aufgelistet und erläutert:

Abbildung 2 - Optionendialog
Option |
Beschreibung |
Python |
|
Pfad zu Python |
Vollständiger Pfad zur installierten Pythonanwendung (python.exe) |
Python Debuggen |
|
Pipename |
Leer lassen, um die Python-Skripte automatisch auszuführen. Ein eingegebener Wert definiert den Namen der Pipe für den Pipeserver. Dies kann zum Debuggen von Pythonskripten verwendet werden. Wenn die Pipe über einen Namen definiert wird, dann muss das Pythonskript extern gestartet werden. |
Pythonausgabe protokollieren |
Wenn aktiviert, werden Konsolenausgaben von Python in die SimAssist Logdatei geschrieben. Die Konsolenausgaben können sehr umfangreich sein und die Dauer der Ausführung des Skriptes beeinflussen. |
Time-outs |
|
Ausführungs Time-out |
Definiert eine Zeit in Sekunden [s], innerhalb der die Berechnung im Pythoncode abgeschlossen sein muss und das Schreiben des Ergebnisses begonnen werden muss. Default-Wert: 600 Sekunden |
Eingangsdaten Time-out |
Definiert eine Zeit in Sekunden [s], innerhalb der Python die Eingangsdaten über die Pipeverbindung auslesen muss. Default-Wert: 60 Sekunden |
Ergebnis Time-out |
Definiert eine Zeit in Sekunden [s], innerhalb der das Ergebnis über die Pipeverbindung übertragen werden muss. Default-Wert: 60 Sekunden |
Verbindungs Time-out |
Definiert eine Zeit in Sekunden [s], innerhalb der sich Python mit dem Pipeserver verbinden muss. Default-Wert: 10 Sekunden |
4. Neues Statement erstellen und bearbeiten
Ein Klick auf den Button Neu öffnet eine neue Ansicht, in der ein neues Python Statement erstellt werden kann.
Die Buttons in der Kategorie Pfade im Menü haben die gleiche Funktion, wie in 2.2 Plug-in Menü beschrieben
Der Button Skript testen testet das (neue) Python Statement.
Der Unterschied zwischen Skript testen und Ausführen besteht darin, dass beim Testen des Skripts auch die XML-Daten protokolliert werden, welche im Zuge der Ausführung des Skripts hin und hergeschickt werden.
Diese ausführliche Protokollierung kann die Fehlersuche ggf. erleichtern. (Diese Funktion steht nur bei vorhandener, lokaler Python Installation zur Verfügung)
Abbildung 3 - Neues Statement erstellen |
Im Feld Name ist ein Name für das neue Statement zu vergeben Im Feld Kategorie ist kann eine Kategorie für das Statement vergeben werden Im Feld Beschreibung kann eine solche eingetragen werden
Ist die Checkbox bei Ergebnis puffern gesetzt, so werden alle Daten im Speicher gepuffert. Ist die Checkbox nicht gesetzt, werden die Berechnungen bei jedem Laden des Projektes erneut durchgeführt
Ein Klick auf die Zeile Pythonskript oder auf das Dropdown-Icon
Ein Klick auf das X-Icon
Ein Klick auf das Icon mit den drei Punkten
Solange noch kein Skript aus dem Dropdown ausgewählt ist, bleibt die Anzeige leer, wie in nebenstehender Abbildung zu sehen.
Sobald ein Skript ausgewählt wird, wird es ausgelesen und auf der Oberfläche angezeigt (siehe Abbildung 4). |
Die in Abbildung 4 gezeigten Inhalte sind abhängig vom jeweiligen Skript. Wie diese Inhalte parametriert werden können, wird im Kapitel Skript Referenz beschrieben.
Um Daten zu einem neuen Statement hinzuzufügen, können entweder ganze Tabellen oder einzelne Spalten aus dem Datenbereich via Drag&Drop zum Plug-in hinzugefügt werden (siehe Abbildung 5). |
Abbildung 4 - Neues Statement mit Skript |

Abbildung 5 - Daten zum Statement hinzufügen
Anschließend werden alle verfügbaren Spalten aus der Tabelle oder die manuell hinzugefügten Spalten angezeigt (siehe Abbildung 6).
Über das Info-Icon
können die im Pythonskript hinterlegten bzw. für den Bereich nötigen Datentypen eingeblendet werden.
Für die Bereiche Stellgrößen, Zielgrößen und Kategorische Parameter bedeutet die Angabe [Numeric], dass in diesem Bereich nur numerische Datentypen zulässig sind.
Die Angabe [Int64] bei der Spalte ExpNr bedeutet, dass diese Spalte den Datentyp Integer besitzt (siehe Abbildung 7).
Abbildung 6 - Daten hinzugefügt |
Abbildung 7 - Datentypen einblenden |
Jetzt können in diesem Beispiel aus dem Bereich nicht zugewiesen die verfügbaren Spalten mit Hilfe von Drag&Drop auf die zur Verfügung stehenden Bereiche Stellgrößen, Zielgrößen und Kategorische Parameter verteilt werden.
Abbildung 8 - Spalten verteilen |
Die beiden Symbole neben dem Cursor Dabei kommt es auch darauf an, von wo aus die einzufügende Spalte in den Zielbereich gezogen wird. |
Sobald alle Bereiche mit Spalten befüllt sind, kann über die Buttons im Menü die Ausführung des Skriptes gestartet werden.
Sobald das Skript einmal erfolgreich ausgeführt wurde, stehen die Ergebnisdaten über die Datenanbieterschnittstelle (Reiter Datenanbieter) zur Verfügung.

Abbildung 9 - Datenanbieterschnittstelle
5. Python Skripte online ausführen
Über den Button Verbindung kann ein Dialog geöffnet werden, um eine Verbindung zum Server herzustellen.
Dabei muss folgende Adresse angegeben werden: https://simassist-python.simplan.de/

Abbildung 10 - Serverdialog
Ein Klick auf Anmelden öffnet den Browser. Dort kann sich entweder mit bestehendem Account eingeloggt oder ein neuer (kostenloser) Account angelegt werden, bestehend aus Mail-Adresse, Passwort und optionalem Benutzernamen.
Abbildung 11 - Anmeldung am Server |
Abbildung 12 - Registrierung |
Nach erfolgreicher Anmeldung erscheint ein Bestätigungsbildschirm. Im Dialog in SimAssist wird jetzt angezeigt, dass der User angemeldet ist.
Über den Button Konto löschen kann das angelegte Benutzerkonto jederzeit wieder gelöscht werden.

Abbildung 13 - Erfolgreich angemeldet
In diesem Kapitel werden beispielhaft einzelne Elemente eines Python-Skripts aufgeschlüsselt und erklärt. Die graphische Oberfläche zu diesem Skript ist in Abbildung 14 zu sehen.

Abbildung 14 - graphische Oberfläche zu script_reference.py
#pyplugin: If the script starts with '#2pyplugin', SimAssist will recognise it as a python script which can be executed with Pythondefinition plugin
#This line is ignored by SimAssist, but the '#Description' tag in the next line defines the description text.
#Description:This is an example script definition without python code.
#
# ----------------------------------
# --- Structure for parameters ---
# ----------------------------------
#Each line which starts with "Parameter:" defines one parameter, additional attributes are separated by pipe: i.e. #Input:Attribute1|Attribute2|Attribute3 etc.
#Attribute1: Parametername, supports i18n, i.e. <i18n><en>Title</en><de>Titel</de></i18n> (mandatory)
#Attribute2: Parametertype, supported types: string,int,double,DateTime,bool (default value: string)
#Attribute3: Default value for parameter (if not specified the default value of the type will be used)
#Attribute4: for string: Enumeration of possible values separated by ;
#Attribute4: for int,double,DateTime: Min;Max values for EditorControl, separated by ;
#Attribute5: Formatstring for EditorControl (where applicable), see https://docs.devexpress.com/WindowsForms/2141/common-features/formatting-values/format-specifiers
#Attribute6: Description, supports i18n, i.e. <i18n><en>Description of ...</en><de>Beschreibung von ...</de></i18n>
#
# --- Examples for parameters ---
#Parameter:Title
#Parameter:<i18n><en>Subtitle</en><de>Subtitel</de></i18n>|string|Latin hypercube sampling|||<i18n><en>Description of Subtitle in English</en><de>Beschreibung von Subtitel auf Deutsch</de></i18n>
#Parameter:Mode||Normal|Normal;Complex
#Parameter:Limit|int
#Parameter:Percentage|double|98.5|0;100
#Parameter:Evaluation|DateTime|today|today;12/31/2099 23:59:59
#Parameter:Effective date|DateTime|05/21/2014 22:09:28||d
#Parameter:Boost|bool|True
#
# ----------------------------------
# --- Structure for input fields ---
# ----------------------------------
#Each line which starts with 'Input:' defines one input-field, additional attributes are separated by pipe: i.e. #Input:Attribute1|Attribute2|Attribute3 etc.
#Attribute1: Name: Unique field name, supports i18n, i.e. <i18n><en>Title</en><de>Titel</de></i18n>
#Attribute2: Type: One of following values to limit supported column types: any|text|numeric|date time|bool (default value: any)
#Attribute3: Min column count (default value: 0)
#Attribute4: Max column count (default value: int.MaxValue)
#Attribute5: Group ID: Any value to group input fields. Fields with the same group ID will accept columns only from the same table. Supports i18n. (default value: "default")
#Attribute6: true to load full table (all columns), false to load data only for requested columns. (default value: false)
#
# --- Examples for input fields ---
#Input:X-Values
#Input:Y-Values|numeric
#Input:Input Field 1|numeric|1|99
#Input:Input Field 2|date time|1
#Input:Column from one table
#Input:Column from other table|any|0|1|other table
#Input:Some field|any|0|1|this table will contain data from all columns|true
© SimPlan AG - AG Hanau HRB 6845 - info@simplan.de - www.simplan.de