strolch/li.strolch.website/www.strolch.li/blog.html

707 lines
40 KiB
HTML

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="google-site-verification" content="CPhbjooaiTdROm7Vs4E7kuHZvBfkeLUtonGgcVUbTL8" />
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta name="description" content="">
<meta name="author" content="">
<link rel="shortcut icon" href="ico/favicon.ico">
<title>Strolch: Blog</title>
<!-- Bootstrap core CSS -->
<link href="css/bootstrap.min.css" rel="stylesheet">
<!-- Custom styles for this template -->
<link href="css/custom.css" rel="stylesheet">
<link href="css/blog.css" rel="stylesheet">
<!-- HTML5 shim and Respond.js IE8 support of HTML5 elements and media queries --><!--[if lt IE 9]>
<script src="https://oss.maxcdn.com/libs/html5shiv/3.7.0/html5shiv.js"></script>
<script src="https://oss.maxcdn.com/libs/respond.js/1.4.2/respond.min.js"></script><![endif]-->
</head>
<body>
<div class="navbar navbar-inverse navbar-fixed-top" role="navigation">
<div class="container">
<div class="navbar-header">
<a class="navbar-brand" href="index.html">Strolch</a>
</div>
<div class="collapse navbar-collapse">
<ul class="nav navbar-nav">
<li><a href="index.html">Overview</a></li>
<li><a href="api.html">API</a></li>
<li><a href="documentation.html">Documentation</a></li>
<li><a href="tutorial.html">Tutorial</a></li>
<li><a href="downloads.html">Downloads</a></li>
<li><a href="development.html">Development</a></li>
<li class="active"><a href="blog.html">Blog</a></li>
</ul>
</div>
<!--/.nav-collapse -->
</div>
</div>
<div class="container">
<div class="page-header">
<h1 class="page-title">The Strolch Blog</h1>
<p class="lead page-description">The official Strolch blog with news, ideas, and thoughts on using Strolch.</p>
</div>
<!-- container for whole blog -->
<div class="row">
<!-- blog items -->
<div class="col-sm-8 blog-main">
<!-- blog post -->
<div class="blog-post">
<h2 class="blog-post-title">Strolch Reports</h2>
<p class="blog-post-meta">30. June 2017 by <a href="#">Robert</a></p>
<p>Strolch can do reports!</p>
<hr>
<p>A feature we haven't written about yet is the report API. Strolch has it's own API to generate
reports of data, and since we have a generic model, we use <code>Resource</code> of type
<code>Report</code> to define them.</p>
<p>Go check out the <a href="documentation-reports.html">documentation</a> and then enjoy using this
easy way to deliver the reports your peers require.</p>
</div>
<!-- /.blog-post -->
<!-- blog post -->
<div class="blog-post">
<h2 class="blog-post-title">Strolch Searches</h2>
<p class="blog-post-meta">23. June 2017 by <a href="#">Robert</a></p>
<p>Strolch queries are deprecated!</p>
<hr>
<p>Strolch has had once again many changes, and fixes etc. One important thing to note is that we have
removed support for transactional mode and have rewritten how models are searched. Thus the search
API was born.</p>
<p>Go check out the <a href="documentation-searches.html">Strolch Search</a> documentation and then go
rewrite your searches =)).</p>
<p>Strolch tag <a href="http://search.maven.org/#search%7Cga%7C1%7Cstrolch" target="_blank">1.6.51</a>
has all those juicy changes!</p>
</div>
<!-- /.blog-post -->
<!-- blog post -->
<div class="blog-post">
<h2 class="blog-post-title">Wow, the many changes!</h2>
<p class="blog-post-meta">21. March, 2017 by <a href="#">Robert</a></p>
<p>So many changes, and so long no update - not good!</p>
<hr>
<p>Oh boy, have we forgotten to update you all on the latest awesome features in Strolch! There are over
<a href="https://github.com/4treesCH/strolch/compare/1.3.0...develop">123 commits</a> since the last
tag 1.3.0, so that alone merits a new blog post.</p>
<p>Currently the latest tag is 1.5.5, but this version is actually already quite old, as it was created
on 31. January 2017 and there are 53 new commits ahead of the tag.</p>
<p>Enough of all the commits, lets get to the new features:</p>
<ul>
<li>Added new generic report creator</li>
<li>Added Activity.TimeOrdering and updated Model XSD</li>
<li>Implemented State Model on Activity/Actions</li>
<li>Implemented execution of Activities</li>
<li>Implemented EventBasedExecutionHandler</li>
<li>Added StrolchXmlParser to quickly parse from a file</li>
<li>Add Activity.remove(String) to remove an element</li>
<li>Refactored LockHandler to use Locator</li>
<li>Added Activity.getActionsWithState(State)</li>
<li>Moved *ToFlat and *FromFlat Json Visitors to strolch model</li>
<li>Added StrolchElementQuery.internal()</li>
<li>Added Parameter.clearValue() and list parameters use , as sep</li>
<li>Json Tags are now in Tags.Json and are drinking camel-case</li>
<li>Moved PrivilegeAddUserService to command, added tests</li>
<li>Lots of JavaDoc updates</li>
<li>Refactored code for REST Inspector to use gson</li>
<li>Added inspector REST api for activities</li>
<li>Inspector now has offset/limit for queries</li>
<li>Added new StringMapArgument for StrolchServices</li>
<li>Added missing activity observer calls in AbstractTransaction</li>
<li>Added StringMapResult to use as a ServiceResult</li>
<li>Removed many visitors and implemented proper visitor pattern...</li>
<li>Don't log stack trace if certificate does not exist</li>
<li>SmtpMailer now understands whitelists for override</li>
<li>Fixed locator finding for Activity and Action</li>
<li>Fixed undo logic for general commands</li>
</ul>
<p>To summarize, <b>execution</b> and <b>reporting</b> are the two new features that make Strolch really
awesome! We use execution to perform a number of actions on a remote device connected to a Strolch
agent through WebSockets. This allows serial and parallel execution of actions and of course locking
of concurrently used resources.</p>
<p>In an enterprise world reports can never be missed, so we needed an API to create reports. Of course
that API was created in a way that all things are done in Strolch: generically. Thus a report is
created as a Resource, defining the report object, columns and any relevant joins.</p>
<p>And one of the really cool things is that we have started with a UI for Strolch. There is now an <a
href="https://github.com/4treesCH/strolch-wc-inspector">Inspector</a> with which the entire data
model of a running agent can be seen. This inspector is built using Polymer and WebComponents and
thus can be easily embedded in your application.</p>
<p>To facilitate the authentication of a user for the inspector, an
<a href="https://github.com/4treesCH/strolch-wc-auth">authentication component</a> was created as
well. And of course i18n can't be forgotten, so there is a component for
<a href="https://github.com/4treesCH/strolch-wc-localize-behavior">that</a> too.</p>
<p>To simplify tasks in a web project, there is also a <a href="https://github.com/4treesCH/strolchjs">StrolchJs</a>
repository where certain Strolch specific things are handled e.g. querying the authenticated user's
roles etc.</p>
<p>The release of the next Strolch version isn't defined yet, as we are internally building a project on
all these changes and with the release 1.0.0 of that project (which will be soon), we shall perform
the next release of Strolch.</p>
<p>Until then, happy coding!</p>
</div>
<!-- /.blog-post -->
<!-- blog post -->
<div class="blog-post">
<h2 class="blog-post-title">Strolch now on Maven Central</h2>
<p class="blog-post-meta">22. September, 2016 by <a href="#">Robert</a></p>
<p>Release Version 1.3.0 released and deployed to Maven Central</p>
<hr>
<p>We have released a new version of Strolch so that you can now go and use the the latest features in
Strolch.</p>
<p>Further we have now deployed Strolch to Maven Central, so it is easier than ever to use Strolch in
your projects. No need to download first or use a special repository - just define the dependencies
as you would any other dependency.</p>
<p>Some of the new features:</p>
<ul>
<li>Marshallers for JSON</li>
<li>Versioning built into Strolch</li>
<li>Implemented password reset API for Privilege</li>
<li>New Component MailHandler</li>
<li>New ToFlatJsonVisitor for simple marshalling in REST APIs</li>
<li>Added CRUD Commands and Services for Activities</li>
<li>Further additional bugfixes</li>
</ul>
<p>Strolch has also been moved to another <a target="_blank" href="https://github.com/4treesCH/strolch">organisation</a>
on GitHub, so if you're compiling Strolch from source, please update your GIT remote configurations.
</p>
<p>Have fun using the latest and greatest version of Strolch!</p>
</div>
<!-- /.blog-post -->
<!-- blog post -->
<div class="blog-post">
<h2 class="blog-post-title">Versioning of objects</h2>
<p class="blog-post-meta">8. August, 2016 by <a href="#">Robert</a></p>
<p>Opt-In versioning of objects</p>
<hr>
<p>A major new feature has landed in Strolch. Now, using opt-in, it is possible to have all changes to
the object model be versioned. This means that any change to <code>Order</code>,
<code>Resource</code> or <code>Activity</code> is automatically versioned and one can then revert to
this version later on.</p>
<p>This will make it far easier to implement undo operations in applications since it is an inherent
part of the lifecycle of objects in Strolch.</p>
<p>Since Strolch is supposed to be used also in small footprint hardware, this option is opt-in.</p>
<p>A side affect of this new feature is that we have for the time being not ported the XML persistence
layer. If this is required, then someone drop us a note and we'll check on it.</p>
<p>So now go ahead and add <code>&lt;enableVersioning&gt;true&lt;/enableVersioning&gt;</code> to your
Realm so that versioning is enabled.</p>
</div>
<!-- /.blog-post -->
<!-- blog post -->
<div class="blog-post">
<h2 class="blog-post-title">Release 1.2.0</h2>
<p class="blog-post-meta">4. July, 2016 by <a href="#">Robert</a></p>
<p>Release of Strolch 1.2.0</p>
<hr>
<p>A few months ago we informed of the soon to be released version 1.1.0. Well, we decided to jump to
1.2.0 because we did some refactorings. All the eitchnet projects have been melted into Strolch and
thus now it's all one nice package. This will result in simpler development and less constraints on
APIs between the two projects.</p>
<p>Other than that, not much changed, but we are continually working on Strolch, so go grab your latest
copy and have fun coding!</p>
</div>
<!-- /.blog-post -->
<!-- blog post -->
<div class="blog-post">
<h2 class="blog-post-title">Strolch Update</h2>
<p class="blog-post-meta">April 9, 2016 by <a href="#">Robert</a></p>
<p>Long due update on Strolch development.</p>
<hr>
<p>Although we have been rather quiet in the last couple of months, anyone viewing Strolch's commit log,
will see that we certainly didn't halt Strolch development.</p>
<p>We have been hard at work, using Strolch in projects, which required many new features and fixes. The
commit log shows as of today over 180 commits since the release tag 1.0.0.</p>
<p>Some of the most exciting changes are:</p>
<ul>
<li>REST API to query model, incl. privilege management.</li>
<li>JSON marshalling of all elements.</li>
<li>Added <code>Policies</code></li>
<li>Added persisting of user sessions.</li>
<li>New JavaScript based UI to view Strolch's model. This is an initial version and more UI elements
and functions will follow.
</li>
<li>Basic planning engine functionality.</li>
</ul>
<p>Further new features and changes are:</p>
<ul>
<li>Implemented a REST API to the privilege management - Now users can be added, changed, etc. via
call to the appropriate URL under <code>../strolch/privilege/*</code>.
</li>
<li>Implemented a REST API to query the user sessions. Incl. invalidating sessions to forcefully
logout users.
</li>
<li>Implemented a REST API to query <code>Audits</code>.</li>
<li>Implemented REST API to query <code>Orders</code>, <code>Resources</code> and
<code>Activities</code>/<code>Actions</code></li>
<li>Implemented REST API to update <code>Resources</code> and <code>Orders</code> from XML</li>
<li>REST API to authenticate now adds a cookie, so authorization is much simpler.</li>
<li>Added convenience methods in <code>Service</code> and <code>Command</code> to easily perform
system user actions.
</li>
<li>Added audits for login/logout of users.</li>
<li>Added audits for changes to privilege management.</li>
<li>PostgreSQL persistence layer now uses <a href="https://github.com/brettwooldridge/HikariCP">HikariCP</a>
for connection pooling.
</li>
<li>Implemented a performance test project</li>
<li>Added new Parameters of type <code>IntegerList</code>, <code>FloatList</code> and
<code>LongList</code>.
</li>
<li>Added feature to ignore a realm on DB init.</li>
<li>Implemented core planning functionality.</li>
<li>Added <code>strolch_minimal</code> and <code>strolch_minimal_rest</code> projects to easily get
started.
</li>
<li>Query API now has built in ordering.</li>
<li>Added <code>Policy</code> to all root elements.</li>
<li>Added new planning web app project. This is a test application for demoing the planning engine
functionality of Strolch.
</li>
<li>Adding the persisting and reloading of user sessions, so that a new start of Strolch does not
logout users.
</li>
<li>Implemented to JSON visitors for all root elements.</li>
</ul>
<p>So, although we've been rather quiet on the blog and on social media, we have not been quiet in
Strolch's development. We are planning to release version 1.1.0 soon, so stay tuned!</p>
</div>
<!-- /.blog-post -->
<!-- blog post -->
<div class="blog-post">
<h2 class="blog-post-title">Activities: Beginning of the planning engine</h2>
<p class="blog-post-meta">July 8, 2015 by <a href="#">Robert</a></p>
<p>The ground work of the Strolch planning engine has been laid.</p>
<hr>
<p>One of the core ideas in building Strolch was to create a planning engine. The planning engine would
work in combination of <code>Order</code> objects representing customer orders, <code>Resource</code>
objects representing machines, human resources, etc., and <code>Activity</code>/<code>Action</code>
hierarchies defining a workflow.</p>
<p>With the latest couple of commits to Strolch we have now added Activities and a basic planning of
Actions onto Resources. Activities have an ordered list of <code>IActivityElement</code> which allows
creating an arbitrary deep tree structure of Activity and Action elements.</p>
<p>Action objects have a list of <code>IValueChange</code> objects which define the start, end and
further value changes over time on a referenced Resource. Thus planning an Activity is done by
iterating the Activity hierarchy and for every Action selecting a relevant Resource and then then
applying the changes of the Action on to the referenced <code>TimeState</code> on the Resource.</p>
<p>This implementation is currently very simple as it ignores all constraints which a Resource might
have. In further development we shall implement a <code>Violation</code> model so that UIs can be
built to visualize the over-use of Resources.</p>
<p>In even further steps we would then start implementing algorithms to not just apply the changes onto
a Resource, but to actually search the Resource for time slots when the value changes would not
violate any constraints applied to the resource.</p>
<p>We are very much looking forward to these new features. Stay tuned for your updates - even though
they do take their time to arrive =).</p>
</div>
<!-- /.blog-post -->
<!-- blog post -->
<div class="blog-post">
<h2 class="blog-post-title">Strolch Documentation</h2>
<p class="blog-post-meta">April 6, 2015 by <a href="#">Robert</a></p>
<p>Any good software has some decent documentation explaining concepts, best practices and gives
examples.</p>
<hr>
<p>So this post is to announce that there is now a new page on Strolch's website with a bit of
documentation. This first documentation explains the Strolch runtime and some of the do and don't in
Strolch code.</p>
<p>Bear with us, writing documentation takes time and can be outdated quickly, so we will make an effort
to keep everything up to date and add more documentation, but this is a start.</p>
<p>So go ahead and read the <a href="documentation.html">documentation</a> , and if you haven't already,
also read the rest of the website which should give some more insight into the <a href="index.html">what</a>,
<a href="index.html">why</a> and <a href="api.html">how</a> of Strolch.</p>
</div>
<!-- /.blog-post -->
<!-- blog post -->
<div class="blog-post">
<h2 class="blog-post-title">Strolch Release 1.0.0</h2>
<p class="blog-post-meta">March 31, 2015 by <a href="#">Robert</a></p>
<p>Finally Version 1.0.0 of Strolch has been released and can be <a href="downloads.html">downloaded</a>
immediately.</p>
<hr>
<p>Before 1.0.0 could be released, some major changes were decided, all driven by the first big project
using Strolch as its underlying stack. Those changes were minor, and really major, but should make
Strolch better and was important for the first release.</p>
<p>Here is a list of the most interesting changes:</p>
<ul>
<li>Java 8 - Strolch was ported to Java 8. This gives a lot of cool features: The stream API,
lambdas, the new time API, etc.
</li>
<li>TX refactoring: Strolch transactions are instances of <code>Closeable</code> so that they are
closed using a try-with-resource block in Java7. The change that was required was to not auto
commit. Now a TX is read-only and one has to set the auto commit as the last statement. See <a
href="https://github.com/4treesCH/strolch/commit/46ccb921dfa94f140cbaa3f459c2e434c913d720">this</a>
commit for more information.
</li>
<li>Added a <code>tx.flush()</code> to allow an implementation to flush part of a transaction, this
feature is vital to perform parts of a transaction before deciding if the TX should be
committed.
</li>
<li>Fixed the issue where data store mode <code>CACHED</code> performed <code>TRANSACTIONAL</code>
queries, instead of staying in-memory.
</li>
<li><code>ParameterSelection.stringListSelection()</code> uses a <code>StringMatchMode</code>
instead of just <code>equals()</code></li>
<li><code>ParameterSelection.dateRangeSelection()</code> uses a <code>DateRange</code> instead of
just <code>equals()</code></li>
<li>Added the <code>MigrationsHandler</code> to use to perform code migrations of production data
bases where data shouldn't go lost.
</li>
<li>And many more...</li>
</ul>
<p>Strolch 1.1.0 is already in development and can also be downloaded from the download page. Here you
can see the current change list on
<a href="https://github.com/4treesCH/strolch/compare/1.0.0...develop">GitHub</a>. For instance heavy
work has been done to implement privilege management by adding a REST API. Looking forward to a
wonderful next Strolch release.</p>
</div>
<!-- /.blog-post -->
<!-- blog post -->
<div class="blog-post">
<h2 class="blog-post-title">DurationParameter and other minor changes: Release 1.0.0-RC4</h2>
<p class="blog-post-meta">October 9, 2014 by <a href="#">Robert</a></p>
<p>New <code>DurationParameter</code> and additional minor changes: Release of 1.0.0-RC4 which can be
downloaded on the <a href="downloads.html">download</a> page.</p>
<hr>
<p>While implementing a use case in a Strolch based application it was detected that an essential
parameter type was missing, the <code>DurationParameter</code>. This parameter currently stores the
value as a long in memory and serializes to
<a href="http://en.wikipedia.org/wiki/ISO_8601#Durations">ISO8601</a>. As soon as we move Strolch to
Java8, we will change this to use the <code>Period</code> class in the new Java8 date and time API.
</p>
<p>In addition to the new parameter, a couple of other changes were made:</p>
<ul>
<li>32c1785 [Major] Added Session timeout handling</li>
<li>d55371e [Minor] fixed component version descriptions</li>
<li>c1cdfbb [Bugfix] added missing cloning of StringSetTimedState in Resources</li>
<li>8f50a15 [Major] changed XML format of time value of TimedStates to be ISO8601</li>
<li>5fbbe50 [Bugfix] fix NPE when cloning Resources with no state vars</li>
<li>b77f4b2 [New] added TimeVariable.clear()-method</li>
<li>Updated sub-module ch.eitchnet.utils to 906d24d</li>
<li>Updated sub-module ch.eitchnet.privilege to aa16887</li>
</ul>
<p>So, Strolch 1.0.0-RC4 is out the door, go ahead and <a href="downloads.html">try it out</a>.</p>
</div>
<!-- /.blog-post -->
<!-- blog post -->
<div class="blog-post">
<h2 class="blog-post-title">DB Initialization: Release 1.0.0-RC3</h2>
<p class="blog-post-meta">August 24, 2014 by <a href="#">Robert</a></p>
<p>Important feature <i>Database Initialization</i> added: Release of 1.0.0-RC3 which can be downloaded
on the <a href="downloads.html">download</a> page.</p>
<hr>
<p>When living <i>continuous integration</i> and <i>continuous delivery</i>, it is vital that things
like database migrations and initialization are performed in a controlled, but automatic way.</p>
<p>A Strolch-based application is using the PostgreSQL persistence layer. The implementation understands
the concepts of migration, and validating the database schema, but currently a mechanism to
automatically initialize the database with a minimal set of data was missing.</p>
<p>Migrating a database for Strolch is mostly a one time thing. The object model in Strolch is quite
static, so there is seldom a need to migrate the database. Domain specific changes, i.e. new
Resources, or adding Parameters to Resources, is not a schema change. Thus, instead of going the way
other frameworks go, e.g. Ruby on Rails, we built the data initialization right into the <code>PersistenceHandler</code>.
</p>
<p>Now if the PostgreSQL <code>PersistenceHandler</code> creates the schema, then it might also
initialize the minimal set of data. For this to work, the <code>PersistenceHandler</code> checks if
the flags <code>allowSchemaCreation</code>, <code>allowSchemaDrop</code> and <code>allowDbInitOnSchemaCreate</code>.
If those flags are enabled, and the schema was created during initialization, then the database is
also initialized with the contents of the XML file configured under key <code>dataStoreFile</code> of
the relevant <code>Realm</code>.</p>
<p>The database initialization is done as a system user action which must have the name <code>db_initializer</code>.
This is another fail-safe, so that on a production system, this user can simply be deleted.</p>
<p>So, Strolch 1.0.0-RC3 is out the door, go ahead and <a href="downloads.html">try it out</a>.</p>
</div>
<!-- /.blog-post -->
<!-- blog post -->
<div class="blog-post">
<h2 class="blog-post-title">Release 1.0.0-RC2</h2>
<p class="blog-post-meta">August 22, 2014 by <a href="#">Robert</a></p>
<p>Scratch that RC1, here is the brand new 1.0.0-RC2 which can be downloaded on the
<a href="downloads.html">download</a> page.</p>
<hr>
<p>So, as expected there were a few bugs, for instance the Strolch tutorial apps didn't start, so now i
fixed those and released an RC2. Go <a href="downloads.html">get it</a> and give it a try!</p>
</div>
<!-- /.blog-post -->
<!-- blog post -->
<div class="blog-post">
<h2 class="blog-post-title">Release 1.0.0-RC1</h2>
<p class="blog-post-meta">August 20, 2014 by <a href="#">Robert</a></p>
<p>With the Go-Live of a Strolch-based application around the corner, it is time to release Version
1.0.0 of Strolch. To this affect we have now released version 1.0.0-RC1 which can be downloaded on
the <a href="downloads.html">download</a> page.</p>
<hr>
<h3>Story</h3>
<p>Strolch as a component based software agent has been two years in the making. The concepts in Strolch
have been taken from a proprietary planning, scheduling and controlling software agent, which was,
and is been, used in industrial automation, logistics and production. Strolch was created to bring
the concepts, which were working well for small teams to go-live with large projects in short to
medium time-frames to the open source world.</p>
<p>Strolch was completely rewritten using the key concepts of a parameterized object model and a
component based agent but remembering which clutches the original implementation had, thus trying to
eradicate those without bringing in new ones. It might not be perfect in version 1.0.0, but it is a
starting point form which to carry on from.</p>
<h3>Features</h3>
<p>Strolch isn't feature complete by a long shot, but it sure has got many features which make it
useable in a concrete project, thus making sure it is not vaporware =)</p>
<p>The following is a list of key features, many of which were driven by concrete project
requirements:</p>
<ul>
<li>Separate containers for models (mandates)</li>
<li>Parameterized model with full
<a href="http://en.wikipedia.org/wiki/Create,_read,_update_and_delete">CRUD</a> for Resource and
Order objects
</li>
<li>Timed values on Resources to map values by time</li>
<li>Built-in versioning of model - configurable by Realm</li>
<li>Transparent runtime modes: TRANSIENT, CACHED, TRANSACTIONAL<sup>*</sup></li>
<li>Service and Command pattern for reusing functionality</li>
<li><a href="https://github.com/4treesCH/ch.eitchnet.xmlpers">XML File based persistence
layer</a><sup>*</sup></li>
<li><a href="http://www.postgresql.org/">PostgreSQL</a> persistence layer<sup>*</sup></li>
<li>Querying using a <a href="http://en.wikipedia.org/wiki/Fluent_API">fluent API</a></li>
<li>Services to import and export a model to XML</li>
<li>Integrated authentication and authorization to validate user privileges using
<a href="https://github.com/4treesCH/ch.eitchnet.privilege">Privilege</a></li>
<li>Ready to use <a href="http://en.wikipedia.org/wiki/Observer_pattern">Observer</a> pattern</li>
<li>(currently) Read-only <a href="http://en.wikipedia.org/wiki/Restful">REST</a> API to access the
agent model remotely
</li>
<li>Configurable environments</li>
<li>Opt-in audit trail (including read access, and the audits themselves)</li>
<li>Basic components required to
<a href="https://github.com/4treesCH/ch.eitchnet.utils/tree/master/src/main/java/ch/eitchnet/communication">communicate</a>
with external devices using TCP/IP
</li>
</ul>
<p>With the light weight implementation, where there are basically no third party libraries required for
the normal runtime, Strolch has a minimal foot print which allows it to run on small devices for
instance a <a href="http://beagleboard.org/Products/BeagleBone+Black">BeagleBone Black</a>. Using the
in-memory mode, it is an easy feat to set up test environments with little to no further requirements
than the JVM.</p>
<h3>Future</h3>
<p>So what is planned for the future? Although Strolch has quite a few interesting features, it is by no
way feature complete. The greatest wish is for Strolch to become a community driven platform, so many
new features will arise in the future, but at least one major future feature which will be tackled in
the near future and will certainly drive the next major release is a planning and scheduling engine
using a <a href="http://en.wikipedia.org/wiki/Gantt_chart">Gantt</a> chart to visualize the schedule.
</p>
<p>The planning engine will use the timed values on Resources extensively to create a planning engine on
which Workflows can be placed and allowing to detect violations and bottlenecks.</p>
<p>An extension of the planning of the scheduling engine will allow more than just placing Workflows on
Resources, but actually searching groups of Resources for a time slot of when to place tasks. This
will allow to use capacity constraints to plan and schedule workflows using different algorithms, and
respecting calendars etc.</p>
<p>Further time will be spent on giving Strolch it's own UI. Currently the idea is to use
<a href="http://www.polymer-project.org/">Google's Polymer</a> to implement the UI, thus creating
reusable widgets that can be used in projects.</p>
<h3>Take it for a spin</h3>
<p>So, now the important part is for new users to start using Strolch for their own projects. Go ahead,
check out the <a href="downloads.html">Downloads</a> page for the latest release and then checkout
the two tutorial applications to get yourself up to speed!</p>
<p>Don't hesitate to send us feedback or questions, we will be delighted to help you get your
Strolch-based application up and running, or provide feedback to your concerns!</p>
<h3>Developers</h3>
<p>Robert von Burg<br /> Reto Breitenmoser<br /> Dr. Martin Smock<br /></p>
<p><sup>*</sup> Currently Transactional mode is missing concrete implementation for querying for the XML
persistence</p>
</div>
<!-- /.blog-post -->
<!-- pagination -->
<ul class="pager">
<li><a href="#">Previous</a></li>
<li><a href="#">Next</a></li>
</ul>
</div>
<!-- /.blog-main -->
<!-- sidebar -->
<div-- class="col-sm-3 col-sm-offset-1 blog-sidebar">
<div class="sidebar-module sidebar-module-inset">
<h4>About</h4>
<p>Strolch is an open source component based software agent written in Java and can be compared, in a
light sense, with the Java EE stack: Strolch takes care of persistence, implements Services for use
cases, Commands as re-usable algorithms and has a parameterized data model.</p>
</div>
<!--div class="sidebar-module">
<h4>Archives</h4>
<ol class="list-unstyled">
<li><a href="#">August 2014</a></li>
< ! - -
<li><a href="#">February 2014</a></li>
<li><a href="#">January 2014</a></li>
<li><a href="#">December 2013</a></li>
<li><a href="#">November 2013</a></li>
<li><a href="#">October 2013</a></li>
<li><a href="#">September 2013</a></li>
<li><a href="#">August 2013</a></li>
<li><a href="#">July 2013</a></li>
<li><a href="#">June 2013</a></li>
<li><a href="#">May 2013</a></li>
<li><a href="#">April 2013</a></li>
- - >
</ol>
</div-->
<div class="sidebar-module">
<h4>Elsewhere</h4>
<ol class="list-unstyled">
<li><a href="https://github.com/4treesCH">GitHub</a></li>
<li><a href="https://twitter.com/eitchme">Twitter</a></li>
<li><a href="https://www.facebook.com/strolch.li">Facebook</a></li>
<li><a href="https://plus.google.com/u/0/communities/100208129798096060842">Google+</a></li>
</ol>
</div>
</div>
<!-- /.blog-sidebar -->
</div>
<!-- /.row -->
<div id="footer">
<div class="container">
<p class="text-muted">&copy; Strolch / <a href="mailto:eitch@eitchnet.ch">Robert von Burg</a> / Hosting by <a
href="http://www.eitchnet.ch">eitchnet.ch</a></p>
</div>
</div>
</div>
<!-- /.container -->
<!-- jQuery (necessary for Bootstrap's JavaScript plugins) -->
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script>
<!-- Include all compiled plugins (below), or include individual xsd as needed -->
<script src="js/bootstrap.min.js"></script>
<!-- Piwik -->
<script type="text/javascript">
var _paq = _paq || [];
_paq.push(['trackPageView']);
_paq.push(['enableLinkTracking']);
(function () {
var u = (("https:" == document.location.protocol) ? "https" : "http") + "://piwik.eitchnet.ch/";
_paq.push(['setTrackerUrl', u + 'piwik.php']);
_paq.push(['setSiteId', 2]);
var d = document, g = d.createElement('script'), s = d.getElementsByTagName('script')[0];
g.type = 'text/javascript';
g.defer = true;
g.async = true;
g.src = u + 'piwik.js';
s.parentNode.insertBefore(g, s);
})();
</script>
<noscript><p><img src="http://piwik.eitchnet.ch/piwik.php?idsite=2" style="border:0;" alt="" /></p></noscript>
<!-- End Piwik Code -->
</body>
</html>