Was ist MyTISM?

MyTISM ist ein Framework, mit dem man schnell und effektiv Datenbank-gestützte Anwendungen entwickeln kann. Basierend auf PostgreSQL und Java läuft es auf fast jedem populären Betriebssystem. Seine geringen Ressourcenansprüche, die dezentrale Struktur und seine Robustheit machen es zum idealen Werkzeug, um verteile Business-Anwendungen zu entwickeln, die auf Notebooks oder auch auf großen Servern laufen und auf diese Weise vielen Situationen gerecht werden, ohne den Programmierer mit den komplexen Details einer Synchronisation der Datenbestände zu beschäftigen.

MyTISM ist bereits in etlichen Anwendungen seit Jahren im Einsatz und hat dort gezeigt, daß es schnell, robust und durch seine einfache Struktur leicht zu administrieren ist. Die derzeitige Anwendungspalette geht von Industrie-Anwendungen zur Datenerfassung und Maschinensteuerung bis hin zum ERP- ("Wawi") oder DMS-System.

Entgegen dem derzeitigen Trend setzen wir nicht auf reine Web-Oberflächen, sondern bieten einen vollwertigen Java Swing-Client, der via WebStart gestartet wird und den gewohnten Bedienkomfort einer nativen Anwendung incl. Einbettung in das jeweilige Betriebssystem mitbringt. Zusätzlich bieten wir natürlich ebenfalls eine Anbindung eines Web-Containers an, der auf einer weit verbreiteten Technologie (Grails) eine schnelle und effiziente Entwicklung etwaiger Web-Anwendungen garantiert.

Wo ist der Vorteil gegenüber der konventionellen Programmierung?

Sie bekommen alle für eine Datenbank-Anwendung notwendige Infrastruktur komplett an die Hand und müssen sich um viele Details gar nicht erst kümmern, wie zum Beispiel:

  • Bauen von Tabellen, Indizes, Basis-Abfragen
  • Backend-Protokoll bei 3-tier
  • Verteilung und Installation der Anwendung
  • Grafische Benutzeroberfläche
  • Rechteverwaltung
  • Reports

Mittlerweile gibt es einige Frameworks, die Teile davon abdecken; im Java-Umfeld sind es fast ausschließlich web-basierte Ansätze, die meist als 2-tier, also Datenbank und Web-Applikationsserver ausgelegt sind. MyTISM ist schon im Ansatz anders: Der Backend-Server ist eine eigene JVM, die zwischen der Datenbank und der Anwendung Daten austauscht, wobei "Anwendung" sowohl die Swing-GUI als auch ein Web-Applikationsserver als auch speziell entwickelte andere Applikationen sein können.

Die Swing-GUI "Solstice" ist sowohl Client als auch Entwicklungs- und Prototyping-Umgebung, mit der aber auch schnell einfache, interne Anwendung realisiert werden können. Dabei können Änderungen an Reports oder Formularen schnell durchgeführt und sofort getestet werden; die Turn-Around-Zeiten sind extrem kurz.

Gleiches gilt für die Anbindung an das Web-Framework "Grails", welches wir mit Hilfe eines Plugins an MyTISM anbinden. Auch hier sind die Turn-Around-Zeiten angenehm kurz, normalerweise reicht ein einfaches Reload im Browser. Keine "Compile, redeploy"-Zyklen, wie man sie von klassischen J2EE-Containern kennt.

Was unterscheidet MyTISM von anderen Frameworks?

Die oben erwähnte 3-tier Architektur bringt auch andere Vorteile, weil ein Backend-Prozess die Datenbank komplett vor der Anwendung versteckt und damit über alle Änderungen der Daten informiert ist. Damit kann man ohne weiteres effiziente Caches implementieren, Ereignisse auslösen, Objekte überwachen und vieles mehr. Wir haben diese Möglichkeiten erkannt und für Sie nutzbar gemacht:

Dienste

Dienste sind zunächst einfach nur Code, der im Server-Kontext laufen kann. Das können eigene Klassen, aber auch eigene Scripts sein, die Mails abholen, Dateien exportieren oder importieren etc. So ist z.B. unser ERP in der Lage, die Lager-Rekalkulation ständig im Hintergrund zu erledigen, um so für Reports ständig aktuelle Werte parat zu haben.

Events

Jeder Dienst kann sich über laufende Ereignisse im Kernel, wie z.B. bestimmte Änderungen an Daten, informieren lassen. Dank einer ausgeklügelten Filtermechanik kann man diese Events auch auf dem Client (=Solstice, Grails) genauso nutzen, die API ist die selbe.

Alarme

Ein von uns entwickelter Mechanismus erlaubt es Benutzern, welche die erforderlichen Rechte besitzen, Bedingungen zu definieren, bei deren Eintreten ein Alarm ausgelöst werden soll. Ein solcher Alarm kann dann Benachrichtigungen oder auch Scripts anstoßen, die darauf reagieren. Wann ein solcher Alarm ausgelöst wird, ist von der Art abhängig. Es gibt:

  • explizite Alarme: Deren Auslösedatum kommt von einer externen Entität und sie lösen einfach zu einer vorgegeben Zeit aus.
  • BO-basierte Alarme: Hier wird eine Menge von BOs, d.h. Business Objects, (z.B. eine Marketingmaßnahme) definiert, die ein Datum "mitbringen", zu dem irgendetwas passieren soll (Nachricht an Vertrieb o.ä.).
  • Bedingte Alarme: Basierend auf einer Menge von BOs (z.B. Produktionsauftrag), wird der Alarm ausgelöst, wenn ein Auslösekriterium erfüllt ist (z.B. Fertigmeldung wird auf "true" gesetzt, oder Änderungen des Zieldatums).
  • Wiedervorlagen: Wieder eine Menge von BOs (z.B. unbezahlte Rechnungen, deren Beträge nicht abgebucht werden können), bei denen die definierten Auslösekriterien über einen definierten Zeitraum nicht eingetreten sind (z.B. Bezahlung durch den Kunden).

Logs

Jede Änderung im System erzeugt Log-Einträge, die ebenfalls in die Datenbank geschrieben werden. Damit ist es möglich, jederzeit die Historie eines Objekts zu erfragen und ggfs. Ereignisse, die schon lange passiert sind, noch einmal aufzubereiten, z.B. um Objekte wieder in einen früheren Zustand zu versetzen ("Zeitreise"), oder auch um den Zustand eines Objekts zu einem bestimmten Zeitpunkt zweifelsfrei zu dokumentieren.

Synchronisation

Jeder kennt das Problem: Wenn man irgendetwas mit "dem Internet" tut, oder einfach mehrere Standorte zu verwalten hat, kommt die Frage auf, wie man die Daten überall synchron hält. MyTISM hat eine eingebaute und für den Programmierer weitgehend transparente Synchronisation, die extrem robust auf temporäre Offline-Situationen reagiert, und damit auch Messebetrieb, den Vertreter vor Ort beim Kunden und ähnliche Szenarien ohne Probleme löst.

Dank der für heutige Verhältnisse winzigen Ressourcenanforderungen kann man einen solchen Server auch auf einem Notebook oder auf einem dedizierten, kleinen, transportablen Server installieren. Eine weitere Alternative wäre ein kleiner virtueller Server im Web zusammen mit Grails, der auch dann noch weiterläuft, wenn die firmeninterne Standleitung ausgefallen ist. Auf diesem Weg braucht man keine Datenimport- oder -Exportscripte, z.B. für den Webshop, mehr zu schreiben; alle Daten werden transparent zwischen den Servern synchronisiert. Einen solchen Webserver kann man aber auch zu Präsentations- oder Schulungszwecken einfach mit zur Messe oder ins Tagungshotel mitnehmen und ist somit unabhängig von dortiger Infrastruktur.

Nicht zu vergessen ist, daß damit natürlich auch die Backups viel einfacher durchgeführt werden können - eine "Node", wie wir einen solchen synchronisierenden Server nennen, ist, sofern er mit anderen Nodes verbunden ist, immer aktuell. Im Falle eines Falles kann man einen ausgefallenen Server auch schnell durch einen anderen ersetzen oder einfach mittels DNS umschalten.

Socket-Protokoll

Wir setzen bei der Kommunikation der Clients mit dem Backend auf ein proprietäres Protokoll, mit folgenden Eigenschaften:

  • Sichere Verbindung mittels TLSv1, konfigurierbar in Schlüssellänge und Algorithmus
  • Speziell angepaßte Serialisierung der Objekte führt zu kompakten Datenströmen
  • Komprimierung der Daten mittels zlib, ebenfalls konfigurierbar
  • Komplett passiv, der Server baut von sich aus keine Rückverbindung zum Client auf, was Firewall-Setups erheblich vereinfacht
  • Ports und Binding komplett konfigurierbar, so daß man viele MyTISM-Instanzen nebeneinander auf dem selben Server installieren kann

Internationalisierung/Lokalisierung (I18n/L10n)

Wir haben das von Java bekannte Konzept der ResourceBundles ein wenig ausgebaut, so daß die komplette Benutzeroberfläche konsequent für verschiedene Sprachen und lokale Besonderheiten angepaßt werden kann. Da die Unicode-Unterstützung ohnehin Teil von Java ist, funktioniert das auch mit Zeichensätzen außerhalb des ASCII-kompatiblen Sprachraums.

Anders als das Original unterstützt unser L10n-System Änderungen der Schlüssel und Bundles zur Laufzeit; die Bundles werden direkt in der Datenbank abgelegt. Dabei sorgen ausgeklügeltes Caching und ein Fallback-System für eine hohe Geschwindigkeit, eine einfache Administration und extrem kurze Turnaround-Zeiten.

Anwendungsbeispiele

Hier einige Beispiele für Anwendungen, die bereits mit MyTISM realisiert worden sind:

  • Dokument-Management-System
  • Webbasierte e-Learning-Plattform
  • Kassensystem
  • Korrespondenz-Management-System
  • Warenwirtschaftssystem
  • Webbasierte Hotelvermittlung
  • Webbasiertes Veranstaltungs-Management
© 2008-2017 OAshi S.à r.l.  •  Impressum  •  English Grails-based  MyTISM-based