Skip to content
Snippets Groups Projects
Commit 0bf5ae33 authored by René Schöne's avatar René Schöne
Browse files

begin with 1.0.1

- change pages theme to material
- restructure pages to fit new theme
- add material for models paper to pages
parent 3b21f88f
Branches develop
No related tags found
1 merge request!39Version 1.1.0
Pipeline #15370 failed
pages/docs/img/2022_models/slides.pdf filter=lfs diff=lfs merge=lfs -text
pages/docs/img/2022_models/poster.pdf filter=lfs diff=lfs merge=lfs -text
......@@ -27,6 +27,8 @@ build:
paths:
- "ragconnect.base/build/libs/ragconnect-*.jar"
- "ragconnect.base/src/gen"
- "ragconnect.tests/src/test/02-after-ragconnect"
- "ragconnect.tests/src/test/java-gen"
expire_in: 1 week
test:
......@@ -72,12 +74,12 @@ publish-master:
ragdoc_build:
image:
name: "git-st.inf.tu-dresden.de:4567/jastadd/ragdoc-builder"
entrypoint: [""]
stage: ragdoc_build
needs:
- build
script:
- JAVA_FILES=$(find ragconnect.base/src/ -name '*.java')
- echo $JAVA_FILES | wc -l
- /ragdoc-builder/start-builder.sh -excludeGenerated -d data/ $JAVA_FILES
artifacts:
paths:
......@@ -86,7 +88,6 @@ ragdoc_build:
ragdoc_view:
image:
name: "git-st.inf.tu-dresden.de:4567/jastadd/ragdoc-view:relations"
entrypoint: [""]
stage: ragdoc_view
needs:
- ragdoc_build
......@@ -95,7 +96,7 @@ ragdoc_view:
- mkdir -p pages/docs/ragdoc
- OUTPUT_DIR=$(pwd -P)/pages/docs/ragdoc
- cd /ragdoc-view/src/ && rm -rf data && ln -s $DATA_DIR
- /ragdoc-view/build-view.sh --output-path=$OUTPUT_DIR
- BASE_HREF=/ragconnect/ragdoc/ /ragdoc-view/build-view.sh --output-path=$OUTPUT_DIR
artifacts:
paths:
- "pages/docs/ragdoc"
......
# Adding `RagConnect` to your project
If you want to use `RagConnect`, either use the latest [pre-build version](#use-packaged-version) or clone the repository and [build it yourself](#build-from-source).
Either way, a task for [compiling RelAst specifications](#compiling-relast-specifications) has to be specified.
## Use packaged version
......@@ -25,7 +26,7 @@ configurations {
}
dependencies {
ragconnectClasspath group: 'de.tudresden.inf.st', name: 'ragconnect', version: '0.2.3'
ragconnectClasspath group: 'de.tudresden.inf.st', name: 'ragconnect', version: '{{ragconnect_version()}}'
}
```
......@@ -60,11 +61,11 @@ cd ragconnect
ls ragconnect.base/build/libs/
```
This `ragconnect-<version>.jar` can then be copied to your project.
This `ragconnect-{{ragconnect_version()}}.jar` can then be copied to your project.
Please note, that you can safely use `ragconnect.jar` as filename, because the version can always be printed using `java -jar path/to/ragconnect.jar --version`.
```bash
cp ragconnect.base/build/libs/ragconnect-<version>.jar ../your-project/libs/ragconnect.jar
cp ragconnect.base/build/libs/ragconnect-{{ragconnect_version()}}.jar ../your-project/libs/ragconnect.jar
cd ../your-project/
```
......@@ -90,7 +91,7 @@ task ragConnect(type: JavaExec) {
You might need to add another task for [compiling relast specifications](#compiling-relast-specifications).
# Compiling RelAst specifications
## Compiling RelAst specifications
The task to compile `RagConnect` specifications is typically accompanied by a task to invoke the [RelAst compiler](http://relational-rags.eu/) and the [JastAdd gradle plugin](https://plugins.gradle.org/plugin/org.jastadd).
Currently, the parameter `--useJastAddNames` is **required**, and it may cause incompatibilities if not set.
......
......@@ -3,6 +3,8 @@
The compiler is JastAdd-compliant, i.e., it accepts all flags available for JastAdd, though there is no process how to chain pre-processors _yet_.
Additional options are as follows.
## Table with available options
| Name | Required (Default) | Description |
|---|---|---|
| `--rootNode` | Yes | Root node in the base grammar. |
......@@ -22,14 +24,14 @@ Additional options are as follows.
All files to be processed have to be passed as arguments.
Their type is deduced by the file extension (`ast` and `relast` for input grammars, `connect` and `ragconnect` for RagConnect definitions file).
# Additional software dependencies
## Additional software dependencies
Using RagConnect itself does not introduce dependencies.
However, depending on the selected protocols and/or used features, additional dependencies are required when using the generated code.
## Communication protocol characteristics
### Communication protocol characteristics
### Java
#### Java
- Protocol identifier: `java`
- URI scheme: `java://<ignored-host>[:ignored-port]/<topic>`
......@@ -39,7 +41,7 @@ However, depending on the selected protocols and/or used features, additional de
- First leading slash not included in topic.
- Currently, the default mappings are applied, which requires a consumer to expect `byte[]` (instead of a more intuitive token or node value). This might change in future versions.
### MQTT
#### MQTT
- Protocol identifier: `mqtt`
- URI scheme: `mqtt://<broker-host>[:port]/<topic>`
......@@ -52,7 +54,7 @@ However, depending on the selected protocols and/or used features, additional de
- Mqtt is selected by default, so this dependency therefore is required "by default".
- Might work with other versions of `org.fusesource.mqtt-client.mqtt.client` as well.
### REST
#### REST
- Protocol identifier: `rest`
- URI scheme: `rest://localhost[:port]/<path>`
......@@ -65,9 +67,9 @@ However, depending on the selected protocols and/or used features, additional de
- Might work with newer versions of `com.sparkjava.spark-core` as well.
- For debugging, it is beneficial to include an implementation for [SLF4J][slf4j].
## Used features
### Used features
### Automatic dependency tracking
#### Automatic dependency tracking
- Condition: When passing `--incremental` and `--tracing=flush` to RagConnect
- Required runtime dependencies: _none_
......@@ -80,7 +82,7 @@ However, depending on the selected protocols and/or used features, additional de
- Other values besides `flush` can be added to `--tracing`
- [Feature description](using.md#dependency-tracking-automatically-derived)
### (Safer) Automatic dependency tracking
#### (Safer) Automatic dependency tracking
- Condition: When passing `--experimental-jastadd-329` to RagConnect
- Required runtime dependencies: _none_
......@@ -90,7 +92,7 @@ However, depending on the selected protocols and/or used features, additional de
- JastAdd version has to support `INC_FLUSH_START` and `INC_FLUSH_END` (i.e., has [issue #329][jastadd-issue-329] resolved)
- [Feature description](using.md#dependency-tracking-automatically-derived)
### Tree/List Ports
#### Tree/List Ports
- Condition: When using ports along with default mappings for subtrees
- Required runtime dependencies:
......@@ -102,7 +104,7 @@ However, depending on the selected protocols and/or used features, additional de
- Remarks:
- [Feature description](using.md#an-advanced-example)
### Logging Target SLF4J
#### Logging Target SLF4J
- Condition: When passing `--logTarget=slf4j` to RagConnect
- Required runtime dependencies:
......
pages/docs/img/2022_acsos/architecture.png

96.1 KiB

File added
File added
pages/docs/img/ST-black.png

18.2 KiB

......@@ -20,11 +20,11 @@ The other main aspect (which is currently not really used) is `IntermediateToYAM
This is used to generate a YAML file containing the data used by mustache.
It can be used by the default mustache implementation together with the templates.
# Implementation Details
## Implementation Details
In the following, details for special implementation topics are discussed.
## Forwarding
### Forwarding
When a nonterminal is used in a send ports, it needs an implicit forwarding attribute to work, because only _computed elements_ can be sent.
Since the nonterminal itself should be sent, the generated attribute simply returns this nonterminal.
......@@ -34,9 +34,9 @@ This way, the dependency tracking registers a dependency between structure and t
The attribute (as well as any other generated element) is prefixed with `_ragconnect_` to avoid potential name conflicts with user-specified elements.
# Implementation Hints
## Implementation Hints
## Debugging Tests and Finding Bugs
### Debugging Tests and Finding Bugs
To help with finding errors/bugs when tests fail, there are several things to find the correct spot.
......
# Use cases with `RagConnect`
## MODELS Paper (2022) - Codename 'Ros3Rag'
In the paper [*"Incremental Causal Connection for Self-Adaptive Systems Based on Relational Reference Attribute Grammars"*](https://doi.org/10.1145/3550355.3552460), a [previous use case](#mpm4cps-paper-2020-codename-ros2rag) was extended to Collaborative, Teaching-Based Robotic Cells.
![Screenshot](img/2022_models/photo.jpg)
This paper was presented on October, 26th 2022 in the technical track of the [MODELS 2022 conference](https://conf.researchr.org/home/models-2022) (Oct 23 - Oct 29).
There is an [artifact hosted at Zenodo](https://doi.org/10.5281/zenodo.7009758) containing all source code and the executable case study.
For more information, see the [presented slides](img/2022_models/slides.pdf) or the accompanied [poster](img/2022_models/poster.pdf).
The repository with the used source code can be found at: <https://git-st.inf.tu-dresden.de/ceti/ros/models2022>
## ACSOS Paper (2022) - Codename 'Motion Grammar Demo'
In the paper [*"Specifying Reactive Robotic Applications
With Reference Attribute Motion Grammars"*](http://mg.relational-rags.eu), motion grammars (an older approach by [Dantham and Stilman](https://doi.org/10.1109/TRO.2013.2239553)) were implemented using Relational RAGs.
![Used Architecture](img/2022_acsos/architecture.png)
This paper was presented on September, 21st 2022 during the [Posters and Demos session](https://2022.acsos.org/track/acsos-2022-posters-and-demos) of the [ACSOS 2022 conference](https://2022.acsos.org/).
For more information, see <http://mg.relational-rags.eu/>.
## MPM4CPS Paper (2020) - Codename 'Ros2Rag'
In the publication [*"Connecting conceptual models using Relational Reference Attribute Grammars"*](https://doi.org/10.1145/3417990.3421437), a use case involving a simulated robot arm and two different models connected to it was shown.
......@@ -28,22 +50,3 @@ docker-compose up rag_app
# Terminal 3: Goal-Model
docker-compose up rag_goal
```
## ACSOS Paper (2022) - Codename 'Motion Grammar Demo'
In the paper [*"Specifying Reactive Robotic Applications
With Reference Attribute Motion Grammars"*](http://mg.relational-rags.eu), motion grammars (an older approach by [Dantham and Stilman](https://doi.org/10.1109/TRO.2013.2239553)) were implemented using Relational RAGs.
This paper will be presented on September, 21st 2022 during the [Posters and Demos session](https://2022.acsos.org/track/acsos-2022-posters-and-demos) of the [ACSOS 2022 conference](https://2022.acsos.org/).
For more information, see <http://mg.relational-rags.eu/>.
## MODELS Paper (2022) - Codename 'Ros3Rag'
In the paper [*"Incremental Causal Connection for Self-Adaptive Systems Based on Relational Reference Attribute Grammars"*](https://doi.org/10.1145/3550355.3552460), a [previous use case](#mpm4cps-paper-codename-ros2rag) was extended to Collaborative, Teaching-Based Robotic Cells.
![Screenshot](img/2022_models/photo.jpg)
This paper will be presented in the technical track of the [MODELS 2022 conference](https://conf.researchr.org/home/models-2022) (Oct 23 - Oct 29).
There is an [artifact hosted at Zenodo](https://doi.org/10.5281/zenodo.7009758) containing all source code and the executable case study.
Furthermore, the presentation slides and a poster will be available soon.
The repository with the used source code can be found at: <https://git-st.inf.tu-dresden.de/ceti/ros/models2022>
......@@ -127,11 +127,11 @@ Round maps float f to int {:
... connecting first could mean to store the first rounded value and not propagating this update, since no dependencies are set, and not propagating further updates leading to the same rounded value even after setting the dependencies.
# An advanced example
## An advanced example
Non-terminal children can also be selected as ports (not only tokens).
## Normal Non-Terminal Children
### Normal Non-Terminal Children
Receiving normal non-terminal children and optionals means to replace them with a new node deserialized from the received message.
Sending them involves serializing a node, and sending this representation in a message.
......@@ -158,7 +158,7 @@ To process non-terminals, default mappings are provided for every non-terminal t
They use the JSON serialization offered by the RelAST compiler, i.e., interpret the message as a `String`, deserialize the content reading the message as JSON, or vice versa.
Additional dependencies are required to use this feature, as detailed in [the compiler section](compiler.md#treelist-ports).
## Receiving List Children
### Receiving List Children
When receiving list children, there are a few more options to match the connection to given requirements.
......@@ -171,7 +171,7 @@ ReceiverRoot ::= A* ;
Several options are possible (please also refer to the specification of the [connect DSL](dsl.md):
### (empty)
#### (empty)
A message for a list port can be interpreted as a complete list (a sequence of nodes of type `A`) by not specifying any special keyword:
......@@ -179,7 +179,7 @@ A message for a list port can be interpreted as a complete list (a sequence of n
receive ReceiverRoot.A ;
```
### with add
#### with add
Upon receiving the message, the deserialized list can also be appended to the existing list instead of replace the latter.
This can be achieved using the keyword `with add` :
......@@ -188,7 +188,7 @@ This can be achieved using the keyword `with add` :
receive with add ReceiverRoot.Alfa ;
```
### indexed
#### indexed
A message for a list port can also be interpreted as an element of this list.
......@@ -203,7 +203,7 @@ The list must have enough elements once a message is received.
receiverRoot.connectA("<some-url>", 1);
```
### indexed (wildcard)
#### indexed (wildcard)
Similar to the `indexed` case above, messages are interpreted as an element of the list, but the connection can also be made using a "wildcard topic" and without an index.
Then, once a message is received from a new concrete topic, the deserialized element will be appended to the list and this topic is associated with the index of the newly added element.
......@@ -223,7 +223,7 @@ assertEquals(receiverRoot.getAList(), list("1", "other"));
assertEquals(receiverRoot.getAList(), list("new", "other"));
```
### indexed + with add
#### indexed + with add
Combining `indexed` and `with add` results in a connection, where messages are interpreted as elements of the list, and new elements are appended to the existing list.
In that case, wildcard and non-wildcard connections behave in the same way, as no index has to be passed, and the element is always append at the end.
......@@ -245,7 +245,7 @@ assertEquals(receiverRoot.getAList(), list("1", "other"));
assertEquals(receiverRoot.getAList(), list("1", "other", "new"));
```
## Using attributes as port targets
### Using attributes as port targets
As described in the [DSL specification](dsl.md), attributes can be used as port targets.
They can only be used in send ports, and the return type of the attribute must be specified in the connect specification (because aspect files are not handled completely yet).
......
......@@ -15,12 +15,26 @@ nav:
- "API documentation": ragdoc/index.html
theme:
name: readthedocs
custom_dir: custom_theme/
name: material
font: false
palette:
# Palette toggle for light mode
- scheme: default
toggle:
icon: material/brightness-7
name: Switch to dark mode
# Palette toggle for dark mode
- scheme: slate
toggle:
icon: material/brightness-4
name: Switch to light mode
favicon: img/ST-black.png
icon:
logo: material/connection
markdown_extensions:
- toc:
permalink:
permalink: true
- admonition
plugins:
......
mkdocs==1.2.2
mkdocs-git-revision-date-localized-plugin==0.10.3
mkdocs-macros-plugin==0.6.3
mike==1.1.2
Jinja2==2.11.2
MarkupSafe==1.1.1
mkdocs==1.4.2
mkdocs-git-revision-date-localized-plugin==1.1.0
mkdocs-macros-plugin==0.7.0
mkdocs-material==8.5.10
mkdocs-material-extensions==1.1
Jinja2==3.1.2
MarkupSafe==2.1.1
......@@ -249,7 +249,7 @@ task newVersion() {
task setDevVersionForCI() {
doFirst {
def props = new Properties()
props['version'] = version + "-$System.env.CI_PIPELINE_IID"
props['version'] = version + "-dev-$System.env.CI_PIPELINE_IID"
props.store(file(versionFile).newWriter(), null)
}
}
......
#Tue Sep 06 12:31:39 CEST 2022
version=1.0.0
#Tue Nov 22 14:21:26 CET 2022
version=1.0.1
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment