====== Materialverwaltung Version 2.0 ====== 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. 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" ]; } * The library should be expanded trough items from the database * QtScript * GUIs for QtScript * Plugins (Extensions for different cases) 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=" table: scripts| table: Guis| 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; } ==== 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)).