-
-
Notifications
You must be signed in to change notification settings - Fork 81
/
Copy pathServiceCutterLibraryContract.mdsl
63 lines (52 loc) · 3.34 KB
/
ServiceCutterLibraryContract.mdsl
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
API description ServiceCutterLibraryAPI
usage context PUBLIC_API for BACKEND_INTEGRATION
// input model (Entity Relation Diagram & User Representations)
data type EntityRelationshipDiagram { "name":D<string>, "entities":{ "name":D<string>, "nanoentities":D<string>* }*, "relations":{ "origin":{ "name":D<string>, "nanoentities":D<string>* }, "destination":{ "name":D<string>, "nanoentities":D<string>* }, "relationType":RelationType }* }
data type UserRepresentations { "useCases":{ "name":D<string>, "nanoentitiesRead":D<string>*, "nanoentitiesWritten":D<string>*, "latencyCritical":D<bool> }*, "compatibilities":{ "contentVolatility":{ "characteristic":D<string>, "nanoentities":D<string>* }*, "structuralVolatility":{ "characteristic":D<string>, "nanoentities":D<string>* }*, "availabilityCriticality":{ "characteristic":D<string>, "nanoentities":D<string>* }*, "consistencyCriticality":{ "characteristic":D<string>, "nanoentities":D<string>* }*, "storageSimilarity":{ "characteristic":D<string>, "nanoentities":D<string>* }*, "securityCriticality":{ "characteristic":D<string>, "nanoentities":D<string>* }* }* }
data type RelationType { "AGGREGATION" | "COMPOSITION" | "INHERITANCE" }
// Service cutting context built by input and coupling criteria
data type ServiceCutterContext { "systemName":D<string>, "criteriaCatalog":CouplingCriteriaCatalog, "couplingInstances":CouplingInstance*, "nanoEntities":D<string>*, "solverConfiguration":SolverConfiguration }
data type CouplingCriteriaCatalog P // not specified in detail due to complexity
data type CouplingInstance P // not specified in detail due to complexity
// Solver configuration provided by user (algorithm and priorities)
data type SolverConfiguration { "algorithm":D<string>, "solverPriorities":{ "criterion":D<string>, "priority":SolverPriority }* }
data type SolverPriority { "IGNORE" | "XS" | "S" | "M" | "L" | "XL" | "XXL" }
// Cutting result provided by Service Cutter
data type SolverResult { "services":{ "nanoentities":D<string>*, "id":Char }*, "relations":{ "serviceA":D<string>, "serviceB":D<string>, "sharedEntities":D<string>*, "direction":Direction }* }
data type Direction { "OUTGOING" | "INCOMING" | "BIDIRECTIONAL" }
data type Char P // no char primitive type in MDSL
endpoint type ServiceCutterContextBuilder // stateful type
exposes
operation ServiceCutterContextBuilder // constructor
expecting
payload EntityRelationshipDiagram
operation withUserRepresentations // provide user representations (optionally)
expecting
payload UserRepresentations
operation withCustomSolverConfiguration // change solver configuration (optionally)
expecting
payload SolverConfiguration
operation build // build the context
delivering
payload ServiceCutterContext
endpoint type SolverConfigurationFactory
exposes
operation createDefaultConfiguration // create initial/default solver configuration
delivering
payload SolverConfiguration
endpoint type ServiceCutter
exposes
operation generateDecomposition // decompose the system with the provided context
expecting
payload ServiceCutterContext
delivering
payload SolverResult
API provider ServiceCutterLibrary
offers ServiceCutterContextBuilder
offers SolverConfigurationFactory
offers ServiceCutter
API client LanguageCore
consumes ServiceCutterContextBuilder
consumes SolverConfigurationFactory
consumes ServiceCutter
IPA