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)