Changes for page SCCharts Development
Last modified by Richard Kreissig on 2023/09/14 10:04
Summary
-
Page properties (1 modified, 0 added, 0 removed)
-
Objects (1 modified, 0 added, 0 removed)
Details
- Page properties
-
- Content
-
... ... @@ -225,10 +225,6 @@ 225 225 /* error handling */ 226 226 } 227 227 {{/code}} 228 - 229 -{{info title="File Extensions"}} 230 -File extensions are important! They define the parser/serializer that EMF uses. Always use the file extension that is defined for a particular model. 231 -{{/info}} 232 232 ))) 233 233 {{/layout-cell}} 234 234 {{/layout-section}} ... ... @@ -242,20 +242,9 @@ 242 242 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. 243 243 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. 244 244 11. Execute the main method. 245 -11. ((( 246 -Inspect your SCT file. (Press F5 to refresh your file view.) 247 - 248 -{{note title="Kext Warning"}} 249 -It is possible that kext generates a Null Pointer Exception when you save your model this way. This is a known issue. We're working on it. Just ignore it for now. 250 -{{/note}} 251 -))) 241 +11. Inspect your SCT file. (Press F5 to refresh your file view.) 252 252 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. 253 253 1. Start your SCChart Editor Eclipse instance and load your SCT file. KLighD should now be able to visualize your ABO correctly. 254 -11. For this, open tab //Run// and select// Run Configurations...// 255 -11. Create a new //Eclipse Application// and name it appropriately. 256 -11. As product select {{code language="none"}}de.cau.cs.kieler.core.product.product{{/code}}. 257 -11. Click //Run// (or //Debug// if you opened// Debug Configuration...//) 258 -11. Create a new project and add you generated model. 259 259 260 260 261 261 {{/layout-cell}} ... ... @@ -267,125 +267,16 @@ 267 267 --> Init with true; 268 268 } 269 269 {{/code}} 270 - 271 -[[image:attach:RunConfiguration.png]] 272 272 {{/layout-cell}} 273 273 {{/layout-section}} 274 274 275 275 {{layout-section ac:type="two_right_sidebar"}} 276 276 {{layout-cell}} 277 -= Model-to-Model Transformation with KiCo = 278 - 279 -You can use the [[Kieler Compiler>>url:http://rtsys.informatik.uni-kiel.de/confluence/display/KIELER/Kieler+Compiler||shape="rect"]] (KiCo) to handle all the model input/output tasks and concentrate on the actual transformation. If you executed the **Model Creation Task correctly**, you should now have a complete running SCT Editor instance that looks like the one on the right. You should see the //KIELER Compiler Selection// n the lower right part of the working space. Here you can select specific transformations that will be applied to the actual model. Simply select a transformation to test it. 280 - 281 -== Creating a new Transformation == 282 - 283 -Now, you're going to write your own transformation with **Xtend** *drumroll*, a programming language that looks very similar to Java, but which adds some very convenient features. Xtend code compiles to Java and and was developed using Xtext. In fact, once you gain experience working with Xtend you will probably appreciate the power of Xtext even more. Xtend is particularly useful to browse & modify EMF models. You get the point... we like it. :) 284 - 285 285 286 - 287 -Transformation Creation Task 288 - 289 -1. Therefore, create a new project within your tutorial working set as before. 290 -1. Add plugin dependencies to {{code language="none"}}de.cau.cs.kieler.kico{{/code}} and {{code language="none"}}de.cau.cs.kieler.sccharts{{/code}}. 291 -1. Create a new //Xtend class// in you package and name it "DoubleStates" and use {{code language="none"}}AbstractProductionTransformation{{/code}} as superclass. 292 -1. Here, you can automatically add the missing Xtend files by using the quickfix //Add Xtend lib to class path. //Alternatively you can simply add {{code language="none"}}com.google.guava{{/code}}, {{code language="none"}}org.eclipse.xtext.xbase.lib{{/code}}, {{code language="none"}}org.eclipse.xtend.lib{{/code}}, and {{code language="none"}}org.eclipse.xtend.lib.macro{{/code}} to you plugin dependencies. 293 -1. Click on //Add unimplemented methods//. 294 -1. ((( 295 -Now, you should have a class similar to the following one. 296 - 297 -{{code language="java"}} 298 -package tutorial.transformation 299 - 300 -import de.cau.cs.kieler.kico.transformation.AbstractProductionTransformation 301 - 302 -class DoubleStates extends AbstractProductionTransformation { 303 - 304 - override getProducedFeatureId() { 305 - throw new UnsupportedOperationException("TODO: auto-generated method stub") 306 - } 307 - 308 - override getId() { 309 - throw new UnsupportedOperationException("TODO: auto-generated method stub") 310 - } 311 - 312 -} 313 -{{/code}} 314 -))) 315 -1. ((( 316 -As you can see, it is mandatory to add an id for the transformation and another id of the feature that this transformation produces. Name your transformation **tutorial.doubleStates **and the id of feature you want to produce is **sccharts.doubleStates**. 317 - 318 -{{info title="Programming Guidelines"}} 319 -You should really think about some constants here. You can also look at the sccharts transformation and features constants in the sccharts plugin. 320 -{{/info}} 321 -))) 322 -1. KiCo must know about the new feature and also about your new transformation. 323 -11. Add a new Xtend class with Feature as superclass. Add all unimplemented methods. Also set sccharts.doubleStates as Id. 324 -11. Go to the Extension tab inside your plugin configuration. 325 -111. Add a new Extension Point de.cau.cs.kieler.kico.feature. Create a new featureClass and point it to your new feature class. 326 -111. Also add a new Extension Point de.cau.cs.kieler.kico.transformation. Create a new productionTransformationClass and point it to your transformation class. 327 -111. Finally, you have to link your transformation to the SCT Editor. Add the Extension point de.cau.cs.kieler.kico.ui.transformation. Create an editor link and fill in the following values: 328 -1111. editor: de.cau.cs.kieler.sccharts.text.sct.Sct 329 -1111. features: sccharts.doubleStates 330 -1111. label: Tutorial Compilation 331 -1111. priority: 101 332 -1111. preferred: (leave it blank) 333 -11. If you start your KIELER instance now, you should get a new compilation chain which has only one transformation: yours, which doesn't do anything. 334 -1. If you want to rename your feature in the Compiler Selection (without changing its Id), override the getName method and return a new name. Rename your feature appropriately. 335 - 336 - 337 337 {{/layout-cell}} 338 338 339 339 {{layout-cell}} 340 -[[image:attach:KielerSCTEditor.png]] 341 - 342 342 343 - 344 - 345 - 346 - 347 - 348 - 349 - 350 - 351 - 352 - 353 - 354 - 355 - 356 - 357 - 358 - 359 - 360 - 361 - 362 - 363 - 364 - 365 - 366 - 367 - 368 - 369 - 370 - 371 - 372 - 373 - 374 - 375 - 376 - 377 - 378 - 379 - 380 - 381 - 382 - 383 - 384 - 385 - 386 - 387 - 388 -[[image:attach:KielerSCTEditorOwnTransformation.png]] 389 389 {{/layout-cell}} 390 390 {{/layout-section}} 391 391
- Confluence.Code.ConfluencePageClass[0]
-
- Id
-
... ... @@ -1,1 +1,1 @@ 1 -1681036 81 +16810366 - URL
-
... ... @@ -1,1 +1,1 @@ 1 -https://rtsys.informatik.uni-kiel.de/confluence//wiki/spaces/TUT/pages/1681036 8/SCCharts Development1 +https://rtsys.informatik.uni-kiel.de/confluence//wiki/spaces/TUT/pages/16810366/SCCharts Development