Generierung eines CIM Frachtbriefes im PDF-Formatstatic.sws.bfh.ch/download/MAS-06-01-11-doc.pdf ·...

66
Diplombericht Generierung eines CIM Frachtbriefes im PDF-Format Abstract: Das Ziel ist es, innerhalb des CIS Print Projektes, ein CIM Frachtbrief Formular zu generieren, zu drucken und dies den Schnittstellen zur Verfügung zu stellen. Für das Formular-Layout wird XSL-FO eingesetzt. Mit Hilfe von XSLT, XPATH und einem Dokumentgenerator werden Sendungsdaten in den dafür vorgesehenen Feldern repräsentiert. Klasse.Nr MAS-06-01.11 Autoren: Ahmed Hamza Spitalweg 53 3280 Murten Tel: 026 670 26 17 [email protected] [email protected] Betreuer: Stephan Moser SBB Informatik Lindenhofstrasse 1 3048 Worblaufen [email protected] Experte: Dr. Beatrice Amrhein Software-Schule Schweiz Wankdorffeldstrasse 102 CH-3014 Bern Tel.:+41 31 84 83 276 [email protected] Datum:10.09.2008

Transcript of Generierung eines CIM Frachtbriefes im PDF-Formatstatic.sws.bfh.ch/download/MAS-06-01-11-doc.pdf ·...

Page 1: Generierung eines CIM Frachtbriefes im PDF-Formatstatic.sws.bfh.ch/download/MAS-06-01-11-doc.pdf · hamza1@bfh.ch Betreuer: Stephan Moser SBB Informatik Lindenhofstrasse 1 3048 Worblaufen

Diplombericht

Generierung eines CIM Frachtbriefes im PDF-Format

Abstract: Das Ziel ist es, innerhalb des CIS Print Projektes, ein CIM Frachtbrief Formular zu generieren, zu drucken und dies den Schnittstellen zur Verfügung zu stellen. Für das Formular-Layout wird XSL-FO eingesetzt. Mit Hilfe von XSLT, XPATH und einem Dokumentgenerator werden Sendungsdaten in den dafür vorgesehenen Feldern repräsentiert. Klasse.Nr MAS-06-01.11

Autoren: Ahmed Hamza Spitalweg 53 3280 Murten Tel: 026 670 26 17 [email protected] [email protected]

Betreuer: Stephan Moser SBB Informatik Lindenhofstrasse 1 3048 Worblaufen [email protected]

Experte: Dr. Beatrice Amrhein Software-Schule Schweiz Wankdorffeldstrasse 102 CH-3014 Bern Tel.:+41 31 84 83 276 [email protected]

Datum:10.09.2008

Page 2: Generierung eines CIM Frachtbriefes im PDF-Formatstatic.sws.bfh.ch/download/MAS-06-01-11-doc.pdf · hamza1@bfh.ch Betreuer: Stephan Moser SBB Informatik Lindenhofstrasse 1 3048 Worblaufen

Diplombericht

Generierung eines CIM Frachtbriefes im PDF-Format Seite 2

Zusammenfassung Einleitung Diese Diplomarbeit ist ein Teil des CIS Print Projektes, das zum Ziel hat, alle für SBB Cargo relevanten Beförderungsdaten in elektronischer Form zu generieren und zu drucken. Hauptdokument für einen Cargo Transport ist der so genannte CIM Frachtbrief, auf dem alle erfassten Sendungsdaten ersichtlich sind und der den Güterwagen begleitet. Dieses Dokument soll im CIS Print realisiert werden.

Zielsetzung Das Ziel dieser Diplomarbeit ist es, der SBB Cargo und ihren Kunden die Möglichkeit zu geben, die CIM Frachtbriefe im Cargo Informationssystem (CIS Cargo), in dessen Internet Schnittstelle (CIS Online) und der CIS Client Schnittstelle elektronisch im PDF Format zu drucken.

Realisierung In einem ersten Schritt wird das Layout vom CIM Frachtbrief Formular mit Hilfe von XSL-FO erstellt. Der zweite Schritt besteht daraus, einen Dokumentgenerator (Frachtbrief Generator) in Java zu schreiben. Dieser Generator muss die Spezifikation gemäss dem Geschäftsprozess der Sendungsabfertigung von SBB Cargo anwenden. Mit Hilfe von XSLT und XPATH werden die Beförderungsdaten in den dafür vorgesehenen Feldern des CIM Frachtbriefes repräsentiert. Schließlich sollen die Applikationen CIS Online und CIS Client erweitert werden, damit die Kunden von dort aus die CIM Frachtbriefe drucken können.

Besprechung Die Ziele, die im Pflichtenheft definiert wurden, konnten vollumfänglich realisiert werden.

Page 3: Generierung eines CIM Frachtbriefes im PDF-Formatstatic.sws.bfh.ch/download/MAS-06-01-11-doc.pdf · hamza1@bfh.ch Betreuer: Stephan Moser SBB Informatik Lindenhofstrasse 1 3048 Worblaufen

Diplombericht

Generierung eines CIM Frachtbriefes im PDF-Format Seite 3

Inhaltsverzeichnis 1. Vorbemerkungen.............................................................................6

1.1 Leserkreis..................................................................................................... 6 1.2 Aufbau des Dokuments ................................................................................ 6 1.3 Glossar......................................................................................................... 6

2. Ausgangslage .................................................................................8 2.1 Umfeld.......................................................................................................... 8 2.2 IST-Situation ................................................................................................ 9 2.3 Anforderungen ............................................................................................. 9

3. Projektziele....................................................................................10 4. Analyse .........................................................................................11

4.1 CIM Frachtbrieflayout ..................................................................................11 4.2 Frachtbriefgenerator....................................................................................12

4.2.1 CIS Print Umfeld .................................................................................................12 4.2.2 Produkt Frachtbriefgenerator..............................................................................12

4.3 Aufruf des Frachtbriefdruckes aus der CIS Online Schnittstelle ..................12 4.4 Use case Diagramm....................................................................................13

4.4.1 Benutzerkreise (Actors) ......................................................................................13 4.4.2 Anwendungsfall Diagramm: Frachtbriefdruck.....................................................14

4.5 Aufruf des Frachtbriefdruckes aus der CIS Client Schnittstelle ...................16 4.6 Sequenz Diagramm Frachtbriefgenerator innerhalb CIS Print ....................17

5. Frachtbriefdruckdaten ...................................................................18 5.1 CIM Frachtbriefdruckkriterien ......................................................................18

5.1.1 Frachtbriefdruckstatus ........................................................................................18 5.1.2 Verkehrsart der Sendung....................................................................................18 5.1.3 Drucken Seite 2 des CIM Frachtbriefes..............................................................18 5.1.4 Sprache ..............................................................................................................18

5.2 CIM Frachtbrieffelder...................................................................................19 5.2.1 CIM Frachtbrieffelder und -Bedingungen............................................................20 5.2.2 Frachtbrieffelder ohne Sendungsdaten ..............................................................27 5.2.3 Spezielle Darstellung Felder 21, 24, 25..............................................................27 5.2.4 Technische Attributliste des CIM Frachtbriefes ..................................................28

6. Design & Implementierung............................................................31 6.1 CIM Frachtbrieflayout ..................................................................................31

6.1.1 Allgemeines ........................................................................................................31 6.1.2 Die Style-Informationen ......................................................................................32 6.1.2.1 Die frachtbrief-xsl.xsl Datei .............................................................................33 6.1.2.2 Die frachtbriefdaten-Seite1 und 2.xsl Dateien ................................................34 6.1.2.3 Die pageMaster-xsl.xsl ...................................................................................34 6.1.2.4 Die tableMaster.xsl Datei ................................................................................35 6.1.3 Implementierung und Testen mit Oxygen..........................................................36

6.2 Frachtbriefgenerator....................................................................................37 6.2.1 Die Klasse (FrachtbriefDocGen.java). ................................................................37 6.2.1.1 Die Methode generate() ..................................................................................38 6.2.1.2 Die Methode createRootElement() .................................................................38 6.2.1.3 Methode createFrachtbriefElement() ..............................................................39 6.2.1.4 Methode createFBSeite1Element() ................................................................40 6.2.1.5 Methode createCIModerCUVElement ............................................................41 6.2.2 Stammdaten .......................................................................................................44 6.2.3 Die Utility Klassen...............................................................................................46

Page 4: Generierung eines CIM Frachtbriefes im PDF-Formatstatic.sws.bfh.ch/download/MAS-06-01-11-doc.pdf · hamza1@bfh.ch Betreuer: Stephan Moser SBB Informatik Lindenhofstrasse 1 3048 Worblaufen

Diplombericht

Generierung eines CIM Frachtbriefes im PDF-Format Seite 4

6.2.4 Objektbaum und Klassendiagramm....................................................................47 6.3 Aufruf des Frachtbriefdruckes aus CIS Online ............................................49

6.3.1 Allgemeines ........................................................................................................49 6.3.2 CIS Online Überblick ..........................................................................................49 6.3.3 Klasse DocGenBefaService ...............................................................................50 6.3.4 CIS Online Erweiterungen und Anpassungen ....................................................52 6.3.4.1 Maske Suchkriterien .......................................................................................53 6.3.4.2 Maske drucken / Korrekturen..........................................................................56

7. Testen ...........................................................................................59 7.1 Allgemeines.................................................................................................59 7.2 Test Frachtbriefgenerator im CIS Print........................................................59

7.2.1 Vorgehen ............................................................................................................59 7.2.2 Input XML File (printBefa.xml) ............................................................................59 7.2.3 Testbeispiel.........................................................................................................60 7.2.4 Kleiner Auszug der getesteten Sendungen: .......................................................62

7.3 Test Aufruf des Frachtbriefdruckes aus CIS Online ....................................63 7.4 Test Aufruf des Frachtbriefdruckes aus CIS Client......................................63

Anhang...................................................................................................64 A Muster CIM Frachtbriefformular Seite 1 ......................................................64 B Muster CIM Frachtbriefformular Seite 2 ......................................................65 C Quellenverzeichnis ......................................................................................66

Page 5: Generierung eines CIM Frachtbriefes im PDF-Formatstatic.sws.bfh.ch/download/MAS-06-01-11-doc.pdf · hamza1@bfh.ch Betreuer: Stephan Moser SBB Informatik Lindenhofstrasse 1 3048 Worblaufen

Diplombericht

Generierung eines CIM Frachtbriefes im PDF-Format Seite 5

Abbildungsverzeichnis Abbildung 1 : CIS Cargo und deren Schnittstellen ...................................................................8 Abbildung 2 : BefaData ..........................................................................................................12 Abbildung 3 : Use case ..........................................................................................................14 Abbildung 4 : Sequenz Diagramm..........................................................................................17 Abbildung 5 : Seitenaufteilung................................................................................................31 Abbildung 6 : Header..............................................................................................................32 Abbildung 7 : Feldbeschreibung.............................................................................................33 Abbildung 8 : tableMaster.......................................................................................................35 Abbildung 9 : Generierung eines Frachtbriefes im Oxygen....................................................36 Abbildung 10 : die Klasse FrachtbriefDocGen .......................................................................37 Abbildung 11 : Parameter der Methode createRootElement..................................................39 Abbildung 12 : Objektbaum....................................................................................................39 Abbildung 13 : Klassendiagramm Frachtbriefgenerator .........................................................48 Abbildung 14 : Struts und Model 2 Prinzip .............................................................................49 Abbildung 15 : Klassendiagramm DocGenBefa .....................................................................50 Abbildung 16: Schematische Darstellung um den Frachtbrief zu drucken.............................52 Abbildung 17 : Maske Suchkriterien.......................................................................................53 Abbildung 18 : Maske drucken / Korrekturen .........................................................................56 Abbildung 19 : CIS Client Sendungsdatenerfassung .............................................................61 Abbildung 20 : Sendung = 831899648...................................................................................62 Abbildung 21 : Frachtbriefdruck aus CIS Online ....................................................................63

Page 6: Generierung eines CIM Frachtbriefes im PDF-Formatstatic.sws.bfh.ch/download/MAS-06-01-11-doc.pdf · hamza1@bfh.ch Betreuer: Stephan Moser SBB Informatik Lindenhofstrasse 1 3048 Worblaufen

Diplombericht

Generierung eines CIM Frachtbriefes im PDF-Format Seite 6

1. Vorbemerkungen Die in diesem Dokument beschriebene Implementierung bzw. Generierung eines CIM Frachtbriefes (siehe Anhang A&B) und dessen Abruf von CIS Online und CIS Client wird im Rahmen einer Diplomarbeit für die Master Thesis an der Berner Fachhochschule realisiert.

1.1 Leserkreis Zu dem Leserkreis gehören folgende Personen: Experten, Betreuer, Mitarbeiter von SBB AG, Mitarbeiter von SBB Cargo AG.

1.2 Aufbau des Dokuments Der Diplombericht bezieht sich auf das Pflichtenheft. Das Dokument beschreibt die Ausgangslage und die Analyse sowie die Anforderungen in fachlicher und technischer Hinsicht für die Implementierung von einem CIM Frachtbrief. Danach beschreibt das Dokument die Realisierung (Design und Implementierung) des Frachtbrieflayouts, des Frachtbriefgenerators und deren Aufruf von der Schnittstelle CIS Online. Weiter wird erläutert, wie das System getestet wurde. Das Dokument beschreibt auch gewisse Bestandteile von CIS Print, welche für die Nachvollziehbarkeit der Arbeit notwendig sind.

1.3 Glossar CIM Einheitliche Rechtsvorschriften für den Vertrag über die internationale

Eisenbahnbeförderung von Gütern

CIS Cargo Cargo Informationssystem (Sendungsabfertigungssystem)

CIS Online Internet Schnittstelle zu CIS Cargo, welche den Kunden die Möglichkeit gibt, auf elektronischem Weg Daten mit SBB Cargo auszutauschen.

CIS Client Dezentraler Teil von CIS Cargo, welcher innerhalb der SBB benutzt wird.

CIS Print In Java geschriebene Standalone Applikation, welche zum Ziel hat, alle SBB Cargo relevante Dokumente elektronisch zu generieren.

XML (Extensible Markup Language) ist eine Auszeichnungssprache zur Darstellung hierarchisch strukturierter Daten in Form von Textdateien.

XSL (Extensible Stylesheet Language) ist eine Familie von Sprachen zur Erzeugung von Layouts für XML-Dokumente.

XSLT (XSL Transformation) ist die Sprache, um XML umzuwandeln.

XPATH (XML Path Language) ist eine vom W3-Konsortium entwickelte Anfragesprache, um Teile eines XML-Dokumentes zu adressieren.

XSL-FO (Extensible Stylesheet Language – Formatting Objects) ist eine XML-Anwendung, die beschreibt, wie Text, Bilder, Linien und andere grafische Elemente auf einer Seite angeordnet werden.

Page 7: Generierung eines CIM Frachtbriefes im PDF-Formatstatic.sws.bfh.ch/download/MAS-06-01-11-doc.pdf · hamza1@bfh.ch Betreuer: Stephan Moser SBB Informatik Lindenhofstrasse 1 3048 Worblaufen

Diplombericht

Generierung eines CIM Frachtbriefes im PDF-Format Seite 7

SVG (Scalable Vector Graphics) ist ein Standard zur Beschreibung

zweidimensionaler Vektorgrafiken in der XML-Syntax.

FOP (Formatting Object Processor ) ist ein Druckformatierer, welcher XML-Dokumente gemäss einem XSL-FO Dokument in ein PDF-Dokument umwandelt.

RAD Rational Application Developer von IBM

Websphere Produktlinie der Firma IBM, die unterschiedliche Software für Anwendungsintegration, Infrastruktur und eine integrierte Entwicklungsumgebung umfasst.

RUP Abkürzung für Rational Unified Process, iterativer Softwareentwicklungsprozess.

JAR Java Archive, gepackte Archivdatei ähnlich wie ZIP.

MQ Plattformunabhängige Middleware-Software der Firma IBM.

IMS Informationssystem der Firma IBM. Es besteht aus den Komponenten IMS/DB (hierarchisches Datenbanksystem) und IMS/TM (Transaktionsmonitor – frühere Bezeichnung: IMS/DC). Der IMS/TM kann auch ohne die IMS/DB eingesetzt werden. Er bietet Schnittstellen via MQSeries, TCP/IP und Java.

Struts Open-Source-Framework für die Präsentations- und Steuerungs-schicht von Java-Webanwendungen.

Servlet Als Servlets bezeichnet man Java-Klassen, deren Instanzen innerhalb eines J2EE Applicationservers Anfragen von Clients entgegennehmen und beantworten.

JSP JavaServer Pages, abgekürzt JSP, ist eine von Sun Microsystems entwickelte auf JHTML basierende Technik, die im Wesentlichen zur einfachen dynamischen Erzeugung von HTML- und XML-Ausgaben eines Webservers dient.

CUV Leerwagen Sendungen

FBA Frachtberechnungsabschnitt

NHM Das harmonisierte Güterverzeichnis (franz: Nomenclature harmonisée des marchandises NHM) ist ein System des Internationalen Eisenbahnverbandes zur einheitlichen Klassifizierung von Gütern im Eisenbahngüterverkehr.

RID Regelung zur internationalen Beförderung gefährlicher Güter im Schienenverkehr bzw. Ordnung für die internationale Eisenbahnbeförderung gefährlicher Güter.

CIT Internationales Eisenbahntransportkomitee

UIC Internationaler Eisenbahnverband

Page 8: Generierung eines CIM Frachtbriefes im PDF-Formatstatic.sws.bfh.ch/download/MAS-06-01-11-doc.pdf · hamza1@bfh.ch Betreuer: Stephan Moser SBB Informatik Lindenhofstrasse 1 3048 Worblaufen

Diplombericht

Generierung eines CIM Frachtbriefes im PDF-Format Seite 8

2. Ausgangslage

2.1 Umfeld Das Cargo Sendungsabfertigungssystem (CIS Cargo) ist das Kernprodukt für das Auftrags- und Transportmanagement. Alle nationalen und internationalen Cargo Transporte werden durch dieses System gesteuert. Eine der Hauptaufgaben des Systems ist die zentrale Sendungsdatenerfassung. Um einen Beförderungsauftrag im CIS Cargo erfassen zu können, braucht die SBB Cargo von ihren Kunden die Beförderungsdaten (z.B. Absender, Empfänger, Ware, Lieferungsdatum, Versandbahnhof, Empfangsbahnhof). Um diese Daten an die SBB Cargo zu übermitteln, stehen dem Kunden mehrere Möglichkeiten zur Verfügung:

Er kann die Daten via Fax an das Call Center der SBB Cargo schicken, wo ein Mitarbeiter sie manuell mit Hilfe von CIS Client (dezentraler Teil vom Sendungsabfertigungssystem) erfasst und bearbeitet.

Er kann die Daten selber elektronisch via eine Internet Schnittstelle (CIS Online) erfassen und an CIS Cargo senden, wo sie dann teilweise von den SBB Cargo Mitarbeitern weiterverarbeitet werden. Ca. 35% der Sendungsdaten kommen via CIS Online.

Er kann seine Daten via Edifact Schnittstelle (Business –Business) an CIS Cargo senden.

Abbildung 1 : CIS Cargo und deren Schnittstellen

Page 9: Generierung eines CIM Frachtbriefes im PDF-Formatstatic.sws.bfh.ch/download/MAS-06-01-11-doc.pdf · hamza1@bfh.ch Betreuer: Stephan Moser SBB Informatik Lindenhofstrasse 1 3048 Worblaufen

Diplombericht

Generierung eines CIM Frachtbriefes im PDF-Format Seite 9

2.2 IST-Situation CIS Cargo ist ca. 20 Jahre alt und wurde in den Programmiersprachen Cobol, C sowie Cool:Gen geschrieben. Letztes Jahr wurde ein Projekt lanciert, um CIS Cargo zu erneuern. Das erste Teilprojekt ist das so genannte CIS Print. CIS Print ist zum aktuellen Zeitpunkt eine Java Standalone Applikation, welche die Voraussetzung bietet, mit möglichst geringem Aufwand einen Dokumenten-Generierungsservice zu bauen. Eine der ersten Aufgaben von CIS Print ist die Dokumentgenerierung. Hauptdokument für einen Cargo Transport ist der so genannte Frachtbrief (FBF), auf welchem die erfassten Sendungsdaten ersichtlich sind und der den Güterwagen begleitet. Die IST-Situation kann wie folgt zusammengefasst werden:

Die momentan genutzte Möglichkeit, den CIM Frachtbrief im CIS Cargo zu drucken, ist veraltet und muss abgelöst werden.

Die Möglichkeit, den CIM Frachtbrief elektronisch zu drucken, ist im CIS Print nicht realisiert.

Zudem gibt es von der Schnittstelle CIS Online aus keine Möglichkeit den CIM Frachtbrief zu drucken.

2.3 Anforderungen

Das CIM Frachtbrief Formular soll im CIS Print implementiert werden, um das veraltete Verfahren des Frachtbriefdrucks abzulösen.

Es soll möglich sein, einen CIM Frachtbrief oder eine Liste von CIM Frachtbriefen zu drucken.

Zusätzlich soll auch den Kunden der Internet Schnittstelle CIS Online und CIS Client, die Möglichkeit geboten werden, den CIM Frachtbrief mittels CIS Print zu drucken.

Page 10: Generierung eines CIM Frachtbriefes im PDF-Formatstatic.sws.bfh.ch/download/MAS-06-01-11-doc.pdf · hamza1@bfh.ch Betreuer: Stephan Moser SBB Informatik Lindenhofstrasse 1 3048 Worblaufen

Diplombericht

Generierung eines CIM Frachtbriefes im PDF-Format Seite 10

3. Projektziele Das Ziel des Projektes (Diplomarbeit) ist:

den CIM Frachtbrief auf der neuen CIS Print Javaplattform zu generieren. Dazu gehören: - Design und Layout des CIM Frachtbriefes, - Frachtbriefgenerator programmieren.

den CIS Online Kunden die Möglichkeit zu geben, aufgrund der erfassten Beförderungsdaten Frachtbriefe zu drucken. Mit Hilfe von Masken ist es im CIS Online möglich aufgrund einiger Kriterien Beförderungsdaten zu suchen und das dazugehörige Suchresultat darzustellen. Aber damit der Kunde einen ausgewählten Frachtbrief drucken kann, müssen auch: - die Maske für die Darstellung der Suchresultate, welche den Kunden zur

Auswahl zur Verfügung steht, für die CIM Frachtbriefgenerierung erweitert werden;

- alle nötigen Klassen realisiert oder erweitert werden, damit der Aufruf von CIS Print für die CIM Frachtbriefgenerierung möglich wird.

den CIS Kunden die Möglichkeit zu geben, auf der neuen Plattform die Frachtbriefe zu drucken. Allerdings gehört hier die Implementierung der Maske für die Eingabe der Suchkriterien und ihre Darstellung nicht zum Projektziel.

Page 11: Generierung eines CIM Frachtbriefes im PDF-Formatstatic.sws.bfh.ch/download/MAS-06-01-11-doc.pdf · hamza1@bfh.ch Betreuer: Stephan Moser SBB Informatik Lindenhofstrasse 1 3048 Worblaufen

Diplombericht

Generierung eines CIM Frachtbriefes im PDF-Format Seite 11

4. Analyse In diesem Kapitel wird eine kurze Übersicht über das CIM Frachtbrieflayout, den Frachtbriefgenerator, den Aufruf des Frachtbriefdruckes aus der CIS Online Schnittstelle und die definierten Use-Cases beschrieben. Es soll einen kurzen Einstieg in das Thema ermöglichen.

4.1 CIM Frachtbrieflayout Ein CIM Frachtbrief ist ein Formular, das kommerzielle Beförderungsdaten für den internationalen Güterverkehr enthält und dessen Layout den Richtlinien des Internationalen Eisenbahntransportkomitees (CIT) entspricht. Ein CIM Frachtbrief besteht aus 2 Seiten. Beide Seiten sind in ca. 100 Feldern eingeteilt, die ihrerseits nach logischen Zusammenhängen (Geschäftprozesse) gruppiert sind (z. B. Versanddaten, Empfangsdaten, Finanzdaten, FBA …). Jedes Feld ist nummeriert und einige davon sind zweisprachig (Französisch und Deutsch) beschriftet (siehe Anhang A&B). Ausführliche Informationen zum CIM Frachtbrief finden sich im Dokument „Handbuch CIM-Frachtbrief (GLV-CIM)“ unter folgendem Link: http://www.sbbcargo.com/hb_cim_d.pdf . Die zusätzlichen CIM-Frachtbrief-Dokumente • Frankaturrechnung Teile 1-3 • Frankaturrechnung Seite 2 Teile 1-3 • Wagenliste sind nicht Bestandteil dieser Diplomarbeit. Bei den CIM Frachtbriefausdrucken sollen folgende Punkte gemäss CIT beachtet werden:

Druckfarbe: grün oder schwarz Inhalt: erfasste Beförderungsdaten und

- Vermerk «Originalausdruck des elektronischen Frachtbriefs mit gleicher Beweiskraft wie der Papier-Frachtbrief – JJJJ-MM-TT (Ausdruckdatum) – ausgestellt durch … (Beförderer)»,

- Vermerk «Kopie», falls wegen Beschädigung oder Verlust des Originalausdrucks ein zusätzlicher Ausdruck erstellt werden muss.

Format und Darstellung (Layout): so wenig Abweichungen vom Muster wie möglich. Um dieses Ziel zu erreichen wird das Layout des CIM Frachtbriefes mit Hilfe von XSL-FO realisiert, da XSL-FO das visuelle Layout-Modell definiert und mit Hilfe von einem Transformations-Tool (FOP) in PDF transformiert. Meist wird XSL-FO nicht direkt geschrieben. Stattdessen wird ein XSLT Stylesheet geschrieben, wo Formatierungsanweisungen und Daten in eine FO-Datei zusammengebracht werden. Daher sind Kenntnisse von XSLT und XPath nötig, um geeignete Umwandlungen im FO-Format zu schreiben. XSL-FO ermöglicht, das Layout millimetergenau zu definieren und besitzt Elemente, die Textblöcke mit verschiedenen Schriftarten in mehreren Grössen und Dicken auf den Seiten, Grafiken und horizontalen Linien und anderem repräsentieren.

Page 12: Generierung eines CIM Frachtbriefes im PDF-Formatstatic.sws.bfh.ch/download/MAS-06-01-11-doc.pdf · hamza1@bfh.ch Betreuer: Stephan Moser SBB Informatik Lindenhofstrasse 1 3048 Worblaufen

Diplombericht

Generierung eines CIM Frachtbriefes im PDF-Format Seite 12

4.2 Frachtbriefgenerator

4.2.1 CIS Print Umfeld Die Rahmenbedingungen für die Implementierung des CIM Frachtbriefes sind durch CIS Print vorgegeben. CIS Print bietet eine Umgebung, um einerseits Dokumente zu generieren und andererseits die erfassten Beförderungsdaten aus der Datenbank zu holen. Diese Daten werden aus dem JMS Message in Java Objekte (Klassen) übertragen, die die folgende Struktur darstellen:

Abbildung 2 : BefaData Es ist zu beachten, dass diese Java-Klassen wiederum Unterklassen beinhalten (bspw. Absender, Empfänger, Ware). Zudem stellen diese Klassen alle für den Zugriff auf die Beförderungsdaten benötigten Methoden zur Verfügung.

4.2.2 Produkt Frachtbriefgenerator Der Frachtbriefgenerator soll mit Hilfe von den oben definierten Klassen bzw. Objekten und deren Methoden, die CIM Frachtbrief relevanten Daten (Absendercode, Firmennummer, Strasse, Empfängername, Warencode, Wagennummer, usw.) extrahieren, Frachtbriefkriterien prüfen, Frachtbrieffeldkriterien prüfen und die nötigen Stammdaten aus der Oracle Datenbank via Toplink holen. Dann soll er sie als Array Objekt aufbauen und als Objekt (Stream) der Klasse javax.activation.DataSource an CIS Print zurückgeben. Die Zwischenschritte werden somit als Stream gespeichert und verwaltet.

4.3 Aufruf des Frachtbriefdruckes aus der CIS Online Schnittstelle Nach der Erstellung und dem Testen vom Frachtbriefgenerator in CIS Print, wird ein JAR File (Frachtbriefgenerator, XSL Dateien, CIS Print Klassen, alle nötige Bibliotheken und usw.) auf CIS Print erstellt und in den Applikationsserver von CIS Online exportiert.

Page 13: Generierung eines CIM Frachtbriefes im PDF-Formatstatic.sws.bfh.ch/download/MAS-06-01-11-doc.pdf · hamza1@bfh.ch Betreuer: Stephan Moser SBB Informatik Lindenhofstrasse 1 3048 Worblaufen

Diplombericht

Generierung eines CIM Frachtbriefes im PDF-Format Seite 13

Damit man für den Frachtbriefdruck dieses JAR File im CIS Online benutzen kann, werden Anpassungen und Erweiterungen in dieser Schnittstelle (JSP Seiten, Javaklassen und Programme) durchgeführt:

die Maske für die Resultatdarstellungen (Liste der TransportID’s) der Suchkriterien erweitern,

die Klasse DocGenBefa benutzen: diese Klasse dient als Input für CIS Print. Sie muss alle notwendigen Informationen enthalten, damit die Generierung durchgeführt werden kann,

ein Servlet implementieren, um die Resultate (PDF Stream) vom CIS Print entgegenzunehmen und an den Browser zu senden.

4.4 Use case Diagramm Die Use cases beschreiben, wie aus der Benutzersicht das Drucken der CIM Frachtbriefe funktioniert.

4.4.1 Benutzerkreise (Actors) Es gibt aus Benutzersicht verschiedene Benutzerrollen. In den nachfolgend aufgeführten Use cases wird auf diesen Rollen Bezug genommen. Actor Beschreibung Kunde (Bsp. Migros) Kunde , der einen Frachtbrief drucken möchte SBB Mitarbeiter SBB Mitarbeiter, der einen Frachtbrief drucken möchte Host Beförderungsdaten werden auf dem Host gespeichert und

geholt.

Page 14: Generierung eines CIM Frachtbriefes im PDF-Formatstatic.sws.bfh.ch/download/MAS-06-01-11-doc.pdf · hamza1@bfh.ch Betreuer: Stephan Moser SBB Informatik Lindenhofstrasse 1 3048 Worblaufen

Diplombericht

Generierung eines CIM Frachtbriefes im PDF-Format Seite 14

4.4.2 Anwendungsfall Diagramm: Frachtbriefdruck Dieses Use case beschreibt die Interaktion zwischen Akteuren (Kunde, SBB Mitarbeiter und Host) und dem betrachteten System (CIS Online, CIS Client).

Host

Kunde (Migros) oderSBB Mitarbeiter

CIS Online oder CIS Client

Kriterien prüfen

Suchkriterien eingeben

CIS Print Frachtbriefgenerieren

UserId undPassword eingeben

URL eingeben

Frachtbrief drucken

liste der TransportID'sliefern

Drucken / Korrekturrenwählern

<<include>>

<<include>>

Abbildung 3 : Use case Hier wird nur das für den Frachtbriefdruck relevante Use case beschrieben: Use case 1.1 : Suchkriterien eingeben Der SBB Mitarbeiter oder der Kunde geben auf der Maske die Suchkriterien ein.

Name Suchkriterien eingeben

Nummer 1.1

Beteiligte Akteure Kunde oder SBB Mitarbeiter

Vorbedingungen Beförderungsdaten müssen erfasst sein

Eingehende Daten Suchkriterien (Beispiel Datum, Wagennummer…)

Ergebnis Suchkriterien sind OK oder Fehlermeldung

Nr. Akteur Was 1 Kunde, SBB Mitarbeiter Suchmaske starten

2 Kunde, SBB Mitarbeiter Suchkriterien eingeben

Ablauf:

3 Kunde, SBB Mitarbeiter abrufen

Page 15: Generierung eines CIM Frachtbriefes im PDF-Formatstatic.sws.bfh.ch/download/MAS-06-01-11-doc.pdf · hamza1@bfh.ch Betreuer: Stephan Moser SBB Informatik Lindenhofstrasse 1 3048 Worblaufen

Diplombericht

Generierung eines CIM Frachtbriefes im PDF-Format Seite 15

Use case 1.2 : Kriterien prüfen Die eingegebenen Kriterien werden gemäss Stammdaten geprüft und dienen als Grundlage für die Suche in den Beförderungsdaten.

Name Kriterien prüfen

Nummer 1.2

Beteiligte Akteure Vorheriger Anwendungsfall Suchkriterien eingeben, Host

Vorbedingungen Suchkriterien sind eingegeben

Eingehende Daten Suchkriterien (Beispiel Datum, Wagennummer…)

Ergebnis Suchkriterien sind OK oder Fehlermeldung

Nr. Akteur Was 1 Use case Suchkriterien eingeben Liefert Suchkriterien

2 Host Liefert Daten

Ablauf:

3 Suchkriterien werden geprüft

Use case 1.3 : Liste der TransportID’s liefern Der Host liefert die Liste der TransportID’s, nachdem die Kriterien überprüft wurden.

Name Liste der TransportID’s liefern

Nummer 1.3

Beteiligte Akteure Host, Kunde

Vorbedingungen Die Frachtbriefkriterien müssen überprüft werden

Eingehende Daten Suchkriterien

Ergebnis Eine Liste von Beförderungsidentifikationen (Transport-ID)

Ausgehende Daten -

Nr. Akteur Was 1 Host Liste der TransportID’s liefern

Ablauf:

2 Kunde Bekommt liste der TransportID’s

Use case 1.4 : Frachtbrief drucken Der SBB Mitarbeiter oder der Kunde drucken je nach ihrem Bedarf der Liste der TransportID’s.

Name Frachtbriefe drucken

Nummer 1.4

Beteiligte Akteure SBB Mitarbeiter oder Kunde, Host

Vorbedingungen Liste der TransportID’s ist markiert

Eingehende Daten Liste der TransportID’s

Ergebnis Frachtbriefe werden gedruckt (CIS Print wird aufgerufen)

Ausgehende Daten -

Nr. Akteur Was 1 SBB- Mitarbeiter oder

Kunden Gewünschte TransprotID wählen

Ablauf:

2 SBB- Mitarbeiter oder Kunden

Frachtbriefe drucken lassen (CIS Print abrufen)

Page 16: Generierung eines CIM Frachtbriefes im PDF-Formatstatic.sws.bfh.ch/download/MAS-06-01-11-doc.pdf · hamza1@bfh.ch Betreuer: Stephan Moser SBB Informatik Lindenhofstrasse 1 3048 Worblaufen

Diplombericht

Generierung eines CIM Frachtbriefes im PDF-Format Seite 16

Use case 1.5 : CIS Print Frachtbriefgenerieren

Name CIS Print Frachtbrief generieren

Nummer 1.5

Beteiligte Akteure Vorheriger Anwendungsfall Frachtbrief drucken.

Vorbedingungen

Eingehende Daten Eine Liste von Beförderungsidentifikationen (Transport-ID) von CIS Client oder ein Objekt von CIS Online

Ergebnis CIM Frachtbrief als PDF File

Ausgehende Daten -

Nr. Akteur Was 1 Host Liefert Inputdaten.

2 Daten extrahieren

3 Feldkriterien prüfen

Ablauf:

4 Kunde Erhält PDF Datei

4.5 Aufruf des Frachtbriefdruckes aus der CIS Client Schnittstelle Für diese Schnittstelle wird ein JAR File (Frachtbriefgenerator, XSL Dateien, CIS Print Klassen, alle nötigen Bibliotheken, usw.) von CIS Print erstellt und in den Citrixserver von CIS Client exportiert. Mit Hilfe dieses JAR Files können die Benutzer von CIS Client Frachtbriefe drucken. Wie die Kommunikation zwischen CIS Client und CIS Print auf dem Citrixserver gemacht wird, ist nicht Teil der Diplomarbeit. Hier wurde auf die Darstellung von Use cases verzichtet, da sie ähnlich wie die Use cases der Schnittstelle CIS Online sind.

Page 17: Generierung eines CIM Frachtbriefes im PDF-Formatstatic.sws.bfh.ch/download/MAS-06-01-11-doc.pdf · hamza1@bfh.ch Betreuer: Stephan Moser SBB Informatik Lindenhofstrasse 1 3048 Worblaufen

Diplombericht

Generierung eines CIM Frachtbriefes im PDF-Format Seite 17

4.6 Sequenz Diagramm Frachtbriefgenerator innerhalb CIS Print Im folgenden Diagramm ist die Generierung eines Frachtbriefes innerhalb CIS Print aus technischer Sicht aufgezeigt.

sd Interaction

Befadata (Host)StammdatenApache FOPDocGen(FrachtbriefDocGen)DocGenBefaServiceComponent User

1.2: generate

generate

1.2.2.1.1: Frachtbriefkriterien prüfen

1.2.2.1.4: * create fragments

1.2.2: generate

* Stammdaten lesen

1.2.2.1: Sendungsdaten extrahieren

getDocGenBefaService

1.2.2.1.5: transform

1.2.2.1.3: * Stammdaten lesen

generate

1: *

1.1: getDocGenBefaService

1.2.1: * getBeförderungsdaten

transform

* getBeförderungsdaten

1.2.2.1.2: * Frachtbrieffeld generieren

Abbildung 4 : Sequenz Diagramm

1) DocGenBefaService wird benutzt, um den gewünschten Dokumentengenerator zu erstellen.

2) Die Methode generate() abrufen. Als Argument bekommt die Methode generate() die Liste der Sendungsidentifikationen, welche gedruckt werden müssen.

3) Gewünschte Beförderungsdaten aufgrund der Sendungsidentifikation auf dem Host holen.

4) Frachtbriefkriterien prüfen 5) Frachtbrieffeldkriterien prüfen 6) Nötige Stammdaten auf der Oracle Datenbank holen. 7) Fragmente erstellen. 8) Mit Hilfe von XSLT Processor und XSL-FO Processor den PDF File erstellen.

Page 18: Generierung eines CIM Frachtbriefes im PDF-Formatstatic.sws.bfh.ch/download/MAS-06-01-11-doc.pdf · hamza1@bfh.ch Betreuer: Stephan Moser SBB Informatik Lindenhofstrasse 1 3048 Worblaufen

Diplombericht

Generierung eines CIM Frachtbriefes im PDF-Format Seite 18

5. Frachtbriefdruckdaten

5.1 CIM Frachtbriefdruckkriterien

5.1.1 Frachtbriefdruckstatus Mit Hilfe des Attributes Frachtbriefdruckstatus DruckStat/fbf kann man bestimmen, ob ein originales Frachtbriefformular oder eine Kopie davon gedruckt wird. Im Frachtbriefgenerator wird das Attribut von der Klasse GlobalDaten/DruckStat/Cbf extrahiert. Wenn der Frachtbriefdruckstatus = null ist, wird für diese Sendung der originale Frachtbrief nur einmal gedruckt. Danach muss der Status von null auf “01“ auf der Datenbank aktualisiert werden. Wenn der Frachtbriefdruckstatus = “01“ ist, wurde für diese Sendung bereits der originale CIM-Frachtbrief gedruckt. Nur eine Kopie wird gedruckt. Es ist kein Update nötig. Wenn Frachtbriefdruckstatus = “09“ ist, wird für diese Sendung kein CIM-Frachtbrief gedruckt.

5.1.2 Verkehrsart der Sendung Mit Hilfe des Attributes Verkehrsart (verkart) wird die Verkehrsart der Sendung (Export, Import und Transit) festgestellt. Das Attribute verkart wird im Frachtbriefgenerator aus der Klasse GlobalDaten extrahiert. Folgende Bedingungen müssen beachtet werden:

Für Exportsendungen (Verkart = 5) werden 3 Exemplare des CIM Frachtbriefes pro Sendung gedruckt.

Für Import- und Transitsendungen (Verkart = 5 oder 7) werden 5 Exemplare des CIM Frachtbriefes pro Sendung gedruckt.

Für Binnenverkehr (Verkart = 1) wird keinen CIM Frachtbrief gedruckt.

5.1.3 Drucken Seite 2 des CIM Frachtbriefes In dem Frachtbriefgenerator werden die Attribute von den Klassen KommDaten/Cfb/Cgb extrahiert. Seite 2 wird nach folgenden Bedingungen gedruckt:

Die Sendung hat mehr als 3 Frachtberechnungsabschnitte (FBA) Die Sendung hat zusätzliche Gebühren Die Inhalte der Attribute fbabetrUfb (Betrag aus einem FBA / Frachtbetrag Unfranko)

und fbabetrffb (Betrag aus einem FBA / Frachtbetrag Franko) müssen > 0 sein.

5.1.4 Sprache Für den Druck sind die Sprachen Deutsch und Französisch möglich. Die Formulare sind vom Internationalen Eisenbahntransportkomitee (CIT) zweisprachig vorgegeben.

Page 19: Generierung eines CIM Frachtbriefes im PDF-Formatstatic.sws.bfh.ch/download/MAS-06-01-11-doc.pdf · hamza1@bfh.ch Betreuer: Stephan Moser SBB Informatik Lindenhofstrasse 1 3048 Worblaufen

Diplombericht

Generierung eines CIM Frachtbriefes im PDF-Format Seite 19

5.2 CIM Frachtbrieffelder Die Sendungsdaten von CIS Cargo werden in den dafür vorgesehenen Feldern des Frachtbriefes gedruckt. Sind in CIS in den entsprechenden Eingabefeldern keine Daten vorhanden, erfolgt kein Druck in dem entsprechenden Frachtbrieffeld.

Page 20: Generierung eines CIM Frachtbriefes im PDF-Formatstatic.sws.bfh.ch/download/MAS-06-01-11-doc.pdf · hamza1@bfh.ch Betreuer: Stephan Moser SBB Informatik Lindenhofstrasse 1 3048 Worblaufen

Diplombericht

Generierung eines CIM Frachtbriefes im PDF-Format Seite 20

5.2.1 CIM Frachtbrieffelder und -Bedingungen Die detaillierten Informationen zu den Attributen sind im Kapitel 5.2.4 beschrieben.

Feldnr Name Datenfeld Extraktion aus der KlasseBefaData

Bemerkungen und Feldbedingungen

1

Absender Klasse: GlobalDaten/Kunde Attribute: kuname, kunamezus, strasse, plz und ort, telnr, faxnr, email mwstnr Klasse: GlobalDaten/Befaid Attribute: befanr

Unterschrift: Wenn Beförderungsauftragsnummer > 0 ist, dann Beförderungsauftrags- nummer drucken. Sonst ---> Text Deutsch : « gemäss Beförderungsauftrag des Kunden » Text Französisch : « Selon l’ordre de transport du client »

2

Absender Code Klasse: GlobalDaten/Kunde Attribute: firmnr und firmfil

3

Code Frachtzahler Versand

Klasse: KommDaten/Kunde Attribute: firmnr und firmfil

4

Empfänger Klasse: GlobalDaten/Kunde Attribute: kuname, kunamezus, strasse, plz und ort, telnr, faxnr, email mwstnr

5

Empfänger Code Klasse: GlobalDaten/Kunde Attribute: firmnr und firmfil

6 Code Frachtzahler Empfang

Klasse: KommDaten/Kunde Attribute: firmnr und firmfil

7

Absender-Erklärungen Klasse: GlobalDaten/Kunde/ErkAbs Attribute: Code und Text

Max 3 Zeilen ( Bei den Codes 14 und 15 wird immer auf die Wagenliste verwiesen und die Detaildaten werden auf der Wagenliste gedruckt )

Page 21: Generierung eines CIM Frachtbriefes im PDF-Formatstatic.sws.bfh.ch/download/MAS-06-01-11-doc.pdf · hamza1@bfh.ch Betreuer: Stephan Moser SBB Informatik Lindenhofstrasse 1 3048 Worblaufen

Diplombericht

Generierung eines CIM Frachtbriefes im PDF-Format Seite 21

auf der 4. Zeile wird wenn vorhanden die Verladebewilligung mit Fixtext: „16 Andere Erklärungen: Verladebew.“ „16 Autres déclarations: N° d’autorisa.“ gedruckt

8

Absenderreferenz Klasse: GlobalDaten/Kunde Attribute: referenz

9

Beilagen zum Frachtbrief Klasse: KommDaten/Beilfbf Attribute: Code und Text

10

Ablieferungsort Klasse: KommDaten/LadeEntlade/Leo/Kunde Attribute: Plz und Ort Wenn nicht Klasse: GlobalDaten/Bhf Attribute: Lastellet_EM Klasse: GlobalDaten/Bhf/BhfBase Attribute: uicbahn (Name von stammdaten) und bhfnr

Ort des Empfängers (Entladeort) in Verbindung mit der Klasse LEO Wenn nicht vorhanden Text Ladestelle Empfang Auf Zeile 2 Bahnhofname des Empfangsbahnhofs und Land

11

Code Ablieferungsort Klasse: KommDaten/LadeEntlade/Leo/Kunde Attribute: Plz

PLZ des Empfängers (Entladeort) in Verbindung mit der Klasse LEO Wenn nicht vorhanden Ladestelle Empfang

12 Code Empfangsbahnhof Klasse: GlobalDaten/Bhf/BhfBase Attribute: uicbahn und bhfnr

13 Kommerzielle Bedingungen

Klasse: KommDaten/Komm2/kommbed Attribute: code und ergText

14

Nummer Tarif / Kundenabkommen

Klasse: KommDaten/Komm1/TarifnrAbs Attribute: tarifnr1 und tarifnr2

‚Vom Absender verlangter Tarif’ Vertragsart ab Tarifstammdaten in der Tabelle TTAF (ab FGT; 1 = ZF/Abkommen, 2 = Tarif)

Page 22: Generierung eines CIM Frachtbriefes im PDF-Formatstatic.sws.bfh.ch/download/MAS-06-01-11-doc.pdf · hamza1@bfh.ch Betreuer: Stephan Moser SBB Informatik Lindenhofstrasse 1 3048 Worblaufen

Diplombericht

Generierung eines CIM Frachtbriefes im PDF-Format Seite 22

15

Vermerke für den Empfänger

Klasse: GlobalDaten/Kunde Attribute: vermerk

Übernahmeort Klasse: KommDaten/LadeEntlade/Leo/Kunde Attribute: Plz und Ort Wenn nicht Klasse: GlobalDaten/Bhf Attribute: Lastellet_VS Klasse: GlobalDaten/Bhf/BhfBase Attribute: uicbahn (Name von stammdaten) und bhfnr

Ort des Absenders (Ladeort) in Verbindung mit der Klasse LEO Wenn nicht vorhanden Text Ladestelle Versand Auf Zeile 3 Bahnhofname des Versandbahnhofes

16

Übernahme Datum / Zeit Klasse: KommDaten/LadeEntlade/Leo/LehZeit Attribute: datumLehAb und ZeitLehAb

Format MM-TT-HH

17 Code des Übernahmeortes

Klasse: KommDaten/LadeEntlade/Leo/Kunde Attribute: Plz

PLZ des Absenders (Lade Ort) in Verbindung mit der Klasse LEO Wenn nicht vorhanden Code Ladestelle Versand Auf Zeile 3 Bahnhofname(Bahnhofname) des Versandbahnhofes

18

Wagennummer Klasse: Wagen Attribute: wagnr

Wagennummer Ist eine Wagenliste nötig Text “Gemäss Wagenliste“ gedruckt

19

Transitfakturierung Gedruckt wird der Wert von Stammdaten Tabelle TPP329 mit der Subtnr(Subtabellennummer) = 100009

20

Zahlung der Kosten Klasse: KommDaten/Komm1 Attribute: frankc Klasse: KommDaten/Komm1 Attribute: incoterm

Das Kreuz Franko wird für alle Frankaturen gemacht welche eine (Teil)-Strecke franko haben

Page 23: Generierung eines CIM Frachtbriefes im PDF-Formatstatic.sws.bfh.ch/download/MAS-06-01-11-doc.pdf · hamza1@bfh.ch Betreuer: Stephan Moser SBB Informatik Lindenhofstrasse 1 3048 Worblaufen

Diplombericht

Generierung eines CIM Frachtbriefes im PDF-Format Seite 23

Klasse: KommDaten/Komm1/bhfFK Attribute: bhfnr

Bahnhofname des BHF_FK

21

Warendaten Klasse: Waren Attribute: warsh, warbez, warname, warmasseEmw Klasse: WagenDaten Attribute: Plomben Klasse: WagenDaten/wgLm Attribute: anzahl, code, text

Siehe Kapitel (5.2.3) Spezielle Darstellung Felder 21, 24, 25

22

Aussergewöhnliche Sendung

Klasse: Wagen Attribute: befgen

Das Checkbox wird mit ‘X’ ankreuzt, wenn das Attribut befgen nicht leer ist

23 RID Klasse: Ware/Rid Das Checkbox wird mit ‘X’ ankreuzt, wenn min. 1 Ware/Wagen/Container RID(Gefahrgutcode) hat

24 Warencode Klasse: Waren Attribute: warsh

Siehe Kapitel (5.2.3) Spezielle Darstellung Felder 21, 24, 25

25

Masse Klasse: Waren Attribute: warmasseEmw

Siehe Kapitel (5.2.3) Spezielle Darstellung Felder 21, 24, 25

26

Wert des Gutes Klasse: KommDaten/Komm2/wertgut Attribute: code und ergText

27

Interesse an der Lieferung Klasse: KommDaten/Komm2/wertgut Attribute: betrag und waehr

28

Nachnahme wird nicht angezeigt

29

Ort und Datum der Ausstellung

Klasse: GlobalDaten/Er Attribute: datum oder Klasse: GlobalDaten/abg Attribute: datum

Ort ab Stammdaten Tabelle PP329 Subtnr 10012 Gedruckt wird: ‚Ort, TT.MM.JJJJ

Page 24: Generierung eines CIM Frachtbriefes im PDF-Formatstatic.sws.bfh.ch/download/MAS-06-01-11-doc.pdf · hamza1@bfh.ch Betreuer: Stephan Moser SBB Informatik Lindenhofstrasse 1 3048 Worblaufen

Diplombericht

Generierung eines CIM Frachtbriefes im PDF-Format Seite 24

30

CIM - Fbf / Wagenbrief CUV

CUV wird angekreuzt für LEERWAGEN und wenn alle NHM der Waren/Container auf Stammdaten Tabelle PP329 Subtnr 10003 vorhanden sind. Sonst immer CIM

48

Überprüfung Klasse: KommDaten/Ueberpruef Attribute: EVU und Text

49

Frankaturcode Klasse: KommDaten/Komm1 Attribute: frankc Klasse: KommDaten/Komm1/gebcFK Attribute: gebc (1- 5) Klasse: KommDaten/Komm1/bhfFK Attribute: uicbahn und bhrnr

50 Leitungswege Klasse: GlobalDaten/uicLw/Uiclc Attribute: uicleit,uicleitt

Gedruckt werden die Leitungswege inkl. Text in der erfassten Reihenfolge.

51 Zollbehandlung Klasse: KommDaten/Zoll Attribute: zollort Klasse: KommDaten/Zoll/BhfBase Attribute: uicbahn, bhfnr

52 Frankaturrechnung Klasse: KommDaten/Komm2 Attribute: frkRech

Wenn frkRech = ‘E’ ist, wird Checkbox angekreuzt

53 Nachnahmebegleitschein Klasse: KommDaten/ Attribute: Nummer und Text

Wird nicht angezeigt

54 Tatbestandsaufnahme Klasse: KommDaten/ Tatbestand Attribute: Code und Text

Page 25: Generierung eines CIM Frachtbriefes im PDF-Formatstatic.sws.bfh.ch/download/MAS-06-01-11-doc.pdf · hamza1@bfh.ch Betreuer: Stephan Moser SBB Informatik Lindenhofstrasse 1 3048 Worblaufen

Diplombericht

Generierung eines CIM Frachtbriefes im PDF-Format Seite 25

55 Lieferfristverlängerung Klasse: KommDaten/Lieferfrist Attribute: Code und Text

Max. 2 Zeilen werden gezeigt

56 Erklärungen des Beförderers

Klasse: KommDaten/ErklBefoe Attribute: EVU und Text

Max. 4 Zeilen werden gezeigt

57

Andere Beförderer Klasse: GlobalDaten/Sdnid Attribute: evuWv und Text von Stammdaten

Mit dem vertraglichen Beförderer werden auf Stammdaten Tabelle TTAFF die Angaben für Feld 57 gelesen. Gedruckt wird: EVU-Text für Bahnhofname_ SA – Bahnhofname TSE und FlagBef

58 a)

Vertraglicher Beförderer Unterschrift

Stammdaten (Stempel KSC Fribourg) Wenn vertraglicher Beförderer in der Stammdaten Tabelle TTAUFB = 2185 ist, wird ‘Stempel’ KSC von der Stammdatentabelle TPP329 mit Subtabellennummer 100012 gedruckt. als Unterschrift wird die TransportID gedruckt. Wenn Flag VGVV = TRUE und es sich nicht um eine reine CUV - Sendung handelt, wird ein Kreuz gemacht und die EVU-VFF gedruckt. sonst Nur der EVU-Text des VFF wird gedruckt.

58 b) Vereinfachtes Eisenbahnversandverfahren + Code Hauptverpflichteter

Dieses Feld wird nur gedruckt wenn es sich nicht um einen CUV handelt.

59

Ankunftsdatum Klasse: GlobalDaten/est Attribute: datum

62

Sendungs-Identifikation Klasse: GlobalDaten/sdgid Attribute: sdgnr, evuWv Klasse: GlobalDaten/sdgid/bhfWv Attribute: uicbahn, bhfnr

70 FBA Anfang/Ende Klasse: KommDaten/fba/bhfFa Attribute: Uicbahn, bhfnr Klasse: KommDaten/fba/bhfFe Attribute: Uicbahn, bhfnr

Page 26: Generierung eines CIM Frachtbriefes im PDF-Formatstatic.sws.bfh.ch/download/MAS-06-01-11-doc.pdf · hamza1@bfh.ch Betreuer: Stephan Moser SBB Informatik Lindenhofstrasse 1 3048 Worblaufen

Diplombericht

Generierung eines CIM Frachtbriefes im PDF-Format Seite 26

71 Leitungswegcode Klasse: KommDaten/fba/leitcTar Attribute: leitcTar

72

NHM-Code Klasse: Waren Attribute: warsh (wird berechnet)

Gedruckt wird die NHM der schwersten Ware oder die NHM der schwersten Ladeeinheit (Gewicht Ladeeinheit inkl. Waren)

73

Waehrung Klasse: KommDaten/Cfb/waehrFba Attribute: waerhrcd

74 Frachtplichtige Masse Klasse: Waren/ Attribute: warmasseFmw (wird berechnet)

Total Warenmasse frachtpflichtig

75 Tarif / Kundenabkommen Klasse: KommDaten/Cfb/tarifnrFba Attribute: tarifnr1, tarifnr2

79 Gebühren Klasse: KommDaten/Cfb/Cgb Attribute: gebbetrFba (1-5) Klasse: KommDaten/Cfb/Cgb/gebcFba Attribute: gebc

80 Nachnahme Übertrag aus Feld 28 (wird nicht angezeigt) 81 Fba Betrag Franko Klasse: KommDaten/Cfb

Attribute: fbabetrFfb

82 Fba Betrag Unfranko Klasse: KommDaten/Cfb Attribute: fbabetrUfb

84 Gebühren Betrag Franko Klasse: KommDaten/Cfb/Cgb/gebcFba Attribute: fbabetrFgb

85 Gebühren Betrag Franko Klasse: KommDaten/Cfb/Cgb/gebcFba Attribute: fbabetrUgb

Page 27: Generierung eines CIM Frachtbriefes im PDF-Formatstatic.sws.bfh.ch/download/MAS-06-01-11-doc.pdf · hamza1@bfh.ch Betreuer: Stephan Moser SBB Informatik Lindenhofstrasse 1 3048 Worblaufen

Diplombericht

Generierung eines CIM Frachtbriefes im PDF-Format Seite 27

5.2.2 Frachtbrieffelder ohne Sendungsdaten In folgenden Frachtbrieffeldern werden keine Daten gedruckt: Feld Inhalt Bemerkung 40 Code 41 Code 42 Code 43 Code 44 Code 45 Code 46 Code 47 Code 76 Km/Zone 77 Zuschläge/Kürzungen 78 Frachtsatz 83 Kurs Franko 86 Kurs überwiesen 87 FBA in Erhebungswährung zu Lasten des Absenders 88 FBA in Tarifwährung zu Lasten des Absenders 89 FBA in Erhebungswährung zu Lasten des Empfängers 90 FBA in Tarifwährung zu Lasten des Empfängers 91 Übertrag von Ergänzungsblättern Franko 92 Übertrag von Ergänzungsblättern überwiesen 93 Gesamtbetrag der bei Abgang zu erhebenden Beträge 94 Gesamtbetrag der bei Ankunft zu erhebenden Beträge 99 Zollvermerke

5.2.3 Spezielle Darstellung Felder 21, 24, 25 Im Feld 21 erscheint der Text „gemäss Wagenliste“ unter folgenden Bedingungen:

wenn mehr als ein Wagen erfasst ist ODER wenn mehr als eine Ware ( ohne NHM 997200) erfasst ist ODER wenn ein RID pro Ware erfasst ist ODER wenn es Ladeeinheiten auf der Sendung hat ODER wenn Wagendecken oder Mehrweg-Gurten auf der Sendung sind.

Das Feld 24 bleibt leer und im Feld 25 erscheint das effektive Gewicht der Ware. Feld 21 (Auf dem Frachtbriefformular) Feld 24 Feld 25 Gemäss Wagenliste

WARMASSE_EWS

Sonst müssen in den Feldern 21, 24, 25 alle Angaben erscheinen:

Warenbezeichnung gem. Kunde oder Text NHM, Gewicht, Tauschgeräte, Plomben, immatrikulierte Lademittel im Zusammenhang mit

Masse.

Feld 21 Feld 24 Feld 25 WARBEZ_CR oder WARNAME , Wagennummer (nur bei CUV) (wenn NHM 997200 erfasst:) NHM-Text von 997200 drucken Plomben: WAGENPLOMBEN Tauschgeräte: X Paletten / X Rahmen / X Deckel

WARSH_CR

WARMASSE_EMW (wenn 997200:) WARMASSE_ EMW von 997200

Page 28: Generierung eines CIM Frachtbriefes im PDF-Formatstatic.sws.bfh.ch/download/MAS-06-01-11-doc.pdf · hamza1@bfh.ch Betreuer: Stephan Moser SBB Informatik Lindenhofstrasse 1 3048 Worblaufen

Diplombericht

Generierung eines CIM Frachtbriefes im PDF-Format Seite 28

5.2.4 Technische Attributliste des CIM Frachtbriefes Attribut-Name

Feldtyp N(Nummerisch)

AN(Alphanummerisch)

Feldlänge Feldbezeichnung

firmnr abs N 6 Firmen-Nummer / Absender

firmfil abs N 2 Filialcode zu Firmen-Nr.

kuname AN 30 Kundenname / alle Kundenarten (Rolle der FIRMNR)

strasse AN 30 Strasse

plz AN 10 Postleitzahl / alle Kundenarten (Rollen der FIRMNR)

adressat AN 30 Adressat des Kunden nur Kundenart ABS und EMP (Rollen der FIRMNR)

kontakt tel AN 30 Telefonnummer des Verladers

mwst nr AN 50 Mwst-Nr Kunde referenz abs AN 13 Referenz / Absender

befanr N 9 Beförderungsauftragsnummer

firmnr fzv N 6 Firmen-Nummer / Frachtzahler Empfang

firmfil fzv N 2 Filialcode zu Firmen-Nr.

firmnr emp N 6 Firmen-Nummer / Empfänger

firmfil emp N 2 Filialcode zu Firmen-Nr.

strasse AN 30 Strasse

plz AN 10 Postleitzahl / alle Kundenarten (Rollen der FIRMNR)

adressat AN 30 Adressat des Kunden nur Kundenart ABS und EMP (Rollen der FIRMNR)

firmnr fze N 6 Firmen-Nummer / Frachtzahler Empfang firmfil fze N 2 Filialcode zu Firmen-Nr.

erklaer abs AN 100 Erklärung / Absender

fbf begleit1 AN 40 Frachtbriefbegleitpapiere 1-3

fbf begleit2 AN 40 Frachtbriefbegleitpapiere 1-3

fbf begleit3 AN 40 Frachtbriefbegleitpapiere 1-3

beilad AN 1 Beilad-Sendung

lastellt em AN 12 Text der Ladestelle / Entladestelle im Empfang

lastelle em N 4 Code der Ladestelle / Entladestelle im Empfang

uicbahn em N 2 Landnummer der UIC-Bahn / Empfangsbahnhof

bhfnr em N 6 Bahnhofnummer / Empfangs-Bahnhof

kommres bez VAR 50 Bezeichnung der kommerziellen Reserve

tarufnr abs N 6 Tarifnummer / vom Absender verlangt TARIFNR1 (N4) und TARIFNR2 (N2)

vermerk emp AN 100 Vermerk / für den Empfänger

lastelle vs N 4 Code der Ladestelle / Ladestelle auf Versandbahnhof

lastellt vs AN 12 Text der Ladestelle / Ladestelle auf Versandbahnhof

Page 29: Generierung eines CIM Frachtbriefes im PDF-Formatstatic.sws.bfh.ch/download/MAS-06-01-11-doc.pdf · hamza1@bfh.ch Betreuer: Stephan Moser SBB Informatik Lindenhofstrasse 1 3048 Worblaufen

Diplombericht

Generierung eines CIM Frachtbriefes im PDF-Format Seite 29

wagnr AN 12 Wagennummer

uicbahn vs N 2 Landnummer der UIC-Bahn / Versand

uicbahn em N 2 Landnummer der UIC-Bahn / Empfangsbahnhof

gebc fk1-5 N 2 Gebühren-Code / Zusatz zu Frankaturvorschr.

frank AN 1 Zeigt an, ob eine Gebühr franko oder unfranko ist.

frankc N 4 Frankaturcode

befpspez spb AN 20 Aussergewöhnliche Sendung warsh cr N 8 Waren-Identifikation nach SH / Sendung

warbez cr AN 100 Warenbezeichnung (vom Kunden) / Sendungsbezogen

warmasse emw N 7 Masse der Ware / Effektivmasse der Ware pro Sendung

warmasse ewt N 7 Masse der Ware / Effektivmasse der Ware pro Wagen

laufnr rid N 4 Laufnummer / fortlaufende Nummerierung der RID-Angaben pro Ware

sdgbetr waw N 10.2 Sendungs-Betrag / Warenwert

sdgbetr nn N 10.2 Sendungs-Betrag / Nachnahme

sdgbetr int N 10.2 Sendungs-Betrag / Interesse an der Lieferung

waehrcd il N 3 Währungscode / Interesse an der Lieferung

datum abg DATE 10 gewünschtes Abgangsdatum datum er DATE 10 Datum / Erstellungsdatum Sendung

frankc N 4 Frankaturcode

gebc fba N 2 Gebühren-Code / Einzelgebühren eines FBA

gebc fk1-5 N 2 Gebühren-Code / Zusatz zu Frankaturvorschr.

uicbahn fk N 2 Landnummer der UIC-Bahn / Franko Grenze

bhfname fk AN 25 Bahnhofname / Franko bis Grenze

leist code N 2 Leistungscode

zoll ort AN 30 Zu verzollen in

bhfnr zoll N 6 Bahnhofnummer Verzollung

uicbahn zoll N 2 Landnummer Zollstelle

frkrech AN 1 Überwachung Frankaturrechnung datum rfr AN 10 Rückkunftsdatum Frankaturrechnung

datum est AN 10 Datum / Empfangsbestätigung

sdgnr cim N 9 Sendungsnummergenerierung. Sendungsnummer CIM

uicbahn vs N 2 Landnummer der UIC-Bahn / Versand

bhfnr vs N 6 Bahnhofnummer / Versand

evu vs N 4 EVU in Sendungsident

Page 30: Generierung eines CIM Frachtbriefes im PDF-Formatstatic.sws.bfh.ch/download/MAS-06-01-11-doc.pdf · hamza1@bfh.ch Betreuer: Stephan Moser SBB Informatik Lindenhofstrasse 1 3048 Worblaufen

Diplombericht

Generierung eines CIM Frachtbriefes im PDF-Format Seite 30

uicbahn fa N 2 Landnummer der UIC-Bahn / FBA-Anfang

bhfnr fa N 6 Bahnhofnummer / FBA-Anfang

uicbahn fe N 2 Landnummer der UIC-Bahn / FBA-Ende

bhfnr fe N 6 Bahnhofnummer / FBA-Ende

leitctar N 3 Leitungscode Tarif waehrcd fba N 3 Währungscode+G3236 / FBA

tarifnr fba N 6 Tarifnummer / in einem FBA angewendet 2 Felder auf dem PC : TARIFNR1 (N4) und TARIFNR2 (N2)

gebbetr fba N 10 Gebührenbetrag / FBA

gebc fba N 2 Gebühren-Code / Einzelgebühren eines FBA

fbabetr ffb N 10 Betrag aus einem FBA / Frachtbetrag Franko

fbabetr fgb N 10 Betrag aus einem FBA / Gebührenbetrag Franko

fbabetr ufb N 10 Betrag aus einem FBA / Frachtbetrag Unfranko

fbabetr ugb N 10 Betrag aus einem FBA / Gebührenbetrag Unfranko

Page 31: Generierung eines CIM Frachtbriefes im PDF-Formatstatic.sws.bfh.ch/download/MAS-06-01-11-doc.pdf · hamza1@bfh.ch Betreuer: Stephan Moser SBB Informatik Lindenhofstrasse 1 3048 Worblaufen

Diplombericht

Generierung eines CIM Frachtbriefes im PDF-Format Seite 31

6. Design & Implementierung

6.1 CIM Frachtbrieflayout

6.1.1 Allgemeines Das CIM Frachtbrieflayout wurde wie erwähnt mit Hilfe von XSL-FO realisiert. Es besteht aus zwei A4 (210mm X 297mm) Seiten:

Seite 1 (Hauptseite) ist in die Bereiche region-before und region-body aufgeteilt. Seite 2 besteht nur aus einem region-body. Beide Seiten haben einen Seitenrand

(margin) von 1 cm.

21 cm x 29.7 cm 21 cm x 29.7 cm

Abbildung 5 : Seitenaufteilung

<fo:layout-master-set>

<fo:simple-page-master master-name=”A4-erste” page-width=”210mm” page-height=”297mm” margin=”10mm”> <fo:region-body margin-top=”1.2cm”/> <fo:region-before extent=”1.2cm”/> </fo:simple-page-master> <fo:simple-page-master master-name=”A4-zweite” page-width=”210mm”page-height=”297mm” margin=”10mm”> <fo:region-body/> </fo:simple-page-master> <fo:page-sequence-master master-name=“ersteSeite“> <fo:single-page-master-reference master-reference=“A4-erste“/> </fo:page-sequence-master> <fo:page-sequence-master master-name=“zweiteSeite“> <fo:single-page-master-reference master-reference=”A4-zweite”/> </fo:page-sequence-master> </fo:layout-master-set>

Page 32: Generierung eines CIM Frachtbriefes im PDF-Formatstatic.sws.bfh.ch/download/MAS-06-01-11-doc.pdf · hamza1@bfh.ch Betreuer: Stephan Moser SBB Informatik Lindenhofstrasse 1 3048 Worblaufen

Diplombericht

Generierung eines CIM Frachtbriefes im PDF-Format Seite 32

Region-before Mit Hilfe des Elements <fo:static-content> wurde das Region-before realisiert.

Abbildung 6 : Header

<fo:static-content flow-name=”xsl-region-before”>

<fo:block>

Hier kommen noch folgende Elemente:

Das Element Container für die feste Positionierung (<fo:block-container>… </fo:block-container>)

Externes Bild (Kreis) und dazugehörige Nummer Statischer Text Rechteck (Border des Elementes Container) Ein Text, ob das Frachtbrief Original oder Kopie ist

</fo:block>

</fo:static-content>

Region – Body Das Region–body ist der Hauptbereich der Seite und besteht aus zahlreichen <fo:block> und <fo:block-container> sowie aus anderen Elementen des XSL-FO, die für den CIM Frachtbrief nötig sind. Die Elemente des Region-Bodys werden im nächsten Kapitel beschrieben.

6.1.2 Die Style-Informationen Wie bei der Analyse erwähnt wurde, wurde XSL-FO nicht direkt geschrieben. Stattdessen wurde ein XSLT Stylesheet geschrieben, in dem Formatierungsanweisungen und Daten in einer FO-Datei zusammengebracht werden. Dann werden mit Hilfe von XSLT und XPATH die Daten in den dafür vorgesehenen Feldern des CIM Frachtbriefes positioniert. Die Style-Informationen bestehen aus folgenden Dateien:

frachtbriefe-xsl.xsl frachtbriefdaten_seite1.xsl frachtbriefdaten_seite2.xsl pageMaster.xsl tableMaster.xsl

Um unterschiedliche Sprachen zu unterstützen, erstellten wir noch eine XML-Datei (NLS.xml). Diese Datei wird dann mit Hilfe einer XSLT Funktion (dokument($srcval) eingelesen. Die Stylesheets wurden im CIS Print Projekt gespeichert und nur den Entwicklern zur Verfügung gestellt.

Page 33: Generierung eines CIM Frachtbriefes im PDF-Formatstatic.sws.bfh.ch/download/MAS-06-01-11-doc.pdf · hamza1@bfh.ch Betreuer: Stephan Moser SBB Informatik Lindenhofstrasse 1 3048 Worblaufen

Diplombericht

Generierung eines CIM Frachtbriefes im PDF-Format Seite 33

6.1.2.1 Die frachtbrief-xsl.xsl Datei Es handelt sich um die Hauptseite, die die statische Struktur des CIM Frachtbriefes definiert. Diese Datei beschreibt die folgenden Objekte: Frachtbrieffelder Die Felder vom CIM Frachtbrief werden mit dem XSL-FO Element <fo:block-container> realisiert und an beliebiger Stelle auf der Seite positioniert. Beispiel: <fo:block-container position=”absolute” top=”8mm” left=”70mm” width=”29.5mm” height=”5mm” border-left=”0.7pt solid #008751” border-top=”none” border-right=”none” border-bottom=”0.7pt solid #008751”> ….. </fo:block-container> Linien (Rahmen) Die Linien wurden als border Attribute des Elements <fo:block-container> dargestellt. (s. vorheriges Beispiel). Kreise und dazugehörige Nummern Die Kreise (leer, grün gefüllt) stehen als Bilder von Typ png

- rond vert plein.png - rond vert.png - rond vert pleinrectangle.png

zur Verfügung. Sie wurden mit Hilfe vom Photoshop-Programm erstellt und werden in XSL-FO integriert.

Abbildung 7 : Feldbeschreibung Statischer Text (LabelText) Für die Feldbeschreibung des Frachtbriefes wurden keine separaten XML Dateien definiert; die Feldbeschreibung wurde direkt mit dem Element <fo:block> in den dafür vorgesehenen Platz geschrieben. Beispiel: <!-- Feld 7 ErklaerungsAbsender --> <fo:block-container position=”absolute” top=”8mm” left=”99.7mm” width=”85.7mm” height=”22.5mm” border-left=”none” border-top=”none” border-right=”2pt solid #008751” border-bottom=”0.7pt solid #008751” overflow=”hidden”> <!-- Kreis 7 Bild--> <fo:block-container> <fo:block> <fo:external-graphic src=”rond-vert-plein.png” />

Page 34: Generierung eines CIM Frachtbriefes im PDF-Formatstatic.sws.bfh.ch/download/MAS-06-01-11-doc.pdf · hamza1@bfh.ch Betreuer: Stephan Moser SBB Informatik Lindenhofstrasse 1 3048 Worblaufen

Diplombericht

Generierung eines CIM Frachtbriefes im PDF-Format Seite 34

</fo:block> </fo:block-container> <!-- Kreis 7 Nummer--> <fo:block-container xsl:use-attribute-sets=”circle-1nr-white”> <fo:block>7</fo:block> </fo:block-container> <!--Feld 7 statische Feldbeschreibung--> <fo:block-container xsl:use-attribute-sets=“label-positionierung“> <fo:block xsl:use-attribute-sets= »fix-text »>Déclarations del\’\expéditeur</fo:block> <fo:block xsl:use-attribute-sets=“fix-text“>Erklärungen desAbsenders</fo:block> </fo:block-container> <!-- *************************************************************** --> </fo:block-container>

6.1.2.2 Die frachtbriefdaten-Seite1 und 2.xsl Dateien Die Stylesheet Informationen bezüglich der Anbindung der dynamischen Daten werden separat in diesen Dateien gespeichert.

Beispiel: <!--Feld 3 Frachtzahler Versand (KommDaten_KundeFrv)--> <fo:block-container position=”absolute” top=”14mm” left=”74mm” width=”29.5mm” height=”5mm”> <fo:block xsl:use-attribute-sets=”dynamic-text-nummeric”> <fo:inline> <xsl:value-of select=”FirmnrFzv” /> </fo:inline> &nbsp; <fo:inline> <xsl:value-of select=”FirmfilFzv” /> </fo:inline> </fo:block> </fo:block-container>

6.1.2.3 Die pageMaster-xsl.xsl Die pageMaster.xsl Datei beinhaltet die gemeinsamen Attributlisten für die verschiedenen Text-Bereiche und ermöglicht so die Erstellung eines konsistenten Layouts:

- Fixer LabelText

<xsl:attribute-set name=”fix-text”> <xsl:attribute name=”font-family”>Arial</xsl:attribute> <xsl:attribute name=”font-size”>4.5pt</xsl:attribute> <xsl:attribute name=”font-weight”>bold</xsl:attribute> <!-- Pantone 348U (grün) -->

Page 35: Generierung eines CIM Frachtbriefes im PDF-Formatstatic.sws.bfh.ch/download/MAS-06-01-11-doc.pdf · hamza1@bfh.ch Betreuer: Stephan Moser SBB Informatik Lindenhofstrasse 1 3048 Worblaufen

Diplombericht

Generierung eines CIM Frachtbriefes im PDF-Format Seite 35

<xsl:attribute name=“color“>#008751</xsl:attribute> </xsl:attribute-set>

- Dynamischer Text (Daten)

<xsl:attribute-set name=”dynamic-text”> <xsl:attribute name=”font-family”>Arial, Helvetica, Courier</xsl:attribute> <xsl:attribute name= »font-size »>7pt</xsl:attribute> <xsl:attribute name=”font-weight”>normal</xsl:attribute> <xsl:attribute name=”line-height”>8pt</xsl:attribute> <xsl:attribute name=”padding”>0.5mm</xsl:attribute> <xsl:attribute name=”text-align”>start</xsl:attribute> </xsl:attribute-set>

6.1.2.4 Die tableMaster.xsl Datei Die gemeinsamen Tabellen-Strukturen werden auch in einer separaten Datei (tableMaster.xsl) gespeichert.

Abbildung 8 : tableMaster Beispiel: <xsl:template name=”layout_table52_54”> <fo:table table-layout=”fixed”> <!--Frankaturrechnung--> <fo:table-column column-width=”proportional-column-width(42.5)”/> <fo:table-column column-width=”proportional-column-width(29.5)”/> <fo:table-column column-width=”proportional-column-width(13.5)”/> <fo:table-body> <fo:table-row height=”5.8mm”> <fo:table-cell border-left=”none” border-top=”none” border-right=”0.7pt solid #008751” border-bottom=”0.7pt solid #008751”> <fo:block></fo:block> </fo:table-cell>

Page 36: Generierung eines CIM Frachtbriefes im PDF-Formatstatic.sws.bfh.ch/download/MAS-06-01-11-doc.pdf · hamza1@bfh.ch Betreuer: Stephan Moser SBB Informatik Lindenhofstrasse 1 3048 Worblaufen

Diplombericht

Generierung eines CIM Frachtbriefes im PDF-Format Seite 36

<fo:table-cell border-left=”none” border-top=”none” border-right=”none” border-bottom=”0.7pt solid #008751”> <fo:block></fo:block> </fo:table-cell> <fo:table-cell border-left=”0.7pt solid #008751” border-top=”none” border-right=”none” border-bottom=”0.7pt solid #008751”> <fo:block></fo:block> </fo:table-cell> </fo:table-row> </fo:table-body> </fo:table> </xsl:template>

6.1.3 Implementierung und Testen mit Oxygen Für die Erstellung und das Testen des Layouts wird das Tool Oxygen verwendet. Wenn die Tests erfolgreich verlaufen, wird das erstellte Layout im CIS Print integriert und gespeichert. Um in Oxygen testen zu können, wird eine statische XML Datei (frachtbrief.xml) für die Frachtbriefdaten erstellt.

Abbildung 9 : Generierung eines Frachtbriefes im Oxygen Ein Zipfile (Frachtbrief_Oxygen.zip) mit allen Dateien, die in dem Tool Oxygen getestet wurden, wird als Beilage zu diesem Bericht zur Verfügung gestellt.

Page 37: Generierung eines CIM Frachtbriefes im PDF-Formatstatic.sws.bfh.ch/download/MAS-06-01-11-doc.pdf · hamza1@bfh.ch Betreuer: Stephan Moser SBB Informatik Lindenhofstrasse 1 3048 Worblaufen

Diplombericht

Generierung eines CIM Frachtbriefes im PDF-Format Seite 37

6.2 Frachtbriefgenerator Die Aufgaben des Frachtbriefgenerators sind die Folgenden:

die CIM Frachtbrief relevanten Daten (Absendercode, Firmennummer, Strasse, Empfängername, Warencode, Wagennummer, usw.) extrahieren,

die Frachtbriefkriterien (gem. Kapitel 5.1) prüfen, die Frachtbrieffeldbedingungen (gem. Kapitel 5.2) prüfen, die nötigen Stammdaten aus der Oracle Datenbank via Toplink holen, die Frachtbriefdaten als Array Objekt aufbauen, den DruckStatus auf der Datenbank updaten, eine Logdatei bei Fehlern schreiben.

6.2.1 Die Klasse (FrachtbriefDocGen.java). Der Frachtbriefgenerator ist eine Javaklasse (FrachtbriefDocGen.java). Diese Klasse erbt die abstrakte Klasse XSLTDocGen, welche vom CIS Print Projekt bereitgestellt wird. XSLTDocGen ist eine Hilfsklasse für die Dokumentgenerierung. Sie stellt mehrere Methoden zur Verfügung; einige müssen von der konkreten Klasse FrachtbriefDocGen überschrieben werden (bspw. createRootElement()) und andere können benutzt werden. Als Beilage zu diesem Bericht sind beide Source Codes (Frachtbriefgenerator) angefügt.

Abbildung 10 : die Klasse FrachtbriefDocGen

public class FrachtbriefeDocGen extends XSLTDocGen { … }

Die Klasse FrachtbriefDocGen wurde in mehreren Methoden modular aufgebaut.

Page 38: Generierung eines CIM Frachtbriefes im PDF-Formatstatic.sws.bfh.ch/download/MAS-06-01-11-doc.pdf · hamza1@bfh.ch Betreuer: Stephan Moser SBB Informatik Lindenhofstrasse 1 3048 Worblaufen

Diplombericht

Generierung eines CIM Frachtbriefes im PDF-Format Seite 38

6.2.1.1 Die Methode generate() Die Klasse FrachtbriefDocGen liefert an XSLTDocGen zuerst mit Hilfe der Methode generate() eine Instanz der Klasse ByteArrayDataSource, welche das Interface javax.activation.DataSource implementiert hat. Ein DataSource gibt ein Byte Array zurück. Diese Byte Array kann vom InputStream gelesen werden. /** * Frachtbrief generieren */ @Override public ByteArrayDataSource generate(Caller caller, Collection data, Properties properties) throws RuntimeException { /* * ByteArrayDataSource dataSource generieren */ ByteArrayDataSource dataSource = super.generate(caller, data, properties); return dataSource; } ByteArrayDataSource : das unterstehende Link enthält Informationen über diese Klasse : http://java.sun.com/javaee/5/docs/api/javax/mail/util/ByteArrayDataSource.html. Die Zwischenschritte werden somit als Stream gespeichert und verwaltet.

6.2.1.2 Die Methode createRootElement() Die Klasse FrachtbriefDocGen erstellt mit Hilfe der überladenen Methode createRootElement() ein Root Element (frachtbriefe), das als Einstiegpunkt für die Frachtbriefstrukturgenerierung dient. Danach werden die Unterelemente mit mehreren Methoden modular aufgebaut. protected Element createRootElement(Caller caller, Collection data, Properties properties) { // Array als Objektbaum List<Element> elements = new ArrayList<Element>(data.size()); // Iteration über die BefaData objekte Iterator i = data.iterator(); while (i.hasNext()) { BefaData befa = (BefaData) i.next(); try { ... ... elements.add(createFrachtbriefElement(befa,...)); ... ... }catch (NullPointerException e) { ... } } // Create das <root> element return new Group(“frachtbriefe”, elements); } Parameter der Methode createRootElement(…):

Page 39: Generierung eines CIM Frachtbriefes im PDF-Formatstatic.sws.bfh.ch/download/MAS-06-01-11-doc.pdf · hamza1@bfh.ch Betreuer: Stephan Moser SBB Informatik Lindenhofstrasse 1 3048 Worblaufen

Diplombericht

Generierung eines CIM Frachtbriefes im PDF-Format Seite 39

Caller : enthält Informationen über die aufrufende Applikation (Username, Version, Umgebung….)

Collection : die eigentlichen Beförderungsdaten (eine Kollektion von BefaData Objekten)

Properties: Anzahl Kopien, Sprache des Dokumentes …

Abbildung 11 : Parameter der Methode createRootElement

Generiert wird so ein Objektbaum, bestehend aus Objekten der Klasse Group sowie Field, welche beide die abstrakte Klasse erben. Das Root Element entspricht einer Group, jede Gruppe kann wiederum Elements enthalten, das heisst, Fields oder Groups. Daraus resultiert: <Group> <Group>

<Field>value</Field> <Group> <Field>value</Field> </Group> </Group> <Field>value</Field>

</Group>

Klassendiagramm aus CIS Print

Abbildung 12 : Objektbaum

6.2.1.3 Methode createFrachtbriefElement() Diese Methode wird innerhalb createRootElement aufgerufen. Das Rückgabeobjekt Element wird mit Hilfe der Methode add() in die ArrayList<Element> eingefügt. Hier wird gemäss Kapitel 5.1.3 geprüft, ob man nur die Seite1 oder auch die Seite2 des CIM Frachtbriefes aufrufen muss. Deshalb werden hier entweder beide unterstehenden Methoden aufgerufen oder nur eine davon:

Page 40: Generierung eines CIM Frachtbriefes im PDF-Formatstatic.sws.bfh.ch/download/MAS-06-01-11-doc.pdf · hamza1@bfh.ch Betreuer: Stephan Moser SBB Informatik Lindenhofstrasse 1 3048 Worblaufen

Diplombericht

Generierung eines CIM Frachtbriefes im PDF-Format Seite 40

createFBSeite1Element(befa, exemplar) createFBSeite1Element(befa, exemplar)

Element createFrachtbriefElement(Caller caller, BefaData befa, int exemplar) { List<Element> elements = new ArrayList<Element>(); // ***************************************************** // Die Bedingung, ob die Seite 2 auch gedruckt wird, ist hier // definiert. gemäss Spezifikation // ***************************************************** boolean FBSeite2 = false; if (befa.getKommDaten().getFba() != null) { if (befa.getKommDaten().getFba().length > 3) { FBSeite2 = true; } Cfb[] fbaliste = befa.getKommDaten().getFba(); if (!Util.isEmpty(fbaliste)) { for (Cfb fba : fbaliste) { if (fba.getCgb().length > 0) { FBSeite2 = true; break; } if (fba.getFbabetrFfb()>0&& fba.getFbabetrUfb()>0){ FBSeite2 = true; break; } } } }// End if // ***************************************************** // Frachbriefelemente generieren // ***************************************************** if (FBSeite2) { // Frachtbrief_Seite1 und Frachtbrief_Seite2 generieren elements.add(createFBSeite1Element(befa, exemplar)); elements.add(createFBSeite2Element(befa, exemplar)); } else { // Nur Hauptseite (frachtbrief_Seite1) des CIM Frachtbriefes //generieren elements.add(createFBSeite1Element(befa, exemplar)); } // ***************************************************** // Create ein <frachtbrief> element return new Group(“frachtbrief”, elements); } Zusätzliche Frachtbriefkriterien gemäss Kapitel 5.1.2 werden mit Hilfe folgender Methoden kriterienPruefen() und getAnzahlExemplare realisiert (siehe Source Code).

6.2.1.4 Methode createFBSeite1Element() In dieser Methode werden die Geschäftsprozesse der Sendungsabfertigung der SBB Cargo berücksichtigt. Die Frachtbrieffelder werden als Gruppen zusammengefasst (z. B. Versanddaten, Empfangsdaten). Jede Gruppe wird in einer Methode realisiert und von der Methode createFBSeite1Element() aufgerufen. Innerhalb der aufrufenden Methode werden dann die Frachtbrieffeldkriterien gemäss Kapitel 5.2 berücksichtigt.

Page 41: Generierung eines CIM Frachtbriefes im PDF-Formatstatic.sws.bfh.ch/download/MAS-06-01-11-doc.pdf · hamza1@bfh.ch Betreuer: Stephan Moser SBB Informatik Lindenhofstrasse 1 3048 Worblaufen

Diplombericht

Generierung eines CIM Frachtbriefes im PDF-Format Seite 41

Element createFBSeite1Element(BefaData befa, int exemplar) { List<Element> elements = new ArrayList<Element>(); // Header generieren von der frachtbrief_Seite1 mit currentdate elements.add(createheaderElement(befa)); // CIM oder CUV(Leerwagen Sendugungen)Feld 30 elements.add(createCIModerCUVElement(befa)); // Versanddaten Feld 1,2,3,7,8, 9, 16 und 17 if (befa.getGlobalDaten() != null && befa.getKommDaten() != null) { elements.add(createVersanddaten(befa)); } // Empfangsdaten Feld 3,4,5,10,11, und 12 if (befa.getGlobalDaten() != null && befa.getKommDaten() != null) { elements.add(createEmpfangsdaten(befa)); } // Finanzdaten Feld 13, 14, 20, 49 und 52 if (befa.getKommDaten() != null) { elements.add(createFinanzdaten(befa)); }

// Zolldaten Feld 51 if (befa.getKommDaten().getZollDaten() != null) { elements.add(createZolldaten(befa));

} …..

….. // Create ein <FB_Seite1> element return new Group(“FB_Seite1”, elements); }

6.2.1.5 Methode createCIModerCUVElement Als Beispiel wird in diesem Dokument nur die Methode createCIModerCUVElement() beschrieben. Die anderen Methoden können im beigelegten Source Code nachgeschlagen werden. Gemäss Kapitel 5.2.1 muss das Feld 30 folgende Kriterien erfüllen: Das Checkbox CUV wird angekreuzt für LEERWAGEN, wenn alle NHM Codes der Ware auf der Stammdaten Tabelle PP329 mit der Subtabellennummer 10003 vorhanden sind. Sonst wird immer das Checkbox CIM angekreuzt.

/** * Creates XML elements istLeerWagen * * @param befa * @return CIModerCUV element * * <!-- Feld 30 CIM oder CUV (Leerwagen Sendugungen) -->

Page 42: Generierung eines CIM Frachtbriefes im PDF-Formatstatic.sws.bfh.ch/download/MAS-06-01-11-doc.pdf · hamza1@bfh.ch Betreuer: Stephan Moser SBB Informatik Lindenhofstrasse 1 3048 Worblaufen

Diplombericht

Generierung eines CIM Frachtbriefes im PDF-Format Seite 42

*/ private boolean leerwagenFlag = true; Element createCIModerCUVElement(BefaData befa) { List<Element> elements = new ArrayList<Element>(); // NHM code Leerwagen Sendungen sind im Stammdatentabelle definiert. // Warendaten extrahieren. Ware[] warenlist = befa.getWaren(); for (Ware ware : warenlist) { // liefert true, sobald die NHM im Stammdaten vorhanden ist. leerwagenFlag = stammdaten.isPP329(PP329.Subtnr.CR_LEERWAGEN_WARE, ware.getWarsh(), befa.getGlobalDaten().getAbg().getDatum()); if (!leerwagenFlag) { break; } } // Objektbaum aufbauen add(elements, „istLeerWagen“, format(leerwagenFlag)); // Create ein <CIModerCUV> element return new Group(“CIModerCUV”, elements); } In diesem Beispiel wird Folgendes gemacht:

- Die Warendaten der aktuellen Sendung werden gelesen. - In den Stammdaten wird geprüft, ob der NHM-Code der Waren in den Stammdaten

vorhanden ist. Im nächsten Kapitel wird der Zugriff auf die Stammdaten stammdaten.isPP329(…), bezogen auf dieses Beispiel, detailliert beschrieben.

- Aufgrund des Resultates (true oder false) der vorherigen Überprüfung, wird das

Blatt (Element) istLeerWagen mit Hilfe der Methode add(elements,“istLeerWagen“, format(leerwagenFlag)) erstellt. Die Methoden add() und format () sind in der geerbten Klasse XSLTDocGen implementiert (s. auch Source Code):

/** * Adds a leaf element (field) to a list of elements */ protected void add(List<Element> elements, String name, String value)

{ Field field = new Field(); field.setName(name); field.setValue(value); elements.add(field); } /** * Return the passed boolean value as a string * */ protected String format(boolean value) { return Boolean.toString(value); }

- Rückgabe vom Element new Group(“CIModerCUV”, elements); das Blatt

(Element) istLeerWagen ist ein Unterelement vom Element CIModerCUV.

Page 43: Generierung eines CIM Frachtbriefes im PDF-Formatstatic.sws.bfh.ch/download/MAS-06-01-11-doc.pdf · hamza1@bfh.ch Betreuer: Stephan Moser SBB Informatik Lindenhofstrasse 1 3048 Worblaufen

Diplombericht

Generierung eines CIM Frachtbriefes im PDF-Format Seite 43

- Der Objektbaum wird erweitert. Dieser Objektbaum, mit allen beschriebenen Methoden, sieht wie folgt aus:

Die dazugehörigen XSLT Dateien, bezogen auf das Feld 30: .... <xsl:template match="FB_Seite1"> <xsl:param name="lang"/> <!-- Feld 30 CIM oder CUV(Leerwagen Sendugungen) --> <xsl:apply-templates select="CIModerCUV"/> ... </xsl:template> <!-- Feld 30 CIModerCUV --> <xsl:template match="CIModerCUV"> <!-- Feld 30 Ankreuzen--> <xsl:choose> <xsl:when test="istLeerWagen='true'"> <fo:block-container position="absolute" top="3mm"left="91.5mm"> <fo:block> <fo:block font-size="8pt">X</fo:block> </fo:block> </fo:block-container> </xsl:when> <xsl:otherwise> <fo:block-container position="absolute" top="3mm" left="50mm"> <fo:block> <fo:block font-size="8pt">X</fo:block> </fo:block> </fo:block-container> </xsl:otherwise>

</xsl:choose> </xsl:template>

frachtbrief

FB_Seite1

CIModerCUV

frachtbriefe

istLeerWagen = true oder false

Page 44: Generierung eines CIM Frachtbriefes im PDF-Formatstatic.sws.bfh.ch/download/MAS-06-01-11-doc.pdf · hamza1@bfh.ch Betreuer: Stephan Moser SBB Informatik Lindenhofstrasse 1 3048 Worblaufen

Diplombericht

Generierung eines CIM Frachtbriefes im PDF-Format Seite 44

6.2.2 Stammdaten Die Stammdaten befinden sich auf der Oracle Datenbank. Der Zugriff wird durch TopLink gemacht. TopLink ist ein object-relational mapping (ORM) Paket für Javaentwickler. Es liefert ein flexibles Framework für die Speicherung der Objekte auf der Datenbank oder erzeugt aus diesen Daten die in der Applikation benötigten Java-Objekte. Für den Frachtbriefgenerator wurden die Stammdatenklassen

- Stammdaten - StammdatenQueries - PP329 - PP366

erweitert (siehe beigelegter Source Code). Folgende Stammdatentabellen wurden für den Frachtbriefgenerator benutzt. Datenbanktabelle Beschreibung

TBFH Enthält die Bezeichnungen aller Bahnhöfe

TEVU Enthält die Bezeichnungen aller Eisenbahnverkehrsunternehmen

TGZPT Enthält die Bezeichnungen aller Grenzpunkte

TTA Enthält die Angaben über Tarif / Abkommen

TTAFF Enthält die Angaben der Frachtführers

TTAREL Enthält die Angaben über Tarif/Abkommen, bezogen auf der gesamten Relation

TTAUFB Enthält die Angaben über aufeinander folgende Beförderer

TPP329 Allgemeine Stammdaten. Die Tabelle wird in verschiedenen Subtabellen unterteilt.

Subtabellennr. 10009 Enthält die NHM Warencodebezeichnungen der Leerwagensendungen

Subtabellennr. 10010 Enthält die Stempelbezeichnungen der SBB Cargo

Subtabellennr. 10012 Enthält die Ausstellungsorte

TPP366 Eine alte allgemeine Stammdatentabelle. Die Tabelle wird in verschiedenen Subtabellen unterteilt.

Subtabellennr. 70 Enthält die Bezeichnungen aller Länder Die Gültigkeit der Werte in den Stammdaten wird mit den Attributen Datum_von und Datum_bis festgelegt. Deshalb wird bei jeder Abfrage das Abgangsdatum der Sendung (befa.getGlobalDaten().getAbg().getDatum())mitgegeben und geprüft. Wie aus vorherigem Beispiel im Kapitel 6.2.1.5 zu entnehmen ist, wird die Methode isPP329(..) in der Klasse Stammdaten für den Zugriff auf die Stammdaten benutzt. Ware[] warenlist = befa.getWaren();

for (Ware ware : warenlist) { // liefert true, sobald die NHM im Stammdaten vorhanden ist.

leerwagenFlag = stammdaten.isPP329(PP329.Subtnr.CR_LEERWAGEN_WARE, ware.getWarsh(), befa.getGlobalDaten().getAbg().getDatum()); if (!leerwagenFlag) { break; } }

Page 45: Generierung eines CIM Frachtbriefes im PDF-Formatstatic.sws.bfh.ch/download/MAS-06-01-11-doc.pdf · hamza1@bfh.ch Betreuer: Stephan Moser SBB Informatik Lindenhofstrasse 1 3048 Worblaufen

Diplombericht

Generierung eines CIM Frachtbriefes im PDF-Format Seite 45

Für jede Ware (NHM Code), die man von der Methode ware.getWarsh() extrahiert, prüft man auf der Stammdatentabelle TPP239 mit Subtabellennummer 10009 (Subtnr) und Abgangsdatum der Sendung, ob dieser NHM Code dort vorhanden ist oder nicht. Wenn der NHM Code immer auf der Tabelle steht (true), handelt es sich um eine Leerwagensendung. In diesem Fall muss das Checkbox CUV des Feldes 30 angekreuzt werden. Andernfalls muss das Checkbox CIM angekreuzt werden. Klasse Stammdaten: public boolean isPP329(long subtnr, long subarg, Calendar datum) { return getPP329(subtnr, subarg, datum) != null; } /* * TPP329 */ public Tpp329 getPP329(long subtnr, long subarg, Calendar datum) { Vector<Object> args = new Vector<Object>(3); args.add(new Long(subtnr)); args.add(new Long(subarg)); args.add(datum); return (Tpp329) unbox1(executeSelect(“getPP329”, args)); } Klasse StammdatenQueries: Sobald die Methode executeSelect(„getPP329“, args) aus der Stammdatenklasse aufgerufen wird, läuft das unterstehende Query. Wenn das Query die Zeile auf der Stammtabelle findet, bekommt man als Resultat ein Objekt von Typ TPP239, sonst null zurück. private static DatabaseQuery getPP329() { ReadAllQuery query = new ReadAllQuery(); query.setName(“getPP329”); query.addArgument(“subtnr”, long.class); query.addArgument(“subarg”, long.class); query.addArgument(“datum”, Calendar.class); ExpressionBuilder builder = query.getExpressionBuilder();

Expression datumAb = builder.get(“pp329DatumAb”).lessThanEqual(builder.getParameter(“datum”));

Expression datumBis = builder.get(“pp329DatumBis”).greaterThanEqual(builder.getParameter(“datum”)); Expression datumBisNull = builder.get(“pp329DatumBis”).isNull();

Expression subtnr = builder.get(“pp329Subtnr”).equal(builder.getParameter(“subtnr”));

Expression subarg = builder.get(“pp329Subarg”).equal(builder.getParameter(“subarg”));

query.setSelectionCriteria(datumAb.and(datumBisNull.or(datumBis)).and(subtnr).and(subarg)); query.setReferenceClass(Tpp329.class); return query; }

Page 46: Generierung eines CIM Frachtbriefes im PDF-Formatstatic.sws.bfh.ch/download/MAS-06-01-11-doc.pdf · hamza1@bfh.ch Betreuer: Stephan Moser SBB Informatik Lindenhofstrasse 1 3048 Worblaufen

Diplombericht

Generierung eines CIM Frachtbriefes im PDF-Format Seite 46

Die Tabelle PP329 mit Subtnr = 10009 auf der Oracle Datenbank:

PP329 SUBTNR

PP329 SUBARG(NHM

Code)

PP329 DATUM

AB

PP329 DATUM

BIS

PP329 WERT I1

PP329 WERT I2

PP329 WERT F

PP329 WERT C

10009 992100 01.01.2006 31.12.2060 2 2 0 Leerer Privatwagen 2 Achsen

10009 992110 01.01.2006 31.12.2060 2 2 1 Leerer Privatwagen 2 Achsen zur/nach Revision

10009 992120 01.01.2006 31.12.2060 2 2 2 Leerer Privatwagen 2 Achsen zur/nach Reparatur

10009 992130 01.01.2006 31.12.2060 2 2 3 Leerer Privatwagen 2 Achsen zur/nach Reinigung

10009 992140 01.01.2006 31.12.2060 2 2 4 Leerer Privatwagen 2 Achsen zur Bef÷rderung vor/nach Vermietung

10009 992200 01.01.2006 31.12.2060 3 99 0 Leerer Wagen > 2 Achsen

10009 992210 01.01.2006 31.12.2060 3 99 1 Leerer Wagen > 2 Achsen zur/nach Revision

10009 992220 01.01.2006 31.12.2060 3 99 2 Leerer Wagen > 2 Achsen zur/nach Reparatur

10009 992230 01.01.2006 31.12.2060 3 99 3 Leerer Wagen > 2 Achsen zur/nach Reinigung

10009 992240 01.01.2006 31.12.2060 3 99 4 Leerer Wagen > 2 Achsen zur Bef÷rderung vor/nach Vermietung

6.2.3 Die Utility Klassen Im Frachtbriefgenerator wurden einige Klassen von CIS Print benutzt bzw. erweitert, die nützliche geschäftsfunktionale und nicht geschäftsfunktionale Methoden zur Verfügung stellen. Klasse Bemerkungen BefaTypeDefs Prüft Länge und Format der eingegebenen Attribute

BefaUtil Wurde mit den geschäftsfunktionalen Methoden erweitert

Beispiele: formatWagenNr() getMehrwegGruten(BefaData) getTauschbretter(BefaData) getTauschpalette(Wagen) getTauschrahmen(BefaData)

Util Stellt nicht geschäftsfunktionale Methoden zur Verfügung Beispiele: getCurrentDate() getCurrentTime() getFormattedDate(Date) isEmpty(Object[]) isEmpty(String)

Page 47: Generierung eines CIM Frachtbriefes im PDF-Formatstatic.sws.bfh.ch/download/MAS-06-01-11-doc.pdf · hamza1@bfh.ch Betreuer: Stephan Moser SBB Informatik Lindenhofstrasse 1 3048 Worblaufen

Diplombericht

Generierung eines CIM Frachtbriefes im PDF-Format Seite 47

6.2.4 Objektbaum und Klassendiagramm Ein Objektbaum, wie unten als XML Struktur dargestellt ist, wird mit dem Frachtbriefgenerator generiert. <frachtbriefe> <frachtbrief> <istOriginal>true</istOriginal> <Verkehrsart>Export 1</Verkehrsart> <Sprache>de</Sprache> <FB_Seite1> <header> <currentDate>23.08.2008</currentDate> <cimStempel>Schweizerische Bundesbahnen SBB Cargo AG</cimStempel> </header> <CIModerCUV> <istLeerWagen>false</istLeerWagen> </CIModerCUV> <Versanddaten> <KunameAbs>Panlog AG</KunameAbs> <KunameZusAbs> </KunameZusAbs> <StrasseAbs>Emmenweidstrasse 74</StrasseAbs> <PlzAbs>6020</PlzAbs> <OrtAbs>Emmenbrücke</OrtAbs> <MwstnrAbs>158871</MwstnrAbs> <EmailAbs> </EmailAbs> <TelnrAbs>0041/41/2096265</TelnrAbs> <FaxnrAbs>0041/41/2096263</FaxnrAbs> <FirmnrAbs>224543</FirmnrAbs> <FirmfilAbs>00</FirmfilAbs> <ErklaerungsAbsender> <Code>3</Code> <ErgText>Begleiter www</ErgText> </ErklaerungsAbsender> <FirmnrFzv>224543</FirmnrFzv> <FirmfilFzv>00</FirmfilFzv> <BeilagenFBF> <Code>325</Code> <ErgText>Proformarechnung</ErgText> </BeilagenFBF> <LadestelleVersand> <LastelletVs>FVL K-GRUPPE</LastelletVs> <LastelleVs>0001</LastelleVs> <BhfnameVs>Bern Cargo</BhfnameVs> <UicbahnVs>85</UicbahnVs> <LandnameVs>Schweiz</LandnameVs> <BhfnrVs>070102</BhfnrVs> <DatumAbg_MMDDHH>08-23-18</DatumAbg_MMDDHH> </LadestelleVersand> …… </Versanddaten> ….

</FB_Seite1> …..

</frachtbrief> …..

</frachtbriefe>

Page 48: Generierung eines CIM Frachtbriefes im PDF-Formatstatic.sws.bfh.ch/download/MAS-06-01-11-doc.pdf · hamza1@bfh.ch Betreuer: Stephan Moser SBB Informatik Lindenhofstrasse 1 3048 Worblaufen

Diplombericht

Generierung eines CIM Frachtbriefes im PDF-Format Seite 48

Dieser Objektbaum wird dann als InputStream an die Instanz der Klasse InputSource gegeben und mit dem XMLReader als Parser gelesen.

Element root = createRootElement(caller, data, properties); InputSource source = new ObjectInputSource(root); XMLReader reader = new ElementXMLReader(); Source saxSource = new SAXSource(reader, source);

Danach werden die Elemente des Objektbaums als SAX Events an den XSL-Transformator gesendet. Diese Zusammenhänge werden im unterstehenden Diagramm dargestellt.

Abbildung 13 : Klassendiagramm Frachtbriefgenerator

Page 49: Generierung eines CIM Frachtbriefes im PDF-Formatstatic.sws.bfh.ch/download/MAS-06-01-11-doc.pdf · hamza1@bfh.ch Betreuer: Stephan Moser SBB Informatik Lindenhofstrasse 1 3048 Worblaufen

Diplombericht

Generierung eines CIM Frachtbriefes im PDF-Format Seite 49

6.3 Aufruf des Frachtbriefdruckes aus CIS Online

6.3.1 Allgemeines Nach der Erstellung und dem Testen des Frachtbriefgenerators in CIS Print, wird ein JAR File (Frachtbriefgenerator, XSL Dateien, CIS Print Klassen, alle nötige Bibliotheken usw.) in CIS Print erstellt und in den Applikationsserver von CIS Online exportiert.

6.3.2 CIS Online Überblick CIS Online ist eine Internet Schnittstelle zu CIS Cargo, welche dem Kunden die Möglichkeit gibt, auf elektronischem Weg Beförderungsdaten mit SBB Cargo auszutauschen. (http://www.sbbcargo.com/index/cao_cis.htm). Aus technischer Sicht ist CIS Online eine Webapplikation, welche das Struts Framework einsetzt. Dem Struts-Framework liegt das Entwurfsmuster „Model View Controller“ zugrunde. Die von Struts zur Verfügung gestellten Komponenten entstammen den Bereichen Präsentation (View) und Programmsteuerung (Controller). Funktionen aus dem Modell-Bereich müssen in einer Anwendung implementiert werden.

Abbildung 14 : Struts und Model 2 Prinzip

Page 50: Generierung eines CIM Frachtbriefes im PDF-Formatstatic.sws.bfh.ch/download/MAS-06-01-11-doc.pdf · hamza1@bfh.ch Betreuer: Stephan Moser SBB Informatik Lindenhofstrasse 1 3048 Worblaufen

Diplombericht

Generierung eines CIM Frachtbriefes im PDF-Format Seite 50

Die in der struts-config.xml definierten ActionForwards und ActionMappings sorgen für die korrekte Weiterleitung zu JSPs oder org.apache.struts.action.Action-Klassen (Bean). CIS Online wird mit der Entwicklungsumgebung RAD (Rational Application Developer) von IBM entwickelt und setzt WebSphere v6.1 als Applikationsserver ein.

6.3.3 Klasse DocGenBefaService Die CIS Print Klasse DocGenBefaService und deren Methode generate() gilt als Schnittstelle für CIS Online, um CIM Frachtbriefe zu generieren. Die Methode generate() erwartet als Parameter ein Objekt der Klasse DocGenBefa, die wiederum Unterklassen (Caller, BefaData, BefaKey, BefaKeyWagen, DocGenParams und Property) beinhaltet; diese Klassen werden in CIS Online benutzt und als DocGenBefa Objekt an die Methode generate() übergeben.

Abbildung 15 : Klassendiagramm DocGenBefa

Page 51: Generierung eines CIM Frachtbriefes im PDF-Formatstatic.sws.bfh.ch/download/MAS-06-01-11-doc.pdf · hamza1@bfh.ch Betreuer: Stephan Moser SBB Informatik Lindenhofstrasse 1 3048 Worblaufen

Diplombericht

Generierung eines CIM Frachtbriefes im PDF-Format Seite 51

Als Resultat liefert die Methode generate() an CIS Online ein Objekt vom Typ DataSource. ..... ..... CISPrint cisprint = new CISPrint(new String[] { “” }); DataSource ds = null; try { cisprint.getStammdatenSession().login(); DocGenBefaService service = cisprint.getDocGenBefaService(); ds = service.generate(docGenBefa); request.getSession().setAttribute(“dsname”, ds); } catch (Exception e) { e.printStackTrace(); } finally { cisprint.getStammdatenSession().logout(); } ... ... Return: DataSource : Definition: public interface DataSource The DataSource interface provides the JavaBeans Activation Framework with an abstraction of an arbitrary collection of data. It provides a type for that data as well as access to it in the form of InputStreams and OutputStreams where appropriate.

Method Summary String getContentType()

This method returns the MIME type of the data in the form of a string. InputStream getInputStream()

This method returns an InputStream representing the data and throws the appropriate exception if it can not do so.

String getName() Return the name of this object where the name of the object is dependant on the nature of the underlying objects.

OutputStream getOutputStream() This method returns an OutputStream where the data can be written and throws the appropriate exception if it can not do so.

Das untenstehende Link enthält weitere Informationen über dieses Interface: http://java.sun.com/javaee/5/docs/api/javax/activation/DataSource.html

Page 52: Generierung eines CIM Frachtbriefes im PDF-Formatstatic.sws.bfh.ch/download/MAS-06-01-11-doc.pdf · hamza1@bfh.ch Betreuer: Stephan Moser SBB Informatik Lindenhofstrasse 1 3048 Worblaufen

Diplombericht

Generierung eines CIM Frachtbriefes im PDF-Format Seite 52

6.3.4 CIS Online Erweiterungen und Anpassungen Damit der CIM Frachtbrief in dieser Schnittstelle (CIS Online) gedruckt werden kann, müssen Anpassungen und Erweiterungen (JSP Seiten, Javaklassen und Programme) durchgeführt werden.

Adobe Acrobat PDFCIM Frachtbrief

Struts   actionclass ACSearchBD

ListBD.jsp

 Struts   actionclass ACFrachtbrief  Servlet

1) URL von CISOnline eingeben

5) Drucken/Korrekturen wählen

9) Frachtbrief zum Drucken auswählen

4) Start Seite liefern

2) Logon Seite liefern

3) UserID und Password eingeben

6) Suchkriterien Seite liefern

7) Kriterien eingeben

8) Liste der Sendungen liefern

10) Stream Ausgeben

forward

forward

CIS OnlineKunde (Webbrowser)

Abbildung 16: Schematische Darstellung um den Frachtbrief zu drucken Wie aus dem obigen Schema zu entnehmen ist, werden Anpassungen und Erweiterungen für die Frachtbriefgenerierung ab Schritt 7 durchgeführt.

Page 53: Generierung eines CIM Frachtbriefes im PDF-Formatstatic.sws.bfh.ch/download/MAS-06-01-11-doc.pdf · hamza1@bfh.ch Betreuer: Stephan Moser SBB Informatik Lindenhofstrasse 1 3048 Worblaufen

Diplombericht

Generierung eines CIM Frachtbriefes im PDF-Format Seite 53

6.3.4.1 Maske Suchkriterien Die Maske Suchkriterien wird für den Frachtbrief nicht geändert.

Abbildung 17 : Maske Suchkriterien Sobald das Icon Abrufen geklickt wird, werden alle eingegebenen Daten mit Hilfe von Struts (OpenSource Framework) an die Klasse ACSearch,java (ActionClass) weitergeleitet. Diese JavaKlasse wird für den Frachtbrief angepasst. Aufgrund der bestehenden TransportID’s werden die dazugehörigen Sendungsdaten in der Datenbank gesucht und abgeholt. // leider haben wir mit der Transaktion 3290421 nicht alle nötigen Daten um // FBF Kriterien zu überprüfen // wir holen die restliche Daten mit Hilfe 3290465

Hashtable<String, Vector<String>> ht1 = new Hashtable<String, Vector<String>>();

Vector<String> vTemp = null; ArrayList answer=null; // Die TransportID's mit der Wagennummer in eine // Hashtabelle füllen. for (int n = 0; n < sizeList; n++) {

Page 54: Generierung eines CIM Frachtbriefes im PDF-Formatstatic.sws.bfh.ch/download/MAS-06-01-11-doc.pdf · hamza1@bfh.ch Betreuer: Stephan Moser SBB Informatik Lindenhofstrasse 1 3048 Worblaufen

Diplombericht

Generierung eines CIM Frachtbriefes im PDF-Format Seite 54

AnswerIms2 wagen = (AnswerIms2) list.get(n); String transportid = Integer.toString(wagen.getTrspid()); String wagnr = wagen.getWagnr(); wagnr.replace('-', ' '); wagnr = deleteSpace(wagnr); if (ht1.containsKey(transportid)) { vTemp = ht1.get(transportid); if (!vTemp.contains(wagnr)) { vTemp.add(wagnr); ht1.put(transportid, vTemp); } // Ende Temp } // Ende if else { vTemp = new Vector<String>(); vTemp.add(wagnr); ht1.put(transportid, vTemp); } // Ende else } // Transaktion P3290465 auf dem Host aufrufen boolean hatSdg=true; ACListBD asListbd = new ACListBD(); if (asListbd.sendToIms(fcDruck, request, ht1)) { // List der Sendungen, Aufgrund der TransportId in ein // Array speichern answer = fcDruck.getLImsAnswer(); int size = answer.size(); }else { hatSdg =false; } // Ende else ... ... Folgende Frachtbriefkriterien werden dadurch geprüft:

Sendungsstatus muss zwischen 6 und 84 sein. Kein Binnenverkehr (Verkehrsart muss ungleich 1 sein) Transportartcode gemäss Stammdatentabelle TPP366 mit Subtabellen-

nummer 842 Frachtbriefstatus muss gleich 01 oder space sein.

// Jede Sendung lesen und Frachtbriefkriterien prüfen for(int m=0; m<answer.size(); m++){ FCImsAnswerBD Sdg = (FCImsAnswerBD) fcDruck.getLImsAnswer().get(m); // vergleich zwischen der selektierten Sendung (Transaktion P3290421)und // die gleiche Sendung auf der DB (Transaktion P3290465) if(wagen.getTrspid()==Integer.parseInt(Sdg.getTransportid())){ if (wagen.getSdgstat() > 5 && wagen.getSdgstat() < 85 && Sdg.getVerkart() != 1 && (wagen.getSdgCim().equals(“01”)|| wagen.getSdgCim().equals(“ 0”))) { // Vorbereitung um Transportartcode zu prüfen DBPlaus dbplaus = new DBPlaus(); CISOPlaus cisoplaus = new CISOPlaus(); String date = fcDruck.getDatevon(); java.sql.Date datDatum = cisoplaus.formatSqlDate(date);

boolean transportarcode = dbplaus.checkPrintingCIM(Sdg.getTransac(), datDatum);

Page 55: Generierung eines CIM Frachtbriefes im PDF-Formatstatic.sws.bfh.ch/download/MAS-06-01-11-doc.pdf · hamza1@bfh.ch Betreuer: Stephan Moser SBB Informatik Lindenhofstrasse 1 3048 Worblaufen

Diplombericht

Generierung eines CIM Frachtbriefes im PDF-Format Seite 55

if(transportarcode){ //Checkbox wird aktiviert ws.setFbf(true); }else { ws.setFbf(false); } } else { //Checkbox FBF wird deaktiviert ws.setFbf(false); } } } Falls die Bedingungen OK sind, werden die Checkbox auf der nächsten Seite ListBD.jsp in einer Spalte zur Auswahl zur Verfügung gestellt, um den Frachtbrief zu drucken. Dies bedingt auch eine Anpassung der ListBD.jsp Seite. <nested:match property=“fbf“ value=“true“> <td align=”center”><nested:checkbox property=”listfrachtbrief” /></td> </nested:match> <nested:notMatch property=”fbf” value=”true”> <td valign=”middle” align=”center”>&nbsp;</td> </nested:notMatch> Falls die Bedingungen nicht zutreffen, wird die Checkbox im ListBD.jsp deaktiviert.

Page 56: Generierung eines CIM Frachtbriefes im PDF-Formatstatic.sws.bfh.ch/download/MAS-06-01-11-doc.pdf · hamza1@bfh.ch Betreuer: Stephan Moser SBB Informatik Lindenhofstrasse 1 3048 Worblaufen

Diplombericht

Generierung eines CIM Frachtbriefes im PDF-Format Seite 56

6.3.4.2 Maske drucken / Korrekturen Übermittelte Sendungen werden hier angezeigt. Neu wurde die Spalte FBF (Frachtbrief) hinzugefügt sowie ein Icon „FBF für markierte Sendung“, um die gewünschten Frachtbriefe (selektierte Checkbox) zu drucken.

Abbildung 18 : Maske drucken / Korrekturen Sobald der Benutzer die gewünschte Checkbox selektiert hat und das Icon gedrückt hat, wird eine neue Klasse ACFrachtbrief.java aufgerufen. Diese Klasse erstellt ein Objekt der Klasse DocGenBefa, welches von CIS Print zur Verfügung gestellt wird und ruft das Interface DocGenBefaService und deren Methode generate() auf. Als Resultat bekommt diese Klasse ein Objekt vom Typ DataSource (Stream von Frachtbriefdaten), das in einer Session gespeichert wird. Damit wir die Frachtbriefdaten (Stream) in einem neuen Windows anzeigen können, wird das ListBD.jsp mit JavaScript erweitert. <%-- javascript part - main --%> <nested:root name=”fcMainBefa”> <script language=”JavaScript” type=”text/javascript”> function openNewWindow(){

Page 57: Generierung eines CIM Frachtbriefes im PDF-Formatstatic.sws.bfh.ch/download/MAS-06-01-11-doc.pdf · hamza1@bfh.ch Betreuer: Stephan Moser SBB Informatik Lindenhofstrasse 1 3048 Worblaufen

Diplombericht

Generierung eines CIM Frachtbriefes im PDF-Format Seite 57

if(<nested:write property=”fcBD.pdfDocument” />){ var mw = window.open(‘/ciso/DownloadFrachtbriefPDF’,”details”); mw.focus(); <c:set target=”${fcMainBefa.fcBD}” property=”pdfDocument” value=”false” /> } } openNewWindow(); </script> </nested:root> <%-- end javascript part, head will be closed now --%> In diesem JavaScript wird die URL des Servlets DownloadFrachtbriefPDF aufgerufen. Die neue Servlet Klasse DownloadFrachtbreifPDF holt das DataSource Objekt von der Session ab und schickt die Frachtbriefdaten als Stream vom Typ application/pdf an den Browser zurück. /** * GeneratePDF_Frachtbrief... * * lastChangedBy $Author: U150205 $ lastCheckedIn $Date: 2008/08/31 08:31:47 $ * * @author u150205 (Ahmed Hamza) * @version $Revision: 1.1 $ */ @SuppressWarnings(“unused”) public class DownloadFrachtbriefPDF extends HttpServlet { /* LOG4J */ private final static Logger log = Logger .getLogger(DownloadFrachtbriefPDF.class); /** * @see javax.servlet.http.HttpServlet#void * (javax.servlet.http.HttpServletRequest, * javax.servlet.http.HttpServletResponse) */ @Override @SuppressWarnings(“unchecked”) public void doGet(HttpServletRequest req, HttpServletResponse resp) throws IOException, ServletException { String formatPDF = null; DataSource ds = null; try { checkSession(req); ds = (DataSource) req.getSession().getAttribute(“dsname”); // contenttype lesen formatPDF = ds.getContentType(); // resp.setContentType(ds.getContentType()); System.out.println(formatPDF); ServletOutputStream sOutStream = resp.getOutputStream(); streamBinaryData(sOutStream, resp, ds); } catch (Exception e) { log.error(“Test : “ + e.toString()); if (e.getMessage().equalsIgnoreCase(“Session not Present”)) { htmlOutput(resp, true); } else { e.printStackTrace(); }// end else }

Page 58: Generierung eines CIM Frachtbriefes im PDF-Formatstatic.sws.bfh.ch/download/MAS-06-01-11-doc.pdf · hamza1@bfh.ch Betreuer: Stephan Moser SBB Informatik Lindenhofstrasse 1 3048 Worblaufen

Diplombericht

Generierung eines CIM Frachtbriefes im PDF-Format Seite 58

}// end doGet

/* * Diese Methode behandelt streaming Binary data * @param ServletOutputStream outstr * @param HttpServletResponse resp * @param DataSource ds */ private void streamBinaryData(ServletOutputStream outstr, HttpServletResponse resp, DataSource ds) { String ErrorStr = null; try { BufferedInputStream bis = null; BufferedOutputStream bos = null; try { // benutzt Buffer für lesen und schreiben InputStream in = ds.getInputStream(); bis = new BufferedInputStream(in); bos = new BufferedOutputStream(outstr); byte[] buff = new byte[8192]; int bytesRead; // read/write loop. while (-1 != (bytesRead = bis.read(buff, 0, buff.length))) { bos.write(buff, 0, bytesRead); } } catch (Exception e) { e.printStackTrace(); ErrorStr = "Fehler beim Lesen / schreiben"; outstr.print(ErrorStr); } finally { if (bis != null) { bis.close(); } if (bos != null) { bos.flush(); bos.close(); } } } catch (Exception e) { e.printStackTrace(); } } Für das neue Servlet wurde die Datei web.xml angepasst. <servlet> <servlet-name>DownloadFrachtbriefPDF</servlet-name> <servlet-class>ch.sbb.ciso.pdf.DownloadFrachtbriefPDF</servlet-class> <load-on-startup>4</load-on-startup> </servlet> <servlet-mapping> <servlet-name>DownloadFrachtbriefPDF</servlet-name> <url-pattern>/DownloadFrachtbriefPDF</url-pattern> </servlet-mapping>

Page 59: Generierung eines CIM Frachtbriefes im PDF-Formatstatic.sws.bfh.ch/download/MAS-06-01-11-doc.pdf · hamza1@bfh.ch Betreuer: Stephan Moser SBB Informatik Lindenhofstrasse 1 3048 Worblaufen

Diplombericht

Generierung eines CIM Frachtbriefes im PDF-Format Seite 59

7. Testen

7.1 Allgemeines Hauptziel der Tests ist die Überprüfung der Funktionalitäten. Mit Tests können wir beweisen, dass alle Funktionalitäten gemäss den definierten Anforderungen implementiert wurden. Die Tests dienen der Qualitätssicherung, ermöglichen das Auffinden von Fehlern in der Analyse, dem Design sowie in der Realisierung. Es wurden ausführlich getestet:

die statische Struktur des CIM Frachtbriefes mit dem Tool Oxygen (s. Kapitel 6.1); der Frachtbriefgenerator im CIS Print der Aufruf des Frachtbriefdruckes aus CIS Online den Aufruf des Frachtbriefdruckes aus CIS Client.

Um die Tests durchführen zu können, müssen vorher Sendungen in CIS Cargo erfasst werden bzw. vorhanden sein.

7.2 Test Frachtbriefgenerator im CIS Print CIS Print erwartet den Dateinamen und den Pfad des Input XML Files (printBefa.xml) als Argument. Dann liest CIS Print das XML File, führt die Dokumentenerstellung durch und löscht nach erfolgreicher Durchführung das Input XML File.

7.2.1 Vorgehen Zuerst werden die Sendungen in CIS Cargo erfasst. Die Sendungen müssen mindestens folgende Kriterien erfüllen:

- Sendungsstatus > 5 und < 85 - Verkehrsart der Sendung 5,6 oder 7 (d.h. kein Binnenverkehr). - Frachtbriefstatus ungleich “09“.

Die abgeschlossenen Sendungen erhalten dann eine eindeutige Nummer, die so genannte Transportidentifikationsnummer (Trspid). Danach werden diese Nummern kopiert und in das Element <befaKey><trspid>831899648</trspid></befaKey> des Input XML Files eingefügt und erweitert.

7.2.2 Input XML File (printBefa.xml) <?xml version=“1.0“ encoding=“ISO-8859-1“ ?> <printBefa xmlns=“http://sbbcargo.com/ciscargo/data“> <!—Wer startet CIS Print--> <caller> <userid>U150205</userid> <application>0</application> <version>2008.01</version> <language>de</language> <instruction>false</instruction> <igbst> <uicbahn>85</uicbahn> <bhfnr>70151</bhfnr> </igbst> <behandlung>versand</behandlung> </caller>

Page 60: Generierung eines CIM Frachtbriefes im PDF-Formatstatic.sws.bfh.ch/download/MAS-06-01-11-doc.pdf · hamza1@bfh.ch Betreuer: Stephan Moser SBB Informatik Lindenhofstrasse 1 3048 Worblaufen

Diplombericht

Generierung eines CIM Frachtbriefes im PDF-Format Seite 60

<!—Was, wie oft und in welcher Sprache wird gedruckt --> <params> <docKind>FRACHTBRIEFE</docKind> <mediaType>application/pdf</mediaType> <printLanguage>de</printLanguage> <copies>1</copies> <copiesCollated>true</copiesCollated> </params> <!—- Die Transportidentifikationsnummern --> <befaKey> <decentral>false</decentral> <trspid>831899648</trspid> </befaKey> <befaKey> <decentral>false</decentral> <trspid>167304317</trspid> </befaKey> ... ... </printBefa>

7.2.3 Testbeispiel Als Beispiel wird die Sendung mit TransportID = 831899648 in diesem Dokument dargestellt. Diese Sendung wurde in CIS Cargo erfasst. Es werden nur 2 Windows in diesem Dokument angezeigt.

Page 61: Generierung eines CIM Frachtbriefes im PDF-Formatstatic.sws.bfh.ch/download/MAS-06-01-11-doc.pdf · hamza1@bfh.ch Betreuer: Stephan Moser SBB Informatik Lindenhofstrasse 1 3048 Worblaufen

Diplombericht

Generierung eines CIM Frachtbriefes im PDF-Format Seite 61

Abbildung 19 : CIS Client Sendungsdatenerfassung Diese Sendung wurde schrittweise erweitert und geprüft, ob die Sendungsdaten in den richtigen Feldern erscheinen und ob die Funktionalitäten gemäss Kapitel 5.2.1 erfolgreich durchgeführt werden. Sendungsdaten:

- Druckstatus = Original und danach Kopien - Sprache = Deutsch - Verkehrsart = Export (3 Exemplar) - Sendungsstatus = 6 - Absenderdaten - Empfängerdaten - Finanzdaten - Anzahlwagen = 1 - Anzahlware =1 - Sendung hat Plomben, Palette, Decken, Tauschgeräte hat) - Frachtberechungsabschnitt > 3 (Seite 2 wird gedruckt) - Sendung hat Gebühren (die Felder 70-79 werden gefüllt) - Sendung hat 3 Beilagen - Sendung hat 3 Erklärungen des Absenders - Sendung hat Erklärung des Beförderers (Feld48-56) - Frachtführerangaben (Feld 57 und 58) - Sendungsdaten (Feld 62) - Datum und Ort der Ausstellung (Feld 29)

Page 62: Generierung eines CIM Frachtbriefes im PDF-Formatstatic.sws.bfh.ch/download/MAS-06-01-11-doc.pdf · hamza1@bfh.ch Betreuer: Stephan Moser SBB Informatik Lindenhofstrasse 1 3048 Worblaufen

Diplombericht

Generierung eines CIM Frachtbriefes im PDF-Format Seite 62

Abbildung 20 : Sendung = 831899648

7.2.4 Kleiner Auszug der getesteten Sendungen: TransportID Testangaben Resultat 17719138 Binnenverkehr Kein CIM Frachbriefdruck und Logfile geschrieben 292622468 Sendungsstatus > 84 Kein CIM Frachbriefdruck und Logfile geschrieben 545951098 DruckStat = 09 Kein CIM Frachbriefdruck und Logfile geschrieben 719358787 LeerWagensendung Feld 30 CUV wird angekreuzt. 517735558 Transitsendung 5 Exemplar 533392648 Unterwegsbahn Feld 21 Gemäss Wagenliste 467036317 Gebühren Code vorhanden

Frachtbrieffelder erweitern Feld 20 und Feld 49 werden ausgefüllt und Seite 2 gedruckt, weitere Felder werden schrittweise ergänzt

631251387 Gefahrgut angaben Feld 23 RID angekreuzt 70016837 Incoterm Feld 20 Incoterm angekreuzt 290205138 Original Test Original wird angezeigt 96158138 Kopie Test Kopie wird angezeigt 346745618 10 Sendungen zusammen CIM Frachtbrief mit alle Angaben wurde gedruckt 854563428 10 Sendungen zusammen CIM Frachtbrief mit alle Angaben wurde gedruckt 346671108 10 Sendungen zusammen CIM Frachtbrief mit alle Angaben wurde gedruckt 458086178 10 Sendungen zusammen CIM Frachtbrief mit alle Angaben wurde gedruckt 855209218 10 Sendungen zusammen CIM Frachtbrief mit alle Angaben wurde gedruckt 128436278 10 Sendungen zusammen CIM Frachtbrief mit alle Angaben wurde gedruckt 505746308 10 Sendungen zusammen CIM Frachtbrief mit alle Angaben wurde gedruckt 776508108 10 Sendungen zusammen CIM Frachtbrief mit alle Angaben wurde gedruckt 42045108 10 Sendungen zusammen CIM Frachtbrief mit alle Angaben wurde gedruckt 361471108 10 Sendungen zusammen CIM Frachtbrief mit alle Angaben wurde gedruckt 656312128 10 Sendungen zusammen CIM Frachtbrief mit alle Angaben wurde gedruckt

Es wurden noch weitere Tests durchgeführt, die die gesamten Funktionalitäten prüfen. Die Fehler wurden korrigiert und das Ganze wurde nochmals geprüft.

Page 63: Generierung eines CIM Frachtbriefes im PDF-Formatstatic.sws.bfh.ch/download/MAS-06-01-11-doc.pdf · hamza1@bfh.ch Betreuer: Stephan Moser SBB Informatik Lindenhofstrasse 1 3048 Worblaufen

Diplombericht

Generierung eines CIM Frachtbriefes im PDF-Format Seite 63

7.3 Test Aufruf des Frachtbriefdruckes aus CIS Online Hier wurden zuerst verschiedene Sendungen erfasst. Einige erfüllten die Frachtbriefdruckkriterien und andere nicht. Die erfassten Sendungen wurden an CIS Cargo gesendet. Die Sendungsdaten wurden dort plausibilisiert und wenn alles in Ordnung war, wurden sie gespeichert. Das System stellte dann den Sendungsstatus auf 6 (Sendung kommerziell Versand abgeschlossen). Ab diesem Zeitpunkt können die Frachtbriefe (Original und Kopie) für diese Sendung gedruckt werden. Das folgende Bild zeigt einen Frachtbriefdruck, der aus der CIS Online Schnittstelle erzeugt wurde.

Abbildung 21 : Frachtbriefdruck aus CIS Online Beim Auftreten von Fehlern im CIS Online wird ein Logfile geschrieben.

7.4 Test Aufruf des Frachtbriefdruckes aus CIS Client Der Frachtbriefdruck wurde auch im CIS Client ausführlich getestet. Der Test wird hier nicht dokumentiert, da dieser Test den Tests in CIS Online und in CIS Print entspricht.

Page 64: Generierung eines CIM Frachtbriefes im PDF-Formatstatic.sws.bfh.ch/download/MAS-06-01-11-doc.pdf · hamza1@bfh.ch Betreuer: Stephan Moser SBB Informatik Lindenhofstrasse 1 3048 Worblaufen

Diplombericht

Generierung eines CIM Frachtbriefes im PDF-Format Seite 64

Anhang

A Muster CIM Frachtbriefformular Seite 1

Page 65: Generierung eines CIM Frachtbriefes im PDF-Formatstatic.sws.bfh.ch/download/MAS-06-01-11-doc.pdf · hamza1@bfh.ch Betreuer: Stephan Moser SBB Informatik Lindenhofstrasse 1 3048 Worblaufen

Diplombericht

Generierung eines CIM Frachtbriefes im PDF-Format Seite 65

B Muster CIM Frachtbriefformular Seite 2

Page 66: Generierung eines CIM Frachtbriefes im PDF-Formatstatic.sws.bfh.ch/download/MAS-06-01-11-doc.pdf · hamza1@bfh.ch Betreuer: Stephan Moser SBB Informatik Lindenhofstrasse 1 3048 Worblaufen

Diplombericht

Generierung eines CIM Frachtbriefes im PDF-Format Seite 66

C Quellenverzeichnis [1] Othmar Bürgi, Skript Projekt-Management

[2] Unterlagen und Dokumente von CIS SBB Cargo Projekt

[3] Dr. Beatrice Amrhein, Skript XML, 2007

[4] Bernd Oestereich, Analyse und Design mit UML 2.1 Objektorientierte

Softwareentwicklung, Oldenburg Verlag München Wien, 2006, 8. Auflage

[5] Chris Rupp & die SOPHISTen RequirementsEngineering und -Management, Carl

Hansen Verlag, 4. Auflage, 2007

[6] Manfred Krüger, XSL-FO verstehen und anwenden, dpunkt-verlag GmbH, 2006

[7] Elliotte Rusty Harold & W. Scott Means, XML in a nutshell, O’Reilly Verlag GmbH &

Co, 2005

[8] Stephan Wiesner, Struts Tutorial für Java-Entwickler, Galileo Computing, 2004

[9] Beispiele guter Diplomarbeiten

http://www.sws.bfh.ch

[10] Diverse Informationen

http://de.wikipedia.org

[11] http://www.google.ch