Kommunikation zwischen Modulen

  • Hallo zusammen,


    für eine Funktion, die ich in eines unserer Systeme implementieren möchte, muss ich Informationen von einem Modul zeitversetzt an ein anderes übergeben. Nun habe ich das mit WriteToFile und ReadFromFile versucht. Geschrieben wurde die Datei durch Modul Eins definitiv. Das habe ich überprüft. Allerdings kann das zweite Modul auch mit FileExists keine Dateien finden, die das erste Modul geschrieben hat. Habe mit den Verzeichnissen schon ordentlich herumprobiert. Kann jedes Modul immer nur auf Dateien im eigenen Verzeichnis zugreifen oder liegt das an meinem Unvermögen, das Verzeichnis richtig anzugeben? Falls das Erste zutrifft: Wie kann ich dann überhaut Informationen zwischen Modulen weitergeben? Falls Letzteres der Fall ist: Wie genau muss ich den Pfad angeben, damit das zweite Modul die Datei auch findet?


    Vielen Dank für jeden Hinweis!


    Herzliche Grüße

    Simon

  • Hallo Simon


    Es gibt mehrere wege Daten zwischen Modulen hin und her zu schieben.


    Das erste, ist wie du gesagt hast WriteToFile, und ReadFromFile.

    Hier gibst zu beachten, dass wenn du keinen Absoluten Pfad angibst, werden diese immer im Verzeichnis "/var/starface/module/instances/repo/[InstanceUUID]" angelegt.

    Jede Instanz hat eine eigene UUID, deshalb findet so die InstanzB eine von InstanzA geschriebene Datei nicht, es sei denn du gibst den Absoluten Pfad mit der InstanzUUID von InstanzA InstanzB an.


    Deshalb würde ich für diesen Austausch Empfehlen im /home/starface ein entsprechendes Verzeichnis zu erstellen.

    Warum im /home/starface? Module haben dort Schreibrechte, und es wird im STARFACE Backup mitgesichert.


    Je nachdem, wie Persistent die Informationen sind, die du austauschen willst, gibts noch mehrere Varianten:


    Im Experten Modus ==> Variables.

    Hier gibt es die Get/SetVariableValue. diese erlaubt es dir verschiedene Scopes (Thread/Channel/Instanz/Modul/System) zu setzen.

    Du kannst du Variablenwerte auf Systemebene setzen, und vom anderen Modul abfragen. Sei bei den Variablennamen Kreativ, damit du sicherstellen kannst, dass es nicht ausversehen von einem anderen Modul verwendet wird, also z.b. die Variable nicht einfach "STATUS" nennen, z.b. "MODULXY_AUSTAUSCH_STATUS".

    Bitte beachte, dass diese Variablen nicht neustartpersistent sind.


    Das gleiche Prinzip, wie die Variables aber Neustart Persistent findest du unter :

    Im Experten Modus ==> DataBase


    Dort gibt es abgesehen von den Standardfunktionen die Delete/get/Read-(Multi)Value baustene.

    Diese Schreiben Werte in eine Persistente Modulinterne Datenbank. auch hier kannst du daten auf dem System Scope zwsichen den Modulen austauschen.


    Ich hoffe damit war dir behilflich.


    MfG


    Fabian

  • Hallo Fabian,


    vielen Dank für die ausführliche Antwort! Mit den systemweiten Variablen geht es sogar noch viel einfacher, als ich es geplant hatte. Perfekt!


    Danke Dir!

Participate now!

Don’t have an account yet? Register yourself now and be a part of our community!