HMI-Menüstruktur generisch organisieren

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
mimuel
User
Beiträge: 19
Registriert: Montag 8. November 2010, 08:03

Hallo,

wir arbeiten an einem großen Industrie-Projekt, dass eine sehr umfangreiche HMI-Menüstruktur hat
die webbasiert organisiert sein soll.
Diese Struktur lässt sich als Objektbaum darstellen.

Folgende Idee ist geboren:
Wenn ich die Menüstruktur als Objektbaum darstellen kann, kann ich den auch z.B. in einer json-Datei
beschreiben und diese zur Runtime als Navigations-Grundlage durch die Menüs benutzen.
Wie meine ich das:
Der Baum enthält z.B. ein Objekt Button mit allen Attributen - ein Attribut ist z.B. "Visible = True/False".
Wurde im Objektbaum dieses Attribut für den Button auf "False" gesetzt wird dieser Button nicht angezeigt
und der User kann dehalb nicht ein Untermenü öffnen. Steht hingegen das Attribut auf "True" ist die
Anzeige des Button und damit die Weiterleitung in ein Untermenü möglich.

Letztlich handelt es sich um einen generischen Ansatz eine komplexe HMI-Menüstruktur zur Laufzeit zu organisieren.
Das bringt besonders Vorteile wenn dieser Objektbaum mit Anforderungen wie Berechtigungen durch
Systemkonfigurationen, Lizenzen, Gruppen und Usern überlagert wird.

Meine Frage:
Gibt es hierfür bereits Ansätze oder sogar ein Package?
Hat jemand von euch Erfahrung mit einem solchen Ansatz?

Danke und Gruß
mimuel
deets

Die Idee ist unterschiedlich gut, abhaengig davon, welche Sprache verwandt wird. Fuer sowas wie Java ist es toll - denn das ist eine statisch kompilierte Sprache, bei der traditionell viel flexibilitaet durch Konfiguration erreicht wird.

In einem Python-Umfeld oder noch mehr in Ruby wuerde ich eher versuchen genau abzuwaegen, wo der Vorteil eines Konfigurations-basierten Ansatzes versus des direkten schreibens von Objektbaeumen ist. Denn der Overhead direkt Python zu verwenden ist gering. Aber man gewinnt eben die vollen Faehigkeiten einer Programmiersprache.

Wenn man da nicht aufpasst + es bei JSON belaesst, endet man dann mit einem mal in einer Situation wo man kuenstlich komplexeres Verhalten als Code-Snippets oder so in die Konfiguration einbaut.

Und nicht zu vergessen: Mit Python kann man verschiedene Aspekte des HMI separieren und an der geeigneten Stelle einbauen - eben als modul/package. Mit JSON ist alles eiiiiin riesen Baum.
mimuel
User
Beiträge: 19
Registriert: Montag 8. November 2010, 08:03

Hi deets,

kannst Du mir mal erklrären wie Du das meinst:

>Mit Python kann man verschiedene Aspekte des HMI separieren und an der geeigneten Stelle einbauen - eben als modul/package. <

Ich bin in Python Neuling.

Danke mimuel
deets

Du kannst halt module aufbauen, die bestimmte Funktionen gruppieren. Und die dann zusammenziehen. Ich kenne ja deine Domaene nicht, aber aus dem Bauch raus:

Code: Alles auswählen

from hmi import Menu
from security import SecuritySettings
from energy import EnergySavingSettings

main_menu = Menu("main menu")
main_menu.add("security settings", SecuritySettings())
main_menu.add("energy settings", EnergySavingSettings())
Antworten