<
From version < 19.1 >
edited by ssm
on 2016/04/21 19:55
To version < 12.1 >
edited by ssm
on 2016/04/21 16:57
>
Change comment: There is no comment for this version

Summary

Details

Page properties
Content
... ... @@ -83,8 +83,6 @@
83 83  (% style="color: rgb(0,0,0);" %)Reinhard von Hanxleden and Michael Mendler and Joaquín Aguado and Björn Duderstadt and Insa Fuhrmann and Christian Motika and Stephen Mercer and Owen O’Brien and Partha Roop. Sequentially Constructive Concurrency—A Conservative Extension of the Synchronous Model of Computation. (% class="cmti-10" %)ACM Transactions on Embedded Computing(%%) (% class="cmti-10" %)Systems, Special Issue on Applications of Concurrency to System Design(%%), 13(4s):144:1–144:26, July 2014. (%%)[[pdf>>url:http://rtsys.informatik.uni-kiel.de/~~biblio/downloads/papers/tecs14.pdf||shape="rect"]](% style="color: rgb(0,0,0);" %), (%%)[[bib>>url:http://rtsys.informatik.uni-kiel.de/~~biblio/cgi-bin/bibcgi.cgi?key=vonHanxledenMA+14||shape="rect"]]
84 84  * **Overview and High-Level Transformations in Detail:**
85 85  (% style="color: rgb(0,0,0);" %)Reinhard von Hanxleden and Björn Duderstadt and Christian Motika and Steven Smyth and Michael Mendler and Joaquín Aguado and Stephen Mercer and Owen O’Brien. SCCharts: Sequentially Constructive Statecharts for Safety-Critical Applications. Technical Report 1311, Christian-Albrechts-Universität zu Kiel, Department of Computer Science, December 2013. ISSN 2192-6247. (%%)[[pdf>>url:http://rtsys.informatik.uni-kiel.de/~~biblio/downloads/papers/report-1311.pdf||shape="rect"]](% style="color: rgb(0,0,0);" %), (%%)[[bib>>url:http://rtsys.informatik.uni-kiel.de/~~biblio/cgi-bin/bibcgi.cgi?key=vonHanxledenDM+13b||shape="rect"]]
86 -
87 -
88 88  {{/layout-cell}}
89 89  {{/layout-section}}
90 90  
... ... @@ -94,20 +94,16 @@
94 94  
95 95  Navigate to the {{code language="none"}}models{{/code}} folder of the plugin {{code language="none"}}de.cau.cs.kieler.sccharts{{/code}}. Here, open the {{code language="none"}}sccharts.ecore{{/code}} and right-click on the {{code language="none"}}sccharts.ecore{{/code}} file and select //Visualize Ecore Model//. Since you also installed **EcoreViz** from the OpenKieler Suite, you should now see a graphical representation of the SCCharts metamodel. Every SCChart will be a model of this metamodel.
96 96  
97 -To see all class information check //Attributes/Literals// in the Diagram Options on the right.
98 -
99 -EcoreViz gives you an overview over the selected Ecore diagram. However, Ecore model definitions may depend on other Ecore definitions that are not displayed in the diagram. You can open new diagrams for these Ecore files as described before or use the Ecore tree editor to inspect all classes.
100 -
101 101  Try to understand most parts of the metamodel. You don't have to understand every detail but you should get the idea.
102 102  
103 103  ==== Model Task ====
104 104  
105 105  1. Answer the following questions
100 +11. Name the class of the root element of an SCChart
106 106  11. How do you describe a superstate in the model?
107 -11. Outline the relationship between states, regions, transitions, and valued objects.\\
108 -11. Name the class of the root element of an SCChart.
109 109  11. What is a valued object?
110 110  11. How do you get the type of an interface variable?
104 +11. Outline the relationship between states, regions, transitions, and valued objects
111 111  11. What other metamodels are needed for the SCCharts metamodel and write down which one is needed for what?
112 112  1. Write down (on paper, text editor, etc) how the following SCChart models look like
113 113  11. Open the wiki page that explains the [[doc:KIELER.Textual SCCharts Language SCT]].
... ... @@ -120,15 +120,25 @@
120 120  
121 121  
122 122  {{info title="KLighD Screenshots"}}
123 -By the way: You can //right-click// on the Diagram View surface and select //Save as image...// to create a screenshot!
117 +By the way: You can //right-click// on the Diagram View surface to select //Save as image...// to create a screenshot!
124 124  {{/info}}
125 125  {{/layout-cell}}
126 126  
127 127  {{layout-cell}}
122 +
123 +
124 +
125 +
128 128  [[image:attach:sccharts_metamodel.png]]
129 129  
130 -[[image:attach:sccharts_metamodel_treeEditor.png]]
128 +
131 131  
130 +
131 +
132 +
133 +
134 +
135 +
132 132  [[image:attach:KLighDSaveAsImage.png]]
133 133  {{/layout-cell}}
134 134  {{/layout-section}}
... ... @@ -135,6 +135,20 @@
135 135  
136 136  {{layout-section ac:type="single"}}
137 137  {{layout-cell}}
142 +
143 +
144 +
145 +{{/layout-cell}}
146 +{{/layout-section}}
147 +
148 +{{layout-section ac:type="single"}}
149 +{{layout-cell}}
150 +
151 +{{/layout-cell}}
152 +{{/layout-section}}
153 +
154 +{{layout-section ac:type="single"}}
155 +{{layout-cell}}
138 138  = Creating SCCharts Models Programmatically =
139 139  
140 140  == Creating a Test Project ==
... ... @@ -141,7 +141,6 @@
141 141  
142 142  We need a project for testing. Do the following:
143 143  
144 -1. If you used the standard KIELER Oomph installation setup, create a new Working Set named Tutorial in the Package Explorer. Then...
145 145  1. Create a new empty //Plug-In Project//.
146 146  1. Add the project that contains the sccharts metamodel as a dependency of your new project through the //Plugin Manifest Editor//.
147 147  1. Create a simple Java class that implements a main method. Hint: In a new Java class, simply type main and hit Ctrl+Space. Eclipse content assist will create the method for you.
... ... @@ -148,12 +148,12 @@
148 148  
149 149  == Creating a Model ==
150 150  
151 -To create a model programmatically you cannot directly use the Java classes generated for the model. Instead, the main package contains interfaces for all of your model object classes. The {{code language="none"}}impl{{/code}} package contains the actual implementation and the {{code language="none"}}util{{/code}} package contains some helper classes. Do not instantiate objects directly by manually calling {{code language="none"}}new{{/code}}. EMF generates a Factory to create new objects. The factory itself uses the singleton pattern to get access to it:
168 +To create a model programmatically you cannot directly use the Java classes generated for the model. Instead, the main package contains interfaces for all of your model object classes. The {{code language="none"}}impl{{/code}} package contains the actual implementation and the {{code language="none"}}util{{/code}} package contains some helper classes. Do not instantiate objects directly by manually calling {{code language="none"}}new{{/code}}. EMF generates a Factory to create new objects. The factory itself uses the singleton pattern to get access to it:
152 152  
153 153  {{code language="java"}}
154 154  SCChartsFactory sccFactory = SCChartsFactory.eINSTANCE;
155 -State state = sccFactory.createState();
156 -Transition transition = sccFactory.createTransition();
172 +State state = sccFactory .createState();
173 +Transition transition = sccFactory .createTransition();
157 157  {{/code}}
158 158  
159 159  Important: The SCCharts grammar is build on top of several other grammars. Therefore, not all language objects can be found in the SCCharts factory. For example, all expression elements are part of the KExpressions grammar and hence, have their own factory. If you need other factories, don't forget to add the corresponding plugin to your plugin dependency list.
... ... @@ -160,13 +160,13 @@
160 160  
161 161  {{code language="java"}}
162 162  KExpressionsFactory kFactory = KExpressionsFactory.eINSTANCE;
163 -BoolValue boolValue = kFactory.createBoolValue();
180 +BooleanValue boolValue = kFactory.createBooleanValue();
164 164  {{/code}}
165 165  
166 166  For all simple attributes, there are getter and setter methods:
167 167  
168 168  {{code language="java"}}
169 -state.setId("Init");
186 +state.setId("Root");
170 170  boolValue.setValue(true);
171 171  {{/code}}
172 172  
... ... @@ -179,25 +179,15 @@
179 179  List references (multiplicity of > 1) have only a list getter, which is used to manipulate the list:
180 180  
181 181  {{code language="java"}}
182 -state.getOutgoingTransitions().add(transition);
199 +state.outgoingTransitions.add(transition);
183 183  {{/code}}
184 184  
185 -{{info title="Plugin Dependencies"}}
186 -You may have noticed that is was not necessary to add a dependency for the kexpressions classes. The SCCharts plugin reexports the dependencies of the other EMF metamodels. Look at the plugin.xml in the SCCharts plugin in the dependency tab for more information.
187 -{{/info}}
188 -
189 189  == Saving a Model ==
190 190  
191 191  EMF uses the [[Eclipse Resource concept>>url:http://help.eclipse.org/juno/topic/org.eclipse.platform.doc.isv/guide/resInt.htm?cp=2_0_10||rel="nofollow" shape="rect" class="external-link"]] to save models to files and load models from files. It can use different //Resource Factories// that determine how exactly models are serialized. We will use the [[XMIResourceFactoryImpl>>url:http://download.eclipse.org/modeling/emf/emf/javadoc/2.8.0/org/eclipse/emf/ecore/xmi/impl/XMIResourceFactoryImpl.html||rel="nofollow" shape="rect" class="external-link"]] to save our models to XML files:
192 192  
206 +1. Add a dependency to the {{code language="none"}}org.eclipse.emf.ecore.xmi{{/code}} plug-in.
193 193  1. (((
194 -Add a dependency to the {{code language="none"}}com.google.inject, org.eclipse.core.resources, {{/code}}and{{code language="none"}} de.cau.cs.kieler.sccharts.text{{/code}} plug-ins.
195 -
196 -{{info title="Additional Dependencies"}}
197 -Don't worry. You will be experienced enough to add mandatory dependencies quickly in the future. However, for now just add the dependencies to proceed with the tutorial.
198 -{{/info}}
199 -)))
200 -1. (((
201 201  Use something like the following code to save the model from above:
202 202  
203 203  {{code language="java"}}
... ... @@ -204,10 +204,10 @@
204 204  // Create a resource set.
205 205  ResourceSet resourceSet = new ResourceSetImpl();
206 206  
207 -// Register the resource factory -- only needed for stand-alone!
208 -SctStandaloneSetup.doSetup();
209 -
210 - 
214 +// Register the default resource factory -- only needed for stand-alone!
215 +// this tells EMF to use XML to save the model
216 +resourceSet.getResourceFactoryRegistry().getExtensionToFactoryMap().put(
217 + Resource.Factory.Registry.DEFAULT_EXTENSION, new SCTResourceFactoryImpl());
211 211  // Get the URI of the model file.
212 212  URI fileURI = URI.createFileURI(new File("myABO.sct").getAbsolutePath());
213 213  
... ... @@ -226,47 +226,17 @@
226 226  }
227 227  {{/code}}
228 228  )))
229 -{{/layout-cell}}
230 -{{/layout-section}}
231 231  
232 -{{layout-section ac:type="two_right_sidebar"}}
233 -{{layout-cell}}
234 234  ==== Model Creation Task ====
235 235  
236 -You are now equipped with the fundamentals you need to create models programmatically. Let's try it:
239 +With these information out of the way, on we go to some model creation:
237 237  
238 -1. The code fragments listed above do not suffice to create a grammatically correct model. Try to generate a model that corresponds with the serialized model listed on the right side.
239 -11. Run the {{code language="none"}}main(){{/code}} method by right-clicking its class and selecting (% style="line-height: 1.42857;" %)//Run as//(%%) -> (% style="line-height: 1.42857;" %)//Java Application//(%%). Note that this runs your {{code language="none"}}main(){{/code}} method as a simple Java program, not a complete Eclipse application. EMF models can be used in any simple Java context, not just in Eclipse applications.
240 -11. Execute the main method.
241 -11. Inspect your SCT file. (Press F5 to refresh your file view.)
242 -1. Now, create a new Java class and proceed as before to generate a model of ABO in the {{code language="none"}}main(){{/code}} method.
241 +1. Programmatically create a valid model of ABO in the {{code language="none"}}main(){{/code}} method.
242 +1. Run the {{code language="none"}}main(){{/code}} method by right-clicking its class and selecting //Run as// -> //Java Application//. Note that this runs your {{code language="none"}}main(){{/code}} method as a simple Java program, not a complete Eclipse application. EMF models can be used in any simple Java context, not just in Eclipse applications.
243 +1. Execute the main method.
244 +1. Inspect your SCT file.
243 243  1. Start your SCChart Editor Eclipse instance and load your SCT file. KLighD should now be able to visualize your ABO correctly.
244 244  
245 -
246 -{{/layout-cell}}
247 -
248 -{{layout-cell}}
249 -{{code language="java" title="Root.sct"}}
250 -scchart Root {
251 - initial state Init
252 - --> Init with true;
253 -}
254 -{{/code}}
255 -{{/layout-cell}}
256 -{{/layout-section}}
257 -
258 -{{layout-section ac:type="two_right_sidebar"}}
259 -{{layout-cell}}
260 -
261 -{{/layout-cell}}
262 -
263 -{{layout-cell}}
264 -
265 -{{/layout-cell}}
266 -{{/layout-section}}
267 -
268 -{{layout-section ac:type="single"}}
269 -{{layout-cell}}
270 270  = Transforming SCCharts =
271 271  
272 272  Transformations from one model to another may be performed within the same metamodel or from metamodel to a different metamodel. Both methods are used in KIELER and in principle they do not really differ in implementation. Nevertheless, if working within the same metamodel you should keep in mind that you're potentially changing the actual model instead of changing another instance (after copying). Both is possible. Just make sure that you know what you're doing.
Confluence.Code.ConfluencePageClass[0]
Id
... ... @@ -1,1 +1,1 @@
1 -16810366
1 +16810304
URL
... ... @@ -1,1 +1,1 @@
1 -https://rtsys.informatik.uni-kiel.de/confluence//wiki/spaces/TUT/pages/16810366/SCCharts Development
1 +https://rtsys.informatik.uni-kiel.de/confluence//wiki/spaces/TUT/pages/16810304/SCCharts Development