Scheduler: implement automatic clean-up of outdated entries

Hooked into the existing processing logic at Layer-2,
and relying on the information functions of Layer-1
This commit is contained in:
Fischlurch 2023-11-03 00:05:45 +01:00
parent b1e0ce1a79
commit b49de0738d
5 changed files with 102 additions and 86 deletions

View file

@ -116,7 +116,7 @@ namespace idi {
}
/** designation of an distinct object instance
* @par obj pointer to the memory location of the object
* @param obj pointer to the memory location of the object
* @return a notation "typename.hash", where the hash is given
* as 4 hex digits derived from the memory location
*/

View file

@ -54,6 +54,7 @@
** In typical usage, Layer-2 of the Scheduler will perform the following operations
** - accept and enqueue new task descriptions (as chain-of-Activities)
** - retrieve the most urgent entry from Layer-1
** - silently dispose of any outdated entries
** - use the [Activity Language environment](\ref ActivityLang) to _perform_
** the retrieved chain within some worker thread; this is called _dispatch_
** The central cross road of this implementation is the #postDispatch function.
@ -171,7 +172,11 @@ namespace gear {
}
/** look into the queues and possibly retrieve work due by now */
/**
* Look into the queues and possibly retrieve work due by now.
* @note transparently discards any outdated entries,
* but blocks if a compulsory entry becomes outdated.
*/
Activity*
findWork (SchedulerInvocation& layer1, Time now)
{
@ -179,7 +184,9 @@ namespace gear {
or acquireGoomingToken())
{
layer1.feedPrioritisation();
if (layer1.isDue (now))
while (layer1.isOutdated (now) and not layer1.isOutOfTime(now))
layer1.pullHead();
if (layer1.isDue (now) and not layer1.isOutOfTime(now))
return layer1.pullHead();
}
return nullptr;

View file

@ -33,6 +33,22 @@
** use of a _Priority Queue_ which however must be concurrency protected.
** The Layer-2 thus assures that _mutating operations_ are performed
** exclusively from a special »grooming mode« (management mode).
** @par Data maintained in Queue Entries
** - the [Activity itself](\ref SchedulerInvocation::ActOrder::activity)
** is allocated externally an only referred by pointer; however, this
** pointer must not be dereferenced after the *deadline* passed.
** - an entry can be scheduled after reaching the
** [start time](\ref SchedulerInvocation::ActOrder::waterlevel)
** - the [deadline](\ref SchedulerInvocation::ActOrder::deathtime)
** marks latest point in time where starting is still allowed
** - entries can be tagged with a distinctive
** [»manifestation ID«](\ref SchedulerInvocation::ActOrder::manifestationID),
** which allows to filter out complete _families_ of already planned entries
** - as a safety measure, an entry can be marked as
** [compulsory](\ref SchedulerInvocation::ActOrder::isCompulsory).
** In regular operation, this has no effect, but an *emergency state*
** is triggered in the SchedulerService, should such an entry
** [miss it's deadline](\ref SchedulerInvocation::isOutOfTime())
** @see SchedulerCommutator::findWork()
** @see SchedulerCommutator::postDispatch()
** @see SchedulerInvocation_test

View file

@ -228,6 +228,7 @@ namespace test {
})
.threadID("grooming-hog"));
sleep_for (500us);
ENSURE (groomingHog_);
}
/** @internal stop the background thread to unblock the GrooingToken */
@ -369,7 +370,7 @@ namespace test {
Time t4{40,0}; Activity a4{4u,4u};
queue.instruct (a1, t1, t4, ManifestationID{5});
queue.instruct (a2, t2, t3);
queue.instruct (a2, t2, t2);
queue.instruct (a3, t3, t3, ManifestationID{23}, true);
queue.instruct (a4, t4, t4);
queue.activate(ManifestationID{5});
@ -388,13 +389,15 @@ namespace test {
CHECK (not sched.findWork(queue, t1));
CHECK (t2 == queue.headTime());
CHECK (isSameObject (a2, *queue.peekHead()));
CHECK (not queue.isMissed (t2));
CHECK (not queue.isOutdated(t2));
CHECK ( queue.isMissed (t3));
CHECK ( queue.isOutdated(t3));
CHECK (not sched.findWork(queue, t2));
CHECK (not sched.findWork(queue, t2+Time{5,0}));
CHECK (t3 == queue.headTime());
CHECK (isSameObject (a3, *queue.peekHead()));
CHECK (not queue.isMissed (t3));
CHECK (not queue.isOutdated (t3));
CHECK (not queue.isOutOfTime(t3));
@ -411,7 +414,7 @@ namespace test {
CHECK ( queue.isOutdated (t4));
CHECK ( queue.isOutOfTime(t4));
queue.drop(ManifestationID{5});
queue.drop(ManifestationID{23});
CHECK (t3 == queue.headTime());
CHECK (not queue.isMissed (t3));
CHECK ( queue.isOutdated (t3));

View file

@ -71355,9 +71355,7 @@
<node CREATED="1698873084866" ID="ID_1456507013" MODIFIED="1698873098700" TEXT="fliegende &#xc4;nderungen erm&#xf6;glichen">
<node CREATED="1698872727530" ID="ID_955918033" MODIFIED="1698873138080" TEXT="Manifestation-ID mitzuf&#xfc;hren">
<richcontent TYPE="NOTE"><html>
<head>
</head>
<head/>
<body>
<p>
um fliegende &#196;nderungen durchf&#252;hren zu k&#246;nnen
@ -72684,9 +72682,7 @@ Date:&#160;&#160;&#160;Thu Apr 20 18:53:17 2023 +0200<br/>
<icon BUILTIN="yes"/>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1698873306853" ID="ID_155141069" MODIFIED="1698873879301" TEXT="ManifestationID f&#xfc;r &#xc4;nderungen verankern">
<richcontent TYPE="NOTE"><html>
<head>
</head>
<head/>
<body>
<p>
...dient als Bezugspunkt um im Scheduler einen &#187;fliegenden Wechsel&#171; der unterliegenden Definition zu erm&#246;glichen
@ -81990,9 +81986,7 @@ Date:&#160;&#160;&#160;Thu Apr 20 18:53:17 2023 +0200<br/>
<node CREATED="1698937116771" ID="ID_231850405" MODIFIED="1698937120938" TEXT="verbessert Verst&#xe4;ndlichkeit"/>
<node BACKGROUND_COLOR="#e1d6c7" COLOR="#463227" CREATED="1698945910380" ID="ID_1122976270" MODIFIED="1698946107167" TEXT="Dom&#xe4;nen-Struktur zeigt sich">
<richcontent TYPE="NOTE"><html>
<head>
</head>
<head/>
<body>
<p>
...und das hatte ich <i>an der Stelle </i>gar nicht erwartet: die tats&#228;chlichen Benutzer eines &#187;Scheduler-Service&#171; gehen nach wenigen festen Schemata vor und m&#252;ssen &#252;berhaupt nichts von einer &#187;Activity-Language&#171; wissen
@ -84036,19 +84030,19 @@ Date:&#160;&#160;&#160;Thu Apr 20 18:53:17 2023 +0200<br/>
</node>
<node BACKGROUND_COLOR="#fdfdcf" COLOR="#ff0000" CREATED="1698532686214" ID="ID_272237675" MODIFIED="1698532696468" TEXT="Deadlines und Selbstregulierung">
<icon BUILTIN="flag-pink"/>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1698532697859" ID="ID_1071571068" MODIFIED="1698532724472" TEXT="Deadlines in das System integrieren">
<icon BUILTIN="flag-yellow"/>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1698532716488" ID="ID_337384722" MODIFIED="1698532910109" TEXT="in die Priority-Queue">
<arrowlink COLOR="#ef4776" DESTINATION="ID_136482882" ENDARROW="Default" ENDINCLINATION="69;-169;" ID="Arrow_ID_63115321" STARTARROW="None" STARTINCLINATION="-285;-30;"/>
<icon BUILTIN="flag-yellow"/>
<node BACKGROUND_COLOR="#eef0c5" COLOR="#990000" CREATED="1698532697859" ID="ID_1071571068" MODIFIED="1698970264358" TEXT="Deadlines in das System integrieren">
<icon BUILTIN="pencil"/>
<node COLOR="#338800" CREATED="1698532716488" ID="ID_337384722" MODIFIED="1698970259804" TEXT="in die Priority-Queue">
<arrowlink COLOR="#47a6ef" DESTINATION="ID_136482882" ENDARROW="Default" ENDINCLINATION="69;-169;" ID="Arrow_ID_63115321" STARTARROW="None" STARTINCLINATION="-285;-30;"/>
<icon BUILTIN="button_ok"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1698532728431" ID="ID_233989928" MODIFIED="1698532974876" TEXT="mit Tick und Allokation integrieren">
<arrowlink COLOR="#3364f0" DESTINATION="ID_1847975334" ENDARROW="Default" ENDINCLINATION="-449;34;" ID="Arrow_ID_1046093983" STARTARROW="None" STARTINCLINATION="222;-17;"/>
<icon BUILTIN="flag-yellow"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1698532793030" ID="ID_696019318" MODIFIED="1698533136478" TEXT="verbindliche Tasks erm&#xf6;glichen">
<arrowlink COLOR="#ee3a6b" DESTINATION="ID_1475771662" ENDARROW="Default" ENDINCLINATION="-1121;-88;" ID="Arrow_ID_211999245" STARTARROW="None" STARTINCLINATION="1410;120;"/>
<icon BUILTIN="flag-yellow"/>
<node COLOR="#338800" CREATED="1698532793030" ID="ID_696019318" MODIFIED="1698970294088" TEXT="verbindliche Tasks erm&#xf6;glichen">
<arrowlink COLOR="#3f3aee" DESTINATION="ID_1475771662" ENDARROW="Default" ENDINCLINATION="-1121;-88;" ID="Arrow_ID_211999245" STARTARROW="None" STARTINCLINATION="1410;120;"/>
<icon BUILTIN="button_ok"/>
<node COLOR="#435e98" CREATED="1698935602937" HGAP="100" ID="ID_1382222698" MODIFIED="1698935623608" TEXT="&#xbb;compulsory&#xab;" VSHIFT="2">
<icon BUILTIN="yes"/>
</node>
@ -84087,7 +84081,7 @@ Date:&#160;&#160;&#160;Thu Apr 20 18:53:17 2023 +0200<br/>
</node>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1697982818498" ID="ID_136482882" MODIFIED="1698532905413" TEXT="Deadline ber&#xfc;cksichtigen ">
<linktarget COLOR="#ef4776" DESTINATION="ID_136482882" ENDARROW="Default" ENDINCLINATION="69;-169;" ID="Arrow_ID_63115321" SOURCE="ID_337384722" STARTARROW="None" STARTINCLINATION="-285;-30;"/>
<linktarget COLOR="#47a6ef" DESTINATION="ID_136482882" ENDARROW="Default" ENDINCLINATION="69;-169;" ID="Arrow_ID_63115321" SOURCE="ID_337384722" STARTARROW="None" STARTINCLINATION="-285;-30;"/>
<icon BUILTIN="flag-yellow"/>
<node CREATED="1697982844409" ID="ID_1374530988" MODIFIED="1697982854041" TEXT="im Datenrecord mitf&#xfc;hren"/>
<node BACKGROUND_COLOR="#f8f1cb" COLOR="#a50125" CREATED="1697982854605" ID="ID_651171432" MODIFIED="1697982875378" TEXT="Zusicherung: kein Zugriff auf verfallene Activities">
@ -84096,9 +84090,9 @@ Date:&#160;&#160;&#160;Thu Apr 20 18:53:17 2023 +0200<br/>
<node CREATED="1697982898279" ID="ID_1086820599" MODIFIED="1697982926481" TEXT="verfallene Activities d&#xfc;rfen wiederverwendet werden">
<icon BUILTIN="idea"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1698542519485" ID="ID_768314841" MODIFIED="1698543099960" TEXT="Bereinigung in die normale Verarbeitung integrieren">
<node COLOR="#338800" CREATED="1698542519485" ID="ID_768314841" MODIFIED="1698970344746" TEXT="Bereinigung in die normale Verarbeitung integrieren">
<linktarget COLOR="#7e4dc3" DESTINATION="ID_768314841" ENDARROW="Default" ENDINCLINATION="362;-65;" ID="Arrow_ID_464500099" SOURCE="ID_1705516567" STARTARROW="None" STARTINCLINATION="213;11;"/>
<icon BUILTIN="flag-yellow"/>
<icon BUILTIN="button_ok"/>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1698542534903" ID="ID_1065770396" MODIFIED="1698542579305" TEXT="Achtung: nur unter Grooming-Token">
<icon BUILTIN="clanbomber"/>
</node>
@ -84113,8 +84107,8 @@ Date:&#160;&#160;&#160;Thu Apr 20 18:53:17 2023 +0200<br/>
</html></richcontent>
<icon BUILTIN="idea"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1698542905269" ID="ID_271558649" MODIFIED="1698542913039" TEXT="Entscheidungslogik nochmal durchpr&#xfc;fen">
<icon BUILTIN="flag-yellow"/>
<node COLOR="#338800" CREATED="1698542905269" ID="ID_271558649" MODIFIED="1698970347001" TEXT="Entscheidungslogik nochmal durchpr&#xfc;fen">
<icon BUILTIN="button_ok"/>
</node>
</node>
<node BACKGROUND_COLOR="#f8f1cb" COLOR="#a50125" CREATED="1697982938058" ID="ID_1655832509" MODIFIED="1698542495500" TEXT="Problem: Deadlines f&#xfc;r non-timebound modes">
@ -84123,11 +84117,9 @@ Date:&#160;&#160;&#160;Thu Apr 20 18:53:17 2023 +0200<br/>
<node CREATED="1698542469775" ID="ID_1223768150" MODIFIED="1698542482889" TEXT="hierf&#xfc;r: verbindliche Tasks"/>
</node>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1698874604558" ID="ID_5485655" MODIFIED="1698874692722">
<node BACKGROUND_COLOR="#eef0c5" COLOR="#990000" CREATED="1698874604558" ID="ID_5485655" MODIFIED="1698970153006">
<richcontent TYPE="NODE"><html>
<head>
</head>
<head/>
<body>
<p>
<u>Implementierung</u>:
@ -84137,7 +84129,7 @@ Date:&#160;&#160;&#160;Thu Apr 20 18:53:17 2023 +0200<br/>
</p>
</body>
</html></richcontent>
<icon BUILTIN="flag-yellow"/>
<icon BUILTIN="pencil"/>
<node COLOR="#338800" CREATED="1698875050812" ID="ID_292105591" MODIFIED="1698963531996" TEXT="Datenfelder">
<icon BUILTIN="button_ok"/>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1698877940667" FOLDED="true" ID="ID_1937246215" MODIFIED="1698963527448" TEXT="bl&#xe4;ht die Eintr&#xe4;ge auf">
@ -84204,14 +84196,12 @@ Date:&#160;&#160;&#160;Thu Apr 20 18:53:17 2023 +0200<br/>
</node>
</node>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1698874464330" ID="ID_536599334" MODIFIED="1698874641730" TEXT="Markierung per CalcStream/Manifestation-ID">
<node COLOR="#338800" CREATED="1698874464330" ID="ID_536599334" MODIFIED="1698970131061" TEXT="Markierung per CalcStream/Manifestation-ID">
<linktarget COLOR="#9c4c6a" DESTINATION="ID_536599334" ENDARROW="Default" ENDINCLINATION="-881;57;" ID="Arrow_ID_1336944992" SOURCE="ID_1901851782" STARTARROW="None" STARTINCLINATION="-1037;-40;"/>
<icon BUILTIN="flag-yellow"/>
<icon BUILTIN="button_ok"/>
<node CREATED="1698874552701" ID="ID_393531098" MODIFIED="1698874578329">
<richcontent TYPE="NODE"><html>
<head>
</head>
<head/>
<body>
<p>
&#252;bergreifendes Thema: <i>fliegende &#196;nderungen </i>in Play-Prozessen
@ -84224,9 +84214,7 @@ Date:&#160;&#160;&#160;Thu Apr 20 18:53:17 2023 +0200<br/>
</node>
<node CREATED="1698966488184" ID="ID_52503620" MODIFIED="1698966526768">
<richcontent TYPE="NODE"><html>
<head>
</head>
<head/>
<body>
<p>
brauche generische Informationsfunktion <font face="Monospaced" color="#0d0fb9">isOutdated()</font>
@ -84235,29 +84223,30 @@ Date:&#160;&#160;&#160;Thu Apr 20 18:53:17 2023 +0200<br/>
</html>
</richcontent>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1698970133343" ID="ID_1886746867" MODIFIED="1698970148917" TEXT="mu&#xdf; vom Scheduler high-Level-API bedient werden">
<icon BUILTIN="bell"/>
</node>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1698533220909" ID="ID_1286321982" MODIFIED="1698533274744" TEXT="Flag und Steuerung f&#xfc;r &#xbb;verbindliche Activities&#xab;">
<linktarget COLOR="#f13e82" DESTINATION="ID_1286321982" ENDARROW="Default" ENDINCLINATION="107;492;" ID="Arrow_ID_1399415601" SOURCE="ID_326051657" STARTARROW="None" STARTINCLINATION="922;-57;"/>
<icon BUILTIN="flag-yellow"/>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1698533783922" ID="ID_1279644850" MODIFIED="1698533798213" TEXT="blockiert das Verwerfen nach Deadline">
<icon BUILTIN="flag-yellow"/>
<node COLOR="#338800" CREATED="1698533783922" ID="ID_1279644850" MODIFIED="1698970114815" TEXT="blockiert das Verwerfen nach Deadline">
<icon BUILTIN="button_ok"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1698533800719" ID="ID_979357340" MODIFIED="1698533837777" TEXT="wird dann vom Tick/DutyCycle erkannt">
<arrowlink COLOR="#9a5079" DESTINATION="ID_1227874220" ENDARROW="Default" ENDINCLINATION="133;12;" ID="Arrow_ID_967532278" STARTARROW="None" STARTINCLINATION="241;-7;"/>
<icon BUILTIN="flag-yellow"/>
</node>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1698945154395" ID="ID_1664760512" MODIFIED="1698945168653" TEXT="erweiterte Pr&#xfc;fungen in die normale Verarbeitung integrieren">
<icon BUILTIN="flag-yellow"/>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1698945192477" ID="ID_1809715507" MODIFIED="1698945204897" TEXT="brauche nun zus&#xe4;tzliche Daten beim Einplanen">
<icon BUILTIN="flag-yellow"/>
<node COLOR="#338800" CREATED="1698945154395" ID="ID_1664760512" MODIFIED="1698970165200" TEXT="erweiterte Pr&#xfc;fungen in die normale Verarbeitung integrieren">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1698945192477" ID="ID_1809715507" MODIFIED="1698970058102" TEXT="brauche nun zus&#xe4;tzliche Daten beim Einplanen">
<icon BUILTIN="button_ok"/>
<node CREATED="1698946253457" ID="ID_1811524315" MODIFIED="1698946256631" TEXT="Defaults">
<node CREATED="1698946293491" ID="ID_537001260" MODIFIED="1698946298907" TEXT="sinnvoll f&#xfc;r Tests"/>
<node CREATED="1698946300016" ID="ID_1426746639" MODIFIED="1698947331093" TEXT="Deadline auf &#xbb;Time::NEVER&#xab;">
<richcontent TYPE="NOTE"><html>
<head>
</head>
<head/>
<body>
<ul>
<li>
@ -84272,9 +84261,7 @@ Date:&#160;&#160;&#160;Thu Apr 20 18:53:17 2023 +0200<br/>
</node>
<node CREATED="1698946311193" ID="ID_1622617686" MODIFIED="1698947426886" TEXT="leere ManifestationID">
<richcontent TYPE="NOTE"><html>
<head>
</head>
<head/>
<body>
<p>
diese spezielle Marker-ID wird implizit stets freigeschaltet, kann also sp&#228;ter nicht verworfen werden; das erscheint mir ein sinnvoller Default
@ -84284,9 +84271,7 @@ Date:&#160;&#160;&#160;Thu Apr 20 18:53:17 2023 +0200<br/>
</node>
<node CREATED="1698946321096" ID="ID_1270673617" MODIFIED="1698947474211" TEXT="not isComplusory">
<richcontent TYPE="NOTE"><html>
<head>
</head>
<head/>
<body>
<p>
verpflichtende Activities sind ebenfalls ein Feature, das eigentlich erst auf Scheduler-Level angesiedelt ist, und hier nur den entsprechenden Support braucht
@ -84295,6 +84280,7 @@ Date:&#160;&#160;&#160;Thu Apr 20 18:53:17 2023 +0200<br/>
</html></richcontent>
</node>
</node>
<node COLOR="#435e98" CREATED="1698970061962" ID="ID_1229124977" MODIFIED="1698970101779" TEXT="jeder Queue-Entry besteht nun aus 4 &#xbb;Slots&#xab;"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1698945215604" ID="ID_1778628995" MODIFIED="1698946166942" TEXT="Scheduler high-level-API erweitern">
<arrowlink COLOR="#3d3aa9" DESTINATION="ID_780386157" ENDARROW="Default" ENDINCLINATION="69;74;" ID="Arrow_ID_103420327" STARTARROW="None" STARTINCLINATION="317;25;"/>
@ -84303,9 +84289,9 @@ Date:&#160;&#160;&#160;Thu Apr 20 18:53:17 2023 +0200<br/>
<node COLOR="#338800" CREATED="1698946201921" ID="ID_1058086166" MODIFIED="1698963474934" TEXT="Informationsfunktionen erg&#xe4;nzen">
<icon BUILTIN="button_ok"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1698946217933" ID="ID_1697537017" MODIFIED="1698946222845" TEXT="transparentes Verwerfen">
<icon BUILTIN="flag-yellow"/>
<node CREATED="1698948806933" ID="ID_420754882" MODIFIED="1698948813155" TEXT="wo ansetzen?">
<node COLOR="#338800" CREATED="1698946217933" ID="ID_1697537017" MODIFIED="1698970050764" TEXT="transparentes Verwerfen">
<icon BUILTIN="button_ok"/>
<node COLOR="#435e98" CREATED="1698948806933" ID="ID_420754882" MODIFIED="1698970047714" TEXT="wo ansetzen?">
<node CREATED="1698948815117" ID="ID_736157754" MODIFIED="1698948823278" TEXT="es mu&#xdf; eine Mutations-Funktion sein"/>
<node CREATED="1698948824058" ID="ID_42556043" MODIFIED="1698948833941" TEXT="sie mu&#xdf; stets unter Grooming-Token aufgerufen werden"/>
<node COLOR="#5b280f" CREATED="1698949109228" ID="ID_765027235" MODIFIED="1698949156519" TEXT="rein logisch w&#xe4;re feedPrioritisation() gut">
@ -84319,11 +84305,9 @@ Date:&#160;&#160;&#160;Thu Apr 20 18:53:17 2023 +0200<br/>
<node CREATED="1698949181235" ID="ID_655555656" MODIFIED="1698949192821" TEXT="und hat auch nicht die Zeit `now`"/>
<node CREATED="1698949193697" ID="ID_1153123389" MODIFIED="1698949214930" TEXT="au&#xdf;erdem w&#xe4;re die Formulierung if (isDue) untergraben"/>
</node>
<node CREATED="1698949216918" ID="ID_1626105170" MODIFIED="1698949234265">
<node COLOR="#435e98" CREATED="1698949216918" ID="ID_1626105170" MODIFIED="1698970044539">
<richcontent TYPE="NODE"><html>
<head>
</head>
<head/>
<body>
<p>
also geh&#246;rt diese Operation in <b>Layer-2</b>
@ -84333,9 +84317,7 @@ Date:&#160;&#160;&#160;Thu Apr 20 18:53:17 2023 +0200<br/>
<icon BUILTIN="yes"/>
<node CREATED="1698966624581" ID="ID_610935351" MODIFIED="1698966652638">
<richcontent TYPE="NODE"><html>
<head>
</head>
<head/>
<body>
<p>
damit: direkt in <b><font face="Monospaced" color="#610da9">findWork</font></b><font face="Monospaced" color="#610da9">(now)</font>
@ -84344,20 +84326,30 @@ Date:&#160;&#160;&#160;Thu Apr 20 18:53:17 2023 +0200<br/>
</html>
</richcontent>
</node>
</node>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1698966669839" ID="ID_1859516972" MODIFIED="1698966684878" TEXT="Layer-2 baut auf den Informationsfunktionen von Layer 1 auf">
<icon BUILTIN="flag-yellow"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1698966699869" ID="ID_919547647" MODIFIED="1698966742571" TEXT="Layer-2 findet nur die nach allen Regeln ausf&#xfc;hrbare n&#xe4;chste Activity">
<icon BUILTIN="flag-yellow"/>
<node CREATED="1698969992698" ID="ID_413808337" MODIFIED="1698970038839">
<richcontent TYPE="NODE"><html>
<head/>
<body>
<p>
pr&#252;ft explizit auf <font face="Monospaced" color="#62382f">isOutdated (now) and not isOutOfTime(now)</font>
</p>
</body>
</html></richcontent>
</node>
</node>
</node>
<node BACKGROUND_COLOR="#eef0c5" COLOR="#990000" CREATED="1698934459104" ID="ID_1030078999" MODIFIED="1698963463139" TEXT="Scheduler Layer-Tests erg&#xe4;nzen">
<node COLOR="#338800" CREATED="1698966669839" ID="ID_1859516972" MODIFIED="1698969985695" TEXT="Layer-2 baut auf den Informationsfunktionen von Layer 1 auf">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1698966699869" ID="ID_919547647" MODIFIED="1698969983997" TEXT="Layer-2 findet nur die nach allen Regeln ausf&#xfc;hrbare n&#xe4;chste Activity">
<icon BUILTIN="button_ok"/>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1698934459104" ID="ID_1030078999" MODIFIED="1698970200523" TEXT="Scheduler Layer-Tests erg&#xe4;nzen">
<arrowlink COLOR="#1990d6" DESTINATION="ID_774197123" ENDARROW="Default" ENDINCLINATION="589;-82;" ID="Arrow_ID_644878733" STARTARROW="None" STARTINCLINATION="-1097;92;"/>
<arrowlink COLOR="#d6194f" DESTINATION="ID_340948432" ENDARROW="Default" ENDINCLINATION="589;-82;" ID="Arrow_ID_1678021866" STARTARROW="None" STARTINCLINATION="-1097;92;"/>
<icon BUILTIN="pencil"/>
<arrowlink COLOR="#23a89d" DESTINATION="ID_340948432" ENDARROW="Default" ENDINCLINATION="589;-82;" ID="Arrow_ID_1678021866" STARTARROW="None" STARTINCLINATION="-1097;92;"/>
<icon BUILTIN="button_ok"/>
</node>
</node>
</node>
@ -88954,7 +88946,7 @@ Date:&#160;&#160;&#160;Thu Apr 20 18:53:17 2023 +0200<br/>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1688336761542" ID="ID_145928010" MODIFIED="1698934541039" TEXT="SchedulerInvocation_test">
<node COLOR="#338800" CREATED="1688336761542" FOLDED="true" ID="ID_145928010" MODIFIED="1698970224155" TEXT="SchedulerInvocation_test">
<icon BUILTIN="button_ok"/>
<node CREATED="1688337123318" ID="ID_1686181795" MODIFIED="1688337233916" TEXT="&#xbb;Layer-1&#xab; : Queue operation">
<icon BUILTIN="info"/>
@ -88978,7 +88970,7 @@ Date:&#160;&#160;&#160;Thu Apr 20 18:53:17 2023 +0200<br/>
<node COLOR="#338800" CREATED="1697503841856" ID="ID_1434499377" LINK="#ID_1306162732" MODIFIED="1697509772561" TEXT="verify_WaterLevel">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1698934474047" ID="ID_774197123" MODIFIED="1698963431837" TEXT="verify_Significance">
<node COLOR="#338800" CREATED="1698934474047" FOLDED="true" ID="ID_774197123" MODIFIED="1698970217305" TEXT="verify_Significance">
<linktarget COLOR="#1990d6" DESTINATION="ID_774197123" ENDARROW="Default" ENDINCLINATION="589;-82;" ID="Arrow_ID_644878733" SOURCE="ID_1030078999" STARTARROW="None" STARTINCLINATION="-1097;92;"/>
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1698947582439" ID="ID_622394306" MODIFIED="1698963261235" TEXT="erweiterter Zustand per API sichtbar">
@ -89000,7 +88992,7 @@ Date:&#160;&#160;&#160;Thu Apr 20 18:53:17 2023 +0200<br/>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1688336794355" ID="ID_1705923970" MODIFIED="1698963265645" TEXT="SchedulerCommutator_test">
<node COLOR="#338800" CREATED="1688336794355" FOLDED="true" ID="ID_1705923970" MODIFIED="1698970227851" TEXT="SchedulerCommutator_test">
<icon BUILTIN="button_ok"/>
<node CREATED="1688337141875" ID="ID_1442397948" MODIFIED="1697552361129" TEXT="&#xbb;Layer-2&#xab; : Activity execution">
<icon BUILTIN="info"/>
@ -89179,9 +89171,9 @@ Date:&#160;&#160;&#160;Thu Apr 20 18:53:17 2023 +0200<br/>
<icon BUILTIN="button_ok"/>
</node>
</node>
<node BACKGROUND_COLOR="#eef0c5" COLOR="#990000" CREATED="1698934474047" ID="ID_340948432" MODIFIED="1698966607384" TEXT="verify_Significance">
<linktarget COLOR="#d6194f" DESTINATION="ID_340948432" ENDARROW="Default" ENDINCLINATION="589;-82;" ID="Arrow_ID_1678021866" SOURCE="ID_1030078999" STARTARROW="None" STARTINCLINATION="-1097;92;"/>
<icon BUILTIN="pencil"/>
<node COLOR="#338800" CREATED="1698934474047" FOLDED="true" ID="ID_340948432" MODIFIED="1698970218992" TEXT="verify_Significance">
<linktarget COLOR="#23a89d" DESTINATION="ID_340948432" ENDARROW="Default" ENDINCLINATION="589;-82;" ID="Arrow_ID_1678021866" SOURCE="ID_1030078999" STARTARROW="None" STARTINCLINATION="-1097;92;"/>
<icon BUILTIN="button_ok"/>
<node CREATED="1698947608180" ID="ID_935784796" MODIFIED="1698947626950" TEXT="Queue-Processing verwirft abgelaufene Tasks"/>
<node CREATED="1698947694025" ID="ID_1869538175" MODIFIED="1698947727576" TEXT="nicht freigeschalte Manifestation wird unterdr&#xfc;ckt"/>
<node CREATED="1698966580969" ID="ID_1199341321" MODIFIED="1698966601172" TEXT="compulsory Activity blockt das automatische Verwerfen"/>
@ -94770,9 +94762,7 @@ Date:&#160;&#160;&#160;Thu Apr 20 18:53:17 2023 +0200<br/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1698872769092" HGAP="24" ID="ID_167266149" MODIFIED="1698933847212" TEXT="CalcStream-Manifestation" VSHIFT="8">
<richcontent TYPE="NOTE"><html>
<head>
</head>
<head/>
<body>
<p>
erm&#246;glicht, einen CalcStream inkompatibel zu ver&#228;ndern und die Reste der damit obsoleten Manifestation fliegend zu verwerfen
@ -95429,7 +95419,7 @@ Date:&#160;&#160;&#160;Thu Apr 20 18:53:17 2023 +0200<br/>
</html></richcontent>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1698533069058" ID="ID_1475771662" MODIFIED="1698533129903" TEXT="klares Trennkriterium einf&#xfc;hren">
<linktarget COLOR="#ee3a6b" DESTINATION="ID_1475771662" ENDARROW="Default" ENDINCLINATION="-1121;-88;" ID="Arrow_ID_211999245" SOURCE="ID_696019318" STARTARROW="None" STARTINCLINATION="1410;120;"/>
<linktarget COLOR="#3f3aee" DESTINATION="ID_1475771662" ENDARROW="Default" ENDINCLINATION="-1121;-88;" ID="Arrow_ID_211999245" SOURCE="ID_696019318" STARTARROW="None" STARTINCLINATION="1410;120;"/>
<icon BUILTIN="yes"/>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1698533152440" ID="ID_326051657" MODIFIED="1698533633384" TEXT="Flag f&#xfc;r verbindlichen Task in den Scheduler einbauen">
<arrowlink COLOR="#f13e82" DESTINATION="ID_1286321982" ENDARROW="Default" ENDINCLINATION="107;492;" ID="Arrow_ID_1399415601" STARTARROW="None" STARTINCLINATION="922;-57;"/>