1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768 |
- <link href="../../css/bootstrap.css" rel="stylesheet" />
- <link href="../../css/custom.css" rel="stylesheet" />
- h1. Tasks
- h2. Simulating Operations With Custom Java Code
- To simulate a model with operations it is possible to use custom Java code that mocks the desired behavior or even to simulate against an existing java backend.
- For that to work, it is required to provide one or more custom java classes having a method with a matching signature.
- !images/operationsExample.png!
- To simulate the statechart above, a new Java Class must be created matching the method signature defined in the statechart. This class must be placed onto the classpath of the
- statecharts project.
-
- bc.
- package example;
- public class Calculator {
- public int add(int param1, int param2) {
- return param1 + param2;
- }
- }
- This custom class can be passed to the run configuration as *Operation Class*, shown in the figure below. It is possible to pass multiple java classes seperated by a comma.
- If the simulation is executed, the variable result gets the value 2.
- !images/runConfiguration.png!
- h2. Generating Code
- For configuring the code generation process, YAKINDU Statechart Tools uses a textual generator model called *SGen*. It can be created either by using the provided wizard *Yakindu Statechart Generator Model* or by creating a new text file with the file extension '.sgen'.
- To create a generator model with the wizard,
- # Click *File* > *New* > *Other...* > *Yakindu Statechart Generator Model*
- # Type a name and click *Next*
- # Choose the desired generator, i.e. *YAKINDU Java Code Generator*
- # Check the model(s) to generate code from and click *Finish*
- !images/genmodelwizardchooselanguage.jpg!
- The result is an .sgen file of the following format:
- bc..
- GeneratorModel for [GeneratorId] {
- statechart [StatechartReference] {
- feature [Feature] {
- [ParameterName] = [ParameterValue]
- }
- }
- }
- p. The [GeneratorId] is the unique id of the Generator. Currently, the following Generators are supported out of the box:
- # yakindu::java - Generator ID for the Java Code Generator
- # yakindu::c - Generator ID for the C Code Generator
- # yakindu::xpand - Generator ID for custom Xpand based Code Generators
- # yakindu::generic - Generator ID for custom Java based Code Generators
- One GeneratorModel can contain several [StatechartReference]s. These are cross references to statechart models for which the code should be generated. For each reference, the generator process can be configured with [Feature]s. Each Feature consists of several parameters. These parameters can be configured with [ParameterName] = [ParameterValue].
-
- The Generator Model is executed by a builder. Thus, the artifacts are generated automatically if *Project* > *Build Automatically* is checked. If you want to execute your Generator Model by hand, select *Generate Statechart Artifacts* from the *Package Explorer's* context menu.
|