Activity-Lang: also dispatch notifications

This commit is contained in:
Fischlurch 2023-08-30 23:13:41 +02:00
parent 900f46b1d5
commit 32c08c0307
3 changed files with 135 additions and 181 deletions

View file

@ -629,7 +629,12 @@ namespace gear {
switch (verb_) {
case NOTIFY:
return notifyTarget (now, executionCtx);
{
auto res = notifyTarget (now, executionCtx);
if (activity::PASS == res)
res=activity::SKIP; // prevent activation of NOTIFY.next
return res;
}
case POST:
case FEED: // signal just to proceed with next...
return activity::PASS;

View file

@ -355,7 +355,6 @@ namespace test {
* - verify the basic outfitting and sane connectivity
* - verify values reported by the BlockFlow allocator
* - ensure the defined Job can be properly invoked
* @todo WIP 8/23 define implement
*/
void
termBuilder()
@ -403,7 +402,14 @@ namespace test {
/** @test verify the ability to _dispatch and perform_ a chain of activities.
* - use a directly wired, arbitrary chain
* - dispatch will activate all Activities
* @todo WIP 8/23 🔁 define implement
* - however, when the Gate is configured to be blocked
* (waiting on prerequisites), then the rest of the chain is not activated,
* only a re-check of the Gate is scheduled for later (1.011 -> 2.011)
* - the dispatch function also handles the notifications;
* when a notification towards the Gate is dispatched, the Gate is
* decremented and thereby opened; activation of the rest of the chain
* is then planned (but not executed synchronously in the same call)
* @todo WIP 8/23 define implement
*/
void
dispatchChain()
@ -419,9 +425,31 @@ namespace test {
// insert instrumentation to trace activation
detector.watchGate (post.next, "Gate");
CHECK (activity::PASS == ActivityLang::dispatchChain (post, tt, detector.executionCtx));
CHECK (activity::PASS == ActivityLang::dispatchChain (post, tt, detector.executionCtx)); // start execution (case/seq == 0)
CHECK (detector.verifyInvocation("Gate") .arg("1.011 ⧐ Act(GATE") // ...first the Gate was activated
.beforeInvocation("after-Gate").arg("1.011 ⧐ Act(TICK") // ...then activation passed out of Gate...
.beforeInvocation("CTX-tick") .arg("1.011")); // ...and finally the TICK invoked the λ-tick
cout << detector.showLog()<<endl;
detector.incrementSeq();
gate.data_.condition.incDependencies(); // Gate is blocked
CHECK (activity::PASS == ActivityLang::dispatchChain (post, tt, detector.executionCtx)); // start execution (case/seq == 1)
CHECK (detector.verifyInvocation("Gate") .seq(1).arg("1.011 ⧐ Act(GATE") // ...the Gate was activated...
.beforeInvocation("CTX-post").seq(1).arg("2.011","Act(GATE","≺test::CTX≻")); // ...but was found blocked and re-scheduled itself to 2.011
CHECK (detector.ensureNoInvocation("after-Gate").seq(1) // verify activation was not passed out behind Gate
.afterInvocation("Gate").seq(1));
CHECK (detector.ensureNoInvocation("CTX-tick").seq(1) // verify also the λ-tick was not invoked this time
.afterInvocation("Gate").seq(1));
detector.incrementSeq();
Activity notify{post.next}; // Notification via instrumented connection to the Gate
CHECK (activity::PASS == ActivityLang::dispatchChain (notify, tt, detector.executionCtx)); // dispatch a notification (case/seq == 2)
CHECK (detector.verifyInvocation("Gate") .seq(2).arg("1.011 --notify-↯> Act(GATE") // ...notification dispatched towards the Gate
.beforeInvocation("CTX-post").seq(2).arg("1.011","after-Gate","≺test::CTX≻")); // ...this opened the Gate and posted/requested activation of the rest of the chain
CHECK (detector.ensureNoInvocation("after-Gate").seq(2) // verify that activation was not passed out directly
.afterInvocation("CTX-post").seq(2));
CHECK (detector.ensureNoInvocation("CTX-tick").seq(2) // verify also the λ-tick was not invoked directly
.afterInvocation("CTX-post").seq(2));
}

View file

@ -66047,9 +66047,7 @@
<icon BUILTIN="button_ok"/>
<node CREATED="1521779239745" ID="ID_1772115642" MODIFIED="1561827466113">
<richcontent TYPE="NODE"><html>
<head>
</head>
<head/>
<body>
<p>
<u>Thema</u>: Memory access order constraints
@ -66062,9 +66060,7 @@
</node>
<node CREATED="1521783156564" ID="ID_1193354198" MODIFIED="1521783219950">
<richcontent TYPE="NODE"><html>
<head>
</head>
<head/>
<body>
<p>
<font color="#45317b">Grundidee</font>: <b>synchronizes-with</b>-Beziehung herstellen <i>auf Guard-Variable</i>
@ -66078,9 +66074,7 @@
<node CREATED="1521788428588" FOLDED="true" ID="ID_1454492096" MODIFIED="1561827483841" TEXT="lazy init">
<node CREATED="1521788443562" ID="ID_699722245" MODIFIED="1521788611886" TEXT="acquire-release ist &quot;ausreichend&quot;">
<richcontent TYPE="NOTE"><html>
<head>
</head>
<head/>
<body>
<p>
...das meint zweierlei
@ -66098,9 +66092,7 @@
</node>
<node CREATED="1521788638623" ID="ID_16016457" MODIFIED="1521788679409">
<richcontent TYPE="NODE"><html>
<head>
</head>
<head/>
<body>
<p>
essentiell ist, im Mutex-gesch&#252;tzten Bereich
@ -66120,9 +66112,7 @@
<node CREATED="1521788825341" ID="ID_984179535" MODIFIED="1521788870307" TEXT="memory_order_relaxed w&#xe4;re korrekt"/>
<node CREATED="1521788871702" ID="ID_1445815040" MODIFIED="1521789034029" TEXT="aber seq_cst ist tolerierbar und lesbarer">
<richcontent TYPE="NOTE"><html>
<head>
</head>
<head/>
<body>
<p>
warum?
@ -66151,9 +66141,7 @@
</node>
<node CREATED="1521789364195" ID="ID_603083662" MODIFIED="1521789452318" TEXT="die Antwort ist eindeutig &quot;Nein&quot;">
<richcontent TYPE="NOTE"><html>
<head>
</head>
<head/>
<body>
<p>
es gilt schlichtweg als Architektur-Fehler, wenn hier eine Kollision geschiet.
@ -66171,9 +66159,7 @@
<node CREATED="1521789511870" ID="ID_553276693" MODIFIED="1521789526160" TEXT="Konsistenz-check und Service-Start im Mutex sind ausreichend"/>
<node CREATED="1521789611377" ID="ID_923887770" MODIFIED="1521789676331" TEXT="aber der Service mu&#xdf; per memory_order_release ver&#xf6;ffentlicht werden">
<richcontent TYPE="NOTE"><html>
<head>
</head>
<head/>
<body>
<p>
...denn sonst k&#246;nnte genau das gleiche Desaster passieren,
@ -66196,9 +66182,7 @@
<node CREATED="1521790108228" ID="ID_1075157743" MODIFIED="1521790114983" TEXT="das ist wiederum eine Architektur-Frage"/>
<node CREATED="1521790115851" ID="ID_1077549103" MODIFIED="1521790219873" TEXT="theoretisch besteht er sehr wohl">
<richcontent TYPE="NOTE"><html>
<head>
</head>
<head/>
<body>
<p>
...d.h. das ganze Locking und die memory-order sch&#252;tzt uns hier <b>&#252;berhaupt nicht</b>!
@ -66217,9 +66201,7 @@
</node>
<node CREATED="1521790222356" ID="ID_168283882" MODIFIED="1521790445457">
<richcontent TYPE="NODE"><html>
<head>
</head>
<head/>
<body>
<p>
unsere Architektur stellt aber sicher,
@ -66230,9 +66212,7 @@
</body>
</html></richcontent>
<richcontent TYPE="NOTE"><html>
<head>
</head>
<head/>
<body>
<p>
warum?
@ -66264,9 +66244,7 @@
<node CREATED="1521790515308" ID="ID_1260618160" MODIFIED="1521790538596" TEXT="wenn der Subsystem-Manager den Applikations-Shutdown signalisiert"/>
<node CREATED="1521790557030" ID="ID_663628696" MODIFIED="1521790571891">
<richcontent TYPE="NODE"><html>
<head>
</head>
<head/>
<body>
<p>
hier ist ein <b>Segfault</b>&#160;m&#246;glich
@ -66292,9 +66270,7 @@
<icon BUILTIN="button_ok"/>
<node CREATED="1521791686994" ID="ID_1750734364" MODIFIED="1521791753975" TEXT="Erwartetes Ergebnis: wird nur geringf&#xfc;gig langsamer">
<richcontent TYPE="NOTE"><html>
<head>
</head>
<head/>
<body>
<p>
...denn wir sind auf x86_64 -- und diese Plattform ist per default <i>fast &#252;berall</i>&#160;sequentially coherent
@ -66349,9 +66325,7 @@
<node CREATED="1522113128835" ID="ID_166213716" MODIFIED="1522113152107" TEXT="kaskadierenden Zugriff als Factory"/>
<node CREATED="1522113152999" ID="ID_1443678098" MODIFIED="1522113288917" TEXT="Instantiierungs-Check kann entfallen">
<richcontent TYPE="NOTE"><html>
<head>
</head>
<head/>
<body>
<p>
...man <i>k&#246;nnte</i>&#160;ihn aber genausogut auch machen.
@ -66378,9 +66352,7 @@
<node CREATED="1522113449575" ID="ID_644735948" MODIFIED="1522113456734" TEXT="acquire Lock&lt;SUB&gt;"/>
<node CREATED="1522112395280" ID="ID_995036578" MODIFIED="1522113339076" TEXT="Instantiierungs-Check">
<richcontent TYPE="NOTE"><html>
<head>
</head>
<head/>
<body>
<p>
hier notwendig, weil wir eine neue Factory-Funktion ablegen.
@ -66433,9 +66405,7 @@
<icon BUILTIN="button_ok"/>
<node CREATED="1522387798572" HGAP="35" ID="ID_1522844249" MODIFIED="1522387935592" TEXT="war ein &#xfc;briggebliebener Destruktor in einem Mock" VSHIFT="12">
<richcontent TYPE="NOTE"><html>
<head>
</head>
<head/>
<body>
<p>
zwar wird beim L&#246;schen des Mock
@ -66458,9 +66428,7 @@
</node>
<node COLOR="#338800" CREATED="1522387936585" ID="ID_1922190351" MODIFIED="1522388778471" TEXT="es w&#xe4;re besser, wenn Factory &#xfc;berhaupt nicht assignable w&#xe4;re">
<richcontent TYPE="NOTE"><html>
<head>
</head>
<head/>
<body>
<p>
...und man stattdessen explizit eine <i>gef&#228;hrliche Funktion</i>&#160; aufrufen mu&#223;
@ -66565,9 +66533,7 @@
</node>
<node CREATED="1525193011555" ID="ID_822581772" MODIFIED="1525193186771" TEXT="ungef&#xe4;hrlich, aber nicht sauber">
<richcontent TYPE="NOTE"><html>
<head>
</head>
<head/>
<body>
<p>
...da es sich ja nur um die <i>Factory</i>&#160;handelt,
@ -66619,9 +66585,7 @@
<node CREATED="1521790858701" ID="ID_1382870211" MODIFIED="1521790870103" TEXT="Belange die hier nicht behandelt werden"/>
<node CREATED="1521790870898" ID="ID_662113030" MODIFIED="1521790886784">
<richcontent TYPE="NODE"><html>
<head>
</head>
<head/>
<body>
<p>
Konsequenz: das ist <b>keine Library-Implementierung</b>
@ -66724,9 +66688,7 @@
</node>
<node COLOR="#338800" CREATED="1522033106576" ID="ID_278956866" MODIFIED="1525124215463" TEXT="weitere Tests...">
<richcontent TYPE="NOTE"><html>
<head>
</head>
<head/>
<body>
<p>
die von der alten DependencyFactory abh&#228;ngen
@ -66791,9 +66753,7 @@
<icon BUILTIN="button_cancel"/>
<node CREATED="1522388820751" ID="ID_721931573" MODIFIED="1522388962542" TEXT="ist doch ehr ein irref&#xfc;hrender Name">
<richcontent TYPE="NOTE"><html>
<head>
</head>
<head/>
<body>
<p>
...wenn man n&#228;mlicht Lumiera's L&#246;sung nicht genau kennt,
@ -66812,9 +66772,7 @@
</node>
<node COLOR="#338800" CREATED="1522388857786" ID="ID_1151074517" MODIFIED="1522389011363">
<richcontent TYPE="NODE"><html>
<head>
</head>
<head/>
<body>
<p>
<b>DependencyFactory</b>&#160;ist viel besser geeignet
@ -66937,9 +66895,7 @@
<node CREATED="1522638830367" ID="ID_792298822" MODIFIED="1522638835178" TEXT="PlayService"/>
<node CREATED="1522638837022" ID="ID_362446492" MODIFIED="1522638876050">
<richcontent TYPE="NODE"><html>
<head>
</head>
<head/>
<body>
<p>
den habe ich <b>nicht mehr</b>&#160;&#252;ber das Interface-System gemappt
@ -66947,9 +66903,7 @@
</body>
</html></richcontent>
<richcontent TYPE="NOTE"><html>
<head>
</head>
<head/>
<body>
<p>
weil mir das ganze C-gefrickel zu bl&#246;d geworden ist.
@ -66995,9 +66949,7 @@
<icon BUILTIN="info"/>
<node CREATED="1522640064852" ID="ID_1332360368" MODIFIED="1522640101606">
<richcontent TYPE="NODE"><html>
<head>
</head>
<head/>
<body>
<p>
der Interface-<i>Anbieter</i>&#160;implementiert einen konkreten Proxy
@ -67094,9 +67046,7 @@
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#0e0099" CREATED="1522649812255" FOLDED="true" ID="ID_624985973" MODIFIED="1561827469161" STYLE="fork">
<richcontent TYPE="NODE"><html>
<head>
</head>
<head/>
<body>
<p>
Modus der Definition
@ -67126,9 +67076,7 @@
</node>
<node CREATED="1522729001386" ID="ID_242747417" MODIFIED="1522733826161" TEXT="ist mir bisher nicht gelungen...">
<richcontent TYPE="NOTE"><html>
<head>
</head>
<head/>
<body>
<p>
...wir m&#252;ssen immer, f&#252;r jeden Proxy
@ -67179,9 +67127,7 @@
<node CREATED="1522698022005" ID="ID_518407557" MODIFIED="1522698033855" TEXT="m&#xfc;ssen jeweils explizit von einem Template instantiiert werden"/>
<node CREATED="1522698034563" ID="ID_1793485859" MODIFIED="1522698091426">
<richcontent TYPE="NODE"><html>
<head>
</head>
<head/>
<body>
<p>
brauchen eigenen Zugriffs-Mechanismus auf ein <i>weiteres</i>&#160;Handle-Objekt
@ -67224,9 +67170,7 @@
<node CREATED="1522704033950" ID="ID_1313113320" MODIFIED="1522704041464" TEXT="mu&#xdf; virtuellen dtor haben"/>
<node CREATED="1522704194912" ID="ID_317190411" MODIFIED="1522704592454" TEXT="Problem: konkrete Proxy-Klasse mu&#xdf; in ServiceInstance::activate">
<richcontent TYPE="NOTE"><html>
<head>
</head>
<head/>
<body>
<p>
...oder sogar den ctor, das ist egal --
@ -67289,9 +67233,7 @@
</node>
<node CREATED="1522733542453" ID="ID_239191861" MODIFIED="1522733895572" TEXT="Proxy-Instantiierung triggert nicht InstanceHandle">
<richcontent TYPE="NOTE"><html>
<head>
</head>
<head/>
<body>
<p>
obwohl es das sollte.
@ -67323,9 +67265,7 @@
</node>
<node COLOR="#338800" CREATED="1522733866272" ID="ID_762156149" MODIFIED="1522734019934" TEXT="aktuelle L&#xf6;sung erscheint ad&#xe4;quat">
<richcontent TYPE="NOTE"><html>
<head>
</head>
<head/>
<body>
<p>
sie ist zwar nicht sch&#246;n -- aber was ist an einem Interface-Binding schon &quot;sch&#246;n&quot;?
@ -67355,9 +67295,7 @@
<node CREATED="1522649583511" ID="ID_709785832" MODIFIED="1522649600993" TEXT="Instancehandle mu&#xdf; jetzt die Proxy-Implementierung sehen"/>
<node CREATED="1522649601916" FOLDED="true" ID="ID_114261035" MODIFIED="1561827483842" TEXT="die beiden Seiten des Bindings sind damit fest verkoppelt">
<richcontent TYPE="NOTE"><html>
<head>
</head>
<head/>
<body>
<p>
das ist ein konzeptionelles Problem.
@ -67473,9 +67411,7 @@
</node>
<node COLOR="#338800" CREATED="1522557456894" ID="ID_627428103" MODIFIED="1522557498811">
<richcontent TYPE="NODE"><html>
<head>
</head>
<head/>
<body>
<p>
...und lib::Depend so umarrangiert,
@ -67511,9 +67447,7 @@
</node>
<node CREATED="1522557152331" ID="ID_1546957816" MODIFIED="1522557415704">
<richcontent TYPE="NODE"><html>
<head>
</head>
<head/>
<body>
<p>
so wie das Advice-System geschrieben ist,
@ -67524,9 +67458,7 @@
</body>
</html></richcontent>
<richcontent TYPE="NOTE"><html>
<head>
</head>
<head/>
<body>
<p>
denn grunds&#228;tzlich ist das ganze Advice-System bewu&#223;t &quot;billig&quot; implementiert;
@ -67657,9 +67589,7 @@
<node CREATED="1522018623861" ID="ID_1923633930" MODIFIED="1522018631776" TEXT="aber lebt bereits im globalen Speicher"/>
<node CREATED="1522630364690" ID="ID_1442746804" MODIFIED="1522630460073" TEXT="ABER: LifecycleRegistry mu&#xdf; Meyer&apos;s Singleton bleiben">
<richcontent TYPE="NOTE"><html>
<head>
</head>
<head/>
<body>
<p>
...weil Nobug-Init ON_BASIC_INIT braucht,
@ -67692,9 +67622,7 @@
</node>
<node CREATED="1521433748650" ID="ID_1831581678" MODIFIED="1522557016686">
<richcontent TYPE="NODE"><html>
<head>
</head>
<head/>
<body>
<p>
und heute w&#252;rde ich den Code <i>so</i>&#160;nicht mehr schreiben
@ -67705,9 +67633,7 @@
</node>
<node COLOR="#734e81" CREATED="1522451891933" ID="ID_695551107" MODIFIED="1522558416047" TEXT="...und er ist jetzt sogar kamputt">
<richcontent TYPE="NOTE"><html>
<head>
</head>
<head/>
<body>
<p>
genauer:
@ -67766,9 +67692,7 @@
</node>
<node COLOR="#338800" CREATED="1522597569180" ID="ID_602663488" MODIFIED="1522597663372" TEXT="naja... nicht sch&#xf6;n aber OK">
<richcontent TYPE="NOTE"><html>
<head>
</head>
<head/>
<body>
<p>
...es ruft sich selbst rekursiv auf, via Depend&lt;AdviceSystem&gt;
@ -67779,9 +67703,7 @@
</node>
<node CREATED="1522597604367" ID="ID_1036644185" MODIFIED="1522597629034" TEXT="Alternative w&#xe4;re aufwendig">
<richcontent TYPE="NOTE"><html>
<head>
</head>
<head/>
<body>
<p>
...n&#228;mlich eine ganz spezielle, dedzierte Aufr&#228;um-Routine schreiben
@ -67852,9 +67774,7 @@
<node CREATED="1563022290903" ID="ID_1738614427" MODIFIED="1563022298518" TEXT="Logik/Informations-Technik">
<node CREATED="1563022305566" ID="ID_1375417763" MODIFIED="1563028982708">
<richcontent TYPE="NODE"><html>
<head>
</head>
<head/>
<body>
<p>
das &#171;<b>Regel</b>-System&#187;
@ -67867,9 +67787,7 @@
</node>
<node CREATED="1563022311632" ID="ID_1353415142" MODIFIED="1563028970867">
<richcontent TYPE="NODE"><html>
<head>
</head>
<head/>
<body>
<p>
das &#171;<b>Advice</b>-System&#187;
@ -67880,9 +67798,7 @@
<node CREATED="1563022369373" ID="ID_201969563" MODIFIED="1563022372857" TEXT="von 2010"/>
<node CREATED="1563022373578" ID="ID_1190645627" MODIFIED="1576282357966" TEXT="immer noch experimentell">
<richcontent TYPE="NOTE"><html>
<head>
</head>
<head/>
<body>
<p>
auch in 2019...
@ -67900,9 +67816,7 @@
</node>
<node CREATED="1563022416308" ID="ID_1045079282" MODIFIED="1563022427519">
<richcontent TYPE="NODE"><html>
<head>
</head>
<head/>
<body>
<p>
ein <b>Whiteboard-System</b>
@ -67942,9 +67856,7 @@
<node CREATED="1563023275863" ID="ID_309537458" MODIFIED="1563023285142" TEXT="ja: das Advice-System ist inh&#xe4;rent stateful"/>
<node CREATED="1563023286238" ID="ID_1249260795" MODIFIED="1563023304193" TEXT="man mu&#xdf; es ja nicht nutzen">
<richcontent TYPE="NOTE"><html>
<head>
</head>
<head/>
<body>
<p>
....denn es gibt die default-L&#246;sung
@ -67967,9 +67879,7 @@
<node CREATED="1563023774448" ID="ID_139010445" MODIFIED="1563023779163" TEXT="bisher reiner Platzhalter"/>
<node CREATED="1563023779807" ID="ID_871541450" MODIFIED="1563028909666" TEXT="umfunktionieren">
<richcontent TYPE="NOTE"><html>
<head>
</head>
<head/>
<body>
<p>
im Sinne des Erfinders...
@ -68052,9 +67962,7 @@
<node CREATED="1522519009127" ID="ID_989945730" MODIFIED="1522519024864" TEXT="einfache Statics &quot;sollten&quot; lokal funktionieren"/>
<node CREATED="1522519025972" ID="ID_714585131" MODIFIED="1522519142036" TEXT="das Problem ist, wenn man sich auf externe Statics abst&#xfc;tzt">
<richcontent TYPE="NOTE"><html>
<head>
</head>
<head/>
<body>
<p>
...und das kann ziemlich indirekt passieren.
@ -68070,9 +67978,7 @@
<node CREATED="1522541262254" ID="ID_1609622536" MODIFIED="1522541279648" TEXT="genauer: wenn man sich auf on-demand (local) statics abst&#xfc;tzt"/>
<node CREATED="1522541280331" ID="ID_296029834" MODIFIED="1522541319853">
<richcontent TYPE="NODE"><html>
<head>
</head>
<head/>
<body>
<p>
C++ h&#228;llt die Erzeugungs/Zerst&#246;rungs-Reihenfolge <b>exakt</b>&#160;ein
@ -68082,9 +67988,7 @@
</node>
<node CREATED="1522541321043" ID="ID_966332775" MODIFIED="1522541356223">
<richcontent TYPE="NODE"><html>
<head>
</head>
<head/>
<body>
<p>
d.h. wenn das local static <i>sp&#228;ter erzeugt</i>&#160;wird, wird es <b>vor</b>&#160; dem Hauptobjekt zerst&#246;rt
@ -68103,9 +68007,7 @@
</node>
<node CREATED="1522547285877" ID="ID_1921668956" MODIFIED="1525124102526">
<richcontent TYPE="NODE"><html>
<head>
</head>
<head/>
<body>
<p>
Statische Initialisierung funktioniert <b>pr&#228;zise</b>, korrekt und <b>zuverl&#228;ssig</b>
@ -68116,9 +68018,7 @@
</node>
<node CREATED="1522547330726" ID="ID_994306275" MODIFIED="1522547749968" TEXT="C++ stellt das eigens sicher -- man mu&#xdf; es nur erst mal verstehen">
<richcontent TYPE="NOTE"><html>
<head>
</head>
<head/>
<body>
<p>
Der Aufruf von Konstrukturen statischer Objekte konstituiert eine (dynamische) Reihenfolge.
@ -68195,9 +68095,7 @@
<node CREATED="1538939507425" ID="ID_389830085" MODIFIED="1557498707236" TEXT="new Session">
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1477784813895" ID="ID_1478381189" MODIFIED="1557498707236">
<richcontent TYPE="NODE"><html>
<head>
</head>
<head/>
<body>
<p>
<u>Aufgabe</u>: <i><font color="#821b58" size="4">produce dummy content</font></i>
@ -68275,9 +68173,7 @@
<node CREATED="1534002106999" ID="ID_354946108" MODIFIED="1557498707237" TEXT="GUI ist aber noch nicht gebaut"/>
<node CREATED="1534002113086" ID="ID_1894075831" MODIFIED="1576282357965" TEXT="Audio und Video werden eigens unterschieden">
<richcontent TYPE="NOTE"><html>
<head>
</head>
<head/>
<body>
<p>
...obwohl die betreffenden Assets in die Kategorie &quot;Medien&quot; fallen,
@ -68298,9 +68194,7 @@
<node CREATED="1534002202098" ID="ID_1411648485" MODIFIED="1557498707237" TEXT="diese Auto-Regisierung"/>
<node CREATED="1534002225888" ID="ID_138566211" MODIFIED="1576282357965" TEXT="smart-Ptr als Handle nicht immer sinnvoll">
<richcontent TYPE="NOTE"><html>
<head>
</head>
<head/>
<body>
<p>
...n&#228;mlich genau <i>nicht</i>&#160;f&#252;r alle Assets,
@ -77959,13 +77853,13 @@ Date:&#160;&#160;&#160;Thu Apr 20 18:53:17 2023 +0200<br/>
<icon BUILTIN="flag-yellow"/>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1690068444705" ID="ID_1936713026" MODIFIED="1690068449569" TEXT="stellt Setup bereit">
<icon BUILTIN="flag-yellow"/>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1690068450704" ID="ID_716451982" MODIFIED="1690068459871" TEXT="Dependency-Injection">
<icon BUILTIN="flag-yellow"/>
<node COLOR="#338800" CREATED="1690068450704" ID="ID_716451982" MODIFIED="1693431638406" TEXT="Dependency-Injection">
<icon BUILTIN="button_ok"/>
<node CREATED="1690068675474" ID="ID_834417186" MODIFIED="1690068685091" TEXT="reine Konstruktor-DI gen&#xfc;gt">
<icon BUILTIN="yes"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1690068461078" ID="ID_1000341702" MODIFIED="1690068687201" TEXT="BlockFlow">
<icon BUILTIN="flag-yellow"/>
<node COLOR="#338800" CREATED="1690068461078" ID="ID_1000341702" MODIFIED="1693431627892" TEXT="BlockFlow">
<icon BUILTIN="button_ok"/>
</node>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1690068469725" ID="ID_1098945451" MODIFIED="1690068479132" TEXT="&#x3bb;-Bindings">
@ -78066,8 +77960,8 @@ Date:&#160;&#160;&#160;Thu Apr 20 18:53:17 2023 +0200<br/>
<node CREATED="1693317661471" ID="ID_709533668" MODIFIED="1693317672145" TEXT="es wird stets der n&#xe4;chst greifbare Parameter verwendet"/>
</node>
</node>
<node BACKGROUND_COLOR="#eef0c5" COLOR="#990000" CREATED="1693345571268" ID="ID_1280713523" MODIFIED="1693345593849" TEXT="Ausf&#xfc;hrung einer Kette">
<icon BUILTIN="pencil"/>
<node COLOR="#338800" CREATED="1693345571268" ID="ID_1280713523" MODIFIED="1693431656003" TEXT="Ausf&#xfc;hrung einer Kette">
<icon BUILTIN="button_ok"/>
<node CREATED="1693345578139" ID="ID_1743236034" MODIFIED="1693345586916" TEXT="realisiert in Activity-Lang">
<icon BUILTIN="info"/>
</node>
@ -78083,9 +77977,7 @@ Date:&#160;&#160;&#160;Thu Apr 20 18:53:17 2023 +0200<br/>
</node>
<node CREATED="1693345633335" ID="ID_184362197" MODIFIED="1693345658139">
<richcontent TYPE="NODE"><html>
<head>
</head>
<head/>
<body>
<p>
Verwaltung des <b>GroomingToken</b>
@ -78096,14 +77988,14 @@ Date:&#160;&#160;&#160;Thu Apr 20 18:53:17 2023 +0200<br/>
<icon BUILTIN="forward"/>
</node>
<node CREATED="1693345687956" ID="ID_885356569" MODIFIED="1693345702766" TEXT="post() &#x2261; Eingangsverzweigung">
<node CREATED="1693345771969" ID="ID_120381746" MODIFIED="1693345804830" TEXT="GroomingToken erlangt &#x27f9; Einstieg dispatch()"/>
<node CREATED="1693345805685" ID="ID_941490506" MODIFIED="1693345824878" TEXT="sonst &#x27f9; Dispatch-Queue"/>
<node COLOR="#435e98" CREATED="1693345771969" ID="ID_120381746" MODIFIED="1693431670621" TEXT="GroomingToken erlangt &#x27f9; Einstieg dispatch()"/>
<node COLOR="#435e98" CREATED="1693345805685" ID="ID_941490506" MODIFIED="1693431671714" TEXT="sonst &#x27f9; Dispatch-Queue"/>
</node>
</node>
</node>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1690068830605" ID="ID_330404913" MODIFIED="1692567498691" TEXT="Activation">
<icon BUILTIN="flag-yellow"/>
<node COLOR="#338800" CREATED="1690068830605" ID="ID_330404913" MODIFIED="1693431707720" TEXT="Activation">
<icon BUILTIN="button_ok"/>
<node CREATED="1690068838900" ID="ID_1597056190" MODIFIED="1690068897095" TEXT="Argumente">
<icon BUILTIN="info"/>
<node CREATED="1690068867288" ID="ID_1499789702" MODIFIED="1690068885342" TEXT="(*this Activity)"/>
@ -80007,16 +79899,19 @@ Date:&#160;&#160;&#160;Thu Apr 20 18:53:17 2023 +0200<br/>
</node>
</node>
</node>
<node BACKGROUND_COLOR="#eef0c5" COLOR="#990000" CREATED="1693426627134" ID="ID_468206154" MODIFIED="1693426685918" TEXT="dispatchChain">
<icon BUILTIN="pencil"/>
<node COLOR="#338800" CREATED="1693426627134" ID="ID_468206154" MODIFIED="1693431591742" TEXT="dispatchChain">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1693426634246" ID="ID_1750182879" MODIFIED="1693426683358" TEXT="testet die Ausf&#xfc;hrungs-Funktion in ActivityLang">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1693426656634" ID="ID_965537081" MODIFIED="1693426681870" TEXT="verwendet eine k&#xfc;nstliche, direkt verdrahtete Kette">
<icon BUILTIN="button_ok"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1693426668288" ID="ID_1618574447" MODIFIED="1693426678575" TEXT="Abbruch bei SKIP">
<icon BUILTIN="flag-yellow"/>
<node COLOR="#338800" CREATED="1693426668288" ID="ID_1618574447" MODIFIED="1693431580213" TEXT="Abbruch bei SKIP">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1693431584333" ID="ID_1106229666" MODIFIED="1693431590469" TEXT="Zustellung einer Notification">
<icon BUILTIN="button_ok"/>
</node>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1689200553782" ID="ID_472609287" MODIFIED="1689200578260" TEXT="scenario_RenderJob">
@ -80024,6 +79919,32 @@ Date:&#160;&#160;&#160;Thu Apr 20 18:53:17 2023 +0200<br/>
<node COLOR="#338800" CREATED="1693323299522" ID="ID_1282022548" MODIFIED="1693323306513" TEXT="Grundstruktur verdrahten">
<icon BUILTIN="button_ok"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1693432027554" ID="ID_1114094454" MODIFIED="1693432038626" TEXT="alle Extras zuschalten">
<icon BUILTIN="flag-yellow"/>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1693432039914" ID="ID_99848990" MODIFIED="1693432176338" TEXT="Aufschalten einer Notification">
<icon BUILTIN="flag-yellow"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1693432052935" ID="ID_877534705" MODIFIED="1693432176338" TEXT="Einschleifen einer requireDirectActivation()">
<icon BUILTIN="flag-yellow"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1693432167704" ID="ID_1355575152" MODIFIED="1693432176339" TEXT="Anh&#xe4;ngen einer Folge-Notification">
<icon BUILTIN="flag-yellow"/>
</node>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1693431821078" ID="ID_783748219" MODIFIED="1693431841260" TEXT="sinnvolle Instrumentierung (um Ausf&#xfc;hrungssequenz zeigen zu k&#xf6;nnen)">
<icon BUILTIN="flag-yellow"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1693431842683" ID="ID_713697304" MODIFIED="1693431894287">
<richcontent TYPE="NODE"><html>
<head/>
<body>
<p>
gesamte Kette ausf&#252;hren per <font face="Monospaced" color="#262bbb">ActivityLang::dispatchChain()</font>
</p>
</body>
</html></richcontent>
<icon BUILTIN="flag-yellow"/>
</node>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1689200553782" ID="ID_1346681233" MODIFIED="1689200586861" TEXT="scenario_IOJob">
<icon BUILTIN="flag-yellow"/>