Flexible Prozessabläufe über mehrere Plattformen

Feature | 23. August 2004 von admin 0

Jobs zeitgesteuert zu verarbeiten bedeutet, dass Tasks und Hintergrundprozesse zu genau der Zeit gestartet werden, die durch Regeln und äußere Bedingungen vorgegeben ist. Ereignisgesteuerte Echtzeit-Scheduler automatisieren die Hintergrundverarbeitung und verwalten die Systemlast über den gesamten Tag – gleichgültig, wie viele Kundenanfragen eingehen. Man bezeichnet das auch als asynchrone Verarbeitung. Diese Arbeit wird von einem Scheduler geleistet: Er bewirkt, dass eine Task zu einem bestimmten Zeitpunkt oder ausgelöst durch ein (externes) Ereignis ausgeführt wird. Damit erleichtert er es beispielsweise Internet-Shops, unverzüglich auf Kundenanfragen zu reagieren.
Die offene Java-Spezifikation J2EE 1.4 wird aufgrund ihrer Skalierbarkeit und der Größe der Entwicklergemeinde mehr und mehr zu einer interessanten Plattform für die zeitgesteuerte Jobverarbeitung, insbesondere da sie mittlerweile von SAP NetWeaver als Option angeboten wird. Die Java2 Platform Enterprise Edition (J2EE) ist für die Entwicklung mehrschichtiger Unternehmensanwendungen geeignet. Sie vereinfacht diese Anwendungen, indem sie sie auf die Grundlage standardisierter, modularer Komponenten setzt, umfassende Dienste bereitstellt und viele Details des Anwendungsverhaltens automatisch verarbeitet – ohne großen Programmieraufwand. Viele Funktionen wurden von der Java 2 Platform, Standard Edition, (J2SE) übernommen, die Spezifikation umfasst jedoch auch die Funktionalität Enterprise Java Beans (EJB), XML-Technologie und anderes.

Scheduler für einzelne Betriebssysteme: mangelnde Skalierbarkeit

Alles in einer JVM

Alles in einer JVM

Die Chance, Jobs in Java zeitgesteuert verarbeiten zu können, stellt den Scheduler andererseits vor neue funktionelle und technische Herausforderungen. Die meisten Betriebssysteme bringen einen einfachen Scheduler mit, der in der Lage ist, Tasks nach einem festen Zeitplan auf der Ebene des entsprechenden Betriebssystems auszuführen. So unterstützt der Microsoft-Taskplaner lediglich Windows-Tasks. Prinzipiell können diese herkömmlichen Betriebssystem-abhängigen Scheduler (OS- oder Operating-System-Scheduler) auch Java-Tasks zeitgesteuert verarbeiten – indem sie synchrone Aufrufe an den Java-Speicher schicken. Sie sind jedoch zu einfach ausgelegt, um komplexe Jobketten verwalten zu können, und eignen sich nicht für die Arbeitsweise, mit der Java-Tasks gestartet werden. Dies wird klar, wenn man sich vor Augen führt, wie OS-Scheduler arbeiten: Sie starten für jeden Task eine Java Virtual Machine (JVM), einen Container, der in Java geschriebene Programme interpretiert und ausführt. Mittlerweile gibt es eine JVM für jedes Betriebssystem. Ein OS-Scheduler lässt sich jedoch nur schwer skalieren. Jede VM (Virtual Machine) verfügt über einen festgelegten Speicher-Overhead für die VM selbst, für Systemklassen und für reservierten Speicherplatz. Darüber hinaus benötigt die VM einige Zeit zum Starten, bevor sie zum Initiieren eines Jobs verwendet werden kann. Schließlich müssen die Jobdefinitionen im Java-Code manuell an jedes System verteilt werden, in dem der Job ausgeführt werden soll. Diese Overheads sind es, die OS-Scheduler für alle Aufgaben, die über einfachste Java-Systemlasten hinausgehen, ungeeignet machen. Für solche Funktionen sind plattformunabhängige Java-Scheduler besser geeignet.

Anforderungen an Java-Scheduler

Ein Java-Scheduler sollte in der Lage sein, auf alle Komponenten zuzugreifen, die für J2SE und J2EE geschrieben wurden. Er sollte eine Programmierschnittstelle (Application Programming Interface, API) mitbringen, damit Java-Komponenten auf das Jobverarbeitungssystem zugreifen können, sowie eine Java-spezifische Laufzeitumgebung für Jobs, die in Java geschrieben wurden. Viele der unter J2SE und den zugehörigen APIs entwickelten Anwendungen benötigen eine Jobsteuerung – auch darauf sollte ein Java-Scheduler zugreifen können.

Verkettung von SAP- und Nicht-SAP-Prozessen

Verkettung von SAP- und Nicht-SAP-Prozessen

Zahlreiche Java-Anwendungen verwenden Dateien vom Mainframe oder aus dem System des Geschäftspartners, oder sie erstellen Berichte aus einer Datenbank zwecks Weiterverteilung. Für die Integration von Java-Anwendungen in andere Systeme, die mit Dateien arbeiten, werden daher Java-Scheduler benötigt. Allerdings gibt es einige J2EE-Komponententypen, die nicht mit Dateien arbeiten können. J2EE 1.3 wurde auf J2EE 1.4 erweitert und beinhaltet jetzt auch Web-Services und Verwaltung. Die Spezifikation umfasst nun Web-Services wie API für XML Registries (JAXR) sowie Verwaltungstools wie Java Management Extensions (JMX). Alle mit Hilfe von diesen Komponenten und APIs entwickelten Tasks müssen von einem Java-Scheduler gestartet und überwacht werden. Der Scheduler agiert als Client für den erzeugten Service. Damit diese Tasks so effizient wie möglich ausgeführt werden, sollte der Scheduler zumindest teilweise in Java geschrieben worden sein. Darüber hinaus sollte er in der Lage sein, auf Komponenten zuzugreifen, die in anderen Sprachen als Java entwickelt wurden, und er sollte die Aktivitäten zwischen Java- und Nicht-Java-Tasks koordinieren. In einer Umgebung, die eine oder mehrere mySAP-Lösungen oder einen SAP Web Application Server (SAP WAS) umfasst, müssen sowohl Tasks auf der Ebene des Betriebssystems, beispielsweise Unix-Tasks, als auch SAP-spezifische Tasks koordiniert werden.

Java-Scheduler-Tools können keine Routinen aufbauen

J2EE bietet nur einfache Timer, die den Anforderungen der asynchronen Verarbeitung, nämlich der Fähigkeit, sofort auf Kundenanfragen reagieren zu können, nicht gerecht werden. Es fehlen Standardmethoden zur verteilten Verarbeitung großer Systemlasten, darüber hinaus gibt es auch keine geeignete Ausnahmeverarbeitung.
Die J2EE-Plattform verfügt jedoch über eine grundlegende asynchrone Fähigkeit: Die Clients senden oder veröffentlichen Nachrichten, die zum Zeitpunkt ihres Auftretens, verarbeitet werden können. Aber die einfachen Funktionalitäten der Spezifikation Enterprise Java Beans (EJB) 2.1 von J2EE 1.4 für die asynchrone Verarbeitung, die Schnittstelle Java Message Service (JMS) sowie Java Message-Driven Beans (MDB), berücksichtigen keine geplante Zeitsteuerung. Mit Hilfe von EJB lassen sich serverseitig verteilte, portierbare Anwendungen entwickeln und Web-Services- Anwendungen bereitstellen. Die Funktionalität fordert vom Timer-Service eine regelmäßige oder aktionsabhängige Benachrichtigung an. MDBs, die in der Spezifikation EJB 2.1 enthalten sind, treten mit Nachrichtenwarteschlangen und Services, zum Beispiel aus SAP NetWeaver, in Interaktion: Sie reagieren sofort auf Meldungen, die von diesen Services übermittelt werden.
SAP NetWeaver wurde als umfassende Anwendungsplattform für die Integration bestehender SAP-Lösungen konzipiert. Der darin enthaltene SAP WAS ist kompatibel mit J2EE 1.3 mitsamt den entsprechenden APIs, JMS und EJB 2.0. SAP NetWeaver unterstützt zudem MDB als Teil der Spezifikation J2EE 1.3, bisher jedoch kein Scheduling für J2EE 1.4. Der herkömmliche, im SAP Computer Center Management System (CCMS) integrierte Scheduler kann überhaupt nicht auf Java-Code zugreifen.

Externe Java-Scheduler

CronacleBeans und J2EE

CronacleBeans und J2EE

Externe Scheduler sind erforderlich, um zeit- und ereignisbasierte, vom System initiierte Aktivitäten in Java- und J2EE-Umgebungen zu starten, zu skalieren und verteilt zu verarbeiten. Für Anwendungen auf der Basis von SAP NetWeaver, die eine unternehmensweit zeitgesteuerte Verarbeitung von Java-, J2EE- und SAP-Jobs erfordern, bietet der asynchrone Java-Scheduler CronacleBeans von Redwood eine ideale Ergänzung.

CronacleBeans und heterogene Systeme

CronacleBeans und heterogene Systeme

Im Gegensatz zu OS-Schedulern lassen sich Java-Scheduler plattformübergreifend einsetzen, denn Java wird innerhalb einer Virtual Machine auf der Betriebssystemplattform ausgeführt. Übersteigt nun die Arbeitslast ein bestimmtes Limit und muss verteilt oder isoliert werden, dann nutzt ein externer Java-Scheduler so viele Virtual Machines, wie für die Verarbeitung der Anforderungen nötig sind. Ein externer Java-Scheduler verfügt über einen Connector oder in Java entwickelte Komponenten, die Java- und Nicht-Java-Tasks (beispielsweise aus SAP BW, dem Betriebssystem oder einem ERP-System) gleichermaßen starten.

Zentrales Repository

Zentrales Repository

Externe Java-Scheduler bilden einen unternehmensweit zentralen Steuerungspunkt, der für Transparenz der Geschäftsprozesse über Anwendungen und Plattformen hinweg und damit auch für eine bessere Abstimmung zwischen IT und Geschäftsprozessen sorgt.

Anjo De Heus

Anjo De Heus

Tags:

Leave a Reply