Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen gezeigt.
Beide Seiten der vorigen Revision Vorhergehende Überarbeitung Nächste Überarbeitung | Vorhergehende Überarbeitung | ||
private:matverw_database [2013/03/27 20:46] Patrick Wacker zwischenspeicherung |
private:matverw_database [2013/03/28 19:55] (aktuell) Patrick Wacker [rights assignments] some tests |
||
---|---|---|---|
Zeile 6: | Zeile 6: | ||
- | ==== Aufbau ==== | + | ==== rights assignments ==== |
<graphviz dot left> | <graphviz dot left> | ||
Zeile 14: | Zeile 14: | ||
edge [ fontname=Helvetica, fontsize=10 ]; | edge [ fontname=Helvetica, fontsize=10 ]; | ||
| | ||
- | subgraph cluster0 { label = "rights"; style="solid"; color="gray"; | + | subgraph cluster0 { label = "rights"; style="solid"; color="gray"; spacing="4"; |
- | rxuy [label = "{<r1-u1> r1-u1|<r2-u1> r2-u1|<r1-u2> r1-u2|<r2-u2> r2-u2}"]; | + | rxuy [label = "{<r1-u1> r1-u1|<r2-u1> r2-u1|<r1-u2> r1-u2|<r2-u2> r2-u2}", color="blue"]; |
rxrgy [label = "{<r1-rg1> r1-rg1|<r2-rg1> r2-rg1|<r3-rg1> r3-rg1|<r1-rg2> r1-rg2|<r1-rg3> r1-rg3}"]; | rxrgy [label = "{<r1-rg1> r1-rg1|<r2-rg1> r2-rg1|<r3-rg1> r3-rg1|<r1-rg2> r1-rg2|<r1-rg3> r1-rg3}"]; | ||
- | rxrgugy [label = "{<r1-rg-ug1> r1-rg-ug1|<r2-rg-ug1> r2-rg-ug2|<r1-rg-ug2> r1-rg-ug2|<r2-rg-ug2> r1-rg-ug2|<r3-rg-ug2> r1-rg-ug2}"]; | + | rxrgugy [label = "{<r1-rg-ug1> r1-rg-ug1|<r2-rg-ug1> r2-rg-ug1|<r1-rg-ug2> r1-rg-ug2|<r2-rg-ug2> r1-rg-ug2|<r3-rg-ug2> r1-rg-ug2}"]; |
- | rxugy [label = "{<r1-ug1> r1-ug1|<r2-ug1> r2-ug2|<r1-ug12> r1-ug12|<r2-ug12> r1-ug12}"]; | + | rxugy [label = "{<r1-ug1> r1-ug1|<r2-ug1> r2-ug1|<r1-ug12> r1-ug12|<r2-ug12> r1-ug12}"]; |
} | } | ||
| | ||
subgraph cluster1 { label = "right groups"; style="solid"; color="gray"; | subgraph cluster1 { label = "right groups"; style="solid"; color="gray"; | ||
- | rg [label = "{<rg1> rg1|<rg2> rg2|<rg2> rg2|<rg-ug1> rg-ug1|<rg-ug2> rg-ug2}"]; | + | rg [label = "{<rg1> rg1|<rg2> rg2|<rg3> rg3|<rg-ug1> rg-ug1|<rg-ug2> rg-ug2}"]; |
} | } | ||
Zeile 33: | Zeile 33: | ||
} | } | ||
- | rxuy:"r1-u1" -> users:"u1" [ arrowhead="open", style="solid" ]; | + | rxuy:"r1-u1":w -> users:"u1":w [ arrowhead="open", style="solid" ]; |
- | rxuy:"r2-u1" -> users:"u1" [ arrowhead="open", style="solid" ]; | + | rxuy:"r2-u1":w -> users:"u1":w [ arrowhead="open", style="solid" ]; |
+ | rxuy:"r1-u2":w -> users:"u2":w [ arrowhead="open", style="solid" ]; | ||
+ | rxuy:"r2-u2":w -> users:"u2":w [ arrowhead="open", style="solid" ]; | ||
| | ||
- | rxrgy:"r1-rg1" -> rg:"rg1" [ arrowhead="open", style="solid" ]; | + | |
- | rxrgy:"r2-rg1" -> rg:"rg1" [ arrowhead="open", style="solid" ]; | + | rxrgy:"r1-rg1":e -> rg:"rg1":e [ arrowhead="open", style="solid" ]; |
- | rxrgy:"r3-rg1" -> rg:"rg1" [ arrowhead="open", style="solid" ]; | + | rxrgy:"r2-rg1":e -> rg:"rg1":e [ arrowhead="open", style="solid" ]; |
- | rxrgy:"r1-rg2" -> rg:"rg2" [ arrowhead="open", style="solid" ]; | + | rxrgy:"r3-rg1":e -> rg:"rg1":e [ arrowhead="open", style="solid" ]; |
- | rxrgy:"r1-rg3" -> rg:"rg3" [ arrowhead="open", style="solid", label="", color="gray"]; | + | rxrgy:"r1-rg2":w -> rg:"rg2":w [ arrowhead="open", style="solid" ]; |
- | + | rxrgy:"r1-rg3":w -> rg:"rg3":w [ arrowhead="open", style="solid", label="", color="gray"]; | |
- | + | ||
- | { rank="same"; "ug"; "rg"; "users"} | + | rxrgugy:"r1-rg-ug1":e -> rg:"rg-ug1":e [ arrowhead="open", style="solid" ]; |
+ | rxrgugy:"r2-rg-ug1":e -> rg:"rg-ug1":e [ arrowhead="open", style="solid" ]; | ||
+ | rxrgugy:"r1-rg-ug2":w -> rg:"rg-ug2":w [ arrowhead="open", style="solid" ]; | ||
+ | rxrgugy:"r2-rg-ug2":w -> rg:"rg-ug2":w [ arrowhead="open", style="solid" ]; | ||
+ | rxrgugy:"r3-rg-ug2":w -> rg:"rg-ug2":w [ arrowhead="open", style="solid" ]; | ||
+ | |||
+ | rxugy:"r1-ug1":e -> ug:"ug1":e [ arrowhead="open", style="solid" ]; | ||
+ | rxugy:"r2-ug1":e -> ug:"ug1":e [ arrowhead="open", style="solid" ]; | ||
+ | rxugy:"r1-ug12":e -> ug:"ug1":e [ arrowhead="open", style="solid" ]; | ||
+ | rxugy:"r2-ug12":e -> ug:"ug1":e [ arrowhead="open", style="solid" ]; | ||
+ | rxugy:"r1-ug12":e -> ug:"ug2":e [ arrowhead="open", style="solid", color="red"]; | ||
+ | rxugy:"r2-ug12":e -> ug:"ug2":e [ arrowhead="open", style="solid", color="red" ]; | ||
+ | rg:"rg-ug1" -> ug:"ug1" [ arrowhead="open", style="solid" ]; | ||
+ | rg:"rg-ug2" -> ug:"ug2" [ arrowhead="open", style="solid" ]; | ||
+ | | ||
+ | ug:"ug1" -> users:"u1" [ arrowhead="open", style="solid" ]; | ||
+ | rg:"rg1" -> users:"u1" [ arrowhead="open", style="solid" ]; | ||
} | } | ||
Zeile 50: | Zeile 68: | ||
+ | ab hier dann der zweite Versuch, vielleicht ist die Darstellung etwas besser | ||
+ | |||
+ | <graphviz dot left> | ||
+ | digraph rights_assignments { | ||
+ | graph [ rankdir="LR" ]; | ||
+ | node [ shape=record, fontname=Helvetica, fontsize=10 ]; | ||
+ | edge [ fontname=Helvetica, fontsize=10 ]; | ||
+ | | ||
+ | subgraph cluster0 { label = "rights"; style="solid"; color="gray"; | ||
+ | r1_u1 [label = "r1-u1"]; | ||
+ | r2_u1 [label = "r2-u1"]; | ||
+ | r1_u2 [label = "r1-u2"]; | ||
+ | r2_u1 [label = "r2-u2"]; | ||
+ | |||
+ | r1_rg1 [label = "r1-rg1"]; | ||
+ | r2_rg1 [label = "r2-rg1"]; | ||
+ | r3_rg1 [label = "r3-rg1"]; | ||
+ | r1_rg2 [label = "r1-rg2"]; | ||
+ | r1_rg3 [label = "r1-rg3"]; | ||
+ | | ||
+ | r1_rg_ug1 [label = "r1-rg-ug1"]; | ||
+ | r2_rg_ug1 [label = "r2-rg-ug1"]; | ||
+ | r1_rg_ug2 [label = "r1-rg-ug2"]; | ||
+ | r2_rg_ug2 [label = "r1-rg-ug2"]; | ||
+ | r3_rg_ug2 [label = "r1-rg-ug2"]; | ||
+ | | ||
+ | r1_ug1 [label = "r1-ug1"]; | ||
+ | r2_ug1 [label = "r2-ug1"]; | ||
+ | r1_ug12 [label = "r1-ug12"]; | ||
+ | r2_ug12 [label = "r1-ug12"]; | ||
+ | } | ||
+ | | ||
+ | subgraph cluster1 { label = "right groups"; style="solid"; color="gray"; | ||
+ | rg1 [label = "rg1"]; | ||
+ | rg2 [label = "rg2"]; | ||
+ | rg3 [label = "rg3"]; | ||
+ | rg_ug1 [label = "rg-ug1"]; | ||
+ | rg_ug2 [label = "rg-ug2"]; | ||
+ | } | ||
+ | |||
+ | subgraph cluster2 { label = "users"; style="filled, dashed"; color="black"; fillcolor="green"; | ||
+ | u1 [label = "u1"]; | ||
+ | u2 [label = "u2"]; | ||
+ | } | ||
+ | | ||
+ | subgraph cluster3 { label = "user groups"; style="solid"; color="gray"; | ||
+ | ug1 [label = "ug1"]; | ||
+ | ug2 [label = "ug2"]; | ||
+ | } | ||
+ | |||
+ | r1_u1 -> u1 [ arrowhead="open", style="solid" ]; | ||
+ | r2_u1 -> u1 [ arrowhead="open", style="solid" ]; | ||
+ | r1_u2 -> u2 [ arrowhead="open", style="solid" ]; | ||
+ | r2_u2 -> u2 [ arrowhead="open", style="solid" ]; | ||
+ | | ||
+ | | ||
+ | r1_rg1 -> rg1 [ arrowhead="open", style="solid" ]; | ||
+ | r2_rg1 -> rg1 [ arrowhead="open", style="solid" ]; | ||
+ | r3_rg1 -> rg1 [ arrowhead="open", style="solid" ]; | ||
+ | r1_rg2 -> rg2 [ arrowhead="open", style="solid" ]; | ||
+ | r1_rg3 -> rg3 [ arrowhead="open", style="solid", label="", color="gray"]; | ||
+ | | ||
+ | r1_rg-ug1 -> rg_ug1 [ arrowhead="open", style="solid" ]; | ||
+ | r2_rg-ug1 -> rg_ug1 [ arrowhead="open", style="solid" ]; | ||
+ | r1_rg-ug2 -> rg_ug2 [ arrowhead="open", style="solid" ]; | ||
+ | r2_rg-ug2 -> rg_ug2 [ arrowhead="open", style="solid" ]; | ||
+ | r3_rg-ug2 -> rg_ug2 [ arrowhead="open", style="solid" ]; | ||
+ | | ||
+ | r1_ug1 -> ug1 [ arrowhead="open", style="solid" ]; | ||
+ | r2_ug1 -> ug1 [ arrowhead="open", style="solid" ]; | ||
+ | r1_ug12 -> ug1 [ arrowhead="open", style="solid" ]; | ||
+ | r2_ug12 -> ug1 [ arrowhead="open", style="solid" ]; | ||
+ | r1_ug12 -> ug2 [ arrowhead="open", style="solid", color="red"]; | ||
+ | r2_ug12 -> ug2 [ arrowhead="open", style="solid", color="red" ]; | ||
+ | |||
+ | rg_ug1 -> ug1 [ arrowhead="open", style="solid" ]; | ||
+ | rg_ug2 -> ug2 [ arrowhead="open", style="solid" ]; | ||
+ | | ||
+ | ug1 -> u1 [ arrowhead="open", style="solid" ]; | ||
+ | rg1 -> u1 [ arrowhead="open", style="solid" ]; | ||
+ | |||
+ | } | ||
+ | </graphviz> |