forked from samvera/hyrax
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathentity-relationship-diagram.dot
76 lines (70 loc) · 6.76 KB
/
entity-relationship-diagram.dot
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
digraph models_diagram {
graph[overlap=false, splines=true]
compound=true;
node[shape=Mrecord margin="0.25, 0.125"]
label="Hyrax Admin Set and Workflow ERD\nClick on the nodes to see the source code"
subgraph 0 {
node[color=green penwidth=2]
"AdminSet" [label="{ AdminSet | Root concept for deposit }" URL="http://github.com/samvera/hyrax/blob/master/app/models/admin_set.rb";]
"PermissionTemplate" [label="{ Hyrax::PermissionTemplate | Permissions to apply\nto deposited items }" URL="http://github.com/samvera/hyrax/blob/master/app/models/hyrax/permission_template.rb";]
"Sipity::Workflow" [label="{ Sipity::Workflow | State machine for \ntransitioning Work's state }" URL="http://github.com/samvera/hyrax/blob/master/app/models/sipity/workflow.rb";]
}
subgraph 2 {
node[color=blue penwidth=2]
"Sipity::Agent" [label="{ Sipity::Agent | proxy for user or group }" URL="http://github.com/samvera/hyrax/blob/master/app/models/sipity/agent.rb";]
"User" [label="{ User | \<Conceptual\> }"]
"Group" [label="{ Group | \<Conceptual\> }"]
"GroupMembership" [label="{ GroupMembership | \<Conceptual\> }"]
}
subgraph 3 {
"Sipity::EntitySpecificResponsibility" [label="{ Sipity::EntitySpecificResponsibility | The given Sipity::Agent\n has the given role\n for the specific work }" URL="http://github.com/samvera/hyrax/blob/master/app/models/sipity/entity_specific_responsibility.rb";]
"Sipity::WorkflowAction" [label="{ Sipity::WorkflowAction | The valid actions\n for the given workflow }"] [URL="http://github.com/samvera/hyrax/blob/master/app/models/sipity/workflow_action.rb";]
"Sipity::WorkflowResponsibility" [label="{ Sipity::WorkflowResponsibility | The given Sipity::Agent\n has the given role\n for all works in this workflow }" URL="http://github.com/samvera/hyrax/blob/master/app/models/sipity/workflow_responsibility.rb";]
"Sipity::WorkflowRole" [label="{ Sipity::WorkflowRole | The valid roles \n for the given workflow }" URL="http://github.com/samvera/hyrax/blob/master/app/models/sipity/workflow_role.rb";]
"Sipity::WorkflowState" [label="{ Sipity::WorkflowState | The valid states\n for the given workflow }"] [URL="http://github.com/samvera/hyrax/blob/master/app/models/sipity/workflow_state.rb";]
"Sipity::WorkflowStateAction" [label="{ Sipity::WorkflowStateAction | The actions that can\n be taken for the\n given workflow & state }" URL="http://github.com/samvera/hyrax/blob/master/app/models/sipity/workflow_state_action.rb";]
"Sipity::WorkflowStateActionPermission" [label="{ Sipity::WorkflowStateActionPermission | The role required to \n take the action \n for the given workflow }" URL="http://github.com/samvera/hyrax/blob/master/app/models/sipity/workflow_state_action_permission.rb";]
"Sipity::Role" [label="{ Sipity::Role | All of the named \n roles for the site }" URL="http://github.com/samvera/hyrax/blob/master/app/models/sipity/role.rb";]
"Sipity::Method" [label=" { Sipity::Method | Arbitrary lambdas to call\nwhen action is taken}" URL="http://github.com/samvera/hyrax/blob/master/app/models/sipity/method.rb";]
}
subgraph 4 {
node[color=gold penwidth=2]
"Sipity::NotifiableContext" [label=" { Sipity::NotifiableContext | Arbitrary lambdas to call\nwhen action is taken}" URL="http://github.com/samvera/hyrax/blob/master/app/models/sipity/notifiable_context.rb";]
"Sipity::Notification" [label=" { Sipity::Notification | A type of notification to send }" URL="http://github.com/samvera/hyrax/blob/master/app/models/sipity/notification.rb";]
"Sipity::NotificationRecipient" [label=" { Sipity::NotificationRecipient | Who receives the notification }" URL="http://github.com/samvera/hyrax/blob/master/app/models/sipity/notification_recipient.rb";]
}
subgraph 1 {
node[color=red penwidth=2]
"AbstractWork" [label="{ Work | \<Conceptual\> | \<Generated\> }"]
"Sipity::Entity" [label="{ Sipity::Entity | A database proxy for \n a Work in Fedora }" URL="http://github.com/samvera/hyrax/blob/master/app/models/sipity/entity.rb";]
}
"AdminSet" -> "PermissionTemplate" [arrowtail=none, arrowhead=none, dir=both]
"User" -> "GroupMembership" [arrowtail=none, arrowhead=crow, dir=both]
"Group" -> "GroupMembership" [arrowtail=none, arrowhead=crow, dir=both]
"PermissionTemplate" -> "Sipity::Workflow" [label="possible" color=gold fontcolor=gold arrowtail=none, arrowhead=crow, dir=both]
"PermissionTemplate" -> "Sipity::Workflow" [label="active" arrowtail=none, arrowhead=none, dir=both]
"Sipity::Entity" -> "Sipity::Workflow" [arrowtail=crow, arrowhead=none, dir=both]
"AbstractWork" -> "AdminSet" [arrowtail=crow, arrowhead=none, dir=both]
"Sipity::Entity" -> "AbstractWork" [arrowtail=none, arrowhead=none, dir=both]
"Sipity::Entity" -> "Sipity::EntitySpecificResponsibility" [arrowtail=none, arrowhead=crow, dir=both]
"Sipity::Agent" -> "Sipity::EntitySpecificResponsibility" [arrowtail=none, arrowhead=crow, dir=both]
"Sipity::WorkflowRole" -> "Sipity::EntitySpecificResponsibility" [arrowtail=none, arrowhead=crow, dir=both]
"Sipity::Workflow" -> "Sipity::WorkflowState" [arrowtail=none, arrowhead=crow, dir=both]
"Sipity::Workflow" -> "Sipity::WorkflowAction" [arrowtail=none, arrowhead=crow, dir=both]
"Sipity::Workflow" -> "Sipity::WorkflowRole" [arrowtail=none, arrowhead=crow, dir=both]
"Sipity::WorkflowAction" -> "Sipity::WorkflowStateAction" [arrowtail=none, arrowhead=crow, dir=both]
"Sipity::WorkflowState" -> "Sipity::WorkflowAction" [label="resulting_workflow_state" color=purple fontcolor=purple arrowtail=none, arrowhead=crow, dir=both]
"Sipity::WorkflowState" -> "Sipity::WorkflowStateAction" [arrowtail=none, arrowhead=crow, dir=both]
"Sipity::WorkflowStateAction" -> "Sipity::WorkflowStateActionPermission" [arrowtail=none, arrowhead=crow, dir=both]
"Sipity::WorkflowRole" -> "Sipity::WorkflowStateActionPermission" [arrowtail=none, arrowhead=crow, dir=both]
"Sipity::Role" -> "Sipity::WorkflowRole" [arrowtail=none, arrowhead=crow, dir=both]
"Sipity::WorkflowRole" -> "Sipity::WorkflowResponsibility" [arrowtail=none, arrowhead=crow, dir=both]
"Sipity::WorkflowAction" -> "Sipity::Method" [arrowtail=none, arrowhead=crow, dir=both]
"Sipity::Agent" -> "Sipity::WorkflowResponsibility" [arrowtail=none, arrowhead=crow, dir=both]
"Sipity::Agent" -> "Group" [label="as proxy" arrowtail=none, arrowhead=none, dir=both]
"Sipity::Agent" -> "User" [label="as proxy" arrowtail=none, arrowhead=none, dir=both]
"Sipity::WorkflowState" -> "Sipity::Entity" [arrowtail=none, arrowhead=crow, dir=both]
"Sipity::WorkflowAction" -> "Sipity::NotifiableContext" [arrowtail=none, arrowhead=crow, dir=both]
"Sipity::NotifiableContext" -> "Sipity::Notification" [arrowtail=none, arrowhead=crow, dir=both]
"Sipity::Notification" -> "Sipity::NotificationRecipient" [arrowtail=none, arrowhead=crow, dir=both]
}