diff --git a/edu.kit.ipd.descartes.mm.adaptation.sta/StaLangExample.stalang b/edu.kit.ipd.descartes.mm.adaptation.sta/StaLangExample.stalang deleted file mode 100644 index b8f2b075ce10e2ac394e054045eada0250d2ee0f..0000000000000000000000000000000000000000 --- a/edu.kit.ipd.descartes.mm.adaptation.sta/StaLangExample.stalang +++ /dev/null @@ -1,94 +0,0 @@ -// Example file for a STA process, revision 2 -// this is a comment - -// place imports here, e.g. -// import refname1 "uri://path/file.name" -// import refname2 "uri://path/file2.name" - -AdaptationProcess ExampleProcessName [optional.id] { // ids are optional and thus displayed in grey - - // Order of the main sections: - // goal, actions, tactics, strategies, parameters. - // the parameters section is optional, see below. - // Reason for this order is logical succession. Actions are used in tactics, tactics in strategies, etc. - - // General considerations: - // 'xyz:' starts a new section. Examples: goal:, strategies: - // ':' is followed by a list of elements. Example: action1 [optional.id] {}, action2 ... - // '{}' is like a 'constructor' like the 'new' keyword in Java - // '=' is an assignment of a value or a list of values to a property - // '()' contains a list of values that belong together. If there is only one value, the brackets are optional - - - goal: - description "A verbose description of the goal of the adaptation process so that - anyone can understand the purpose of the modeled adaptation process" - objectives = ( - ########################### assumed that it would be easier without " - Objective1Name { specification = (MetricTypeA, "<=", 500) }, - Objective2Name { specification = ((MetricTypeB, ">", 0.5), (MetricTypeC, ">", 0.6)) } - ) - - actions: - Action1Name [optional.id] { - operation = (SCALE_OUT, THIS) // Same as AdaptationActionOperation. First direction, then scope - referredAdaptationPoint = refname1:element.xyz1 - // optional input output parameters go here - input = (param1Name, param3Name) - output = (param3Name) - }, - Action2Name { - operation = (SCALE_IN, RANDOM) - referredAdaptationPoint = refname1:element.xyz2 - // no parameters - } - - tactics: - Tactic1Name [optional.id] { - ################################################################# - implementedPlan = !!planName!! (StartAction, Action1Name, ..., - Action2Name, StopAction) - // optional input output parameters - input = (param1Name, param3Name) - output = param3Name - }, - Tactic2Name... { - implementedPlan = ( StartAction, ... - repeat counter = param1Name ( // LoopAction - StartAction, ..., StopAction - ), - ########################################################### what to do with successor? - if (context=refToSomeEntity, condition="SomeOclString") // BranchAction - then (//AdaptationPlanX) - else (//AdaptationPlanY), - StopAction - ) - } - - strategies: - Strategy1Name [optional.id] { - ########################################################### Objective specification is not optional - objective = Objective1Name - triggeringEvent = EventXYName // Note: rename 'triggeringEvents' to - // 'triggeringEvent' in the metamodel - tactics = ( - ########################################################### weighted Tactic name is not optional - weightedTactic1Name = (tactic=Tactic1Name, default=1.3, current=1.0), - weightedTactic2Name = (tactic=Tactic2Name, default=2.1, current=2.0) - ) - ####################################### weightingFunction optional can be written simply as weightingFunction1Name = (...) - weightingFunction = ( - weightingFunctionImplementation = "SomeStringPointingToAClass" - weightedMetrics = ((metricType=refname2:ResponseTimeMetric1, weight=1.9), - (metricType=refname2:UtilizationMetric1, weight=2.3)) - ) - }, - Strategy2Name... - - // definition of parameters is optional, only required if parameters are used by tactics or actions - parameters: - ####################################### types may have to get parsed later on because of type string of Value - param1Name { type="Double", value=0.34 }, // value field is optional since it might - param2Name { type="somethingElse" }, // be unknown when specifying the process - param3Name { type="Integer", value=0} -} \ No newline at end of file