Skip to main content

Notice: this Wiki will be going read only early in 2024 and edits will no longer be possible. Please see: https://gitlab.eclipse.org/eclipsefdn/helpdesk/-/wikis/Wiki-shutdown-plan for the plan.

Jump to: navigation, search

Henshin/Units

< Henshin
Revision as of 13:11, 2 March 2018 by Heidelme.students.uni-marburg.de (Talk | contribs) (Creation of the page, first version. Therefore some details and additional text are missing.)

(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)

In Henshin, control flow is specified using units. Units have a fixed number of sub-units, allowing for arbitrary nesting. This article describes the available units.

Usage

Unit creation in graphical editor Henshin Units Creation GraphicalEditor.png

Unit creation in tree-based editor Henshin Units Creation TreeEditor.png

Add sub-unit to Multi-Unit in graphical editor Henshin Units Add Invocation.png


Multi-Units

Sequential Unit

Henshin Sequential Unit.png
Number of sub-units
arbitrary (0..*)
Available Flags/Properties
of type boolean
  • strict
  • rollback
Execution successful
if
strict=true
all sub-units successful
strict=false
at least one sub-unit successful or no sub-units
Execution unsuccessful
if
strict=true
one sub-unit unsuccessful
strict=false
none of a non-zero number of sub-units successful
Control flow
The sub-units are executed in the given order.
strict=false, rollback=true/false
If one of the sub-units cannot be executed, the next sub-unit is executed.
strict=true, rollback=false
If one of the sub-units cannot be executed, the execution stops.
strict=true, rollback=true
If one of the sub-units cannot be executed, the execution stops and previous executions are reverted.

Priority Unit

Henshin Priority Unit.png
Number of sub-units
arbitrary (0..*)
Available Flags/Properties
none
Execution successful
tbd
Execution unsuccessful
tbd
Control flow
The sub-units are checked in the given order for executability. The first sub-unit found to be executable is executed.

Independent Unit

Henshin Independent Unit.png
Number of sub-units
arbitrary (0..*)
Available Flags/Properties
none
Execution successful
tbd
Execution unsuccessful
tbd
Control flow
The sub-units are checked in nondeterministic order for executability. The first sub-unit found to be executable is executed.

Unary Units

Loop Unit

Henshin Loop Unit.png
Number of sub-units
1
Available Flags/Properties
none
Execution successful
tbd
Execution unsuccessful
tbd
Control flow
The sub-unit is executed as often as it is executable.

Iterated Unit

Henshin Iterated Unit.png
Number of sub-units
1
Available Flags/Properties
of type positive integer
  • iterations
of type boolean
  • strict
  • rollback
Execution successful
if
strict=true
all iterations successful
strict=false
at least one iteration successful
Execution unsuccessful
if
strict=true
one iteration unsuccessful
strict=false
no iteration successful
Control flow
The sub-unit is executed as often as specified in the iterations property.
strict=false, rollback=true/false
If one of the iterations cannot be executed, the next iteration is executed.
strict=true, rollback=false
If one of the iterations cannot be executed, the execution stops.
strict=true, rollback=true
If one of the iterations cannot be executed, the execution stops and previous executions are reverted.

Conditional Unit

Henshin Conditional Unit.png
Number of sub-units
2 or 3
Available Flags/Properties
none
Execution successful
tbd
Execution unsuccessful
tbd
Control flow
tbd

Copyright © Eclipse Foundation, Inc. All Rights Reserved.