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

264 lines
63 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="Strolch"><link rel=icon href=/favicon.ico type=image/ico><title>Model - Strolch</title><link href=/css/nucleus.css?1626091328 rel=stylesheet><link href=/css/fontawesome-all.min.css?1626091328 rel=stylesheet><link href=/css/hybrid.css?1626091328 rel=stylesheet><link href=/css/featherlight.min.css?1626091328 rel=stylesheet><link href=/css/perfect-scrollbar.min.css?1626091328 rel=stylesheet><link href=/css/auto-complete.css?1626091328 rel=stylesheet><link href=/css/atom-one-dark-reasonable.css?1626091328 rel=stylesheet><link href=/css/theme.css?1626091328 rel=stylesheet><link href=/css/hugo-theme.css?1626091328 rel=stylesheet><link href=/css/theme-green.css?1626091328 rel=stylesheet><script src=/js/jquery-3.3.1.min.js?1626091328></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?1626091328></script><script type=text/javascript src=/js/auto-complete.js?1626091328></script><script type=text/javascript>var baseurl="https:\/\/strolch.li\/";</script><script type=text/javascript src=/js/search.js?1626091328></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=/history/ title=History class=dd-item><a href=/history/>History</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></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></ul></section><section id=footer><p>Built with <a href=https://github.com/matcornic/hugo-theme-learn><i class="fas fa-heart"></i></a>from <a href=https://getgrav.org>Grav</a> and <a href=https://gohugo.io/>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/Pi4J/pi4j.github.io/tree/main/contentdocumentation/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>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 id and name fields are always on the
element, and thus aren&rsquo;t added as parameters. Further most elements have a
parameters ParameterBag, with one or more parameters, modelling the fields.</li><li>Note that in this example the Type of all the elements is Template. 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 Product element has three parameters: description, color and form. In
this case they are all of type String. Further the relations 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 Interpretation=&ldquo;Resource-Ref&rdquo; Uom=&ldquo;Product&rdquo; attributes.
Strolch has API support for this, making it trivial to retrieve a dependency.</li><li>The Article element has two parameters description and barcode. Further it
has a reference to its Product.</li><li>The Order element doesn&rsquo;t model the date and state 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 quantities
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 Customer element models a address 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>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>getParameter</span><span style=color:#f92672>(</span><span style=color:#e6db74>&#34;description&#34;</span><span style=color:#f92672>,</span> <span style=color:#66d9ef>true</span><span style=color:#f92672>).</span><span style=color:#a6e22e>setValue</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>getParameter</span><span style=color:#f92672>(</span><span style=color:#e6db74>&#34;color&#34;</span><span style=color:#f92672>,</span> <span style=color:#66d9ef>true</span><span style=color:#f92672>).</span><span style=color:#a6e22e>setValue</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>getParameter</span><span style=color:#f92672>(</span><span style=color:#e6db74>&#34;form&#34;</span><span style=color:#f92672>,</span> <span style=color:#66d9ef>true</span><span style=color:#f92672>).</span><span style=color:#a6e22e>setValue</span><span style=color:#f92672>(</span><span style=color:#e6db74>&#34;flat&#34;</span><span style=color:#f92672>);</span>
StringListParameter articlesP <span style=color:#f92672>=</span> dafalgan<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>
<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>getParameter</span><span style=color:#f92672>(</span><span style=color:#e6db74>&#34;description&#34;</span><span style=color:#f92672>,</span> <span style=color:#66d9ef>true</span><span style=color:#f92672>).</span><span style=color:#a6e22e>setValue</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>getParameter</span><span style=color:#f92672>(</span><span style=color:#e6db74>&#34;barcode&#34;</span><span style=color:#f92672>,</span> <span style=color:#66d9ef>true</span><span style=color:#f92672>).</span><span style=color:#a6e22e>setValue</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>getParameter</span><span style=color:#f92672>(</span><span style=color:#e6db74>&#34;description&#34;</span><span style=color:#f92672>,</span> <span style=color:#66d9ef>true</span><span style=color:#f92672>).</span><span style=color:#a6e22e>setValue</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>getParameter</span><span style=color:#f92672>(</span><span style=color:#e6db74>&#34;barcode&#34;</span><span style=color:#f92672>,</span> <span style=color:#66d9ef>true</span><span style=color:#f92672>).</span><span style=color:#a6e22e>setValue</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>getRelationParam</span><span style=color:#f92672>(</span><span style=color:#e6db74>&#34;product&#34;</span><span style=color:#f92672>).</span><span style=color:#a6e22e>setValue</span><span style=color:#f92672>(</span>dafalgan<span style=color:#f92672>.</span><span style=color:#a6e22e>getId</span><span style=color:#f92672>());</span>
articlesP<span style=color:#f92672>.</span><span style=color:#a6e22e>addValue</span><span style=color:#f92672>(</span>dafalgan1<span style=color:#f92672>.</span><span style=color:#a6e22e>getId</span><span style=color:#f92672>());</span>
dafalgan2<span style=color:#f92672>.</span><span style=color:#a6e22e>getRelationParam</span><span style=color:#f92672>(</span><span style=color:#e6db74>&#34;product&#34;</span><span style=color:#f92672>).</span><span style=color:#a6e22e>setValue</span><span style=color:#f92672>(</span>dafalgan<span style=color:#f92672>.</span><span style=color:#a6e22e>getId</span><span style=color:#f92672>());</span>
articlesP<span style=color:#f92672>.</span><span style=color:#a6e22e>addValue</span><span style=color:#f92672>(</span>dafalgan2<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> * 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>getParameter</span><span style=color:#f92672>(</span><span style=color:#e6db74>&#34;street&#34;</span><span style=color:#f92672>,</span> <span style=color:#66d9ef>true</span><span style=color:#f92672>).</span><span style=color:#a6e22e>setValue</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>getParameter</span><span style=color:#f92672>(</span><span style=color:#e6db74>&#34;zip&#34;</span><span style=color:#f92672>,</span> <span style=color:#66d9ef>true</span><span style=color:#f92672>).</span><span style=color:#a6e22e>setValue</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>getParameter</span><span style=color:#f92672>(</span><span style=color:#e6db74>&#34;city&#34;</span><span style=color:#f92672>,</span> <span style=color:#66d9ef>true</span><span style=color:#f92672>).</span><span style=color:#a6e22e>setValue</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>getParameter</span><span style=color:#f92672>(</span><span style=color:#e6db74>&#34;country&#34;</span><span style=color:#f92672>,</span> <span style=color:#66d9ef>true</span><span style=color:#f92672>).</span><span style=color:#a6e22e>setValue</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>getRelationParam</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><span style=color:#a6e22e>setValue</span><span style=color:#f92672>(</span>customer1<span style=color:#f92672>.</span><span style=color:#a6e22e>getId</span><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> FloatParameter q1P <span style=color:#f92672>=</span> quantityT<span style=color:#f92672>.</span><span style=color:#a6e22e>getClone</span><span style=color:#f92672>();</span>
q1P<span style=color:#f92672>.</span><span style=color:#a6e22e>setId</span><span style=color:#f92672>(</span>dafalgan1<span style=color:#f92672>.</span><span style=color:#a6e22e>getId</span><span style=color:#f92672>());</span>
q1P<span style=color:#f92672>.</span><span style=color:#a6e22e>setValue</span><span style=color:#f92672>(</span>20<span style=color:#f92672>);</span>
quantitiesBag<span style=color:#f92672>.</span><span style=color:#a6e22e>addParameter</span><span style=color:#f92672>(</span>q1P<span style=color:#f92672>);</span>
orderArticlesP<span style=color:#f92672>.</span><span style=color:#a6e22e>addValue</span><span style=color:#f92672>(</span>dafalgan1<span style=color:#f92672>.</span><span style=color:#a6e22e>getId</span><span style=color:#f92672>());</span>
<span style=color:#75715e>// set order quantity of 10 for Dafalgan 2
</span><span style=color:#75715e></span> FloatParameter q2P <span style=color:#f92672>=</span> quantityT<span style=color:#f92672>.</span><span style=color:#a6e22e>getClone</span><span style=color:#f92672>();</span>
orderArticlesP<span style=color:#f92672>.</span><span style=color:#a6e22e>addValue</span><span style=color:#f92672>(</span>dafalgan2<span style=color:#f92672>.</span><span style=color:#a6e22e>getId</span><span style=color:#f92672>());</span>
q2P<span style=color:#f92672>.</span><span style=color:#a6e22e>setId</span><span style=color:#f92672>(</span>dafalgan2<span style=color:#f92672>.</span><span style=color:#a6e22e>getId</span><span style=color:#f92672>());</span>
q2P<span style=color:#f92672>.</span><span style=color:#a6e22e>setValue</span><span style=color:#f92672>(</span>20<span style=color:#f92672>);</span>
quantitiesBag<span style=color:#f92672>.</span><span style=color:#a6e22e>addParameter</span><span style=color:#f92672>(</span>q2P<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>
</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>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>
assertNotNull<span style=color:#f92672>(</span>orderId<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>
assertNotNull<span style=color:#f92672>(</span>customer<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
</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>
</code></pre></div><div class="notices tip"><p>Note: Checkout <a href=https://github.com/4treesCH/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/4treesCH/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=/assets/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>CreatedAt=</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>CreatedAt=</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>CreatedAt=</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?1626091328></script><script src=/js/perfect-scrollbar.min.js?1626091328></script><script src=/js/perfect-scrollbar.jquery.min.js?1626091328></script><script src=/js/jquery.sticky.js?1626091328></script><script src=/js/featherlight.min.js?1626091328></script><script src=/js/highlight.pack.js?1626091328></script><script>hljs.initHighlightingOnLoad();</script><script src=/js/modernizr.custom-3.6.0.js?1626091328></script><script src=/js/learn.js?1626091328></script><script src=/js/hugo-learn.js?1626091328></script><script src=/mermaid/mermaid.js?1626091328></script><script>mermaid.initialize({startOnLoad:true});</script></body></html>