Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen gezeigt.
Nächste Überarbeitung | Vorhergehende Überarbeitung | ||
private:mvw:start [2013/05/06 11:07] Patrick Wacker angelegt |
private:mvw:start [2013/05/06 14:52] (aktuell) Patrick Wacker further editing |
||
---|---|---|---|
Zeile 1: | Zeile 1: | ||
====== Materialverwaltung Version 2.0 ====== | ====== Materialverwaltung Version 2.0 ====== | ||
- | Überlegungen für die grundlegende Strukturierung. | + | If possible in any way, write your documentation and identifier in English. |
+ | |||
+ | |||
+ | ===== First thoughts about the Design ===== | ||
+ | |||
+ | * The database access should be abstracted from the application. | ||
+ | |||
+ | |||
+ | <graphviz dot center> | ||
+ | digraph abstractionElements { | ||
+ | graph [ rankdir="LR" ]; | ||
+ | node [shape=record, fontname=Helvetica, fontsize=10]; | ||
+ | |||
+ | subgraph cluster1 { | ||
+ | style="plaintext"; color="invis"; label = "Applications"; labelloc=t; labeljust=c; | ||
+ | |||
+ | app1 [ label="Application 1", shape="ellipse", style=filled, fillcolor=lightgray ]; | ||
+ | app2 [ label="Application 2", shape="ellipse", style=filled, fillcolor=lightgray ]; | ||
+ | } | ||
+ | |||
+ | subgraph cluster2 { | ||
+ | style="plaintext"; color="invis"; label = "MVW Librarys"; labelloc=t; labeljust=c; | ||
+ | lib [ label="library", shape="record", height=0.8, style=filled, fillcolor=yellow ]; | ||
+ | } | ||
+ | |||
+ | subgraph cluster3 { | ||
+ | style="plaintext"; color="invis"; label = "MVW Database"; labelloc=t; labeljust=c; | ||
+ | db [ label="Database", shape="record", height=0.8, style=filled, fillcolor=lightblue ]; | ||
+ | } | ||
+ | |||
+ | app1 -> lib [ arrowhead="open", style="solid" ]; | ||
+ | app2 -> lib [ arrowhead="open", style="solid" ]; | ||
+ | lib -> db [ arrowhead="open", style="solid" ]; | ||
+ | db -> lib [ arrowhead="open", style="solid" ]; | ||
+ | |||
+ | } | ||
+ | </graphviz> | ||
+ | |||
+ | |||
+ | |||
+ | * The library should be expanded trough items from the database | ||
+ | * QtScript | ||
+ | * GUIs for QtScript | ||
+ | * Plugins (Extensions for different cases) | ||
+ | |||
+ | |||
+ | <graphviz dot center> | ||
+ | digraph libdatabase { | ||
+ | graph [ rankdir="LR" ]; | ||
+ | node [shape=record, fontname=Helvetica, fontsize=10]; | ||
+ | |||
+ | subgraph cluster1 { | ||
+ | style="plaintext"; color="invis"; label = "MVW Database"; labelloc=t; labeljust=c; | ||
+ | |||
+ | db [ shape="record", height=1.2, style=filled, fillcolor=lightblue, | ||
+ | label="<t1> table: scripts|<t2> table: Guis|<t3> table: plugins"]; | ||
+ | } | ||
+ | |||
+ | subgraph cluster2 { | ||
+ | style="box"; color="yellow"; label = "MVW Libraries"; labelloc=t; labeljust=c; | ||
+ | |||
+ | lib1 [ label="connection", shape="record", style=filled, fillcolor=yellow]; | ||
+ | lib2 [ label="usersettings", shape="record", style=filled, fillcolor=yellow]; | ||
+ | lib3 [ label="programsettings", shape="record", style=filled, fillcolor=yellow]; | ||
+ | lib4 [ label="rights", shape="record", style=filled, fillcolor=yellow]; | ||
+ | lib5 [ label="scripts", shape="record", style=filled, fillcolor=yellow]; | ||
+ | lib6 [ label="guis", shape="record", style=filled, fillcolor=yellow]; | ||
+ | lib7 [ label="plugins", shape="record", style=filled, fillcolor=yellow]; | ||
+ | } | ||
+ | |||
+ | lib1 -> db; | ||
+ | lib2 -> db; | ||
+ | lib3 -> db; | ||
+ | lib4 -> db; | ||
+ | lib5 -> db; | ||
+ | lib6 -> db; | ||
+ | lib7 -> db; | ||
+ | |||
+ | } | ||
+ | </graphviz> | ||
+ | |||
+ | |||
+ | |||
+ | ==== Textual descriptions for the libraries ==== | ||
+ | |||
+ | The libmvw.so should contain classes for the connection and query | ||
+ | to the database. | ||
+ | |||
+ | So that each application can individual access the database and it should be easy to design one commandline version and one GUI version. | ||
+ | |||
+ | The Scripts in the database should extend every function of the library. (prehook_class_function, posthook_class_function) | ||
+ | |||
+ | |||
+ | All details should be hidden between an Interface class, which | ||
+ | should be the only one accessible from the application. | ||
+ | (NO direct connection to the database, except: the user has the | ||
+ | right for that (admin_db)). | ||