28 lines
12 KiB
HTML
28 lines
12 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?1626103836 rel=stylesheet><link href=/css/fontawesome-all.min.css?1626103836 rel=stylesheet><link href=/css/hybrid.css?1626103836 rel=stylesheet><link href=/css/featherlight.min.css?1626103836 rel=stylesheet><link href=/css/perfect-scrollbar.min.css?1626103836 rel=stylesheet><link href=/css/auto-complete.css?1626103836 rel=stylesheet><link href=/css/atom-one-dark-reasonable.css?1626103836 rel=stylesheet><link href=/css/theme.css?1626103836 rel=stylesheet><link href=/css/hugo-theme.css?1626103836 rel=stylesheet><link href=/css/theme-green.css?1626103836 rel=stylesheet><script src=/js/jquery-3.3.1.min.js?1626103836></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?1626103836></script><script type=text/javascript src=/js/auto-complete.js?1626103836></script><script type=text/javascript>var baseurl="https:\/\/strolch.li\/";</script><script type=text/javascript src=/js/search.js?1626103836></script></div><section id=homelinks><ul><li><a class=padding href=/><i class="fas fa-home"></i>Home</a></li></ul></section><div class=highlightable><ul class=topics><li data-nav-id=/api/ title=API class=dd-item><a href=/api/>API</a></li><li data-nav-id=/documentation/ title=Documentation class=dd-item><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><li data-nav-id=/posts/ title=Blog class=dd-item><a href=/posts/>Blog</a><ul><li data-nav-id=/posts/post-00014/ title="Strolch Reports" class=dd-item><a href=/posts/post-00014/>Strolch Reports</a></li><li data-nav-id=/posts/post-00013/ title="Strolch Searches" class=dd-item><a href=/posts/post-00013/>Strolch Searches</a></li><li data-nav-id=/posts/post-00012/ title="Wow, the many changes!" class=dd-item><a href=/posts/post-00012/>Wow, the many changes!</a></li><li data-nav-id=/posts/post-00011/ title="Strolch now on Maven Central" class=dd-item><a href=/posts/post-00011/>Strolch now on Maven Central</a></li><li data-nav-id=/posts/post-00010/ title="Versioning of objects" class=dd-item><a href=/posts/post-00010/>Versioning of objects</a></li><li data-nav-id=/posts/post-00009/ title="Release 1.2.0" class=dd-item><a href=/posts/post-00009/>Release 1.2.0</a></li><li data-nav-id=/posts/post-00008/ title="Strolch Update" class=dd-item><a href=/posts/post-00008/>Strolch Update</a></li><li data-nav-id=/posts/post-00007/ title="Activities: Beginning of the planning engine" class=dd-item><a href=/posts/post-00007/>Activities: Beginning of the planning engine</a></li><li data-nav-id=/posts/post-00006/ title="Strolch Documentation" class=dd-item><a href=/posts/post-00006/>Strolch Documentation</a></li><li data-nav-id=/posts/post-00005/ title="Strolch Release 1.0.0" class=dd-item><a href=/posts/post-00005/>Strolch Release 1.0.0</a></li><li data-nav-id=/posts/post-00004/ title="DurationParameter and other minor changes: Release 1.0.0-RC4" class=dd-item><a href=/posts/post-00004/>DurationParameter and other minor changes: Release 1.0.0-RC4</a></li><li data-nav-id=/posts/post-00003/ title="DB Initialization: Release 1.0.0-RC3" class=dd-item><a href=/posts/post-00003/>DB Initialization: Release 1.0.0-RC3</a></li><li data-nav-id=/posts/post-00002/ title="Release 1.0.0-RC2" class=dd-item><a href=/posts/post-00002/>Release 1.0.0-RC2</a></li><li data-nav-id=/posts/post-00001/ title="Release 1.0.0-RC1" class=dd-item><a href=/posts/post-00001/>Release 1.0.0-RC1</a></li></ul></li></ul><section id=shortcuts><h3>More</h3><ul><li><a class=padding href=https://strolch.li/tags><i class="fas fa-tags"></i>Tags</a></li><li><a class=padding href=https://github.com/strolch-li><i class="fab fa-github"></i>GitHub project</a></li></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’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?1626103836></script><script src=/js/perfect-scrollbar.min.js?1626103836></script><script src=/js/perfect-scrollbar.jquery.min.js?1626103836></script><script src=/js/jquery.sticky.js?1626103836></script><script src=/js/featherlight.min.js?1626103836></script><script src=/js/highlight.pack.js?1626103836></script><script>hljs.initHighlightingOnLoad();</script><script src=/js/modernizr.custom-3.6.0.js?1626103836></script><script src=/js/learn.js?1626103836></script><script src=/js/hugo-learn.js?1626103836></script><script src=/mermaid/mermaid.js?1626103836></script><script>mermaid.initialize({startOnLoad:true});</script></body></html> |