Invocation: usage analysis for prototype

...after having determined the several levels of prototyping
currently employed, an important step ahead could be achieved
by analysing the intended and implied usage context of this
builder scheme, while still assuming the simplifications
related to prototyping.

It can be assumed that
 * the Level-2 builder object is ''somehow provided''
 * the invocation happens from within a media-handling lib-plugin
 * alongside with the desired `ProcAsset` spec, an `ExpectationContext`
   will be provided, allowing to pass-through additional semantic tags

The implementation in the lib-plugin is then able to draw from specific
knowledge related to the **Domain Ontology** for ''especially for this library''
and provide the necessary wrappers and parameter mapping information.

⟹ the **Level-2**-builder should thus expose an API to
 * set up a straight forward mapping, based on a given wrapper functor
   to delegate to the actual library invocation
 * allow optionally to override some of the input connections
 * alternatively allow to use a complete `InvocationAdapter`,
   including a `FeedManifold`, as provided directly by the library-plugin
This commit is contained in:
Fischlurch 2024-10-10 21:35:02 +02:00
parent bad6751aae
commit 5f0b8b8a81
3 changed files with 461 additions and 93 deletions

View file

@ -204,17 +204,20 @@ namespace engine {
, util::MoveOnly
{
public:
template<typename FUN>
PortBuilder
inSlots (uint s)
invoke (FUN&& fun)
{
UNIMPLEMENTED ("define number of predecessor-source slots");
UNIMPLEMENTED ("setup standard wiring to adapt the given processing function");
return move(*this);
}
template<class ADA, typename...ARGS>
PortBuilder
outSlots (uint r)
adaptInvocation(ARGS&& ...args)
{
UNIMPLEMENTED ("define number of result slots");
UNIMPLEMENTED ("specify an `InvocationAdapter` to use explicitly");
return move(*this);
}
@ -226,6 +229,49 @@ namespace engine {
return move(*this);
}
PortBuilder
asResultSlot (uint r)
{
UNIMPLEMENTED ("define the output slot to use as result (default is the first one)");
return move(*this);
}
PortBuilder
connectLead (uint idx)
{
UNIMPLEMENTED ("connect the next input slot to existing lead-node given by index");
return move(*this);
}
PortBuilder
conectLead (ProcNode& leadNode)
{
UNIMPLEMENTED ("connect the next input slot to either existing or new lead-node");
return move(*this);
}
PortBuilder
connectLeadPort (uint idx, uint port)
{
UNIMPLEMENTED ("connect next input to lead-node, using a specific port-number");
return move(*this);
}
PortBuilder
connectLeadPort (ProcNode& leadNode, uint port)
{
UNIMPLEMENTED ("connect next input to existing or new lead-node, with given port-number");
return move(*this);
}
PortBuilder
useLeadPort (uint defaultPort)
{
UNIMPLEMENTED ("use given port-index as default for all following connections");
return move(*this);
}
/****************************************************//**
* Terminal: complete the Port wiring and return to the node level.
*/

View file

@ -428,7 +428,7 @@ namespace engine {
Feed
mount()
{
return Feed{};
return Feed{}; //////////////////////OOO cant work this way ... need to pass-in a processing functor for the ctor
}
void

View file

@ -6154,9 +6154,7 @@
<icon BUILTIN="flag-yellow"/>
<node CREATED="1493853548739" ID="ID_949985796" MODIFIED="1576282358137" TEXT="Project &amp; Controller restlos entfernen">
<richcontent TYPE="NOTE"><html>
<head>
</head>
<head/>
<body>
<p>
...wartet noch darauf,
@ -6407,9 +6405,7 @@
<icon BUILTIN="pencil"/>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#a03232" CREATED="1485549049388" FOLDED="true" ID="ID_530209145" MODIFIED="1679087971773" TEXT="Problem: Aktionen binden">
<richcontent TYPE="NOTE"><html>
<head>
</head>
<head/>
<body>
<p>
das ist ein gaaaanz gro&#223;es Strategisches Thema; vor 2023 hatte ich schon mehrfach versucht, <i>es zu fassen</i>&#160;&#8212; <font color="#982e2e">das ist mir aber bisher nicht gelungen</font>, und deshalb wartet es.... &#8987;
@ -6423,9 +6419,7 @@
<node CREATED="1485549810780" ID="ID_71301392" MODIFIED="1518487921060" TEXT="Pop-Ups brauchen ein Vater-Fenster"/>
<node CREATED="1485549828450" ID="ID_1089795419" MODIFIED="1518487921060">
<richcontent TYPE="NODE"><html>
<head>
</head>
<head/>
<body>
<p>
eigentlich wollen wir <i>&quot;das aktuelle&quot;</i>
@ -6662,9 +6656,7 @@
<node CREATED="1488492373919" ID="ID_1898515568" MODIFIED="1518487921061" TEXT="snapshot-Kommando an Session senden"/>
<node CREATED="1488494870418" ID="ID_1929432332" MODIFIED="1576282358133" TEXT="TODO: InvocationTrail">
<richcontent TYPE="NOTE"><html>
<head>
</head>
<head/>
<body>
<p>
Njet
@ -6802,9 +6794,7 @@
<node CREATED="1492461179404" ID="ID_1843144262" MODIFIED="1518487921062" TEXT="die neue Sequenz">
<node CREATED="1492461186562" ID="ID_357158955" MODIFIED="1576282358131" TEXT="ID mu&#xdf; gesendet werden">
<richcontent TYPE="NOTE"><html>
<head>
</head>
<head/>
<body>
<p>
damit UNDO funktionieren kann,
@ -7546,9 +7536,7 @@
</node>
<node CREATED="1507939927035" ID="ID_461225915" MODIFIED="1533608413581">
<richcontent TYPE="NODE"><html>
<head>
</head>
<head/>
<body>
<p>
wer bestimmt,
@ -8465,9 +8453,7 @@
<node CREATED="1510427098600" ID="ID_576903384" MODIFIED="1510438602569" TEXT="Layering nicht Teil des Schemas"/>
<node CREATED="1510427352926" ID="ID_805227666" MODIFIED="1510427370156">
<richcontent TYPE="NODE"><html>
<head>
</head>
<head/>
<body>
<p>
Problem: Layer sind <i>verkoppelt</i>
@ -9586,9 +9572,7 @@
<node CREATED="1512439680078" ID="ID_795639412" MODIFIED="1512439682641" TEXT="geht nicht"/>
<node CREATED="1512439683710" ID="ID_82602719" MODIFIED="1512439807833" TEXT="ohne VTable k&#xf6;nnen wir niemals von Parent -&gt; Subklasse aufrufen">
<richcontent TYPE="NOTE"><html>
<head>
</head>
<head/>
<body>
<p>
...das hei&#223;t, es ist nicht m&#246;glich,
@ -11497,9 +11481,7 @@
<node CREATED="1513894301013" FOLDED="true" ID="ID_1705515857" MODIFIED="1525124214858" TEXT="aktuell">
<node CREATED="1513893940206" ID="ID_1268073991" MODIFIED="1513893969869">
<richcontent TYPE="NODE"><html>
<head>
</head>
<head/>
<body>
<p>
<i>bis jetzt</i>&#160;kommen wir ohne <b>Pos</b>-Abstraktion aus
@ -14113,9 +14095,7 @@
<icon BUILTIN="yes"/>
<node CREATED="1518838316762" ID="ID_375483047" MODIFIED="1518838388905" TEXT="aus gutem Grund">
<richcontent TYPE="NOTE"><html>
<head>
</head>
<head/>
<body>
<p>
...denn durch overwrite kann man denormalisierte Pattern erzeugen.
@ -18505,9 +18485,7 @@
</node>
<node CREATED="1654447915277" ID="ID_605454519" MODIFIED="1654448000114" TEXT="SPAN">
<richcontent TYPE="NOTE"><html>
<head>
</head>
<head/>
<body>
<p>
repr&#228;sentiert einen benannten Zeit-Bereich:
@ -18540,9 +18518,7 @@
</node>
<node CREATED="1654447921187" ID="ID_513954235" MODIFIED="1654448113829" TEXT="CONTENT">
<richcontent TYPE="NOTE"><html>
<head>
</head>
<head/>
<body>
<p>
Ein Mini-Container mit Placement, Name und einem Inhalts-Renderer
@ -25878,9 +25854,7 @@
<icon BUILTIN="smily_bad"/>
<node CREATED="1611922870848" HGAP="39" ID="ID_755879883" MODIFIED="1611922978680" TEXT="naja...." VSHIFT="12">
<richcontent TYPE="NOTE"><html>
<head>
</head>
<head/>
<body>
<p>
...ich hab ja nicht umsonst in der theoretischen Analyse herausgefunden, da&#223; dieses Schema auf ein Phasen-Modell hinausl&#228;uft; die Hoffnung w&#228;re h&#246;chstens gewesen, da&#223; in der Praxis der 3.Pass derart <i>degeneriert,</i>&#160; da&#223; man ihn in den 1.Pass einfalten kann
@ -25919,9 +25893,7 @@
<icon BUILTIN="broken-line"/>
<node CREATED="1611959630868" ID="ID_268739743" MODIFIED="1611959702682" TEXT="Clip erscheint am oberen Rand des Track">
<richcontent TYPE="NOTE"><html>
<head>
</head>
<head/>
<body>
<p>
ber&#252;cksichtigt also nicht die Dekoration und das Padding... obwohl doch eigentlich der 2.Pass das Track-Profil aufgebaut haben sollte
@ -25936,9 +25908,7 @@
<icon BUILTIN="idea"/>
<node CREATED="1612000371364" ID="ID_36603158" MODIFIED="1612000392460">
<richcontent TYPE="NODE"><html>
<head>
</head>
<head/>
<body>
<p>
der Test-Diff ist <i>ungeschickt geschrieben</i>
@ -39453,9 +39423,7 @@
<icon BUILTIN="button_ok"/>
<node CREATED="1618676950908" ID="ID_69237451" MODIFIED="1618677116146" TEXT="hier deutet sich ein mehrstufiger Ansatz an">
<richcontent TYPE="NOTE"><html>
<head>
</head>
<head/>
<body>
<p>
Demnach w&#228;re die &#220;bersetzung von Pixel-Koordinaten in <i>irgend etwas modell-Releavantes</i>&#160;komplet in das Subject eingekapselt; der Gesten-Controller w&#252;rde dann einen Screen-relativen Offset aggregieren. Aber auf der zweiten Stufe bleiben wir bei dem Ansatz, da&#223; die Geste direkt das Modell manipuliert
@ -39465,9 +39433,7 @@
</node>
<node CREATED="1618676975232" ID="ID_196334292" MODIFIED="1618677288680" TEXT="es erscheint vorl&#xe4;ufig sinnvoll, dieser Richtung zu Folgen">
<richcontent TYPE="NOTE"><html>
<head>
</head>
<head/>
<body>
<p>
...Auch wenn ich ein ungutes Bauchgef&#252;hl habe, alle Argumente sprechen im Moment daf&#252;r, diesem Hinweis zu folgen und das Design in dieser Richtung auszubauen. Im Besonderen w&#252;rde n&#228;mlich ein konsequentes Umsetzen meines urspr&#252;nglichen Konzepts bedeuten, da&#223; das Subject-Interface etwas von der Metrik im Modell, und im Besonderen von eine Zeit-Parameter wissen m&#252;&#223;te &#8213; es ist aber absehbar, da&#223; in anderen Situationen g&#228;nzlich andere Parameter relevant sein k&#246;nnten ... man denke blo&#223; an die &quot;Position im Fork&quot;
@ -39495,9 +39461,7 @@
<node CREATED="1620922762073" ID="ID_878659189" MODIFIED="1620922781290" TEXT="vorl&#xe4;ufige Dummy-Implementierung in TimelineLayout"/>
<node CREATED="1620922782734" ID="ID_1695744984" MODIFIED="1620922815553">
<richcontent TYPE="NODE"><html>
<head>
</head>
<head/>
<body>
<p>
verwendet hart gedrahtete Konstante <font color="#b42e2e">TODO_px_per_second</font>
@ -51431,9 +51395,7 @@
<node CREATED="1613947688776" ID="ID_1133022481" MODIFIED="1613947709441" TEXT="2017 - 2/2021">
<node CREATED="1613947717729" ID="ID_1840082890" MODIFIED="1613948142348" TEXT="es gibt eine Vision">
<richcontent TYPE="NOTE"><html>
<head>
</head>
<head/>
<body>
<ul>
<li>
@ -51454,9 +51416,7 @@
</node>
<node CREATED="1613947727636" ID="ID_729788594" MODIFIED="1613948283484" TEXT="ein elaboriertes Framework wurde geplant und wieder verworfen">
<richcontent TYPE="NOTE"><html>
<head>
</head>
<head/>
<body>
<p>
2017 habe ich zun&#228;chst versucht, die Analyse soweit zu treiben, da&#223; sich daraus Strukturen ablesen lassen; die Intention war, darin die einfache Struktur eines direkt &quot;point and shot&quot; gegebenen Commands eingebettet zu finden. Dieses Bestreben mu&#223;te abgebrochen werden, da ich noch nicht genug &#252;ber das konrete Interface wei&#223;, um sachad&#228;quat beurteilen zu k&#246;nnen, was <i>notwendig ist.</i>
@ -51466,9 +51426,7 @@
</node>
<node CREATED="1613947757959" ID="ID_1626123352" MODIFIED="1613948424917" TEXT="darauf aufbauend wurde der einfachste Fall bereits fertig implementiert">
<richcontent TYPE="NOTE"><html>
<head>
</head>
<head/>
<body>
<p>
...stattdessen habe ich dann die schon bestehenden und definierten Teile zusammengebunden, um das direkte Absetzen von fest im Code vorgegebenen Commands zu erm&#246;glichen. Diese gehen seither als einfache symbolische Nachrichten &#252;ber den UI-Bus. Das gesamte Thema &quot;Argument Binding&quot; ist bereits abschlie&#223;end behandelt (Marshalling via GenNode). Ebenso der asynchrone Dispatch, und die ebenso asynchron entkoppelte R&#252;ckmeldung (&quot;push up&quot;) in das UI.
@ -51478,9 +51436,7 @@
</node>
<node CREATED="1613947778476" ID="ID_1664459728" MODIFIED="1613948672376" TEXT="an der Grundidee wird festgehalten">
<richcontent TYPE="NOTE"><html>
<head>
</head>
<head/>
<body>
<p>
2018-2019 habe ich eine dieser Vision entsprechende, offene und generische Grundstruktur des UI angelegt, und begonnen, konkret f&#252;r die Timeline-Repr&#228;sentation auszuimplementieren. Auch dies ist grunds&#228;tzlich alles geregelt, wir k&#246;nnen ein Custom-Stylesheet aufgreifen, wir k&#246;nnen eigene Widgets mit custom-drawing realisieren, und trotzdem weitgehend auf das UI-Toolkitset mit allen seinen Zusatzfunktionen zur&#252;ckgreifen. Nun (2/2021) bin ich wieder an dem Punkt, an dem die erste, einfachste &#187;Geste&#171; zu realisieren w&#228;re: n&#228;mlich das Verschieben eines Clip in der Timeline. Und ich halte genau an der Einsicht fest, da&#223; diese Interaktions-Logik nicht fest in ein Widget eingebaut werden darf.<br /><i><font color="#a33449">Da stehe ich, und mehr wei&#223; ich noch nicht...</font></i>
@ -51515,9 +51471,7 @@
<icon BUILTIN="hourglass"/>
<node CREATED="1518487921092" ID="ID_1694595239" MODIFIED="1613943616179" TEXT="vorl&#xe4;ufig werden Commands von Hand definiert">
<richcontent TYPE="NOTE"><html>
<head>
</head>
<head/>
<body>
<p>
Der Plan ist, einmal Command-Skripts (C++ basierte DSL-Notation) direkt vom Build-System verarbeiten zu lassen; der Build wird daraus passende C++-Translation-Units generieren und &#252;bersetzen. Tats&#228;chlich ist all dies nicht besonders anspruchsvoll, denn die eigentliche Arbeit, die DSL-Notation ist bereits geschaffen. Trotzdem ist das Thema vorerst vertagt, weil zur praktischen Ausf&#252;hrung eine Menge zus&#228;tzlichem Wissen aus der Praxis notwendig ist, wie z.B. wie teilt man die Commands ein, wer definiert &#252;berhaupt Commands, und zu welchem Zweck. Beispielsweise ist es durchaus sp&#228;ter einmal denkbar, da&#223; auch eine Lumiera-Extension (Plug-in) zus&#228;tzliche Command-Scripts bereitstellt. Dann stellt sich nat&#252;rlich auf das (ziemlich anspruchsvolle) Problem der Belegung von Command-IDs erneut.
@ -71691,7 +71645,7 @@
</node>
<node CREATED="1720141000407" ID="ID_301474820" MODIFIED="1720141011879" TEXT="gesammelte Pl&#xe4;ne und Skizzen">
<node CREATED="1720141066223" ID="ID_1879448068" MODIFIED="1720141072690" TEXT="Schrittweiser Aufbau des Graphen"/>
<node CREATED="1720141079653" ID="ID_973244167" MODIFIED="1720141084536" TEXT="Hilfsmittel">
<node CREATED="1720141079653" ID="ID_973244167" MODIFIED="1728577268568" TEXT="Architektur-Kontext">
<node CREATED="1720141090052" ID="ID_926335933" MODIFIED="1720141112386" TEXT="Domain-Ontology">
<node CREATED="1720141118464" ID="ID_1346694117" MODIFIED="1720141131319" TEXT="tifft Detail-Entscheidungen"/>
<node CREATED="1720141131811" ID="ID_1652703630" MODIFIED="1720141142065" TEXT="pa&#xdf;genaue Parametrisierung"/>
@ -71710,6 +71664,48 @@
<node CREATED="1720141228066" ID="ID_1022058853" MODIFIED="1720141239963" TEXT="Argument: ein Level-2-Builder"/>
<node CREATED="1720141241216" ID="ID_1290033100" MODIFIED="1720141311730" TEXT="Aufgabe: konfigurieren um korrekten Aufruf im Render-Node-Network zu erm&#xf6;glichen"/>
</node>
<node CREATED="1728577294600" ID="ID_568567553" MODIFIED="1728577643784">
<richcontent TYPE="NODE"><html>
<head/>
<body>
<p>
weiteres Argument: <b>ExpectationContext</b>
</p>
</body>
</html></richcontent>
<arrowlink COLOR="#622245" DESTINATION="ID_1496504729" ENDARROW="Default" ENDINCLINATION="-784;-30;" ID="Arrow_ID_1228119456" STARTARROW="Default" STARTINCLINATION="-1608;1933;"/>
<node CREATED="1728577689011" ID="ID_602929167" MODIFIED="1728577695335" TEXT="enth&#xe4;lt das ProcAsset"/>
<node CREATED="1728577696994" ID="ID_757396904" MODIFIED="1728577731655" TEXT="eine Liste zu erzeugender Stream-Types (per Port)"/>
<node CREATED="1728577774818" ID="ID_495503111" MODIFIED="1728577893772" TEXT="weitere symbolische Attributierungen (Tags, Terme)">
<richcontent TYPE="NOTE"><html>
<head/>
<body>
<p>
essentiell wichtig diese <i>offen zu halten,</i>&#160;denn die direkten Aufrufer k&#246;nnen diese nicht interpretieren, sondern reichen sie aus einem offen zu gestaltenden Model heraus durch; dort k&#246;nnen Regeln gewirkt haben, die Attributierungen anbringen, welche dann wieder innerhalb der konkreten Domain-Ontology interpretierbar sind
</p>
</body>
</html></richcontent>
</node>
</node>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1728579114806" ID="ID_366571753" MODIFIED="1728579256226" TEXT="der Aufruf wird technisch sehr anspruchsvoll">
<richcontent TYPE="NOTE"><html>
<head/>
<body>
<p>
...da beide Seiten wohl einen konkreten Typ-Kontext haben, ist eine Art double-Dispatch notwendig....
</p>
<ul>
<li>
der aufrufende Builder mu&#223; eine Policy mitgeben, in der der Allokator und weitere Dependency-Injection steckt
</li>
<li>
der empfangende Library-Kontext mu&#223; dann aber auf dieser Basis selbst eine Template-Instanz machen, um seine konkreten Implementierungs-Buffer-Typen und Funktoren einzubringen
</li>
</ul>
</body>
</html></richcontent>
<icon BUILTIN="messagebox_warning"/>
</node>
</node>
</node>
</node>
@ -81340,8 +81336,7 @@ Date:&#160;&#160;&#160;Thu Apr 20 18:53:17 2023 +0200<br/>
build() generiert einen <font face="Monospaced" color="#272579">Connectivity</font>-Record <i>by-value</i>
</p>
</body>
</html>
</richcontent>
</html></richcontent>
</node>
<node CREATED="1728434048508" ID="ID_1225662367" MODIFIED="1728434093984" TEXT="diesen ganzen Aufruf schiebt man in den ProcNode-Konstruktor"/>
</node>
@ -81365,15 +81360,32 @@ Date:&#160;&#160;&#160;Thu Apr 20 18:53:17 2023 +0200<br/>
</node>
<node CREATED="1720146287602" ID="ID_1218472857" MODIFIED="1720146293047" TEXT="preparePort()">
<node CREATED="1720146294771" ID="ID_1809522763" MODIFIED="1720146303963" TEXT="nested Port builder"/>
<node CREATED="1719971113760" ID="ID_1114865524" MODIFIED="1719971122094" TEXT="Slot-Anzahl">
<node COLOR="#5b280f" CREATED="1719971113760" ID="ID_1114865524" MODIFIED="1728582108404" TEXT="Slot-Anzahl">
<icon BUILTIN="button_cancel"/>
<node CREATED="1719971123638" ID="ID_62698915" MODIFIED="1719972104567" TEXT="inSlots(s)"/>
<node CREATED="1719971135344" ID="ID_800443773" MODIFIED="1719972017411" TEXT="outSlots(r)"/>
<node COLOR="#5b280f" CREATED="1728582113475" ID="ID_1195057152" MODIFIED="1728582146145" TEXT="obsolet &#x2014; per default nun 1:1 verdrahtet">
<icon BUILTIN="closed"/>
</node>
<node CREATED="1719970368235" ID="ID_1051554068" MODIFIED="1719970374182" TEXT="Buffer definieren">
</node>
<node CREATED="1719970921342" ID="ID_520256497" MODIFIED="1728586526758" TEXT="invoke(fun)">
<arrowlink COLOR="#4a43ba" DESTINATION="ID_1274882287" ENDARROW="Default" ENDINCLINATION="-987;-72;" ID="Arrow_ID_1839790581" STARTARROW="None" STARTINCLINATION="1230;281;"/>
<node CREATED="1728587149140" ID="ID_931734758" MODIFIED="1728587166437" TEXT="bindet den Funktor f&#xfc;r die eigentliche Render-Operation"/>
<node CREATED="1728587167953" HGAP="69" ID="ID_581121579" MODIFIED="1728587192330" TEXT="richtet implizites default-Mapping ein" VSHIFT="-2"/>
</node>
<node BACKGROUND_COLOR="#d2beaf" COLOR="#5c4d6e" CREATED="1719970368235" ID="ID_1051554068" MODIFIED="1728586726004" TEXT="Buffer vorbereiten">
<icon BUILTIN="hourglass"/>
<node CREATED="1719970886798" ID="ID_400236790" MODIFIED="1719970979999" TEXT="createBuffers&lt;ILA&gt;(args....)"/>
<node CREATED="1719970921342" ID="ID_520256497" MODIFIED="1719970972558" TEXT="createBuffers(fun)"/>
<node CREATED="1719970948270" ID="ID_1769935423" MODIFIED="1719970970119" TEXT="createInBuffers..."/>
<node CREATED="1719970957989" ID="ID_1864258437" MODIFIED="1719970999711" TEXT="createOutBuffers...."/>
<node CREATED="1719970948270" ID="ID_1769935423" MODIFIED="1728516052953" TEXT="provideInBuffers..."/>
<node CREATED="1719970957989" ID="ID_1864258437" MODIFIED="1728516057144" TEXT="provideOutBuffers...."/>
</node>
<node CREATED="1728586883784" ID="ID_685317498" MODIFIED="1728586916322" TEXT="Verschaltung">
<node CREATED="1728586940048" ID="ID_1188383224" MODIFIED="1728586960242" TEXT="asResultSlot(N)"/>
<node CREATED="1728586999449" ID="ID_554391925" MODIFIED="1728587046027" TEXT="connectLead(i)"/>
<node CREATED="1728586961755" ID="ID_1481641023" MODIFIED="1728586998668" TEXT="conectLead(ProcNode&amp;)"/>
<node CREATED="1728587027861" ID="ID_1629158644" MODIFIED="1728587042089" TEXT="connectLeadPort(i, p)"/>
<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 BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1720146340213" ID="ID_1871545026" MODIFIED="1720230570516" TEXT="TODO: API f&#xfc;r Mapping">
<icon BUILTIN="flag-yellow"/>
@ -81495,7 +81507,8 @@ Date:&#160;&#160;&#160;Thu Apr 20 18:53:17 2023 +0200<br/>
<arrowlink COLOR="#cd0172" DESTINATION="ID_668512282" ENDARROW="Default" ENDINCLINATION="-522;-42;" ID="Arrow_ID_1453353099" STARTARROW="None" STARTINCLINATION="651;43;"/>
<icon BUILTIN="forward"/>
</node>
<node CREATED="1720178620602" ID="ID_1754473259" MODIFIED="1720178640340" TEXT="und dann mit einer Referenz auf die FeedManifold aufgerufen"/>
<node CREATED="1728582010084" ID="ID_814015395" MODIFIED="1728582033557" TEXT="mu&#xdf; implizit selber eine geeignete FeedManifold enthalten"/>
<node CREATED="1720178620602" ID="ID_1754473259" MODIFIED="1728582056854" TEXT="und wird dann per SimpleWeavingPattern 1:1 verdrahtet"/>
<node CREATED="1720178641544" ID="ID_1400060048" MODIFIED="1720178663624">
<richcontent TYPE="NODE"><html>
<head/>
@ -81609,6 +81622,12 @@ Date:&#160;&#160;&#160;Thu Apr 20 18:53:17 2023 +0200<br/>
<icon BUILTIN="yes"/>
<node BACKGROUND_COLOR="#f8f1cb" COLOR="#a50125" CREATED="1720021669482" ID="ID_856272280" MODIFIED="1720050731701" TEXT="Problem: Level-3 ist ohne Kenntnis des Builders schwer zu bestimmen">
<icon BUILTIN="messagebox_warning"/>
<node CREATED="1728577385843" ID="ID_562478950" MODIFIED="1728577565595" TEXT="Vorentwurf: &#xdc;bersetzung">
<arrowlink COLOR="#75283b" DESTINATION="ID_1460004478" ENDARROW="Default" ENDINCLINATION="-406;19;" ID="Arrow_ID_1496642615" STARTARROW="None" STARTINCLINATION="-3;79;"/>
<node CREATED="1728577399345" ID="ID_1496504729" MODIFIED="1728577635713" TEXT="vorgegeben wird eine semantisch konnotierte Erwartung">
<linktarget COLOR="#622245" DESTINATION="ID_1496504729" ENDARROW="Default" ENDINCLINATION="-784;-30;" ID="Arrow_ID_1228119456" SOURCE="ID_568567553" STARTARROW="Default" STARTINCLINATION="-1608;1933;"/>
</node>
</node>
</node>
<node CREATED="1720021727803" ID="ID_1443907589" MODIFIED="1720021745383" TEXT="Mutma&#xdf;ungen zur Arbeitsweise">
<icon BUILTIN="yes"/>
@ -81652,7 +81671,7 @@ Date:&#160;&#160;&#160;Thu Apr 20 18:53:17 2023 +0200<br/>
</node>
<node CREATED="1720027053175" ID="ID_1948826697" MODIFIED="1720050630863" TEXT="schlie&#xdf;lich erfolgt ein Level-3-Build-walk bottom-up">
<node CREATED="1720027094940" ID="ID_1358037329" MODIFIED="1720027105937" TEXT="rekursiv depth-first bis zum Blatt"/>
<node CREATED="1720052096281" ID="ID_653731910" MODIFIED="1720052252822" TEXT="dieser Walk navigiert Nodes, nicht Ports">
<node CREATED="1720052096281" ID="ID_653731910" MODIFIED="1728577164240" TEXT="dieser Walk navigiert Nodes, nicht Ports">
<richcontent TYPE="NOTE"><html>
<head/>
<body>
@ -81661,6 +81680,42 @@ Date:&#160;&#160;&#160;Thu Apr 20 18:53:17 2023 +0200<br/>
</p>
</body>
</html></richcontent>
<linktarget COLOR="#5c3989" DESTINATION="ID_653731910" ENDARROW="Default" ENDINCLINATION="-1156;76;" ID="Arrow_ID_1500252574" SOURCE="ID_412907481" STARTARROW="None" STARTINCLINATION="-1041;-49;"/>
<node CREATED="1728575511032" ID="ID_1726239449" MODIFIED="1728575596617">
<richcontent TYPE="NODE"><html>
<head/>
<body>
<p>
tats&#228;chlich wird jeder Build-Schritt hier<i>&#160;delegiert</i>&#160;per Proc-Asset &#10230; Media-Lib (Ontology)
</p>
</body>
</html></richcontent>
<icon BUILTIN="idea"/>
</node>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1728575628232" ID="ID_1460004478" MODIFIED="1728577559259" STYLE="bubble" TEXT="das ist das wesentliche Struktur-Moment dieser Architektur">
<richcontent TYPE="NOTE"><html>
<head/>
<body>
<p>
....denn dadurch <i>k&#246;nnen wir eine Meta-Ontology vermeiden:</i>&#160;der entscheidende &#220;bersetzungs-Schritt, das Ontology-Mapping aus dem Kontext der Edit-Session in das konkrete Processing <i>erfolgt direkt im Kontext einer konkreten Domain-Ontology, </i>beispielsweise FFMpeg. Vorgegeben ist eine semantische Attributierung der Syntax-Struktur im Session-Model und erwartet wird eine korrekte, konkrete Implementierung derselben.
</p>
</body>
</html></richcontent>
<edge COLOR="#84314f"/>
<arrowlink COLOR="#282d8b" DESTINATION="ID_1979697305" ENDARROW="Default" ENDINCLINATION="126;8;" ID="Arrow_ID_1136484113" STARTARROW="None" STARTINCLINATION="-24;45;"/>
<linktarget COLOR="#75283b" DESTINATION="ID_1460004478" ENDARROW="Default" ENDINCLINATION="-406;19;" ID="Arrow_ID_1496642615" SOURCE="ID_562478950" STARTARROW="None" STARTINCLINATION="-3;79;"/>
</node>
</node>
<node CREATED="1728576178870" ID="ID_1979697305" MODIFIED="1728577518115">
<richcontent TYPE="NODE"><html>
<head/>
<body>
<p>
ein Schritt: <b><font face="Monospaced" color="#3b1e47">ExpectationContext</font></b>&#160;&#10236; <font face="Monospaced" color="#1800a9">ProcNode</font>
</p>
</body>
</html></richcontent>
<linktarget COLOR="#282d8b" DESTINATION="ID_1979697305" ENDARROW="Default" ENDINCLINATION="126;8;" ID="Arrow_ID_1136484113" SOURCE="ID_1460004478" STARTARROW="None" STARTINCLINATION="-24;45;"/>
</node>
<node CREATED="1720027106671" ID="ID_585872128" MODIFIED="1720027137328" TEXT="f&#xfc;r das Blatt wird eine ProcNode emittiert (siehe unten)"/>
<node CREATED="1720027141761" ID="ID_636601618" MODIFIED="1720050639817">
@ -87266,8 +87321,7 @@ Date:&#160;&#160;&#160;Thu Apr 20 18:53:17 2023 +0200<br/>
will sagen: ich gehe erst mal im Prototyping von einer Test-Ontology aus, die sich aber informell bereits auf meine Kenntnis der Dom&#228;ne (Video-Processing) abst&#252;tzt
</p>
</body>
</html>
</richcontent>
</html></richcontent>
</node>
<node CREATED="1728437140586" ID="ID_316855073" MODIFIED="1728437523623" TEXT="wie der InvocationAdapter in diesem liegt">
<arrowlink COLOR="#5d315c" DESTINATION="ID_424860567" ENDARROW="Default" ENDINCLINATION="-1137;-1326;" ID="Arrow_ID_1907915651" STARTARROW="None" STARTINCLINATION="475;34;"/>
@ -87280,8 +87334,7 @@ Date:&#160;&#160;&#160;Thu Apr 20 18:53:17 2023 +0200<br/>
wie beide aus einer &#187;Ontology&#171; heraus angelegt und gesteuert werden <i>k&#246;nnen</i>
</p>
</body>
</html>
</richcontent>
</html></richcontent>
</node>
<node CREATED="1728437213059" ID="ID_1276794253" MODIFIED="1728437232311">
<richcontent TYPE="NODE"><html>
@ -87291,8 +87344,7 @@ Date:&#160;&#160;&#160;Thu Apr 20 18:53:17 2023 +0200<br/>
und letztlich wie dann ein konkreter Aufruf ablaufen<i>&#160;kann</i>
</p>
</body>
</html>
</richcontent>
</html></richcontent>
</node>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1728437247772" HGAP="8" ID="ID_281569439" MODIFIED="1728437381915" STYLE="bubble" TEXT="beachte das &#x201e;kann&#x201c; &#x27f9; Prototyping" VSHIFT="22">
<richcontent TYPE="NOTE"><html>
@ -87302,8 +87354,7 @@ Date:&#160;&#160;&#160;Thu Apr 20 18:53:17 2023 +0200<br/>
sich nicht verr&#252;ckt machen: das hier ist ein hermeneutischer Zirkel: Um ein gutes Werkzeug bauen zu k&#246;nnen, mu&#223; ich <i>die Sache</i>&#160; verstehen &#8212; und das mache ich, indem ich auf den Werkzeuggebrauch hin stipuliere
</p>
</body>
</html>
</richcontent>
</html></richcontent>
<edge COLOR="#960303"/>
<icon BUILTIN="idea"/>
</node>
@ -87311,6 +87362,55 @@ Date:&#160;&#160;&#160;Thu Apr 20 18:53:17 2023 +0200<br/>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1719964416438" HGAP="61" ID="ID_495934512" MODIFIED="1719967866179" TEXT="hier komme ich ohne Prototyping nicht weiter" VSHIFT="39">
<arrowlink COLOR="#5e2f3f" DESTINATION="ID_1199569608" ENDARROW="Default" ENDINCLINATION="-1226;-72;" ID="Arrow_ID_1409703862" STARTARROW="None" STARTINCLINATION="-302;19;"/>
<icon BUILTIN="yes"/>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1728497991103" ID="ID_1877481634" MODIFIED="1728498077898" TEXT="Top-down Bottom-up">
<icon BUILTIN="yes"/>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1728498021030" ID="ID_274231525" MODIFIED="1728498309371" STYLE="bubble">
<richcontent TYPE="NODE"><html>
<head/>
<body>
<p>
<b>Ziel</b>: Top-down Realisierung des Builder-API
</p>
</body>
</html></richcontent>
<richcontent TYPE="NOTE"><html>
<head/>
<body>
<p>
Verm&#246;ge Analyse und Architektur-Design habe ich mich schrittweise an eine Gliederung des Build-Vorganges in verschiedene Level herangearbeitet. Auf dem mittleren <b>Level-2</b>&#160;laufen alle F&#228;den zusammen; daher ist der Kern der Aufgabe bew&#228;ltigt, wenn ein sinnvolles und ad&#228;quates Builder-API steht
</p>
</body>
</html></richcontent>
<edge COLOR="#3e22b2"/>
</node>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1728498038170" ID="ID_1047077795" MODIFIED="1728498397106" STYLE="bubble">
<richcontent TYPE="NODE"><html>
<head/>
<body>
<p>
<b>Weg</b>: bottom-up &#252;berlegen wie gerendert werden soll
</p>
</body>
</html></richcontent>
<richcontent TYPE="NOTE"><html>
<head/>
<body>
<p>
Um aber auf das notwendige Builder-API schlie&#223;en zu k&#246;nnen, mu&#223; ich wissen
</p>
<ul>
<li>
welche Struktur zum Rendern notwendig und deshalb zu bauen&#160;ist
</li>
<li>
wie diese Struktur aus dem Kontext der Domain-Ontologie heraus spezifiziert wird
</li>
</ul>
</body>
</html></richcontent>
<edge COLOR="#3e22b2"/>
</node>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1719970214048" ID="ID_912277542" MODIFIED="1719970290253" TEXT="Builder-API">
<arrowlink COLOR="#b82d72" DESTINATION="ID_1241897346" ENDARROW="Default" ENDINCLINATION="-200;386;" ID="Arrow_ID_1194515432" STARTARROW="None" STARTINCLINATION="-600;-89;"/>
<icon BUILTIN="flag-yellow"/>
@ -87751,9 +87851,22 @@ Date:&#160;&#160;&#160;Thu Apr 20 18:53:17 2023 +0200<br/>
</node>
<node BACKGROUND_COLOR="#eef0c5" COLOR="#990000" CREATED="1720546461284" ID="ID_704402784" MODIFIED="1720567304893" TEXT="Skizze ins Unreine : eine Invocation">
<icon BUILTIN="pencil"/>
<node BACKGROUND_COLOR="#fdfdcf" COLOR="#ff0000" CREATED="1728498487559" ID="ID_1936996983" MODIFIED="1728498512539" TEXT="Einsicht: das mu&#xdf; ein bottom-up-Prototyping sein....">
<icon BUILTIN="idea"/>
</node>
<node BACKGROUND_COLOR="#eef0c5" COLOR="#990000" CREATED="1720546405862" ID="ID_1380185144" MODIFIED="1720567309445" TEXT="Grundstruktur f&#xfc;r FeedManifold anlegen">
<arrowlink COLOR="#3563bc" DESTINATION="ID_723925333" ENDARROW="Default" ENDINCLINATION="-1;162;" ID="Arrow_ID_1608020834" STARTARROW="None" STARTINCLINATION="627;40;"/>
<icon BUILTIN="pencil"/>
<node CREATED="1728498677911" HGAP="36" ID="ID_1570528154" MODIFIED="1728498789076" TEXT="zweifelhaft ob es sich noch um ein &#xbb;Objekt&#xab; handelt" VSHIFT="22">
<richcontent TYPE="NOTE"><html>
<head/>
<body>
<p>
im alten Design von 2012 war die &#187;Buffer Table&#171; gedacht als eine Entit&#228;t, die zumindest operational eine gewisse Abstraktion leistet. Im neuen Entwurf dagegen bemerke ich eine starke Tendenz, dies nur noch als eine Laufzeit-Datenstruktur zu betrachten, die durch das &#187;WeavingPattern&#171; bespielt wird
</p>
</body>
</html></richcontent>
</node>
</node>
<node BACKGROUND_COLOR="#eef0c5" COLOR="#990000" CREATED="1720546521352" ID="ID_1680202759" MODIFIED="1720567301713" TEXT="ein einfaches WeavingPattern f&#xfc;r einen 1:1 Aufruf">
<icon BUILTIN="pencil"/>
@ -87871,6 +87984,7 @@ Date:&#160;&#160;&#160;Thu Apr 20 18:53:17 2023 +0200<br/>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1720573559675" ID="ID_1900172091" MODIFIED="1720573594815" TEXT="versuche mal ein direkt Objekt-gelinktes Routing-Array zu implementieren">
<linktarget COLOR="#db4778" DESTINATION="ID_1900172091" ENDARROW="Default" ENDINCLINATION="-567;-19;" ID="Arrow_ID_1645995790" SOURCE="ID_878431324" STARTARROW="None" STARTINCLINATION="-1009;66;"/>
<icon BUILTIN="flag-yellow"/>
<node CREATED="1728498874741" ID="ID_1779636924" MODIFIED="1728498906825" TEXT="bedeutet: direkte Referenzen &#x2014; statt interpretieren einer Meta-Spec"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1720622923411" ID="ID_424860567" MODIFIED="1728437523623" TEXT="Rahmen f&#xfc;r den InvocationAdapter abstecken">
<linktarget COLOR="#5d315c" DESTINATION="ID_424860567" ENDARROW="Default" ENDINCLINATION="-1137;-1326;" ID="Arrow_ID_1907915651" SOURCE="ID_316855073" STARTARROW="None" STARTINCLINATION="475;34;"/>
@ -89202,9 +89316,176 @@ Date:&#160;&#160;&#160;Thu Apr 20 18:53:17 2023 +0200<br/>
<icon BUILTIN="hourglass"/>
</node>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1728516089960" ID="ID_1274882287" MODIFIED="1728586526758" TEXT="Binding auf eine Funktion herstellen">
<linktarget COLOR="#4a43ba" DESTINATION="ID_1274882287" ENDARROW="Default" ENDINCLINATION="-987;-72;" ID="Arrow_ID_1839790581" SOURCE="ID_520256497" STARTARROW="None" STARTINCLINATION="1230;281;"/>
<icon BUILTIN="flag-yellow"/>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1728516458862" ID="ID_543821007" MODIFIED="1728516484095" TEXT="Prototyp &#x2259; SimpleWeavingPattern">
<icon BUILTIN="yes"/>
</node>
<node CREATED="1728516510080" ID="ID_238280414" MODIFIED="1728516513261" TEXT="Aufgabe">
<node CREATED="1728516514596" ID="ID_378624147" MODIFIED="1728516534984" TEXT="gegeben: eine Media-Processing-Function"/>
<node CREATED="1728516546003" ID="ID_1336878974" MODIFIED="1728516576658" TEXT="gesucht: Spec oder Pattern der Verdrahtung um diese im pull() aufzurufen"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1728516623352" ID="ID_352122889" MODIFIED="1728516642591" TEXT="L&#xf6;sungsweg: einen WeavingPatternBuilder konstruieren">
<icon BUILTIN="flag-yellow"/>
<node CREATED="1728517219272" ID="ID_1949349210" MODIFIED="1728517230595" TEXT="Aufgaben zu l&#xf6;sen....">
<node CREATED="1728517232983" ID="ID_1901356657" MODIFIED="1728517254807" TEXT="Storage: wo und wie wird er erzeugt und gehalten?">
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1728517853488" ID="ID_207532070" MODIFIED="1728517876717">
<richcontent TYPE="NODE"><html>
<head/>
<body>
<p>
mu&#223;<i>&#160;irgendwie</i>&#160;in den PortBuilder
</p>
</body>
</html></richcontent>
<icon BUILTIN="yes"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1728581656920" ID="ID_739845793" MODIFIED="1728581671370" TEXT="denkbar w&#xe4;re ein Quer-Builder-Ansatz">
<icon BUILTIN="flag-yellow"/>
<node CREATED="1728581685771" ID="ID_1910481768" MODIFIED="1728581777685" TEXT="da der Builder per-Value/move arbeitet">
<icon BUILTIN="idea"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1728581711706" ID="ID_133629991" MODIFIED="1728581797422" TEXT="d.h. die Funktions-Angabe schwenkt den Typ">
<icon BUILTIN="flag-yellow"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1728581783087" ID="ID_854272919" MODIFIED="1728581797423" TEXT="brauche dann einen Bottom-Platzhalter-Builder">
<icon BUILTIN="flag-yellow"/>
</node>
</node>
</node>
<node CREATED="1728517256203" ID="ID_480014054" MODIFIED="1728517267790" TEXT="Verdrahtung auf die eigentliche Processing-Function"/>
<node CREATED="1728517306077" ID="ID_781615859" MODIFIED="1728517400020" TEXT="Verdrahtung Service-Context / DI f&#xfc;r runtime-services">
<richcontent TYPE="NOTE"><html>
<head/>
<body>
<p>
zur Laufzeit haben wir Services wie den Cache und die BufferProvider; diese sollten beser nicht dirket auf dem Builder-API sichtbar sein, sondern <i>magisch injiziert</i>&#160;werden
</p>
</body>
</html></richcontent>
</node>
<node BACKGROUND_COLOR="#f0d5c5" COLOR="#990033" CREATED="1728517479781" ID="ID_1252289489" MODIFIED="1728517495890" TEXT="wer setzt dann eigentlich die &#xbb;einfache Verdrahtung&#xab; um?">
<icon BUILTIN="help"/>
<node CREATED="1728517499131" ID="ID_1437141043" MODIFIED="1728517516268" TEXT="ich habe gesagt, 1:1-Verschaltung sei der Default"/>
<node CREATED="1728517519366" ID="ID_1357247017" MODIFIED="1728517704540">
<richcontent TYPE="NODE"><html>
<head/>
<body>
<p>
jetzt habe ich einen <font face="Monospaced" color="#7e01e1"><b>SimpleWeavingBuilder</b></font>&#160;geschrieben, dem man das alles explizit sagen mu&#223;
</p>
</body>
</html></richcontent>
</node>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1728517544812" ID="ID_948060527" MODIFIED="1728517603668" TEXT="aber die Idee war doch, da&#xdf; das &#xbb;Weaving-Pattern&#xab; schematisch festlegt, wie verdrahtet wird">
<icon BUILTIN="broken-line"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1728569398198" ID="ID_1013813267" MODIFIED="1728569435495" TEXT="&#x27f9; das f&#xe4;llt dann der n&#xe4;chst h&#xf6;heren Ebene zu &#x2259; dem PortBuilder">
<icon BUILTIN="idea"/>
</node>
</node>
</node>
<node CREATED="1728575095471" ID="ID_807507393" MODIFIED="1728580412842" TEXT="mu&#xdf; aber auch API-Design bedenken">
<arrowlink COLOR="#507ec8" DESTINATION="ID_1267841334" ENDARROW="Default" ENDINCLINATION="-66;-100;" ID="Arrow_ID_537610685" STARTARROW="None" STARTINCLINATION="-257;20;"/>
</node>
</node>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1721782550869" ID="ID_173220882" MODIFIED="1721782642416" TEXT="vereinfachtes Aufruf-API: Slots der Reihe nach belegen">
<linktarget COLOR="#5581a2" DESTINATION="ID_173220882" ENDARROW="Default" ENDINCLINATION="-314;-501;" ID="Arrow_ID_84112739" SOURCE="ID_1583773170" STARTARROW="None" STARTINCLINATION="540;29;"/>
<icon BUILTIN="flag-yellow"/>
<node CREATED="1728575111581" ID="ID_1267841334" LINK="#ID_973244167" MODIFIED="1728580405766" TEXT="Nutz-Kontext">
<linktarget COLOR="#507ec8" DESTINATION="ID_1267841334" ENDARROW="Default" ENDINCLINATION="-66;-100;" ID="Arrow_ID_537610685" SOURCE="ID_807507393" STARTARROW="None" STARTINCLINATION="-257;20;"/>
<icon BUILTIN="edit"/>
<node CREATED="1728575154175" ID="ID_649373795" MODIFIED="1728576988741" TEXT="liegt in der Implementierung eines Lib-Plugins">
<icon BUILTIN="info"/>
</node>
<node BACKGROUND_COLOR="#e1d68a" COLOR="#564468" CREATED="1728576771353" ID="ID_412907481" MODIFIED="1728577164240" TEXT="im &#xdc;bersetzungs-Kontext Semantik &#x27fc; Implementierung">
<arrowlink COLOR="#5c3989" DESTINATION="ID_653731910" ENDARROW="Default" ENDINCLINATION="-1156;76;" ID="Arrow_ID_1500252574" STARTARROW="None" STARTINCLINATION="-1041;-49;"/>
<font BOLD="true" NAME="SansSerif" SIZE="12"/>
<icon BUILTIN="forward"/>
<node CREATED="1728578055255" ID="ID_1427476084" MODIFIED="1728578065885" TEXT="Erwartungen werden als semantische Attributierung ausgedr&#xfc;ckt"/>
<node CREATED="1728578066929" ID="ID_96650446" MODIFIED="1728578075531" TEXT="als Ankerpunkt ist ein ProcAsset gegeben">
<node CREATED="1728578079995" ID="ID_1768335138" MODIFIED="1728578170823" TEXT="dieses wiederum wurde irgendwann beim Laden einer Library eingebracht"/>
<node CREATED="1728578176858" ID="ID_1753087316" MODIFIED="1728578207138" TEXT="und f&#xfc;hrt auch in diese zur&#xfc;ck, mit internen Qualifikatoren"/>
</node>
</node>
<node CREATED="1728578690765" ID="ID_1750370716" MODIFIED="1728578703543" TEXT="die technische Kontext-Policy wird bereits hereingereicht">
<node CREATED="1728578705312" ID="ID_427256678" LINK="#ID_366571753" MODIFIED="1728579288476" TEXT="mutma&#xdf;lich verpackt als Generator-Funktor oder Visitor">
<richcontent TYPE="NOTE"><html>
<head/>
<body>
<p>
...technisch ist das ein kniffeliger double-Dispatch; beide Seiten der Interaktion haben jeweils einen konkreten Typkontext, den man so nicht direkt als API-Funktion ausdr&#252;cken kann, und ich kann im Moment noch nicht vorhersagen, wie das zu l&#246;sen ist &#8212; es wird darauf ankommen, die Indirektion geschickt zu drehen, so da&#223; sie<i>&#160;auf etwas Generisches f&#228;llt.</i>
</p>
</body>
</html></richcontent>
</node>
<node CREATED="1728579363537" ID="ID_1519212817" MODIFIED="1728579393374">
<richcontent TYPE="NODE"><html>
<head/>
<body>
<p>
mache hier (f&#252;r den Prototyp) die Anahme: <i>der Level-2-Builder kann konstruiert werden</i>
</p>
</body>
</html></richcontent>
<icon BUILTIN="yes"/>
</node>
</node>
<node CREATED="1728579413409" ID="ID_1723735578" MODIFIED="1728579429782" TEXT="die Library gibt dann ihre Implementierungs-(wrapper)-Funktion an"/>
<node CREATED="1728579457262" ID="ID_1112406479" MODIFIED="1728579480743" TEXT="und spezifiziert &#x2014; implizit darauf aufbauend &#x2014; die eingangsseitige Verdrahtung"/>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1728579633151" ID="ID_989040018" MODIFIED="1728579846769" TEXT="hier k&#xf6;nnte ein inhaltliches Mapping-Problem auftreten">
<richcontent TYPE="NOTE"><html>
<head/>
<body>
<p>
...insofern die Library die richtigen Eing&#228;nge w&#228;hlen mu&#223; und deshalb Annahmen (oder explizite Informationen) zu den Leed-Nodes ben&#246;tigt; zumindest kann unterstellt werden, da&#223; auch die Lead-Nodes durch die gleiche Library implementiert werden, oder Adapter darstellen, welche kompatible Stromdaten f&#252;r diese Library produzieren
</p>
</body>
</html></richcontent>
<icon BUILTIN="messagebox_warning"/>
</node>
<node CREATED="1728580006093" ID="ID_987246276" MODIFIED="1728580019671" TEXT="drei Verdrahtungs-Methoden werden bereitgestellt">
<node CREATED="1728580024315" ID="ID_1346922494" MODIFIED="1728580033813" TEXT="einfache schematische Verdrahtung">
<node CREATED="1728580199211" ID="ID_1788691604" MODIFIED="1728580212307" TEXT="1:1 von den Leads auf die Eingabe-Slots"/>
<node CREATED="1728580216480" ID="ID_8759118" MODIFIED="1728580246181" TEXT="die Eingabe-Slots steuern den Verdrahtungsvorgang">
<richcontent TYPE="NOTE"><html>
<head/>
<body>
<p>
...das hei&#223;t, es kann mehr Leads als Slots geben
</p>
</body>
</html></richcontent>
</node>
<node CREATED="1728580252241" ID="ID_1919588221" MODIFIED="1728580265878" TEXT="es wird &#xfc;berall die gleiche Port-Nummer unterstellt"/>
</node>
<node CREATED="1728580053927" ID="ID_1829298745" MODIFIED="1728580061913" TEXT="explizite Einzel-Verdrahtung">
<node CREATED="1728580319403" ID="ID_1407313016" MODIFIED="1728580364249" TEXT="man spezifiziert explizit Lead-# und Port-#"/>
<node CREATED="1728581568388" ID="ID_254354029" MODIFIED="1728581587661" TEXT="man k&#xf6;nnte hier auch fill(N)-Methoden anbieten">
<icon BUILTIN="idea"/>
</node>
</node>
<node BACKGROUND_COLOR="#d2beaf" COLOR="#5c4d6e" CREATED="1728580079395" ID="ID_573399636" MODIFIED="1728580185350" TEXT="direkte Angabe eines InvocationAdapters anstelle der Funktion">
<icon BUILTIN="hourglass"/>
</node>
<node BACKGROUND_COLOR="#d2beaf" COLOR="#5c4d6e" CREATED="1728580156849" ID="ID_413544349" MODIFIED="1728580179825" TEXT="(geplant/optional) direkte Angabe eines WeavinPatternBuilders">
<icon BUILTIN="hourglass"/>
</node>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1728581030897" ID="ID_1283310596" MODIFIED="1728581127193" TEXT="Angabe einer Funktion zwingend erforderlich">
<richcontent TYPE="NOTE"><html>
<head/>
<body>
<p>
(oder eines InvocationAdapters oder Pattern Builders)
</p>
</body>
</html></richcontent>
<icon BUILTIN="yes"/>
</node>
</node>
<node CREATED="1721782666679" ID="ID_1453585170" MODIFIED="1721782669193" TEXT="attachToLeadPort(ProcNode&amp; lead, uint portNr)"/>
</node>
</node>
@ -89212,6 +89493,30 @@ Date:&#160;&#160;&#160;Thu Apr 20 18:53:17 2023 +0200<br/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1720622703868" ID="ID_332813706" MODIFIED="1720622709065" TEXT="in Bausteine zerlegen">
<icon BUILTIN="flag-yellow"/>
<node BACKGROUND_COLOR="#f0d5c5" COLOR="#990033" CREATED="1728500237115" ID="ID_1324415480" MODIFIED="1728500255724" TEXT="unklar: wo wird die Flexibilit&#xe4;t f&#xfc;r WeavingPatters eingef&#xfc;hrt?">
<icon BUILTIN="help"/>
<node CREATED="1728500258076" ID="ID_1366737489" MODIFIED="1728500314815" TEXT="ich hab jetzt einen SimpleWeavingPatternBuilder">
<richcontent TYPE="NOTE"><html>
<head/>
<body>
<p>
...f&#252;r sich genommen w&#228;re das eine Festlegung auf das &#187;simple weaving pattern&#171; &#8212; das bedeutet, 1:1-Verdrahtung mit explizit anzugebenden Ausnahmen
</p>
</body>
</html></richcontent>
</node>
<node CREATED="1728500461049" ID="ID_187214045" MODIFIED="1728500587071" TEXT="die Konvention ist : Turnout baut direkt auf WeavingPattern auf">
<richcontent TYPE="NOTE"><html>
<head/>
<body>
<p>
das bedeutet: ein Builder f&#252;r eine bestimmte Art Weaving-Pattern kann letztlich auch direkt einen Turnout konstruieren, sofern nur das WeavingPattern die 5 Schritte als Member-Functions bereitstellt, welche notwendig sind, um das Port-API zu implementieren
</p>
</body>
</html></richcontent>
<icon BUILTIN="idea"/>
</node>
</node>
</node>
</node>
</node>
@ -89224,7 +89529,16 @@ Date:&#160;&#160;&#160;Thu Apr 20 18:53:17 2023 +0200<br/>
<arrowlink COLOR="#8c303b" DESTINATION="ID_1536301470" ENDARROW="Default" ENDINCLINATION="-653;972;" ID="Arrow_ID_1675114658" STARTARROW="None" STARTINCLINATION="373;-24;"/>
<linktarget COLOR="#cd0172" DESTINATION="ID_668512282" ENDARROW="Default" ENDINCLINATION="-522;-42;" ID="Arrow_ID_1453353099" SOURCE="ID_1951506826" STARTARROW="None" STARTINCLINATION="651;43;"/>
<icon BUILTIN="help"/>
<node CREATED="1720999894058" ID="ID_214293974" MODIFIED="1720999922585" TEXT="Instantiiert wird sie erst im Turnout::mount()"/>
<node CREATED="1720999894058" ID="ID_214293974" MODIFIED="1728514565103" TEXT="Instantiiert wird sie erst im Turnout::weave()">
<richcontent TYPE="NOTE"><html>
<head/>
<body>
<p>
...durch Delegieren an PAT::mount()&#160;&#160;&#8212;&#160;&#160;wobei PAT &#8801; weaving pattern
</p>
</body>
</html></richcontent>
</node>
<node CREATED="1720999923389" ID="ID_1583842175" MODIFIED="1720999949503">
<richcontent TYPE="NODE"><html>
<head/>
@ -89234,6 +89548,14 @@ Date:&#160;&#160;&#160;Thu Apr 20 18:53:17 2023 +0200<br/>
</p>
</body>
</html></richcontent>
<richcontent TYPE="NOTE"><html>
<head/>
<body>
<p>
....und zwar durch Festlegen des konkreten Typs des Turnout, welcher dann das Weaving-Pattern als Mix-in einbindet, um auf dieser Basis das Turnout-Interface zu implementieren
</p>
</body>
</html></richcontent>
</node>
</node>
</node>