Invocation: plan for extended parameter computations

Based on ''theoretical reasoning,'' I draw the conclusion that some advanced usages
of processing parameters can not be satisfied by the simple direct integration of a
parameter-functor...

Thus the concept for an extension point, which relies on a dedicated ''Param (Agent) Node''
and a specifically tailored ''Param Weaving Pattern'' to evaluate several parameter functors
and place the results into an extension data block in the invocation stack frame.
This commit is contained in:
Fischlurch 2024-12-28 21:41:08 +01:00
parent c4b2902dd4
commit 7d8c0c5753
6 changed files with 580 additions and 50 deletions

View file

@ -1,5 +1,5 @@
/*
WEAVING-PATTERN.hpp - Base patterns to organise data connections and render processing invocation
MEDIA-WEAVING-PATTERN.hpp - Base patterns to organise data connections and render processing invocation
Copyright (C)
2008, Hermann Vosseler <Ichthyostega@web.de>
@ -13,7 +13,7 @@
*/
/** @file weaving-pattern.hpp
/** @file media-weaving-pattern.hpp
** Construction set to assemble and operate a data processing scheme within a Render Node.
** Together with turnout.hpp, this header provides the "glue" which holds together the
** typical setup of a Render Node network for processing media data. A MediaWeavingPattern
@ -131,8 +131,8 @@
*/
#ifndef STEAM_ENGINE_WEAVING_PATTERN_H
#define STEAM_ENGINE_WEAVING_PATTERN_H
#ifndef STEAM_ENGINE_MEDIA_WEAVING_PATTERN_H
#define STEAM_ENGINE_MEDIA_WEAVING_PATTERN_H
#include "steam/common.hpp"
#include "steam/engine/turnout.hpp"
@ -260,4 +260,4 @@ namespace engine {
}}// namespace steam::engine
#endif /*STEAM_ENGINE_WEAVING_PATTERN_H*/
#endif /*STEAM_ENGINE_MEDIA_WEAVING_PATTERN_H*/

View file

@ -0,0 +1,263 @@
/*
PARAM-WEAVING-PATTERN.hpp - Base patterns to organise data connections and render processing invocation
Copyright (C)
2008, Hermann Vosseler <Ichthyostega@web.de>
2024, Hermann Vosseler <Ichthyostega@web.de>
  **Lumiera** is free software; you can redistribute it and/or modify it
  under the terms of the GNU General Public License as published by the
  Free Software Foundation; either version 2 of the License, or (at your
  option) any later version. See the file COPYING for further details.
*/
/** @file param-weaving-pattern.hpp
** Construction set to assemble and operate a data processing scheme within a Render Node.
** Together with turnout.hpp, this header provides the "glue" which holds together the
** typical setup of a Render Node network for processing media data. A MediaWeavingPattern
** implements the sequence of steps as driven by the Turnout to combine the invocation
** of media processing operations from external Libraries with the buffer- and parameter
** management provided by the Lumiera Render Engine. Since these operations are conducted
** concurrently, all invocation state has to be maintained in local storage on the stack.
**
** # Integration with media handling Libraries
**
** A Render invocation originates from a [Render Job](\ref render-invocation.hpp), which first
** establishes a TurnoutSystem and then enters into the recursive Render Node activation by
** invoking Port::weave() for the »Exit Node«, as defined by the job's invocation parameters.
** The first step in the processing cycle, as established by the Port implementation (\ref Turnout),
** is to build a »Feed instance«, from the invocation of `mount(TurnoutSystem&)`.
**
** Generally speaking, a `Feed` fulfils the role of an _Invocation Adapter_ and a _Manifold_ of
** data connections. The standard implementation, as given by MediaWeavingPattern, relies on a
** combination of both into a \ref FeedManifold. This is a flexibly configured data adapter,
** directly combined with an embedded _adapter functor_ to wrap the invocation of processing
** operations provided by an external library.
**
** Usually some kind of internal systematics is assumed and applied within such a library.
** Operations can be exposed as plain function to invoke, or through some configuration and
** builder notion. Function arguments tend to follow a common arrangement and naming scheme,
** also assuming specific arrangement and data layout for input and output data. This kind of
** schematism is rooted in something deeper: exposing useful operations as a library collection
** requires a common ground, an understanding about the _order of things_ to be treated at least
** for those kind of things, which fall into a specific _domain,_ when tasks related to such a
** domain shall be supported by the Library. Such an (implicit or explicit) framework of structuring
** is usually designated as a **Domain Ontology** (in contrast to the questions pertaining Ontology
** in general, which are the subject of philosophy proper). Even seemingly practical matters like
** processing media data do rely on fundamental assumptions and basic premises regarding what is
** at stake and what shall be subject to treatment, what fundamental entities and relationships
** to consider within the domain. Incidentally, many of these assumptions are positive in nature
** and not necessarily a given which is the root of essential incompatibilities between Libraries
** targeting a similar domain: due to such fundamental differences, they just can not totally agree
** upon what kinds of things to expect and where to draw the line of distinction.
**
** The Lumiera Render Engine and media handling framework is built in a way _fundamentally agnostic_
** to the specific presuppositions of this or that media handling library. By and large, decisions,
** distinctions and qualifications are redirected back into the scope of the respective library, by
** means of a media-library adapter plug-in. Assuming that the user _in fact understands_ the meaning
** of and reasoning behind employing a given library, the _mere handling_ of the related processing
** can be reduced to a small set of organisational traits. For sake of consistency, you may label
** these as a »Render Engine Ontology«. In all brevity,
** - We assume that the library provides distinguishable processing operations
** that can be structured and classified and managed as _processing assets,_
** - we assume that processing is applied to sources or »media« and that
** the result of processing is again a source that can be processed further;
** - specific operations can thus be conceptualised as processing-stages or _Nodes,_
** interconnected by _media streams,_ which can be tagged with a _stream type._
** - At implementation level, such streams can be represented in entirety as data buffers
** of a specific layout, filled with some »frame« or chunk of data
** - and the single processing step or operation can be completely encapsulated
** as a pure function (referentially transparent, without side effects);
** - all state and parametrisation can be represented either as some further data stream in/out,
** or as parameters-of-processing, which can be passed as a set of values to the function
** prior of invocation, thereby completely determining the observable behaviour.
**
** # composition of the Invocation State
**
** By means of this positing, the attachment point to an external library can be reduced into a small
** number of connector links. Handling the capabilities of a library within the Session and high-level Model
** will require some kind of _registration,_ which is beyond the scope of this discussion here. As far as
** the Render Engine and the low-level-Model is concerned, any usage of the external libraries capabilities
** can be reduced into...
** - Preparing an adapter functor, designated as **processing-functor**. This functor takes three kinds of
** arguments, each packaged as a single function call argument, which may either be a single item, or
** possibly be structured as a tuple of heterogeneous elements, or an array of homogeneous items.
** + an output data buffer or several such buffers are always required
** + (optionally) an input buffer or several such buffers need to be supplied
** + (optionally) also a parameter value, tuple or array can be specified
** - Supplying actual parameter values (if necessary); these are drawn from the invocation
** of a further functor, designated as **parameter-functor**, and provided from within
** the internal framework of the Lumiera application, either to deliver fixed parameter
** settings configured by the user in the Session, or by evaluating _Parameter Automation,_
** or simply to supply some technically necessary context information, most notably the
** frame number of a source to retrieve.
** - Preparing buffers filled with input data, in a suitable format, one for each distinct
** item expected in the input data section of the processing-functor; filling these
** input buffers requires the _recursive invocation_ of further Render Nodes...
** - Allocating buffers for output data, sized and typed accordingly, likewise one for
** each distinct item detailed in the output data argument of the processing-functor.
**
** The FeedManifold template, which (as mentioned above) is used by this standard implementation
** of media processing in the form of the MediaWeavingPattern, is configured specifically for each
** distinct signature of a processing-functor to match the implied structural requirements. If a
** functor is output-only, no input buffer section is present; if it expects processing parameters,
** storage for an appropriate data tuple is provided and a parameter-functor can be configured.
** A clone-copy of the processing-functor itself is also stored as clone-copy alongside within
** the FeedManifold, and thus placed into stack memory, where it is safe even during deeply nested
** recursive invocation sequences, while rendering in general is performed massively in parallel.
**
** In the end, the actual implementation code of the weaving pattern has to perform the connection
** and integration between the »recursive weaving scheme« and the invocation structure implied by
** the FeedManifold. It has to set off the recursive pull-invocation of predecessor ports, retrieve
** the result data buffers from these and configure the FeedManifold with the \ref BuffHandle entries
** retrieved from these recursive calls. Buffer handling in general is abstracted and codified thorough
** the [Buffer Provider framework](\ref buffer-provider.hpp), which offers the means to allocate further
** buffers and configure them into the FeedManifold for the output data. The »buffer handling protocol«
** also requires to invoke BuffHandle::emit() at the point when result data can be assumed to be placed
** into the buffer, and to release buffers not further required through a BuffHandle::release() call;
** Notably this applies to the input buffers are completion of the processing-functor invocation, and
** is required also for secondary (and in a way, superfluous) result buffers, which are sometimes
** generated as a by-product of the processing function invocation, but are actually not passed
** as output up the node invocation chain.
**
** @see feed-manifold.hpp
** @see weaving-pattern-builder.hpp
** @see \ref proc-node.hpp "Overview of Render Node structures"
**
** @warning WIP as of 12/2024 first complete integration round of the Render engine ////////////////////////////TICKET #1367
**
*/
#ifndef STEAM_ENGINE_PARAM_WEAVING_PATTERN_H
#define STEAM_ENGINE_PARAM_WEAVING_PATTERN_H
#include "steam/common.hpp"
#include "steam/engine/turnout.hpp"
#include "steam/engine/turnout-system.hpp"
#include "steam/engine/feed-manifold.hpp"
/////////////////////////////////////////////////////////////////////////////////////////////////////////////TICKET #1367 : Rebuild the Node Invocation
//#include "vault/gear/job.h"
//#include "steam/engine/exit-node.hpp"
//#include "lib/time/timevalue.hpp"
//#include "lib/linked-elements.hpp"
#include "lib/several.hpp"
//#include "lib/util-foreach.hpp"
//#include "lib/iter-adapter.hpp"
//#include "lib/meta/function.hpp"
//#include "lib/itertools.hpp"
//#include "lib/util.hpp" ////////OOO wegen manifoldSiz<FUN>()
//#include <stack>
namespace steam {
namespace engine {
using lib::Several;
/**
* Standard implementation for a _Weaving Pattern_ to connect
* the input and output data feeds (buffers) into a processing function.
* @tparam INVO a configuration / policy base class to _adapt for invocation_
* @note assumptions made regarding the overall structure
* - `INVO::Feed` defines an _invocation adapter_ for the processing function
* - `INVO::buildFeed()` is a functor to (repeatedly) build `Feed` instances
* - the _invocation adapter_ in turn embeds a `FeedManifold<FUN>` to hold
* + a setup of output buffer pointers (single, tuple or array)
* + (optionally) a similar setup for input buffer pointers
* + (optionally) a parameter or parameter tuple
* + storage to configure BuffHandle entries for each «slot»
* + storage to hold the actual processing functor
*/
template<class INVO>
struct ParamWeavingPattern
: INVO
{
using Feed = typename INVO::Feed;
static_assert (_verify_usable_as_InvocationAdapter<Feed>());
Several<PortRef> leadPort;
Several<BuffDescr> outTypes;
uint resultSlot{0};
/** forwarding-ctor to provide the detailed input/output connections */
template<typename...ARGS>
ParamWeavingPattern (Several<PortRef>&& pr
,Several<BuffDescr>&& dr
,uint resultIdx
,ARGS&& ...args)
: INVO{forward<ARGS>(args)...}
, leadPort{move(pr)}
, outTypes{move(dr)}
, resultSlot{resultIdx}
{ }
Feed
mount (TurnoutSystem& turnoutSys)
{
ENSURE (leadPort.size() <= INVO::FAN_I);
ENSURE (outTypes.size() <= INVO::FAN_O);
return INVO::buildFeed (turnoutSys);
}
void
pull (Feed& feed, TurnoutSystem& turnoutSys)
{
if constexpr (Feed::hasInput())
for (uint i=0; i<leadPort.size(); ++i)
{
BuffHandle inputData = leadPort[i].get().weave (turnoutSys);
feed.inBuff.createAt(i, move(inputData));
}
}
void
shed (Feed& feed, OptionalBuff outBuff)
{
for (uint i=0; i<outTypes.size(); ++i)
{
BuffHandle resultData =
i == resultSlot and outBuff? *outBuff
: outTypes[i].lockBuffer();
feed.outBuff.createAt(i, move(resultData));
}
feed.connect();
}
void
weft (Feed& feed)
{
feed.invoke(); // process data
}
BuffHandle
fix (Feed& feed)
{
if constexpr (Feed::hasInput())
for (uint i=0; i<leadPort.size(); ++i)
{
feed.inBuff[i].release();
}
for (uint i=0; i<outTypes.size(); ++i)
{
feed.outBuff[i].emit(); // state transition: data ready
if (i != resultSlot)
feed.outBuff[i].release();
}
ENSURE (resultSlot < INVO::FAN_O, "invalid result buffer configured.");
return feed.outBuff[resultSlot];
}
};
}}// namespace steam::engine
#endif /*STEAM_ENGINE_PARAM_WEAVING_PATTERN_H*/

View file

@ -45,7 +45,7 @@
** and switches found in large railway stations.
** @see \ref proc-node.hpp "Overview of Render Node structures"
** @see turnout-system.hpp
** @see weaving-pattern.hpp
** @see media-weaving-pattern.hpp
** @see weaving-pattern-builder.hpp
** [Railroad Turnout]: https://en.wikipedia.org/wiki/Railroad_turnout
*/

View file

@ -135,9 +135,9 @@
#include "lib/several-builder.hpp"
#include "steam/engine/proc-id.hpp"
#include "steam/engine/engine-ctx.hpp"
#include "steam/engine/weaving-pattern.hpp"
#include "steam/engine/buffer-provider.hpp"
#include "steam/engine/buffhandle-attach.hpp" /////////////////OOO why do we need to include this? we need the accessAs<TY>() template function
#include "steam/engine/media-weaving-pattern.hpp"
#include "lib/meta/tuple-helper.hpp"
//#include "lib/test/test-helper.hpp" ////////////////////////////OOO TODO added for test
#include "lib/format-string.hpp"

View file

@ -19,7 +19,7 @@
#include "lib/test/run.hpp"
#include "steam/engine/proc-node.hpp"
#include "steam/engine/node-builder.hpp"
#include "steam/engine/weaving-pattern.hpp"
#include "steam/engine/media-weaving-pattern.hpp"
#include "steam/engine/turnout-system.hpp"
#include "steam/engine/turnout.hpp"
#include "steam/engine/diagnostic-buffer-provider.hpp"
@ -49,6 +49,7 @@ namespace test {
run (Arg)
{
feedParam();
feedParamNode();
UNIMPLEMENTED ("render node pulling source data from vault");
}

View file

@ -29210,9 +29210,7 @@
</node>
<node COLOR="#338800" CREATED="1560175529230" ID="ID_914166338" MODIFIED="1560441859516">
<richcontent TYPE="NODE"><html>
<head>
</head>
<head/>
<body>
<p>
Verh&#228;ltnis zum Inteface <b>Renderer</b>&#160;kl&#228;ren
@ -29731,9 +29729,7 @@
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1674248116285" ID="ID_1285555258" MODIFIED="1674254382320" TEXT="...da&#xdf; das wirkliche Maximum gemessen wird">
<richcontent TYPE="NOTE"><html>
<head>
</head>
<head/>
<body>
<p>
&#10233; es mu&#223; das strukturell korrekte Maximum explizit berechnet werden; w&#252;rden wir nur die rechte Spalte summieren, bliebe eine bereits bestehende Spreizung in der linken Spalte unber&#252;cksichtigt
@ -29969,9 +29965,7 @@
<icon BUILTIN="hourglass"/>
<node CREATED="1674160771852" ID="ID_459820507" MODIFIED="1674161151512" TEXT="Def &#xbb;scope ruler&#xab;">
<richcontent TYPE="NOTE"><html>
<head>
</head>
<head/>
<body>
<p>
Jeder Track kann 0...N Ruler haben (Ruler = horizontale Scala);
@ -30376,9 +30370,7 @@
</node>
<node CREATED="1560685923962" ID="ID_1098705000" MODIFIED="1576282358054" TEXT="Alternativ k&#xf6;nnte es...">
<richcontent TYPE="NOTE"><html>
<head>
</head>
<head/>
<body>
<p>
...im Session-Modell f&#252;r eine Timeline jeweils ein Property hierf&#252;r geben...
@ -31402,9 +31394,7 @@
</node>
<node COLOR="#338800" CREATED="1563033192867" ID="ID_243229354" MODIFIED="1563033251713" TEXT="besser erst dann aufrufen, wenn das TimelineWidget schon eingeh&#xe4;ngt ist">
<richcontent TYPE="NOTE"><html>
<head>
</head>
<head/>
<body>
<p>
...d.h. dann aus dem InteractionDirector heraus
@ -32043,9 +32033,7 @@
<node CREATED="1564932181697" ID="ID_266632545" MODIFIED="1564932191323" TEXT="l&#xe4;&#xdf;t sich aber integrieren">
<node CREATED="1564932194424" ID="ID_1904122891" MODIFIED="1576282358046" TEXT="die N&#xfc;tzlichkeit des box-shadow ist ohnehin beschr&#xe4;nkt">
<richcontent TYPE="NOTE"><html>
<head>
</head>
<head/>
<body>
<p>
falls inset, wird er nur <i>innerhalb </i>der border und &#252;ber den Hintergrund gezeichnet
@ -79198,7 +79186,7 @@ Date:&#160;&#160;&#160;Thu Apr 20 18:53:17 2023 +0200<br/>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1714777926334" ID="ID_579939758" MODIFIED="1714777939981" TEXT="Thema: Zuordnung zu einem Proze&#xdf;">
<icon BUILTIN="flag-yellow"/>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1714778001228" ID="ID_1999491710" MODIFIED="1730598037898" TEXT="wir brauchen einen Cache-Key">
<arrowlink COLOR="#79214c" DESTINATION="ID_968805110" ENDARROW="Default" ENDINCLINATION="271;-5;" ID="Arrow_ID_617691253" STARTARROW="None" STARTINCLINATION="-191;250;"/>
<arrowlink COLOR="#79214c" DESTINATION="ID_968805110" ENDARROW="Default" ENDINCLINATION="1028;-25;" ID="Arrow_ID_617691253" STARTARROW="None" STARTINCLINATION="-191;250;"/>
<arrowlink COLOR="#ff461d" DESTINATION="ID_518441567" ENDARROW="Default" ENDINCLINATION="475;-655;" ID="Arrow_ID_743151366" STARTARROW="None" STARTINCLINATION="197;254;"/>
<linktarget COLOR="#553750" DESTINATION="ID_1999491710" ENDARROW="Default" ENDINCLINATION="-708;70;" ID="Arrow_ID_338052928" SOURCE="ID_701755621" STARTARROW="None" STARTINCLINATION="842;41;"/>
<linktarget COLOR="#5c536b" DESTINATION="ID_1999491710" ENDARROW="Default" ENDINCLINATION="-1732;155;" ID="Arrow_ID_1638495806" SOURCE="ID_631143493" STARTARROW="None" STARTINCLINATION="944;56;"/>
@ -80720,7 +80708,7 @@ Date:&#160;&#160;&#160;Thu Apr 20 18:53:17 2023 +0200<br/>
</node>
<node CREATED="1714580592801" ID="ID_1478713442" MODIFIED="1715524362164" TEXT="Freiheitsgrade...">
<arrowlink COLOR="#3e5caa" DESTINATION="ID_206055852" ENDARROW="Default" ENDINCLINATION="-901;1952;" ID="Arrow_ID_1954815494" STARTARROW="None" STARTINCLINATION="-330;-93;"/>
<linktarget COLOR="#618cdf" DESTINATION="ID_1478713442" ENDARROW="Default" ENDINCLINATION="-1475;183;" ID="Arrow_ID_812438746" SOURCE="ID_865895790" STARTARROW="None" STARTINCLINATION="1596;-112;"/>
<linktarget COLOR="#618cdf" DESTINATION="ID_1478713442" ENDARROW="Default" ENDINCLINATION="-1489;181;" ID="Arrow_ID_812438746" SOURCE="ID_865895790" STARTARROW="None" STARTINCLINATION="1582;-114;"/>
<icon BUILTIN="info"/>
<node CREATED="1714580615114" ID="ID_1400673889" MODIFIED="1714580620205" TEXT="nominelle Zeit">
<node CREATED="1714580868121" HGAP="31" ID="ID_1305751151" MODIFIED="1714580906874" TEXT="die einzige pro Frame bewegliche Gr&#xf6;&#xdf;e" VSHIFT="3">
@ -82260,8 +82248,8 @@ Date:&#160;&#160;&#160;Thu Apr 20 18:53:17 2023 +0200<br/>
</html></richcontent>
</node>
<node CREATED="1735064599178" ID="ID_152831343" MODIFIED="1735064621219" TEXT="Konsequenz &#x27f9; Builder steuert Parameter via FeedPrototype"/>
<node CREATED="1735064622575" ID="ID_873434155" MODIFIED="1735068695791" TEXT="Ansatzpunkt auf dem Port-Builder">
<arrowlink COLOR="#8595a8" DESTINATION="ID_1218064070" ENDARROW="Default" ENDINCLINATION="-31;-184;" ID="Arrow_ID_1907314003" STARTARROW="None" STARTINCLINATION="-201;17;"/>
<node CREATED="1735064622575" ID="ID_873434155" MODIFIED="1735323528683" TEXT="Ansatzpunkt auf dem Port-Builder">
<arrowlink COLOR="#8595a8" DESTINATION="ID_1218064070" ENDARROW="Default" ENDINCLINATION="-31;-184;" ID="Arrow_ID_1907314003" STARTARROW="None" STARTINCLINATION="-219;19;"/>
<node CREATED="1735064673697" ID="ID_1825450032" MODIFIED="1735064771303" TEXT="brauche Quer-Schwenk auf schon bestehendem (vollen) PortBuilder">
<richcontent TYPE="NOTE"><html>
<head/>
@ -82275,7 +82263,112 @@ Date:&#160;&#160;&#160;Thu Apr 20 18:53:17 2023 +0200<br/>
<node CREATED="1735064779481" ID="ID_1880332085" MODIFIED="1735064805874" TEXT="mu&#xdf; Parametrisierung des eingebetteten WeavingBuilders heben / erg&#xe4;nzen"/>
</node>
</node>
<node CREATED="1733431522849" ID="ID_1650778246" MODIFIED="1735055781159" TEXT="ParamNode: Auswertung"/>
<node CREATED="1733431522849" ID="ID_1650778246" MODIFIED="1735321833734" TEXT="ParamNode: Auswertung">
<linktarget COLOR="#d10d4d" DESTINATION="ID_1650778246" ENDARROW="Default" ENDINCLINATION="-1710;1813;" ID="Arrow_ID_720477782" SOURCE="ID_796632095" STARTARROW="None" STARTINCLINATION="4744;-200;"/>
<linktarget COLOR="#6c6489" DESTINATION="ID_1650778246" ENDARROW="Default" ENDINCLINATION="-274;1070;" ID="Arrow_ID_1212360945" SOURCE="ID_113807641" STARTARROW="None" STARTINCLINATION="1789;61;"/>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1735322445124" ID="ID_77949868" MODIFIED="1735322738864">
<richcontent TYPE="NODE"><html>
<head/>
<body>
<p>
Beachte: es handelt sich um einen Erweiterungspunkt von <i>theoretischer Relevanz...</i>
</p>
</body>
</html>
</richcontent>
<richcontent TYPE="NOTE"><html>
<head/>
<body>
<p>
Ich kann derzeit lediglich vorhersagen, da&#223; die strikte Beschr&#228;nkung allein auf die <i>absolute-nominal-Time</i>&#160;im Allgemeinen nicht durchzuhalten ist. Es sind F&#228;lle denkbar, in denen im Besondern aktzeller kontextueller Zustand der Applikation mit einflie&#223;t &#8212; die Automations-Auswertung mithin keine <i>&#187;pure Function&#171;</i>&#160;mehr ist.
</p>
<p>
Ich halte es f&#252;r ehrlicher, diese M&#246;glichkeit offen aufzuzeigen, und daf&#252;r sogar einen Ansatzpunkt im Modell vorzusehen; denn es ist allemal besser, wenn eine solche externe Verbindung sich als eine &#187;AgentNode&#171; im Modell niederschl&#228;gt, als wenn sie irgendwo durch eine Hintert&#252;r in einem Seiten-Effekt einzelner Parameter-Funktoren versteckt wird...
</p>
</body>
</html></richcontent>
<icon BUILTIN="messagebox_warning"/>
</node>
<node CREATED="1735321213285" ID="ID_378343455" MODIFIED="1735321333153" TEXT="Disponieren einer Param(Agent)Node">
<linktarget COLOR="#404379" DESTINATION="ID_378343455" ENDARROW="Default" ENDINCLINATION="117;1022;" ID="Arrow_ID_1292202508" SOURCE="ID_1191574208" STARTARROW="None" STARTINCLINATION="967;42;"/>
<node CREATED="1735324031254" ID="ID_445760123" MODIFIED="1735324061664" TEXT="um sie zu nutzen....">
<icon BUILTIN="idea"/>
<node CREATED="1735324070658" ID="ID_1716605155" MODIFIED="1735324090841" TEXT="wird man sie an einer strategisch relevanten Stelle in den Graphen einbauen wollen"/>
<node CREATED="1735324096255" ID="ID_1218284262" MODIFIED="1735324240952" TEXT="das wirft ein Problem wechselseitiger Abh&#xe4;ngigkeiten auf">
<richcontent TYPE="NOTE"><html>
<head/>
<body>
<p>
Die ParamAgentNode wird bez&#252;glich des Aufrufs eine darunter liegende Node <i>durchreichen</i>&#160;wollen. Aber die Definition dieser darunter liegenden Node und deren Leads wird, typischerweise, auf die &#187;Slots&#171; im ParamAgent bezug nehmen...
</p>
</body>
</html></richcontent>
</node>
<node CREATED="1735324313680" ID="ID_1620003909" MODIFIED="1735324375479">
<richcontent TYPE="NODE"><html>
<head/>
<body>
<p>
&#10233; folglich braucht es eine vorgelagerte <b><font face="Monospaced" color="#1c0b4e">ParamBuildSpec</font></b>
</p>
</body>
</html>
</richcontent>
</node>
<node CREATED="1735350499597" ID="ID_499331038" MODIFIED="1735350817902" TEXT="sonstiges Layout ist implizit">
<node CREATED="1735350823586" ID="ID_1873404429" MODIFIED="1735351601621" TEXT="in der ParamBuildSpec....">
<node CREATED="1735351602657" ID="ID_874026298" MODIFIED="1735351614340" TEXT=" k&#xf6;nnen Parameter-Funktoren zur Initialisierung liegen"/>
<node CREATED="1735351634861" ID="ID_941747027" MODIFIED="1735351649122" TEXT="oder auch nur konstante Init-Werte f&#xfc;r einzelne Slots"/>
</node>
<node CREATED="1735351717186" ID="ID_100908146" MODIFIED="1735351729818" TEXT="optional kann ein Closure-Funktor gegeben werden">
<node CREATED="1735351731245" ID="ID_1745183302" MODIFIED="1735351748417" TEXT="dieser ist void(TurnoutSystem&amp;)"/>
<node CREATED="1735351840835" ID="ID_1719532257" MODIFIED="1735351861027" TEXT="er sieht in diesem TurnoutSystem bereits den Chain-Block"/>
<node CREATED="1735351752071" ID="ID_1884299327" MODIFIED="1735351825623" TEXT="er k&#xf6;nnte als Side-Chain eine Node aufrufen">
<icon BUILTIN="idea"/>
</node>
</node>
<node CREATED="1735350848463" ID="ID_825377755" MODIFIED="1735350868039" TEXT="explizit wird nur ein Invocation-Chain gegeben">
<node CREATED="1735351410795" ID="ID_1348409884" MODIFIED="1735351454345" TEXT="dieser sieht in seinem Turnout-System den erweiterten Datenblock"/>
<node CREATED="1735351457973" ID="ID_1762703699" MODIFIED="1735351481290" TEXT="und sein Ergebnis-Buffer wird schlie&#xdf;lich als Ergebnis durchgereicht"/>
</node>
</node>
</node>
<node CREATED="1735353545681" ID="ID_532492491" MODIFIED="1735353570163" TEXT="Tr&#xe4;ger-Strukturen ben&#xf6;tigt">
<node CREATED="1735353572081" ID="ID_1577179744" MODIFIED="1735416204610" TEXT="ParamBuildSpec">
<arrowlink COLOR="#bb1f2e" DESTINATION="ID_736958022" ENDARROW="Default" ENDINCLINATION="-25;-162;" ID="Arrow_ID_44922252" STARTARROW="None" STARTINCLINATION="32;153;"/>
<node CREATED="1735353649862" ID="ID_1195888823" MODIFIED="1735353669151" TEXT="mu&#xdf; statisch (&#xbb;aus dem Nichts&#xab;) erzeugbar sein">
<node CREATED="1735353859329" ID="ID_115937743" MODIFIED="1735353870651" TEXT="also von dem default-TurnoutSystem"/>
<node CREATED="1735353871759" ID="ID_982996300" MODIFIED="1735353886009" TEXT="alternativ: als Erweiterung zu einer bestehenden Chain"/>
</node>
<node CREATED="1735353673979" ID="ID_478818840" MODIFIED="1735353688725" TEXT="sollte selbst eine Art Typ-Builder-Notation darstellen"/>
<node CREATED="1735353738797" ID="ID_378372956" MODIFIED="1735353750624" TEXT="enth&#xe4;lt eine Folge von &#xbb;Slots&#xab;">
<node CREATED="1735353751968" ID="ID_1565293851" MODIFIED="1735353771287" TEXT="jeder Slot steht f&#xfc;r einen Parameter-Wert"/>
<node CREATED="1735353775789" ID="ID_1394846816" MODIFIED="1735353797045" TEXT="dazu ist ein Funktor-Typ definiert"/>
<node CREATED="1735353798274" ID="ID_1422658744" MODIFIED="1735353856467" TEXT="und ein Accessor-Typ">
<node CREATED="1735353948999" ID="ID_1107757772" MODIFIED="1735353956728" TEXT="dieser findet zum Slot zur&#xfc;ck"/>
<node CREATED="1735353970175" ID="ID_542964897" MODIFIED="1735353992387" TEXT="und ist eine Erweiterung der HeteroData-Accessoren">
<node CREATED="1735353994703" ID="ID_755528962" MODIFIED="1735354004015" TEXT="vielleicht gar keine Erweiterung?"/>
</node>
</node>
</node>
</node>
<node CREATED="1735353577816" ID="ID_1908488051" MODIFIED="1735416015564" TEXT="ParamWeavingPattern">
<arrowlink COLOR="#9b505d" DESTINATION="ID_348960119" ENDARROW="Default" ENDINCLINATION="116;-502;" ID="Arrow_ID_967296024" STARTARROW="None" STARTINCLINATION="78;483;"/>
<node CREATED="1735354012199" ID="ID_1188003901" MODIFIED="1735354036645" TEXT="mu&#xdf; die vollst&#xe4;ndige Verarbeitungsfolge eines ParamAgent darstellen"/>
<node CREATED="1735354094901" ID="ID_1484484879" LINK="#ID_357401280" MODIFIED="1735416059728" TEXT="Schritte">
<node CREATED="1735354099466" ID="ID_401717230" MODIFIED="1735354156573" TEXT="mount : Feed-Frame erzeugen"/>
<node CREATED="1735354158273" ID="ID_1053216917" MODIFIED="1735354198247" TEXT="pull : Param-Funktor aufrufen und Tupel erstellen"/>
<node CREATED="1735354209348" ID="ID_1431347028" MODIFIED="1735354256129" TEXT="shed : Chain-Block erstellen und nachverarbeiten"/>
<node CREATED="1735354287727" ID="ID_1794150447" MODIFIED="1735354316106" TEXT="weft : Target-Node aufrufen"/>
<node CREATED="1735354360652" ID="ID_973572549" MODIFIED="1735354376078" TEXT="fix : Chain-Block abh&#xe4;ngen und Output-Buffer zur&#xfc;ckggeben"/>
</node>
</node>
</node>
<node CREATED="1735416828361" ID="ID_874513800" MODIFIED="1735416906787" TEXT="Einstiegspunkt auf dem PortBuilderRoot">
<arrowlink COLOR="#9c47c5" DESTINATION="ID_921902157" ENDARROW="Default" ENDINCLINATION="-472;-1106;" ID="Arrow_ID_1849846169" STARTARROW="None" STARTINCLINATION="-130;9;"/>
</node>
</node>
</node>
</node>
<node CREATED="1720143945014" ID="ID_1230383106" MODIFIED="1720143962663" TEXT="prepareNode()">
<node CREATED="1720143965823" ID="ID_1699834856" MODIFIED="1720144003274" TEXT="addLead(ProcNode&amp;)"/>
@ -82335,9 +82428,9 @@ Date:&#160;&#160;&#160;Thu Apr 20 18:53:17 2023 +0200<br/>
<node CREATED="1728587027861" ID="ID_1530575925" MODIFIED="1728587061668" TEXT="connectLeadPort(ProcNode&amp;, p)"/>
<node CREATED="1728587063136" ID="ID_26296441" MODIFIED="1728587070363" TEXT="useLeadPort(p)"/>
</node>
<node CREATED="1735068628307" ID="ID_1218064070" MODIFIED="1735234502189" TEXT="Konfiguration f&#xfc;r Parameter">
<node CREATED="1735068628307" ID="ID_1218064070" MODIFIED="1735323528683" TEXT="Konfiguration f&#xfc;r Parameter">
<arrowlink COLOR="#3d55ca" DESTINATION="ID_470723577" ENDARROW="Default" ENDINCLINATION="-1255;-52;" ID="Arrow_ID_767774106" STARTARROW="None" STARTINCLINATION="289;1826;"/>
<linktarget COLOR="#8595a8" DESTINATION="ID_1218064070" ENDARROW="Default" ENDINCLINATION="-31;-184;" ID="Arrow_ID_1907314003" SOURCE="ID_873434155" STARTARROW="None" STARTINCLINATION="-201;17;"/>
<linktarget COLOR="#8595a8" DESTINATION="ID_1218064070" ENDARROW="Default" ENDINCLINATION="-31;-184;" ID="Arrow_ID_1907314003" SOURCE="ID_873434155" STARTARROW="None" STARTINCLINATION="-219;19;"/>
<node CREATED="1735181285893" ID="ID_598324724" MODIFIED="1735234161386" TEXT="setParam(PAR)">
<richcontent TYPE="NOTE"><html>
<head/>
@ -82485,6 +82578,11 @@ Date:&#160;&#160;&#160;Thu Apr 20 18:53:17 2023 +0200<br/>
</node>
</node>
</node>
<node BACKGROUND_COLOR="#d2beaf" COLOR="#5c4d6e" CREATED="1735416652065" ID="ID_921902157" MODIFIED="1735416906788" TEXT="Spezialfall: Param(Agent)Node">
<arrowlink COLOR="#482c86" DESTINATION="ID_329885446" ENDARROW="Default" ENDINCLINATION="-553;-36;" ID="Arrow_ID_1024921689" STARTARROW="None" STARTINCLINATION="598;1114;"/>
<linktarget COLOR="#9c47c5" DESTINATION="ID_921902157" ENDARROW="Default" ENDINCLINATION="-472;-1106;" ID="Arrow_ID_1849846169" SOURCE="ID_874513800" STARTARROW="None" STARTINCLINATION="-130;9;"/>
<icon BUILTIN="hourglass"/>
</node>
<node CREATED="1720178543387" ID="ID_1839001807" MODIFIED="1720178576252" TEXT="adaptInvocation&lt;ADA&gt;">
<node CREATED="1720178577432" ID="ID_438090694" MODIFIED="1720178597453" TEXT="ADA &#x2261; Typ der Invocation-Adapter Klasse"/>
<node CREATED="1720178598060" ID="ID_1951506826" MODIFIED="1720999561682">
@ -83035,6 +83133,14 @@ Date:&#160;&#160;&#160;Thu Apr 20 18:53:17 2023 +0200<br/>
</body>
</html></richcontent>
</node>
<node CREATED="1735414861630" ID="ID_1832247988" MODIFIED="1735414864372" TEXT="konkret">
<node CREATED="1735414867120" ID="ID_882727048" MODIFIED="1735415639542" TEXT="MediaWeavingPattern f&#xfc;r Medien-Daten-Berechnung">
<arrowlink COLOR="#4033e3" DESTINATION="ID_1680202759" ENDARROW="Default" ENDINCLINATION="-2222;-127;" ID="Arrow_ID_607031123" STARTARROW="None" STARTINCLINATION="2266;131;"/>
</node>
<node CREATED="1735414867120" ID="ID_1769136387" MODIFIED="1735415633919" TEXT="ParamWeavingPattern f&#xfc;r komplexe Parameter-Koordination">
<arrowlink COLOR="#4033e3" DESTINATION="ID_348960119" ENDARROW="Default" ENDINCLINATION="-2228;-103;" ID="Arrow_ID_1086551966" STARTARROW="None" STARTINCLINATION="1977;97;"/>
</node>
</node>
</node>
<node CREATED="1733427164499" ID="ID_627271416" MODIFIED="1733427171988" TEXT="Turnout-System">
<node CREATED="1733427176722" ID="ID_450419618" MODIFIED="1733427183501" TEXT="entsteht transient f&#xfc;r jeden Aufruf"/>
@ -86590,7 +86696,7 @@ Date:&#160;&#160;&#160;Thu Apr 20 18:53:17 2023 +0200<br/>
<node CREATED="1715524107426" ID="ID_1048111807" MODIFIED="1715524113447" TEXT="Job">
<node CREATED="1715524116854" ID="ID_701533734" MODIFIED="1715524124821" TEXT="Aufruf / Funktor"/>
<node CREATED="1715524163676" ID="ID_865895790" MODIFIED="1715524362164" TEXT="Job-Parameter">
<arrowlink COLOR="#618cdf" DESTINATION="ID_1478713442" ENDARROW="Default" ENDINCLINATION="-1475;183;" ID="Arrow_ID_812438746" STARTARROW="None" STARTINCLINATION="1596;-112;"/>
<arrowlink COLOR="#618cdf" DESTINATION="ID_1478713442" ENDARROW="Default" ENDINCLINATION="-1489;181;" ID="Arrow_ID_812438746" STARTARROW="None" STARTINCLINATION="1582;-114;"/>
</node>
</node>
<node CREATED="1715524428545" ID="ID_560958356" MODIFIED="1733427020906" TEXT="Render-Node">
@ -86801,6 +86907,9 @@ Date:&#160;&#160;&#160;Thu Apr 20 18:53:17 2023 +0200<br/>
</node>
</node>
<node CREATED="1733425723596" ID="ID_710246921" MODIFIED="1733425985917" TEXT="das Turnout-System erm&#xf6;glicht Datenaustausch an der Hierarchie vorbei"/>
<node CREATED="1735318790618" ID="ID_559218482" MODIFIED="1735319158579" TEXT="es stellt daf&#xfc;r ein front-End-API bereit">
<arrowlink COLOR="#416c8f" DESTINATION="ID_837392347" ENDARROW="Default" ENDINCLINATION="-1509;-82;" ID="Arrow_ID_1306665687" STARTARROW="None" STARTINCLINATION="669;49;"/>
</node>
</node>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1720313949720" ID="ID_545937744" MODIFIED="1720314520064" TEXT="Memory-Management einrichten">
@ -88120,11 +88229,79 @@ Date:&#160;&#160;&#160;Thu Apr 20 18:53:17 2023 +0200<br/>
<node COLOR="#435e98" CREATED="1733883796910" ID="ID_1268320323" MODIFIED="1734040982353" TEXT="Grenzen / Gefahren / Manipulation zeigen"/>
</node>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1733767161520" ID="ID_1853669534" MODIFIED="1733767188150" TEXT="Standard-Definition f&#xfc;r TurnoutSystem auf dieser Basis">
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1733767161520" ID="ID_1853669534" MODIFIED="1735317877078" TEXT="Standard-Definition f&#xfc;r TurnoutSystem auf dieser Basis">
<arrowlink COLOR="#8936cd" DESTINATION="ID_1602954198" ENDARROW="Default" ENDINCLINATION="91;-154;" ID="Arrow_ID_799125046" STARTARROW="None" STARTINCLINATION="-312;15;"/>
<icon BUILTIN="flag-yellow"/>
</node>
</node>
</node>
<node CREATED="1735317829474" ID="ID_1602954198" MODIFIED="1735317877078" TEXT="HeteroData-Storage in TurnoutSystem integriert">
<linktarget COLOR="#8936cd" DESTINATION="ID_1602954198" ENDARROW="Default" ENDINCLINATION="91;-154;" ID="Arrow_ID_799125046" SOURCE="ID_1853669534" STARTARROW="None" STARTINCLINATION="-312;15;"/>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1735317895769" ID="ID_820113536" MODIFIED="1735319385665" TEXT="Standard-Container einrichten">
<icon BUILTIN="flag-yellow"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1735317904224" ID="ID_1075228" MODIFIED="1735319401454" TEXT="&#xe4;u&#xdf;eres API ableiten">
<linktarget COLOR="#bf136e" DESTINATION="ID_1075228" ENDARROW="Default" ENDINCLINATION="-1141;139;" ID="Arrow_ID_862683421" SOURCE="ID_972907747" STARTARROW="None" STARTINCLINATION="-1041;-48;"/>
<icon BUILTIN="yes"/>
<node CREATED="1735317930357" ID="ID_1334553457" MODIFIED="1735319415952" TEXT="Anforderungen">
<icon BUILTIN="yes"/>
<node CREATED="1735319020096" ID="ID_837392347" MODIFIED="1735319158579" TEXT="Steuerung &#xfc;bergreifender Datenaustausch">
<linktarget COLOR="#416c8f" DESTINATION="ID_837392347" ENDARROW="Default" ENDINCLINATION="-1509;-82;" ID="Arrow_ID_1306665687" SOURCE="ID_559218482" STARTARROW="None" STARTINCLINATION="669;49;"/>
</node>
<node CREATED="1735319244509" ID="ID_1172487625" MODIFIED="1735321094521" TEXT="Basis f&#xfc;r Parameter-Behandlung im Node-Builder">
<linktarget COLOR="#a04095" DESTINATION="ID_1172487625" ENDARROW="Default" ENDINCLINATION="-1928;110;" ID="Arrow_ID_970821272" SOURCE="ID_828844081" STARTARROW="None" STARTINCLINATION="-1172;-61;"/>
<node CREATED="1735319768739" ID="ID_1368931891" MODIFIED="1735321078648" TEXT="direkter Zugriff auf Basis-Parameter f&#xfc;r Automation">
<richcontent TYPE="NOTE"><html>
<head/>
<body>
<p>
der PortBuilder kann einen Adapter f&#252;r klassische Parameter-Automation bauen; dieser mu&#223; intern auf die <i>absolute-nominal-Time</i>&#160; zugreifen k&#246;nnen
</p>
</body>
</html>
</richcontent>
</node>
<node CREATED="1735319814705" ID="ID_1191574208" MODIFIED="1735321333153" TEXT="Zugang zu Chain-Datablock Typ-Konstruktor aus dem NodeBuilder">
<richcontent TYPE="NOTE"><html>
<head/>
<body>
<p>
F&#252;r den Bau einer Param(Agent)Node wird ein Chain-Block vorbereitet, welcher sp&#228;ter dann in einen Invocation-Stack-Frame gelegt werden soll. Die tats&#228;chlichen Dateninhalte f&#252;r diesen Block stammen aus dem Aufruf eines Funktors, der in diesen Vorgang hinein verdrahtet wird. Der Builder mu&#223; selber einen Funktor konstruieren, der sp&#228;ter alle diese Aktionen w&#228;hrend der Invocation ausf&#252;hrt, als Schritte des speziellen Weaving-Patterns, das hier zum Einsatz kommt. Daf&#252;r braucht er Zugang zu Typ-Konstruktoren, die <i>prinzipiell bereits zur compile-Zeit vorliegen,</i>&#160; da das TurnoutSystem eine fest eingestellte Basis-Typisierung als Anker verwendet. Darauf aufbauend erzeugt die konkrete Builder-Instanz den Typ f&#252;r konkrete Accessoren, und bettet sie in die vorbereitete Invocation ein
</p>
</body>
</html></richcontent>
<arrowlink COLOR="#404379" DESTINATION="ID_378343455" ENDARROW="Default" ENDINCLINATION="117;1022;" ID="Arrow_ID_1292202508" STARTARROW="None" STARTINCLINATION="967;42;"/>
</node>
</node>
<node CREATED="1735319455489" ID="ID_1454063827" MODIFIED="1735319466751" TEXT="Zugriff auf Daten im Overflow-Chain">
<node CREATED="1735319487891" ID="ID_662237915" MODIFIED="1735319507209" TEXT="Hetero-Data-Basis">
<icon BUILTIN="info"/>
</node>
<node CREATED="1735319580465" ID="ID_3993528" MODIFIED="1735319762044" TEXT="als Solches nur halb-sicher">
<richcontent TYPE="NOTE"><html>
<head/>
<body>
<p>
die Typisierung &#252;ber Hetero-Data stellt grunds&#228;tzlich sicher, da&#223; es die zuzugreifenden Struktur irgendwann, irgendwie in diesem Executable <i>geben kann,</i>&#160;aber nicht wann sie tats&#228;chlich existiert, oder wie lange sie lebt. Auch der Zugang &#252;ber die interne linked-List stellt nur sicher, da&#223; die Datenstruktur bereits erzeugt wurde, nicht aber <i>da&#223; sie noch lebt</i>
</p>
</body>
</html></richcontent>
</node>
<node CREATED="1735320475025" ID="ID_1497021125" MODIFIED="1735320576626" TEXT="volle Sicherheit durch Scoping der Node-Invocation">
<richcontent TYPE="NOTE"><html>
<head/>
<body>
<p>
die konkreten Accessoren werden als spezielle Typisierung in einen privaten Kontext in ein invocation-&#955; eingebettet, so da&#223; sie nur aus dem Scope der tats&#228;chlichen Invocation heraus sichtbar sind; solange dieser Scope lebt, ist <i>per Definitionem</i>&#160;auch zumindest dieser Chain-Block valide und zugreifbar.
</p>
</body>
</html>
</richcontent>
</node>
</node>
</node>
</node>
</node>
</node>
<node CREATED="1733588494688" ID="ID_1675794578" MODIFIED="1733588502918" TEXT="alles Weitere: in Buffer legen">
<node CREATED="1733588511019" ID="ID_1891013981" MODIFIED="1733588526527" TEXT="die jeweilge Node kennt die ben&#xf6;tige Buffer-Gr&#xf6;&#xdf;e"/>
@ -91129,8 +91306,9 @@ Date:&#160;&#160;&#160;Thu Apr 20 18:53:17 2023 +0200<br/>
</html></richcontent>
</node>
</node>
<node BACKGROUND_COLOR="#eef0c5" COLOR="#990000" CREATED="1720546521352" ID="ID_1680202759" MODIFIED="1729962090231" TEXT="ein einfaches WeavingPattern f&#xfc;r einen 1:1 Aufruf">
<node BACKGROUND_COLOR="#eef0c5" COLOR="#990000" CREATED="1720546521352" ID="ID_1680202759" MODIFIED="1735415902955" TEXT="ein einfaches WeavingPattern f&#xfc;r einen 1:1 Aufruf">
<linktarget COLOR="#ff6936" DESTINATION="ID_1680202759" ENDARROW="Default" ENDINCLINATION="-884;1900;" ID="Arrow_ID_1934503032" SOURCE="ID_313412689" STARTARROW="None" STARTINCLINATION="789;48;"/>
<linktarget COLOR="#4033e3" DESTINATION="ID_1680202759" ENDARROW="Default" ENDINCLINATION="-2222;-127;" ID="Arrow_ID_607031123" SOURCE="ID_882727048" STARTARROW="None" STARTINCLINATION="2266;131;"/>
<icon BUILTIN="pencil"/>
<node BACKGROUND_COLOR="#eef0c5" COLOR="#990000" CREATED="1720567224202" ID="ID_933061351" MODIFIED="1720567366517" TEXT="Buffer-Konstruktor-Spec bereitstellen">
<arrowlink COLOR="#6555a4" DESTINATION="ID_33806321" ENDARROW="Default" ENDINCLINATION="-432;713;" ID="Arrow_ID_1589842372" STARTARROW="None" STARTINCLINATION="-186;-18;"/>
@ -91573,8 +91751,8 @@ Date:&#160;&#160;&#160;Thu Apr 20 18:53:17 2023 +0200<br/>
</node>
</node>
</node>
<node BACKGROUND_COLOR="#eef0c5" COLOR="#990000" CREATED="1734060125195" ID="ID_1347066000" MODIFIED="1734755857763" TEXT="Entwurf um Storage + Funktor f&#xfc;r Parameter erg&#xe4;nzen">
<linktarget COLOR="#b02152" DESTINATION="ID_1347066000" ENDARROW="Default" ENDINCLINATION="-739;36;" ID="Arrow_ID_1367798112" SOURCE="ID_1795912761" STARTARROW="None" STARTINCLINATION="532;31;"/>
<node BACKGROUND_COLOR="#eef0c5" COLOR="#990000" CREATED="1734060125195" ID="ID_1347066000" MODIFIED="1735415986487" TEXT="Entwurf um Storage + Funktor f&#xfc;r Parameter erg&#xe4;nzen">
<linktarget COLOR="#b02152" DESTINATION="ID_1347066000" ENDARROW="Default" ENDINCLINATION="-925;49;" ID="Arrow_ID_1367798112" SOURCE="ID_1795912761" STARTARROW="None" STARTINCLINATION="532;31;"/>
<icon BUILTIN="pencil"/>
<node BACKGROUND_COLOR="#c8c0b6" COLOR="#435e98" CREATED="1734060219654" ID="ID_64712491" MODIFIED="1734060380089" TEXT="Konzeption der Nutz-Muster">
<arrowlink COLOR="#314dba" DESTINATION="ID_927225402" ENDARROW="Default" ENDINCLINATION="536;1135;" ID="Arrow_ID_352726523" STARTARROW="None" STARTINCLINATION="-380;-913;"/>
@ -93992,6 +94170,25 @@ Date:&#160;&#160;&#160;Thu Apr 20 18:53:17 2023 +0200<br/>
</node>
</node>
</node>
<node BACKGROUND_COLOR="#eef0c5" COLOR="#990000" CREATED="1720546521352" ID="ID_348960119" MODIFIED="1735416007612" TEXT="ein WeavingPattern f&#xfc;r erweiterte Parameter-Auswertung">
<linktarget COLOR="#4033e3" DESTINATION="ID_348960119" ENDARROW="Default" ENDINCLINATION="-2228;-103;" ID="Arrow_ID_1086551966" SOURCE="ID_1769136387" STARTARROW="None" STARTINCLINATION="1977;97;"/>
<linktarget COLOR="#ff6936" DESTINATION="ID_348960119" ENDARROW="Default" ENDINCLINATION="-641;1944;" ID="Arrow_ID_1163958018" SOURCE="ID_311704401" STARTARROW="None" STARTINCLINATION="1383;132;"/>
<linktarget COLOR="#9b505d" DESTINATION="ID_348960119" ENDARROW="Default" ENDINCLINATION="116;-502;" ID="Arrow_ID_967296024" SOURCE="ID_1908488051" STARTARROW="None" STARTINCLINATION="78;483;"/>
<icon BUILTIN="pencil"/>
<node CREATED="1735416170297" ID="ID_736958022" MODIFIED="1735416236279" TEXT="brauche ParamBuildSpec">
<linktarget COLOR="#bb1f2e" DESTINATION="ID_736958022" ENDARROW="Default" ENDINCLINATION="-25;-162;" ID="Arrow_ID_44922252" SOURCE="ID_1577179744" STARTARROW="None" STARTINCLINATION="32;153;"/>
<node CREATED="1735416468553" ID="ID_1257939291" MODIFIED="1735416600613" TEXT="dient als Basis f&#xfc;r einen ParamNode-Builder">
<arrowlink COLOR="#5747d2" DESTINATION="ID_329885446" ENDARROW="Default" ENDINCLINATION="-844;-25;" ID="Arrow_ID_1824926310" STARTARROW="None" STARTINCLINATION="-633;42;"/>
</node>
</node>
<node CREATED="1735354094901" ID="ID_357401280" LINK="#ID_1484484879" MODIFIED="1735416065935" TEXT="Grundstruktur / Schrittfolge">
<node CREATED="1735354099466" ID="ID_1086019960" MODIFIED="1735354156573" TEXT="mount : Feed-Frame erzeugen"/>
<node CREATED="1735354158273" ID="ID_1400465949" MODIFIED="1735354198247" TEXT="pull : Param-Funktor aufrufen und Tupel erstellen"/>
<node CREATED="1735354209348" ID="ID_1189493104" MODIFIED="1735354256129" TEXT="shed : Chain-Block erstellen und nachverarbeiten"/>
<node CREATED="1735354287727" ID="ID_348185915" MODIFIED="1735354316106" TEXT="weft : Target-Node aufrufen"/>
<node CREATED="1735354360652" ID="ID_128985053" MODIFIED="1735354376078" TEXT="fix : Chain-Block abh&#xe4;ngen und Output-Buffer zur&#xfc;ckggeben"/>
</node>
</node>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1720620607691" ID="ID_1114186515" MODIFIED="1720620622602" TEXT="diese Invocation nun konfigurierbar machen">
<icon BUILTIN="flag-yellow"/>
@ -97366,12 +97563,14 @@ StM_bind(Builder&lt;R1&gt; b1, Extension&lt;R1,R2&gt; extension)
<font NAME="SansSerif" SIZE="10"/>
</node>
</node>
<node CREATED="1735181310482" ID="ID_828844081" MODIFIED="1735181326359" TEXT="retrieveParam(Accessor)">
<node CREATED="1735181310482" ID="ID_828844081" MODIFIED="1735321094521" TEXT="retrieveParam(Accessor)">
<arrowlink COLOR="#a04095" DESTINATION="ID_1172487625" ENDARROW="Default" ENDINCLINATION="-1928;110;" ID="Arrow_ID_970821272" STARTARROW="None" STARTINCLINATION="-1172;-61;"/>
<node CREATED="1735181646685" HGAP="31" ID="ID_1181419965" MODIFIED="1735265718809" TEXT="Parameter aus TurnoutSystem per Accessor abholen">
<font NAME="SansSerif" SIZE="10"/>
</node>
</node>
<node CREATED="1735181577102" ID="ID_524332742" MODIFIED="1735181609213" TEXT="attachAutomation(AUTO)">
<node CREATED="1735181577102" ID="ID_524332742" MODIFIED="1735318266930" TEXT="attachAutomation(AUTO)">
<arrowlink COLOR="#8f2ea4" DESTINATION="ID_972907747" ENDARROW="Default" ENDINCLINATION="887;-53;" ID="Arrow_ID_685087124" STARTARROW="None" STARTINCLINATION="-536;60;"/>
<node CREATED="1735181646685" HGAP="30" ID="ID_1875790841" MODIFIED="1735181809869" TEXT="zeitbasierte Funktion adaptieren (Zeit aus Turnoutsystem)">
<font NAME="SansSerif" SIZE="10"/>
</node>
@ -97399,7 +97598,36 @@ StM_bind(Builder&lt;R1&gt; b1, Extension&lt;R1,R2&gt; extension)
<node CREATED="1735244535909" ID="ID_1449241849" MODIFIED="1735244566899" TEXT="hier einmal ein Turnout explizit &#x201e;zu Fu&#xdf;&#x201c; gebaut..."/>
<node CREATED="1735244568320" ID="ID_1640313609" MODIFIED="1735244582210" TEXT="...und auch direkt aufgerufen, ohne umschli&#xdf;ene ProcNode"/>
</node>
<node CREATED="1735235299769" ID="ID_1559115287" LINK="#ID_1305712041" MODIFIED="1735235841042" TEXT="Node-Feed: ParamNode &#x27f6; extraParams"/>
<node CREATED="1735235299769" ID="ID_1559115287" LINK="#ID_1305712041" MODIFIED="1735417239799" TEXT="Node-Feed: ParamNode &#x27f6; extraParams">
<linktarget COLOR="#53a3b5" DESTINATION="ID_1559115287" ENDARROW="Default" ENDINCLINATION="-116;8;" ID="Arrow_ID_35370272" SOURCE="ID_1420751527" STARTARROW="None" STARTINCLINATION="-39;-6;"/>
<node CREATED="1735417162872" ID="ID_1823137654" MODIFIED="1735417286318" TEXT="auch hier: vor allem die Strukturen &#x201e;zu Fu&#xdf;&#x201c; aufbauen....">
<icon BUILTIN="yes"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1735417346027" ID="ID_1555206108" MODIFIED="1735417364905" TEXT="zun&#xe4;chst eine ParamBuildSpec anlegen">
<icon BUILTIN="flag-yellow"/>
</node>
</node>
</node>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1735416494813" ID="ID_329885446" MODIFIED="1735417263442" TEXT="Builder f&#xfc;r dedizierte ParamNode">
<linktarget COLOR="#5747d2" DESTINATION="ID_329885446" ENDARROW="Default" ENDINCLINATION="-844;-25;" ID="Arrow_ID_1824926310" SOURCE="ID_1257939291" STARTARROW="None" STARTINCLINATION="-633;42;"/>
<linktarget COLOR="#482c86" DESTINATION="ID_329885446" ENDARROW="Default" ENDINCLINATION="-553;-36;" ID="Arrow_ID_1024921689" SOURCE="ID_921902157" STARTARROW="None" STARTINCLINATION="598;1114;"/>
<icon BUILTIN="flag-yellow"/>
<node CREATED="1735416968791" HGAP="28" ID="ID_1420751527" MODIFIED="1735417275282" STYLE="bubble" VSHIFT="20">
<richcontent TYPE="NODE"><html>
<head/>
<body>
<p>
getrieben durch elaborierten Testfall
</p>
<p>
<font face="Monospaced">NodeFeed_test::</font><font color="#990000" face="Monospaced"><b>feedParamNode</b>()</font>
</p>
</body>
</html>
</richcontent>
<edge COLOR="#3495a4"/>
<arrowlink COLOR="#53a3b5" DESTINATION="ID_1559115287" ENDARROW="Default" ENDINCLINATION="-116;8;" ID="Arrow_ID_35370272" STARTARROW="None" STARTINCLINATION="-39;-6;"/>
</node>
</node>
</node>
@ -97467,9 +97695,7 @@ StM_bind(Builder&lt;R1&gt; b1, Extension&lt;R1,R2&gt; extension)
</node>
<node CREATED="1735246648677" ID="ID_1390294887" MODIFIED="1735246967617" TEXT="SimpleWeavnigPattern &#x27f6; MediaWeavingPattern ist jetzt Default">
<richcontent TYPE="NOTE"><html>
<head>
</head>
<head/>
<body>
<p>
&#220;ber das Prototyping hat eine Art Normierung stattgefunden; ich bin jetzt sicher, da&#223; die allermeisten Aufgaben zur Medien-Berechnung in dieses Standard-Pattern abgebildet werden k&#246;nnen, vor allem durch die stark erweiterte Flexibilit&#228;t des Buffer- und Parameter-Bindings
@ -97555,8 +97781,8 @@ StM_bind(Builder&lt;R1&gt; b1, Extension&lt;R1,R2&gt; extension)
</node>
</node>
</node>
<node BACKGROUND_COLOR="#eef0c5" COLOR="#990000" CREATED="1734059951987" ID="ID_1795912761" MODIFIED="1734831817696" TEXT="bestehenden Entwurf um Parameter erg&#xe4;nzen">
<arrowlink COLOR="#b02152" DESTINATION="ID_1347066000" ENDARROW="Default" ENDINCLINATION="-739;36;" ID="Arrow_ID_1367798112" STARTARROW="None" STARTINCLINATION="532;31;"/>
<node BACKGROUND_COLOR="#eef0c5" COLOR="#990000" CREATED="1734059951987" ID="ID_1795912761" MODIFIED="1735415986487" TEXT="bestehenden Entwurf um Parameter erg&#xe4;nzen">
<arrowlink COLOR="#b02152" DESTINATION="ID_1347066000" ENDARROW="Default" ENDINCLINATION="-925;49;" ID="Arrow_ID_1367798112" STARTARROW="None" STARTINCLINATION="532;31;"/>
<linktarget COLOR="#5718da" DESTINATION="ID_1795912761" ENDARROW="Default" ENDINCLINATION="-997;61;" ID="Arrow_ID_1582668720" SOURCE="ID_1344849864" STARTARROW="None" STARTINCLINATION="-507;-39;"/>
<linktarget COLOR="#787a90" DESTINATION="ID_1795912761" ENDARROW="Default" ENDINCLINATION="4;118;" ID="Arrow_ID_804587938" SOURCE="ID_1862852275" STARTARROW="None" STARTINCLINATION="-427;0;"/>
<icon BUILTIN="pencil"/>
@ -98399,9 +98625,10 @@ StM_bind(Builder&lt;R1&gt; b1, Extension&lt;R1,R2&gt; extension)
<arrowlink COLOR="#7e1ab2" DESTINATION="ID_1750696847" ENDARROW="Default" ENDINCLINATION="266;-492;" ID="Arrow_ID_379194887" STARTARROW="None" STARTINCLINATION="-138;440;"/>
<icon BUILTIN="button_ok"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1733430838925" ID="ID_1513206906" MODIFIED="1735055648443" TEXT="Exkurs: Einbindung in den Node-Builder betrachten">
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1733430838925" ID="ID_1513206906" MODIFIED="1735318465511" TEXT="Exkurs: Einbindung in den Node-Builder betrachten">
<arrowlink COLOR="#c50127" DESTINATION="ID_1619015453" ENDARROW="Default" ENDINCLINATION="-153;535;" ID="Arrow_ID_1374888051" STARTARROW="None" STARTINCLINATION="719;37;"/>
<linktarget COLOR="#d20e48" DESTINATION="ID_1513206906" ENDARROW="Default" ENDINCLINATION="-46;111;" ID="Arrow_ID_1518420686" SOURCE="ID_1712932544" STARTARROW="None" STARTINCLINATION="84;4;"/>
<linktarget COLOR="#e20f59" DESTINATION="ID_1513206906" ENDARROW="Default" ENDINCLINATION="42;240;" ID="Arrow_ID_1322946134" SOURCE="ID_796632095" STARTARROW="None" STARTINCLINATION="385;-13;"/>
<icon BUILTIN="flag-yellow"/>
</node>
</node>
@ -98465,6 +98692,16 @@ StM_bind(Builder&lt;R1&gt; b1, Extension&lt;R1,R2&gt; extension)
<arrowlink COLOR="#5718da" DESTINATION="ID_1795912761" ENDARROW="Default" ENDINCLINATION="-997;61;" ID="Arrow_ID_1582668720" STARTARROW="None" STARTINCLINATION="-507;-39;"/>
<icon BUILTIN="yes"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1735317581894" ID="ID_972907747" MODIFIED="1735319395835" TEXT="brauche tats&#xe4;chliches TurnoutSystem-API">
<arrowlink COLOR="#bf136e" DESTINATION="ID_1075228" ENDARROW="Default" ENDINCLINATION="-1141;139;" ID="Arrow_ID_862683421" STARTARROW="None" STARTINCLINATION="-1041;-48;"/>
<linktarget COLOR="#8f2ea4" DESTINATION="ID_972907747" ENDARROW="Default" ENDINCLINATION="887;-53;" ID="Arrow_ID_685087124" SOURCE="ID_524332742" STARTARROW="None" STARTINCLINATION="-536;60;"/>
<icon BUILTIN="yes"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1735317659721" ID="ID_796632095" MODIFIED="1735318553867" TEXT="Builder-API f&#xfc;r ParamNode festlegen">
<arrowlink COLOR="#d10d4d" DESTINATION="ID_1650778246" ENDARROW="Default" ENDINCLINATION="-1710;1813;" ID="Arrow_ID_720477782" STARTARROW="None" STARTINCLINATION="4744;-200;"/>
<arrowlink COLOR="#e20f59" DESTINATION="ID_1513206906" ENDARROW="Default" ENDINCLINATION="42;240;" ID="Arrow_ID_1322946134" STARTARROW="None" STARTINCLINATION="385;-13;"/>
<icon BUILTIN="yes"/>
</node>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1731890254602" ID="ID_447051297" MODIFIED="1734388971845" TEXT="brauche Buffer">
<arrowlink COLOR="#bb4c6b" DESTINATION="ID_1319945622" ENDARROW="Default" ENDINCLINATION="-663;35;" ID="Arrow_ID_542692149" STARTARROW="None" STARTINCLINATION="745;112;"/>
@ -99751,7 +99988,7 @@ StM_bind(Builder&lt;R1&gt; b1, Extension&lt;R1,R2&gt; extension)
<node CREATED="1733423697567" ID="ID_1377737473" MODIFIED="1733423899519" TEXT="das TurnoutSystem dient als Daten-Austausch-Hub"/>
<node CREATED="1733423734224" ID="ID_170887086" MODIFIED="1733423899519" TEXT="die Default-Ausstattung erm&#xf6;glicht Zugriff auf die Invocation-Parameter"/>
<node CREATED="1733423820748" ID="ID_951224237" MODIFIED="1733423899519" TEXT="der Level-2 Builder stellt Methoden bereit zum Anlegen von Parameter-Nodes"/>
<node COLOR="#471e21" CREATED="1734832077434" ID="ID_1709268968" MODIFIED="1734832147899" TEXT="letztlich spielen nun die &#xbb;Agent-Nodes&#xab; keine Rolle mehr f&#xfc;r das Parameter-Handling">
<node COLOR="#471e21" CREATED="1734832077434" ID="ID_1709268968" MODIFIED="1735318708081" TEXT="letztlich spielen nun &#xbb;Agent-Nodes&#xab; keine Rolle mehr f&#xfc;r standard-Parameter-Handling">
<richcontent TYPE="NOTE"><html>
<head/>
<body>
@ -99762,6 +99999,23 @@ StM_bind(Builder&lt;R1&gt; b1, Extension&lt;R1,R2&gt; extension)
</html></richcontent>
<icon BUILTIN="yes"/>
</node>
<node COLOR="#471e21" CREATED="1735321386947" ID="ID_113807641" MODIFIED="1735322433180" STYLE="fork" TEXT="&#xbb;ParamAgent&#xab;-Konzept nun in Form einer ParamNode f&#xfc;r komplexe Berechnungen">
<richcontent TYPE="NOTE"><html>
<head/>
<body>
<p>
Denn das Konzept der &#187;AgentNode&#171; ist ja generisch, und nicht aus der Welt zu schaffen &#8212; h&#228;ngt es doch an der Wurzel zusammen mit dem Ansatz einer vereinfachenden Abstraktion in einen Node-Graphen, die dann das Einlassen komplexerer Zusammenh&#228;nge in die lokale Struktur innerhalb dieses Graphen impliziert, in Form von Bau- und Verschaltungsmustern...
</p>
<p>
F&#252;r die Parameter-Behandlung <i>sind komplexe Spezialf&#228;lle vorhersehbar, </i>welche die Pasis-Parameter, den Kontext-Zugriff &#252;ber einen Proze&#223;-Key, sowie weitere, kontextuell zug&#228;ngliche Zustandsdaten in einen erweiterten Satz konkreter Steuerparameter synthetisieren, um diese dann an anderer Stelle, rekursiv tiefer im Invocation-Tree, zur Parametrisierung der Medien-Berechnung heranzuziehen. Ein solches Muster ist in der Tat &#8222;speziell&#8220; und ohne im Moment f&#252;r mich erkennbaren konkreten Bezug; ich leite diese M&#246;glichkeit lediglich aus allgemeinen &#220;berlegungen zur Struktur her, und ziehe den Schlu&#223;, <i>zumindest die Ansatzpunkte hierf&#252;r</i>&#160;schaffen zu m&#252;ssen....
</p>
</body>
</html>
</richcontent>
<edge COLOR="#808080" STYLE="bezier" WIDTH="thin"/>
<arrowlink COLOR="#6c6489" DESTINATION="ID_1650778246" ENDARROW="Default" ENDINCLINATION="-274;1070;" ID="Arrow_ID_1212360945" STARTARROW="None" STARTINCLINATION="1789;61;"/>
<icon BUILTIN="yes"/>
</node>
</node>
</node>
</node>
@ -100831,7 +101085,7 @@ StM_bind(Builder&lt;R1&gt; b1, Extension&lt;R1,R2&gt; extension)
<arrowlink COLOR="#ff6936" DESTINATION="ID_495934512" ENDARROW="Default" ENDINCLINATION="-884;1900;" ID="Arrow_ID_1128127655" STARTARROW="None" STARTINCLINATION="709;49;"/>
<icon BUILTIN="xmag"/>
</node>
<node BACKGROUND_COLOR="#eef0c5" COLOR="#990000" CREATED="1720546521352" ID="ID_313412689" MODIFIED="1729962090231" TEXT="Skizze f&#xfc;r einen Aufruf mit 1:1-Verdrahtung">
<node BACKGROUND_COLOR="#eef0c5" COLOR="#990000" CREATED="1720546521352" ID="ID_313412689" MODIFIED="1735415891501" TEXT="Skizze f&#xfc;r einen Aufruf mit 1:1-Verdrahtung">
<arrowlink COLOR="#ff6936" DESTINATION="ID_1680202759" ENDARROW="Default" ENDINCLINATION="-884;1900;" ID="Arrow_ID_1934503032" STARTARROW="None" STARTINCLINATION="789;48;"/>
<icon BUILTIN="xmag"/>
</node>
@ -100843,6 +101097,10 @@ StM_bind(Builder&lt;R1&gt; b1, Extension&lt;R1,R2&gt; extension)
<arrowlink COLOR="#ff6936" DESTINATION="ID_228375055" ENDARROW="Default" ENDINCLINATION="-1238;118;" ID="Arrow_ID_864180679" STARTARROW="None" STARTINCLINATION="779;56;"/>
<icon BUILTIN="xmag"/>
</node>
<node BACKGROUND_COLOR="#eef0c5" COLOR="#990000" CREATED="1720546521352" ID="ID_311704401" MODIFIED="1735415979208" TEXT="komplexe Parameter-Nodes">
<arrowlink COLOR="#ff6936" DESTINATION="ID_348960119" ENDARROW="Default" ENDINCLINATION="-641;1944;" ID="Arrow_ID_1163958018" STARTARROW="None" STARTINCLINATION="1383;132;"/>
<icon BUILTIN="xmag"/>
</node>
<node BACKGROUND_COLOR="#eeead5" COLOR="#990033" CREATED="1728785502988" ID="ID_694989290" MODIFIED="1729962183043" TEXT="Integration-1 : einfachst-m&#xf6;glicher Builder-Term">
<arrowlink COLOR="#ff6936" DESTINATION="ID_1973895762" ENDARROW="Default" ENDINCLINATION="-884;1900;" ID="Arrow_ID_208548527" STARTARROW="None" STARTINCLINATION="369;22;"/>
<icon BUILTIN="xmag"/>
@ -102039,13 +102297,21 @@ StM_bind(Builder&lt;R1&gt; b1, Extension&lt;R1,R2&gt; extension)
</node>
</node>
</node>
<node CREATED="1735414675514" ID="ID_1433375809" MODIFIED="1735414702232" TEXT="Turnout / Weaving-Pattern">
<node CREATED="1735414704349" ID="ID_1339796525" MODIFIED="1735414716797" TEXT="implementieren die Ports in ProcNode"/>
<node CREATED="1735414728754" ID="ID_1598517685" MODIFIED="1735414759465" TEXT="f&#xfc;hren zur Invocation einen 5-Schritt-Zyklus aus"/>
<node CREATED="1735414761840" ID="ID_1439330183" MODIFIED="1735414767449" TEXT="konkret..">
<node CREATED="1735414768529" ID="ID_1316770724" MODIFIED="1735414773728" TEXT="MediaWeavingPattern"/>
<node CREATED="1735414774740" ID="ID_965566430" MODIFIED="1735414781119" TEXT="ParamWeavingPattern"/>
</node>
</node>
</node>
<node BACKGROUND_COLOR="#d2beaf" COLOR="#5c4d6e" CREATED="1730596470751" ID="ID_1288148978" LINK="https://issues.lumiera.org/ticket/1377" MODIFIED="1730597727524" TEXT="#1377 processing identification">
<linktarget COLOR="#484589" DESTINATION="ID_1288148978" ENDARROW="Default" ENDINCLINATION="-451;-260;" ID="Arrow_ID_79666749" SOURCE="ID_701755621" STARTARROW="None" STARTINCLINATION="-1086;55;"/>
<linktarget COLOR="#832b91" DESTINATION="ID_1288148978" ENDARROW="Default" ENDINCLINATION="-2377;191;" ID="Arrow_ID_1024856417" SOURCE="ID_125486682" STARTARROW="None" STARTINCLINATION="-1447;-79;"/>
<icon BUILTIN="hourglass"/>
<node CREATED="1730597099323" ID="ID_968805110" MODIFIED="1730597155681" TEXT="darauf aufbauend: systematische Cache-Keys">
<linktarget COLOR="#79214c" DESTINATION="ID_968805110" ENDARROW="Default" ENDINCLINATION="271;-5;" ID="Arrow_ID_617691253" SOURCE="ID_1999491710" STARTARROW="None" STARTINCLINATION="-191;250;"/>
<linktarget COLOR="#79214c" DESTINATION="ID_968805110" ENDARROW="Default" ENDINCLINATION="1028;-25;" ID="Arrow_ID_617691253" SOURCE="ID_1999491710" STARTARROW="None" STARTINCLINATION="-191;250;"/>
</node>
</node>
</node>