strolch-website/docs/documentation/model/index.html

287 lines
67 KiB
HTML

<!doctype html><html lang=en class="js csstransforms3d"><head><meta charset=utf-8><meta name=viewport content="width=device-width,initial-scale=1"><meta name=generator content="Hugo 0.80.0"><meta name=description content="Strolch is a parameterized framework for use on servers and IoT"><meta name=author content="Robert von Burg"><link rel=icon href=/favicon.ico type=image/ico><title>Model - Strolch</title><link href=/css/nucleus.css?1678977092 rel=stylesheet><link href=/css/fontawesome-all.min.css?1678977092 rel=stylesheet><link href=/css/hybrid.css?1678977092 rel=stylesheet><link href=/css/featherlight.min.css?1678977092 rel=stylesheet><link href=/css/perfect-scrollbar.min.css?1678977092 rel=stylesheet><link href=/css/auto-complete.css?1678977092 rel=stylesheet><link href=/css/atom-one-dark-reasonable.css?1678977092 rel=stylesheet><link href=/css/theme.css?1678977092 rel=stylesheet><link href=/css/hugo-theme.css?1678977092 rel=stylesheet><link href=/css/theme-green.css?1678977092 rel=stylesheet><script src=/js/jquery-3.3.1.min.js?1678977092></script><style>:root #header+#content>#left>#rlblock_left{display:none!important}</style></head><body data-url=/documentation/model/><nav id=sidebar><div id=header-wrapper><div id=header><a id=logo href=/><img src=/logo.png></a></div><div class=searchbox><label for=search-by><i class="fas fa-search"></i></label><input data-search-input id=search-by type=search placeholder=Search...>
<span data-search-clear><i class="fas fa-times"></i></span></div><script type=text/javascript src=/js/lunr.min.js?1678977092></script><script type=text/javascript src=/js/auto-complete.js?1678977092></script><script type=text/javascript>var baseurl="https:\/\/strolch.li\/";</script><script type=text/javascript src=/js/search.js?1678977092></script></div><section id=homelinks><ul><li><a class=padding href=/><i class="fas fa-home"></i>Home</a></li></ul></section><div class=highlightable><ul class=topics><li data-nav-id=/api/ title=API class=dd-item><a href=/api/>API</a></li><li data-nav-id=/documentation/ title=Documentation class="dd-item
parent"><a href=/documentation/>Documentation</a><ul><li data-nav-id=/documentation/architecture/ title=Architecture class=dd-item><a href=/documentation/architecture/>Architecture</a></li><li data-nav-id=/documentation/model/ title=Model class="dd-item active"><a href=/documentation/model/>Model</a></li><li data-nav-id=/documentation/do-and-donts/ title="Do and Don't" class=dd-item><a href=/documentation/do-and-donts/>Do and Don't</a></li><li data-nav-id=/documentation/runtime-configuration/ title="Runtime Configuration" class=dd-item><a href=/documentation/runtime-configuration/>Runtime Configuration</a></li><li data-nav-id=/documentation/realms/ title=Realms class=dd-item><a href=/documentation/realms/>Realms</a></li><li data-nav-id=/documentation/components/ title=Components class=dd-item><a href=/documentation/components/>Components</a></li><li data-nav-id=/documentation/services-and-commands/ title="Services and Commands" class=dd-item><a href=/documentation/services-and-commands/>Services and Commands</a></li><li data-nav-id=/documentation/searches/ title=Searches class=dd-item><a href=/documentation/searches/>Searches</a></li><li data-nav-id=/documentation/queries/ title=Queries class=dd-item><a href=/documentation/queries/>Queries</a></li><li data-nav-id=/documentation/transactions/ title=Transactions class=dd-item><a href=/documentation/transactions/>Transactions</a></li><li data-nav-id=/documentation/policies/ title=Policies class=dd-item><a href=/documentation/policies/>Policies</a></li><li data-nav-id=/documentation/observers/ title=Observers class=dd-item><a href=/documentation/observers/>Observers</a></li><li data-nav-id=/documentation/versioning/ title=Versioning class=dd-item><a href=/documentation/versioning/>Versioning</a></li><li data-nav-id=/documentation/reports/ title=Reports class=dd-item><a href=/documentation/reports/>Reports</a></li><li data-nav-id=/documentation/priviles/ title=Privileges class=dd-item><a href=/documentation/priviles/>Privileges</a></li></ul></li><li data-nav-id=/plc/ title=PLC class=dd-item><a href=/plc/>PLC</a><ul><li data-nav-id=/plc/architecture/ title=Architecture class=dd-item><a href=/plc/architecture/>Architecture</a></li><li data-nav-id=/plc/example-set-up/ title="Example Set-Up" class=dd-item><a href=/plc/example-set-up/>Example Set-Up</a></li></ul></li><li data-nav-id=/tutorial/ title=Tutorial class=dd-item><a href=/tutorial/>Tutorial</a><ul><li data-nav-id=/tutorial/configuration/ title=Configuration class=dd-item><a href=/tutorial/configuration/>Configuration</a></li><li data-nav-id=/tutorial/model/ title=Model class=dd-item><a href=/tutorial/model/>Model</a></li><li data-nav-id=/tutorial/crud-book/ title="CRUD Book" class=dd-item><a href=/tutorial/crud-book/>CRUD Book</a></li></ul></li><li data-nav-id=/download/ title=Download class=dd-item><a href=/download/>Download</a></li><li data-nav-id=/development/ title=Development class=dd-item><a href=/development/>Development</a><ul><li data-nav-id=/development/prerequisites/ title=Prerequisites class=dd-item><a href=/development/prerequisites/>Prerequisites</a></li><li data-nav-id=/development/building/ title="Building Strolch" class=dd-item><a href=/development/building/>Building Strolch</a></li><li data-nav-id=/development/maven-archetypes/ title="Maven Archetypes" class=dd-item><a href=/development/maven-archetypes/>Maven Archetypes</a></li><li data-nav-id=/development/web-app/ title="Web App" class=dd-item><a href=/development/web-app/>Web App</a></li><li data-nav-id=/development/main-class-app/ title="Main Class App" class=dd-item><a href=/development/main-class-app/>Main Class App</a></li><li data-nav-id=/development/converting-existing/ title="Converting Existing App" class=dd-item><a href=/development/converting-existing/>Converting Existing App</a></li></ul></li><li data-nav-id=/blog/ title=Blog class=dd-item><a href=/blog/>Blog</a><ul><li data-nav-id=/blog/post-00018/ title="Strolch PLC 1.2.3 released" class=dd-item><a href=/blog/post-00018/>Strolch PLC 1.2.3 released</a></li><li data-nav-id=/blog/post-00017/ title="Strolch 1.8.5 and PLC 1.2.2 are out" class=dd-item><a href=/blog/post-00017/>Strolch 1.8.5 and PLC 1.2.2 are out</a></li><li data-nav-id=/blog/post-00016/ title="Strolch PLC now also on Maven Central" class=dd-item><a href=/blog/post-00016/>Strolch PLC now also on Maven Central</a></li><li data-nav-id=/blog/post-00015/ title="Release of Strolch 1.6.100" class=dd-item><a href=/blog/post-00015/>Release of Strolch 1.6.100</a></li><li data-nav-id=/blog/post-00014/ title="Strolch Reports" class=dd-item><a href=/blog/post-00014/>Strolch Reports</a></li><li data-nav-id=/blog/post-00013/ title="Strolch Searches" class=dd-item><a href=/blog/post-00013/>Strolch Searches</a></li><li data-nav-id=/blog/post-00012/ title="Wow, the many changes!" class=dd-item><a href=/blog/post-00012/>Wow, the many changes!</a></li><li data-nav-id=/blog/post-00011/ title="Strolch now on Maven Central" class=dd-item><a href=/blog/post-00011/>Strolch now on Maven Central</a></li><li data-nav-id=/blog/post-00010/ title="Versioning of objects" class=dd-item><a href=/blog/post-00010/>Versioning of objects</a></li><li data-nav-id=/blog/post-00009/ title="Release 1.2.0" class=dd-item><a href=/blog/post-00009/>Release 1.2.0</a></li><li data-nav-id=/blog/post-00008/ title="Strolch Update" class=dd-item><a href=/blog/post-00008/>Strolch Update</a></li><li data-nav-id=/blog/post-00007/ title="Activities: Beginning of the planning engine" class=dd-item><a href=/blog/post-00007/>Activities: Beginning of the planning engine</a></li><li data-nav-id=/blog/post-00006/ title="Strolch Documentation" class=dd-item><a href=/blog/post-00006/>Strolch Documentation</a></li><li data-nav-id=/blog/post-00005/ title="Strolch Release 1.0.0" class=dd-item><a href=/blog/post-00005/>Strolch Release 1.0.0</a></li><li data-nav-id=/blog/post-00004/ title="DurationParameter and other minor changes: Release 1.0.0-RC4" class=dd-item><a href=/blog/post-00004/>DurationParameter and other minor changes: Release 1.0.0-RC4</a></li><li data-nav-id=/blog/post-00003/ title="DB Initialization: Release 1.0.0-RC3" class=dd-item><a href=/blog/post-00003/>DB Initialization: Release 1.0.0-RC3</a></li><li data-nav-id=/blog/post-00002/ title="Release 1.0.0-RC2" class=dd-item><a href=/blog/post-00002/>Release 1.0.0-RC2</a></li><li data-nav-id=/blog/post-00001/ title="Release 1.0.0-RC1" class=dd-item><a href=/blog/post-00001/>Release 1.0.0-RC1</a></li></ul></li></ul><section id=shortcuts><h3>More</h3><ul><li><a class=padding href=https://strolch.li/tags><i class="fas fa-tags"></i>Tags</a></li><li><a class=padding href=https://github.com/strolch-li><i class="fab fa-github"></i>GitHub project</a></li><li><a rel=me class=padding href=https://mstdn.gsi.li/@eitch target=_blank><i class="fab fa-mastodon"></i>Mastodon</a></li></ul></section><section id=footer><p>Built with <a href=https://github.com/matcornic/hugo-theme-learn target=_blank><i class="fas fa-heart"></i></a>from <a href=https://getgrav.org target=_blank>Grav</a> and <a href=https://gohugo.io/ target=_blank>Hugo</a></p></section></div></nav><section id=body><div id=overlay></div><div class="padding highlightable"><div><div id=top-bar><div id=top-github-link><a class=github-link title="Edit this page" href=https://github.com/strolch-li/strolch-website/tree/develop/content/documentation/model.md target=blank><i class="fas fa-code-branch"></i><span id=top-github-link-text>Edit this page</span></a></div><div id=breadcrumbs itemscope itemtype=http://data-vocabulary.org/Breadcrumb><span id=sidebar-toggle-span><a href=# id=sidebar-toggle data-sidebar-toggle><i class="fas fa-bars"></i></a></span><span id=toc-menu><i class="fas fa-list-alt"></i></span><span class=links><a href=/>Strolch Overview</a> > <a href=/documentation/>Documentation</a> > Model</span></div><div class=progress><div class=wrapper><nav id=TableOfContents><ul><li><a href=#model>Model</a></li></ul></nav></div></div></div></div><div id=head-tags></div><div id=body-inner><h1>Model</h1><h2 id=model>Model</h2><p>Before we dive into the entire model, let&rsquo;s show an example and how it would
be modelled in Strolch and use in Strolch:</p><p><img src=/assets/images/strolch-model-example.png alt="Strolch model example"></p><p>The model has four entities, which will be modelled using 3 Resources and 1 Order object. The objects have numerous fields and the following relationships:</p><ul><li>Bidirectional between Article &lt;-> Product</li><li>Unidirectional from Order -> Article</li><li>Unidirectional from Order -> Customer</li></ul><p>A possible model would look as follows:</p><div class=highlight><pre style=color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4><code class=language-xml data-lang=xml><span style=color:#75715e>&lt;?xml version=&#34;1.0&#34; encoding=&#34;UTF-8&#34; ?&gt;</span>
<span style=color:#f92672>&lt;StrolchModel</span> <span style=color:#a6e22e>xmlns=</span><span style=color:#e6db74>&#34;https://strolch.li/xsd/StrolchModel-1.6.xsd&#34;</span><span style=color:#f92672>&gt;</span>
<span style=color:#f92672>&lt;Resource</span> <span style=color:#a6e22e>Id=</span><span style=color:#e6db74>&#34;Product&#34;</span> <span style=color:#a6e22e>Name=</span><span style=color:#e6db74>&#34;Product Template&#34;</span> <span style=color:#a6e22e>Type=</span><span style=color:#e6db74>&#34;Template&#34;</span><span style=color:#f92672>&gt;</span>
<span style=color:#f92672>&lt;ParameterBag</span> <span style=color:#a6e22e>Id=</span><span style=color:#e6db74>&#34;parameters&#34;</span> <span style=color:#a6e22e>Name=</span><span style=color:#e6db74>&#34;Parameters&#34;</span> <span style=color:#a6e22e>Type=</span><span style=color:#e6db74>&#34;Parameters&#34;</span><span style=color:#f92672>&gt;</span>
<span style=color:#f92672>&lt;Parameter</span> <span style=color:#a6e22e>Id=</span><span style=color:#e6db74>&#34;description&#34;</span> <span style=color:#a6e22e>Name=</span><span style=color:#e6db74>&#34;Description&#34;</span> <span style=color:#a6e22e>Type=</span><span style=color:#e6db74>&#34;String&#34;</span> <span style=color:#a6e22e>Value=</span><span style=color:#e6db74>&#34;&#34;</span><span style=color:#f92672>/&gt;</span>
<span style=color:#f92672>&lt;Parameter</span> <span style=color:#a6e22e>Id=</span><span style=color:#e6db74>&#34;color&#34;</span> <span style=color:#a6e22e>Name=</span><span style=color:#e6db74>&#34;Color&#34;</span> <span style=color:#a6e22e>Type=</span><span style=color:#e6db74>&#34;String&#34;</span> <span style=color:#a6e22e>Value=</span><span style=color:#e6db74>&#34;&#34;</span><span style=color:#f92672>/&gt;</span>
<span style=color:#f92672>&lt;Parameter</span> <span style=color:#a6e22e>Id=</span><span style=color:#e6db74>&#34;form&#34;</span> <span style=color:#a6e22e>Name=</span><span style=color:#e6db74>&#34;Form&#34;</span> <span style=color:#a6e22e>Type=</span><span style=color:#e6db74>&#34;String&#34;</span> <span style=color:#a6e22e>Value=</span><span style=color:#e6db74>&#34;&#34;</span><span style=color:#f92672>/&gt;</span>
<span style=color:#f92672>&lt;/ParameterBag&gt;</span>
<span style=color:#f92672>&lt;ParameterBag</span> <span style=color:#a6e22e>Id=</span><span style=color:#e6db74>&#34;relations&#34;</span> <span style=color:#a6e22e>Name=</span><span style=color:#e6db74>&#34;Relations&#34;</span> <span style=color:#a6e22e>Type=</span><span style=color:#e6db74>&#34;Relations&#34;</span><span style=color:#f92672>&gt;</span>
<span style=color:#f92672>&lt;Parameter</span> <span style=color:#a6e22e>Id=</span><span style=color:#e6db74>&#34;articles&#34;</span> <span style=color:#a6e22e>Name=</span><span style=color:#e6db74>&#34;Articles&#34;</span> <span style=color:#a6e22e>Type=</span><span style=color:#e6db74>&#34;StringList&#34;</span> <span style=color:#a6e22e>Interpretation=</span><span style=color:#e6db74>&#34;Resource-Ref&#34;</span> <span style=color:#a6e22e>Uom=</span><span style=color:#e6db74>&#34;Article&#34;</span> <span style=color:#a6e22e>Value=</span><span style=color:#e6db74>&#34;&#34;</span><span style=color:#f92672>/&gt;</span>
<span style=color:#f92672>&lt;/ParameterBag&gt;</span>
<span style=color:#f92672>&lt;/Resource&gt;</span>
<span style=color:#f92672>&lt;Resource</span> <span style=color:#a6e22e>Id=</span><span style=color:#e6db74>&#34;Article&#34;</span> <span style=color:#a6e22e>Name=</span><span style=color:#e6db74>&#34;Article Template&#34;</span> <span style=color:#a6e22e>Type=</span><span style=color:#e6db74>&#34;Template&#34;</span><span style=color:#f92672>&gt;</span>
<span style=color:#f92672>&lt;ParameterBag</span> <span style=color:#a6e22e>Id=</span><span style=color:#e6db74>&#34;parameters&#34;</span> <span style=color:#a6e22e>Name=</span><span style=color:#e6db74>&#34;Parameters&#34;</span> <span style=color:#a6e22e>Type=</span><span style=color:#e6db74>&#34;Parameters&#34;</span><span style=color:#f92672>&gt;</span>
<span style=color:#f92672>&lt;Parameter</span> <span style=color:#a6e22e>Id=</span><span style=color:#e6db74>&#34;description&#34;</span> <span style=color:#a6e22e>Name=</span><span style=color:#e6db74>&#34;Description&#34;</span> <span style=color:#a6e22e>Type=</span><span style=color:#e6db74>&#34;String&#34;</span> <span style=color:#a6e22e>Value=</span><span style=color:#e6db74>&#34;&#34;</span><span style=color:#f92672>/&gt;</span>
<span style=color:#f92672>&lt;Parameter</span> <span style=color:#a6e22e>Id=</span><span style=color:#e6db74>&#34;barcode&#34;</span> <span style=color:#a6e22e>Name=</span><span style=color:#e6db74>&#34;Barcode&#34;</span> <span style=color:#a6e22e>Type=</span><span style=color:#e6db74>&#34;String&#34;</span> <span style=color:#a6e22e>Value=</span><span style=color:#e6db74>&#34;&#34;</span><span style=color:#f92672>/&gt;</span>
<span style=color:#f92672>&lt;/ParameterBag&gt;</span>
<span style=color:#f92672>&lt;ParameterBag</span> <span style=color:#a6e22e>Id=</span><span style=color:#e6db74>&#34;relations&#34;</span> <span style=color:#a6e22e>Name=</span><span style=color:#e6db74>&#34;Relations&#34;</span> <span style=color:#a6e22e>Type=</span><span style=color:#e6db74>&#34;Relations&#34;</span><span style=color:#f92672>&gt;</span>
<span style=color:#f92672>&lt;Parameter</span> <span style=color:#a6e22e>Id=</span><span style=color:#e6db74>&#34;product&#34;</span> <span style=color:#a6e22e>Name=</span><span style=color:#e6db74>&#34;Product&#34;</span> <span style=color:#a6e22e>Type=</span><span style=color:#e6db74>&#34;String&#34;</span> <span style=color:#a6e22e>Interpretation=</span><span style=color:#e6db74>&#34;Resource-Ref&#34;</span> <span style=color:#a6e22e>Uom=</span><span style=color:#e6db74>&#34;Product&#34;</span> <span style=color:#a6e22e>Value=</span><span style=color:#e6db74>&#34;&#34;</span><span style=color:#f92672>/&gt;</span>
<span style=color:#f92672>&lt;/ParameterBag&gt;</span>
<span style=color:#f92672>&lt;/Resource&gt;</span>
<span style=color:#f92672>&lt;Resource</span> <span style=color:#a6e22e>Id=</span><span style=color:#e6db74>&#34;Customer&#34;</span> <span style=color:#a6e22e>Name=</span><span style=color:#e6db74>&#34;Customer Template&#34;</span> <span style=color:#a6e22e>Type=</span><span style=color:#e6db74>&#34;Template&#34;</span><span style=color:#f92672>&gt;</span>
<span style=color:#f92672>&lt;ParameterBag</span> <span style=color:#a6e22e>Id=</span><span style=color:#e6db74>&#34;address&#34;</span> <span style=color:#a6e22e>Name=</span><span style=color:#e6db74>&#34;Address&#34;</span> <span style=color:#a6e22e>Type=</span><span style=color:#e6db74>&#34;Address&#34;</span><span style=color:#f92672>&gt;</span>
<span style=color:#f92672>&lt;Parameter</span> <span style=color:#a6e22e>Id=</span><span style=color:#e6db74>&#34;street&#34;</span> <span style=color:#a6e22e>Name=</span><span style=color:#e6db74>&#34;Street&#34;</span> <span style=color:#a6e22e>Type=</span><span style=color:#e6db74>&#34;String&#34;</span> <span style=color:#a6e22e>Value=</span><span style=color:#e6db74>&#34;&#34;</span><span style=color:#f92672>/&gt;</span>
<span style=color:#f92672>&lt;Parameter</span> <span style=color:#a6e22e>Id=</span><span style=color:#e6db74>&#34;zip&#34;</span> <span style=color:#a6e22e>Name=</span><span style=color:#e6db74>&#34;Zip&#34;</span> <span style=color:#a6e22e>Type=</span><span style=color:#e6db74>&#34;String&#34;</span> <span style=color:#a6e22e>Value=</span><span style=color:#e6db74>&#34;&#34;</span><span style=color:#f92672>/&gt;</span>
<span style=color:#f92672>&lt;Parameter</span> <span style=color:#a6e22e>Id=</span><span style=color:#e6db74>&#34;city&#34;</span> <span style=color:#a6e22e>Name=</span><span style=color:#e6db74>&#34;City&#34;</span> <span style=color:#a6e22e>Type=</span><span style=color:#e6db74>&#34;String&#34;</span> <span style=color:#a6e22e>Value=</span><span style=color:#e6db74>&#34;&#34;</span><span style=color:#f92672>/&gt;</span>
<span style=color:#f92672>&lt;Parameter</span> <span style=color:#a6e22e>Id=</span><span style=color:#e6db74>&#34;country&#34;</span> <span style=color:#a6e22e>Name=</span><span style=color:#e6db74>&#34;Country&#34;</span> <span style=color:#a6e22e>Type=</span><span style=color:#e6db74>&#34;String&#34;</span> <span style=color:#a6e22e>Value=</span><span style=color:#e6db74>&#34;&#34;</span><span style=color:#f92672>/&gt;</span>
<span style=color:#f92672>&lt;/ParameterBag&gt;</span>
<span style=color:#f92672>&lt;/Resource&gt;</span>
<span style=color:#f92672>&lt;Order</span> <span style=color:#a6e22e>Id=</span><span style=color:#e6db74>&#34;Order&#34;</span> <span style=color:#a6e22e>Name=</span><span style=color:#e6db74>&#34;Order&#34;</span> <span style=color:#a6e22e>Type=</span><span style=color:#e6db74>&#34;Template&#34;</span><span style=color:#f92672>&gt;</span>
<span style=color:#f92672>&lt;ParameterBag</span> <span style=color:#a6e22e>Id=</span><span style=color:#e6db74>&#34;quantities&#34;</span> <span style=color:#a6e22e>Name=</span><span style=color:#e6db74>&#34;Quantities per Article Id&#34;</span> <span style=color:#a6e22e>Type=</span><span style=color:#e6db74>&#34;Quantities&#34;</span><span style=color:#f92672>&gt;</span>
<span style=color:#f92672>&lt;Parameter</span> <span style=color:#a6e22e>Id=</span><span style=color:#e6db74>&#34;quantity&#34;</span> <span style=color:#a6e22e>Name=</span><span style=color:#e6db74>&#34;Quantity&#34;</span> <span style=color:#a6e22e>Type=</span><span style=color:#e6db74>&#34;Float&#34;</span> <span style=color:#a6e22e>Value=</span><span style=color:#e6db74>&#34;0&#34;</span><span style=color:#f92672>/&gt;</span>
<span style=color:#f92672>&lt;/ParameterBag&gt;</span>
<span style=color:#f92672>&lt;ParameterBag</span> <span style=color:#a6e22e>Id=</span><span style=color:#e6db74>&#34;relations&#34;</span> <span style=color:#a6e22e>Name=</span><span style=color:#e6db74>&#34;Relations&#34;</span> <span style=color:#a6e22e>Type=</span><span style=color:#e6db74>&#34;Relations&#34;</span><span style=color:#f92672>&gt;</span>
<span style=color:#f92672>&lt;Parameter</span> <span style=color:#a6e22e>Id=</span><span style=color:#e6db74>&#34;articles&#34;</span> <span style=color:#a6e22e>Name=</span><span style=color:#e6db74>&#34;Articles&#34;</span> <span style=color:#a6e22e>Type=</span><span style=color:#e6db74>&#34;StringList&#34;</span> <span style=color:#a6e22e>Interpretation=</span><span style=color:#e6db74>&#34;Resource-Ref&#34;</span> <span style=color:#a6e22e>Uom=</span><span style=color:#e6db74>&#34;Article&#34;</span> <span style=color:#a6e22e>Value=</span><span style=color:#e6db74>&#34;&#34;</span><span style=color:#f92672>/&gt;</span>
<span style=color:#f92672>&lt;Parameter</span> <span style=color:#a6e22e>Id=</span><span style=color:#e6db74>&#34;customer&#34;</span> <span style=color:#a6e22e>Name=</span><span style=color:#e6db74>&#34;Customer&#34;</span> <span style=color:#a6e22e>Type=</span><span style=color:#e6db74>&#34;String&#34;</span> <span style=color:#a6e22e>Interpretation=</span><span style=color:#e6db74>&#34;Resource-Ref&#34;</span> <span style=color:#a6e22e>Uom=</span><span style=color:#e6db74>&#34;Customer&#34;</span> <span style=color:#a6e22e>Value=</span><span style=color:#e6db74>&#34;&#34;</span><span style=color:#f92672>/&gt;</span>
<span style=color:#f92672>&lt;/ParameterBag&gt;</span>
<span style=color:#f92672>&lt;/Order&gt;</span>
<span style=color:#f92672>&lt;/StrolchModel&gt;</span>
</code></pre></div><p>Let&rsquo;s go through this model:</p><ul><li>In the above model we see that the <code>id</code> and <code>name</code> fields are always on the
element, and thus aren&rsquo;t added as parameters. Further best practice is to use
a <code>parameters</code> ParameterBag, with one or more parameters, modelling the
fields. There is API support to not have to always type the <code>parameters</code> bag
id.</li><li>Note that in this example the Type of all the elements is <code>Template</code>. Strolch
has API support to create a clone of these elements, so that they have a
unique id, and the proper type for persistence.</li><li>The <code>Product</code> element has three parameters: <code>description</code>, <code>color</code> and <code>form</code>. In this
case they are all of type String. Further the <code>relations</code> ParameterBag defines
the relationships, i.e. the product knows its articles. Note how the relation
is first defined in a relations ParameterBag and that the Parameter has
<code>Interpretation="Resource-Ref" Uom="Product"</code> attributes. Strolch has API
support for this, making it trivial to retrieve a dependency.</li><li>The <code>Article</code> element has two parameters <code>description</code> and <code>barcode</code>. Further it has
a reference to its Product.</li><li>The <code>Order</code> element doesn&rsquo;t model the <code>date</code> and <code>state</code> fields as parameters, as
these are inherently part of an Order element. The Order does define two
references to customer and articles. A special case is the <code>quantities</code>
ParameterBag. This bag of parameters is used to store the per article quantity
for this order. With ParameterBags, you can eliminate the use of simple
aggregate classes, as is commonly used in object-oriented programming.</li><li>The <code>Customer</code> element models an <code>address</code> ParameterBag to store the address of a
customer. Using a separate bag allows for further more direct fields to stored
on the default parameters bag.</li></ul><p>Now that we have a basic understanding of te model, it is of far more interest
in how to create and interact with these elements at runtime. The following
listing will perform simple operations:</p><div class=highlight><pre style=color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4><code class=language-java data-lang=java><span style=color:#66d9ef>public</span> <span style=color:#66d9ef>class</span> <span style=color:#a6e22e>Example</span> <span style=color:#f92672>{</span>
<span style=color:#66d9ef>public</span> <span style=color:#66d9ef>static</span> <span style=color:#66d9ef>void</span> <span style=color:#a6e22e>main</span><span style=color:#f92672>(</span>String<span style=color:#f92672>[]</span> args<span style=color:#f92672>)</span> <span style=color:#f92672>{</span>
<span style=color:#75715e>// keep IDs for later use
</span><span style=color:#75715e></span> String dafalganId<span style=color:#f92672>;</span>
String dafalgan1Id<span style=color:#f92672>;</span>
String dafalgan2Id<span style=color:#f92672>;</span>
String customerId<span style=color:#f92672>;</span>
String orderId<span style=color:#f92672>;</span>
<span style=color:#75715e>// first transaction to create the data
</span><span style=color:#75715e></span> <span style=color:#66d9ef>try</span> <span style=color:#f92672>(</span>StrolchTransaction tx <span style=color:#f92672>=</span> runtimeMock<span style=color:#f92672>.</span><span style=color:#a6e22e>openUserTx</span><span style=color:#f92672>(</span>certificate<span style=color:#f92672>,</span> <span style=color:#66d9ef>false</span><span style=color:#f92672>))</span> <span style=color:#f92672>{</span>
<span style=color:#75715e>/*
</span><span style=color:#75715e> * create a new product
</span><span style=color:#75715e> */</span>
Resource dafalgan <span style=color:#f92672>=</span> tx<span style=color:#f92672>.</span><span style=color:#a6e22e>getResourceTemplate</span><span style=color:#f92672>(</span><span style=color:#e6db74>&#34;Product&#34;</span><span style=color:#f92672>,</span> <span style=color:#66d9ef>true</span><span style=color:#f92672>);</span>
dafalgan<span style=color:#f92672>.</span><span style=color:#a6e22e>setName</span><span style=color:#f92672>(</span><span style=color:#e6db74>&#34;Dafalgan 100mg&#34;</span><span style=color:#f92672>);</span>
dafalgan<span style=color:#f92672>.</span><span style=color:#a6e22e>setString</span><span style=color:#f92672>(</span><span style=color:#e6db74>&#34;description&#34;</span><span style=color:#f92672>,</span> <span style=color:#e6db74>&#34;Dafalgan is for pain.&#34;</span><span style=color:#f92672>);</span>
dafalgan<span style=color:#f92672>.</span><span style=color:#a6e22e>setString</span><span style=color:#f92672>(</span><span style=color:#e6db74>&#34;color&#34;</span><span style=color:#f92672>,</span> <span style=color:#e6db74>&#34;Yellow&#34;</span><span style=color:#f92672>);</span>
dafalgan<span style=color:#f92672>.</span><span style=color:#a6e22e>setString</span><span style=color:#f92672>(</span><span style=color:#e6db74>&#34;form&#34;</span><span style=color:#f92672>,</span> <span style=color:#e6db74>&#34;flat&#34;</span><span style=color:#f92672>);</span>
<span style=color:#75715e>/*
</span><span style=color:#75715e> * create articles
</span><span style=color:#75715e> */</span>
Resource dafalgan1 <span style=color:#f92672>=</span> tx<span style=color:#f92672>.</span><span style=color:#a6e22e>getResourceTemplate</span><span style=color:#f92672>(</span><span style=color:#e6db74>&#34;Article&#34;</span><span style=color:#f92672>,</span> <span style=color:#66d9ef>true</span><span style=color:#f92672>);</span>
dafalgan1<span style=color:#f92672>.</span><span style=color:#a6e22e>setName</span><span style=color:#f92672>(</span><span style=color:#e6db74>&#34;Dafalgan 100mg 10 pce&#34;</span><span style=color:#f92672>);</span>
dafalgan1<span style=color:#f92672>.</span><span style=color:#a6e22e>setString</span><span style=color:#f92672>(</span><span style=color:#e6db74>&#34;description&#34;</span><span style=color:#f92672>,</span> <span style=color:#e6db74>&#34;This is pack with 10 pieces.&#34;</span><span style=color:#f92672>);</span>
dafalgan1<span style=color:#f92672>.</span><span style=color:#a6e22e>setString</span><span style=color:#f92672>(</span><span style=color:#e6db74>&#34;barcode&#34;</span><span style=color:#f92672>,</span> <span style=color:#e6db74>&#34;654654&#34;</span><span style=color:#f92672>);</span>
Resource dafalgan2 <span style=color:#f92672>=</span> tx<span style=color:#f92672>.</span><span style=color:#a6e22e>getResourceTemplate</span><span style=color:#f92672>(</span><span style=color:#e6db74>&#34;Article&#34;</span><span style=color:#f92672>,</span> <span style=color:#66d9ef>true</span><span style=color:#f92672>);</span>
dafalgan2<span style=color:#f92672>.</span><span style=color:#a6e22e>setName</span><span style=color:#f92672>(</span><span style=color:#e6db74>&#34;Dafalgan 100mg 20 pce&#34;</span><span style=color:#f92672>);</span>
dafalgan2<span style=color:#f92672>.</span><span style=color:#a6e22e>setString</span><span style=color:#f92672>(</span><span style=color:#e6db74>&#34;description&#34;</span><span style=color:#f92672>,</span> <span style=color:#e6db74>&#34;This is pack with 20 pieces.&#34;</span><span style=color:#f92672>);</span>
dafalgan2<span style=color:#f92672>.</span><span style=color:#a6e22e>setString</span><span style=color:#f92672>(</span><span style=color:#e6db74>&#34;barcode&#34;</span><span style=color:#f92672>,</span> <span style=color:#e6db74>&#34;654655&#34;</span><span style=color:#f92672>);</span>
<span style=color:#75715e>/*
</span><span style=color:#75715e> * add reference to product
</span><span style=color:#75715e> */</span>
dafalgan1<span style=color:#f92672>.</span><span style=color:#a6e22e>setRelation</span><span style=color:#f92672>(</span><span style=color:#e6db74>&#34;product&#34;</span><span style=color:#f92672>,</span> dafalgan<span style=color:#f92672>);</span>
dafalgan2<span style=color:#f92672>.</span><span style=color:#a6e22e>setRelation</span><span style=color:#f92672>(</span><span style=color:#e6db74>&#34;product&#34;</span><span style=color:#f92672>,</span> dafalgan<span style=color:#f92672>);</span>
dafalgan<span style=color:#f92672>.</span><span style=color:#a6e22e>addRelation</span><span style=color:#f92672>(</span><span style=color:#e6db74>&#34;articles&#34;</span><span style=color:#f92672>,</span> dafalgan1<span style=color:#f92672>);</span>
dafalgan<span style=color:#f92672>.</span><span style=color:#a6e22e>addRelation</span><span style=color:#f92672>(</span><span style=color:#e6db74>&#34;articles&#34;</span><span style=color:#f92672>,</span> dafalgan2<span style=color:#f92672>);</span>
<span style=color:#75715e>/*
</span><span style=color:#75715e> * create a new customer
</span><span style=color:#75715e> */</span>
Resource customer1 <span style=color:#f92672>=</span> tx<span style=color:#f92672>.</span><span style=color:#a6e22e>getResourceTemplate</span><span style=color:#f92672>(</span><span style=color:#e6db74>&#34;Customer&#34;</span><span style=color:#f92672>,</span> <span style=color:#66d9ef>true</span><span style=color:#f92672>);</span>
customer1<span style=color:#f92672>.</span><span style=color:#a6e22e>setName</span><span style=color:#f92672>(</span><span style=color:#e6db74>&#34;John Doe&#34;</span><span style=color:#f92672>);</span>
<span style=color:#75715e>// set address
</span><span style=color:#75715e></span> ParameterBag addressBag <span style=color:#f92672>=</span> customer1<span style=color:#f92672>.</span><span style=color:#a6e22e>getParameterBag</span><span style=color:#f92672>(</span><span style=color:#e6db74>&#34;address&#34;</span><span style=color:#f92672>,</span> <span style=color:#66d9ef>true</span><span style=color:#f92672>);</span>
addressBag<span style=color:#f92672>.</span><span style=color:#a6e22e>setString</span><span style=color:#f92672>(</span><span style=color:#e6db74>&#34;street&#34;</span><span style=color:#f92672>,</span> <span style=color:#e6db74>&#34;Main Str. 1&#34;</span><span style=color:#f92672>);</span>
addressBag<span style=color:#f92672>.</span><span style=color:#a6e22e>setString</span><span style=color:#f92672>(</span><span style=color:#e6db74>&#34;zip&#34;</span><span style=color:#f92672>,</span> <span style=color:#e6db74>&#34;1234&#34;</span><span style=color:#f92672>);</span>
addressBag<span style=color:#f92672>.</span><span style=color:#a6e22e>setString</span><span style=color:#f92672>(</span><span style=color:#e6db74>&#34;city&#34;</span><span style=color:#f92672>,</span> <span style=color:#e6db74>&#34;Hometown&#34;</span><span style=color:#f92672>);</span>
addressBag<span style=color:#f92672>.</span><span style=color:#a6e22e>setString</span><span style=color:#f92672>(</span><span style=color:#e6db74>&#34;country&#34;</span><span style=color:#f92672>,</span> <span style=color:#e6db74>&#34;Switzerland&#34;</span><span style=color:#f92672>);</span>
<span style=color:#75715e>/*
</span><span style=color:#75715e> * create a new order
</span><span style=color:#75715e> */</span>
Order order <span style=color:#f92672>=</span> tx<span style=color:#f92672>.</span><span style=color:#a6e22e>getOrderTemplate</span><span style=color:#f92672>(</span><span style=color:#e6db74>&#34;Order&#34;</span><span style=color:#f92672>,</span> <span style=color:#66d9ef>true</span><span style=color:#f92672>);</span>
order<span style=color:#f92672>.</span><span style=color:#a6e22e>setName</span><span style=color:#f92672>(</span><span style=color:#e6db74>&#34;Order for &#34;</span> <span style=color:#f92672>+</span> customer1<span style=color:#f92672>.</span><span style=color:#a6e22e>getName</span><span style=color:#f92672>());</span>
order<span style=color:#f92672>.</span><span style=color:#a6e22e>setDate</span><span style=color:#f92672>(</span>LocalDate<span style=color:#f92672>.</span><span style=color:#a6e22e>of</span><span style=color:#f92672>(</span>2021<span style=color:#f92672>,</span> 2<span style=color:#f92672>,</span> 1<span style=color:#f92672>));</span>
order<span style=color:#f92672>.</span><span style=color:#a6e22e>setState</span><span style=color:#f92672>(</span>State<span style=color:#f92672>.</span><span style=color:#a6e22e>PLANNED</span><span style=color:#f92672>);</span>
<span style=color:#75715e>// store reference to customer
</span><span style=color:#75715e></span> order<span style=color:#f92672>.</span><span style=color:#a6e22e>setRelation</span><span style=color:#f92672>(</span><span style=color:#e6db74>&#34;customer&#34;</span><span style=color:#f92672>,</span> customer1<span style=color:#f92672>);</span>
StringListParameter orderArticlesP <span style=color:#f92672>=</span> order<span style=color:#f92672>.</span><span style=color:#a6e22e>getRelationsParam</span><span style=color:#f92672>(</span><span style=color:#e6db74>&#34;articles&#34;</span><span style=color:#f92672>,</span> <span style=color:#66d9ef>true</span><span style=color:#f92672>);</span>
ParameterBag quantitiesBag <span style=color:#f92672>=</span> order<span style=color:#f92672>.</span><span style=color:#a6e22e>getParameterBag</span><span style=color:#f92672>(</span><span style=color:#e6db74>&#34;quantities&#34;</span><span style=color:#f92672>,</span> <span style=color:#66d9ef>true</span><span style=color:#f92672>);</span>
FloatParameter quantityT <span style=color:#f92672>=</span> quantitiesBag<span style=color:#f92672>.</span><span style=color:#a6e22e>removeParameter</span><span style=color:#f92672>(</span><span style=color:#e6db74>&#34;quantity&#34;</span><span style=color:#f92672>);</span>
<span style=color:#75715e>// order quantity of 20 for Dafalgan 1
</span><span style=color:#75715e></span> quantitiesBag<span style=color:#f92672>.</span><span style=color:#a6e22e>setDouble</span><span style=color:#f92672>(</span>dafalgan1<span style=color:#f92672>.</span><span style=color:#a6e22e>getId</span><span style=color:#f92672>(),</span> 20<span style=color:#f92672>);</span>
order<span style=color:#f92672>.</span><span style=color:#a6e22e>addRelation</span><span style=color:#f92672>(</span><span style=color:#e6db74>&#34;articles&#34;</span><span style=color:#f92672>,</span> dafalgan1<span style=color:#f92672>);</span>
<span style=color:#75715e>// set order quantity of 10 for Dafalgan 2
</span><span style=color:#75715e></span> quantitiesBag<span style=color:#f92672>.</span><span style=color:#a6e22e>setDouble</span><span style=color:#f92672>(</span>dafalgan2<span style=color:#f92672>.</span><span style=color:#a6e22e>getId</span><span style=color:#f92672>(),</span> 20<span style=color:#f92672>);</span>
order<span style=color:#f92672>.</span><span style=color:#a6e22e>addRelation</span><span style=color:#f92672>(</span><span style=color:#e6db74>&#34;articles&#34;</span><span style=color:#f92672>,</span> dafalgan2<span style=color:#f92672>);</span>
<span style=color:#75715e>// keep IDs for later use
</span><span style=color:#75715e></span> dafalganId <span style=color:#f92672>=</span> dafalgan<span style=color:#f92672>.</span><span style=color:#a6e22e>getId</span><span style=color:#f92672>();</span>
dafalgan1Id <span style=color:#f92672>=</span> dafalgan1<span style=color:#f92672>.</span><span style=color:#a6e22e>getId</span><span style=color:#f92672>();</span>
dafalgan2Id <span style=color:#f92672>=</span> dafalgan2<span style=color:#f92672>.</span><span style=color:#a6e22e>getId</span><span style=color:#f92672>();</span>
customerId <span style=color:#f92672>=</span> customer1<span style=color:#f92672>.</span><span style=color:#a6e22e>getId</span><span style=color:#f92672>();</span>
orderId <span style=color:#f92672>=</span> order<span style=color:#f92672>.</span><span style=color:#a6e22e>getId</span><span style=color:#f92672>();</span>
<span style=color:#75715e>/*
</span><span style=color:#75715e> * persist
</span><span style=color:#75715e> */</span>
tx<span style=color:#f92672>.</span><span style=color:#a6e22e>add</span><span style=color:#f92672>(</span>dafalgan<span style=color:#f92672>);</span>
tx<span style=color:#f92672>.</span><span style=color:#a6e22e>add</span><span style=color:#f92672>(</span>dafalgan1<span style=color:#f92672>);</span>
tx<span style=color:#f92672>.</span><span style=color:#a6e22e>add</span><span style=color:#f92672>(</span>dafalgan2<span style=color:#f92672>);</span>
tx<span style=color:#f92672>.</span><span style=color:#a6e22e>add</span><span style=color:#f92672>(</span>customer1<span style=color:#f92672>);</span>
tx<span style=color:#f92672>.</span><span style=color:#a6e22e>add</span><span style=color:#f92672>(</span>order<span style=color:#f92672>);</span>
<span style=color:#75715e>// commit
</span><span style=color:#75715e></span> tx<span style=color:#f92672>.</span><span style=color:#a6e22e>commitOnClose</span><span style=color:#f92672>();</span>
<span style=color:#f92672>}</span>
<span style=color:#f92672>}</span>
<span style=color:#f92672>}</span>
</code></pre></div><div class=highlight><pre style=color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4><code class=language-java data-lang=java><span style=color:#66d9ef>class</span> <span style=color:#a6e22e>Scratch</span> <span style=color:#f92672>{</span>
<span style=color:#66d9ef>public</span> <span style=color:#66d9ef>static</span> <span style=color:#66d9ef>void</span> <span style=color:#a6e22e>main</span><span style=color:#f92672>(</span>String<span style=color:#f92672>[]</span> args<span style=color:#f92672>)</span> <span style=color:#f92672>{</span>
<span style=color:#75715e>// keep IDs for later use
</span><span style=color:#75715e></span> String dafalganId<span style=color:#f92672>;</span>
String dafalgan1Id<span style=color:#f92672>;</span>
String dafalgan2Id<span style=color:#f92672>;</span>
String customerId<span style=color:#f92672>;</span>
String orderId<span style=color:#f92672>;</span>
<span style=color:#75715e>//
</span><span style=color:#75715e></span> <span style=color:#75715e>// .. snip ...
</span><span style=color:#75715e></span> <span style=color:#75715e>//
</span><span style=color:#75715e></span>
<span style=color:#75715e>// second transaction to query the data
</span><span style=color:#75715e></span> <span style=color:#66d9ef>try</span> <span style=color:#f92672>(</span>StrolchTransaction tx <span style=color:#f92672>=</span> runtimeMock<span style=color:#f92672>.</span><span style=color:#a6e22e>openUserTx</span><span style=color:#f92672>(</span>certificate<span style=color:#f92672>,</span> <span style=color:#66d9ef>true</span><span style=color:#f92672>))</span> <span style=color:#f92672>{</span>
<span style=color:#75715e>// get order
</span><span style=color:#75715e></span> Order order <span style=color:#f92672>=</span> tx<span style=color:#f92672>.</span><span style=color:#a6e22e>getOrderBy</span><span style=color:#f92672>(</span><span style=color:#e6db74>&#34;Order&#34;</span><span style=color:#f92672>,</span> orderId<span style=color:#f92672>,</span> <span style=color:#66d9ef>true</span><span style=color:#f92672>);</span>
assertEquals<span style=color:#f92672>(</span><span style=color:#e6db74>&#34;Order for John Doe&#34;</span><span style=color:#f92672>,</span> order<span style=color:#f92672>.</span><span style=color:#a6e22e>getName</span><span style=color:#f92672>());</span>
<span style=color:#75715e>// get customer
</span><span style=color:#75715e></span> Resource customer <span style=color:#f92672>=</span> tx<span style=color:#f92672>.</span><span style=color:#a6e22e>getResourceByRelation</span><span style=color:#f92672>(</span>order<span style=color:#f92672>,</span> <span style=color:#e6db74>&#34;customer&#34;</span><span style=color:#f92672>,</span> <span style=color:#66d9ef>true</span><span style=color:#f92672>);</span>
assertEquals<span style=color:#f92672>(</span><span style=color:#e6db74>&#34;John Doe&#34;</span><span style=color:#f92672>,</span> customer<span style=color:#f92672>.</span><span style=color:#a6e22e>getName</span><span style=color:#f92672>());</span>
<span style=color:#75715e>// get articles
</span><span style=color:#75715e></span> List<span style=color:#f92672>&lt;</span>Resource<span style=color:#f92672>&gt;</span> articles <span style=color:#f92672>=</span> tx<span style=color:#f92672>.</span><span style=color:#a6e22e>getResourcesByRelation</span><span style=color:#f92672>(</span>order<span style=color:#f92672>,</span> <span style=color:#e6db74>&#34;articles&#34;</span><span style=color:#f92672>,</span> <span style=color:#66d9ef>true</span><span style=color:#f92672>);</span>
assertEquals<span style=color:#f92672>(</span>2<span style=color:#f92672>,</span> articles<span style=color:#f92672>.</span><span style=color:#a6e22e>size</span><span style=color:#f92672>());</span>
<span style=color:#75715e>// get products by stream
</span><span style=color:#75715e></span> List<span style=color:#f92672>&lt;</span>Resource<span style=color:#f92672>&gt;</span> products <span style=color:#f92672>=</span> articles<span style=color:#f92672>.</span><span style=color:#a6e22e>stream</span><span style=color:#f92672>().</span><span style=color:#a6e22e>map</span><span style=color:#f92672>(</span>a <span style=color:#f92672>-&gt;</span> tx<span style=color:#f92672>.</span><span style=color:#a6e22e>getResourceByRelation</span><span style=color:#f92672>(</span>a<span style=color:#f92672>,</span> <span style=color:#e6db74>&#34;product&#34;</span><span style=color:#f92672>,</span> <span style=color:#66d9ef>true</span><span style=color:#f92672>))</span>
<span style=color:#f92672>.</span><span style=color:#a6e22e>distinct</span><span style=color:#f92672>().</span><span style=color:#a6e22e>collect</span><span style=color:#f92672>(</span>Collectors<span style=color:#f92672>.</span><span style=color:#a6e22e>toList</span><span style=color:#f92672>());</span>
assertEquals<span style=color:#f92672>(</span>1<span style=color:#f92672>,</span> products<span style=color:#f92672>.</span><span style=color:#a6e22e>size</span><span style=color:#f92672>());</span>
<span style=color:#75715e>// search for all orders in state PLANNED and with customer
</span><span style=color:#75715e></span> List<span style=color:#f92672>&lt;</span>Order<span style=color:#f92672>&gt;</span> orders <span style=color:#f92672>=</span> <span style=color:#66d9ef>new</span> OrderSearch<span style=color:#f92672>().</span><span style=color:#a6e22e>types</span><span style=color:#f92672>(</span><span style=color:#e6db74>&#34;Order&#34;</span><span style=color:#f92672>).</span><span style=color:#a6e22e>stateIsIn</span><span style=color:#f92672>(</span>State<span style=color:#f92672>.</span><span style=color:#a6e22e>PLANNED</span><span style=color:#f92672>)</span>
<span style=color:#f92672>.</span><span style=color:#a6e22e>where</span><span style=color:#f92672>(</span>ExpressionsSupport<span style=color:#f92672>.</span><span style=color:#a6e22e>relationParam</span><span style=color:#f92672>(</span><span style=color:#e6db74>&#34;customer&#34;</span><span style=color:#f92672>).</span><span style=color:#a6e22e>isEqualTo</span><span style=color:#f92672>(</span>customerId<span style=color:#f92672>)).</span><span style=color:#a6e22e>search</span><span style=color:#f92672>(</span>tx<span style=color:#f92672>).</span><span style=color:#a6e22e>toList</span><span style=color:#f92672>();</span>
assertEquals<span style=color:#f92672>(</span>1<span style=color:#f92672>,</span> orders<span style=color:#f92672>.</span><span style=color:#a6e22e>size</span><span style=color:#f92672>());</span>
<span style=color:#f92672>}</span>
<span style=color:#f92672>}</span>
<span style=color:#f92672>}</span>
</code></pre></div><div class="notices tip"><p>Note: Checkout <a href=https://github.com/strolch-li/strolch/blob/develop/li.strolch.service/src/test/resources/transienttest/data/example-model.xml target=_blank>example-model.xml</a> and <a href=https://github.com/strolch-li/strolch/blob/develop/li.strolch.service/src/test/java/li/strolch/service/SimpleModelTest.java target=_blank>SimpleModelTest.java</a> for these examples.</p></div><div class="notices tip"><p>There is an XML Schema which defines the model in XML: <a href=/xsd/StrolchModel-1.6.xsd target=_blank>StrolchModel-1.6.xsd</a></p></div><p>Here is an example of all the possible elements in Strolch:</p><div class=highlight><pre style=color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4><code class=language-xml data-lang=xml><span style=color:#f92672>&lt;StrolchModel</span> <span style=color:#a6e22e>xmlns:xsi=</span><span style=color:#e6db74>&#34;http://www.w3.org/2001/XMLSchema-instance&#34;</span>
<span style=color:#a6e22e>xmlns=</span><span style=color:#e6db74>&#34;https://strolch.li/xsd/StrolchModel-1.6.xsd&#34;</span>
<span style=color:#a6e22e>xsi:schemaLocation=</span><span style=color:#e6db74>&#34;https://strolch.li/xsd/StrolchModel-1.6.xsd StrolchModel-1.6.xsd&#34;</span><span style=color:#f92672>&gt;</span>
<span style=color:#f92672>&lt;IncludeFile</span> <span style=color:#a6e22e>file=</span><span style=color:#e6db74>&#34;Include1.xml&#34;</span><span style=color:#f92672>/&gt;</span>
<span style=color:#f92672>&lt;Order</span> <span style=color:#a6e22e>Id=</span><span style=color:#e6db74>&#34;@test1&#34;</span> <span style=color:#a6e22e>Name=</span><span style=color:#e6db74>&#34;Test Order&#34;</span> <span style=color:#a6e22e>Type=</span><span style=color:#e6db74>&#34;Order&#34;</span><span style=color:#f92672>&gt;</span>
<span style=color:#f92672>&lt;Version</span> <span style=color:#a6e22e>Version=</span><span style=color:#e6db74>&#34;0&#34;</span> <span style=color:#a6e22e>CreatedBy=</span><span style=color:#e6db74>&#34;test&#34;</span> <span style=color:#a6e22e>Created=</span><span style=color:#e6db74>&#34;2012-11-30T18:12:05.628+01:00&#34;</span> <span style=color:#a6e22e>UpdatedBy=</span><span style=color:#e6db74>&#34;test&#34;</span> <span style=color:#a6e22e>Updated=</span><span style=color:#e6db74>&#34;2012-11-30T18:12:05.628+01:00&#34;</span> <span style=color:#a6e22e>Deleted=</span><span style=color:#e6db74>&#34;false&#34;</span><span style=color:#f92672>/&gt;</span>
<span style=color:#f92672>&lt;ParameterBag</span> <span style=color:#a6e22e>Id=</span><span style=color:#e6db74>&#34;@bag01&#34;</span> <span style=color:#a6e22e>Name=</span><span style=color:#e6db74>&#34;Test Bag&#34;</span> <span style=color:#a6e22e>Type=</span><span style=color:#e6db74>&#34;TestBag&#34;</span><span style=color:#f92672>&gt;</span>
<span style=color:#f92672>&lt;Parameter</span> <span style=color:#a6e22e>Id=</span><span style=color:#e6db74>&#34;@param1&#34;</span> <span style=color:#a6e22e>Name=</span><span style=color:#e6db74>&#34;Boolean Param&#34;</span> <span style=color:#a6e22e>Type=</span><span style=color:#e6db74>&#34;Boolean&#34;</span> <span style=color:#a6e22e>Value=</span><span style=color:#e6db74>&#34;true&#34;</span><span style=color:#f92672>/&gt;</span>
<span style=color:#f92672>&lt;/ParameterBag&gt;</span>
<span style=color:#f92672>&lt;ParameterBag</span> <span style=color:#a6e22e>Id=</span><span style=color:#e6db74>&#34;@bag01&#34;</span> <span style=color:#a6e22e>Name=</span><span style=color:#e6db74>&#34;Test Bag&#34;</span> <span style=color:#a6e22e>Type=</span><span style=color:#e6db74>&#34;TestBag&#34;</span><span style=color:#f92672>&gt;</span>
<span style=color:#f92672>&lt;Parameter</span> <span style=color:#a6e22e>Id=</span><span style=color:#e6db74>&#34;@param1&#34;</span> <span style=color:#a6e22e>Name=</span><span style=color:#e6db74>&#34;Boolean Param&#34;</span> <span style=color:#a6e22e>Type=</span><span style=color:#e6db74>&#34;Boolean&#34;</span> <span style=color:#a6e22e>Value=</span><span style=color:#e6db74>&#34;true&#34;</span><span style=color:#f92672>/&gt;</span>
<span style=color:#f92672>&lt;/ParameterBag&gt;</span>
<span style=color:#f92672>&lt;Policies&gt;</span>
<span style=color:#f92672>&lt;Policy</span> <span style=color:#a6e22e>Type=</span><span style=color:#e6db74>&#34;PlanningPolicy&#34;</span> <span style=color:#a6e22e>Value=</span><span style=color:#e6db74>&#34;key:SimplePlanning&#34;</span><span style=color:#f92672>/&gt;</span>
<span style=color:#f92672>&lt;Policy</span> <span style=color:#a6e22e>Type=</span><span style=color:#e6db74>&#34;ConfirmationPolicy&#34;</span> <span style=color:#a6e22e>Value=</span><span style=color:#e6db74>&#34;key:NoConfirmation&#34;</span><span style=color:#f92672>/&gt;</span>
<span style=color:#f92672>&lt;/Policies&gt;</span>
<span style=color:#f92672>&lt;/Order&gt;</span>
<span style=color:#f92672>&lt;Resource</span> <span style=color:#a6e22e>Id=</span><span style=color:#e6db74>&#34;MyTestResource&#34;</span> <span style=color:#a6e22e>Name=</span><span style=color:#e6db74>&#34;Test Name&#34;</span> <span style=color:#a6e22e>Type=</span><span style=color:#e6db74>&#34;TestType&#34;</span><span style=color:#f92672>&gt;</span>
<span style=color:#f92672>&lt;Version</span> <span style=color:#a6e22e>Version=</span><span style=color:#e6db74>&#34;0&#34;</span> <span style=color:#a6e22e>CreatedBy=</span><span style=color:#e6db74>&#34;test&#34;</span> <span style=color:#a6e22e>Created=</span><span style=color:#e6db74>&#34;2012-11-30T18:12:05.628+01:00&#34;</span> <span style=color:#a6e22e>UpdatedBy=</span><span style=color:#e6db74>&#34;test&#34;</span> <span style=color:#a6e22e>Updated=</span><span style=color:#e6db74>&#34;2012-11-30T18:12:05.628+01:00&#34;</span> <span style=color:#a6e22e>Deleted=</span><span style=color:#e6db74>&#34;false&#34;</span><span style=color:#f92672>/&gt;</span>
<span style=color:#f92672>&lt;ParameterBag</span> <span style=color:#a6e22e>Id=</span><span style=color:#e6db74>&#34;@bag01&#34;</span> <span style=color:#a6e22e>Name=</span><span style=color:#e6db74>&#34;Test Bag 01&#34;</span> <span style=color:#a6e22e>Type=</span><span style=color:#e6db74>&#34;TestBag&#34;</span><span style=color:#f92672>&gt;</span>
<span style=color:#f92672>&lt;Parameter</span> <span style=color:#a6e22e>Id=</span><span style=color:#e6db74>&#34;@param1&#34;</span> <span style=color:#a6e22e>Name=</span><span style=color:#e6db74>&#34;Boolean Param&#34;</span> <span style=color:#a6e22e>Type=</span><span style=color:#e6db74>&#34;Boolean&#34;</span> <span style=color:#a6e22e>Value=</span><span style=color:#e6db74>&#34;true&#34;</span><span style=color:#f92672>/&gt;</span>
<span style=color:#f92672>&lt;/ParameterBag&gt;</span>
<span style=color:#f92672>&lt;ParameterBag</span> <span style=color:#a6e22e>Id=</span><span style=color:#e6db74>&#34;@bag02&#34;</span> <span style=color:#a6e22e>Name=</span><span style=color:#e6db74>&#34;Test Bag 02&#34;</span> <span style=color:#a6e22e>Type=</span><span style=color:#e6db74>&#34;TestBag&#34;</span><span style=color:#f92672>&gt;</span>
<span style=color:#f92672>&lt;Parameter</span> <span style=color:#a6e22e>Id=</span><span style=color:#e6db74>&#34;@param1&#34;</span> <span style=color:#a6e22e>Name=</span><span style=color:#e6db74>&#34;Boolean Param&#34;</span> <span style=color:#a6e22e>Type=</span><span style=color:#e6db74>&#34;Boolean&#34;</span> <span style=color:#a6e22e>Value=</span><span style=color:#e6db74>&#34;true&#34;</span><span style=color:#f92672>/&gt;</span>
<span style=color:#f92672>&lt;/ParameterBag&gt;</span>
<span style=color:#f92672>&lt;TimedState</span> <span style=color:#a6e22e>Id=</span><span style=color:#e6db74>&#34;@booleanState&#34;</span> <span style=color:#a6e22e>Name=</span><span style=color:#e6db74>&#34;Boolean State&#34;</span> <span style=color:#a6e22e>Type=</span><span style=color:#e6db74>&#34;Boolean&#34;</span><span style=color:#f92672>&gt;</span>
<span style=color:#f92672>&lt;Value</span> <span style=color:#a6e22e>Time=</span><span style=color:#e6db74>&#34;1970-01-01T00:02:00.000+01:00&#34;</span> <span style=color:#a6e22e>Value=</span><span style=color:#e6db74>&#34;false&#34;</span><span style=color:#f92672>/&gt;</span>
<span style=color:#f92672>&lt;/TimedState&gt;</span>
<span style=color:#f92672>&lt;Policies&gt;</span>
<span style=color:#f92672>&lt;Policy</span> <span style=color:#a6e22e>Type=</span><span style=color:#e6db74>&#34;PlanningPolicy&#34;</span> <span style=color:#a6e22e>Value=</span><span style=color:#e6db74>&#34;key:SimplePlanning&#34;</span><span style=color:#f92672>/&gt;</span>
<span style=color:#f92672>&lt;Policy</span> <span style=color:#a6e22e>Type=</span><span style=color:#e6db74>&#34;ConfirmationPolicy&#34;</span> <span style=color:#a6e22e>Value=</span><span style=color:#e6db74>&#34;key:NoConfirmation&#34;</span><span style=color:#f92672>/&gt;</span>
<span style=color:#f92672>&lt;/Policies&gt;</span>
<span style=color:#f92672>&lt;/Resource&gt;</span>
<span style=color:#f92672>&lt;Activity</span> <span style=color:#a6e22e>Id=</span><span style=color:#e6db74>&#34;activity_1&#34;</span> <span style=color:#a6e22e>Name=</span><span style=color:#e6db74>&#34;Activity&#34;</span> <span style=color:#a6e22e>Type=</span><span style=color:#e6db74>&#34;parentType&#34;</span> <span style=color:#a6e22e>TimeOrdering=</span><span style=color:#e6db74>&#34;Series&#34;</span><span style=color:#f92672>&gt;</span>
<span style=color:#f92672>&lt;Version</span> <span style=color:#a6e22e>Version=</span><span style=color:#e6db74>&#34;0&#34;</span> <span style=color:#a6e22e>CreatedBy=</span><span style=color:#e6db74>&#34;test&#34;</span> <span style=color:#a6e22e>Created=</span><span style=color:#e6db74>&#34;2012-11-30T18:12:05.628+01:00&#34;</span> <span style=color:#a6e22e>UpdatedBy=</span><span style=color:#e6db74>&#34;test&#34;</span> <span style=color:#a6e22e>Updated=</span><span style=color:#e6db74>&#34;2012-11-30T18:12:05.628+01:00&#34;</span> <span style=color:#a6e22e>Deleted=</span><span style=color:#e6db74>&#34;false&#34;</span><span style=color:#f92672>/&gt;</span>
<span style=color:#f92672>&lt;ParameterBag</span> <span style=color:#a6e22e>Id=</span><span style=color:#e6db74>&#34;@bag01&#34;</span> <span style=color:#a6e22e>Name=</span><span style=color:#e6db74>&#34;Test Bag&#34;</span> <span style=color:#a6e22e>Type=</span><span style=color:#e6db74>&#34;TestBag&#34;</span><span style=color:#f92672>&gt;</span>
<span style=color:#f92672>&lt;Parameter</span> <span style=color:#a6e22e>Id=</span><span style=color:#e6db74>&#34;@param1&#34;</span> <span style=color:#a6e22e>Name=</span><span style=color:#e6db74>&#34;Boolean Param&#34;</span> <span style=color:#a6e22e>Type=</span><span style=color:#e6db74>&#34;Boolean&#34;</span> <span style=color:#a6e22e>Value=</span><span style=color:#e6db74>&#34;true&#34;</span><span style=color:#f92672>/&gt;</span>
<span style=color:#f92672>&lt;/ParameterBag&gt;</span>
<span style=color:#f92672>&lt;Policies&gt;</span>
<span style=color:#f92672>&lt;Policy</span> <span style=color:#a6e22e>Type=</span><span style=color:#e6db74>&#34;PlanningPolicy&#34;</span> <span style=color:#a6e22e>Value=</span><span style=color:#e6db74>&#34;key:SimplePlanning&#34;</span><span style=color:#f92672>/&gt;</span>
<span style=color:#f92672>&lt;Policy</span> <span style=color:#a6e22e>Type=</span><span style=color:#e6db74>&#34;ConfirmationPolicy&#34;</span> <span style=color:#a6e22e>Value=</span><span style=color:#e6db74>&#34;key:NoConfirmation&#34;</span><span style=color:#f92672>/&gt;</span>
<span style=color:#f92672>&lt;/Policies&gt;</span>
<span style=color:#f92672>&lt;Action</span> <span style=color:#a6e22e>Id=</span><span style=color:#e6db74>&#34;action_1&#34;</span> <span style=color:#a6e22e>Name=</span><span style=color:#e6db74>&#34;Action 1&#34;</span> <span style=color:#a6e22e>ResourceId=</span><span style=color:#e6db74>&#34;dummyId&#34;</span> <span style=color:#a6e22e>ResourceType=</span><span style=color:#e6db74>&#34;dummyType&#34;</span> <span style=color:#a6e22e>State=</span><span style=color:#e6db74>&#34;Created&#34;</span> <span style=color:#a6e22e>Type=</span><span style=color:#e6db74>&#34;Use&#34;</span><span style=color:#f92672>&gt;</span>
<span style=color:#f92672>&lt;ParameterBag</span> <span style=color:#a6e22e>Id=</span><span style=color:#e6db74>&#34;@bag01&#34;</span> <span style=color:#a6e22e>Name=</span><span style=color:#e6db74>&#34;Test Bag&#34;</span> <span style=color:#a6e22e>Type=</span><span style=color:#e6db74>&#34;TestBag&#34;</span><span style=color:#f92672>&gt;</span>
<span style=color:#f92672>&lt;Parameter</span> <span style=color:#a6e22e>Id=</span><span style=color:#e6db74>&#34;@param1&#34;</span> <span style=color:#a6e22e>Name=</span><span style=color:#e6db74>&#34;Boolean Param&#34;</span> <span style=color:#a6e22e>Type=</span><span style=color:#e6db74>&#34;Boolean&#34;</span> <span style=color:#a6e22e>Value=</span><span style=color:#e6db74>&#34;true&#34;</span><span style=color:#f92672>/&gt;</span>
<span style=color:#f92672>&lt;/ParameterBag&gt;</span>
<span style=color:#f92672>&lt;Policies&gt;</span>
<span style=color:#f92672>&lt;Policy</span> <span style=color:#a6e22e>Type=</span><span style=color:#e6db74>&#34;PlanningPolicy&#34;</span> <span style=color:#a6e22e>Value=</span><span style=color:#e6db74>&#34;key:SimplePlanning&#34;</span><span style=color:#f92672>/&gt;</span>
<span style=color:#f92672>&lt;Policy</span> <span style=color:#a6e22e>Type=</span><span style=color:#e6db74>&#34;ConfirmationPolicy&#34;</span> <span style=color:#a6e22e>Value=</span><span style=color:#e6db74>&#34;key:NoConfirmation&#34;</span><span style=color:#f92672>/&gt;</span>
<span style=color:#f92672>&lt;/Policies&gt;</span>
<span style=color:#f92672>&lt;ValueChange</span> <span style=color:#a6e22e>StateId=</span><span style=color:#e6db74>&#34;dummyId&#34;</span> <span style=color:#a6e22e>Time=</span><span style=color:#e6db74>&#34;2012-11-30T18:12:05.628+01:00&#34;</span> <span style=color:#a6e22e>Value=</span><span style=color:#e6db74>&#34;5&#34;</span> <span style=color:#a6e22e>Type=</span><span style=color:#e6db74>&#34;Integer&#34;</span><span style=color:#f92672>/&gt;</span>
<span style=color:#f92672>&lt;ValueChange</span> <span style=color:#a6e22e>StateId=</span><span style=color:#e6db74>&#34;dummyId&#34;</span> <span style=color:#a6e22e>Time=</span><span style=color:#e6db74>&#34;2012-11-30T18:12:06.628+01:00&#34;</span> <span style=color:#a6e22e>Value=</span><span style=color:#e6db74>&#34;6&#34;</span> <span style=color:#a6e22e>Type=</span><span style=color:#e6db74>&#34;Integer&#34;</span><span style=color:#f92672>/&gt;</span>
<span style=color:#f92672>&lt;/Action&gt;</span>
<span style=color:#f92672>&lt;Activity</span> <span style=color:#a6e22e>Id=</span><span style=color:#e6db74>&#34;child_activity&#34;</span> <span style=color:#a6e22e>Name=</span><span style=color:#e6db74>&#34;Child Activity&#34;</span> <span style=color:#a6e22e>Type=</span><span style=color:#e6db74>&#34;childType&#34;</span> <span style=color:#a6e22e>TimeOrdering=</span><span style=color:#e6db74>&#34;Series&#34;</span><span style=color:#f92672>&gt;</span>
<span style=color:#f92672>&lt;ParameterBag</span> <span style=color:#a6e22e>Id=</span><span style=color:#e6db74>&#34;@bag01&#34;</span> <span style=color:#a6e22e>Name=</span><span style=color:#e6db74>&#34;Test Bag&#34;</span> <span style=color:#a6e22e>Type=</span><span style=color:#e6db74>&#34;TestBag&#34;</span><span style=color:#f92672>&gt;</span>
<span style=color:#f92672>&lt;Parameter</span> <span style=color:#a6e22e>Id=</span><span style=color:#e6db74>&#34;@param1&#34;</span> <span style=color:#a6e22e>Name=</span><span style=color:#e6db74>&#34;Boolean Param&#34;</span> <span style=color:#a6e22e>Type=</span><span style=color:#e6db74>&#34;Boolean&#34;</span> <span style=color:#a6e22e>Value=</span><span style=color:#e6db74>&#34;true&#34;</span><span style=color:#f92672>/&gt;</span>
<span style=color:#f92672>&lt;/ParameterBag&gt;</span>
<span style=color:#f92672>&lt;Policies&gt;</span>
<span style=color:#f92672>&lt;Policy</span> <span style=color:#a6e22e>Type=</span><span style=color:#e6db74>&#34;PlanningPolicy&#34;</span> <span style=color:#a6e22e>Value=</span><span style=color:#e6db74>&#34;key:SimplePlanning&#34;</span><span style=color:#f92672>/&gt;</span>
<span style=color:#f92672>&lt;Policy</span> <span style=color:#a6e22e>Type=</span><span style=color:#e6db74>&#34;ConfirmationPolicy&#34;</span> <span style=color:#a6e22e>Value=</span><span style=color:#e6db74>&#34;key:NoConfirmation&#34;</span><span style=color:#f92672>/&gt;</span>
<span style=color:#f92672>&lt;/Policies&gt;</span>
<span style=color:#f92672>&lt;Action</span> <span style=color:#a6e22e>Id=</span><span style=color:#e6db74>&#34;action_2&#34;</span> <span style=color:#a6e22e>Name=</span><span style=color:#e6db74>&#34;Action 2&#34;</span> <span style=color:#a6e22e>ResourceId=</span><span style=color:#e6db74>&#34;dummyId&#34;</span> <span style=color:#a6e22e>ResourceType=</span><span style=color:#e6db74>&#34;dummyType&#34;</span> <span style=color:#a6e22e>State=</span><span style=color:#e6db74>&#34;Planned&#34;</span>
<span style=color:#a6e22e>Type=</span><span style=color:#e6db74>&#34;Use&#34;</span><span style=color:#f92672>&gt;</span>
<span style=color:#f92672>&lt;ValueChange</span> <span style=color:#a6e22e>StateId=</span><span style=color:#e6db74>&#34;dummyId&#34;</span> <span style=color:#a6e22e>Time=</span><span style=color:#e6db74>&#34;2012-11-30T18:12:05.628+01:00&#34;</span> <span style=color:#a6e22e>Value=</span><span style=color:#e6db74>&#34;5&#34;</span> <span style=color:#a6e22e>Type=</span><span style=color:#e6db74>&#34;Integer&#34;</span><span style=color:#f92672>/&gt;</span>
<span style=color:#f92672>&lt;ValueChange</span> <span style=color:#a6e22e>StateId=</span><span style=color:#e6db74>&#34;dummyId&#34;</span> <span style=color:#a6e22e>Time=</span><span style=color:#e6db74>&#34;2012-11-30T18:12:06.628+01:00&#34;</span> <span style=color:#a6e22e>Value=</span><span style=color:#e6db74>&#34;6&#34;</span> <span style=color:#a6e22e>Type=</span><span style=color:#e6db74>&#34;Integer&#34;</span><span style=color:#f92672>/&gt;</span>
<span style=color:#f92672>&lt;/Action&gt;</span>
<span style=color:#f92672>&lt;Action</span> <span style=color:#a6e22e>Id=</span><span style=color:#e6db74>&#34;action_3&#34;</span> <span style=color:#a6e22e>Name=</span><span style=color:#e6db74>&#34;Action 3&#34;</span> <span style=color:#a6e22e>ResourceId=</span><span style=color:#e6db74>&#34;dummyId&#34;</span> <span style=color:#a6e22e>ResourceType=</span><span style=color:#e6db74>&#34;dummyType&#34;</span> <span style=color:#a6e22e>State=</span><span style=color:#e6db74>&#34;Created&#34;</span>
<span style=color:#a6e22e>Type=</span><span style=color:#e6db74>&#34;Use&#34;</span><span style=color:#f92672>/&gt;</span>
<span style=color:#f92672>&lt;/Activity&gt;</span>
<span style=color:#f92672>&lt;/Activity&gt;</span>
<span style=color:#f92672>&lt;/StrolchModel&gt;</span>
</code></pre></div><footer class=footline></footer></div></div><div id=navigation><a class="nav nav-prev" href=/documentation/architecture/ title=Architecture><i class="fa fa-chevron-left"></i></a><a class="nav nav-next" href=/documentation/do-and-donts/ title="Do and Don't" style=margin-right:0><i class="fa fa-chevron-right"></i></a></div></section><div style=left:-1000px;overflow:scroll;position:absolute;top:-1000px;border:none;box-sizing:content-box;height:200px;margin:0;padding:0;width:200px><div style=border:none;box-sizing:content-box;height:200px;margin:0;padding:0;width:200px></div></div><script src=/js/clipboard.min.js?1678977092></script><script src=/js/perfect-scrollbar.min.js?1678977092></script><script src=/js/perfect-scrollbar.jquery.min.js?1678977092></script><script src=/js/jquery.sticky.js?1678977092></script><script src=/js/featherlight.min.js?1678977092></script><script src=/js/highlight.pack.js?1678977092></script><script>hljs.initHighlightingOnLoad();</script><script src=/js/modernizr.custom-3.6.0.js?1678977092></script><script src=/js/learn.js?1678977092></script><script src=/js/hugo-learn.js?1678977092></script><script src=/mermaid/mermaid.js?1678977092></script><script>mermaid.initialize({startOnLoad:true});</script><script type=text/javascript>var _paq=window._paq=window._paq||[];_paq.push(["setDocumentTitle",document.domain+"/"+document.title]);_paq.push(["setCookieDomain","*.strolch.li"]);_paq.push(['trackPageView']);_paq.push(['enableLinkTracking']);(function(){var u="https://piwik.eitchnet.ch/";_paq.push(['setTrackerUrl',u+'matomo.php']);_paq.push(['setSiteId','2']);var d=document,g=d.createElement('script'),s=d.getElementsByTagName('script')[0];g.type='text/javascript';g.async=true;g.src=u+'matomo.js';s.parentNode.insertBefore(g,s);})();</script></body></html>