You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
The issue is about to complex actions that take place and don't have a clear interface to be performed.
For now complex actions are, state_type_change, group_states, ungroup_state, substitute_state and
"paste". All this actions have separate code fragments or functions in multiple locations in core, models, gui.helpers and graphical editors. For every action the interface is different. In the last RAFCON meeting we discussed a solution which is now the starting point to re-factor this interface
Steps:
encapsulate complex action by "start" and "end" signal generated on the state model which holed origin, target, affected models, action and before/after boolean -> this need to be integrated/substitute into modification history and graphical editors (and in future maybe in other components to improve performance)
all complex actions will be separated and moved to helper modules
from the core elements
and model elements
the meta data re-size/adaptations in the graphical editor operations
the complex actions will also use un-register and register observer methods to reduce notification load in the recursive notification pattern of the model (the start and end signals have to be notified recursively) and avoid unnecessary reactions (not sure if this is still the best way 2017-08)
Rough example from the meeting -> Action: Group
User: Triggers group for selected states
Menu entry calls state_helper.group
state_helper.group: emits signal in parent state: ActionSignal(action="group", origin="state_helper", parent, affected_models=selected states, after=False)
(3.1 disable parent_m observer on core)
signal is propagated upwards to state_machine_m
graphical editor receives signal, creates temp list of afftected states, deactivates observers
state_helper.group: removes selected state_m, creates new container_m, adds affected as child_state_m, adapts meta data
state_helper.group: new container_m is added to parent_m's expected_future_models
state_helper.group: container_m.state is added to parent_m.state state's
container_m gets notification about new core state, finds and uses expected_future_model
(9.1 enable parent_m observer on core)
state_helper.group: emits signal in parent state: ActionSignal(action="group", origin="state_helper", parent, affected_models=container_m, after=True)
graphical editor receives signal, create state_v for container_m and remaps state_v of temp list of afftected states, activates observers
Originally created by @Rbelder at 2017-03-28 09:40:34+00:00 (moved from RMC internal repository)
This discussion was converted from issue #316 on December 13, 2024 11:41.
Heading
Bold
Italic
Quote
Code
Link
Numbered list
Unordered list
Task list
Attach files
Mention
Reference
Menu
reacted with thumbs up emoji reacted with thumbs down emoji reacted with laugh emoji reacted with hooray emoji reacted with confused emoji reacted with heart emoji reacted with rocket emoji reacted with eyes emoji
-
The issue is about to complex actions that take place and don't have a clear interface to be performed.
For now complex actions are, state_type_change, group_states, ungroup_state, substitute_state and
"paste". All this actions have separate code fragments or functions in multiple locations in core, models, gui.helpers and graphical editors. For every action the interface is different. In the last RAFCON meeting we discussed a solution which is now the starting point to re-factor this interface
Steps:
Rough example from the meeting -> Action: Group
(3.1 disable parent_m observer on core)
(9.1 enable parent_m observer on core)
Originally created by @Rbelder at 2017-03-28 09:40:34+00:00 (moved from RMC internal repository)
Beta Was this translation helpful? Give feedback.
All reactions