What is MyTISM?

MyTISM is a framework to develop database-supported applications in a fast and effective way. Based upon PostgreSQL and Java, it runs on almost all popular operating systems and platforms. Its low resource requirements, the decentralized structure and its robustness make it an ideal tool to develop distributed business applications which run on notebooks or huge servers, without bothering the developers with the complex topics of syncing databases.

MyTISM has been used in many applications for years already and has proven to be performant, robust and due to its simple structure easy to manage. The range of applications goes from industry data gathering and machine control up to ERP and DMS systems.

Contrary to the current trend we don´t rely on pure Web Interfaces but deliver a full fledged Java Swing client, started via WebStart, which sports the ususal comfort of a native application including integration into the operating system. We do have a plugin to support a widely supported Web Container, namely Grails, which warrants a fast and efficient way for developing Web applications.

What´s the advantage to the conventional approach?

You get all the infrastructure necessary for a database application out of the box, including many mandatory features, e.g.:

By now there are already quite some frameworks which provide some of these; on the Java platform almost all of them seem to concentrate upon a web-based approach, mostly 2-tier, namely database and web application server. MyTISM is different right from the start: the backend runs in its own JVM which shields the database from the client, whereas "client" can be either the Swing GUI or a Web Application Server or a specially designed application.

The Swing GUI "Solstice" is both client and a development and prototyping environment, with which you can quickly create an internal application. Changes to forms and reports can be made effortlessly and be tested right away, so the turn-around times are extremely short.

The same can be said about the Web Framework "Grails", which we connect to MyTISM using a self-written plugin. The turn-around times are equally short: normally a reload of the page in the browser shows the results of any changes right away. There are no typical "compile, redeploy" cycles as is usual in well-known J2EE containers.

How does MyTISM differ from other frameworks?

The 3-tier architecture mentioned above has quite some advantages because it can hide the database completely from the application. Thus it knows about every single update in the database. That helps implementing effective caches, writing event distribution mechanisms, observing objects and much more. We understood these possibilities very early and made them useable for you:

Services

That´s code which runs in the server context. It can be classes but also scripts which scan for mail, export or import data, etc. One real-world example is the stock-recalculation process of our ERP, which continuously recalculates values so they are available instantly for common reporting tasks.

Events

Every service can listen to events from the kernel. These can be e.g. changes to specific objects. Due to sophisticated filter-implementation this works on the client (Solstice, Grails) also; the API is the same.

Alarms

This is a special functionality, with which every user that has the necessary permissions may define conditions for triggering an alarm. A triggered alarm can trigger notifications or scripts which can act appropriately. The way such an alarm is triggered depends on its kind, which may be one of:

Logs

Every data change in the system issues log entries which are written into the database, too. That way we can ask for specific object changes in the past, to enable "time travel" of objects or just a thorough documentation of an object state at a given point in time.

Synchronization

Everyon knows the problem: If you do anything with "the net" or have multiple branch offices, the question how to keep the data in sync automatically arises. MyTISM features a built-in and for the programmer almost completely transparent synchronization, which reacts extremely robust against offline situations, which tailors it for operation during fairs, usage by sales representants at a customer´s site or similar scenarios.

Due to the extremely low resource requirements you can install such a server on a notebook or a small, portable server. As an alternative you can also set up a rented, small virtual server in the web together with Grails, which will continue to work even if there´s no connection to the company server, if, let´s say, the leased line broke down. Such a web-server can also be taken along to presentations or training events in a hotel or at a fair location, thus being independent of infrastructure on site.

Not to forget the advantages for backups, which are far more easy to do: a "node" as we call such a synchronizing server has always an up-to-date database as long as it is connected to the other nodes. In case any server fails you can easily replace it or switch over the clients manually, e.g. via DNS.

Socket Protocol

We developed a proprietary protocol for connecting the clients with the backend featuring:

Internationalization/Localization (I18n/L10n)

We extended the well known Java concept of ResourceBundles, so that the complete user interface may be tailored for different languages and local particularities easily. The support of unicode built into Java allows for charsets out of the usual ASCII-compatible languages.

In distinction from the original, our own L10n system supports key- and bundle-changes during runtime; all bundles are kept in the database. Sophisticated caching and a fallback system warrants a high performance, easy management and extremely short turn-around cycles.

Application examples

Here are some examples of custom applications which have been implemented using MyTISM: