KTH Syd Campus Haninge
Modernisering av utdata från affärssystem
Modernizing of business-system output
Av
Conny Karlsson
Examensarbetet omfattar 10 poäng och ingår som ett obligatoriskt moment i
högskoleingenjörsexamen, i datateknik med inriktning mot programvaruutveckling,
120 poäng.
2003-06-16
Sammandrag
Vid större företag används ofta affärssystem till projektredovisning. Kalin Setterberg Data
Ab har sedan början 80-talet utvecklat och sålt systemet Marathon. Ett eftersatt område är
dock rapportutskrifter som i stort sett är oförändrade sedan 80-talet.
Inom examensarbetet har en prototyp till ett verktyg tagits fram. Med verktygets hjälp kan
definitioner och layout för nya utskrifter sättas upp och skickas till systemets server i form
av två olika filer. Serverapplikationen ligger dock utanför examensarbetets ramar.
Resultat blev två olika applikationer som har ett grafiskt användargränssnitt och där de olika
delarnas information matas in med hjälp av dialogfönster. Den ena applikationen sätter upp
definitionen. Där delas rapporten upp i grupper och varje grupp delas in i olika fält. Den
andra applikationen sätter upp gruppernas storlek och formaterar typografi och färg för
fälten. Det går även att skapa nya fält i applikationen.
Verktygen används för att underlätta arbetet med moderniseringen av rapportutskrifterna
och skall spara mycket arbetstid vid utförandet av detta arbete.
KTH-SYD, campus Haninge, Dataingenjörsprogrammet, Examensarbete 10p
Modernisering av utdata från affärssystem
Conny Karlsson
03-06-17
Sidan 2 (27)
Abstract
Larger companies tend to use a business system for their project reports. Kalin Setterberg
Data AB has, since the beginning of the 1980s, developed and sold a system called
Marathon. There is, however, a neglected area within this system, which more or less has
not been changed since the 1980s, and that is the printed reports.
Within this final project a prototype for a tool has been developed. By using this tool both
definitions and layout of new printouts can be set up and sent to the system’s server in the
format of two different files. The server application, however, lies outside the scope of this
project.
The project resulted in two different applications with a graphic interface where the
information from the different parts is fed into the system by using dialog windows. One of
the applications sets up the definition. That is where the report is divided into groups and
each group is then divided into different fields. The other application sets up the size of the
groups and formats typography and colour for the fields. It is also possible to create new
fields in the application.
These tools can be used to facilitate the task of modernising the printed reports and will
therefore save time when doing so.
KTH-SYD, campus Haninge, Dataingenjörsprogrammet, Examensarbete 10p
Modernisering av utdata från affärssystem
Conny Karlsson
03-06-17
Sidan 3 (27)
Förord
Jag vill framföra ett tack till de personer som gjort mitt examensarbete möjligt. Eva-Lotta
Andersson, Kalin Setterberg Data AB, som förmedlade kontakten så att det överhuvudtaget
blev av. Gunnar Weiner, min handledare på Kalin Setterberg Data AB, som hjälpt mig i
utvecklingsarbetet och funnits till hands när frågor har behövt svar, samt självklart ett tack
till Karim Oukbir, min akademiska handledare och Rigmor Skoglund, min examinator.
KTH-SYD, campus Haninge, Dataingenjörsprogrammet, Examensarbete 10p
Modernisering av utdata från affärssystem
Conny Karlsson
03-06-17
Sidan 4 (27)
Innehållsförteckning
1 INLEDNING . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
2 BAKGRUND. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
2.1 KALIN SETTERBERG DATA AB..................................................................................... 7
2.2 SYSTEMET MARATHON ............................................................................................... 7
2.2.1 Server ............................................................................................................... 7
2.2.2 Klient ............................................................................................................... 8
2.3 BEHOV AV NYA UTSKRIFTER ........................................................................................ 8
3 SYFTE. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
4 MÅL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 0
5 METODBESKRIVNING/UPPLÄGGNING. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 1
5.1 FÖRSTUDIE..............................................................................................................11
5.2 ANVÄNDARFALL.......................................................................................................11
5.3 UTVECKLINGSMILJÖ ..................................................................................................12
6 GENOMFÖRANDE. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 3
6.1 VERKTYG FÖR FORMATERING AV UTSKRIFTER ................................................................13
6.1.1 Definitionsapplikationen......................................................................................14
6.1.2 Layoutapplikationen ...........................................................................................14
6.2 MODEL -VIEW-CONTROLLER........................................................................................14
7 RESULTAT. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 6
7.1 DEFINITIONSAPPLIKATIONEN .......................................................................................16
7.2 LAYOUTAPPLIKATIONEN .............................................................................................17
8 RESULTATDISKUSSION (TOLKNING) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 8
8.1 UPPDRAGSSPECIFIKATION ..........................................................................................18
8.2 JÄMFÖRELSE MELLAN UPPDRAGSSPECIFIKATION OCH RESULTAT ........................................18
9 SAMMANFATTNING MED SLUTSATSER . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 9
10 KÄLLFÖRTECKNING . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2 0
10.1.1 Tryckta källor ..................................................................................................20
10.1.2 Elektroniska källor............................................................................................20
10.1.3 Muntliga källor................................................................................................20
11 BILAGOR . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2 1
11.1 FÖRSTUDIE ............................................................................................................21
11.2 KLASSDIAGRAM .....................................................................................................25
11.3 TIDSPLAN ..............................................................................................................27
KTH-SYD, campus Haninge, Dataingenjörsprogrammet, Examensarbete 10p
Modernisering av utdata från affärssystem
Conny Karlsson
03-06-17
Sidan 5 (27)
1 Inledning
Denna rapport är en del av det examensarbete på 10 poäng som har genomförts under
perioden mars-maj 2002 som ett sista moment av Conny Karlssons högskoleutbildning.
Utbildningen bedrivs på KTH-Syd Campus Haninges dataingenjörsutbildning på 120
poäng med inriktning programvaruutveckling. Dataingenjörsutbildningen examinerar
ingenjörer som behövs ute på marknaden för att skapa avancerade tekniska lösningar till
dagens IT-samhälle med inriktning på programmering.
Examensarbetet har utförts på företaget Kalin Setterberg Data AB. Handledare på företaget
har varit Gunnar Weiner, chef för programmeringsgruppen. Karim Oukbir på KTH-Syd
har agerat som akademisk handledare.
KTH-SYD, campus Haninge, Dataingenjörsprogrammet, Examensarbete 10p
Modernisering av utdata från affärssystem
Conny Karlsson
03-06-17
Sidan 6 (27)
2 Bakgrund
2.1
Kalin Setterberg Data AB
Kalin Setterberg Data AB1 är ett företag som utvecklar, säljer och installerar det egna
affärssystemet Marathon. Marathon är främst anpassat för reklambyråer, mediabyråer och
arkitekter, men passar bra för alla företag som har behov av kvalificerad
projektredovisning. Företaget startades i början av 80-talet och är idag marknadsledande
leverantör till reklambyråer och mediabyråer i Sverige och en betydande leverantör i de
övriga nordiska länderna.
Företaget är beläget i Stockholm och har ett 20-tal anställda. All försäljning och installation
i hela Sverige och övriga Norden sköts från Stockholmskontoret.
2.2
Systemet Marathon
Utvecklingen av Marathon startades i mitten av 80-talet och har sedan dess byggts på med
nya funktioner och har flera gånger moderniserats och anpassats till nya tekniska
förutsättningar. Marathon körs idag på en Linux-server där databas och systemlogik
hanteras. Klientprogrammet är skrivet i Java2 och samma program körs som fristående
applikation både under Windows och Mac OS. Alla funktioner i Marathon kan även hyras i
form av en ASP-lösning.
Bild 1 Skiss över Marathons uppbyggnad
2.2.1 Server
Programmen som har hand om logiken är skrivna i AcuCobol. Detta är gjort i ett verktyg
utvecklat av Acucorp 3. Databasen består enbart av filer och är i egentlig mening ingen
riktig databas. På servern finns det en webbserver, Apache4, som sköter kommunikationen
med javaapplikationerna. Dessa tillhör de nyare delarna av Marathon.
Kommunikation med klienterna sker även med telnet-protokollet. Över denna
kommunikation skickas alla terminalfönster som användaren använder på sin klient.
Terminalfönstren använder i dag ett textbaserat användargränssnitt.
1
Kalin Setterberg Data AB, http://www.kase.se/
Learning Java 2002, Patrick Niemeyer och Jonathan Knudsen, O’Reilly
3
Acucobol, http://www.acucorp.com/solutions/datasheets/acucobolgt/
4
Apache webbserver, http://www.apache.org/
2
KTH-SYD, campus Haninge, Dataingenjörsprogrammet, Examensarbete 10p
Modernisering av utdata från affärssystem
Conny Karlsson
03-06-17
Sidan 7 (27)
2.2.2 Klient
Klienten består av javaapplikationer, för plattformsoberoende, då klienterna kör både
windows och Mac, som via https kontaktar servern. Klienterna kör alla terminalfönster via
telnet-protokollet. Dessa terminalfönster är textbaserade till skillnad från
javaapplikationerna.
2.3 Behov av nya utskrifter
Ett eftersatt område är dock rapportutskrifter som i stort sett är oförändrade sedan 80-talet.
De består av rena textfiler som skrivs ut med typsnitt med fast breddsteg. Utskrift kan
göras direkt till skrivare eller omvandlas till en enkel pdf-fil (Adobe Acrobat). Rapporterna
framställs av ca 200 program, som både innehåller omfattande programlogik och själva
rapportlayouten.
Hela systemet håller på att moderniseras, framförallt för att öka konkurrenskraften inom
affärssystemsmarknaden. Detta medför att de 200 rapporterna skall ändras och uppdateras.
För att effektivisera uppdateringen finns ett behov av en utredning hur det kan göras på
bästa sätt. Kalin Setterberg Data AB1 vill även att en prototyp av det för dem bästa sättet
skall utvecklas för att se hur det kan komma att se ut.
1
Kalin Setterberg Data AB, http://www.kase.se/
KTH-SYD, campus Haninge, Dataingenjörsprogrammet, Examensarbete 10p
Modernisering av utdata från affärssystem
Conny Karlsson
03-06-17
Sidan 8 (27)
3 Syfte
Syftet med examensarbetet är att listningar genererade från systemet Marathon, utvecklat av
Kalin Setterberg Data AB1 , ska ändra utseende och/eller format efter utvecklarnas
önskemål. Detta görs via en applikation med ett användargränssnitt liknande det nuvarande
utseendet i Marathon. Det underlättar användandet av applikationen och kräver inte någon
större utbildning i verktyget.
Ett annat syfte med arbetet är den grund som designen av mallarna ska ge för vidare
utveckling av applikationen.
1
Kalin Setterberg Data AB, http://www.kase.se/
KTH-SYD, campus Haninge, Dataingenjörsprogrammet, Examensarbete 10p
Modernisering av utdata från affärssystem
Conny Karlsson
03-06-17
Sidan 9 (27)
4 Mål
Uppdraget består i att utreda hur man på ett enkelt sätt kan modernisera själva layouten på
rapportutskrifterna i Marathon. Utskrift ska kunna göras direkt till laserskrivare och som
pdf-fil. Lösningen bör vara relativt enkel att implementera och val av teknisk plattform bör
göras med hänsyn till befintlig kompetens i företaget. Då lösningen är tänkt att
implementeras hos ett stort antal kunder är det av betydelse att den inte bygger på någon
produkt som måste licensieras per kund.
Målet är även att bygga en prototyp av den lösning som vi gemensamt bedömer vara den
bästa. Prototypen bör vara praktiskt körbar, men får innehålla begränsningar av olika slag.
Ett exempel på begränsning är att prototypen inte behöver kunna hantera alla typer av
rapporter, men det bör i så fall finnas någon form av skiss på lösning för övriga typer.
KTH-SYD, campus Haninge, Dataingenjörsprogrammet, Examensarbete 10p
Modernisering av utdata från affärssystem
Conny Karlsson
03-06-17
Sidan 10 (27)
5 Metodbeskrivning/Uppläggning
En stor del av arbetet kommer att handla om hur utdata från Marathon kan justeras och
presenteras på bästa sätt. För tidsplan se bilaga Tidsplan.
5.1 Förstudie
För att få lärdom om Marathon krävdes en omfattande undersökning av acucobol3 , en
COBOL variant som Marathon är utvecklat i. Resultaten av undersökningen och de olika
lösningsförslagen finns i bilaga Förstudie.
Vid ett möte med företagets handledare, Gunnar Weiner, bestämdes vilket förslag som
skulle genomföras. Se ”kapitel 6 Genomförande”.
Val av programmeringsspråk var valfritt. Java valdes dels för att Marathons gränssnitt är
utvecklade i detta språk, och dels för att Java har väl utbyggda klassbibliotek med flera
färdiga klasser för grafiska användargränssnitt.
5.2
Användarfall
Alla användarfall sattes upp och Användarfallsdiagram i UML5 gjordes. Se bild 2 nedan.
Bild 2 Användarfallsdiagram visande användarfall för verktyget
3
5
Acucobol, http://www.acucorp.com/solutions/datasheets/acucobolgt/
UML (Unified Modeling Language) http://www.uml.org/
KTH-SYD, campus Haninge, Dataingenjörsprogrammet, Examensarbete 10p
Modernisering av utdata från affärssystem
Conny Karlsson
03-06-17
Sidan 11 (27)
5.3
Utvecklingsmiljö
Som utvecklingsmiljö användes texteditorn Textpad6. Textpad är en lättare version av en
IDE (Integrated Development Enviroment), vilket är en typ av editor som är integrerad med
en utvecklingsmiljö. Tillsammans med en Javakompilator fungerar Textpad utmärkt för
utveckling av applikationer skrivna i språket Java. Javakompilatorn ingår i J2SE7 (Java 2
Platform, Standard Edition) som hämtas från suns hemsida. I J2SE ingår en API
(Application Programming Interface). En API består av färdiga funktioner och variabler
som programmerare har användning för i sina applikationer. Utvecklingen av
applikationerna har skett med hjälp av version 1.4.1.
6
7
Textpad, http://www.textpad.com
Suns java, http://java.sun.com/j2se/1.4/datasheet.1_4.html
KTH-SYD, campus Haninge, Dataingenjörsprogrammet, Examensarbete 10p
Modernisering av utdata från affärssystem
Conny Karlsson
03-06-17
Sidan 12 (27)
6 Genomförande
6.1 Verktyg för formatering av utskrifter
Vektyget består av två applikationer. En applikation som sätter upp definitionen av
rapporten och som genererar en definitionsfil. Den andra applikationen sätter upp själva
layouten och skapar en layoutfil. Detta görs via ett grafiskt användargränssnitt. För varje
rapportutskrift laddas en exempelfil. Exempelfilen innehåller information om hur den
ursprungliga utskriften ser ut.
Applikationerna skrivs i Java, dels för att det har många färdigskrivna klasser för grafiska
användargränssnitt och dels för att Kalin Setterberg Data AB1 använder Java2 för övrig
utveckling av applikationer till systemet.
På servern läggs ett paket som tar hand om dessa två filer och med hjälp av Groff8 som
omvandlar den nuvarande utskriften enligt informationen i filerna. Paketet skickar sedan
den nya utskriften vidare ut ur systemet. Paketet ligger utanför examensarbetets ramar och
beskrivs därför inte djupare här.
Windows
Linux
Marathon
Exempelutskrift
Marathon
Definitionsprogram
Definitionsfil
Gammal
utskrift
Definitionsfil
Layoutprogram
Layoutfil
Runtime
Ny
utskrift
Layoutfil
Bild 3 Schematisk beskrivning av lösningsförslaget
En testklass skapades där de olika delarna testades var för sig innan de blev implementerade
i den riktiga applikationen, för att underlätta felsökning vid problem och för att inte förstöra
huvudapplikationen.
Undansparande av data sker på samma sätt i båda applikationerna genom att varje
dialogfönster har en egen klass som motsvarar alla variabler som kan justeras i dialogen.
Applikationen har en klass, DataStorage, som innehåller vektorer motsvarande varje sådan
klass. Vektorn lagrar då varje objekt skapat av dialogfönstret.
1
Kalin Setterberg Data AB, http://www.kase.se/
Learning Java 2002, Patrick Niemeyer och Jonathan Knudsen, O’Reilly
8
Groff, http://www.gnu.org/software/groff/groff.html
2
KTH-SYD, campus Haninge, Dataingenjörsprogrammet, Examensarbete 10p
Modernisering av utdata från affärssystem
Conny Karlsson
03-06-17
Sidan 13 (27)
När användaren väljer att spara undan till fil, finns en klass som har hand om all
filhantering. Filhanteringsobjektet hämtar alla vektorer och skriver ut de innehållande
objekten i en tabbseparerad textfil.
6.1.1 Definitionsapplikationen
Definitionsapplikationen definierar upp grupper och fält. En grupp kan till exempel vara
sidhuvud och i en grupp definieras fält. Se ”kap 7 Resultat”.
Inramningen av grupper och fält löstes genom att skapa en underklass till JTextArea9 .
Underklassen, som ärver ifrån JTextArea9 har en egen ritfunktion som ritar ut rektanglar i
textytan. Rektanglarnas färg ändras beroende på om det är en grupp eller ett fält och linjes
tjocklek ändras för att visa vilken grupp eller fält som är i fokus. I underklassen lagras även
gruppens respektive fältets identitetsnummer.
I textytan laddas en exempelutskrift in. Markering av sökningsvillkor görs med hjälp av
musen. Då utskriften innehåller flera sidor skall grupper och fält komma igen på alla sidor.
En sökningsalgoritm skapades för att definiera upp alla grupper och fält. Indata till
algoritmen är den med musen markerade textens position i arrayen. Se nedan:
Sökningsalgorimen:
1. Första positionen på varje rad sätts till 1 genom att föregående rads position för
radbytestecknet dras av från den position som musen markerat. Den med musen
markerade delens position och radnummer sparas undan.
2. Varje rad i exempelutskriften söks igenom. Först undersöks om radens längd är
minst lika lång som den sökta positionen.
3. Undersök om den markerade texten och dess position matchar på motsvarande
position i raden. Om så är fallet, spara undan radens y-position i gruppobjektet.
Utdata blir alla undansparade y-positioner tillsammans med gruppens antal rader används
för att räkna ut var rektanglarna ska ritas ut.
För fälten räknas vilken rad i gruppen det befinner sig på fram genom att fältets radnummer
dras av från gruppens radnummer som finns lagrad i gruppobjektet
6.1.2 Layoutapplikationen
I Layoutapplikationen sätts positioner och storlekar ut på fält och grupper. Nya fält kan
läggas till och alla fält kan ändras när det gäller typsnitt och färger. Se ”kap 7 Resultat”.
För att kunna stryka under text i JTextField9 skapades en underklass, där en ritfunktion
lades till. Funktionen ritar ut en linje under texten, där linjens bredd och position räknas
fram med hjälp av textens storlek.
Gruppernas storlek kan justeras genom att man med musens hjälp flyttar en horisontell
linje. En grupps linje är den linje som ligger under gruppen, och andra gruppers storlek
skall inte påverkas. En underklass till JPanel9 skapades, dels för att kunna rita linjer och
figurer, och dels för att lagra gruppens höjd. Denna höjd hämtas och ändras vid
storleksändring på någon av grupperna.
6.2 Model-View-Controller
Applikationerna har implementerats med MVC2 (Model-View-Controller). MVC är en
user-interface design som härstammar från Smalltalk. Med hjälp av MVC delas
9
Suns java, http://java.sun.com/j2se/1.4.1/docs/api/
KTH-SYD, campus Haninge, Dataingenjörsprogrammet, Examensarbete 10p
Modernisering av utdata från affärssystem
Conny Karlsson
03-06-17
Sidan 14 (27)
applikationens logiska delar upp. Det innebär att det finns klasser som hanterar datan,
Model, och det finns klasser som har hand om presentationen av användargränssnittet,
View.
Klasser som har hand om kontrollerna, tangenttryck och mushändelser är implementerade
som innerklasser i de modell-klasser där de används. Detta är inte riktigt enligt MVCstandard, men är implementerat enligt Learning Java2 .
Bild 4 Diagram över Model – View - Controller
2
Learning Java 2002, Patrick Niemeyer och Jonathan Knudsen, O’Reilly
KTH-SYD, campus Haninge, Dataingenjörsprogrammet, Examensarbete 10p
Modernisering av utdata från affärssystem
Conny Karlsson
03-06-17
Sidan 15 (27)
7 Resultat
7.1 Definitionsapplikationen
Med definitionsapplikationen definieras grupper (den streckade pilen i bild 5 pekar på en
grupp) och fält (den heldragna pilen i bild 5 pekar på ett fält) upp.
I applikationen laddas en exempelutskrift på en rapport genererad från dagens system (se
bild 5).
En grupp definieras upp genom att i gruppdialogen ange ett namn på gruppen och en eller
två referenspunkter som skall ingå. Med hjälp av att välja om referenspunkterna ska eller
inte ska matcha och med ett logiskt val, ”AND” eller ”OR”, mellan punkterna kan en grupp
skapas. Varje referenspunkt sätts med hjälp av musen som markerar en bit text som är
speciell för just den gruppen. I bild 5, högst upp, är ett huvud definierat där texten ”SID”
och ”:” på översta raden är markerad. Dessutom anges hur många rader en grupp ska
innehålla, i gruppen huvud är antalet rader 5.
Fält markeras inom en grupp och namnges via fältdialogen. Ett fält innehåller bara en rad
och fältets radnummer i gruppen räknas fram automatiskt.
Bild 5 Definitionsapplikationen med grupper och fält definierade
När hela exempelutskriften är definierad sparas de olika variablerna undan i en
tabbseparerad textfil, där först en grupps variabler står och sedan följs av de fält som finns i
gruppen. Varje variabel är separerad med tabulator och första bokstaven indikerar om det är
en grupp eller ett fält.
KTH-SYD, campus Haninge, Dataingenjörsprogrammet, Examensarbete 10p
Modernisering av utdata från affärssystem
Conny Karlsson
03-06-17
Sidan 16 (27)
7.2 Layoutapplikationen
I layoutapplikationen läses en definitionsfil in. Här ändras gruppernas storlek och datafälten
flyttas och formateras med hjälp av dialogfönster. Det går även att lägga till andra fält och
figurer. Fälten kan få bakgrundsfärg, ramar och olika storlekar. Texten i fälten kan ändra
typografi och färg. Bild 6 är det färdiga resultatet från den definitionsfil som skapades av de
definitioner som förekommer i bild 5.
Parametrar som olika marginaler samt liggande eller stående A4 väljs också.
Bild 6 Layoutapplikationen med färdigställd layout
När layouten är klar sparas de olika variablerna som beskriver den i en tabbseparerad
textfil. I filen står först parametrarna, därefter kommer gruppens variabler, sedan de olika
fälten, med det data som hör dit och eventuella figurer. Varje rad börjar med en bokstav
som talar om vad det är för typ som beskrivs.
KTH-SYD, campus Haninge, Dataingenjörsprogrammet, Examensarbete 10p
Modernisering av utdata från affärssystem
Conny Karlsson
03-06-17
Sidan 17 (27)
8 Resultatdiskussion (tolkning)
Vad blev till slut resultatet av detta examensarbete? För att undersöka hur lyckat resultatet
har blivit kan uppdragsspecifikationen jämföras mot det verkliga resultatet.
8.1 Uppdragsspecifikation
Att utreda möjligheterna att modernisera själva layouten på rapportutskrifterna. Utskrift
måste kunna göras direkt till laserskrivare och som pdf-fil. Lösningen bör vara relativt
enkel att implementera och val av teknisk plattform bör göras med hänsyn till befintlig
kompetens i företaget. Då lösningen är tänkt att tillämpas hos ett stort antal kunder är det av
betydelse att den inte bygger på någon produkt som måste licensieras per kund.
I uppdraget ingår även att bygga en prototyp av den lösning som gemensamt med Kalin
Setterberg Data AB1 bedöms vara den bästa. Prototypen bör vara praktiskt körbar, men får
innehålla begränsningar av olika slag. Ett exempel på begränsning är att prototypen inte
behöver kunna hantera alla typer av rapporter, men det bör i så fall finnas någon form av
skiss på lösning för övriga typer. Om projektet bedöms vara för omfattande kan vi
programmera vissa delar, men det kan förmodligen inte ske förrän efter uppdragets slut. De
delar vi programmerar bör därför vara så väl avgränsade att examensarbetet kan avslutas
utan dem.
8.2 Jämförelse mellan uppdragsspecifikation och resultat
Vid en genomgång av uppdragsspecifikationen visar det sig att de punkter som är nämnda
också har realiserats. Möjligheterna och tillvägagångssättet för att utveckla och modernisera
utskrifterna har utretts och har gett upphov till två verktyg som tillsammans både kan
typografera och färgsätta utskrifterna från systemet Marathon.
Dock har, enligt specifikationen, arbetet avgränsats så att den delen som skall ligga på
servern, runtime - delen, lyfts ur och ska programmeras av Kalin Setterberg Data AB1 .
Vissa justeringar har gjorts för att det skall underlätta för Kalin Setterberg Data AB när
serverdelen programmeras. Till exempel sparas alla objekt ner som utskrivna i en textfil.
Detta gör att vid inläsning till layoutapplikationen måste en parser programmeras. Det hade
varit bättre att spara ned objekten direkt på en binär fil istället.
Prototyperna har utvecklats i Java för att det finns kompetens inom det språket på Kalin
Setterberg Data AB.
1
Kalin Setterberg Data AB, http://www.kase.se/
KTH-SYD, campus Haninge, Dataingenjörsprogrammet, Examensarbete 10p
Modernisering av utdata från affärssystem
Conny Karlsson
03-06-17
Sidan 18 (27)
9 Sammanfattning med slutsatser
Sammanfattningsvis kan sägas att modernisering av utskrifter kan göras på en mängd olika
sätt. I det här examensarbetet har valts en metod att genomföra detta utan att påverka
befintlig programlogik i affärssystemet Marathon. Två verktyg har tagits fram, ett förr att
definiera upp utskriften och ett för själva layouten av den samma.
Då systemet består av över tvåhundra program och alla har sin egen rapportering, har
verktygen tagits fram för att underlätta arbetet vid moderniseringen av dessa.
En vidareutveckling vore att förfina verktygen ytterligare, så att de skulle bli ännu mer
lätthanterliga. Det skulle kunna göras med olika begränsningar vid flyttning av
komponenter och med att lägga på ett raster så att förflyttning bara kunde göras i en riktning
i taget.
Om verktyget gjordes tillräckligt användarvänligt skulle Kalin Setterberg Data AB:s kunder
själva kunna justera sina utskrifter efter viss utbildning.
KTH-SYD, campus Haninge, Dataingenjörsprogrammet, Examensarbete 10p
Modernisering av utdata från affärssystem
Conny Karlsson
03-06-17
Sidan 19 (27)
10 Källförteckning
10.1.1 Tryckta källor
Niemeyer, P.; Knudsen, J., Learning Java, O’Reilly, Kalifornien, 2002, 2:a utgåvan.
Geary, D, graphic Java, Mastering the JFC, Sun Microsystem Press, Kalifornien, 1999, 3:e
utgåvan.
Walsh, A.; Couch, J.; Steinberg, D., Java 2, Bibeln, IDG AB, Stockholm, 2001.
Appelkrans, M.; Åbom, C., OOS/UML, Studentlitteratur, Lund, 2001.
Reed, P., Developing applications with Java and UML,Addison-Wesley,2001.
10.1.2 Elektroniska källor
Kalin Setterberg Data AB.
http://www.kase.se (tillgänglig 2003-03-21)
AcuCorp Inc.
http://www.acucorp.com (tillgänglig 2003-03-28)
The Apache Software Foundation.
http://www.apache.org (tillgänglig 2003-03-30)
GNU projekt.
http://www.gnu.org/software/groff/groff.html (tillgänglig 2003-04-01)
Textpad, the texteditor for Windows
http://www.textpad.com (tillgänglig 2003-04-28)
Unified modeling language.
http://www.uml.org (tillgänglig 2003-04-30)
Java 2 Platform, Standard Edition (J2SE) ver. 1.4.1
http://java.sun.com (tillgänglig 2003-05-10)
10.1.3 Muntliga källor
Reine Bergström, lärare, KTH,
Gunnar Weiner, Chef programmeringsgruppen, Kalin Setterberg Data AB,
KTH-SYD, campus Haninge, Dataingenjörsprogrammet, Examensarbete 10p
Modernisering av utdata från affärssystem
Conny Karlsson
03-06-17
Sidan 20 (27)
11 Bilagor
11.1 Förstudie
Förstudie av tre olika sätt att lösa uppgiften
1.
Hur formas utskrifterna i dag?
Idag genereras utskrifterna direkt på servern med hjälp acucobol. Varje program består av urvalslogik
och layout tätt tillsammans. Det finns 200 program i Marathon systemet och alla har sin egen
rapportutskrift.
Det bästa sättet rent tekniskt vore att man gick in i källkoden och formaterar om definitionen och
layouten för varje programs rapportutskrift. Detta skulle göras med hjälp av verktyget ACUCOBOLGT som har används för all COBOL programmering.
ACUCOBOL-GT är ett ANSI 1985 kompatibelt utvecklingssystem. Program som är kompilerade för
maskinoberoende objektskod kan exekveras på över 600 plattformer utan att behövas kompileras igen.
ACUCOBOL-GT kan även generera objektskod enbart för Intel och Sparc processorer. Dessa två olika
kompilerade objektskoder kan blandas inom samma applikation för att optimera prestandan för den
fullständiga applikationen.
Fördelar: Rent tekniskt den enklaste lösningen då inga extra paket behövs på servern.
Nackdelar: Riskabelt då man måste gå in i logiken och ändra. Väldigt tidskrävande då det rör sig om
200 program som skall ändras och kompileras om.
http://www.acucorp.com/solutions/datasheets/acucobolgt/howitworks.php
KTH-SYD, campus Haninge, Dataingenjörsprogrammet, Examensarbete 10p
Modernisering av utdata från affärssystem
Conny Karlsson
03-06-17
Sidan 21 (27)
2. Verktyg för formatering av utskrifter
Två applikationer skapas. En applikation som sätter upp definitionen av rapporten och som genererar
en definitionsfil. Den andra applikationen sätter upp själva layouten och skapar en layoutfil. Detta görs
via ett grafiskt användargränssnitt. För varje rapportutskrift laddas en exempelfil på hur utskriften ser
ut i dag.
Applikationerna skrivs i Java, dels för att det har en bättre felhantering och dels för att Kalin Setterberg
Data AB använder Java för övrig utveckling av applikationer till systemet.
På servern läggs ytterligare ett paket på som tar hand om dessa två filer och med hjälp av Groff
omvandlar den nuvarande utskriften enligt informationen i filerna. Paketet skickar sedan den nya
utskriften vidare ut ur systemet.
Windows
Linux
Marathon
Exempelutskrift
Marathon
Definitionsprogram
Definitionsfil
Gammal
utskrift
Definitionsfil
Layoutprogram
Layoutfil
Runtime
Ny
utskrift
Layoutfil
Schematisk beskrivning av lösningsförslaget
Fördelar:
Det är säkert och tidsbesparande för utvecklarna. All programlogik finns kvar.
Ekonomiskt, då det inte krävs några nya licenser.
Applikationerna gör så att det arbetet kan göras av vem som helst inom företaget, när programmerarna
har gjort lösningen på servern.
Nackdelar: Ytterligare ett paket läggs på servern. Utskrifter genereras för att sedan omvandlas en gång
till.
KTH-SYD, campus Haninge, Dataingenjörsprogrammet, Examensarbete 10p
Modernisering av utdata från affärssystem
Conny Karlsson
03-06-17
Sidan 22 (27)
3. En SQL lösning ovanpå DB
Hos klienten skapas en rapportgenerator, en applikation som skapar generella rapporter utifrån SQL
(Structured Query Language). Rapportgeneratorn kan antingen programmeras eller köpas färdig.
3.1 AcuODBC
Ett sätt att göra om utskrifterna är att lägga på AcuODBC på servern. Den är baserad på Microsoft
Open Database Connectivety (ODBC) standard.
AcuODBC är en ODBC driver för ACUCOBOL-GT datafiler och dess jobb är att ta emot SQL-frågor
från applikationer och översätta dem till COBOL I/O. AcuODBC översätter sedan resultatdatat och
skickar det tillbaka till applikationen.
Ett problem är att AcuODBC endast kan kommunicera med windowsapplikationer och då klientsidan
består av både windows och Macstationer går inte denna lösning att genomföra i dagsläget.
http://www.acucorp.com/solutions/datasheets/acuodbc/
3.2 Acu4GL
För att lösa problemet med att AcuODBC endast kan kommunicera med windowsapplikationer, måste
ett plattformsoberoende hos klienten och rapportgeneratorn skapas. Detta görs genom att man dels
programmerar översättningstabeller och installerar Acu4GL på servern. Dessutom installeras en SQLserver istället för den fildatabas som finns idag.
Acu4GL genererar SQL-frågor baserade på COBOL I/O och programmets nuvarande tillstånd.
Frågorna skickas till databasen. Efter att frågorna är exekverade skickar databasen tillbaka resultatet till
Acu4GL som skapar COBOL kod returnerar det till programmet.
KTH-SYD, campus Haninge, Dataingenjörsprogrammet, Examensarbete 10p
Modernisering av utdata från affärssystem
Conny Karlsson
03-06-17
Sidan 23 (27)
Fördelar:
Ett effektivt sätt, dessutom uppgraderas systemet till en riktig databas i stället för AcuCobol-GTs
fildatabas.
Nackdelar:
Då Kalin Setterberg Data AB har cirka 330 kunder skulle det bli väldigt kostsamt med licenser för
Acu4GL.
Acu4GL stöder inte någon licensfri databas av typen mySQL och Postgree.
http://www.acucorp.com/solutions/datasheets/acu4gl/howitworks.php
KTH-SYD, campus Haninge, Dataingenjörsprogrammet, Examensarbete 10p
Modernisering av utdata från affärssystem
Conny Karlsson
03-06-17
Sidan 24 (27)
11.2 Klassdiagram
Definition
KTH-SYD, campus Haninge, Dataingenjörsprogrammet, Examensarbete 10p
Modernisering av utdata från affärssystem
Conny Karlsson
03-06-17
Sidan 25 (27)
Layout
KTH-SYD, campus Haninge, Dataingenjörsprogrammet, Examensarbete 10p
Modernisering av utdata från affärssystem
Conny Karlsson
03-06-17
Sidan 26 (27)
11.3 Tidsplan
v.11 v.12 v.13 v.14 v.15 v.16 v.17 v.18 v.19 v.20 v.21 v.22
Förundersökning
Systemet Marathon
Framtagande av verktyg
Prototyp
Utförande
Testning
Rapport
Inledning, bakgrund, syfte,
mål
Metodbeskrivning
Genomförande
Resultat, Resultatdiskussion
Sammanfattning,
Sammandrag
Färdigställande
Presentation
Powerpoint
Poster
KTH-SYD, campus Haninge, Dataingenjörsprogrammet, Examensarbete 10p
Modernisering av utdata från affärssystem
Conny Karlsson
03-06-17
Sidan 27 (27)