07.05.2013 Aufrufe

PTA_SchnittstellenProgrammierung_Einfuehrung.pdf - PTA GmbH

PTA_SchnittstellenProgrammierung_Einfuehrung.pdf - PTA GmbH

PTA_SchnittstellenProgrammierung_Einfuehrung.pdf - PTA GmbH

MEHR ANZEIGEN
WENIGER ANZEIGEN

Erfolgreiche ePaper selbst erstellen

Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.

seit 1969<br />

Beratung<br />

Organisation<br />

Softwareentwicklung<br />

Schnittstellenprogrammierung<br />

Schnittstellenprogrammierung


1. Zielsetzung<br />

2. Schnittstellen<br />

2.1 Definition Schnittstellen<br />

Schnittstellprogrammierung<br />

Gliederung<br />

2.2 Warum überhaupt DV-Schnittstellen ?<br />

2.3 Schnittstellen -arten bzw. –typen<br />

2.4 Praktische Umsetzung<br />

2.5 Mögliche Probleme<br />

2.6 Erfordernis eigener Technik<br />

12.02.2007 <strong>PTA</strong> <strong>GmbH</strong>, Unternehmensberatung 2


Schnittstellprogrammierung<br />

Überblick<br />

3. Schnittstellenprogrammierung<br />

3.1 Definition<br />

3.2 Übersicht<br />

3.3 Problemlösungen<br />

3.3.1 Steuerung von Jobs<br />

3.3.1.1 Definition Job<br />

3.3.1.2 Job-Step oder Step = Job<br />

3.3.1.3 Grundlagen der Steuerung<br />

3.3.1.4 Single Point of Service<br />

3.3.1.5 Wiederanlauf von Jobs<br />

12.02.2007 <strong>PTA</strong> <strong>GmbH</strong>, Unternehmensberatung 3


Schnittstellprogrammierung<br />

Überblick<br />

3.3.2 Steuerung und Plausibilisierung<br />

3.3.2.1 Steuerung Jobablauf und Recovery<br />

3.3.2.2 Parameter für Schnittstellenprogramme<br />

3.3.2.3 Strukturierte Laufergebnisse<br />

3.3.2.4 Regeln für Plausibilisierung<br />

3.3.3 Protokollierung – Monitoring<br />

3.3.3.1 Protokoll-Medium<br />

3.3.3.2 Protokoll-Einträge<br />

3.3.3.3 Protokoll-Sprache<br />

3.3.3.4 Protokollierungs-Tiefe<br />

3.3.3.5 Eskalierung<br />

3.3.3.6 Attribute<br />

3.3.3.7 Protokollbeispiel<br />

3.3.3.8 Monitoring<br />

12.02.2007 <strong>PTA</strong> <strong>GmbH</strong>, Unternehmensberatung 4


Schnittstellprogrammierung<br />

Überblick<br />

3.3.4 Fehlerbehandlung<br />

3.3.4.1 Prinzip in Programmen<br />

3.3.4.2 Regeln, Standardisierung/Normung<br />

3.3.4.3 Eskalierung von Fehlern<br />

3.3.4.4 Protokollierung von Fehlern<br />

3.3.5 Fehlerhafte Daten<br />

3.3.5.1 Speicherung<br />

3.3.5.2 (Manuelle) Korrektur<br />

3.3.5.3 Korrekturlauf<br />

3.3.6 Transaktionsverarbeitung<br />

3.3.6.1 Definition Transaktion<br />

3.3.6.2 Grenzen des Transaktionshandlings<br />

12.02.2007 <strong>PTA</strong> <strong>GmbH</strong>, Unternehmensberatung 5


3.3.7 Besonderheiten<br />

3.3.8 Wiederanlauf nach Störung<br />

3.3.8.1 Recovery-Maßnahmen<br />

3.3.8.2 Plan für “GaU”<br />

3.9 Betriebshandbuch<br />

Schnittstellprogrammierung<br />

Überblick<br />

12.02.2007 <strong>PTA</strong> <strong>GmbH</strong>, Unternehmensberatung 6


Schnittstellprogrammierung<br />

Überblick<br />

4. Schnittstellen - Gestern, heute, morgen<br />

4.1 Steuerung und Verarbeitung in Quell- und Zielsystem<br />

4.2 Steuerung in eigenem Server – Verarbeitung in Quell- und Zielsystem<br />

4.3 Steuerung und Teile der Verarbeitung in eigenem Server<br />

4.4 Ausblick<br />

5. Tipps<br />

12.02.2007 <strong>PTA</strong> <strong>GmbH</strong>, Unternehmensberatung 7


Schnittstellprogrammierung<br />

1. 1. Zielsetzung<br />

• Kenntnisse vermitteln, auffrischen und vertiefen<br />

• Hilfe zur Strukturierung des Sachverhaltes<br />

• Wege finden von der Theorie zur Praxis<br />

• Tipps für praktische Vorgehensweise, Bewertung und Einordnung<br />

• Gemeinsames Verständnis (Vereinheitlichung der Denkweise in<br />

Teams)<br />

• Was wird nicht behandelt:<br />

– Programmiersprachen<br />

– Spezielle Schnittstellen-Tools<br />

– Standardsoftware, z.B. SAP<br />

– Spezielle Schnittstellentechniken, z.B. Hardwareschnittstellen<br />

12.02.2007 <strong>PTA</strong> <strong>GmbH</strong>, Unternehmensberatung 8


Schnittstellprogrammierung<br />

2.1 Definition Schnittstellen<br />

• Beispiele:<br />

Mensch Maschine, Analoges Signal digitales Signal,<br />

DV-System DV-System, Hardware Software.<br />

• Duden: „EDV: Verbindungsstelle zweier Geräte oder Anlagenteile“.<br />

• Internet-Suchmaschinen: Zwischen 200.000 und 400.000 Treffer.<br />

• Literatur: Es gibt keine zugängliche Literatur zu diesem Thema.<br />

• Eigene Definition einer DV-Schnittstelle:<br />

Austausch von Informationen über definierte Grenzen zwischen<br />

Systemen, die getrennt voneinander vorhanden sind. Die Grenze<br />

ist durch Protokoll(e) definiert. Es ist immer mindestens ein Eingang<br />

und mindestens ein Ausgang vorhanden.<br />

12.02.2007 <strong>PTA</strong> <strong>GmbH</strong>, Unternehmensberatung 9


Schnittstellprogrammierung<br />

2.1 Definition Schnittstellen<br />

• Wir betrachten im Rahmen dieser Grundlagen Schnittstellen auf der<br />

Ebene Austausch von Informationen auf Applikationsebene.<br />

Applikation A Schnittstellen Applikation B<br />

•<br />

•<br />

•<br />

•<br />

•<br />

Netz-Hardware Netz-Hardware<br />

12.02.2007 <strong>PTA</strong> <strong>GmbH</strong>, Unternehmensberatung 10<br />

•<br />

•<br />

•<br />

•<br />


• Informationen:<br />

– ASCII-Files<br />

– Office-Dokumente<br />

– HTML-Dokumente<br />

Schnittstellprogrammierung<br />

2.1 Definition Schnittstellen<br />

– Bit-orientierte Files - z.B. Bilder, Exe-Files<br />

– EBCDIC-Files (Großrechner)<br />

– XML-Files<br />

– usw.<br />

• XML hat den Vorteil, dass man z.B. Datenstrukturen erweitern kann,<br />

nicht alle Schnittstellen ändern muss und trotzdem die Daten<br />

weiterleiten kann.<br />

12.02.2007 <strong>PTA</strong> <strong>GmbH</strong>, Unternehmensberatung 11


Schnittstellprogrammierung<br />

2.2 Warum überhaupt DV-Schnittstellen ?<br />

• Weil man Informationen von einem System in anderes System<br />

übernehmen will bzw. muss.<br />

• Technische Gründe:<br />

– Getrennte Rechnersysteme.<br />

• Logische Notwendigkeiten:<br />

– Getrennte Software-Systeme, gewollt und ungewollt (evtl. auf<br />

gleichem Rechnersystem).<br />

• Im Regelfall kennt ein System nicht die Geschäftsprozesse mit den<br />

dahinter liegenden Informationsstrukturen des anderen Systems.<br />

Ausnahme sind z.B. Schnittstellen des gleichen Systemstyps, z.B.<br />

SAP-System SAP-System.<br />

12.02.2007 <strong>PTA</strong> <strong>GmbH</strong>, Unternehmensberatung 12


Schnittstellprogrammierung<br />

2.2 Warum überhaupt DV-Schnittstellen ?<br />

• Finden Zugriffe direkt auf die Daten eines anderen (Teil)-Systems<br />

statt, und sind die Geschäftsprozesse und Informationsstrukturen<br />

bekannt, spricht man allgemein von einem “integrierten System”.<br />

12.02.2007 <strong>PTA</strong> <strong>GmbH</strong>, Unternehmensberatung 13


Schnittstellprogrammierung<br />

2.3 Schnittstellen -arten bzw. –typen<br />

Unterscheidung von Arten und Typen nach folgenden Kriterien:<br />

• Führendes System / gleichberechtigte Systeme.<br />

– Es gibt ein führendes System.<br />

z.B. ist das Löschen eines Kunden nicht in abhängigen System<br />

zugelassen.<br />

– Zwei oder mehrere gleichberechtigte Systeme.<br />

Jedes System darf z.B. Kunden ändern, anlegen und löschen.<br />

• Komplette Datenübernahme oder nur Veränderungen.<br />

– Es werden z.B. bestimmte Tabellen immer komplett übernommen.<br />

– Es werden nur die geänderten Daten übernommen<br />

(Änderungen, Löschungen, Neuanlagen).<br />

12.02.2007 <strong>PTA</strong> <strong>GmbH</strong>, Unternehmensberatung 14


Schnittstellprogrammierung<br />

2.3 Schnittstellen -arten bzw. –typen<br />

Unterscheidung von Arten und Typen nach folgenden Kriterien:<br />

• Einzel-Entität oder prozessorientiert.<br />

– Es wird in einer Schnittstelle nur eine Entität, z.B. „Kunden“ bearbeitet.<br />

– Mehrere Entitäten werden in einer Schnittstelle bearbeitet, d.h. es<br />

werden z.B. ganze Geschäftsprozesse ausgelöst.<br />

• Permanenter Online-Betrieb oder „Batch-Fenster“ möglich.<br />

– 24 Stunden Online-Betrieb der Datenbank.<br />

– Online-freie Zeit (Batch-Fenster) täglich möglich.<br />

12.02.2007 <strong>PTA</strong> <strong>GmbH</strong>, Unternehmensberatung 15


Schnittstellprogrammierung<br />

2.3 Schnittstellen -arten bzw. –typen<br />

• Je Aktion eigene Datei oder Zusammenfassung von Daten.<br />

– Jede Aktion im Quellsystem, die schnittstellenrelevant ist, erzeugt eine<br />

Schnittstellendatei.<br />

– Viele Aktionen im Quellsystem werden zu einer Schnittstellendatei zusammengefasst.<br />

• Steuerungs- und Verarbeitungs-Orte.<br />

– Steuerung und Verarbeitung nur in Quell- und Zielsystem.<br />

– Steuerung in eigenem Server, Verarbeitung in Quell- und Zielsystem.<br />

– Steuerung und Teile der Verarbeitung in eigenem Server.<br />

12.02.2007 <strong>PTA</strong> <strong>GmbH</strong>, Unternehmensberatung 16


Schnittstellprogrammierung<br />

2.4 Praktische Umsetzung<br />

• Führendes System / gleichberechtigte Systeme.<br />

– z.B. Kundendaten.<br />

Projekt: „Energiebedarfsprognose“.<br />

Branche: Stromhandel.<br />

Hier werden die Kundendaten in einem SAP/R3-Umfeld durch den<br />

Bereich erfasst, der den ersten Kundenkontakt hat. Im Regelfall ist dies<br />

der Vertrieb. Nur im SAP-Umfeld werden Kunden neu angelegt und evtl.<br />

auch wieder gelöscht. In der Energiebedarfsprognose werden keine<br />

neuen Kunden erfasst oder welche gelöscht.<br />

– z.B. Adressen von Mitgliedern.<br />

Projekt: „Adressverwaltung“.<br />

Branche: Partei.<br />

Jede Kreisgeschäftsstelle kann in entkoppelten Systemen Mitglieder<br />

erfassen, Adressen ändern und löschen. Auch in der Bundesgeschäftsstelle<br />

ist dies möglich. Dort werden dann auch die Adressen aller Mitglieder<br />

nochmals zentral geführt. Hohe technische Komplexität und Aufwand<br />

Dubletten zu erkennen und zu korrigieren.<br />

12.02.2007 <strong>PTA</strong> <strong>GmbH</strong>, Unternehmensberatung 17


Schnittstellprogrammierung<br />

2.4 Praktische Umsetzung<br />

• Komplette Datenübernahme oder nur Veränderungen.<br />

Projekt: „Energiebedarfsprognose“.<br />

Branche: Stromhandel.<br />

– z.B. Netze (Grids).<br />

Täglich wurden alle in einem anderen System enthaltenen Netze und<br />

ihre Hierarchie komplett übernommen.<br />

– z.B. 1/4-stündliche Messdaten.<br />

Hier wurden nur die Messreihen übernommen, die sich in einem<br />

bestimmten Zeitraum geändert hatten oder neu hinzukamen.<br />

• Einzel-Entität oder prozessorientiert<br />

Projekt: „Energiebedarfsprognose“.<br />

Branche: Stromhandel.<br />

– siehe oben - Einzel-Entität = 1/4-stündliche Messreihen<br />

– Änderungen in Netzen löst z.B. den Prozess Korrektur Kundendaten<br />

und Korrekturen in bereits erstellten Bedarfsprognosen aus.<br />

12.02.2007 <strong>PTA</strong> <strong>GmbH</strong>, Unternehmensberatung 18


Schnittstellprogrammierung<br />

2.4 Praktische Umsetzung<br />

• Permanenter Online-Betrieb oder „Batch-Fenster“ möglich<br />

– z.B. 1/4-stündliche Messdaten.<br />

Projekt: „Energiebedarfsprognose“.<br />

Branche: Stromhandel.<br />

Das System ist im dauernden Online-Betrieb. Da die Messdaten<br />

sofortigen Einfluss aus die Prognosen haben, muss in der<br />

Prognoseerstellung dies berücksichtigt werden.<br />

– z.B. Erteilte Patente.<br />

Projekt: „Erfindervergütungen“.<br />

Branche: Pharma.<br />

Das System muss nur von 6.00 Uhr bis 22.00 Uhr zur Verfügung<br />

stehen, deshalb war die Schnittstelle von einem System „Patente“ im<br />

Batch-Fenster für Sicherungen und Batch-Läufe in dieser Zeit<br />

durchführbar.<br />

12.02.2007 <strong>PTA</strong> <strong>GmbH</strong>, Unternehmensberatung 19


Schnittstellprogrammierung<br />

2.4 Praktische Umsetzung<br />

• Je Aktion eigene Datei oder Zusammenfassung von Daten<br />

– Keine eigene Projekterfahrung.<br />

So funktionieren jedoch viele Internet-Projekte. Im Client werden die<br />

Informationen je Aktion (z.B. Bestellung abschicken) zusammengefasst<br />

und zum Server übertragen, um dort sofort ausgeführt zu werden. Man<br />

erhält dann z.B. eine Bestellnummer zurück.<br />

– z.B. Erteilte Patente.<br />

Projekt: „Erfindervergütungen“.<br />

Branche: Pharma.<br />

Alle in einer definierten Zeit neu erteilten Patente werden in einer Datei<br />

zusammengefasst und in das System „Erfindervergütungen“ übernommen.<br />

12.02.2007 <strong>PTA</strong> <strong>GmbH</strong>, Unternehmensberatung 20


Schnittstellprogrammierung<br />

2.4 Praktische Umsetzung<br />

• Steuerungs- und Verarbeitungs-Orte<br />

z.B. Diverse Informationen.<br />

Projekt: „Generalschnittstelle“.<br />

Branche: Pharma.<br />

Wird ausführlich in Kapitel 4 behandelt.<br />

12.02.2007 <strong>PTA</strong> <strong>GmbH</strong>, Unternehmensberatung 21


Schnittstellprogrammierung<br />

2.5 Mögliche Probleme<br />

Applikation A Schnittstellen<br />

Applikation B<br />

Was kann passieren ?<br />

Erfahrung aus 26 DV-Jahren:<br />

Alles Erdenkliche und vieles, an das man noch nie gedacht<br />

hat ! Und immer dann, wann es am unangenehmsten ist !<br />

12.02.2007 <strong>PTA</strong> <strong>GmbH</strong>, Unternehmensberatung 22


Schnittstellprogrammierung<br />

2.5 Mögliche Probleme<br />

• Abbruch der Verarbeitung.<br />

– Hardware, Betriebssystem, Datenbank<br />

• Daten nicht plausibel.<br />

– in sich, z.B. Fehler in Quellsystem<br />

– gegenüber Zielsystem<br />

• Daten in falscher Reihenfolge.<br />

– Innerhalb einer Datei<br />

– Dateien<br />

• Daten nicht komplett oder mehrfach.<br />

• Lauf zur falschen Zeit, Lauf wird doppelt gestartet.<br />

• Organisations- oder Programmfehler<br />

in Quellsystem/Zielsystem.<br />

• Fehler bei evtl. Fehlerbehebung, z.B.<br />

nach Abbruch der Verarbeitung.<br />

12.02.2007 <strong>PTA</strong> <strong>GmbH</strong>, Unternehmensberatung 23


• Abbruch der Verarbeitung<br />

Schnittstellprogrammierung<br />

2.5 Mögliche Probleme<br />

– Hardware, Betriebssystem, Datenbank<br />

• Fehler beim Wiederaufsetzen<br />

• Daten nicht plausibel<br />

– in sich, z.B. Fehler in Quellsystem<br />

– gegenüber Zielsystem<br />

• Daten in falscher Reihenfolge<br />

– Innerhalb einer Datei<br />

Protokollierung<br />

Steuerung<br />

Wiederanlauf<br />

Fehlerhafte Daten<br />

Schnittstellenprogrammierung,<br />

Transaktionsverarbeitung<br />

– Dateien<br />

• Daten nicht komplett oder mehrfach<br />

• Organisations- oder Programmfehler<br />

in Quellsystem/Zielsystem Fehlerbehandlung<br />

12.02.2007 <strong>PTA</strong> <strong>GmbH</strong>, Unternehmensberatung 24


Schnittstellprogrammierung<br />

2.6 Erfordernis eigener Technik<br />

• Die Einbindung aller vorher aufgeführten Lösungsansätze in eine<br />

spezielle Programmierung erfordert eine eigene Technik !<br />

• Die Aspekte einer solchen speziellen Programmierung (natürlich<br />

gehört hierzu auch die entsprechende Organisation und<br />

Systemanalyse) werden im folgenden Kapitel ausführlich behandelt.<br />

Schnittstellenprogrammierung (SP)<br />

12.02.2007 <strong>PTA</strong> <strong>GmbH</strong>, Unternehmensberatung 25


Schnittstellprogrammierung<br />

3.1 Definition<br />

• Schnittstellenprogrammierung ist eine Technik, die neben der<br />

eigentlichen Umsetzung der Informationen von einem System in ein<br />

anderes System alle Aspekte des Umfeldes mit seinen Problemen<br />

abdeckt. Insbesondere werden darin folgende Inhalte abgedeckt:<br />

– Fehlerbehandlung<br />

– Protokollierung<br />

– Steuerung/Plausibilisierung<br />

– Fehlerhafte Daten<br />

– Transaktionsverarbeitung<br />

– Job-Steuerung<br />

– Wiederanlauf nach Störung<br />

– Besonderheiten<br />

12.02.2007 <strong>PTA</strong> <strong>GmbH</strong>, Unternehmensberatung 26


Quellsystem<br />

Schnittstelle<br />

Wiederanlauf<br />

Transaktionen<br />

Schnittstellprogrammierung<br />

3.2 Übersicht<br />

Schnittstellenservices<br />

Jobs<br />

Fehlerbehandlung<br />

Steuerung<br />

(Jobs)<br />

Besonderheiten<br />

Daten<br />

• Steuerung<br />

• Plausibilität<br />

• Protokoll<br />

• Fehlerhafte<br />

Daten<br />

Schnittstelle<br />

Zielsystem<br />

12.02.2007 <strong>PTA</strong> <strong>GmbH</strong>, Unternehmensberatung 27


Schnittstellprogrammierung<br />

3.3.1 Steuerung von Jobs<br />

• Was versteht man unter Jobsteuerung ?<br />

Für das Verständnis ist wichtig:<br />

– Was ist ein Job (Definition) ?<br />

– Was sind Steps in einem Job ?<br />

– Wie kann man Jobs steuern ?<br />

– Was geschieht, wenn ein Job abbricht ?<br />

12.02.2007 <strong>PTA</strong> <strong>GmbH</strong>, Unternehmensberatung 28


Schnittstellprogrammierung<br />

3.3.1.1 Definition Job<br />

• Die Definition „Job“ stammt aus der Zeit, bevor es Dialogverarbeitung<br />

gab. Gemeint war damals eine sogenannte Stapelverarbeitung,<br />

d.h. es wurden mehr als ein Datensatz des gleichen Typs (ganzer<br />

Stapel) verarbeitet.<br />

• Heute gibt es immer noch Jobs. Jetzt sind damit Prozesse gemeint,<br />

die asynchron zu Dialogprozessen ablaufen.<br />

• Jobs werden immer dann eingesetzt, wenn der entsprechende<br />

Prozess im Dialog zu lange laufen würde, d.h., wenn das Window<br />

des Anwenders zu lange blockiert wäre und asynchrone Verarbeitung<br />

möglich ist oder die Interaktion von Anwendern nicht notwendig<br />

oder nicht erwünscht ist.<br />

z.B.:<br />

– Energiebedarfsprognose für alle Kunden für bestimmten Zeitraum<br />

– Monatsabschluß einer Buchhaltung<br />

– und natürlich Schnittstellen ....<br />

12.02.2007 <strong>PTA</strong> <strong>GmbH</strong>, Unternehmensberatung 29


Schnittstellprogrammierung<br />

3.3.1.2 Job-Step oder Step = Job<br />

• In einem Job können mehrere Prozesse bzw. Programme<br />

hintereinander laufen.<br />

z.B.:<br />

– Gehaltsabrechnung durchführen,<br />

– alle Gehaltsabrechnungen drucken,<br />

– Datenträgeraustausch-Dateien für Überweisung erstellen.<br />

• Jeder dieser Einzelprozesse kann ein „Step“ eines Jobs sein.<br />

Bei Einsatz von Steps müssen diese steuerbar sein, Protokoll.<br />

• Man kann jedoch auch je Prozess bzw. Step einen eigenen Job<br />

anlegen und diese Jobs dann gesteuert ablaufen lassen. Wichtig ist<br />

hierbei, die Reihenfolge zu steuern.<br />

• Jobs kann man auch vernetzen, wenn z.B. Jobs parallel zueinander<br />

laufen können. In obigen Beispiel können die Gehaltsabrechnungen<br />

parallel zum Erstellen der Datenträgeraustausch-Dateien gedruckt<br />

werden.<br />

12.02.2007 <strong>PTA</strong> <strong>GmbH</strong>, Unternehmensberatung 30


Schnittstellprogrammierung<br />

3.3.1.3 Grundlagen der Steuerung<br />

• Der Start eines Jobs kann nach verschiedenen Gesichtspunkten<br />

erfolgen:<br />

– Zeitgesteuert.<br />

Bei Erreichen einer bestimmten Zeit wird der Job automatisch gestartet.<br />

– Ereignisgesteuert.<br />

Nach Eintreten eines bestimmten Ereignisses wird der Job automatisch<br />

gestartet.<br />

Ereignisse sind z.B.:<br />

• Vorhandensein einer Datei.<br />

• Beendigung eines anderen Jobs<br />

– Manuell.<br />

Der Job wird sofort gestartet.<br />

– Kombinationen,<br />

in der Regel aus Zeitsteuerung und Ereignissteuerung.<br />

z.B.: Job soll nach 20.00 Uhr starten, wenn bestimmte Datei vorhanden<br />

ist und ein definierter anderer Job erfolgreich beendet ist.<br />

12.02.2007 <strong>PTA</strong> <strong>GmbH</strong>, Unternehmensberatung 31


Schnittstellprogrammierung<br />

3.3.1.4 Single Point of of Service<br />

• In heterogen Rechner- und Systemwelten strebt man natürlich an<br />

alle Jobs, und damit auch alle Schnittstellen, zentral zu definieren<br />

und zu steuern.<br />

• Damit kommt man dem „Single Point of Service“ schon näher.<br />

12.02.2007 <strong>PTA</strong> <strong>GmbH</strong>, Unternehmensberatung 32


Schnittstellprogrammierung<br />

3.3.1.5 Wiederanlauf von Jobs<br />

• Bricht ein einzelner Job ab, ist der Wiederanlauf im voraus genau zu<br />

definieren.<br />

• Gehen wir von folgendem einfachen Beispiel aus:<br />

– eine komplette Tabelle wird in ein System eingespielt.<br />

Step 1 - Prüfen<br />

Datei, ob Daten<br />

komplett<br />

Step 2 - Löschen<br />

Tabelle in DB<br />

Step 3 -<br />

Einpflegen in DB<br />

aus Datei<br />

Step 4 - Index<br />

anlegen<br />

Index Löschen<br />

12.02.2007 <strong>PTA</strong> <strong>GmbH</strong>, Unternehmensberatung 33


Quellsystem<br />

Schnittstelle<br />

Wiederanlauf<br />

Transaktionen<br />

Schnittstellprogrammierung<br />

Übersicht<br />

Schnittstellenservices<br />

Jobs<br />

Fehlerbehandlung<br />

Steuerung<br />

(Jobs)<br />

Besonderheiten<br />

Daten<br />

• Steuerung<br />

• Plausibilität<br />

• Protokoll<br />

• Fehlerhafte<br />

Daten<br />

Schnittstelle<br />

Zielsystem<br />

12.02.2007 <strong>PTA</strong> <strong>GmbH</strong>, Unternehmensberatung 34


Schnittstellprogrammierung<br />

3.3.2 Steuerung und Plausibilisierung<br />

• Für die Steuerung der Jobabläufe sowie evtl. Recovery-Maßnahmen<br />

sind Informationen notwendig, die von der eigentlichen Jobsteuerung<br />

angezogen werden.<br />

• Steuerparameter werden von den Schnittstellenprogrammen<br />

benötigt. Dies sind z.B. Verarbeitungszeiten (von-bis Datum).<br />

• Die Schnittstellenprogramme haben die Notwendigkeit strukturiert<br />

bestimmte Laufergebnisse abzulegen. Dies sind z.B. Satzzähler.<br />

• Regeln für die nachträgliche Plausibilisierung von Schnittstellenläufen<br />

werden zentral abgelegt.<br />

12.02.2007 <strong>PTA</strong> <strong>GmbH</strong>, Unternehmensberatung 35


Schnittstellprogrammierung<br />

3.3.2.1 Steuerung Jobablauf und Recovery<br />

• Grundlage einmalige Definition je Prozess:<br />

– Hier wird detailliert definiert, welche Jobs für einen bestimmten Prozess<br />

bzw. bestimmte Schnittstelle in welcher Reihenfolge durchgeführt<br />

werden müssen.<br />

– Für jeden Job sind die Recovery-Maßnahmen zu definieren.<br />

• Planung für jede Durchführung (automatisch oder manuell<br />

anstoßen:<br />

– Aus den definierten Grundlagen wird für einen speziellen Lauf die<br />

Ablauflogik mit allen Steuerungsparametern generiert.<br />

– Hierbei werden auch eindeutige Identifikationen, z.B. Job-Ids vergeben.<br />

– Die vorhandenen Regeln werden umgesetzt oder für „Spezialitäten“<br />

angepasst.<br />

12.02.2007 <strong>PTA</strong> <strong>GmbH</strong>, Unternehmensberatung 36


Schnittstellprogrammierung<br />

3.3.2.1 Steuerung Jobablauf und Recovery<br />

• Jobplanungen<br />

Beispiel:<br />

Übernahme der Rechnungspositionen aus dem Inland ins VKB<br />

(Ursprungssystem: INL, Datenquelle: VKB-Positionen)<br />

URSPRUNGS DATENQUELLE ZIELSYSTEM DEAKTIVIERT Keine Aufträge<br />

SYSTEM<br />

generieren<br />

INL VKB-Positionen AUDIUS Anforderungen Download<br />

INL VKB-Positionen VKB Vertrieb<br />

INL VKB-Positionen WALIS X<br />

• Erstellung der Jobaufträge<br />

Beispiel:<br />

Import-Job-ID: 3506<br />

DATENQUELLE ZIELSYSTEM URSPRUNGS<br />

SYSTEM<br />

VKB-Positionen AUDIUS Anforderungen<br />

Download<br />

IMPORT<br />

_JOB_ID<br />

IMPORT_JOB<br />

_ID_DATUM<br />

IMPORT<br />

_JOB_ID<br />

_ZEIT<br />

EXPORT_<br />

JOB_ID<br />

STATUS<br />

INL 3506 19990618 050838 offen<br />

VKB-Positionen VKB Vertrieb INL 3506 19990618 050838 offen<br />

12.02.2007 <strong>PTA</strong> <strong>GmbH</strong>, Unternehmensberatung 37


Schnittstellprogrammierung<br />

3.3.2.2 Parameter für Schnittstellenprogramme<br />

• Die Steuerparameter für Schnittstellenläufe werden in der Regel von<br />

den Fachbereichen, die für die betreffenden Prozesse in den Quellbzw.<br />

Zielsystemen verantwortlich sind, gepflegt.<br />

• Eine Ablage dieser Parameter in XML hat sich bewährt, da hier nicht<br />

für jede Schnittstelle die Struktur der Parameter in der Datenbank<br />

abgebildet werden muss.<br />

• Damit ist es auch einfacher, die Parameter in das entsprechende<br />

Schnittstellenprogramm zu übergeben (ein String).<br />

• Dieser XML-String sollte dann auch als Protokolleintrag protokolliert<br />

werden. Auch hierfür ist der Programmieraufwand niedrig, da dies<br />

vereinheitlicht werden kann.<br />

12.02.2007 <strong>PTA</strong> <strong>GmbH</strong>, Unternehmensberatung 38


Schnittstellprogrammierung<br />

3.3.2.3 Strukturierte Laufergebnisse<br />

• Unter strukturierten Laufergebnissen versteht man:<br />

– Satzzähler<br />

– Kontrollsummen<br />

– Zuletzt verarbeitete ID<br />

– Aufsetzpunkte (für evtl. Recovery)<br />

– u.s.w.<br />

• Auch hier ist eine Ablage in XML sehr günstig, da die Strukturierungen<br />

für diese Laufergebnisse in der Datenbank entfallen.<br />

12.02.2007 <strong>PTA</strong> <strong>GmbH</strong>, Unternehmensberatung 39


Schnittstellprogrammierung<br />

3.3.2.4 Regeln für Plausibilisierung<br />

• Nach Beendigung eines Jobs oder nach Beendigung einer<br />

Jobabfolge wird von der Jobsteuerung automatisch die Plausibilität<br />

geprüft.<br />

• Dies könnte z.B. ein Vergleich von Satzzahlen sein (Sätze aus Job 1<br />

./. Sätze aus Job 3 = Sätze aus Job 5).<br />

• Entsprechend des Ergebnisses dieser Prüfung kann z.B. die weitere<br />

Job-Folge variiert oder in der Protokolldatei der Fehler-Status entsprechend<br />

gesetzt werden.<br />

12.02.2007 <strong>PTA</strong> <strong>GmbH</strong>, Unternehmensberatung 40


Schnittstellprogrammierung<br />

3.3.2.4 Regeln für Plausibilisierung<br />

• Grundlage einmalige Definition je Schnittstelle:<br />

– Hier werden die Plausibiltätsprüfungen definiert und die daraus<br />

folgenden Aktivitäten festgelegt.<br />

• Planung für jede Durchführung (automatisch oder manuell)<br />

anstoßen:<br />

– Die vorhandenen Regeln werden aktiviert oder für „Spezialitäten“<br />

angepasst.<br />

12.02.2007 <strong>PTA</strong> <strong>GmbH</strong>, Unternehmensberatung 41


Quellsystem<br />

Schnittstelle<br />

Wiederanlauf<br />

Transaktionen<br />

Schnittstellprogrammierung<br />

Übersicht<br />

Schnittstellenservices<br />

Jobs<br />

Fehlerbehandlung<br />

Steuerung<br />

(Jobs)<br />

Besonderheiten<br />

Daten<br />

• Steuerung<br />

• Plausibilität<br />

• Protokoll<br />

• Fehlerhafte<br />

Daten<br />

Schnittstelle<br />

Zielsystem<br />

12.02.2007 <strong>PTA</strong> <strong>GmbH</strong>, Unternehmensberatung 42


Schnittstellprogrammierung<br />

3.3.3 Protokollierung --Monitoring Monitoring<br />

• Für die Protokollierung von Schnittstellen ist besonders relevant:<br />

– Protokollmedium<br />

– Protokolleinträge<br />

– Protokollsprache<br />

– Protokollierungstiefe<br />

– Eskalierung.<br />

12.02.2007 <strong>PTA</strong> <strong>GmbH</strong>, Unternehmensberatung 43


Schnittstellprogrammierung<br />

3.3.3.1 Protokoll-Medium<br />

• Unter Protokoll-Medium ist der Ort der Protokoll-Speicherung<br />

gemeint:<br />

– In der entsprechenden Datenbank.<br />

Dies kann zu Verlust von Protokolleinträgen führen, wenn die<br />

Datenbank Probleme hat. Es tritt z.B. ein Datenbankfehler auf, der nicht<br />

mehr in der Datenbank protokolliert werden kann. Vorsicht auch bei<br />

Rollback-Auslösungen, damit nicht auch die Protokolleinträge<br />

zurückgesetzt werden.<br />

– Im Filesystem des Rechners/Servers.<br />

Hier ist die Speicherung vollkommen unabhängig vom Transaktionshandling.<br />

Aufwand für Programmierung ist etwas aufwendiger. Fehlerzustände<br />

des Filesystems können problematisch werden. In Ausnahmezuständen<br />

ist evtl. eine Synchronisation zwischen Datenbank und<br />

Protokoll notwendig.<br />

12.02.2007 <strong>PTA</strong> <strong>GmbH</strong>, Unternehmensberatung 44


Schnittstellprogrammierung<br />

3.3.3.1 Protokoll-Medium<br />

– In eigenem Server, evtl. auf eigenem Rechner.<br />

Zu beachten ist hierbei, dass zwei Systeme gleichzeitig funktionieren<br />

müssen.<br />

Hier ist jedoch eine echter „single point of Service“ möglich, da viele<br />

Systeme mit einem solchen Protokoll-Server abgedeckt werden können.<br />

– Kombinationen.<br />

Üblich sind Kombinationen aus Speicherung in eigener Datenbank und<br />

Speicherung ins Filesystem, wobei letzteres oft nur als Ausnahmeregelung<br />

bei Datenbankproblemen genutzt wird.<br />

12.02.2007 <strong>PTA</strong> <strong>GmbH</strong>, Unternehmensberatung 45


Schnittstellprogrammierung<br />

3.3.3.2 Protokoll-Einträge<br />

• Welche grundsätzlichen Informationen sollten in Protokoll<br />

eingetragen werden?<br />

– Fehler.<br />

Selbstverständlichkeit!<br />

Detaillierte Fehlerbeschreibung mit allen zur Verfügung stehenden<br />

Informationen.<br />

Auch evtl. Korrekturmaßnahmen und die Weiterführung des Prozesses<br />

sind zu protokollieren.<br />

Wichtig für die Eskalierung ist die Fehlerschwere, siehe auch Attribute.<br />

– Warnung.<br />

Die Trennung zwischen Fehler und Warnung hat Tücken. Als Warnung<br />

sollten nur Einträge deklariert werden, die nicht zum Verlust von<br />

Informationen führen.<br />

Letztendlich muss bei der Organisation der Schnittstelle und Festlegung<br />

der Plausibilität dies festgelegt werden.<br />

12.02.2007 <strong>PTA</strong> <strong>GmbH</strong>, Unternehmensberatung 46


Schnittstellprogrammierung<br />

3.3.3.2 Protokoll-Einträge<br />

– Hinweise.<br />

z.B. Beginn - Ende der Verarbeitung. Hier können aber auch alle<br />

verarbeiteten Informationen (evtl. auszugsweise) protokolliert werden.<br />

Wenn dann noch Fallunterscheidungen protokolliert werden, ist dies als<br />

als wesentliche Testhilfe zu sehen. Im Produktivbetrieb natürlich<br />

hauptsächlich bei Fehlersituationen zu gebrauchen.<br />

– Korrekte Verarbeitung.<br />

Überschneidet sich teilweise mit Hinweisen. Zusätzlich ist aber noch<br />

über einen Status (siehe Attribute) die insgesamt korrekte Verarbeitung<br />

zu protokollieren.<br />

12.02.2007 <strong>PTA</strong> <strong>GmbH</strong>, Unternehmensberatung 47


Schnittstellprogrammierung<br />

3.3.3.3 Protokoll-Sprache<br />

• Protokollsprache:<br />

– Festgelegte Projektsprache, z.B. Deutsch oder Mehrsprachigkeit über<br />

entsprechende Protokolltexttabellen. Siehe hierzu auch Fehlertexttabellen.<br />

– Abspeicherungs-Code:<br />

• HTML<br />

• XML<br />

• Ascii<br />

• ...<br />

12.02.2007 <strong>PTA</strong> <strong>GmbH</strong>, Unternehmensberatung 48


Schnittstellprogrammierung<br />

3.3.3.4 Protokollierungs-Tiefe<br />

• Parallel zu den Protokolleinträgen (Fehler, Warnung u.s.w.) ist ein<br />

Protokoll-Level zu empfehlen.<br />

– Alle Einträge werden einem Level zugeordnet,<br />

z.B. Fehler Level 1, Warnung Level 2, Hinweis Level 3, Korrekte<br />

Verarbeitung Level 1.<br />

– Beim Einsehen des Protokolls kann dann durch Selektion des Levels<br />

die Detaillierung gesteuert werden.<br />

– Im Level 3 gemäß obigem Beispiel werden dann aber auch Level 1 und<br />

2 mit angezeigt.<br />

– Im Level 1 jedoch nur alle Level 1 - Einträge.<br />

– Level können ausgeprägter sein als die Protokolleintragsarten.<br />

z.B. kann unter Hinweisen ein Level für den Fachbereich und ein Level<br />

nur für den Programmierer eingesetzt werden.<br />

– Die Level sind im Projekt zu definieren.<br />

12.02.2007 <strong>PTA</strong> <strong>GmbH</strong>, Unternehmensberatung 49


Schnittstellprogrammierung<br />

3.3.3.5 Eskalierung<br />

• Papier ist geduldig - irgend ein Eintrag in Protokolldatei ist es auch !<br />

• Deshalb:<br />

– Mail-Versand.<br />

An definierte Personen wird im Fehlerfall ein Mail verschickt.<br />

– Alarmierung.<br />

Per SMS, Piepser, Automatischer Anruf, u.s.w.<br />

– Ampel.<br />

Durch Darstellung von Ampeln (rot, gelb, grün) in der Online-Ansicht<br />

des Protokolls kann sehr prägnant der Zustand dargestellt werden.<br />

– Systeme stoppen.<br />

Notfalls kann ein System automatisch gestoppt bzw. das Starten<br />

verhindert werden.<br />

12.02.2007 <strong>PTA</strong> <strong>GmbH</strong>, Unternehmensberatung 50


Schnittstellprogrammierung<br />

3.3.3.6 Attribute<br />

• Folgende Attribute sollte ein Protokollsystem mindestens haben:<br />

– Bezeichnung Schnittstelle, System<br />

– Datum-Eintrag<br />

– Uhrzeit-Eintrag<br />

– Text<br />

– Status (Ampel)<br />

– Level<br />

– Protokollart<br />

– Fehlerschwere<br />

– Status Eskalation<br />

12.02.2007 <strong>PTA</strong> <strong>GmbH</strong>, Unternehmensberatung 51


Schnittstellprogrammierung<br />

3.3.3.7 Protokollbeispiel<br />

12.02.2007 <strong>PTA</strong> <strong>GmbH</strong>, Unternehmensberatung 52


Schnittstellprogrammierung<br />

3.3.3.8 Monitoring<br />

• Monitoring ist eine ausgeprägte Form des Protokolls, der<br />

Jobsteuerung und der Steuerung/Plausibilisierung.<br />

– Sehr wichtig ist eine bedienerfreundliche Oberfläche, d.h. alle Infos an<br />

einem Ort.<br />

– Planung integriert.<br />

– Schon während des Prozesses kann hier „beobachtet“ werden.<br />

– Durch Verknüpfung zur Jobsteuerung und der Steuerung/<br />

Plausibilisierung ist hier der „single point of service“.<br />

– “Gutes Gefühl für Administrator” – nicht nur kein Fehler – sondern<br />

wirklich alles gelaufen und in Ordnung !<br />

• Transparenz für Anwender:<br />

– Ist Schnittstelle bereits eingespielt ?<br />

Sind z.B. die Messreihen für einen Kunden bereits übertragen?<br />

12.02.2007 <strong>PTA</strong> <strong>GmbH</strong>, Unternehmensberatung 53


Quellsystem<br />

Schnittstelle<br />

Wiederanlauf<br />

Transaktionen<br />

Schnittstellprogrammierung<br />

Übersicht<br />

Schnittstellenservices<br />

Jobs<br />

Fehlerbehandlung<br />

Steuerung<br />

(Jobs)<br />

Besonderheiten<br />

Daten<br />

• Steuerung<br />

• Plausibilität<br />

• Protokoll<br />

• Fehlerhafte<br />

Daten<br />

Schnittstelle<br />

Zielsystem<br />

12.02.2007 <strong>PTA</strong> <strong>GmbH</strong>, Unternehmensberatung 54


Schnittstellprogrammierung<br />

3.3.4 Fehlerbehandlung<br />

• Fehlerarten:<br />

– Syntax- oder Compilierungsfehler.<br />

Diese Fehler sind früh zu erkennen und auszumerzen.<br />

– Spezielle Programmierfehler, die nicht zu Laufzeitfehlern führen.<br />

z.B. Endlos-Schleife, Programm scheint stehen zu bleiben, CPU-<br />

Auslastung sehr hoch.<br />

– Laufzeitfehler.<br />

Hier muss ein genau definierter Mechanismus angewendet werden.<br />

– Logische Fehler.<br />

Diese Fehler sind am schwersten zu finden. Evtl. nur durch gut<br />

organisierte Testverfahren festzustellen.<br />

• Im folgenden geht es hauptsächlich um Laufzeitfehler.<br />

12.02.2007 <strong>PTA</strong> <strong>GmbH</strong>, Unternehmensberatung 55


Schnittstellprogrammierung<br />

3.3.4.1 Prinzip in in Programmen<br />

• Fehler immer entsprechend der Sprache abfangen und in geordnete<br />

Bahnen (einheitliches Fehlerhandling) leiten.<br />

• Sehr bedenklich ist z.B. in Visual Basic oder MS-Access der Befehl<br />

„on error resume next “ wenn nach dem nächsten Befehl keine<br />

Fehlerabfrage erfolgt, denn das bedeutet, dass alle Fehler einfach<br />

übergangen werden.<br />

• Sauberes Fehlerhandling z.B. in MS-Access siehe nächste Seite.<br />

12.02.2007 <strong>PTA</strong> <strong>GmbH</strong>, Unternehmensberatung 56


Schnittstellprogrammierung<br />

3.3.4.1 Prinzip in in Programmen<br />

Public Function fkt_sys_initialisierung_projekt()<br />

Const CON_AKT_FKT_NAME = "fkt_sys_initialisierung_projekt"<br />

On Error GoTo err_fkt_sys_initialisierung_projekt<br />

fkt_sys_initialisierung_projekt = CON_FKT_FEHLER<br />

Funktionalitität<br />

ok_fkt_sys_initialisierung_projekt:<br />

fkt_sys_initialisierung_projekt = CON_FKT_OK<br />

exit_fkt_sys_initialisierung_projekt:<br />

Exit Function<br />

err_fkt_sys_initialisierung_projekt:<br />

eigene Fehlerabhandlung<br />

var_fkt_return_g = fkt_sys_allg_fehler(CON_AKT_FKT_NAME, Err, _<br />

Err.Source & " & Err.Description)<br />

stop_fkt_sys_initialisierung_projekt:<br />

GoTo exit_fkt_sys_initialisierung_projekt<br />

End Function<br />

12.02.2007 <strong>PTA</strong> <strong>GmbH</strong>, Unternehmensberatung 57


Schnittstellprogrammierung<br />

3.3.4.2 Regeln, Standardisierung/Normung<br />

• Fehlertexte in entsprechender Tabelle speichern. Damit ist auch<br />

relativ problemlos eine mehrsprachige Lösung zu erreichen.<br />

• In die Fehlertexte sollten aus dem Programmcode heraus Variable<br />

eingestreut werden können. Hierfür sind in den Fehlertexten<br />

Platzhalter vorzusehen.<br />

• Eine einheitliche Abhandlung der Fehler in eigenem Fehlermodul ist<br />

erstrebenswert.<br />

• Bei Aufruf von Funktionen ist mit Return-Codes zu arbeiten um<br />

Fehler in unteren Funktionen nach „oben“ weiter zu melden.<br />

• So gelangen Fehlerzustände bis in die höchste Steuerungsebene<br />

der Programme.<br />

• Diese Festlegungen am besten in einem entsprechenden<br />

Framework hinterlegen.<br />

12.02.2007 <strong>PTA</strong> <strong>GmbH</strong>, Unternehmensberatung 58


Schnittstellprogrammierung<br />

3.3.4.3 Eskalierung von Fehlern<br />

• Eine Eskalierung von bestimmten systemweit relevanten Fehlern ist<br />

unerlässlich.<br />

• Dies kann zum Abbruch des momentan laufenden Programms<br />

führen und<br />

• geht evtl. bis zum Stopp des Gesamtsystems.<br />

12.02.2007 <strong>PTA</strong> <strong>GmbH</strong>, Unternehmensberatung 59


Schnittstellprogrammierung<br />

3.3.4.4 Protokollierung von Fehlern<br />

• Bei Anwendung eines Frameworks bzw. einem eigenen<br />

Fehlermodul ist es sehr einfach, eine einheitliche Protokollierung<br />

aller Ausnahmezustände zu erreichen.<br />

• Fehler, die nicht protokolliert werden, sind in der Regel nicht mehr<br />

nachzuvollziehen.<br />

• Näheres “Protokollierung”.<br />

12.02.2007 <strong>PTA</strong> <strong>GmbH</strong>, Unternehmensberatung 60


Quellsystem<br />

Schnittstelle<br />

Wiederanlauf<br />

Transaktionen<br />

Schnittstellprogrammierung<br />

Übersicht<br />

Schnittstellenservices<br />

Jobs<br />

Fehlerbehandlung<br />

Steuerung<br />

(Jobs)<br />

Besonderheiten<br />

Daten<br />

• Steuerung<br />

• Plausibilität<br />

• Protokoll<br />

• Fehlerhafte<br />

Daten<br />

Schnittstelle<br />

Zielsystem<br />

12.02.2007 <strong>PTA</strong> <strong>GmbH</strong>, Unternehmensberatung 61


Schnittstellprogrammierung<br />

3.3.5 Fehlerhafte Daten<br />

• Alle von Schnittstellen als fehlerhaft abgewiesenen Informationen<br />

müssen gesichert gespeichert werden.<br />

• Eine (manuelle) Korrektur bzw. das Löschen dieser falschen Daten<br />

ist zu ermöglichen.<br />

• Eine Nachverarbeitung der korrigierten Fehler (Korrekturlauf) muss<br />

über die Jobsteuerung erfolgen.<br />

12.02.2007 <strong>PTA</strong> <strong>GmbH</strong>, Unternehmensberatung 62


Schnittstellprogrammierung<br />

3.3.5.1 Speicherung<br />

• Die Speicherung der fehlerhaften Daten ist möglich in:<br />

– Dateien in Filesystem eines Servers.<br />

Hier ist darauf zu achten die Rechte so einzuschränken, dass<br />

Manipulationen nicht möglich sind. Die Konsistenz dieser Daten ist zu<br />

gewährleisten (z.B. entsprechende RAID-Systeme).<br />

– Datenbank.<br />

Hier ist ein sehr sicherer Ablageort. Der Speicherbedarf und das evtl.<br />

entstehende Logging ist abzuwägen.<br />

12.02.2007 <strong>PTA</strong> <strong>GmbH</strong>, Unternehmensberatung 63


Schnittstellprogrammierung<br />

3.3.5.2 (Manuelle) Korrektur<br />

• Die fehlerhaften Daten müssen per Funktionalität von Programmen<br />

oder durch manuelle Korrektur korrigiert werden.<br />

• Eine Korrektur kann auch durch Verbesserungen im Quellsystem<br />

und erneutes versenden über die betreffende Schnittstelle erfolgen.<br />

Dieser Vorgang ist zu automatisieren und eine Löschung der<br />

fehlerhaften Daten zu ermöglichen.<br />

• Eine direkte Korrektur ist durch entsprechende Programme zu<br />

ermöglichen. Der Aufbau der Schnittstellendaten muss dies bereits<br />

berücksichtigen:<br />

– Spaltentrennung durch Trennzeichen, dann ist Korrektur z.B. durch<br />

EXCEL sehr leicht möglich.<br />

– Weitergehende Möglichkeiten durch XML.<br />

12.02.2007 <strong>PTA</strong> <strong>GmbH</strong>, Unternehmensberatung 64


Schnittstellprogrammierung<br />

3.3.5.3 Korrekturlauf<br />

• Durch die Jobsteuerung ist ein Korrekturlauf der vorher<br />

korrigierten Daten zu ermöglichen. Dies kann zu einem festgelegten<br />

Zeitpunkt oder mit dem nächsten regulären Schnittstellenlauf durch<br />

Datenzusammenführung erfolgen.<br />

Manchmal ist es auch richtig die fehlerhaften Daten aus dem<br />

vorherigen Lauf (egal ob korrigiert oder nicht) wieder im neuen Lauf<br />

mitzuverarbeiten. Es entsteht dadurch nur ein „Fehlertopf“.<br />

• Es kann auch notwendig sein, dass die Schnittstelle erst wieder<br />

starten kann, nachdem alle fehlerhaften Daten korrigiert und<br />

verarbeitet sind, d.h. Fehlertopf ist leer.<br />

• Auch aus einem Korrekturlauf müssen evtl. weiterhin fehlerhafte<br />

Daten wieder gespeichert werden, das Spiel geht von vorne los.<br />

12.02.2007 <strong>PTA</strong> <strong>GmbH</strong>, Unternehmensberatung 65


Quellsystem<br />

Schnittstelle<br />

Wiederanlauf<br />

Transaktionen<br />

Schnittstellprogrammierung<br />

Übersicht<br />

Schnittstellenservices<br />

Jobs<br />

Fehlerbehandlung<br />

Steuerung<br />

(Jobs)<br />

Besonderheiten<br />

Daten<br />

• Steuerung<br />

• Plausibilität<br />

• Protokoll<br />

• Fehlerhafte<br />

Daten<br />

Schnittstelle<br />

Zielsystem<br />

12.02.2007 <strong>PTA</strong> <strong>GmbH</strong>, Unternehmensberatung 66


Schnittstellprogrammierung<br />

3.3.6 Transaktionsverarbeitung<br />

• Auch bei Schnittstellenverarbeitung können Transaktionsmechanismen,<br />

die durch die verwendeten Datenbanken angeboten<br />

werden, sehr hilfreich sein.<br />

• Dies ist besonders dann notwendig, wenn für die Schnittstellenläufe<br />

kein sogenanntes „Batch-Fenster“ zur Verfügung steht und die<br />

eingespielten Daten auch Online verändert werden können.<br />

12.02.2007 <strong>PTA</strong> <strong>GmbH</strong>, Unternehmensberatung 67


Schnittstellprogrammierung<br />

3.3.6.1 Definition Transaktion<br />

• Eine Transaktion kapselt die Veränderung an Daten gegenüber<br />

anderen Prozessen für einen definierten Zeitraum.<br />

• Warum ist dies notwendig ?<br />

Prozess A:<br />

Änderung<br />

Änderung<br />

Änderung<br />

Zurücksetzen<br />

Zurücksetzen<br />

Ende Prozess<br />

Tabelle X<br />

Zeile 1<br />

Zeile 2<br />

Zeile 3<br />

Zeile 4<br />

Zeile 5<br />

Zeile 6<br />

Zeile 7<br />

Zeile 8<br />

Prozess B:<br />

Änderung<br />

Änderung<br />

Ende Prozess<br />

12.02.2007 <strong>PTA</strong> <strong>GmbH</strong>, Unternehmensberatung 68<br />

t


Schnittstellprogrammierung<br />

3.3.6.2 Grenzen des Transaktionshandlings<br />

• Damit eine Datenbank Transaktionen abbilden kann, muss in einer<br />

Log-Datei die Zeile jeweils vor und nach einer Änderung gespeichert<br />

sein. Die Größe der Log-Datei ist deshalb u.a. eine Grenze für das<br />

Transaktionshandling.<br />

• Die geänderten Zeilen müssen in einem Zwischenbereich bis zum<br />

Ende der Transaktion gespeichert sein, da sie erst dann in die<br />

Datenbank geschrieben werden. Dieser Zwischenbereich ist<br />

natürlich auch begrenzt.<br />

• Bei vielen Änderungen in einer Transaktion sind auch viele Zeilen<br />

gesperrt, dies kann natürlich einen Performanceverlust der<br />

Datenbank bedeuten.<br />

12.02.2007 <strong>PTA</strong> <strong>GmbH</strong>, Unternehmensberatung 69


Quellsystem<br />

Schnittstelle<br />

Wiederanlauf<br />

Transaktionen<br />

Schnittstellprogrammierung<br />

Übersicht<br />

Schnittstellenservices<br />

Jobs<br />

Fehlerbehandlung<br />

Steuerung<br />

(Jobs)<br />

Besonderheiten<br />

Daten<br />

• Steuerung<br />

• Plausibilität<br />

• Protokoll<br />

• Fehlerhafte<br />

Daten<br />

Schnittstelle<br />

Zielsystem<br />

12.02.2007 <strong>PTA</strong> <strong>GmbH</strong>, Unternehmensberatung 70


Schnittstellprogrammierung<br />

3.3.7 Besonderheiten<br />

• Alle vorgenannten Aspekte müssen in SP berücksichtigt werden,<br />

deshalb ist Fehleranfälligkeit hier sehr hoch und schmerzhaft.<br />

• Beliebtes Thema:<br />

Sollen bereits in Vorsystemen verifizierte Daten nochmals verifiziert<br />

werden? Aus langjähriger Erfahrung: Ein klares „Ja“.<br />

Sie werden erstaunt sein, wie oft sich dies in der Praxis bewährt.<br />

• Logisch oder physisch löschen?<br />

Es kann auch Fälle geben, in den ein sofortiges physisches Löschen<br />

notwendig ist. Wenn es sich vermeiden lässt, bitte logisch löschen.<br />

Stellen Sie sich folgendes Szenario vor:<br />

Vorsystem kennt logisches Löschen. Aus „Versehen“ werden im<br />

Vorsystem durch Anwender Informationen gelöscht. Über die<br />

Schnittstelle kommt Löschanweisung. Löschung wird durchgeführt.<br />

Fehler wird im Vorsystem erkannt, kein Problem „Wiederaufleben<br />

lassen“. Und Ihr System - kennt es Wiederaufleben lassen ?<br />

12.02.2007 <strong>PTA</strong> <strong>GmbH</strong>, Unternehmensberatung 71


Schnittstellprogrammierung<br />

3.3.7 Besonderheiten<br />

Noch Noch besser ist ist natürlich, sie haben ein sauberes Historienkonzept.<br />

Hiermit ist es z.B. möglich, irgend einen Stand Stand aus der der<br />

Vergangenheit zu rekonstruieren.<br />

z.B.: Energiebedarfsprognose für für bestimmtes Netz für<br />

Januar/Vorjahr.<br />

• Wie löst man Schnittstellen im Quellsystem aus?<br />

Beliebt ist es, diese über Trigger auszulösen. Es finden dann in den<br />

Datenbanken richtige „Trigger-Feuerwerke“ statt. Der Anwender<br />

weis dann oft gar nicht, was er mit einem Tastendruck in Folgesystemen<br />

auslöst.<br />

Da Trigger zeilenbezogen sind, müsste zumindest im Trigger geprüft<br />

werden, ob schnittstellenrelevante Spalten verändert wurden.<br />

Außerdem sollte nicht jede Änderung einen Schnittstellensatz auslösen.<br />

Für bestimmten Zeitraum sollte auch bei mehreren Änderungen<br />

nur eine Sammeländerung über die Schnittstelle gehen.<br />

12.02.2007 <strong>PTA</strong> <strong>GmbH</strong>, Unternehmensberatung 72


Schnittstellprogrammierung<br />

3.3.7 Besonderheiten<br />

• Die falsche Reihenfolge und die Vollständigkeit von Daten oder das<br />

Erkennen mehrfach vorkommender Daten ist oft mit ganz einfachen<br />

Mitteln sicherzustellen:<br />

– Fortlaufende Nummer.<br />

Wird in Quellsystem vergeben und im Zielsystem wird verifiziert, ob<br />

Daten in richtiger Reihenfolge, lückenlos oder evtl. mehrfach vorhanden<br />

sind.<br />

– Timestamp.<br />

Auch hier wieder Prüfung in Zielsystem. Die Lückenlosigkeit ist hier<br />

schon problematisch. Bei Datenaufkommen von mehreren Tausend pro<br />

Sekunde (z.B. Überwachung von kerntechnischen Anlagen) ist auch die<br />

Reihenfolge nicht mehr per Timestamp zu erreichen.<br />

Erinnert sei hier auch an die Problematik, dass es einen Tag im Jahr mit<br />

23 Stunden (shortday) und einen Tag mit 25 Stunden (longday) gibt.<br />

12.02.2007 <strong>PTA</strong> <strong>GmbH</strong>, Unternehmensberatung 73


Quellsystem<br />

Schnittstelle<br />

Wiederanlauf<br />

Transaktionen<br />

Schnittstellprogrammierung<br />

Übersicht<br />

Schnittstellenservices<br />

Jobs<br />

Fehlerbehandlung<br />

Steuerung<br />

(Jobs)<br />

Besonderheiten<br />

Daten<br />

• Steuerung<br />

• Plausibilität<br />

• Protokoll<br />

• Fehlerhafte<br />

Daten<br />

Schnittstelle<br />

Zielsystem<br />

12.02.2007 <strong>PTA</strong> <strong>GmbH</strong>, Unternehmensberatung 74


Schnittstellprogrammierung<br />

3.3.8 Wiederanlauf nach Störung<br />

• Abgrenzung: Hier geht es nicht um Jobs - sondern um die Störung<br />

der Schnittstellenservices.<br />

• Beispiel für Störung:<br />

Quellsystem<br />

Steuerung<br />

Steuerung<br />

(Fortschritt)<br />

Zielsystem<br />

Onlinebetrieb<br />

12.02.2007 <strong>PTA</strong> <strong>GmbH</strong>, Unternehmensberatung 75


Schnittstellprogrammierung<br />

3.3.8.1 Recovery-Maßnahmen<br />

• Problem: Steuerungsinformationen für Schnittstellenservices sind<br />

nicht mehr parallel zu den durchgeführten Änderungen im<br />

Zielsystem, d.h. es ist nicht mehr aufgezeichnet, welche<br />

Schnittstellendaten bereits eingespielt sind.<br />

• Dieses Problem kann entschärft werden, wenn z.B. das Zielsystem<br />

so ausgelegt ist, daß Schnittstellendaten problemlos mehrfach<br />

eingespielt werden können.<br />

• Auch eine Lösung wäre, die Steuerungsinformationen mit im<br />

Zielsystem abzulegen und diese Informationen mitzuverarbeiten.<br />

• Wichtig: Bei Konzeption von Systemen müssen solche Probleme<br />

organisatorisch und technisch bedacht und gelöst werden.<br />

12.02.2007 <strong>PTA</strong> <strong>GmbH</strong>, Unternehmensberatung 76


Schnittstellprogrammierung<br />

3.3.8.1 Recovery-Maßnahmen<br />

• Bei Standardsoftware, die nicht selbst erstellt wurde, gibt es keinen<br />

Einfluss auf das Schnittstellendesign und die Integration ins<br />

Gesamtsystem.<br />

• D.h.: Recovery-Maßnahmen müssen so geplant werden, dass sie<br />

abgestimmt sind auf alle Schnittstellen des Gesamtsystems.<br />

• Der „größte anzunehmende Unfall“ (GaU) muss bedacht, geplant<br />

und verifiziert sein.<br />

• Als GaU in der Datenverarbeitung kann man den Verlust von Daten<br />

bezeichnen.<br />

• GaU kann auf dem Quell-, Ziel- oder Steuerungssystem vorkommen.<br />

12.02.2007 <strong>PTA</strong> <strong>GmbH</strong>, Unternehmensberatung 77


Schnittstellprogrammierung<br />

3.3.8.2 Plan für „GaU“<br />

• Alle Recovery-Maßnahmen sind in einem entsprechenden Betriebshandbuch<br />

zu definieren.<br />

• Unter vielem anderen muss darin festgelegt sein:<br />

– Kriterien für die einzelnen Schnittstellen, insbesondere für Recovery-<br />

Maßnahmen.<br />

– Zuständigkeiten/Verantwortungen und Befugnisse (incl. Vertretungsregelungen):<br />

• technisch<br />

• fachlich<br />

12.02.2007 <strong>PTA</strong> <strong>GmbH</strong>, Unternehmensberatung 78


Quellsystem<br />

Schnittstelle<br />

Wiederanlauf<br />

Transaktionen<br />

Schnittstellprogrammierung<br />

Übersicht<br />

Schnittstellenservices<br />

Jobs<br />

Fehlerbehandlung<br />

Steuerung<br />

(Jobs)<br />

Besonderheiten<br />

Daten<br />

• Steuerung<br />

• Plausibilität<br />

• Protokoll<br />

• Fehlerhafte<br />

Daten<br />

Schnittstelle<br />

Zielsystem<br />

12.02.2007 <strong>PTA</strong> <strong>GmbH</strong>, Unternehmensberatung 79


Schnittstellprogrammierung<br />

3.9 Betriebshandbuch<br />

• Dass Schnittstellenservices ohne Betriebshandbuch nicht betrieben<br />

und gesteuert werden können, dürfte unumstritten sein.<br />

• Hervorzuheben ist, dass es in einem heterogenen Umfeld ein<br />

Betriebshandbuch, in dem alle Schnittstellen zusammengefasst<br />

sind, geben sollte. Es kann nicht angehen, dass erst bei einem<br />

Problem mit einer Schnittstelle in mehreren Handbüchern die<br />

Informationen gesucht werden müssen. Vielleicht findet man Sie<br />

dann auch unter Zeitdruck, evtl. auch nicht.<br />

12.02.2007 <strong>PTA</strong> <strong>GmbH</strong>, Unternehmensberatung 80


Schnittstellprogrammierung<br />

3.9 Betriebshandbuch (Beispiel)<br />

1 Abkürzungen ........................................................................................................ 4<br />

2 Einleitung.............................................................................................................. 5<br />

3 Configuration Management .................................................................................. 6<br />

3.1 Systemhardware............................................................................................. 6<br />

3.2 Systemsoftware .............................................................................................. 6<br />

3.3 Verzeichnisse, Freigaben und FTP-Zugriffsmöglichkeiten.............................. 7<br />

3.4 Schnittstellen-User und deren Berechtigungen............................................... 7<br />

3.5 Benutzergruppen innerhalb der Applikation.................................................... 7<br />

3.6 ODBC - Datenquellen ..................................................................................... 9<br />

3.7 Netzwerkanbindung ...................................................................................... 10<br />

3.8 Bestehende Verfahren Configuration Management...................................... 10<br />

3.9 Zuständigkeiten Configuration Management ................................................ 10<br />

4 Operation Management...................................................................................... 11<br />

4.1 Datacenter .................................................................................................... 11<br />

4.2 Fachbereich.................................................................................................. 12<br />

4.3 Bestehende Verfahren Operation Management ........................................... 13<br />

4.4 Zuständigkeiten Operation Management:..................................................... 13<br />

5 Performance Management ................................................................................. 14<br />

5.1 Mittel der Performanceüberwachung ............................................................ 14<br />

5.2 Wartungsarbeiten / -fenster .......................................................................... 15<br />

5.3 Ungeplante Ausfälle...................................................................................... 15<br />

5.4 Bestehende Verfahren Performance Management....................................... 15<br />

5.5 Zuständigkeiten Performance Management: ................................................ 15<br />

6 Problem Management ........................................................................................ 16<br />

6.1 Problem Management - Workflow................................................................. 16<br />

6.2 Fehlerprioritäten............................................................................................ 16<br />

6.3 Zuständigkeiten Problem Management ........................................................ 17<br />

7 Assets Management........................................................................................... 18<br />

7.1 Sicherheit auf Betriebssystemebene (NT) .................................................... 18<br />

7.2 Sicherheit auf Datenbankebene (MSSQL-Sever) ......................................... 18<br />

7.3 Sicherheit auf Applikationsebene (Clarify) .................................................... 18<br />

7.4 Datenschutz.................................................................................................. 19<br />

7.5 Zuständigkeiten Assets Management........................................................... 19<br />

8 Change- und Release Management................................................................... 20<br />

8.1 Change Management ................................................................................... 20<br />

8.2 Release Management................................................................................... 21<br />

9 Literaturverzeichnis............................................................................................. 22<br />

12.02.2007 <strong>PTA</strong> <strong>GmbH</strong>, Unternehmensberatung 81


Schnittstellprogrammierung<br />

4. 4. Schnittstellen --Gestern, Gestern, heute, morgen<br />

• An drei Beispielen soll die Vergangenheit (bei vielen noch<br />

Gegenwart) und die heute eingesetzte Technik dargestellt werden:<br />

– Steuerung und Verarbeitung in Quell- und Zielsystem.<br />

– Steuerung in eigenem Server – Verarbeitung in Quell- und Zielsystem.<br />

– Steuerung und Teile der Verarbeitung in eigenem Server<br />

• Ein Blick in die berühmte Glaskugel.<br />

12.02.2007 <strong>PTA</strong> <strong>GmbH</strong>, Unternehmensberatung 82


Schnittstellprogrammierung<br />

4.1 Steuerung und Verarbeitung in in Quell- und<br />

Zielsystem<br />

• Die Verarbeitung und die Steuerung der Schnittstellen wird<br />

ausschließlich im Quell- bzw.. im Zielsystem durchgeführt.<br />

• Zwischen den Systemen werden ausschließlich Daten übergeben:<br />

– Eigentliche Rohdaten, z.B. Überweisung mit entsprechenden Feldern,<br />

– Steuerinformationsdaten wie z.B. Anzahl Überweisungen, Checksummen.<br />

Quellsystem:<br />

Erstellt DTA -<br />

File<br />

(Überweisungen,<br />

Steuerinfos) <br />

Zielsystem bei<br />

Bank:<br />

Verarbeitet DTA -<br />

File<br />

12.02.2007 <strong>PTA</strong> <strong>GmbH</strong>, Unternehmensberatung 83


Schnittstellprogrammierung<br />

4.2 Steuerung in in eigenem Server – Verarbeitung in in<br />

Quell- und Zielsystemen<br />

• Die Steuerung findet in einem eigenen Server statt.<br />

• Beliebig viele Quell- und Zielsysteme (auch unterschiedliche<br />

Architekturen) können gesteuert werden.<br />

• Die Verarbeitung der Schnittstellen wird ausschließlich in Quellbzw.<br />

im Zielsystemen durchgeführt (auch Plausibilität ).<br />

• Zwischen den Systemen werden ausschließlich Daten übergeben:<br />

– Eigentliche Rohdaten, z.B. Überweisung mit entsprechenden Feldern,<br />

– Steuerinformationsdaten wie z.B. Satzzahlen, Checksummen.<br />

• Steuerung registriert nur den Erfolg der Verarbeitungsdurchführung<br />

(Job-Returncode).<br />

12.02.2007 <strong>PTA</strong> <strong>GmbH</strong>, Unternehmensberatung 84


Schnittstellprogrammierung<br />

4.2 Steuerung in in eigenem Server – Verarbeitung in in<br />

Quell- und Zielsystemen<br />

MVS-System Unix-System<br />

NT-System<br />

12.02.2007 <strong>PTA</strong> <strong>GmbH</strong>, Unternehmensberatung 85


Schnittstellprogrammierung<br />

4.3 Steuerung und Teile der Verarbeitung in in eigenem<br />

Server<br />

• Die Steuerung findet in einem eigenen Server statt.<br />

• Teile der Verarbeitung finden durch den Steuerungsserver statt.<br />

• Beliebig viele Quell- und Zielsysteme (auch unterschiedliche<br />

Architekturen) können angeschlossen sein.<br />

• Steuerung prüft neben der Kontrolle des Erfolgs der Verarbeitungsdurchführung<br />

(Job-Returncode) auch Kontroll-Plausibilitäten.<br />

• Beispiel:<br />

– Projekt: „Generalschnittstelle“.<br />

– Branche: Pharma, Baden Württemberg.<br />

12.02.2007 <strong>PTA</strong> <strong>GmbH</strong>, Unternehmensberatung 86


Schnittstellprogrammierung<br />

4.3 Steuerung und Teile der Verarbeitung in in eigenem<br />

Server --Beispiel Beispiel<br />

Generalschnittstelle<br />

Inland<br />

ORACLE-<br />

Datenbank<br />

SAP R/3 – Inland<br />

Aufträge<br />

Lieferungen<br />

Rechnungen<br />

Export zu verschiedenen Systemen ...<br />

Rechnungen<br />

SAP R/2 – Ausland<br />

z. Z. nur<br />

Rechnungen<br />

Generalschnittstelle<br />

Ausland<br />

Stammdaten<br />

Werk 1 Werk 2 Import von verschiedenen<br />

Systemen ...<br />

12.02.2007 <strong>PTA</strong> <strong>GmbH</strong>, Unternehmensberatung 87


Schnittstellprogrammierung<br />

4.4 Ausblick<br />

• Schnittstellenrechner übernehmen Geschäftsprozesssteuerung von<br />

Systemen.<br />

Voraussetzung: Atomare/granulare Schnittstellengestaltung.<br />

– Business-Objekte (OO) können hierbei sehr hilfreich sein.<br />

• Business to Business (B2B) - Verbindungen:<br />

– Vom Papier,<br />

– über EDI zu<br />

– Web-Services.<br />

Schauen Sie selbst in die Glaskugel !!!<br />

12.02.2007 <strong>PTA</strong> <strong>GmbH</strong>, Unternehmensberatung 88


Schnittstellprogrammierung<br />

5. 5. Tipps<br />

• Führendes System bestimmen.<br />

• Bei gleichberechtigten Systemen über Replikation der<br />

entsprechenden Tabellen nachdenken.<br />

• Bei kleineren Datenmengen über kpl. Übernehmen nachdenken.<br />

• Wenn möglich „Batch-Fenster“ für Schnittstellen einsetzen.<br />

• Nach Möglichkeit Steuerung außerhalb Quell- und Zielsystem.<br />

• Jobs möglichst als Single-Step definieren und lieber Job-Netze<br />

aufbauen. Damit sind auch parallele Schritte möglich.<br />

• Ereignisgesteuerte Jobs sind rein zeitgesteuerten Jobs vorzuziehen.<br />

• „Single Point of Service“ und Monitoring anstreben.<br />

• KIS - Keep it simple.<br />

• Für jeden Job Recovery-Maßnahme definieren.<br />

• Schnittstellenservices einrichten.<br />

12.02.2007 <strong>PTA</strong> <strong>GmbH</strong>, Unternehmensberatung 89


Schnittstellprogrammierung<br />

5. 5. Tipps<br />

• Wenn möglich XML benutzen.<br />

• Plausibilisierungsschritte definieren.<br />

• Protokollierung einsetzen.<br />

• Level für Protokollierung nutzen.<br />

• Eskalierung bei Fehlern aufsetzen.<br />

• Fehlerbehandlung standardisieren.<br />

• Framework für Entwicklung aufsetzen.<br />

• Konzept für fehlerhafte Daten entwickeln.<br />

• Transaktionsverarbeitung sinnvoll einsetzen.<br />

• Wenn möglich Daten verifizieren.<br />

• Logische Löschung bevorzugen.<br />

• Historienkonzept in Betracht ziehen.<br />

• Konzept für Auslösung von Schnittstellen, nicht alles in Trigger<br />

packen.<br />

12.02.2007 <strong>PTA</strong> <strong>GmbH</strong>, Unternehmensberatung 90


Schnittstellprogrammierung<br />

5. 5. Tipps<br />

• Störung der Schnittstellenverarbeitung einplanen.<br />

• GaU-Behebung planen.<br />

• Betriebshandbuch erstellen und pflegen.<br />

• Behebung von Störungen testen.<br />

• Schnittstellen möglichst atomar anlegen.<br />

• System-Stopp-Möglichkeit implementieren, Spezialisten haben noch<br />

Zugriff.<br />

• Rücknahme von Änderungen und Löschungen sind als<br />

Recoverymaßnahme evtl. notwendig - analysieren!<br />

• Transparenz über Datenstand (ist Schnittstelle gelaufen ?) für<br />

Anwender herstellen, d.h. solche Fragen in Gesamtsystem<br />

integrieren.<br />

• Prüfen, ob DB-Snapshots zur Lösung in Frage kommen<br />

12.02.2007 <strong>PTA</strong> <strong>GmbH</strong>, Unternehmensberatung 91


Schnittstellprogrammierung<br />

Geschafft !<br />

!<br />

12.02.2007 <strong>PTA</strong> <strong>GmbH</strong>, Unternehmensberatung 92

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!