-
Notifications
You must be signed in to change notification settings - Fork 1.8k
/
Copy pathConceptual_Model.puml
168 lines (132 loc) · 4.28 KB
/
Conceptual_Model.puml
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
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
@startuml
scale max 2000 width
package "User Access" #f3e8f8 {
object Permission
object "User Role" as UserRole
object User
object "User Registration" as UserRegistration
enum "User Registration Status" as UserRegistrationStatus
{
WaitingForConfirmation
Confirmed
Expired
}
User "1"-->"0..*" UserRole : has
User --> UserRegistration : created for
UserRole "1..*"-->"1..*" Permission : has
UserRegistration --> UserRegistrationStatus : is in
}
package "Administration" #ffeddb {
object Administrator
object "Meeting Group Proposal" as Administration.MeetingGroupProposal
enum "Meeting Group Proposal Decision" as MeetingGroupProposalDecision
{
Accept
Reject
}
enum "Meeting Group Proposal Status" as Administration.MeetingGroupProposalDecisionStatus
{
Accepted
InVerification
Rejected
}
Administrator "1"-->"0..*" MeetingGroupProposalDecision : makes
MeetingGroupProposalDecision --> Administration.MeetingGroupProposal : for
Administration.MeetingGroupProposal --> Administration.MeetingGroupProposalDecisionStatus: is in
Administrator --> User : is a
}
package "Meetings" #e4f7e4 {
object "Meeting" as Meeting
object "Member" as Member
object "Meeting Group Proposal" as Meeting.MeetingGroupProposal
object "Meeting Attendee" as MeetingAttendee
object "Meeting Group" as MeetingGroup
object "Meeting Not Attendee" as MeetingNotAttendee
object "Meeting Waitlist Member" as MeetingWaitlistMember
object "Meeting Location" as MeetingLocation
object "Member Subscription" as Meeting.MemberSubscription
enum "Meeting Group Proposal Status" as Meeting.MeetingGroupProposalStatus
{
InVerification
Accepted
Rejected
}
Member --> Meeting.MeetingGroupProposal : proposes
Member "1"-->"0..*" MeetingAttendee : is a
Member "1"-->"0..*" MeetingNotAttendee : is a
Member "1"-->"0..*" MeetingWaitlistMember : is a
Member --> Meeting.MemberSubscription : has
Meeting "1"-->"1..*" MeetingAttendee : attendees
Meeting "1"-->"0..*" MeetingNotAttendee : not attendees
Meeting --> MeetingLocation : has
Meeting.MeetingGroupProposal --> Meeting.MeetingGroupProposalStatus : is in
MeetingGroup "1"-->"0..*" Meetings : organizes
MeetingGroup "0..1"-->"1" Meeting.MeetingGroupProposal : created after acceptance of
MeetingWaitlistMember "0..*"-->"1" Meeting : waits for place for
Meeting.MemberSubscription --> MeetingGroup : covers
Member --> User: is a
Meeting.MeetingGroupProposal --> Administration.MeetingGroupProposal : sent to verification
}
package "Payments" #ffc1c1 {
object "Payer" as Payer
object "Meeting Fee" as MeetingFee
object "Meeting Fee Payment" as MeetingFeePayment
object "Subscription" as Payments.Subscription
object "Subscription Payment" as SubscriptionPayment
object "Subscription Renewal Payment" as SubscriptionRenewalPayment
object "Price List" as PriceList
object "Price List Item" as PriceListItem
enum "Subscription Status" as SubscriptionStatus
{
Active
Expired
}
enum "Subscription Payment Status" as SubscriptionPaymentStatus
{
WaitingForPayment
Paid
Expired
}
enum "Subscription Renewal Payment Status" as SubscriptionRenewalPaymentStatus
{
WaitingForPayment
Paid
Expired
}
enum "Meeting Fee Payment Status" as MeetingFeePaymentStatus
{
WaitingForPayment
Paid
Expired
}
enum "Price List Item Category" as PriceListItemCategory
{
New
Renewal
}
enum "Subscription Period" as SubscriptionPeriod
{
Month
HalfYear
}
Payer "1"-->"0..*" MeetingFee : pays for
Payer "1"--> "0..*" Payments.Subscription : buys
MeetingFeePayment "0..*"-->"1" MeetingFee : for
MeetingFeePayment --> MeetingFeePaymentStatus : is in
Payments.Subscription "1"-->"0..*" SubscriptionRenewalPayment: extended by
Payments.Subscription --> SubscriptionStatus : is in
Payments.Subscription --> SubscriptionPeriod : is for
SubscriptionPayment "1..*"-->"1" Payments.Subscription : is for
SubscriptionPayment --> SubscriptionPaymentStatus : is in
SubscriptionPayment --> SubscriptionPeriod : is for
SubscriptionRenewalPayment --> SubscriptionRenewalPaymentStatus: is in
SubscriptionRenewalPayment --> SubscriptionPeriod : is for
PriceListItem --> SubscriptionPeriod : is for
PriceListItem "0..*"-->"1" Country: is for
PriceListItem --> PriceListItemCategory : is for
PriceList "1"-->"1..*" PriceListItem : contains
Payer --> Member: is a
Payer --> User: is a
Payments.Subscription -- Meeting.MemberSubscription
}
@enduml