Die Dokumentation ab Version 39.5.17 von PLANTA project finden Sie in der neuen PLANTA Online-Hilfe.

Python-Integration

Allgemein

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

Details

Hinweis

  • Teile der nachfolgenden Dokumentation sind nur auf Englisch vorhanden.

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

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

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

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

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:
    • py/distribution
    • dlls
    • dlls/python34.zip
    • lib
    • py
    • py/pysrc
    • py/distribution/site-packages
    • py/api/ppms/wrapper/system
    • py/api/ppms/wrapper
    • py/api/ppms/customizing/venus
    • py/api/ppms/server

Bis S 39.5.18

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:
    • py
    • py/pysrc
    • py/system
    • py/system/python32
    • dlls
    • py/customer
    • py/planta_ch
    • py/planta_de
    • migration/planta_de
    • migration/planta_ch
    • migration/customer

Import-Wrapper

Ab S 39.5.18

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.
  • 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

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.
  • 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

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.
  • 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

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.

         PLANTA project









 
  • Suche in Topic-Namen

  • Suche in Topic-Inhalten
This site is powered by the TWiki collaboration platform Powered by Perl