-
Notifications
You must be signed in to change notification settings - Fork 0
/
cedarschema.cedarschema
75 lines (63 loc) · 1.27 KB
/
cedarschema.cedarschema
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
type User = {
age: Long,
id?: Long
};
entity ProfessorTeam;
entity Student {
userInformation: User,
faculty: String,
weightedAverage: decimal
};
entity Professor in ProfessorTeam {
userInformation : User
};
entity Course {
faculty: String,
year: Long,
professors: Set<Professor>
};
entity Article {
title: String,
genre: String
};
action ReadResource, ResearchDepartmentActions;
action ReadParticipants in ReadResource appliesTo {
principal: [Student, Professor],
resource: Course,
context: {
isPrincipalSubscribed: Bool
}
};
action SubscribeToCourse, UnsubscribeFromCourse appliesTo {
principal: Student,
resource: Course
};
action RemoveStudent appliesTo {
principal: Professor,
resource: Student,
context: {
course: Course
}
};
action DeleteCourse appliesTo {
principal: Professor,
resource: Course,
context: {
currentYear: Long,
studentsSubscribedToCourse: Long
}
};
action PublishArticle in ResearchDepartmentActions appliesTo {
principal: Professor,
resource: Article,
context: {
sourceIp: ipaddr
}
};
action ReadArticle in [ResearchDepartmentActions, ReadResource] appliesTo {
principal: [Student, Professor],
resource: Article,
context: {
isPublic?: Bool
}
};