Python-Integration

Allgemein

info Information
  • In der PLANTA-Software sind zwei Python-Interpreter integriert:
    • IronPython v2.7.2
    • CPython v3.2.4

note Details

warning Hinweis

  • Teile der nachfolgenden Dokumentation sind nur auf Englisch vorhanden.

index Siehe auch: Python API Reference (Server-seitig), HQL API (Server-seitig), Python-Wertebereiche (Server-seitig), Python-Debugging (Server-seitig), IronPython API (Client-seitig), Ordnerstruktur des Clients und Servers

Technische Details

info Informationen

  • Innerhalb des PLANTA-Servers läuft ein CPython-Interpreter (v3.2.4).
  • Da sich alle Sessions eines Servers den gleichen Interpreter teilen, werden auch alle globalen Objekte zwischen allen Sessions geteilt.
    • Fügt man also beispielsweise einem Python-Modul ein neues Attribut hinzu, ist dieses Attribut auch in anderen Session abfragbar. Soll ein Zustand nur in der aktiven Session gespeichert werden, sollte hierfür ppms.get_session_dict() verwendet werden.

ppms-Modul

info Informationen

  • Der in C geschriebene Teil des PLANTA-Servers stellt bestimmte Funktionen in einer Funktionsbibliothek zur Verfügung.
    • Diese Funktonsbibliothek liegt standardmäßig im Server-Verzeichnis unter /dlls/ und heißt je nach Betriebssystem _ppms.so oder _ppms.dll.
  • Im Verzeichnis ppms befindet sich:
    • die Datei ppms_.py. Diese Datei wird mithilfe von SWIG automatisch generiert und macht die C-Funktionen aufrufbar.
    • die Datei ppms.py, die die beiden Module kombiniert und die eigentliche Schnittstelle zu PLANTA beinhaltet. Die PLANTA-Objekte werden hier noch um Funktionen erweitert, die in purem Python geschrieben sind.

Injections

info Informationen
  • An mehreren Stellen im System kann Python-Code hinterlegt werden, der vom Programm ausgeführt wird.
  • Bei der Ausführung wird aus dem Quelltext ein Python-Modul-Objekt erzeugt. Dabei werden ggf. weitere Attribute automatisch eingefügt.
  • An jeder Stelle im System wird das ppms -Modul automatisch verfügbar gemacht. Bei Code im Feld Wertebereich wird noch zusätzlich das inspect -Modul importiert.

Python-Pfad

Ab S 39.5.18

info Informationen
  • Die Umgebungsvariable PYTHONPATH wird standardmäßig von den entsprechenden Start-Skripten für den Server gesetzt.
  • NEU Nachdem der Server den Python-Interpreter gestartet hat, wird die startup.py importiert, die den Pfad weiter anpasst
  • NEU Die Standard-Reihenfolge, die von PLANTA konfiguriert wird, lautet wie folgt:
    1. py/distribution
    2. dlls
    3. dlls/python34.zip
    4. lib
    5. py
    6. py/pysrc
    7. py/distribution/site-packages
    8. py/api/ppms/wrapper/system
    9. py/api/ppms/wrapper
    10. py/api/ppms/customizing/venus
    11. py/api/ppms/server

Bis S 39.5.18

info Informationen
  • Die Umgebungsvariable PYTHONPATH wird standardmäßig von den entsprechenden Start-Skripten für den Server gesetzt.
  • Die Standard-Reihenfolge, die von PLANTA konfiguriert wird, lautet wie folgt:
    1. py
    2. py/pysrc
    3. py/system
    4. py/system/python32
    5. dlls
    6. py/customer
    7. py/planta_ch
    8. py/planta_de
    9. migration/planta_de
    10. migration/planta_ch
    11. migration/customer

Import-Wrapper

Ab S 39.5.18

info Im Verzeichnis /api/ppms/wrapper/ existieren folgende Unterverzeichnisse:
/planta_de/ NEU Beinhaltet die neuen Import-Wrapper. Die echten Dateien liegen unter /customizing/ und /server/.
/planta_ch/ Beinhaltet die Python-Dateien von PLANTA Schweiz
/customer/ Beinhaltet die kundenindividuellen Python-Dateien sowie Dateien, die Standardfunktionalitäten ändern oder erweitern.
  • warning Werden neue individuelle Dateien im customer -Verzeichnis angelegt, muss die Session neu gestartet werden, um die Wrapper-Dateien unter system zu generieren.
/system/ Beinhaltet die alten Import-Wrapper. Die Dateien in den Unterverzeichnissen dieses Verzeichnisses
  • bilden die Struktur der anderen Verzeichnisse ab.
  • importieren den Code aus planta_de, planta_ch und customer in dieser Reihenfolge. Wird also unter planta_de eine Funktion definiert, kann diese in der entsprechenden Datei im customer -Verzeichnis überschrieben werden.
=pysrc= Beinhaltet die Dateien für den Python-Debugger

Ab S 39.5.15

info Im Verzeichnis /api/ppms/wrapper/ existieren folgende Unterverzeichnisse:
/planta_de/ Beinhaltet die Standard-Python-Dateien, die im Standard mitgeliefert werden
/planta_ch/ Beinhaltet die Python-Dateien von PLANTA Schweiz
/customer/ Beinhaltet die kundenindividuellen Python-Dateien sowie Dateien, die Standardfunktionalitäten ändern oder erweitern.
  • warning Werden neue individuelle Dateien im customer -Verzeichnis angelegt, NEW muss die Session neu gestartet werden, um die Wrapper-Dateien unter system zu generieren.
/system/ Beinhaltet die alten Import-Wrapper. Die Dateien in den Unterverzeichnissen dieses Verzeichnisses
  • bilden die Struktur der anderen Verzeichnisse ab.
  • importieren den Code aus planta_de, planta_ch und customer in dieser Reihenfolge. Wird also unter planta_de eine Funktion definiert, kann diese in der entsprechenden Datei im customer -Verzeichnis überschrieben werden.
pysrc Beinhaltet die Dateien für den Python-Debugger

Bis S 39.5.15

info Im Python-Verzeichnis existieren folgende Unterverzeichnisse:
/planta_de/ Beinhaltet die Standard-Python-Dateien, die im Standard mitgeliefert werden
/planta_ch/ Beinhaltet die Python-Dateien von PLANTA Schweiz
/customer/ Beinhaltet die kundenindividuellen Python-Dateien sowie Dateien, die Standardfunktionalitäten ändern oder erweitern.
  • warning Werden neue individuelle Dateien im customer -Verzeichnis angelegt, muss das Migrationspaket CreateFolderPacket ausgeführt werden, um die Wrapper-Dateien unter system zu generieren.
/system/ Beinhaltet die neuen Import-Wrapper. Die Dateien in den Unterverzeichnissen dieses Verzeichnisses
  • bilden die Struktur der anderen Verzeichnisse ab.
  • importieren den Code aus planta_de, planta_ch und customer in dieser Reihenfolge. Wird also unter planta_de eine Funktion definiert, kann diese in der entsprechenden Datei im customer -Verzeichnis überschrieben werden.
pysrc Beinhaltet die Dateien für den Python-Debugger

Client-Server-RPC

info Die Client-Server-Interaktion in Python wird über die Client-Server-RPC-Schnittstelle ermöglicht.
  • Hierzu können Client und Server Dienste anbieten, über die klar definierte Operationen zur wechselseitigen Ausführung veröffentlicht werden.
  • Bei einer sicherheitsbewussten Implementierung der Dienste erlaubt die RPC-Schnittstelle dadurch einen sicheren Zugriff auf Funktionalität und Ressourcen.
  • Die Funktionalität wird hier transparent zur Verfügung gestellt: Ein Funktionsaufruf einer publizierten Funktion liefert Rückgabewerte genauso zurück, wie es beim Aufrufen lokaler Funktionen der Fall ist.
  • Des Weiteren gibt es für längere Aufgaben, bei denen die Rückgabe uninteressant ist oder erst später benötigt wird, die Möglichkeit asynchroner Funktionsaufrufe.





 
  • Suche in Topic-Namen

  • Suche in Topic-Inhalten