more planning with respect to UI/Session command access (#1087)
This commit is contained in:
parent
789246fc3a
commit
57a336ab49
4 changed files with 8398 additions and 114 deletions
BIN
doc/devel/uml/Command-ui-access.png
Normal file
BIN
doc/devel/uml/Command-ui-access.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 14 KiB |
8440
uml/Lumiera.xmi
8440
uml/Lumiera.xmi
File diff suppressed because it is too large
Load diff
|
|
@ -2582,7 +2582,7 @@ This contrastive approach attempts to keep knowledge and definition clustered in
|
|||
→ GuiCommandCycle
|
||||
</pre>
|
||||
</div>
|
||||
<div title="GuiCommandCycle" creator="Ichthyostega" modifier="Ichthyostega" created="201703031817" modified="201703080252" tags="design operational GuiPattern GuiIntegration draft discuss" changecount="18">
|
||||
<div title="GuiCommandCycle" creator="Ichthyostega" modifier="Ichthyostega" created="201703031817" modified="201703110107" tags="design operational GuiPattern GuiIntegration draft discuss img" changecount="29">
|
||||
<pre>//the process of issuing a session command from the UI//
|
||||
Within the Lumiera UI, we distinguish between core concerns and the //local mechanics of the UI.// The latter is addressed in the usual way, based on a variation of the [[MVC-Pattern|http://en.wikipedia.org/wiki/Model%E2%80%93view%E2%80%93controller]]. The UI toolkit set, here the GTK, affords ample ways to express actions and reactions within this framework, where widgets in the presentation view are wired with the corresponding controllers vice versa (GTK terms these connections as //"signals"//, we rely on {{{libSigC++}}} for implementation).
|
||||
A naive approach would extend these mature mechanisms to also cover the actual functionality of the application. This compelling solution allows quickly to get "something tangible" up and running, yet -- on the long run -- inevitably leads to core concerns being tangled into the presentation layer, which in turn becomes hard to maintain and loaded with "code behind". Since we are here "for the long run", we immediately draw the distinction between UI mechanics and core concerns. The latter are, by decree and axiom, required to perform without even an UI layer running. This decision gives rise to the challenge how to form and integrate the invocation of ''core commands'' into the presentation layer.
|
||||
|
|
@ -2621,7 +2621,9 @@ from these use cases, we can derive the //crucial activities for command handlin
|
|||
* when a command is completely parametrised, it can be invoked. The managing {{{InteractionStateManager}}} knows about this
|
||||
* on invocation, the ID of the instance is sent via UI-Bus to the {{{CmdInstanceManager}}}
|
||||
* which in turn removes the instance handle from its registration table and hands it over into the ProcDispatcher
|
||||
Consequently this means that command instances will be formed //per {{{InteractionStateManager}}} instance.// Thus, each distinct kind of control system has its own instances, which are kept around, until they are ready for invocation. Each invocation "burns" an instance -- on next access, a new instance ID will be allocated, and the next command invocation cycle starts...</pre>
|
||||
Consequently this means that command instances will be formed //per {{{InteractionStateManager}}} instance.// Thus, each distinct kind of control system has its own instances, which are kept around, until they are ready for invocation. Each invocation "burns" an instance -- on next access, a new instance ID will be allocated, and the next command invocation cycle starts...
|
||||
[img[Access to Session Commands from UI|uml/Command-ui-access.png]]
|
||||
</pre>
|
||||
</div>
|
||||
<div title="GuiConnection" modifier="Ichthyostega" created="200812050543" modified="201703031816" tags="GuiIntegration overview" changecount="9">
|
||||
<pre>All communication between Proc-Layer and GUI has to be routed through the respective LayerSeparationInterfaces. Following a fundamental design decision within Lumiera, these interface are //intended to be language agnostic// &mdash; forcing them to stick to the least common denominator. Which creates the additional problem of how to create a smooth integration without forcing the architecture into functional decomposition style. To solve this problem, we rely on ''messaging'' rather than on a //business facade// -- our facade interfaces are rather narrow and limited to lifecycle management. In addition, the UI exposes a [[notification facade|GuiNotificationFacade]] for pushing back status information created as result of the edit operations, the build process and the render tasks.
|
||||
|
|
|
|||
|
|
@ -2042,6 +2042,14 @@
|
|||
</node>
|
||||
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1485555902731" ID="ID_55451880" MODIFIED="1485555951678" TEXT="#1070 how to bind session commands into UI actions">
|
||||
<icon BUILTIN="flag-yellow"/>
|
||||
<node CREATED="1489191725382" ID="ID_1332782754" MODIFIED="1489191731742" TEXT="größeres Thema">
|
||||
<icon BUILTIN="messagebox_warning"/>
|
||||
</node>
|
||||
<node CREATED="1489191732869" ID="ID_1031180144" MODIFIED="1489191744151" TEXT="nicht sofort zu lösen"/>
|
||||
<node CREATED="1489191744764" ID="ID_898481930" MODIFIED="1489191839053" TEXT="aber Grundlagen legen">
|
||||
<arrowlink COLOR="#606d94" DESTINATION="ID_346158251" ENDARROW="Default" ENDINCLINATION="842;21;" ID="Arrow_ID_726918944" STARTARROW="None" STARTINCLINATION="1012;0;"/>
|
||||
<icon BUILTIN="yes"/>
|
||||
</node>
|
||||
</node>
|
||||
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1485549081728" ID="ID_1122969153" MODIFIED="1488672334405" TEXT="globale Aktionen">
|
||||
<arrowlink COLOR="#824f68" DESTINATION="ID_826011549" ENDARROW="Default" ENDINCLINATION="-906;-1187;" ID="Arrow_ID_1373278707" STARTARROW="Default" STARTINCLINATION="870;255;"/>
|
||||
|
|
@ -2180,6 +2188,9 @@
|
|||
<node CREATED="1488566356774" ID="ID_969011841" MODIFIED="1488672817699" TEXT="Ankerpunkt zum Bilden der Commands">
|
||||
<arrowlink COLOR="#706a9a" DESTINATION="ID_1461875887" ENDARROW="Default" ENDINCLINATION="-923;-789;" ID="Arrow_ID_457540370" STARTARROW="None" STARTINCLINATION="806;300;"/>
|
||||
<node CREATED="1488566405248" ID="ID_355508260" MODIFIED="1488566425745" TEXT="auffinden der Command-IDs">
|
||||
<node CREATED="1489191528425" ID="ID_1331796226" MODIFIED="1489191655977" TEXT="Neuer Service hierfür in Proc">
|
||||
<arrowlink COLOR="#584d79" DESTINATION="ID_341428100" ENDARROW="Default" ENDINCLINATION="1995;-1317;" ID="Arrow_ID_879741123" STARTARROW="None" STARTINCLINATION="334;-13;"/>
|
||||
</node>
|
||||
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1488677809297" ID="ID_1520540731" MODIFIED="1488677835595" TEXT="Problem: Zugang / Wiring">
|
||||
<arrowlink DESTINATION="ID_850989325" ENDARROW="Default" ENDINCLINATION="183;-575;" ID="Arrow_ID_1002016515" STARTARROW="None" STARTINCLINATION="341;286;"/>
|
||||
<icon BUILTIN="flag-yellow"/>
|
||||
|
|
@ -11293,7 +11304,8 @@
|
|||
<node CREATED="1488937046591" ID="ID_1911259949" MODIFIED="1488937055426" TEXT="vom UI allein per ID ansprechbar"/>
|
||||
</node>
|
||||
</node>
|
||||
<node CREATED="1488938186100" ID="ID_98580620" MODIFIED="1488938192567" TEXT="Command-Definition erweitern">
|
||||
<node CREATED="1488938186100" ID="ID_98580620" MODIFIED="1489191362863" TEXT="Command-Definition erweitern">
|
||||
<icon BUILTIN="hourglass"/>
|
||||
<node CREATED="1488938195387" ID="ID_1831459518" MODIFIED="1488938202950" TEXT="Möglichkeit, Regeln vorzugeben"/>
|
||||
<node CREATED="1488938222135" ID="ID_1365861102" MODIFIED="1488938232250" TEXT="werden fest mit dem Command zusammen konfiguriert"/>
|
||||
<node CREATED="1488938205266" ID="ID_1560120611" MODIFIED="1488938215411" TEXT="diese können aus der Command-Def bezogen werden"/>
|
||||
|
|
@ -11302,7 +11314,7 @@
|
|||
<icon BUILTIN="info"/>
|
||||
<node CREATED="1488939675705" ID="ID_1515081819" MODIFIED="1488939724134" TEXT="UI-Element fragt CmdAccessor nach InteractionStateManager"/>
|
||||
<node CREATED="1488939946828" ID="ID_1817986480" MODIFIED="1488940966027" TEXT="CmdAccessor speichert InteractionStateManager"/>
|
||||
<node CREATED="1488939748247" ID="ID_589914539" MODIFIED="1488940949864" TEXT="InteractionstateManager belegt beim CmdInstanceManager neue ID..."/>
|
||||
<node CREATED="1488939748247" ID="ID_589914539" MODIFIED="1489079785598" TEXT="InteractionStateManager belegt beim CmdInstanceManager neue ID..."/>
|
||||
<node CREATED="1488940951052" ID="ID_1899882798" MODIFIED="1488940964629" TEXT="...und erzeugt daraus neuen InvocationTrail"/>
|
||||
<node CREATED="1488940222591" ID="ID_1071611814" MODIFIED="1488940241768" TEXT="UI-Element fragt InteractionStateManager: "kann dieses Command ausgeführt werden"?"/>
|
||||
<node CREATED="1488940254106" ID="ID_1373320189" MODIFIED="1488940276539" TEXT="UI-Element bezieht vom InteractionStateManager einen InvocationTrail"/>
|
||||
|
|
@ -11312,7 +11324,7 @@
|
|||
<node CREATED="1488940519518" ID="ID_1875791797" MODIFIED="1488940533992" TEXT="bei nächster Anfrage wird CmdInstanceManager daher neue Instanz anlegen"/>
|
||||
</node>
|
||||
</node>
|
||||
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1488677859619" HGAP="-15" ID="ID_827179653" MODIFIED="1488940144847" TEXT="Problem: Service-Zugang" VSHIFT="24">
|
||||
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1488677859619" HGAP="-15" ID="ID_827179653" MODIFIED="1489191299696" TEXT="Problem: Service-Zugang" VSHIFT="24">
|
||||
<richcontent TYPE="NOTE"><html>
|
||||
<head>
|
||||
|
||||
|
|
@ -11331,6 +11343,7 @@
|
|||
</html>
|
||||
</richcontent>
|
||||
<arrowlink COLOR="#9f5680" DESTINATION="ID_850989325" ENDARROW="Default" ENDINCLINATION="211;189;" ID="Arrow_ID_1007188680" STARTARROW="None" STARTINCLINATION="912;-974;"/>
|
||||
<linktarget COLOR="#758ba4" DESTINATION="ID_827179653" ENDARROW="Default" ENDINCLINATION="173;83;" ID="Arrow_ID_57938013" SOURCE="ID_1621107057" STARTARROW="None" STARTINCLINATION="550;-93;"/>
|
||||
<icon BUILTIN="messagebox_warning"/>
|
||||
<node CREATED="1488936835940" ID="ID_1322149090" MODIFIED="1488937388772" TEXT="separates Problem">
|
||||
<richcontent TYPE="NOTE"><html>
|
||||
|
|
@ -11522,7 +11535,36 @@
|
|||
</node>
|
||||
</node>
|
||||
</node>
|
||||
<node CREATED="1488672585310" ID="ID_50525010" MODIFIED="1488672593368" TEXT="framework"/>
|
||||
<node CREATED="1488672585310" ID="ID_50525010" MODIFIED="1488672593368" TEXT="framework">
|
||||
<node CREATED="1489191062441" ID="ID_772085108" MODIFIED="1489191064789" TEXT="Aktoren">
|
||||
<node CREATED="1489191072415" ID="ID_546981226" MODIFIED="1489191086697" TEXT="Command Definition"/>
|
||||
<node CREATED="1489191088613" ID="ID_1858363588" MODIFIED="1489191093288" TEXT="CmdAccessor"/>
|
||||
<node CREATED="1489191103187" ID="ID_1016072906" MODIFIED="1489191107214" TEXT="InteractionStateManager"/>
|
||||
<node CREATED="1489191095700" ID="ID_1053653890" MODIFIED="1489191101056" TEXT="InteractionDirector"/>
|
||||
</node>
|
||||
<node CREATED="1489191112026" ID="ID_1805268724" MODIFIED="1489191116245" TEXT="Implementierung">
|
||||
<node CREATED="1489191118705" ID="ID_1501573546" MODIFIED="1489191120741" TEXT="Aufbau">
|
||||
<node CREATED="1489191126256" ID="ID_127004361" MODIFIED="1489191132263" TEXT="Tickets">
|
||||
<icon BUILTIN="info"/>
|
||||
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1489191161395" ID="ID_346158251" MODIFIED="1489191839053" TEXT="#1087 GUI/Session command handling">
|
||||
<linktarget COLOR="#606d94" DESTINATION="ID_346158251" ENDARROW="Default" ENDINCLINATION="842;21;" ID="Arrow_ID_726918944" SOURCE="ID_898481930" STARTARROW="None" STARTINCLINATION="1012;0;"/>
|
||||
<icon BUILTIN="idea"/>
|
||||
</node>
|
||||
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1489191208557" ID="ID_632390561" MODIFIED="1489191213157" TEXT="#1088 Command definition registration">
|
||||
<icon BUILTIN="flag-yellow"/>
|
||||
</node>
|
||||
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1489191229098" ID="ID_341428100" MODIFIED="1489191638320" TEXT="#1089 Command instance management">
|
||||
<linktarget COLOR="#584d79" DESTINATION="ID_341428100" ENDARROW="Default" ENDINCLINATION="1995;-1317;" ID="Arrow_ID_879741123" SOURCE="ID_1331796226" STARTARROW="None" STARTINCLINATION="334;-13;"/>
|
||||
<icon BUILTIN="flag-yellow"/>
|
||||
</node>
|
||||
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1489191252503" ID="ID_1621107057" MODIFIED="1489191308469" TEXT="#1090 Command access for UI-Elements">
|
||||
<arrowlink COLOR="#758ba4" DESTINATION="ID_827179653" ENDARROW="Default" ENDINCLINATION="173;83;" ID="Arrow_ID_57938013" STARTARROW="None" STARTINCLINATION="550;-93;"/>
|
||||
<icon BUILTIN="flag-yellow"/>
|
||||
</node>
|
||||
</node>
|
||||
</node>
|
||||
</node>
|
||||
</node>
|
||||
<node CREATED="1488672593812" ID="ID_1454459609" MODIFIED="1488672598271" TEXT="konkret"/>
|
||||
</node>
|
||||
<node CREATED="1448063874479" HGAP="43" ID="ID_739054690" MODIFIED="1481413149364" TEXT="UI-Modell" VSHIFT="1">
|
||||
|
|
|
|||
Loading…
Reference in a new issue