af3 issueshttps://git.fortiss.org/groups/af3/-/issues2024-02-08T16:27:34Zhttps://git.fortiss.org/af3/af3/-/issues/4360Automatically unfold more categories in model elements view2024-02-08T16:27:34ZAndreas BayhaAutomatically unfold more categories in model elements viewThe following prototype categories should be unfolded by default:
- State Automata
- SafetycasesThe following prototype categories should be unfolded by default:
- State Automata
- SafetycasesAF3 2.25 - Feature Freezehttps://git.fortiss.org/af3/af3/-/issues/4350Harmonize and display memory units across the annotation tables and the DSE2024-01-11T09:38:54ZTiziano MunaroHarmonize and display memory units across the annotation tables and the DSEAF3 2.25 - New Feature HackathonTiziano MunaroTiziano Munarohttps://git.fortiss.org/af3/af3/-/issues/4347Reuse: Reconstruct references to data dictionary when resusing element from l...2024-01-15T14:17:48ZAndreas BayhaReuse: Reconstruct references to data dictionary when resusing element from librarySince #4346 all references leaving a library element are removed.
This also affects the type definition reference for ports. Here, this linkage to the DataDictionary should be reconstructed when instantiating a library component in a pr...Since #4346 all references leaving a library element are removed.
This also affects the type definition reference for ports. Here, this linkage to the DataDictionary should be reconstructed when instantiating a library component in a project. In case a type cannot be found, a warning should be displayed and the type reset.
Alternatively, the library could also maintain the types explicitly and update the data dictionary whenever a library component is instantiated (#4150). In case #4150 is implemented, this issue here can be rejected.AF3 2.25 - Release HackathonSebastian BergemannSebastian Bergemannhttps://git.fortiss.org/af3/af3/-/issues/4326Hide context menu within reuse library view2023-09-26T11:47:00ZSebastian BergemannHide context menu within reuse library viewThe reuse library view displays the reuse libraries (and their reuse elements). When the user right click on them, a context menu appears with "Delete Library" and "Rename Library". When the dialog box opens for the respective action, th...The reuse library view displays the reuse libraries (and their reuse elements). When the user right click on them, a context menu appears with "Delete Library" and "Rename Library". When the dialog box opens for the respective action, the context menu should disappear (be hidden) like it was done/implemented for the context menu in the component architecture editor (see https://git.fortiss.org/af3/af3/-/issues/4321).
Under Linux, it seems that the context menu does not disappear even after the dialog and action has finished.
Initial report: https://git.fortiss.org/af3/kernel/-/merge_requests/204#note_112814BacklogSebastian BergemannSebastian Bergemannhttps://git.fortiss.org/af3/af3/-/issues/4301Add feedback-based solution to replace the sleep call in FF1Generator2023-07-28T12:07:17ZIrina MunteanAdd feedback-based solution to replace the sleep call in FF1GeneratorIn case the user chose automatic middlware startup, the [FF1Generator.java](https://git.fortiss.org/af3/af3/-/blob/master/org.fortiss.af3.ff1.generator/src/org/fortiss/af3/ff1/generator/FF1Generator.java) sleeps for `PRE_STARTUP_SLEEP_SE...In case the user chose automatic middlware startup, the [FF1Generator.java](https://git.fortiss.org/af3/af3/-/blob/master/org.fortiss.af3.ff1.generator/src/org/fortiss/af3/ff1/generator/FF1Generator.java) sleeps for `PRE_STARTUP_SLEEP_SECONDS` before starting every node. This is for ensuring that the roscore is started first and is waiting for the middleware startup on all the nodes. If, for example, the middleware on slave yellowpi2 would be started before roscore on master yellowpi1, we would get an error as the slave cannot detect the master roscore.
An example for the automatic deployment and startup:
For a distributed platform with 3 Pis (`yellowpi1` - master, `yellowpi2` - slave, `yellowpi3` - slave) and `PRE_STARTUP_SLEEP_SECONDS` = 5:
1. Sequentially deploy the FMUs on all Pis
2. Start roscore on master yellowpi1
3. Wait 5 seconds
4. Start middleware on slave yellowpi2
5. Wait 5 seconds
6. Start middleware on slave yellowpi3
7. Wait 5 seconds
8. Start middleware on master yellowpi1
9. Done
Task: Replace the sleep() call with a feedback-based solutionBacklogIrina MunteanIrina Munteanhttps://git.fortiss.org/af3/af3/-/issues/4280Limit size of docker logs in containers for FF1 Pis2023-01-23T15:19:26ZSebastian BergemannLimit size of docker logs in containers for FF1 Pis**Problem:**
By default, the size of log files in docker is not limited, which is why we had it now that a json log file for a FF1 rover pi was more than 8 GB. You can manually delete them, but it would be better if this cannot happen in...**Problem:**
By default, the size of log files in docker is not limited, which is why we had it now that a json log file for a FF1 rover pi was more than 8 GB. You can manually delete them, but it would be better if this cannot happen in first place.
**Goal:**
Limit size of docker logs in containers for FF1 pis via docker configs.
**Help:**
When starting a docker container, the following argument can be used to limit the size of log files for this container: `--log-opt max-size=50m` (see https://stackoverflow.com/questions/31829587/docker-container-logs-taking-all-my-disk-space).
Probably even better would be a default config for such logs. This can be done like described here: https://docs.docker.com/config/containers/logging/configure/BacklogTiziano MunaroTiziano Munarohttps://git.fortiss.org/af3/af3/-/issues/4227Improve the usability of the user documentation2023-10-16T17:02:16ZTiziano MunaroImprove the usability of the user documentationTo improve the user documentation's usability and ease of maintenance, the following changes shall be implemented:
- [x] Highlight current position in the navigation menu
- [x] Unfold the navigation menu to display the current position
...To improve the user documentation's usability and ease of maintenance, the following changes shall be implemented:
- [x] Highlight current position in the navigation menu
- [x] Unfold the navigation menu to display the current position
- [x] Open the navigation menu only on click (not on hover)
- [x] Extract the footer to a single file which is imported in all pages (just like the navigation menu)
- [x] Update the contact information in the footer
Furthermore, the "AF3 Help" shall no longer use Eclipse's built-in help framework. Instead, a lightweight FX WebView pointing to the [online user documentation](https://download.fortiss.org/public/projects/af3/help/) shall be introduce as a replacement. This will also resolve af3/af3#4083.AF3 2.25 - Feature FreezeTiziano MunaroTiziano Munarohttps://git.fortiss.org/af3/af3/-/issues/4085Modify the exploration backend to support multi-rate schedules2022-03-09T15:24:33ZDummy AF3-DevModify the exploration backend to support multi-rate schedulesWhile the Z3-backend does not support multi-rate schedules as of now
others do.
Hence, any restrictions limiting the calculation of multi-rate schedules
shall be moved from backend-agnostic parts of the exploration backends
to the resp...While the Z3-backend does not support multi-rate schedules as of now
others do.
Hence, any restrictions limiting the calculation of multi-rate schedules
shall be moved from backend-agnostic parts of the exploration backends
to the respective backends.
The `ExplorationTimingConstraintUtils`, for instance, overwrites the
periods of all tasks to equal. This shall be done in the Z3-backend
(with an appropriate notification for the user), while leaving the
periods unchanged for other backends.
*(from redmine: issue id 4085, created on 2020-11-19)*
* Relations:
* relates #4088BacklogTiziano MunaroTiziano Munarohttps://git.fortiss.org/af3/af3/-/issues/4044Simulation OperatorPanels to JavaFX2023-01-26T10:15:21ZJohannes EderSimulation OperatorPanels to JavaFXTransformation of the Simulation Operator Panels
(org.fortiss.af3.operatorpanel.ui) to JavaFX.
*(from redmine: issue id 4044, created on 2020-07-20)*
* Relations:
* child #4082Transformation of the Simulation Operator Panels
(org.fortiss.af3.operatorpanel.ui) to JavaFX.
*(from redmine: issue id 4044, created on 2020-07-20)*
* Relations:
* child #4082Backloghttps://git.fortiss.org/af3/af3/-/issues/4013[UI] Collection task SWT based views -> JavaFX-based views2023-01-26T09:41:20ZJohannes Eder[UI] Collection task SWT based views -> JavaFX-based views
*(from redmine: issue id 4013, created on 2020-05-12)*
* Relations:
* child #3434
* child #3922
* child #4014
* child #4015
* child #4016
* child #4017
* child #4018
* child #4019
* child #4020
* child #4075
*(from redmine: issue id 4013, created on 2020-05-12)*
* Relations:
* child #3434
* child #3922
* child #4014
* child #4015
* child #4016
* child #4017
* child #4018
* child #4019
* child #4020
* child #4075Backloghttps://git.fortiss.org/af3/af3/-/issues/3978[UI] Resolve code duplication in the link-method of link visuals2023-01-17T12:25:21ZDummy AF3-Dev[UI] Resolve code duplication in the link-method of link visualsThe \`link\` methods of the
\`CurvedLinkLayoutedContentAnchorangeController\` and
\`CurvedLinkLayoutedDiagramAnchorangeController\` are currently
identical. However, as the division in the class hierarchy of anchorage-
and diagram contro...The \`link\` methods of the
\`CurvedLinkLayoutedContentAnchorangeController\` and
\`CurvedLinkLayoutedDiagramAnchorangeController\` are currently
identical. However, as the division in the class hierarchy of anchorage-
and diagram controllers comes before the one of lines and curves, the
removal of this code duplication by moving it to a common subclass is
not trivial. A utility method is not ideal either, as the method
contains a \`super\` call to a protected method.
In the following illustration the code dupliction is between CAC and
CDC:
CB
/ \
AC DC
/ \ / \
LAC CAC LDG CDC
*(from redmine: issue id 3978, created on 2020-03-27)*BacklogTiziano MunaroTiziano Munarohttps://git.fortiss.org/af3/af3/-/issues/3922ModelNavigatorView to JavaFX2023-03-23T15:47:55ZJohannes EderModelNavigatorView to JavaFXCreation of a new JavaFX-based ModelEditorView in order to replace the
old SWT-based implementation. The view shall be similar to the old one,
hence control code may be reused.
*(from redmine: issue id 3922, created on 2020-01-27)*
* ...Creation of a new JavaFX-based ModelEditorView in order to replace the
old SWT-based implementation. The view shall be similar to the old one,
hence control code may be reused.
*(from redmine: issue id 3922, created on 2020-01-27)*
* Relations:
* relates #4019
* relates #4076
* parent #4013BacklogJohannes EderJohannes Ederhttps://git.fortiss.org/af3/af3/-/issues/3919SourceEditorBase<T> to JavaFX2023-01-26T10:10:22ZJohannes EderSourceEditorBase<T> to JavaFXCreation of a new JavaFX-based SourceEditorBase<T> (+
CodeSpecificationEditor) in order to replace the old SWT-based
implementation. The editor shall be similar to the old one, hence
control code may be reused.
*(from redmine: issue id...Creation of a new JavaFX-based SourceEditorBase<T> (+
CodeSpecificationEditor) in order to replace the old SWT-based
implementation. The editor shall be similar to the old one, hence
control code may be reused.
*(from redmine: issue id 3919, created on 2020-01-27)*
* Relations:
* parent #3906Backloghttps://git.fortiss.org/af3/af3/-/issues/3917ArchitecureParameterEditorBase<A,T> to JavaFX2023-01-26T15:32:19ZJohannes EderArchitecureParameterEditorBase<A,T> to JavaFXCreation of a new JavaFX-based
ArchitectureParameterEditorBase&lt;A,T>in order to replace the old
SWT-based implementation. The editor shall be similar to the old one,
hence control code may be reused.
*(from redmine: issue id 3917, cr...Creation of a new JavaFX-based
ArchitectureParameterEditorBase<A,T>in order to replace the old
SWT-based implementation. The editor shall be similar to the old one,
hence control code may be reused.
*(from redmine: issue id 3917, created on 2020-01-27)*
* Relations:
* parent #3906BacklogSimon BarnerSimon Barnerhttps://git.fortiss.org/af3/af3/-/issues/3915ModelListenerEditorBase<T> to JavaFX2023-03-29T07:08:02ZJohannes EderModelListenerEditorBase<T> to JavaFXCreation of a new JavaFX-based ModelListenerEditorBase<T> in order to
replace the old SWT-based implementation. The editor shall be similar to
the old one, hence control code may be reused.
*(from redmine: issue id 3915, created on 202...Creation of a new JavaFX-based ModelListenerEditorBase<T> in order to
replace the old SWT-based implementation. The editor shall be similar to
the old one, hence control code may be reused.
*(from redmine: issue id 3915, created on 2020-01-27)*
* Relations:
* parent #3906BacklogSimon BarnerSimon Barnerhttps://git.fortiss.org/af3/af3/-/issues/3906[UI] Collection task to switch SWT based editors to the new JavaFX-based editors2023-10-23T07:24:49ZJohannes Eder[UI] Collection task to switch SWT based editors to the new JavaFX-based editors
*(from redmine: issue id 3906, created on 2020-01-27)*
* Relations:
* child #3907
* child #3908
* child #3909
* child #3910
* child #3911
* child #3912
* child #3913
* child #3914
* child #3915
* child #3916
* c...
*(from redmine: issue id 3906, created on 2020-01-27)*
* Relations:
* child #3907
* child #3908
* child #3909
* child #3910
* child #3911
* child #3912
* child #3913
* child #3914
* child #3915
* child #3916
* child #3917
* child #3918
* child #3919
* child #3920
* child #3921
* child #3939Backloghttps://git.fortiss.org/af3/af3/-/issues/3877[UI] Move type checks and casts from LWFXEF visuals to a common base class wi...2023-03-10T16:09:23ZDummy AF3-Dev[UI] Move type checks and casts from LWFXEF visuals to a common base class within SystemFocusChecks of the type
```java">
object model = mvcb.getmodel();
if(!(model instanceof ilayoutedmodelelement)) {
throw new illegalargumentexception(
"expected model of type ilayoutedmodelelement, but was " +...Checks of the type
```java">
object model = mvcb.getmodel();
if(!(model instanceof ilayoutedmodelelement)) {
throw new illegalargumentexception(
"expected model of type ilayoutedmodelelement, but was " +
model.getclass().getsimplename() + ".");
}
```
shall be moved to a common base class within the systemfocus kernel.
`mvcbundlepartbase` would be the most common class to place such a
check. this way the class itself does not have to be parameterized while
still avoiding code duplication.
the same base class could be accomodate a generic method for returning
the casted model element:
<code class="java">
protected <t> t getmodelelement(class<t> elementtype)
```
of course calling this method with a wrong parameter leads to class-cast
exceptions, but the expected type is already checked in the constructor.
also, a misuse is limited to derived classes, where a contributor should
know the context.
moreover, the `getname` method of the `contentvisualbase` is currently
returning an empty string, leaving it to its children to implement a
component-specific override. this method is usually identical in all
visuals, except for the class-cast. by using the `getname` method of the
`kerneluiutils` directly in the `componentvisualbase`, this code
duplication could be avoided:
<code class="java
/** {@inheritDoc} */
@Override
protected String getName() {
return KernelUIUtils.getName(getModel());
}
```
*(from redmine: issue id 3877, created on 2019-11-29)*Backloghttps://git.fortiss.org/af3/af3/-/issues/3799Enable only the execution of explorations for which all prerequisites are ful...2024-01-11T10:59:36ZDummy AF3-DevEnable only the execution of explorations for which all prerequisites are fulfilledThe DSE view shall only enable an explorations button and thus access to
the respective synthesis view if the current DSE fulfills all of its
prerequisites.
Expected behavior
-----------------
The ‘Deployment’ button shall only be enab...The DSE view shall only enable an explorations button and thus access to
the respective synthesis view if the current DSE fulfills all of its
prerequisites.
Expected behavior
-----------------
The ‘Deployment’ button shall only be enabled if the current DSE
contains at least
- A component architecture,
- A task architecture and a
- A platform architecture with routes.
The ‘Schedule’ button shall only be enabled if the current DSE contains
at least
- A component architecture,
- A task architecture,
- A task-to-ECU allocation table
- A signal-to-route allocation table, and
- A platform architecture with routes.
As a platform exploration alone cannot produce any valuable results, the
‘Platform’ button shall remain disabled until joint explorations are
available.
*(from redmine: issue id 3799, created on 2019-08-14)*AF3 2.25 - Feature FreezeTiziano MunaroTiziano Munarohttps://git.fortiss.org/af3/af3/-/issues/3712Extend image export functionality from component architectures only to task a...2023-01-17T15:13:43ZDummy AF3-DevExtend image export functionality from component architectures only to task and platform architecturesDescription
-----------
Extend the functionality defined in
`eu.fbk.af3.tools.diagram.ui.commands.AbstractComponentToImage.export(String saveFilePath, Component component)`
to support task and platform architectures as well - ideally th...Description
-----------
Extend the functionality defined in
`eu.fbk.af3.tools.diagram.ui.commands.AbstractComponentToImage.export(String saveFilePath, Component component)`
to support task and platform architectures as well - ideally through a
generic implementation.
Expected behavior
-----------------
The “Export component as image …” feature shall behave exactly the same
as for the component architectures, allowing the export of the
architectures with their respective layouts.
*(from redmine: issue id 3712, created on 2019-04-15)*
* Relations:
* relates #2679
* Uploads:
* [3712.af3_23](/uploads/f4583b5a0d5cba2ec91a10def8740fc8/3712.af3_23)
* ![3712](/uploads/eb8c8fb80c0b7bccb1f6286a1524c57b/3712.png)BacklogTiziano MunaroTiziano Munarohttps://git.fortiss.org/af3/af3/-/issues/3703Enable unfolded quantification over subsets in SMT2020-12-06T18:35:19ZDummy AF3-DevEnable unfolded quantification over subsets in SMTWhile it is possible to quantify over a subset of a superset when
unfolding a constraint, the SMT backend does not behave the same way
when setting the `unfoldQuantifier` parameter of the `SMTConstraint` to
`false`. As it is possible to ...While it is possible to quantify over a subset of a superset when
unfolding a constraint, the SMT backend does not behave the same way
when setting the `unfoldQuantifier` parameter of the `SMTConstraint` to
`false`. As it is possible to specify arbitrary subsets in both cases
when defining `IQuantifierExpression` (i.e. `ForAll` and `Exists`), the
difference in behavior is misleading.
The proposed changes is also likely increase the solvers performance in
cases where the selection of the elements is not trivial. Assuming that
a subset is defined by the combination of multiple properties, the
evaluation of the left side of the implication used for selection
becomes expensive, especially considering that it has to be evaluated
for every member of the superset. With a selector only one function has
to be evaluated.
Expected Behavior:
------------------
The following snippets should express the same constraints. Currently
the first one specifies a correct pre-allocation constraint, applying
one task and one ECU only while the second one ignores the specified
tasks and quantifies over both complete supersets leading to an
unsatisfiable statement.
```java">
set<task> tasks = createset(
supersetmaget(task.class),
supersetmaget(task.class).getentries().stream()
.filter(t -> t.getname().equals("task 1")).findany().get(),
task.class);
set<executionunit> ecus = createset(
supersetmaget(executionunit.class),
supersetmaget(executionunit.class).getentries().stream()
.filter(e -> e.getname().equals("ecu 2")).findany().get(),
executionunit.class);
allocation allocation = createallocation(createmodelelementliteral(tasks),
createmodelelementliteral(ecus));
forall forall = generateforall(tasks, generateforall(ecus, allocation));
smtconstraint constraint = createsmtconstraint("pre-allocation constraint", forall, false, true);
```
<code class="java
Set<Task> tasks = createSet(
superSetMaget(Task.class),
superSetMaget(Task.class).getEntries().stream()
.filter(t -> t.getName().equals("Task 1")).findAny().get(),
Task.class);
Set<ExecutionUnit> ecus = createSet(
superSetMaget(ExecutionUnit.class),
superSetMaget(ExecutionUnit.class).getEntries().stream()
.filter(e -> e.getName().equals("ECU 2")).findAny().get(),
ExecutionUnit.class);
Allocation allocation = createAllocation(createModelElementLiteral(tasks),
createModelElementLiteral(ecus));
ForAll forAll = generateForAll(tasks, generateForAll(ecus, allocation));
SMTConstraint constraint = createSMTConstraint("Pre-allocation constraint", forAll, false, false);
```
Tasks
-----
- Set default value for `IQuantifiedExpression::unfold` to `false`
again to revert the temporary workaround from \#3787.
- Implement a selector function, which combined with an implication
achieves the desired behavior (as shown in the following SMT-LIB
snipped)
- Evaluate different options for selector functions (e.g. [bit
vectors, arrays etc.](https://rise4fun.com/Z3/tutorial/guide))
<!-- -->
(declare-datatypes () ((Type a b c)))
(declare-fun prop (Type) Int)
(assert (= (prop a) 1))
(assert (= (prop b) 2))
(assert (= (prop c) 3))
(declare-fun sel (Type) Bool)
(assert (sel a))
(assert (sel b))
(assert (not (sel c)))
(assert (forall ((t Type)) (=> (sel t) (< (prop t) 3))))
(check-sat)
*(from redmine: issue id 3703, created on 2019-04-03)*BacklogTiziano MunaroTiziano Munaro