Activity-Lang: abstracted execution framework complete and tested (closes: #1319)

This commit is contained in:
Fischlurch 2023-09-03 01:50:50 +02:00
parent 95ae12bba1
commit 2e28f5d278
6 changed files with 98 additions and 127 deletions

View file

@ -28,12 +28,9 @@
** can be passed to the scheduler's messaging queue to cause the described
** activities to be performed in the context of the Lumiera render engine.
**
** @warning mostly this is planned functionality
** @see SchedulerActivity_test
** @see activity.hpp definition of verbs
**
** @todo WIP-WIP-WIP 6/2023 »Playback Vertical Slice«
**
**
*/
@ -44,22 +41,36 @@
#include "vault/gear/activity.hpp"
#include "vault/gear/block-flow.hpp"
#include "vault/gear/activity-term.hpp"
//#include "lib/symbol.hpp"
//#include "lib/util.hpp"
//#include <string>
namespace vault{
namespace gear {
// using util::isnil;
// using std::string;
using BlockFlowAlloc = BlockFlow<blockFlow::RenderConfig>;
/**
* TODO write type comment...
/*************************************************************************************//**
* Term builder and execution framework to perform chains of _scheduler Activities_.
* These are the verbs of a low-level execution language for render jobs; individual
* \ref Activity records are managed by the \ref BlockFlow allocation scheme and maintained
* until expiration their deadline. To enact a render job, a connection of Activities
* will be suitably wired, and the entry point to start execution can be instructed
* into the Scheduler.
*
* The ActivityLang object provides an _construction and execution service_
* - it provides a builder API to construct _terms_ of properly wired Activity records
* - the activity::Term serves as a transient object for wiring and configuration and
* can be discarded after enqueuing the entry point of a chain.
* - the static function ActivityLang::dispatchChain() provides the execution logic
* for _activating_ a chain of Activities successively.
* - for real usage, this execution environment needs some functionality implemented
* in the scheduler, which -- for the purpose of Activity activation -- is abstracted
* as an *Execution Context* with the following operations
* ** λ-post : hand over a chain of Activities for (time bound) activation
* ** λ-work : signal start of media processing and then leave »management mode«
* ** λ-done : signal completion of media processing
* ** λ-tick : activate an internal heartbeat and scheduler maintenance hook
*
* @see Activity
* @see SchedulerActivity_test
@ -69,7 +80,7 @@ namespace gear {
BlockFlowAlloc& mem_;
public:
// explicit
explicit
ActivityLang (BlockFlowAlloc& memManager)
: mem_{memManager}
{ }
@ -153,6 +164,5 @@ namespace gear {
};
}} // namespace vault::gear
#endif /*SRC_VAULT_GEAR_ACTIVITY_LANG_H_*/

View file

@ -55,9 +55,7 @@
**
** @see SchedulerActivity_test
** @see ActivityLang implementation of execution logic
**
** @todo WIP-WIP 8/2023 »Playback Vertical Slice«
**
**
*/
@ -71,8 +69,6 @@
#include "lib/meta/function.hpp"
#include "lib/util.hpp"
//#include <string>
namespace vault{
namespace gear {
@ -80,11 +76,10 @@ namespace gear {
using lib::time::TimeValue;
using lib::time::TimeVar;
using lib::time::Offset;
// using util::isnil;
// using std::string;
namespace error = lumiera::error;
class Activity;
@ -696,6 +691,5 @@ namespace gear {
}
}} // namespace vault::gear
#endif /*SRC_VAULT_GEAR_ACTIVITY_H_*/

View file

@ -2,19 +2,19 @@ TESTING "Component Test Suite: Scheduler" ./test-suite --group=engine
PLANNED "Activity observation framework" ActivityDetector_test <<END
TEST "Activity observation framework" ActivityDetector_test <<END
return: 0
END
PLANNED "BlockFlow memory management scheme" BlockFlow_test <<END
Test "BlockFlow memory management scheme" BlockFlow_test <<END
return: 0
END
PLANNED "Scheduler Activity Language" SchedulerActivity_test <<END
TEST "Scheduler Activity Language" SchedulerActivity_test <<END
return: 0
END

View file

@ -30,15 +30,13 @@
#include "activity-detector.hpp"
#include "vault/real-clock.hpp"
#include "lib/time/timevalue.hpp"
#include "lib/format-cout.hpp" /////////////////////////////TODO
#include "lib/format-cout.hpp"
#include "lib/util.hpp"
//#include <utility>
//using test::Test;
//using lib::time::Time;
//using lib::time::FSecs;
//using std::move;
using lib::time::Time;
using lib::time::FSecs;
using util::isSameObject;
using lib::test::randStr;
using lib::test::randTime;
@ -48,14 +46,6 @@ namespace vault{
namespace gear {
namespace test {
// using lib::time::FrameRate;
// using lib::time::Offset;
using lib::time::Time;
using lib::time::FSecs;
/*****************************************************************//**
* @test verify instrumentation setup to watch scheduler Activities.
@ -82,8 +72,7 @@ namespace test {
}
/** @test TODO demonstrate a simple usage scenario
* @todo WIP 7/23 🔁 define 🔁 implement
/** @test demonstrate a simple usage scenario of this test support facility
*/
void
simpleUsage()

View file

@ -32,7 +32,7 @@
** _detector Activity records_ is provided, which drop off event log messages
** by side effect. These detector probes can be wired in as decorators into
** an otherwise valid Activity-Term, allowing to watch and verify patterns
** of invocation -- which might even happen concurrently.
** of invocation.
**
** # Usage
**
@ -50,9 +50,19 @@
** - ActivityDetector::buildDiadnosticFun(id) generates a functor object with
** _arbitrary signature,_ which records any invocation and arguments.
** The corresponding verification matcher is #verifyInvocation(id)
** - ActivityDetector::buildMockJobFunctor(id) a JobFunctor implementation
** suitably rigged to record invocations and arguments
** - ActivityDetector::buildActivationProbe a debugging Activity to record activation
** - ActivityDetector::insertActivationTap hooks this Activation-Probe before an
** existing Activity-connection, so that passing on the activation can be detected
** - ActivityDetector::watchGate rig a `GATE` activity by prepending and appending
** an Activation-Probe, so that both incoming and outgoing activations can be traced
** - ActivityDetector::executionCtx test setup of the execution environment abstraction
** for performing chains of Activities; it provides the expected λ-functions as
** instances of ActivityDetctor::DiagnosticFun, so that any invocation is recorded
**
** @todo WIP-WIP-WIP 8/2023 gradually gaining traction.
** @see SchedulerActivity_test
** @see ActivityDetector_test
** @see EventLog_test (demonstration of EventLog capbabilities)
*/
@ -65,35 +75,20 @@
#include "lib/test/test-helper.hpp"
#include "lib/test/event-log.hpp"
//#include "steam/play/dummy-play-connection.hpp"
//#include "steam/fixture/node-graph-attachment.hpp"
//#include "steam/fixture/segmentation.hpp"
//#include "steam/mobject/model-port.hpp"
//#include "steam/engine/dispatcher.hpp"
//#include "steam/engine/job-ticket.hpp"
#include "vault/gear/job.h"
#include "vault/gear/activity.hpp"
#include "vault/gear/nop-job-functor.hpp"
//#include "vault/real-clock.hpp"
//#include "lib/allocator-handle.hpp"
#include "lib/time/timevalue.hpp"
//#include "lib/diff/gen-node.hpp"
//#include "lib/linked-elements.hpp"
#include "lib/meta/variadic-helper.hpp"
#include "lib/meta/function.hpp"
#include "lib/wrapper.hpp"
#include "lib/format-cout.hpp"
#include "lib/format-util.hpp"
//#include "lib/itertools.hpp"
//#include "lib/depend.hpp"
#include "lib/util.hpp"
#include <functional>
#include <utility>
#include <string>
#include <deque>
//#include <tuple>
//#include <map>
namespace vault{
@ -102,23 +97,14 @@ namespace test {
using std::string;
using std::function;
// using std::make_tuple;
// using lib::diff::GenNode;
// using lib::diff::MakeRec;
using lib::time::TimeValue;
using lib::time::Time;
using lib::time::FSecs;
using lib::time::Offset;
// using lib::HashVal;
using lib::meta::RebindVariadic;
using util::isnil;
using std::forward;
using std::move;
// using util::isSameObject;
// using fixture::Segmentation;
// using vault::RealClock;
// using vault::gear::Job;
// using vault::gear::JobClosure;
namespace {// Diagnostic markers
@ -167,29 +153,14 @@ namespace test {
operator bool() const { return _Parent::operator bool(); }
// EventMatch& locate (string match);
// EventMatch& locateMatch (string regExp);
// EventMatch& locateEvent (string match);
// EventMatch& locateEvent (string classifier, string match);
// EventMatch& locateCall (string match);
//
//
// /* query builders to find a match stepping forwards */
//
// EventMatch& before (string match);
// EventMatch& beforeMatch (string regExp);
// EventMatch& beforeEvent (string match);
// EventMatch& beforeEvent (string classifier, string match);
/* query builder(s) to find a match stepping forwards */
ActivityMatch& beforeInvocation (string match) { return delegate (&EventMatch::beforeCall, move(match)); }
//
//
// /* query builders to find a match stepping backwards */
//
// EventMatch& after (string match);
// EventMatch& afterMatch (string regExp);
// EventMatch& afterEvent (string match);
// EventMatch& afterEvent (string classifier, string match);
// more here...
/* query builders to find a match stepping backwards */
ActivityMatch& afterInvocation (string match) { return delegate (&EventMatch::afterCall, move(match)); }
// more here...
/** qualifier: additionally match the function arguments */
template<typename...ARGS>
@ -245,13 +216,13 @@ namespace test {
};
/**
* Diagnostic context to record and evaluate activations within the Scheduler.
* The provided tools and detectors are wired back internally, such as to record
* any observations into an lib::test::EventLog instance. Thus, after performing
* rigged functionality, the expected activities and their order can be verified.
* @see ActivityDetector_test
* @todo WIP-WIP-WIP 8/23 gradually building the verification tools needed...
*/
class ActivityDetector
: util::NonCopyable

View file

@ -77263,8 +77263,8 @@ Date:&#160;&#160;&#160;Thu Apr 20 18:53:17 2023 +0200<br/>
</node>
</node>
</node>
<node BACKGROUND_COLOR="#eef0c5" COLOR="#990000" CREATED="1687908222714" HGAP="83" ID="ID_941383183" MODIFIED="1690068335344" TEXT="Darstellung" VSHIFT="2">
<icon BUILTIN="pencil"/>
<node COLOR="#338800" CREATED="1687908222714" HGAP="83" ID="ID_941383183" MODIFIED="1693694660558" TEXT="Darstellung" VSHIFT="2">
<icon BUILTIN="button_ok"/>
<node CREATED="1687908236975" ID="ID_692898121" MODIFIED="1687908476679" TEXT="eigentlich polymorph &#x2014; aber in gemeinsamen Datenrecord encodiert">
<richcontent TYPE="NOTE"><html>
<head/>
@ -77425,9 +77425,9 @@ Date:&#160;&#160;&#160;Thu Apr 20 18:53:17 2023 +0200<br/>
</node>
</node>
</node>
<node BACKGROUND_COLOR="#fdfdcf" COLOR="#ff0000" CREATED="1688997822688" HGAP="33" ID="ID_469443507" MODIFIED="1693089834317" TEXT="ActivityTerm" VSHIFT="4">
<node COLOR="#338800" CREATED="1688997822688" HGAP="33" ID="ID_469443507" MODIFIED="1693694551081" TEXT="ActivityTerm" VSHIFT="4">
<linktarget COLOR="#4e4671" DESTINATION="ID_469443507" ENDARROW="Default" ENDINCLINATION="-463;535;" ID="Arrow_ID_1203697100" SOURCE="ID_1506436785" STARTARROW="None" STARTINCLINATION="-890;-116;"/>
<icon BUILTIN="flag-pink"/>
<icon BUILTIN="button_ok"/>
<node CREATED="1688997860691" ID="ID_601062393" MODIFIED="1688997898044" TEXT="Builder-Struktur &#x2014; macht einen Activity-Graphen semantisch zug&#xe4;nglich">
<icon BUILTIN="info"/>
<node CREATED="1688997906652" ID="ID_1309569324" MODIFIED="1688997918758" TEXT="wird nur in einem lokalen / transienten Kontext erzeugt"/>
@ -77438,13 +77438,11 @@ Date:&#160;&#160;&#160;Thu Apr 20 18:53:17 2023 +0200<br/>
<icon BUILTIN="yes"/>
</node>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1688998623675" ID="ID_1567695201" MODIFIED="1693271127294" TEXT="usage-Scenarios">
<node COLOR="#435e98" CREATED="1688998623675" ID="ID_1567695201" MODIFIED="1693694560177" TEXT="usage-Scenarios">
<font BOLD="true" NAME="SansSerif" SIZE="12"/>
<icon BUILTIN="info"/>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1688998631898" ID="ID_697542787" MODIFIED="1688998652420" TEXT="erst mal nur die &#xbb;einfachen Render-Jobs&#xab;">
<icon BUILTIN="yes"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1688998654071" ID="ID_923708494" MODIFIED="1688998677456" TEXT="Frame-Render-Job">
<icon BUILTIN="flag-yellow"/>
<node COLOR="#435e98" CREATED="1688998654071" ID="ID_923708494" MODIFIED="1693694589378" TEXT="Frame-Render-Job">
<icon BUILTIN="forward"/>
<node CREATED="1688998682403" ID="ID_647428374" MODIFIED="1688998983215" TEXT="zu erstellen (Job komplett)">
<icon BUILTIN="info"/>
<node CREATED="1688998699273" ID="ID_670845823" MODIFIED="1688998702452" TEXT="POST">
@ -77452,9 +77450,10 @@ Date:&#160;&#160;&#160;Thu Apr 20 18:53:17 2023 +0200<br/>
<node CREATED="1688998714647" ID="ID_1212520042" MODIFIED="1688998724793" TEXT="fr&#xfc;hestmoglich Start-Zeit / Deadline"/>
</node>
<node CREATED="1688998737324" ID="ID_1359190642" MODIFIED="1688998829651" TEXT="GATE">
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1688998831183" ID="ID_158897194" MODIFIED="1693502275691" TEXT="Inhibitor-Mechanismus mu&#xdf; zu fr&#xfc;he Freigabe verhindern">
<node COLOR="#338800" CREATED="1688998831183" FOLDED="true" ID="ID_158897194" MODIFIED="1693694635612" TEXT="Inhibitor-Mechanismus mu&#xdf; zu fr&#xfc;he Freigabe verhindern">
<linktarget COLOR="#5f98b9" DESTINATION="ID_158897194" ENDARROW="Default" ENDINCLINATION="597;427;" ID="Arrow_ID_908519316" SOURCE="ID_706646924" STARTARROW="None" STARTINCLINATION="912;57;"/>
<icon BUILTIN="flag-yellow"/>
<icon BUILTIN="yes"/>
<icon BUILTIN="hourglass"/>
<node BACKGROUND_COLOR="#fdfdcf" COLOR="#ff0000" CREATED="1689169379528" ID="ID_130475381" MODIFIED="1693500400879" TEXT="stellt sich die Frage nach Regel und Ausnahme">
<linktarget COLOR="#ff8c4a" DESTINATION="ID_130475381" ENDARROW="Default" ENDINCLINATION="-1002;56;" ID="Arrow_ID_501288232" SOURCE="ID_1158823061" STARTARROW="None" STARTINCLINATION="1201;66;"/>
<icon BUILTIN="yes"/>
@ -77526,13 +77525,13 @@ Date:&#160;&#160;&#160;Thu Apr 20 18:53:17 2023 +0200<br/>
<node CREATED="1689000122273" ID="ID_1422583341" MODIFIED="1689000141923" TEXT="Ankerpunkte">
<arrowlink COLOR="#598fcf" DESTINATION="ID_942300026" ENDARROW="Default" ENDINCLINATION="11;-24;" ID="Arrow_ID_1092205676" STARTARROW="None" STARTINCLINATION="-232;48;"/>
<node CREATED="1689000157534" ID="ID_1675125320" MODIFIED="1689000220860" TEXT="Gate wird nur bei Bedarf eingeschleift"/>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1689000188849" ID="ID_1979509352" MODIFIED="1689000216482" TEXT="dies mu&#xdf; aber vor dem Instruct() passieren">
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1689000188849" ID="ID_1979509352" MODIFIED="1693694608993" TEXT="dies mu&#xdf; aber vor dem Instruct() passieren">
<icon BUILTIN="messagebox_warning"/>
</node>
</node>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1688998666581" ID="ID_796453137" MODIFIED="1688998677457" TEXT="Media-Decoder-Job">
<icon BUILTIN="flag-yellow"/>
<node COLOR="#435e98" CREATED="1688998666581" ID="ID_796453137" MODIFIED="1693694589377" TEXT="Media-Decoder-Job">
<icon BUILTIN="forward"/>
<node CREATED="1688998682403" ID="ID_60823636" MODIFIED="1688998995125" TEXT="zu erstellen">
<icon BUILTIN="info"/>
<node CREATED="1688998997137" ID="ID_542318622" MODIFIED="1688999010459" TEXT="IO-Trigger">
@ -77559,11 +77558,11 @@ Date:&#160;&#160;&#160;Thu Apr 20 18:53:17 2023 +0200<br/>
<node CREATED="1689000270813" ID="ID_360882448" MODIFIED="1689000284794" TEXT="Flag f&#xfc;r Asynchronen Job"/>
</node>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1688999761263" ID="ID_1842215336" MODIFIED="1688999765244" TEXT="Planungs-Job">
<icon BUILTIN="flag-yellow"/>
<node BACKGROUND_COLOR="#fdfdcf" COLOR="#ff0000" CREATED="1688999770170" ID="ID_1797355919" MODIFIED="1688999777385" TEXT="zu erstellen">
<node COLOR="#435e98" CREATED="1688999761263" ID="ID_1842215336" MODIFIED="1693694589377" TEXT="Planungs-Job">
<icon BUILTIN="forward"/>
<node CREATED="1688999770170" ID="ID_1797355919" MODIFIED="1693694599008" TEXT="zu erstellen">
<icon BUILTIN="info"/>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1688999786193" ID="ID_1441495224" MODIFIED="1693176723190" TEXT="Achtung: hier kein &#xdc;bergang in die Hintergrundverarbeitung">
<node COLOR="#435e98" CREATED="1688999786193" ID="ID_1441495224" MODIFIED="1693694604561" TEXT="Achtung: hier kein &#xdc;bergang in die Hintergrundverarbeitung">
<richcontent TYPE="NOTE"><html>
<head/>
<body>
@ -77611,8 +77610,8 @@ Date:&#160;&#160;&#160;Thu Apr 20 18:53:17 2023 +0200<br/>
<node CREATED="1693223327335" ID="ID_1106041031" MODIFIED="1693223365669" TEXT="mu&#xdf; Activities allozieren k&#xf6;nnen"/>
<node CREATED="1693223366762" ID="ID_1003919385" MODIFIED="1693223395968" TEXT="mu&#xdf; diese F&#xe4;higkeit an den Builder weiterreichen k&#xf6;nnen"/>
</node>
<node BACKGROUND_COLOR="#eef0c5" COLOR="#990000" CREATED="1688999200998" ID="ID_1334461256" MODIFIED="1693271106975" TEXT="Term konstruieren">
<icon BUILTIN="pencil"/>
<node COLOR="#338800" CREATED="1688999200998" ID="ID_1334461256" MODIFIED="1693694993877" TEXT="Term konstruieren">
<icon BUILTIN="button_ok"/>
<node CREATED="1693178401960" ID="ID_1975660291" MODIFIED="1693178408828" TEXT="Fallunterscheidung zu Beginn">
<node CREATED="1693178409769" ID="ID_246745518" MODIFIED="1693178433004" TEXT="Tick &#x27f9; explizit und separat"/>
<node CREATED="1693178439042" ID="ID_1755797545" MODIFIED="1693178459860" TEXT="Basisf&#xe4;lle">
@ -77647,8 +77646,8 @@ Date:&#160;&#160;&#160;Thu Apr 20 18:53:17 2023 +0200<br/>
<node COLOR="#338800" CREATED="1693178805562" ID="ID_1048207081" MODIFIED="1693686526300" TEXT="Gate falls Notify aufgeschaltet">
<icon BUILTIN="button_ok"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1693686465783" ID="ID_1698611033" MODIFIED="1693686530330" TEXT="Callback-Notify f&#xfc;r async IO">
<icon BUILTIN="flag-yellow"/>
<node COLOR="#338800" CREATED="1693686465783" FOLDED="true" ID="ID_1698611033" MODIFIED="1693695000551" TEXT="Callback-Notify f&#xfc;r async IO">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1693687757081" ID="ID_1001875516" MODIFIED="1693690417189" TEXT="mu&#xdf; die Kette auftrennen">
<arrowlink COLOR="#4478f6" DESTINATION="ID_1373563746" ENDARROW="Default" ENDINCLINATION="9;-26;" ID="Arrow_ID_1617906021" STARTARROW="None" STARTINCLINATION="62;6;"/>
<icon BUILTIN="button_ok"/>
@ -78547,12 +78546,12 @@ Date:&#160;&#160;&#160;Thu Apr 20 18:53:17 2023 +0200<br/>
<node CREATED="1687568938113" ID="ID_1621332483" MODIFIED="1687568944537" TEXT="block-flow.cpp"/>
</node>
</node>
<node COLOR="#338800" CREATED="1689204967974" ID="ID_284088835" MODIFIED="1693328464228" TEXT="Test-Aufbau: ActivityDetector">
<node COLOR="#338800" CREATED="1689204967974" FOLDED="true" ID="ID_284088835" MODIFIED="1693695157897" TEXT="Test-Aufbau: ActivityDetector">
<linktarget COLOR="#794f4b" DESTINATION="ID_284088835" ENDARROW="Default" ENDINCLINATION="-751;-63;" ID="Arrow_ID_1213725911" SOURCE="ID_1647246120" STARTARROW="None" STARTINCLINATION="518;48;"/>
<linktarget COLOR="#5f8998" DESTINATION="ID_284088835" ENDARROW="Default" ENDINCLINATION="-204;1111;" ID="Arrow_ID_1573724609" SOURCE="ID_373470992" STARTARROW="None" STARTINCLINATION="873;45;"/>
<linktarget COLOR="#7a78a4" DESTINATION="ID_284088835" ENDARROW="Default" ENDINCLINATION="-1242;118;" ID="Arrow_ID_807229137" SOURCE="ID_1294988847" STARTARROW="None" STARTINCLINATION="772;49;"/>
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1689204985122" ID="ID_1020676746" MODIFIED="1692634792327" TEXT="Rahmen schaffen">
<node COLOR="#338800" CREATED="1689204985122" FOLDED="true" ID="ID_1020676746" MODIFIED="1692634792327" TEXT="Rahmen schaffen">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1689205014901" ID="ID_221497246" MODIFIED="1690832378644" TEXT="Instantiierung und Lebenszyklus">
<icon BUILTIN="button_ok"/>
@ -79017,7 +79016,7 @@ Date:&#160;&#160;&#160;Thu Apr 20 18:53:17 2023 +0200<br/>
</node>
<node COLOR="#338800" CREATED="1689205081622" ID="ID_1440811513" MODIFIED="1692634756484" TEXT="Me&#xdf;punkte">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1689205105640" ID="ID_1975472338" MODIFIED="1692120794297" TEXT="Dummy-Funktor">
<node COLOR="#338800" CREATED="1689205105640" FOLDED="true" ID="ID_1975472338" MODIFIED="1692120794297" TEXT="Dummy-Funktor">
<icon BUILTIN="button_ok"/>
<node COLOR="#435e98" CREATED="1692114609799" ID="ID_742671204" MODIFIED="1692114749800" TEXT="was wird erzeugt?">
<icon BUILTIN="help"/>
@ -79704,7 +79703,7 @@ Date:&#160;&#160;&#160;Thu Apr 20 18:53:17 2023 +0200<br/>
<node BACKGROUND_COLOR="#eef0c5" COLOR="#990000" CREATED="1688336218233" HGAP="-55" ID="ID_323523273" MODIFIED="1688337255857" TEXT="testgetriebener Aufbau" VSHIFT="34">
<linktarget COLOR="#fe3a58" DESTINATION="ID_323523273" ENDARROW="Default" ENDINCLINATION="-167;17;" ID="Arrow_ID_589297136" SOURCE="ID_1968961000" STARTARROW="None" STARTINCLINATION="-139;-149;"/>
<icon BUILTIN="pencil"/>
<node COLOR="#338800" CREATED="1688336601091" ID="ID_1454374119" MODIFIED="1689993700816" TEXT="BlockFlow_test">
<node COLOR="#338800" CREATED="1688336601091" FOLDED="true" ID="ID_1454374119" MODIFIED="1689993700816" TEXT="BlockFlow_test">
<linktarget COLOR="#50c146" DESTINATION="ID_1454374119" ENDARROW="Default" ENDINCLINATION="-596;80;" ID="Arrow_ID_208594716" SOURCE="ID_836380061" STARTARROW="None" STARTINCLINATION="-331;-16;"/>
<icon BUILTIN="button_ok"/>
<node CREATED="1688336974018" ID="ID_1806920884" MODIFIED="1688337018608" TEXT="&#xbb;Epoch&#xab; based memory layout">
@ -80000,9 +79999,17 @@ Date:&#160;&#160;&#160;Thu Apr 20 18:53:17 2023 +0200<br/>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1688336697451" ID="ID_360159435" MODIFIED="1693694303178" TEXT="SchedulerActivity_test">
<node COLOR="#338800" CREATED="1688336697451" FOLDED="true" ID="ID_360159435" MODIFIED="1693695232010" TEXT="SchedulerActivity_test">
<icon BUILTIN="button_ok"/>
<node CREATED="1688337038457" ID="ID_1859527374" MODIFIED="1688337060790" TEXT="&#xbb;Activity Language&#xab; Functionality test">
<node COLOR="#435e98" CREATED="1688337038457" ID="ID_1859527374" MODIFIED="1693695203513">
<richcontent TYPE="NODE"><html>
<head/>
<body>
<p>
&#187;<b>Activity Language</b>&#171; Functionality test
</p>
</body>
</html></richcontent>
<icon BUILTIN="info"/>
</node>
<node CREATED="1689200347787" ID="ID_927706508" MODIFIED="1689200349854" TEXT="Themen">
@ -80011,7 +80018,7 @@ Date:&#160;&#160;&#160;Thu Apr 20 18:53:17 2023 +0200<br/>
<node CREATED="1689200449333" ID="ID_386403564" MODIFIED="1689200453433" TEXT="usage scenarios"/>
</node>
<node CREATED="1689201354393" HGAP="24" ID="ID_1250518280" MODIFIED="1689201365333" TEXT="Hilfsmittel" VSHIFT="2">
<node COLOR="#338800" CREATED="1689201660559" ID="ID_747497995" MODIFIED="1692718533422" TEXT="ActivityDetector">
<node COLOR="#338800" CREATED="1689201660559" FOLDED="true" ID="ID_747497995" MODIFIED="1693695210666" TEXT="ActivityDetector">
<icon BUILTIN="button_ok"/>
<node CREATED="1689201667734" ID="ID_901153159" MODIFIED="1692286015665" TEXT="speziell verdrahtetes Setup">
<icon BUILTIN="info"/>
@ -80073,7 +80080,7 @@ Date:&#160;&#160;&#160;Thu Apr 20 18:53:17 2023 +0200<br/>
<node COLOR="#338800" CREATED="1692718437941" ID="ID_1363192893" MODIFIED="1692723165688" TEXT="verifyActivity_Notify_dispatch">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1689199390484" ID="ID_212018049" MODIFIED="1692727125029" TEXT="verifyActivity_Gate">
<node COLOR="#338800" CREATED="1689199390484" FOLDED="true" ID="ID_212018049" MODIFIED="1692727125029" TEXT="verifyActivity_Gate">
<linktarget COLOR="#2c8d69" DESTINATION="ID_212018049" ENDARROW="Default" ENDINCLINATION="556;74;" ID="Arrow_ID_1693904148" SOURCE="ID_1220469732" STARTARROW="None" STARTINCLINATION="472;34;"/>
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1692723178576" ID="ID_214653366" MODIFIED="1692726894947" TEXT="pass">
@ -80096,7 +80103,7 @@ Date:&#160;&#160;&#160;Thu Apr 20 18:53:17 2023 +0200<br/>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1689200547247" ID="ID_1506436785" MODIFIED="1693328247993" TEXT="termBuilder">
<node COLOR="#338800" CREATED="1689200547247" FOLDED="true" ID="ID_1506436785" MODIFIED="1693328247993" TEXT="termBuilder">
<arrowlink COLOR="#4e4671" DESTINATION="ID_469443507" ENDARROW="Default" ENDINCLINATION="-463;535;" ID="Arrow_ID_1203697100" STARTARROW="None" STARTINCLINATION="-890;-116;"/>
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1693269179507" ID="ID_286775090" LINK="#ID_1334461256" MODIFIED="1693323260073" TEXT="einfachst m&#xf6;glichen activity::Term konstruieren">
@ -80163,7 +80170,7 @@ Date:&#160;&#160;&#160;Thu Apr 20 18:53:17 2023 +0200<br/>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1693426627134" ID="ID_468206154" MODIFIED="1693431591742" TEXT="dispatchChain">
<node COLOR="#338800" CREATED="1693426627134" FOLDED="true" 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"/>
@ -80178,7 +80185,7 @@ Date:&#160;&#160;&#160;Thu Apr 20 18:53:17 2023 +0200<br/>
<icon BUILTIN="button_ok"/>
</node>
</node>
<node COLOR="#338800" CREATED="1689200553782" ID="ID_472609287" MODIFIED="1693528208553" TEXT="scenario_RenderJob">
<node COLOR="#338800" CREATED="1689200553782" FOLDED="true" ID="ID_472609287" MODIFIED="1693528208553" TEXT="scenario_RenderJob">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1693323299522" ID="ID_1282022548" MODIFIED="1693323306513" TEXT="Grundstruktur verdrahten">
<icon BUILTIN="button_ok"/>
@ -80221,7 +80228,7 @@ Date:&#160;&#160;&#160;Thu Apr 20 18:53:17 2023 +0200<br/>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1693502167005" ID="ID_13120904" MODIFIED="1693616469802" TEXT="scenario_Notification">
<node COLOR="#338800" CREATED="1693502167005" FOLDED="true" ID="ID_13120904" MODIFIED="1693616469802" TEXT="scenario_Notification">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1693502193641" ID="ID_970318761" MODIFIED="1693528493228" TEXT="Grundstruktur wie scenario_RenderJob">
<icon BUILTIN="button_ok"/>
@ -80325,7 +80332,7 @@ Date:&#160;&#160;&#160;Thu Apr 20 18:53:17 2023 +0200<br/>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1689200553782" ID="ID_1346681233" MODIFIED="1693694291844" TEXT="scenario_IOJob">
<node COLOR="#338800" CREATED="1689200553782" FOLDED="true" ID="ID_1346681233" MODIFIED="1693694291844" TEXT="scenario_IOJob">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1693323299522" ID="ID_392906930" MODIFIED="1693694293977" TEXT="Grundstruktur verdrahten">
<icon BUILTIN="button_ok"/>
@ -80337,7 +80344,7 @@ Date:&#160;&#160;&#160;Thu Apr 20 18:53:17 2023 +0200<br/>
<icon BUILTIN="button_ok"/>
</node>
</node>
<node COLOR="#338800" CREATED="1689200553782" ID="ID_722630098" MODIFIED="1693618275138" TEXT="scenario_MetaJob">
<node COLOR="#338800" CREATED="1689200553782" FOLDED="true" ID="ID_722630098" MODIFIED="1693618275138" TEXT="scenario_MetaJob">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1693323319980" ID="ID_1996463444" MODIFIED="1693323335269" TEXT="die minimale default-Verdrahtung gen&#xfc;gt">
<icon BUILTIN="button_ok"/>
@ -80566,7 +80573,7 @@ Date:&#160;&#160;&#160;Thu Apr 20 18:53:17 2023 +0200<br/>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1688337270626" ID="ID_1810148055" MODIFIED="1689994032309" TEXT="&#xbb;BlockFlow&#xab; : Implementation">
<node COLOR="#338800" CREATED="1688337270626" FOLDED="true" ID="ID_1810148055" MODIFIED="1689994032309" TEXT="&#xbb;BlockFlow&#xab; : Implementation">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1688398675985" ID="ID_291772625" MODIFIED="1689188506325" TEXT="Basis: ExtentFamily">
<icon BUILTIN="button_ok"/>