strolch-website/docs/index.html

28 lines
10 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>Strolch Overview - 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=/><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><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 id=head-tags></div><div id=body-inner><span id=sidebar-toggle-span><a href=# id=sidebar-toggle data-sidebar-toggle><i class="fas fa-bars"></i>navigation</a></span><h2 id=strolch-overview>Strolch Overview</h2><p>Strolch is framework for developing Software. It&rsquo;s main features are:</p><ul><li>Complete persisted data model:<ul><li>Parameters and values by time</li><li>Resources, Orders with arbitrary parameter grouping</li><li>Activity/Action hierarchy with arbitrary depth</li><li>Policies for delegation</li><li>JSON as well as XML transformation</li><li>Locator API</li></ul></li><li>Transactions with pessimistic locking and optional read-locking</li><li>Search API</li><li>Component based</li><li>Deeply integrated privilege handling</li><li>Fully in-memory</li><li>Persisted auditing, versioning, operations log</li><li>DAOs for file system or PostgreSQL, easily extended</li><li>Execution framework</li><li>Service / Command oriented</li><li>Reporting API configured by Resource objects</li><li>REST API for data access</li><li>WebComponents UI for<ul><li>Inspector</li><li>Users</li><li>Roles</li><li>Operations Log</li><li>Login Screen</li><li>Jobs</li></ul></li><li>runs on plain old Java SE</li></ul><h2 id=strolch-intro>Strolch Intro</h2><p>It is a different framework to Spring and other similar type of Java
frameworks, as the model is defined as an abstract model, where you
always have the same three types of objects: Resources, Orders and
Activities. The fields are mapped as Parameter objects, of which the
important primitives are available.</p><p>The nice part about this framework is, that you can be up and ready in
a matter of minutes, and start building your project immediately in
that you open your favourite XML editor and start modelling your data.</p><p>Once your data is defined, you write your business logic in the form
of Services, Commands and Searches. There are many predefined services
and commands to manipulate the object model, so that you write your own
services when you need to enforce special business rules.</p><p>Through the use of Policy objects, you decouple algorithms from your
object model, so that at runtime you can change the behaviour, or
easily implement different behaviour depending on your use-case. For
instance you might have a simple billing service which performs a few
preparatory steps, and then calls the configured billing policy to
execute the billing depending on the customer, the warehouse, etc.</p><p>And of course persistence is as simple as configuring the persistence
handler, pointing to your RDBMS and then setting the mode to CACHED.
For you as a developer there is no more thinking in terms of SQL etc.,
as this is completely hidden from the developer. There is even a simple
file persistence layer if you are running IoT devices.</p><p>The runtime can be just about anything. Usually it is run inside an
Apache Tomcat instance as a webapp, as a WEB UI has been required for
all current Strolch projects. You could just as well use a main class.
Accessing the Strolch Agent remotely is usually done through REST.</p><p>Strolch is being actively developed, and customers constantly give us
reasons to improve and extend the framework. There is a Polymer
Inspector component which makes it easy to see and manipulate the
actual data. The new Search API makes it really easy to query your data.</p><p>Yes, Strolch is different, but the concept has come out of the planning
and execution segment, and has been refined over the years until it has
become what it is today.</p><h2 id=api>API</h2><p>Check out the API page to see how to use Strolch.</p><p><a href=/history/><strong>More to motivation etc</strong></a>.</p></div></div><div id=navigation><a class="nav nav-next" href=/api/ title=API 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>