strolch-website/docs/api/index.html

139 lines
39 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>API - Strolch</title><link href=/css/nucleus.css?1626091329 rel=stylesheet><link href=/css/fontawesome-all.min.css?1626091329 rel=stylesheet><link href=/css/hybrid.css?1626091329 rel=stylesheet><link href=/css/featherlight.min.css?1626091329 rel=stylesheet><link href=/css/perfect-scrollbar.min.css?1626091329 rel=stylesheet><link href=/css/auto-complete.css?1626091329 rel=stylesheet><link href=/css/atom-one-dark-reasonable.css?1626091329 rel=stylesheet><link href=/css/theme.css?1626091329 rel=stylesheet><link href=/css/hugo-theme.css?1626091329 rel=stylesheet><link href=/css/theme-green.css?1626091329 rel=stylesheet><script src=/js/jquery-3.3.1.min.js?1626091329></script><style>:root #header+#content>#left>#rlblock_left{display:none!important}</style></head><body data-url=/api/><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?1626091329></script><script type=text/javascript src=/js/auto-complete.js?1626091329></script><script type=text/javascript>var baseurl="https:\/\/strolch.li\/";</script><script type=text/javascript src=/js/search.js?1626091329></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
parent
active"><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><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><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/contentapi/_index.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> > API</span></div><div class=progress><div class=wrapper><nav id=TableOfContents><ul><li><a href=#overview>Overview</a></li><li><a href=#model>Model</a></li><li><a href=#realms>Realms</a></li></ul></nav></div></div></div></div><div id=head-tags></div><div id=body-inner><h1>API</h1><h2 id=overview>Overview</h2><p>The Strolch API revolves around the StrolchTransaction object. The main
concept is to implement your use cases in Service implementations. You
open a transaction using the openTx(String)-method and then perform the
use case by adding your Command instances to the transaction.</p><p>Transactions are opened on a StrolchRealm. The realms are used to
separate mandates in a single runtime instance of Strolch. Each realm
has its own ResourceMap, OrderMap, ActivityMap instances from which the
TX retrieves the elements.</p><h2 id=model>Model</h2><p>The Strolch model is implemented in the project li.strolch.model.</p><p>The Strolch model consists of three root level elements: Resource,
Order and Activity. Each element has at least the following attributes:</p><ul><li>Id → the element&rsquo;s id</li><li>Name → the element&rsquo;s name</li><li>Type → the element&rsquo;s type</li></ul><p>Each root element can have any number of ParameterBag instances on it,
which in turn can have any number of Parameters on it. Accessing these
objects is always done by their IDs. Strolch root elements are always
stored in the respective ElementMaps in their Strolch realm. Thus
accessing a certain parameter from a Resource would look like this:</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> openTx<span style=color:#f92672>(</span>realmName<span style=color:#f92672>))</span> <span style=color:#f92672>{</span>
Resource resource <span style=color:#f92672>=</span> tx<span style=color:#f92672>.</span><span style=color:#a6e22e>getResourceBy</span><span style=color:#f92672>(</span><span style=color:#e6db74>&#34;TestType&#34;</span><span style=color:#f92672>,</span> <span style=color:#e6db74>&#34;MyTestResource&#34;</span><span style=color:#f92672>);</span>
Date date <span style=color:#f92672>=</span> resource<span style=color:#f92672>.</span><span style=color:#a6e22e>getDate</span><span style=color:#f92672>(</span><span style=color:#e6db74>&#34;@bag01&#34;</span><span style=color:#f92672>,</span> <span style=color:#e6db74>&#34;@param6&#34;</span><span style=color:#f92672>);</span>
logger<span style=color:#f92672>.</span><span style=color:#a6e22e>info</span><span style=color:#f92672>(</span><span style=color:#e6db74>&#34;@param6 date is &#34;</span> <span style=color:#f92672>+</span> date<span style=color:#f92672>);</span>
<span style=color:#f92672>}</span>
</code></pre></div><p>XML Presentation of Strolch&rsquo;s top level elements of Resources:</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;!-- Resource instance --&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;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;@param7&#34;</span> <span style=color:#a6e22e>Name=</span><span style=color:#e6db74>&#34;StringList Param&#34;</span> <span style=color:#a6e22e>Type=</span><span style=color:#e6db74>&#34;StringList&#34;</span> <span style=color:#a6e22e>Value=</span><span style=color:#e6db74>&#34;Hello;World&#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;@param6&#34;</span> <span style=color:#a6e22e>Name=</span><span style=color:#e6db74>&#34;Date Param&#34;</span> <span style=color:#a6e22e>Type=</span><span style=color:#e6db74>&#34;Date&#34;</span> <span style=color:#a6e22e>Value=</span><span style=color:#e6db74>&#34;2012-11-30T18:12:05.628+01:00&#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;@param5&#34;</span> <span style=color:#a6e22e>Name=</span><span style=color:#e6db74>&#34;String Param&#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;Strolch&#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&#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;@param4&#34;</span> <span style=color:#a6e22e>Name=</span><span style=color:#e6db74>&#34;Long Param&#34;</span> <span style=color:#a6e22e>Type=</span><span style=color:#e6db74>&#34;Long&#34;</span> <span style=color:#a6e22e>Value=</span><span style=color:#e6db74>&#34;4453234566&#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;@param3&#34;</span> <span style=color:#a6e22e>Name=</span><span style=color:#e6db74>&#34;Integer Param&#34;</span> <span style=color:#a6e22e>Type=</span><span style=color:#e6db74>&#34;Integer&#34;</span> <span style=color:#a6e22e>Value=</span><span style=color:#e6db74>&#34;77&#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;@param2&#34;</span> <span style=color:#a6e22e>Name=</span><span style=color:#e6db74>&#34;Float Param&#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;44.3&#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;@integerState&#34;</span> <span style=color:#a6e22e>Name=</span><span style=color:#e6db74>&#34;Integer State&#34;</span> <span style=color:#a6e22e>Type=</span><span style=color:#e6db74>&#34;IntegerState&#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;0&#34;</span> <span style=color:#a6e22e>Value=</span><span style=color:#e6db74>&#34;1&#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;1&#34;</span> <span style=color:#a6e22e>Value=</span><span style=color:#e6db74>&#34;2&#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;2&#34;</span> <span style=color:#a6e22e>Value=</span><span style=color:#e6db74>&#34;3&#34;</span> <span style=color:#f92672>/&gt;</span>
<span style=color:#f92672>&lt;/TimedState&gt;</span>
<span style=color:#f92672>&lt;/Resource&gt;</span>
</code></pre></div><p>XML Presentation of Strolch&rsquo;s top level elements of Orders:</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;!-- Order instance --&gt;</span>
<span style=color:#f92672>&lt;Order</span> <span style=color:#a6e22e>Id=</span><span style=color:#e6db74>&#34;MyTestOrder&#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:#a6e22e>Date=</span><span style=color:#e6db74>&#34;2013-11-20T07:42:57.699Z&#34;</span> <span style=color:#a6e22e>State=</span><span style=color:#e6db74>&#34;CREATED&#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;@param7&#34;</span> <span style=color:#a6e22e>Name=</span><span style=color:#e6db74>&#34;StringList Param&#34;</span> <span style=color:#a6e22e>Type=</span><span style=color:#e6db74>&#34;StringList&#34;</span> <span style=color:#a6e22e>Value=</span><span style=color:#e6db74>&#34;Hello;World&#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;@param6&#34;</span> <span style=color:#a6e22e>Name=</span><span style=color:#e6db74>&#34;Date Param&#34;</span> <span style=color:#a6e22e>Type=</span><span style=color:#e6db74>&#34;Date&#34;</span> <span style=color:#a6e22e>Value=</span><span style=color:#e6db74>&#34;2012-11-30T18:12:05.628+01:00&#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;@param5&#34;</span> <span style=color:#a6e22e>Name=</span><span style=color:#e6db74>&#34;String Param&#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;Strolch&#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&#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;@param4&#34;</span> <span style=color:#a6e22e>Name=</span><span style=color:#e6db74>&#34;Long Param&#34;</span> <span style=color:#a6e22e>Type=</span><span style=color:#e6db74>&#34;Long&#34;</span> <span style=color:#a6e22e>Value=</span><span style=color:#e6db74>&#34;4453234566&#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;@param3&#34;</span> <span style=color:#a6e22e>Name=</span><span style=color:#e6db74>&#34;Integer Param&#34;</span> <span style=color:#a6e22e>Type=</span><span style=color:#e6db74>&#34;Integer&#34;</span> <span style=color:#a6e22e>Value=</span><span style=color:#e6db74>&#34;77&#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;@param2&#34;</span> <span style=color:#a6e22e>Name=</span><span style=color:#e6db74>&#34;Float Param&#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;44.3&#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;/Order&gt;</span>
</code></pre></div><p>XML Presentation of Strolch&rsquo;s top level elements of Activities:</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;!-- Activity instance --&gt;</span>
<span style=color:#f92672>&lt;Activity</span> <span style=color:#a6e22e>Id=</span><span style=color:#e6db74>&#34;bicycleProduction&#34;</span> <span style=color:#a6e22e>Name=</span><span style=color:#e6db74>&#34;Bicycle Production&#34;</span> <span style=color:#a6e22e>Type=</span><span style=color:#e6db74>&#34;Series&#34;</span><span style=color:#f92672>&gt;</span>
<span style=color:#f92672>&lt;Activity</span> <span style=color:#a6e22e>Id=</span><span style=color:#e6db74>&#34;componentProduction&#34;</span> <span style=color:#a6e22e>Name=</span><span style=color:#e6db74>&#34;Production of components&#34;</span> <span style=color:#a6e22e>Type=</span><span style=color:#e6db74>&#34;Series&#34;</span><span style=color:#f92672>&gt;</span>
<span style=color:#f92672>&lt;Action</span> <span style=color:#a6e22e>Id=</span><span style=color:#e6db74>&#34;consumeGears&#34;</span> <span style=color:#a6e22e>Name=</span><span style=color:#e6db74>&#34;Gears&#34;</span>
<span style=color:#a6e22e>ResourceId=</span><span style=color:#e6db74>&#34;gears&#34;</span> <span style=color:#a6e22e>ResourceType=</span><span style=color:#e6db74>&#34;Article&#34;</span> <span style=color:#a6e22e>Type=</span><span style=color:#e6db74>&#34;Consume&#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;objectives&#34;</span> <span style=color:#a6e22e>Name=</span><span style=color:#e6db74>&#34;Production goals&#34;</span> <span style=color:#a6e22e>Type=</span><span style=color:#e6db74>&#34;Objectives&#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;1&#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;duration&#34;</span> <span style=color:#a6e22e>Name=</span><span style=color:#e6db74>&#34;Duration&#34;</span> <span style=color:#a6e22e>Type=</span><span style=color:#e6db74>&#34;Duration&#34;</span> <span style=color:#a6e22e>Value=</span><span style=color:#e6db74>&#34;PT0S&#34;</span> <span style=color:#f92672>/&gt;</span>
<span style=color:#f92672>&lt;/ParameterBag&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;frameProduction&#34;</span> <span style=color:#a6e22e>Name=</span><span style=color:#e6db74>&#34;Production frame&#34;</span> <span style=color:#a6e22e>Type=</span><span style=color:#e6db74>&#34;Series&#34;</span><span style=color:#f92672>&gt;</span>
<span style=color:#f92672>&lt;Action</span> <span style=color:#a6e22e>Id=</span><span style=color:#e6db74>&#34;produce&#34;</span> <span style=color:#a6e22e>Name=</span><span style=color:#e6db74>&#34;Production frame&#34;</span>
<span style=color:#a6e22e>ResourceId=</span><span style=color:#e6db74>&#34;frameProduction&#34;</span> <span style=color:#a6e22e>ResourceType=</span><span style=color:#e6db74>&#34;Machine&#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;objectives&#34;</span> <span style=color:#a6e22e>Name=</span><span style=color:#e6db74>&#34;Production goals&#34;</span> <span style=color:#a6e22e>Type=</span><span style=color:#e6db74>&#34;Objectives&#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;1&#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;duration&#34;</span> <span style=color:#a6e22e>Name=</span><span style=color:#e6db74>&#34;Duration&#34;</span> <span style=color:#a6e22e>Type=</span><span style=color:#e6db74>&#34;Duration&#34;</span> <span style=color:#a6e22e>Value=</span><span style=color:#e6db74>&#34;PT5M&#34;</span> <span style=color:#f92672>/&gt;</span>
<span style=color:#f92672>&lt;/ParameterBag&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;toStock&#34;</span> <span style=color:#a6e22e>Name=</span><span style=color:#e6db74>&#34;Frame ToStock&#34;</span>
<span style=color:#a6e22e>ResourceId=</span><span style=color:#e6db74>&#34;frame&#34;</span> <span style=color:#a6e22e>ResourceType=</span><span style=color:#e6db74>&#34;Article&#34;</span> <span style=color:#a6e22e>Type=</span><span style=color:#e6db74>&#34;Produce&#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;objectives&#34;</span> <span style=color:#a6e22e>Name=</span><span style=color:#e6db74>&#34;Production goals&#34;</span> <span style=color:#a6e22e>Type=</span><span style=color:#e6db74>&#34;Objectives&#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;1&#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;duration&#34;</span> <span style=color:#a6e22e>Name=</span><span style=color:#e6db74>&#34;Duration&#34;</span> <span style=color:#a6e22e>Type=</span><span style=color:#e6db74>&#34;Duration&#34;</span> <span style=color:#a6e22e>Value=</span><span style=color:#e6db74>&#34;PT1M&#34;</span> <span style=color:#f92672>/&gt;</span>
<span style=color:#f92672>&lt;/ParameterBag&gt;</span>
<span style=color:#f92672>&lt;/Action&gt;</span>
<span style=color:#f92672>&lt;/Activity&gt;</span>
<span style=color:#f92672>&lt;Activity</span> <span style=color:#a6e22e>Id=</span><span style=color:#e6db74>&#34;brakeProduction&#34;</span> <span style=color:#a6e22e>Type=</span><span style=color:#e6db74>&#34;Series&#34;</span> <span style=color:#a6e22e>Name=</span><span style=color:#e6db74>&#34;Herstellen Bremsen&#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;Action</span> <span style=color:#a6e22e>Id=</span><span style=color:#e6db74>&#34;produce&#34;</span> <span style=color:#a6e22e>Name=</span><span style=color:#e6db74>&#34;Production saddle&#34;</span>
<span style=color:#a6e22e>ResourceId=</span><span style=color:#e6db74>&#34;saddleProduction&#34;</span> <span style=color:#a6e22e>ResourceType=</span><span style=color:#e6db74>&#34;Machine&#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;objectives&#34;</span> <span style=color:#a6e22e>Name=</span><span style=color:#e6db74>&#34;Production goals&#34;</span> <span style=color:#a6e22e>Type=</span><span style=color:#e6db74>&#34;Objectives&#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;1&#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;duration&#34;</span> <span style=color:#a6e22e>Name=</span><span style=color:#e6db74>&#34;Duration&#34;</span> <span style=color:#a6e22e>Type=</span><span style=color:#e6db74>&#34;Duration&#34;</span> <span style=color:#a6e22e>Value=</span><span style=color:#e6db74>&#34;PT5M&#34;</span> <span style=color:#f92672>/&gt;</span>
<span style=color:#f92672>&lt;/ParameterBag&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;toStock&#34;</span> <span style=color:#a6e22e>Name=</span><span style=color:#e6db74>&#34;Saddle ToStock&#34;</span>
<span style=color:#a6e22e>ResourceId=</span><span style=color:#e6db74>&#34;frame&#34;</span> <span style=color:#a6e22e>ResourceType=</span><span style=color:#e6db74>&#34;Article&#34;</span> <span style=color:#a6e22e>Type=</span><span style=color:#e6db74>&#34;Produce&#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;objectives&#34;</span> <span style=color:#a6e22e>Name=</span><span style=color:#e6db74>&#34;Production goals&#34;</span> <span style=color:#a6e22e>Type=</span><span style=color:#e6db74>&#34;Objectives&#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;1&#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;duration&#34;</span> <span style=color:#a6e22e>Name=</span><span style=color:#e6db74>&#34;Duration&#34;</span> <span style=color:#a6e22e>Type=</span><span style=color:#e6db74>&#34;Duration&#34;</span> <span style=color:#a6e22e>Value=</span><span style=color:#e6db74>&#34;PT1M&#34;</span> <span style=color:#f92672>/&gt;</span>
<span style=color:#f92672>&lt;/ParameterBag&gt;</span>
<span style=color:#f92672>&lt;/Action&gt;</span>
<span style=color:#f92672>&lt;/Activity&gt;</span>
<span style=color:#f92672>&lt;/Activity&gt;</span>
<span style=color:#f92672>&lt;Action</span> <span style=color:#a6e22e>Id=</span><span style=color:#e6db74>&#34;assembly&#34;</span> <span style=color:#a6e22e>Name=</span><span style=color:#e6db74>&#34;Bicycle assemble&#34;</span>
<span style=color:#a6e22e>ResourceId=</span><span style=color:#e6db74>&#34;bicycleAssembly&#34;</span> <span style=color:#a6e22e>ResourceType=</span><span style=color:#e6db74>&#34;Assembly&#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;objectives&#34;</span> <span style=color:#a6e22e>Name=</span><span style=color:#e6db74>&#34;Production goals&#34;</span> <span style=color:#a6e22e>Type=</span><span style=color:#e6db74>&#34;Objectives&#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;1&#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;duration&#34;</span> <span style=color:#a6e22e>Name=</span><span style=color:#e6db74>&#34;Duration&#34;</span> <span style=color:#a6e22e>Type=</span><span style=color:#e6db74>&#34;Duration&#34;</span> <span style=color:#a6e22e>Value=</span><span style=color:#e6db74>&#34;PT5M&#34;</span> <span style=color:#f92672>/&gt;</span>
<span style=color:#f92672>&lt;/ParameterBag&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;toStock&#34;</span> <span style=color:#a6e22e>Name=</span><span style=color:#e6db74>&#34;Bicycle to stock&#34;</span>
<span style=color:#a6e22e>ResourceId=</span><span style=color:#e6db74>&#34;bicycle&#34;</span> <span style=color:#a6e22e>ResourceType=</span><span style=color:#e6db74>&#34;Product&#34;</span> <span style=color:#a6e22e>Type=</span><span style=color:#e6db74>&#34;Produce&#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;objectives&#34;</span> <span style=color:#a6e22e>Name=</span><span style=color:#e6db74>&#34;Production goals&#34;</span> <span style=color:#a6e22e>Type=</span><span style=color:#e6db74>&#34;Objectives&#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;1&#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;duration&#34;</span> <span style=color:#a6e22e>Name=</span><span style=color:#e6db74>&#34;Duration&#34;</span> <span style=color:#a6e22e>Type=</span><span style=color:#e6db74>&#34;Duration&#34;</span> <span style=color:#a6e22e>Value=</span><span style=color:#e6db74>&#34;PT1M&#34;</span> <span style=color:#f92672>/&gt;</span>
<span style=color:#f92672>&lt;/ParameterBag&gt;</span>
<span style=color:#f92672>&lt;/Action&gt;</span>
<span style=color:#f92672>&lt;/Activity&gt;</span>
</code></pre></div><h2 id=realms>Realms</h2><p>Strolch realms implement the multi-client capability which is thus baked right
into the Strolch runtime. When configuring a Strolch runtime, realms are
configured and for each realm the data store mode is set. Each realm has its
own persistence configuration and can thus run in one of the 4 modes that the
Strolch agent implements:</p><ul><li>EMPTY
This is a transient data store mode, where no model changes are persisted,
but they are only kept in memory. When the Strolch agent is started, this
realm stays empty as no data is loaded.</li><li>TRANSIENT
This is the same as EMPTY, but with the difference that when the Strolch
agent is started, an XML file is parsed and the in memory realm is populated
with the elements parsed from that XML file.</li><li>CACHED
In this mode, all data is stored in memory, and any changes made are written
back to the persistence layer. This allows for fast in-memory quries, but
makes sure no data is lost when the agent is restarted.</li></ul><p>Strolch Realms are also responsible for opening Transactions, as these are
bound to the persistence layer configured for this realm. At runtime, a realm
is then accessed from the ComponentContainer:</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>ComponentContainer container <span style=color:#f92672>=</span> getAgent<span style=color:#f92672>().</span><span style=color:#a6e22e>getContainer</span><span style=color:#f92672>();</span>
StrolchRealm realm <span style=color:#f92672>=</span> container<span style=color:#f92672>.</span><span style=color:#a6e22e>getRealm</span><span style=color:#f92672>(</span>StrolchConstants<span style=color:#f92672>.</span><span style=color:#a6e22e>DEFAULT_REALM</span><span style=color:#f92672>);</span>
<span style=color:#66d9ef>try</span><span style=color:#f92672>(</span>StrolchTransaction tx <span style=color:#f92672>=</span> realm<span style=color:#f92672>.</span><span style=color:#a6e22e>openTx</span><span style=color:#f92672>())</span> <span style=color:#f92672>{</span>
Resource resource <span style=color:#f92672>=</span> tx<span style=color:#f92672>.</span><span style=color:#a6e22e>getResourceBy</span><span style=color:#f92672>(</span><span style=color:#e6db74>&#34;TestType&#34;</span><span style=color:#f92672>,</span> <span style=color:#e6db74>&#34;MyTestResource&#34;</span><span style=color:#f92672>);</span>
<span style=color:#f92672>...</span>
<span style=color:#f92672>}</span>
</code></pre></div><footer class=footline></footer></div></div><div id=navigation><a class="nav nav-prev" href=/ title="Strolch Overview"><i class="fa fa-chevron-left"></i></a><a class="nav nav-next" href=/history/ title=History 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?1626091329></script><script src=/js/perfect-scrollbar.min.js?1626091329></script><script src=/js/perfect-scrollbar.jquery.min.js?1626091329></script><script src=/js/jquery.sticky.js?1626091329></script><script src=/js/featherlight.min.js?1626091329></script><script src=/js/highlight.pack.js?1626091329></script><script>hljs.initHighlightingOnLoad();</script><script src=/js/modernizr.custom-3.6.0.js?1626091329></script><script src=/js/learn.js?1626091329></script><script src=/js/hugo-learn.js?1626091329></script><script src=/mermaid/mermaid.js?1626091329></script><script>mermaid.initialize({startOnLoad:true});</script></body></html>