Univerzita Karlova v Praze Matematicko-fyzikální fakulta
BAKALÁŘSKÁ PRÁCE
Přemysl Vysoký Systém pro kontrolu linkové výroby Středisko informatické sítě a laboratoří
Vedoucí bakalářské práce: RNDr. Libor Forst Studijní program: Informatika Studijní obor: Programování
Praha 2013
Na tomto místě bych velmi rád poděkoval mým rodičům za podporu v mém dosavadním studiu. Můj dík patří i panu RNDr. Liboru Forstovi za cenné a velmi vhodné rady během psaní této práce. V poslední řadě bych rád poděkoval i pracovníkům firmy Rohde & Schwarz závod Vimperk s.r.o. za spolupráci při vývoji a trpělivost při testování systému.
Prohlašuji, že jsem tuto bakalářskou práci vypracoval samostatně a výhradně s použitím citovaných pramenů, literatury a dalších odborných zdrojů. Beru na vědomí, že se na moji práci vztahují práva a povinnosti vyplývající ze zákona č. 121/2000 Sb., autorského zákona v platném znění, zejména skutečnost, že Univerzita Karlova v Praze má právo na uzavření licenční smlouvy o užití této práce jako školního díla podle §60 odst. 1 autorského zákona.
V Praze dne 21.5. 2013
Podpis autora
Název práce: Systém pro kontrolu linkové výroby Autor: Přemysl Vysoký Katedra: Středisko informatické sítě a laboratoří Vedoucí bakalářské práce: RNDr. Libor Forst Abstrakt: Bakalářská práce se zabývá implementací firemního systému pro kontrolu linkové výroby. Jedná se o PHP aplikaci s MySQL databází a webovým uživatelským rozhraním. Návrh systému vychází z požadavků reálné firmy, kde je software použit. Řešení obsahuje kromě řízení linkové výroby i správu uživatelů a uživatelských skupin a editor a prohlížeč programovatelných výrobních návodů pro vyráběné produkty. Systém umožňuje modelovat schémata reálných linek a pracovišť, definovat parametry produktů, vytvářet výrobní postupy a připojovat k produktům vytvořené výrobní návody. Systém podporuje snadnou integraci nových rozšíření a je použitelný v různých prohlížečích, operačních systémech a široké škále rozlišení obrazovek a zobrazovacích zařízení. Klíčová slova: linková výroba, firemní intranet, elektronické výrobní návody
Title: Line production control system Author: Přemysl Vysoký Department: Network and Labs Management Center Supervisor: RNDr. Libor Forst Abstract: Thesis describes an implementation of a corporate system designed for management and control of an assembly line production. The system is a PHP application with MySQL database and a web user interface. System design is based on generalized demands of a real company where the software is being used. The solution includes user and user group administration, an editor and a viewer of a manufacturing manuals of the assembly line products and an assembly line production control itself. Software allows creating an assembly line and workplace schemes, defining product parameters, creating manufacturing procedures and linking products with their manufacturing manuals. The system is designed for an easy integration of new extensions and supports a large scale of screen resolutions. Keywords: line production, company intranet, electronic manufacturing manuals
Obsah 1 Úvod 1.1 Motivace . . . . . . 1.2 Hlavní účel systému 1.3 Cíle práce . . . . . 1.4 Struktura práce . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
2 Analýza prostředí 2.1 Linková výroba . . . . . . . . . . . 2.1.1 Pracoviště a buffery . . . . . 2.1.2 Pozice pracoviště . . . . . . 2.1.3 Další vlastnosti . . . . . . . 2.1.4 Hospital . . . . . . . . . . . 2.2 Elektronické výrobní návody . . . . 2.2.1 Programovatelnost návodů . 2.3 Uživatelé . . . . . . . . . . . . . . . 2.4 Ovládání systému . . . . . . . . . . 2.4.1 Metody přístupu k systému 2.4.2 Přístupová zařízení . . . . . 2.5 Integrace nových rozšíření . . . . . 2.6 Shrnutí analýzy . . . . . . . . . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
4 4 4 5 5
. . . . . . . . . . . . .
. . . . . . . . . . . . .
. . . . . . . . . . . . .
. . . . . . . . . . . . .
. . . . . . . . . . . . .
. . . . . . . . . . . . .
. . . . . . . . . . . . .
. . . . . . . . . . . . .
. . . . . . . . . . . . .
. . . . . . . . . . . . .
. . . . . . . . . . . . .
. . . . . . . . . . . . .
. . . . . . . . . . . . .
. . . . . . . . . . . . .
. . . . . . . . . . . . .
. . . . . . . . . . . . .
. . . . . . . . . . . . .
6 6 6 6 7 7 7 7 8 8 8 9 9 10
3 Řešené problémy při návrhu systému 3.1 Ovládací rozhraní . . . . . . . . . . . 3.2 Programovací jazyk . . . . . . . . . . 3.3 Framework . . . . . . . . . . . . . . . 3.4 Moduly systému . . . . . . . . . . . . 3.4.1 Hlavní moduly . . . . . . . . 3.5 Databáze . . . . . . . . . . . . . . . 3.6 Ovládání systému . . . . . . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
11 11 11 11 12 12 12 13
. . . . . . . . . . . . . .
. . . . . . . . . . . . . .
. . . . . . . . . . . . . .
. . . . . . . . . . . . . .
. . . . . . . . . . . . . .
. . . . . . . . . . . . . .
. . . . . . . . . . . . . .
. . . . . . . . . . . . . .
. . . . . . . . . . . . . .
. . . . . . . . . . . . . .
. . . . . . . . . . . . . .
. . . . . . . . . . . . . .
. . . . . . . . . . . . . .
. . . . . . . . . . . . . .
. . . . . . . . . . . . . .
. . . . . . . . . . . . . .
14 14 14 15 15 16 16 16 17 17 17 18 19 19 19
4 Uživatelská dokumentace 4.1 Instalace systému . . . . . . . . . . . 4.1.1 Požadavky na prostředí . . . . 4.1.2 Konfigurace systému . . . . . 4.1.3 Použití systému . . . . . . . . 4.2 Intranetový aplikační manažer . . . . 4.3 LPCS . . . . . . . . . . . . . . . . . 4.3.1 Základní ovládání . . . . . . . 4.3.2 Sekce Správce linek“ . . . . . ” 4.3.3 Sekce Plánovač linky“ . . . . ” 4.3.4 Sekce Výrobní postupy“ . . . ” 4.3.5 Sekce Typy produktů“ . . . ” 4.3.6 Sekce Parametry produktů“ . ” 4.3.7 Sekce Disponent“ . . . . . . ” 4.3.8 Sekce Hledání produktů“ . . ” 1
4.4
4.3.9 Sekce Výroba“ . . . . . . ” 4.3.10 Sekce Pracoviště“ . . . . ” MEN . . . . . . . . . . . . . . . . 4.4.1 MEN archiv . . . . . . . . 4.4.2 Instalační balíček . . . . . 4.4.3 Ovládání prohlížeče . . . . 4.4.4 Ovládání editoru . . . . . 4.4.5 Úvodní obrazovka . . . . . 4.4.6 Vytvoření návodu . . . . . 4.4.7 Kusovník . . . . . . . . . 4.4.8 Zdrojový soubor . . . . . 4.4.9 Import MEN . . . . . . . 4.4.10 Sekce Aktuální krok“ . . ” 4.4.11 Sekce Parametry návodu“ ” 4.4.12 Sekce Přehled kroků“ . . ” 4.4.13 Sekce Export MEN“ . . . ” 4.4.14 Sekce Export PDF“ . . . ” 4.4.15 Sekce Přehled obrázků“ . ” 4.4.16 Sekce Nahrát obrázky“ . ” 4.4.17 Sekce Soubory“ . . . . . ” 4.4.18 Sekce Kusovník“ . . . . . ”
5 Programátorská dokumentace 5.1 Intranetový aplikační manažer . 5.1.1 Moduly . . . . . . . . . 5.1.2 Správa modulů . . . . . 5.1.3 Spouštění modulů . . . . 5.1.4 Dostupné proměnné . . 5.1.5 Autentizace uživatelů . . 5.2 PHP knihovny jádra . . . . . . 5.2.1 cSql . . . . . . . . . . . 5.2.2 cReg . . . . . . . . . . . 5.2.3 cPage . . . . . . . . . . 5.2.4 Další PHP funkce . . . . 5.3 PHP knihovny modulu MEN . . 5.3.1 cMEN a cKrok . . . . . 5.3.2 mPDF . . . . . . . . . . 5.3.3 PDFMerger . . . . . . . 5.3.4 PHPExcel . . . . . . . . 5.4 Organizace modulu MEN . . . . 5.4.1 Organizace kódu . . . . 5.4.2 Organizace dat . . . . . 5.4.3 MEN archiv . . . . . . . 5.5 PHP třídy modulu LPCS . . . . 5.5.1 Reprezentace linky . . . 5.5.2 Parametry produktů . . 5.6 Sdílené javaScriptové knihovny 5.6.1 JSON . . . . . . . . . .
2
. . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . .
19 20 21 21 21 21 22 23 23 24 24 26 26 27 28 29 29 29 30 30 30
. . . . . . . . . . . . . . . . . . . . . . . . .
31 31 32 32 32 33 34 34 34 35 35 35 35 35 35 36 36 37 37 37 38 38 38 39 39 39
5.7
5.6.2 jQuery . . . . . 5.6.3 jQuery UI . . . 5.6.4 jHadr . . . . . 5.6.5 SlickForms . . . 5.6.6 ColorBox . . . 5.6.7 TableDnD . . . JavaScriptové knihovny 5.7.1 TinyMCE . . . 5.7.2 QuickSand . . . 5.7.3 Uploadify . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . modulu MEN . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
40 40 40 40 41 41 41 41 41 42
6 Porovnání s existujícím SW 6.1 Tuppas MES Software . . 6.2 EZ-MES . . . . . . . . . . 6.3 IS Bílý Motýl . . . . . . . 6.4 Závěr porovnání . . . . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
43 43 43 44 44
7 Rozšíření systému 7.1 Systém SAP . . . . . 7.2 Statistiky a přehledy 7.3 Výrobní materiály . 7.4 Další rozšíření . . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
45 45 45 46 46
. . . .
. . . .
. . . .
8 Závěr
47
Literatura
48
Seznam použitých zkratek
50
Přílohy A. Obsah přiloženého CD . . . . . . . . . . . . . . . . . . . . . . . . . B. Schémata MySQL databází . . . . . . . . . . . . . . . . . . . . . . .
51 51 52
Seznam obrázků
56
3
1. Úvod Bakalářská práce se zabývá implementací softwaru, který má sloužit při organizaci a vedení linkové výroby. Návrh systému vychází z požadavků reálné firmy o více než 500 zaměstnancích, kde byl systém nasazen. Momentálně je systém použit pro vedení téměř 20 různých výrobních linek. Systém byl po nasazení v některých oblastech zobecněn tak, aby ho bylo možné použít i v dalších firmách užívajících linkovou výrobu, ale s například zcela odlišnými výrobními metodami, strukturou linek nebo parametry vyráběných produktů.
1.1
Motivace
Linková výroba je už od jejího vzniku na konci 18. století často používanou výrobní metodikou. Cílem každé firmy užívající linkovou výrobu je optimalizace celého procesu. Plánování struktury výrobních linek se ovšem ukázalo být složitým problémem. Výzkumem v této oblasti se podrobněji zabývá například Univerzita Friedricha Schillera v Jeně 1 , která v rámci projektu Assembly Line Ballancing 2 shromažďuje vědecké materiály z tohoto okruhu. Existuje mnoho matematických modelů pro simulaci, analýzu a optimalizaci linek. Optimalizace se zabývá například průtokem produktů linkou, vyvažování velikosti uzlů linky nebo hledání úzkých hrdel. Jedním z možných řešení tohoto problému je ale také analýza dat vzešlých z provozu reálných linek. Pro získání dat je ovšem nutné výrobu nejdříve kontrolovat a sledovat, pro úspěšné uplatnění optimalizačních kroků je nezbytné mít možnost linku ovládat.
1.2
Hlavní účel systému
Hlavní účel systému spočívá v možnosti věrného namodelování libovolné skutečné výrobní linky pomocí jednoduchého schématu, definování parametrů vyráběných produktů a jejich výrobních postupů. Dále umožňuje sestavení elektronických návodů, které jsou uživatelům zobrazovány během samotné výroby. Systém poté řídí výrobu produktů, kde řízením je myšleno vydávání pokynů pracovníkům linky. Pokyny závisí na pracovní pozici, stavu a parametrech produktů a požadovaných pracovních akcích. Většina těchto pokynů spadá do dvou hlavních kategorií. V první řadě se jedná o řízení přesouvání produktů na a z určených pracovních míst linky v závislosti na výrobních postupech produktů. Ve druhém případě jde o zobrazování elektronických návodů a jejich pracovních kroků, které je třeba s produkty na daných pracovištích vykonat. Systém ukládá všechny informace o provedených akcích na lince a ty jsou později dostupné pro analýzu. 1 2
http://www.uni-jena.de http://www.assembly-line-balancing.de
4
1.3
Cíle práce
Práce má za úkol popsat cílové prostředí, do kterého je systém nasazován, toto prostředí analyzovat a definovat vzešlé požadavky na funkce systému. Dále se bude práce zabývat implementací systému a popíše ho z uživatelského i programátorského hlediska. Současně budou zdůvodněna návrhová rozhodnutí a použité technologie, knihovny a vývojové postupy při řešení některých problémů. V poslední řadě bude systém porovnán s alternativními existujícími řešeními a budou navržena vhodná rozšíření systému.
1.4
Struktura práce
V příští kapitole bude blíže popsáno prostředí, do kterého je systém nasazován. Dále budou definovány požadavky na funkce systému vycházející z analýzy tohoto prostředí. V kapitole 3 popíšeme technologická řešení základních problémů a zdůvodníme důležitá návrhová rozhodnutí. V další kapitole, kapitole 4, bude čtenář seznámen s uživatelským prostředím systému a budou detailněji rozebrány možnosti použití jednotlivých modulů. Kapitola 5 se zabývá programátorskou dokumentací systému. Budou zmíněny vytvořené i použité knihovny, pluginy a frameworky. Programátorská dokumentace obsahuje i návod pro jednoduché rozšíření systému o další funkce. V kapitole 6 porovnáme naše řešení s existujícími alternativami. V předposlední kapitole 7 zmíníme některá již vzniklá rozšíření základního systému, která ale nebyla implementována samotným autorem a nejsou tudíž součástí práce. V závěru práce zhodnotíme úspěšnost konkrétního nasazení systému v rámci splnění požadovaných funkcí na systém. Také navrhneme další vhodné nadstavby.
5
2. Analýza prostředí V této části textu bude analyzováno prostředí, pro které byl systém vyvíjen a budou rozebrány požadavky na vlastnosti a funkce systému, které toto prostředí vyvolalo. Bude rozebrána linková výrobní metodika, uživatelé systému, způsob jejich přístupu k systému a práce s ním. Analyzováno a popisováno je reálné prostředí skutečné firmy, pro kterou byl systém navržen.
2.1
Linková výroba
Linková výroba spočívá ve vykonávání sekvenčních operací, které je třeba s vyráběným produktem provést k jeho dokončení. Úkolem systému je řídit tyto operace tak, aby proběhly ve správném pořadí, na správných místech a výrobní proces zaznamenat, aby mohlo později dojít k jeho rekonstrukci. Záznam bude sloužit například pro zpětné dohledání chybně provedených výrobních kroků, případně k jejich optimalizaci.
2.1.1
Pracoviště a buffery
Linka se skládá z pracovišť a vyráběné produkty je postupně navštěvují v předem určeném pořadí. Toto pořadí budeme nazývat výrobním postupem. Linka je typicky uzpůsobena k výrobě více druhů produktů s rozdílnými výrobními postupy. Obecně neplatí, že produkt projde každým pracovištěm linky a že produkt navštíví libovolné pracoviště nejvýše jednou. Pracoviště buď odpovídá místu, kde je s produktem přímo aktivně pracováno, nebo může jít o místo, kde je produkt dočasně uložen a později vyzvednut. Pasivním pracovištím budeme říkat buffery a typický příklad bufferu je například mezisklad, kde produkty čekají, až se uvolní další pracoviště. Rozdíl mezi pracovištěm a bufferem je zásadní ve způsobu práce s produkty uvnitř systému. Zatímco pracoviště zastupuje konkrétního uživatele, který aktivně přijímá a odesílá produkty, buffer klasicky zastupuje regál, do kterého jsou produkty posílány a z něhož jsou odebírány na jiné pracoviště. Systém z tohoto důvodu například nepovoluje umístit ve sledu pracovišť pracovního postupu dva buffery v řadě, protože by nebylo možné mezi nimi produkty posílat.
2.1.2
Pozice pracoviště
Pracoviště v reálné situaci většinou odpovídá pracovnímu stolu nebo stanici, kde je zpravidla buď více než jeden pracovník nebo rozpracován více než jeden produkt. Vzhledem k faktu, že neustálé upravování počtu pracovišť a s ním i přizpůsobování pracovních postupů produktů by bylo náročné, musí být v systému každé pracoviště vedeno jako seznam pracovních pozic. Pracoviště může být buď omezené nebo neomezené. Omezené pracoviště má předem určený počet pozic a modeluje situaci více pracovníků. Nepřítomnost některého pracovníka lze simulovat dočasným označením pozice jako neaktivní. Neomezené pracoviště se zvětšuje podle potřeby a simuluje proměnný počet rozpracovaných produktů na pracovišti. 6
2.1.3
Další vlastnosti
Reálné vlastnosti pracovišť se ukázaly být ještě rozmanitějšími a náročnějšími na organizaci. Některá pracoviště fungují jako FIFO 1 fronta a produkty musí projít postupně přes každého pracovníka (pozici) a zároveň nesmí opustit pracoviště v jiném pořadí, než do něj vstoupily. Další požadovanou vlastností pracovišť a hlavně bufferů se ukázala být povinná doba, kterou musí produkt na pracovišti strávit. Příkladem takových pracovišť jsou odstavné regály, kde se produkty musí po určitou dobu nechat uležet nebo třeba tepelně upravit.
2.1.4
Hospital
Po prvním nasazení systému se ukázalo, že úplné řízení přemisťování produktů je příliš striktní. Často docházelo k situacím, kdy musel být produkt vrácen zpět ve výrobním procesu nebo k přemisťování produktů mimo zavedená pravidla. Stav systému pak přestal odpovídat reálnému stavu linky a kontrolní systém začal postrádat smysl. Z důvodu těchto výjimečných situací se u každé linky nachází speciální pracoviště, tzv. hospital. Hospital nelze zahrnout do výrobních postupů produktů. Lze na něho kdykoliv přesunout libovolný produkt a po vyřešení problému produkt vrátit zpět do kterékoliv části výrobního procesu. Tato abstrakce se ukázala být dostatečným zjednodušením organizace produktů na lince, takže nedochází k odchylkám ve stavu systému a linky.
2.2
Elektronické výrobní návody
Další důležitou součástí systému je editor a prohlížeč elektronických výrobních návodů. Jedná se o pracovní manuály, podle kterých jsou produkty vyráběny a obsahují seznam fyzických úkonů, které pracovník provádí. Každý úkon je znázorněn obrázkem, doplněn doprovodným textem a obsahuje seznam materiálu, který je třeba při práci použít. Návody jsou spouštěny uživatelům na jednotlivých pracovištích po přijmutí a před odesláním produktu dál. Jednotlivé pracovní kroky jsou uživatelem potvrzovány, takže je zpětně dohledatelné, kdo daný úkon provedl. Editor musí být schopen poskytnout návody i v tisknutelné podobě, aby mohly být použity na pracovištích, která nejsou vybavena obrazovkou. V této části práce je pouze nastíněn hlavní smysl elektronických návodů a detailní popis všech funkcí lze nalézt v kapitole 4.4.
2.2.1
Programovatelnost návodů
Vzhledem k tomu, že jednotlivé typy produktů se často liší pouze v několika málo pracovních úkonech nebo existují časté úkony společné pro více produktů, nebylo by efektivní vytvářet velké množství téměř identických návodů. Často dochází ke změnám a úpravám návodů a docházelo by ke zbytečně duplicitním editacím. Z tohoto důvodu je dalším požadavkem umožnění skládání návodů z podnávodů“ ” 1
First In First Out
7
a možnost ovlivnit zobrazení nebo přeskočení určitých částí návodu v závislosti na parametrech konkrétního vyráběného produktu, který je s návodem svázán.
2.3
Uživatelé
Se systémem bude pracovat několik druhů uživatelů. Systém musí umožnit spravovat přístupová práva uživatelů k jednotlivým modulům systému ideálně dodržením principu minimálních možných privilegií. Typickými skupinami uživatelů jsou: • Administrátoři – spravují systém, jeho moduly, uživatele a jejich práva • Návrháři linek – logistická část firmy, která rozhoduje o struktuře linek • Produktoví designéři – definují typy a parametry vyráběných produktů, jejich výrobní postupy a elektronické návody • Disponenti – přijímají a zpracovávají zakázky a zadávají do systému požadavky na výrobu • Pracovníci linky – zaměstnanci pracující s produkty; typicky nejnižší skupina z hlediska přístupových práv • Logistici a statistici – lidé analyzující data vzešlá ze samotného procesu výroby z důvodu optimalizace Z tohoto rozložení pracovních funkcí je vidět, že se uživatelé dělí na ty, kteří systém ovládají, a na ty, kteří jsou systémem kontrolováni a řízeni nebo ze systému pouze sbírají data.
2.4
Ovládání systému
K ovládání systému bude docházet z několika různých prostředí. Rozdíl je v zařízeních, jakými budou uživatelé k systému přistupovat, a způsobu přístupu, jakým budou systém používat.
2.4.1
Metody přístupu k systému
Z přehledu obvyklých skupin uživatelů 2.3 je patrné, že správci systému, disponenti a produktoví designéři budou k práci používat klasický desktopový osobní počítač. Pro návrháře linek, kteří se často zabývají analýzou a optimalizací linek, případně pro kvalitové kontroly může být výhodnější zacházet se systémem operativně přímo z prostředí výrobní haly, kde jim k přístupu mohou sloužit třeba tablety. Výše zmínění uživatelé budou do systému data zadávat a budou ho ovládat. Na druhé straně stojí pracovníci linky, kteří jsou systémem ovládáni a jejich přístup k systému musí být rychlý a jednoduchý. Pracovníci linky budou většinou systém ovládat pomocí dotykových konzolí a systém musí být intuitivní a přehledný, aby nezdržoval samotnou práci, a musí plnit informativní funkci. 8
Typickými požadavky pracovníka linky, na které systém musí umět jednoznačně reagovat, jsou: • Z kterého místa si mám vzít další produkt? • Ukaž mi výrobní návod pro aktuální fázi výroby daného produktu. • Dokončil jsem práci na produktu, kam ho mám předat dál? Dalším možným náhledem na přístup k systému jsou informační obrazovky a panely, které zobrazují denní plán a stav linky nebo aktuální průběh výroby, obsazenost pracovních stanic atd. V poslední řadě jde o kontrolu a vyhodnocení dat použitelných při optimalizaci výroby. Jde o statistické moduly systému umožňující náhled na data vygenerovaná výrobními procesy produktů a jejich prezentaci v podobě grafů a shrnujících přehledových tabulek.
2.4.2
Přístupová zařízení
V předešlé sekci bylo vysvětleno, že zařízení používaná k přístupu k systému se vyskytují v mnoha rozdílných podobách. Variabilita platí i pro samotné desktopové stanice, které mohou být vybaveny různými operačními systémy různých verzí, různého stáří a různými monitory o rozdílném rozlišení. Systém je zároveň poměrně závislý na velkém počtu těchto zařízení, protože je žádoucí, aby jimi byla vybavena například většina pracovišť, která mají být systémem řízena. Praxe prokázala, že znovu vybavit celou firmu uniformně dimenzovanými zařízeními je nereálný požadavek. Pokud má být software navíc použitelný ve větším počtu firem, nelze spoléhat na stejná prostředí, i když v každé jednotlivé firmě uniformovaná. Dalším aspektem je údržba aktuálních verzí softwaru na každé stanici. Ta musí být vyřešena opět centralizovaně a pokud možno co nejvíce automatizovaně. Poslední otázka je síťové propojení všech stanic, které musí samozřejmě spolupracovat. Ze zřejmých důvodů je také žádoucí udržovat jedno centralizované úložiště dat.
2.5
Integrace nových rozšíření
Vzhledem k tomu, že není dopředu známá povaha parametrů vyráběných produktů, podrobná struktura linek a z toho vyplývající statistická metodika, je složité navrhnout statistické a analytické funkce systému před samotným namodelováním linky. Podobně to platí i u informačních tabulí, které se obsahově i vzhledově přizpůsobují až konkrétním rozměrům obrazovky a místům, kde jsou vystaveny. Z tohoto důvodu je výhodnější přenechat doprogramování některých okrajových modulů přímo administrátorům firmy, kde bude software použit. Systém musí být proto navržen i takovým způsobem, aby do něj bylo jednoduché zakomponovat nové moduly. Dále musí obsahovat vhodné programátorské prostředí, které umožní tyto nástavby implementovat efektivně. To znamená například tak, že nová rozšíření budou podléhat stejným přiřazovaným přístupovým právům, jako je tomu u ostatních modulů. Programátor rozšíření potom nebude 9
muset řešit problémy nižší úrovně, jako je autentizace uživatelů, připojení k databázím nebo vzhledová stránka výstupu.
2.6
Shrnutí analýzy
Z analýzy cílového prostředí vyplývají následující požadavky na systém: • Systém musí podporovat autentizaci jednotlivých uživatelů a administrativní nástroje pro jejich rozřazení do uživatelských skupin, kterým budou přidělena přístupová práva. • Systém musí být rozdělen do jednotlivých modulů, ke kterým budou tato práva přidělována. • Moduly systému musí disponovat přehledným jednoduchým ovládáním odpovídajícím způsobu, jakým k nim bude přistupováno. • Systém musí podporovat širokou škálu zobrazovacích zařízení s rozdílným rozlišením obrazovky a podporovat jednoduché ovládání jak pomocí klasické klávesnice a myši, tak pomocí dotykové obrazovky. • Systém musí být ovladatelný z prostředí různých operačních systémů, jako jsou například Microsoft Windows, Linux, MacOS, iOS nebo Android. • Aktualizace systému musí být z důvodu velkého počtu klientských zařízení v co největší míře zautomatizována • Systém musí podporovat jednoduchou integraci nových rozšíření o další moduly a funkce a disponovat vhodným programátorským prostředím. • Systém musí umožnit namodelování schématu libovolné struktury typické výrobní linky. • Systém musí umožnit namodelování libovolného produktu, jeho parametrů a výrobního postupu. • Systém musí obsahovat editor a prohlížeč elektronických výrobních návodů a dále administraci pro propojení produktů a návodů. • Elektronické návody musí být programovatelné do té míry, aby zobrazovaly patřičné pracovní kroky v závislosti na parametrech daného produktu. Dále musí být možné návod spouštět jako část jiného návodu. Návody musí mít i tiskovou podobu.
10
3. Řešené problémy při návrhu systému Tato kapitola se zabývá důležitými rozhodnutími týkajícími se návrhu systému a použitých technologií. Problémy, které budou v této kapitole rozebírány, vzešly z požadavků na systém 2.6 uvedených a rozebraných v předchozí kapitole.
3.1
Ovládací rozhraní
Prvním důležitým rozhodnutím byl výběr povahy software — zda-li má jít o skupinu desktopových aplikací nebo jestli uplatnit konzolový přístup, případně využít webovou platformu. Protože zásadním požadavkem na systém v tomto ohledu se ukázalo být přizpůsobení pro různé operační systémy a zobrazovací zařízení, rozhodl jsem se jednoznačně pro ovládání a zobrazovaní systému přes webové rozhraní. Toto rozhodnutí zároveň vyřešilo i problém s distribucí aktualizací systému a centralizací dat. Vhodné přizpůsobení výstupních stránek, například použitím responzivního rozložení1 , pak vyřeší i různorodost rozlišení obrazovek a monitorů. Jediným požadavkem na periferní zařízení je pak webový prohlížeč, kterým je dnes vybavena drtivá většina tabletů, každý osobní počítač a notebook a dokonce i některá inteligentní čtecí zařízení.
3.2
Programovací jazyk
Pro vývoj projektu jsem se rozhodl použít skriptovací jazyk PHP [1], se kterým mám největší zkušenosti z praxe. Zároveň má širokou uživatelskou základnu, se kterou je spojeno i mnoho existujících knihoven, jako jsou třídy pro práci s Excelovskými soubory nebo knihovny pro parsování HTML2 kódu a následné generování PDF3 souborů. To jsou rozsáhlé a implementačně náročné problémy a nejsou cílem této práce. Některé požadavky spojené s elektronickými návodkami ovšem podobnou funkčnost vyžadují.
3.3
Framework
Další krokem bylo rozhoduntí, jestli použít některý z již existujících PHP frameworků a zdali se držet klasické MVC architektury 4 , nebo jestli se nevyplatí vyvíjet vlastní systém. Vzhledem k celkem specifickým požadavkům na modularitu systému a specifickou správu přístupových práv uživatelů, kterou většinou klasické frameworky disponují v omezené podobě, jsem se rozhodl pro implementaci vlastního jádra systému. 1
http://cs.wikipedia.org/wiki/Responzivn%C3%AD_web_design HyperText Mark-up Language 3 Portable Document Format 4 Model-view-controller 2
11
Jádro jsem nazval intranetovým aplikačním manažerem (v kódu je referován zkráceně jako intranet). Stará se o autentizaci uživatelů, kontroluje přístupová práva a umožňuje administraci nejnižší úrovně systému, kterou je správa připojených modulů. Spouští jednotlivé moduly systému a poskytuje jim důležité abstrakce jako například připojení k databázím a jiné knihovny.
3.4
Moduly systému
Z požadavků zmíněných v kapitole 2 vyplývá, že systém musí být rozdělitelné do menších části, aby bylo možné nastavit potřebná přístupová práva různým typům uživatelů 2.3. Moduly jsou proto v rámci intranetového manažeru dále rozdělitelné do sekcí, ke kterým je možné přiřadit přístupová práva. Každé skupině uživatelů lze přiřadit k libovolné sekci právo čtení (zobrazit ji) a právo zápisu (měnit ji). Manažer pak při spouštění sekce modul informuje o aktuálních uživatelových právech a je na modulu, jak s takovou informací naloží. Manažer dále obsahuje určité abstrakce, které umožňují jednoduchou implementaci nových modulů. Více o nich a o dalších funkcích aplikačního manažeru lze nalézt v kapitole 5.1.
3.4.1
Hlavní moduly
Systém obsahuje dva základní moduly a těmi jsou LPCS 5 a MEN 6 . Dříve zmíněný slouží ke správě linkové výroby a ten druhý k vytváření a přehrávání elektronických návodů. Detailní popis modulu LPCS se nachází v sekci 4.3 a dokumentace funkcí MEN v sekci 4.4.
3.5
Databáze
Systém byl vyvíjen pro databázi MySQL [2]. Veškerá připojení a dotazování pomocí jazyka SQL7 zpracovává jedna z abstrakcí intranetového manažeru, PHP třída, která je sdílena se všemi moduly systému. V případě použití jiného druhu databáze pak stačí pouze přeimplementovat tuto třídu, zachovat její rozhraní a vyhnout se nestandardním dotazovacím konstrukcím, protože nekompatibilita dotazů je jedinou překážkou ve výměně databázových systémů. Vyzkoušeno je použití kombinace připojení pomocí ODBC 8 a OCI 9 k databázím Microsoft SQL Server 2003 10 a Oracle Database 11g 11 . Rozdíly v syntaxi [17] dotazování na tyto databáze jsou minimální a systém byl vyvíjen s ohledem na možnost použití obou těchto systémů. Více informací o komunikaci s databázemi lze nalézt v sekci popisující tuto třídu, 5.2.1. 5
z anglického Line Production Control System“ ” z českého Montážní Elektronické Návody“ ” 7 Structured Query Language 8 Open Database Connectivity 9 http://php.net/manual/en/book.oci8.php 10 http://www.microsoft.com/sqlserver 11 http://www.oracle.com/cz/products/database 6
12
3.6
Ovládání systému
Jak už bylo řečeno, systém musí být přehledný a dobře ovladatelný. Povaha vypisovaných dat bude mít z větší části tabulkový charakter a práce se systémem bude obnášet časté vyplňování formulářů a rozhodovací akce. Z těchto důvodů bylo implementováno několik mechanismů. Nejdůležitější součástí je dialogově založená knihovna určená pro validaci formulářů, která využívá technologii AJAX 12 . Uživatel může pomocí vyskakovacích multifunkčních dialogů provádět různé akce a rozhodnutí, aniž by opustil aktuální stránku, se kterou právě pracuje. Dialogy jsou i rychlejší, protože nedochází k načítání celých nových stránek, a navíc jsou příjemnější při ovládání pomocí dotykových obrazovek. Téměř veškeré ovládání v systému probíhá přes ně. Detailní popis funkce této knihovny najdete v sekci 5.6.4. Další knihovna, která byla kvůli systému vyvíjena, má na starost vizuální vzhled a ovládání formulářových prvků. Sjednocuje jejich podobu a chování v rámci různých operačních systémů a webových prohlížečů. Ovládací prvky, jako jsou například zaškrtávací pole nebo rozbalovací nabídky, se totiž prohlížeč od prohlížeče liší a jejich ovládání pomocí dotykových obrazovek může být obtížné. Více o tomto rozšíření se dočtete v sekci 5.6.5. Vzhled systému a rozložení podstránek sekcí modulů bylo vyvíjeno s ohledem na rozdílná rozlišení a panoramata obrazovek. Byl použit částečně responzivní návrh, který skládá prvky pod sebe v případě úzkých obrazovek a roztahuje a rovná je horizontálně vedle sebe při použití širokoúhlých monitorů. Uživatel tak nemusí manuálně posunovat obsah okna. Tento návrh mohou jednoduše využívat i jednotlivé moduly a zachovávat jednotný vzhled celého prostředí systému. Pokud jde o tabulková data, systém disponuje různými JavaScriptovými knihovnami, pomocí nichž lze přetahovat řádky tabulek nebo řadit jejich obsah bez nutnosti obnovení stránky. Ty jsou samozřejmě modulům také poskytovány. Bližší popis těchto knihoven naleznete v kapitole 5.6.
12
Asynchronous JavaScript And XML
13
4. Uživatelská dokumentace V této části práce budou zmíněny základní požadavky na konfiguraci stanice, na kterou bude systém instalován. Ve druhé části kapitoly bude okrajově popsáno prostředí systému a styl práce s ním. Budou popsány oba hlavní moduly systému a jejich sekce. Detailněji se budeme věnovat pouze složitějším prvkům a principům, které je nutné chápat pro efektivní využití systému.
4.1
Instalace systému
Protože systém je povahou webová aplikace napsaná ve skriptovacím jazyce PHP s databází MySQL, je pro instalaci systému nutné zajistit běh těchto služeb na serveru. Systém je schopný běžet na téměř základní tovární konfiguraci mnoha kompletních Apache+PHP+MySQL balíčků, jako např. XAMPP[3]. Otestována byla jak verze pro Windows (WAMPP), tak Linuxová verze (LAMPP), a systém je plně funkční pod oběma operačními systémy. Zkušenějším uživatelům je samozřejmě doporučena často bezpečnější vlastní sestavená kompilace. Aplikace není vázaná na žádnou konkrétní platformu, jelikož potřebný software je dostupný pro většinu využívaných operačních systémů včetně OS Linux, Microsoft Windows a Mac OS. V UNIXových operačních systémech musí být ovšem pro následující adresáře a soubory nastaveno přístupové oprávnění 777 (plná práva pro všechny uživatele, potažmo pro uživatele Apache/nobody): • / – kořenový adresář, po konfiguraci lze vrátit původní nastavení práv • /instalace.php • /instalace/* • /sql/* • /app/men – nastavit 777 pouze pokud neobsahuje adresář tmp s právy 777 • /app/men/data • /app/men/data prohlizec
4.1.1
Požadavky na prostředí
Pro správný běh systému musí být splněny následující podmínky: • PHP verze 5.3.x – běh s novějšími verzemi neověřen • MySQL verze 4.1+ • PHP podporuje JSON – funkce json encode() a json decode() • V PHP je zapnuta grafická knihovna GD2 • V PHP je zapnuta knihovna Zip se třídou ZipArchive 14
• V PHP je zapnuta knihovna cURL nebo je povoleno allow url fopen • V PHP je zapnuta knihovna PDFlib pro práci s PDF soubory • V PHP je zapnuta podpora knihovny mysqli • Na serveru je funkční a povolený mod rewrite
4.1.2
Konfigurace systému
Při prvním spuštění systému (navštívení URL adresy, kde je umístěn) je uživatel vyzván k jednorázové konfiguraci. Ta spočívá v několika krocích. Zaprvé se jedná o nastavení hlavní URL adresy systému. Ta je automaticky detekována a předvyplněna a v 99% případů ji není nutné upravovat. Odpovídá adrese, pod kterou chcete systém navštěvovat. Může obsahovat i IP adresu a port a musí začínat řetězcem http:// nebo https:// v závislosti na požadovaném protokolu. Dalším krokem je zadání přístupových údajů k MySQL databázi. Instalátor obsahuje i možnost tento přístup otestovat před spuštěním samotné konfigurace. Uživatel, pod kterým se bude k databázím přistupovat, musí mít klasická práva rozšířená alespoň o odebírání a přidávání tabulek, případně i databází, pokud si přejete, aby instalátor databáze vytvořil. Následuje konfigurace způsobu využití databází. Systém se skládá ze tří hlavních modulů, které vyžadují čtyři odlišné sady tabulek. Uživatel se může rozhodnout mezi čtyřmi separátními databázemi a umístěním dat ve společné databázi. V druhém případě je potřeba nastavit pro každou sadu tabulek odlišný prefix jejich jména. Poslední část se týká nastavení administrátorského účtu pro přístup do systému. Přes tento účet jsou pak přidáni další uživatelé, typicky již s nižšími právy. Potvrzením tohoto formuláře je instalace dokončena. V případě chybně zadaných údajů je uživatel včas předem upozorněn a vyplněné údaje nejsou ztraceny. Většinu nastavení lze později nalézt v souboru config.php v hlavním adresáři systému.
4.1.3
Použití systému
K použití uživateli stačí běžný webový prohlížeč. Aplikace je optimalizována pro prohlížeče Google Chrome, Mozilla Firefox 4+, Opera 8+, Safari a Microsoft Internet Explorer 8 a vyšší.
15
4.2
Intranetový aplikační manažer
Jak již bylo zmíněno v předchozí kapitole 3.4.1, systém se skládá ze tří hlavních částí — z jádra a jeho dvou modulů LPCS a MEN. Samotný intranetový manažer slouží běžnému uživateli pouze pro přihlášení, navigaci do požadované sekce některého modulu, či úpravou hesla a přihlašovacího jména. Celé ovládání se odehrává pomocí nabídky v pravém horním rohu zobrazitelné kliknutím myši na uživatelovo jméno a příjmení. Administrátor může navíc přidávat a odebírat moduly, což je popsáno detailněji v sekci 5.1.2. Dále má možnost spravovat uživatele a uživatelské skupiny, uživatele do nich přiřazovat a skupinám měnit přístupová práva do sekcí modulů. Vše se děje přes sekci administrace opět dostupnou z pravého horního rohu.
4.3
LPCS
Modul LPCS se týká práce s výrobními linkami a zahrnuje modelování linek, produktů a jejich parametrů a výrobních postupů a dále zpracování zakázek a samotnou kontrolu výroby.
4.3.1
Základní ovládání
Hlavním ovládacím prvkem celého systému je kontextová nabídka, která se zobrazí po kliknutí na šedý trojúhelník, viz obrázek 4.1. Nabídka vždy obsahuje všechny dostupné akce, které lze s daným objektem provést. Důležitý je i výběr linky v levém horním rohu každé stránky. Uživatel zde vybere linku, se kterou chce momentálně pracovat. Toto nastavení je uchováno a přenáší se v celém modulu LPCS, takže uživatel nemusí vybírat linku v každé sekci. Modul LPCS je rozdělen do několika sekcí a modelování linky typicky probíhá v pořadí, v jakém jsou sekce níže popsány.
Obrázek 4.1: Ukázka kontextové nabídky
16
4.3.2
Sekce Správce linek“ ”
Počáteční sekcí LPCS, kde modelování linek začíná, je Správce linek. V této sekci může uživatel založit novou linku. Každá linka je vedena pod názvem (řetězec maximálně o 50 znacích), zkratkou (3 znaky dlouhý řetězec) a velikostí hospitalu. Hospital je uměle vytvořené pracoviště, kde se řeší konfliktní situace linky, a je buď neomezený (velikost je ”0”), nebo má pevně nastavenou maximální kapacitu (počet pozic). Do hospitalu lze přesunout libovolný produkt, který prochází výrobou. Produkt je po vyřešení problémů navrácen zpět do výroby. Může být ovšem navrácen do libovolné fáze výroby. Tímto postupem lze vyřešit většinu výjimečných situací, ke kterým na lince běžně dochází.
4.3.3
Sekce Plánovač linky“ ”
Sekce Plánovač linky“ slouží k namodelování schématu výrobní linky. Plánování ” linky započne výběrem konkrétní linky v levém horním rohu. K vložení nových pracovišť do linky slouží ovládací trojúhelník, který se nachází vedle názvu linky uprostřed stránky. Pracovišti s omezenou kapacitou musí být pro správnou funkčnost přiřazena alespoň jedna pozice. Pracoviště s neomezenou kapacitou pozice nemá. Změnit typ pracoviště s omezeného na neomezené lze pouze tehdy, pokud žádná z jeho pozic neobsahuje produkt. Pozice jsou tímto krokem odstraněny. Pro změnu opačným směrem platí stejné pravidlo — v pracovišti nesmí být přítomen ani jeden produkt. Všechny další akce už vyplývají z jejich popisu nebo jejich ikony.
4.3.4
Sekce Výrobní postupy“ ”
Výrobním postupem produktu se rozumí sled pracovišť linky, ve kterém produkt prochází výrobou. Výrobní postup lze vytvořit tlačítkem v levé horní části obrazovky. Obsah postupu lze nadefinovat kliknutím na ikonu tužky ve sloupci Postup“ v řádku daného výrobního postupu. ” Obrazovka tvorby postupu obsahuje dvě části, viz obrázek 4.2. Za prvé je to horní lišta se seznamem všech pracovišť linky a v druhé řadě je to spodní část, kde lze vidět samotný výrobní postup (čteno zleva doprava). Pracoviště lze přidat kliknutím na název pracoviště v horní liště. Pro odebrání pracoviště z postupu je nutné najet myší na bílý rámeček pod názvem pracoviště v dolní části obrazovky a po objevení červeného křížku na něj kliknout.
Obrázek 4.2: Tvoření výrobního postupu
17
4.3.5
Sekce Typy produktů“ ”
Typ produktu lze chápat jako vzorový model, jehož instance jsou na lince vyráběny. Typ je identifikován svým PartNumber číslem, které musí být v rámci linky unikátní. Pomocí tohoto čísla je také rozhodováno, které části elektronických návodek budou pro produkt zobrazeny. Více o tomto propojení je zmíněno v sekci popisující varianty produktů 4.4.11. Výrobní postup Po vytvoření typu produktu je k němu nutné přiřadit některý z již nadefinovaných výrobních postupů. Typy produktů, které nemají přiřazen výrobní postup, jsou označeny viditelným červeným obdélníkem ve sloupci Postup“. Po kliknutí na ” tento obdélník je možné postup přiřadit. Opce Opce1 je přepínací vlastnost produktu. Když jsou do výroby pomocí sekce Dispo” nent“ zařazovány produkty, je tato vlastnost buď zapnuta nebo vypnuta. Pokud by produktem bylo například auto, opcí mohou být vyhřívaná sedadla a konkrétní auto je jimi pak buď vybaveno, nebo není. Opce je identifikována opět číslem PartNumber a na jejím nastavení pak závisí přehrání určitých částí MEN návodů. V analogii aut je například při výrobě konkrétního auta uživateli v závislosti na nastavení opce zobrazena část popisující montáž vyhřívání sedadel. Více informací o propojení částí návodů a opcí produktů je v sekci 4.4.11. Opce produktu lze editovat kliknutím na tlačítko upravit ve sloupci Opce“. ” Opce je možné neomezeně přidávat a opět odebírat, jak je ukázáno na obrázku 4.3. Pozor! Při manipulaci s opcemi nejsou ovlivněny již existující produkty ve výrobě.
Obrázek 4.3: Definování opcí produktů MEN návody Ve sloupci MEN návody“ v přehledu typů produktů je možné přiřadit k typu ” produktu elektronické návody. Návodů lze přidat více a pořadí jejich přehrání určit přetažením řádků návodů. Při manipulaci s návody opět nejsou ovlivněny již existující produkty ve výrobě. 1
převzato z anglického options“ ”
18
4.3.6
Sekce Parametry produktů“ ”
V sekci Parametry produktů“ lze definovat dodatečné parametry vyráběných ” produktů. Parametry jsou zadávány každému produktu zvlášť, když je přijímán do výroby. Každý produkt má předem přiřazeno sériové číslo (kvůli identifikaci produktu) a textovou poznámku (kvůli speciálním vlastnostem tohoto pole: lze ji pouze rozšiřovat a dochází k tomu například během přemisťování produktu do hospitalu). Po vstupu do výroby lze měnit pouze textovou poznámku produktu, ostatní parametry už jsou statické. Parametrů lze přidat neomezený počet a každý z nich má pevně daný datový typ. Jednotlivé datové typy jsou blíže popsány přímo na stránce sekce. Každý parametr může být označen jako povinný, což znamená, že při vyplňování parametrů nesmí být ponechán prázdný. Dále mohou být některé parametry volitelně unikátní, což znamená, že produkt se nepodaří vpustit do výroby, pokud na lince již existuje jiný produkt se zadanou hodnotou parametru.
4.3.7
Sekce Disponent“ ”
Přidání produktu do výchozího zásobníku výroby lze provést v sekci Disponent“ ” kliknutím na pravý horní ovládací trojúhelník, který se nachází vedle nápisu Vý” chozí zásobník“. Při zakládání nového produktu je důležité správně vyplnit pole Sériová čísla“. ” Podle množství zadaných čísel se vygeneruje celkový počet produktů, který bude přidán do výroby. Všechny produkty sdílejí potom stejné nastavení opcí. Sériová čísla mají pevně určený formát. Smějí obsahovat pouze číslice. Každý řádek odpovídá jednomu sériovému číslu. Lze zadat i rozsahy čísel pomocí znaménka minus -“. Jednotlivé položky lze řadit a výsledné pořadí odpovídá pořadí, ve ” kterém jsou poté produkty doporučovány pracovníkům ve výrobě.
4.3.8
Sekce Hledání produktů“ ”
Tato sekce umožňuje hledat produkty na linkách podle několika parametrů. Uživatel může omezit hledání podle typů produktů. Pokud je vybrán pouze jeden typ produktu, vyhledávací formulář je rozšířen o všechny dodatečně definované parametry. Pro více typů produktů by toto nemělo smysl.
4.3.9
Sekce Výroba“ ”
Sekce Výroba“ slouží jako náhled na aktuální stav celé linky. Výrobu produktů je ” možné plně ovládat přímo z této sekce, pro pracovníky je ovšem užitečnější použít sekci Pracoviště“. Ovládání opět probíhá přes ovládací trojúhelníky a kontextové ” nabídky. Důležitým ovládacím prvkem v této sekci jsou ikony v pravé části. Pomocí modrých a červených šipek lze změnit šířku okna. V kombinaci s ikonou tabulky, která skrývá ovládací prvky intranetového manažeru, lze přizpůsobit obrazovku pro pohodlné zobrazení na různě dimenzovaných monitorech. Toto nastavení je uchováno pro danou stanici.
19
Užitečné je zobrazení této sekce pod uživatelským účtem s právy read only. Sekce pak může totiž sloužit jako informační obrazovka bez rizika zásahu neoprávněné osoby do výrobních procesů. Výchozí zásobník Výchozí zásobník je místo, odkud jsou produkty přijímány do výroby. Tato tabulka je plněna ze sekce Disponent“. Produkt lze odeslat do výroby z tohoto ” zásobníku (na první pracoviště v jeho výrobním postupu). V levém sloupci je pořadí v zásobníku. Hodnota v prostředním sloupci označuje počet produktů (sériových čísel) čekajících na vyrobení. V pravém sloupci je název typu produktu, který bude vyráběn, a v závorce první přiřazené sériové číslo. Po kliknutí na položku se zobrazí detailní informace o zakázce. Pod výchozím zásobníkem se nachází hospital, jehož obsah je automaticky skrytý a lze ho zobrazit pomocí ovládací trojúhelník. Funkce a způsob práce s hospitalem byly probrány výše.
Obrázek 4.4: Příklad sekce Výroba“ ”
4.3.10
Sekce Pracoviště“ ”
Sekce Pracoviště“ je uzpůsobena pro použití pracovníky linky, kteří si zde zvolí ” své pracoviště a zbytek linky je jim skryt. Jde o zjednodušenou sekci Výroba“, ” kdy je zobrazeno pouze aktuální pracoviště. Kontextové nabídek pokrývají většinu pracovních akcí a nabízí lepší orientaci pro pracovníka, který není zatížen zobrazením ostatních pracovišť.
20
4.4
MEN
Modul MEN umožňuje vytvářet, editovat a přehrávat elektronické návody pro výrobu produktů. Návod je posloupnost pracovních kroků, které jsou uživateli postupně zobrazovány. Tato sekce popisuje základní principy práce s editorem.
4.4.1
MEN archiv
Návod je během editace možné vyexportovat ze systému v podobě jednoho souboru, tzv. MEN archivu. Tento soubor má příponu .men a jsou v něm uloženy veškeré potřebné informace pro rekonstrukci návodu. MEN archiv lze poté nahrát do jiného počítače. Je možné ho přenést buď do jiného MEN editoru, anebo ho po jeho dokončení nahrát do MEN prohlížeče. Toto umožňuje například separátní editaci návodu na oddělené pracovní stanici nebo třeba jednoduchou zálohu a rekonstrukci dat. Jakmile je archiv nahrán do MEN prohlížeče, je tento návod spustitelný a použitelný v reálné výrobě. Protože může dojít ke změně editoru nebo prohlížeče, každý archiv je označen verzí editoru, ze které byl exportován. Při importu nekompatibilní verze archivu je uživatel na tuto skutečnost upozorněn.
4.4.2
Instalační balíček
Protože jsou návody přenositelné pomocí MEN archivů a je možné pracovat s nimi lokálně na odděleném počítači od firemní sítě, obsahuje MEN modul i instalační balíček, pomocí něhož je možné jednoduše nainstalovat editor a prohlížeč na dalších počítačích. Složitější část instalace PHP a MySQL je detailně zdokumentována a uživatele krok po kroku provádí celým procesem. Konfigurace systému je pak zautomatizována. Ze systému lze získat pouze i aktualizační balíček, který poslouží pro rychlou aktualizaci oddělených počítačů v případě minoritních změn a oprav.
4.4.3
Ovládání prohlížeče
MEN prohlížeč lze spustit buď přímo pro konkrétní produkt v modulu LPCS, a nebo pouze zobrazit libovolný dostupný návod pomocí sekce Prohlížeč“. Při ” spouštění návodu musí uživatel zadat nastavení produktu, pro který chce návod zobrazit. Prohlížeč se automaticky přizpůsobuje rozlišení obrazovky a reaguje na změny. Základní rozložení je nakonfigurováno pro minimální potřebné rozlišení 1120 x 530px. Snížením velikosti obrázku lze dosáhnout i měnších rozměrů. Ovládací prvky jsou označeny čísly ve zlatých rámečcích na obrázku 4.5: 1. Obrázek kroku 2. Popisný text kroku 3. Materiály kroku 4. Informace o návodu, postupně zleva: • odkaz na PDF návodky 21
• pořadí aktuálního kroku / celkový počet kroků • název kroku • pracoviště kroku • uběhnutý / zbývající čas návodky • název aktuálního dokumentu 5. Tlačítka pro ovládání, postupně zleva: • změna velikosti popisného textu • změna velikosti textu v tabulce materiálů • ukončení prohlížeče • potvrzení ukončení kroku • listování vlevo • aktuální zbývající čas kroku • listování vpravo
Obrázek 4.5: Ilustrace ovládacích prvků MEN prohlížeče
4.4.4
Ovládání editoru
Hlavní stránka editoru nabízí možnost importovat nebo vytvořit nové návody a vstoupit do editace již existujícího návodu. Při započetí editace je hlavní nabídka sekcí zaměněna za jednotlivé sekce editoru. Editaci lze ukončit pomocí této nabídky.
22
4.4.5
Úvodní obrazovka
Na úvodní obrazovce (obrázek 4.6) MEN editoru se nalevo nachází formulář k založení nové návodky (část Vytvořit MEN“) a formulář k importování MEN ar” chivu (část Importovat MEN“). Napravo je přehled návodek nahraných v ak” tuální stanici v aktuálním editoru seřazený podle času poslední změny sestupně. V přehledu je možné návodky vymazat nebo vstoupit do samotné editace. Smazání návodky není vratná operace.
Obrázek 4.6: Ukázka úvodní obrazovky MEN editoru Pod přehledem návodek může být zobrazen ještě výpis upozorňující na nalezené duplikátní verze návodek. Jedná se o seznamy návodek se stejným PartNumber číslem a číslem verze. Ve výpisu je vždy PartNumber číslo a pod ním seznam obsahující poslední čas změn všech duplikátních návodek.
4.4.6
Vytvoření návodu
Pro založení nové návodky je třeba vyplnit pracovní název, PartNumber, verzi a číslo dokumentu dokumentu. Položky týkající se kusovníku a zdrojového excelu mohou zůstat prázdné. Formát jednotlivých položek je následující: • Pracovní název – až 32 znaků dlouhý řetězec, který není součásti žádného oficiálního výstupu, pouze slouží ke snažší orientaci uvnitř editoru • PartNumber dokumentu – řetězec ve formátu xxxx.xxxx.xx, x je číslice 0-9 • Verze dokumentu – řetězec ve formátu xx.xx, x je číslice 0-9 • Číslo dokumentu – defaultně 1, slouží o označení pořadí mezi ostatními dokumenty • Kusovník – XML soubor, viz 4.4.7 • Zdrojový soubor – XLSX soubor, viz 4.4.8
23
4.4.7
Kusovník
Pokud je k dispozici předepsaný kusovník, který obsahuje informace o použitých materiálech při výrobě, je možné ho připojit k návodu. Použitý materiál u pracovních kroků je pak sečten a porovnán s tímto zdrojovým kusovníkem, takže lze jednoduše odhalit chyby v návodu. Kusovník je možné nahrát i v pozdější fázi editace návodu, případně lze zdrojové kusovníky měnit. Nahrání nových kusovníků je popsáno v sekci 4.4.18. DTD schéma XML dokumentu je přiloženo na CD a odpovídá schématu kusovníku systému SAP, kvůli kterému byla tato funkce vyvíjena.
4.4.8
Zdrojový soubor
Protože výrobní návody již mohou existovat v jiném formátu, je umožněno, aby mohl být jejich obsah použit při zakládání návodu. Nejjednodušším převodním formátem, do kterého lze rozsáhlé návody převést jednoduchými algoritmy, se ukázal být sešit aplikace Microsoft Excel. Zdrojový soubor musí být uložen ve formátu XLSX (Open XML Document, Excel 2003 a novější) a sešit musí obsahovat dva listy pojmenované OPTION a WORKSUNIT. Sešit obsahuje seznam jednotlivých kroků a seznam variant produktu. Příklad zdrojového souboru je přiložen na CD. Struktura sešitu vyplývá z požadavků firmy, pro kterou byl systém vyvíjen a není optimální. Seznam variant přístrojů Seznam variant přístrojů je na listu pojmenovaném OPTION. List obsahuje pouze názvy, takže PartNumber čísla je nutné doplnit uvnitř MEN editoru. Jednotlivé varianty jsou na samostatných řádcích ve sloupci A, počínaje druhým, a konče prvním prázdným řádkem. Seznam kroků návodky Seznam kroků je na listu pojmenovaném WORKSUNIT. Každý řádek představuje jeden krok, počínaje druhým, a konče prvním prázdným řádkem. Data jsou uložena ve sloupcích v tomto pořadí: • A – název kroku • B – pozitivní adresa skoku, viz níže • C – negativní adresa skoku, viz níže • D – podmínka skoku, viz níže • E – materiálová pozice 1. materiálu • F – PartNumber 1. materiálu • G – název 1. materiálu (znaky před první mezerou jsou skupina) • H – materiálová pozice 2. materiálu
24
• I – počet kusů 2. materiálu • J – PartNumber 2. materiálu • K – název 2. materiálu (znaky před první mezerou jsou skupina) • L – materiálová pozice 3. materiálu • M – počet kusů 3. materiálu • N – PartNumber 3. materiálu • O – název 3. materiálu (znaky před první mezerou jsou skupina) • P – materiálová pozice 4. materiálu • Q – počet kusů 4. materiálu • R – PartNumber 4. materiálu • S – název 4. materiálu (znaky před první mezerou jsou skupina) • T – materiálová pozice 5. materiálu • U – počet kusů 5. materiálu • V – PartNumber 5. materiálu • W – název 5. materiálu (znaky před první mezerou jsou skupina) • X – popis kroku • Y – jméno obrázku bez .jpg koncovky • Z – čas kroku • AA – pracoviště kroku • AB – regálová pozice 1. materiálu • AC – regálová pozice 2. materiálu • AD – regálová pozice 3. materiálu • AE – regálová pozice 4. materiálu • AF – regálová pozice 5. materiálu
25
Podmíněné skoky Podmíněné skoky souvisí s variantami produktů (viz sekce 4.4.11) a v excelu jim jsou vyhrazeny sloupce B, C a D . Pokud je sloupec C neprázdný, pak obsahuje název varianty (kterou lze nalézt na listu OPTION a pokud ne, tak se založí nová), pro kterou se vykoná podmíněný skok. Pro variantu uvedenou ve sloupci C se přejde na krok, jehož název (sloupec A) odpovídá obsahu sloupce B (pozitivní adresa) aktuálního kroku. V opačném případě návodka pokračuje na krok s názvem ze sloupce C, popř. dalším v pořadí, pokud je sloupec C prázdný. Speciální adresa kroku NEXT znamená přechod na další krok v pořadí. Skok se aplikuje až po aktuálním kroku, takže krok je platný a podmínka se týká až dalšího pohybu. Některé kroky ale mohou fungovat i jako rozcestníky, tzn. jsou prázdné a pouze nastaví podmíněné skoky dle variant. Takový krok má v textovém popisu (sloupec X) uveden pouze obsah NOP“. ”
4.4.9
Import MEN
Část označená Importovat MEN“ slouží k importování návodky pomocí MEN ” archivu 4.4.1 získaného exportem z editoru (např. z jiné pracovní stanice). Každý editor má označenou verzi a každý archiv si s sebou nese verzi editoru, ze kterého byl exportován. Pokud je importovaný archiv jiné verze než editor, editor se pokusí provést import i přes tuto skutečnost, ale může dojít k neočekávaným chybám. Očekávané problémy jsou zpravidla oznámeny uživateli a uživatel je při importu upozorněn na rozdílné verze. Po úspěšném importu je automaticky spuštěna editace nové návodky.
4.4.10
Sekce Aktuální krok“ ”
Tato sekce slouží k editaci jednotlivých kroků návodky. Ukázka sekce je na obrázku 4.7. Uživatel si šipkami nebo přímo výběrem v pravém horním rohu vybere krok, který bude upravovat. Pokud nebyl vytvořen žádný krok, v pravém horním rohu bude místo ovládacího panelu pro přechod mezi kroky tlačítko pro přidání prvního kroku. Pro přidávání a mazání kroků, ukládání změn a pro zobrazení náhledů (jak v PDF, tak v MEN prohlížeči) na pracovní krok slouží prostřední podmenu. Tlačítko Uložit“ po provedení nových změn vždy zčervená. Uložením se zapíší ” všechny údaje o kroku tak, jak je uživatel vidí. Úprav materiálů se toto tlačítko netýká. Tlačítko Zrušit změny“ obnoví stránku a zruší všechny změny, které by ” se jinak provedly stisknutím tlačítka. Tlačítko Náhled“ zobrazí MEN prohlížeč ” a uživatel si může prohlédnout, jak se krok zobrazí například v LPCS. Tlačítko Náhled PDF“ vyexportuje stránku PDF s daným krokem a zobrazí ji uživateli. ” V levém horním rohu jsou tři textová pole. První označuje pracovní název kroku. Druhé obsahuje název pracoviště, kde by se pracovní krok měl provádět. Jde ale také jen o pracovní označení a na funkci návodky toto pole vliv nemá. Do třetího se zadává předepsaná doba trvání kroku v centiminutách. Při zobrazování je tento čas odpočítáván v rohu návodky. Zobrazování času plní pro pracovníka čistě informativní funkci a vypršení času nemá žádný další efekt. Reálná doba trvání kroku je ovšem uložena a může posloužit k analýze. 26
Výběr obrázku lze provést pomocí kliknutí na zmenšený náhled. Uživatel může zvolit libovolný z obrázků dostupných v sekci Přehled obrázků“. Jedná se o zmen” šené originály ze sekce Nahrát obrázek“, viz body 4.4.15 a 4.4.16. Pokud si ” uživatel nepřeje mít ke kroku obrázek, není nutné obrázek vybírat. Odebrání obrázku lze provést kliknutím na obrázek a v následném výběru zvolením prvního obrázku v pořadí (červené kolo s nápisem Žádný obrázek“). Po změně obrázku ” je nutné krok uložit tlačítkem v podmenu. Vkládání obrázků přímo do popisného textu kroku je možné přes ikonu stromečku v panelu pro formátování textu. Adresu URL obrázku, kterou je nutné vyplnit, lze získat v sekci Přehled obrázků“, viz bod 4.4.15. Vkládání obrázků ” přímo do textu je doporučováno pouze zkušeným uživatelům. Spouštěcí krok Pokud je krok tzv. spouštěčem, nemá dostupné nastavení předepsané doby trvání kroku a obrázku. Stejně tak nelze provést náhled v MEN prohlížeči. Spouštěcí krok se totiž v přehrávači nezobrazí, ale na jeho místě je spuštěn jiný MEN návod. Pro vytvoření spouštěcího kroku je nutné nejdříve definovat patřičnou opci. Více o funkcionalitě spouštěčů je popsáno v sekci 4.4.11.
Obrázek 4.7: Ukázka editace pracovního kroku návodky
4.4.11
Sekce Parametry návodu“ ”
Tato sekce slouží k nastavení základních informací. Správný formát položek z prvního formuláře je popsán výše, v sekci 4.4.6.
27
Varianty Sekce variant slouží k definování všech typů přístrojů, pro které je návod určen. Varianta je identifikována PartNumber číslem, které se rovná PartNumber číslu typu produktu. Název varianty je pouze orientační pomůcka pro tvůrce návodu. Libovolnému kroku návodu lze nastavit pro které varianty je platný, tzn. pro které přístroje se zobrazí v přehrávači. Pokud je krok omezen pouze na některé varianty, pak bude na patřičné stránce PDF exportu kroku návodu navíc červené upozornění s daným omezením. Opce Sekce týkající se opcí funguje podobně. Pomocí nich se definují tzv. spouštěcí kroky. Spouštěcí krok se v přehrávači nezobrazí, ale na jeho místě je spuštěn jiný MEN návod. Ten je přehrán a po jeho ukončení pokračuje přehrávač na dalším kroku po spouštěči. Název je opět jen pracovní pomůcka. Rozhodující je položka Opce“, což je opět PartNumber číslo. Pokud je přístroj vyráběn s danou ” opcí, je spuštěna návodka definovaná položkami PartNumber MEN“ a Číslo ” ” dokumentu“. Bude nalezen návod, u kterého odpovídají tyto dva údaje a vždy návod s nejvyšším číslem verze. Zaškrtávací pole Vždy přehrát“ označuje, že ” vložená návodka bude spuštěna vždy bez ohledu na opce přístroje. V přehledu všech opcí je označena modrým textem.
4.4.12
Sekce Přehled kroků“ ”
V této sekci jsou vypsány všechny kroky návodky v pořadí, v jakém se zobrazí v prohlížeči a v exportovaném PDF souboru. Ikonou v pravé části tabulky se přesunete na editaci daného kroku. Uchopením libovolné řádky a jejím přetažením na jinou pozici lze přehodit pořadí kroků. Pokud se ve sloupci Název“ nachází ” modrá šipka, daný krok je spouštěč. Po najetí na šipku se zobrazí informace o tom, který návod daný krok spouští. Část okna pojmenovaná Import/export XLSX přehledu“ slouží k exportu ” a opětovnému importu XLSX souboru, který je určen k hromadným úpravám kroků. Exportovaný soubor obsahuje seznam kroků – na každé řádce jeden – a k nim informace v následujících sloupcích: • A – Název kroku • B – Pracoviště • C – Čas kroku v centiminutách • D – PartNumber opce, pokud je krok spouštěčem • Pokračuje seznam variant, kde 1“ znamená, že daný krok pro variantu ” platí • Dále seznam materiálů použitých v daném kroku
28
Po importu XLSX souboru zpět je seznam porovnán s editorem. Pro každý řádek souboru je nalezen odpovídající krok podle názvu kroku (sloupec A) a pokud v editoru existuje, přepíší se údaje v editoru informacemi z XLSX souboru. To znamená, že když v souboru některý krok chybí, zůstane v editoru nezměněn. Na pořadí kroků v XLSX souboru se nehledí a zůstává v editoru neměnné. Pokud dojde k takové změně materiálů, že uživatel změní materiálovou pozici a nebo PartNumber číslo a pro upravený materiál není nalezen patřičný záznam v kusovníku, kde odpovídá dvojice PartNumber čísla a materiálové pozice, je založen v kusovníku nový materiál.
4.4.13
Sekce Export MEN“ ”
Tato sekce slouží k exportování návodky v podobě MEN archivu, popsaném v bodě 4.4.1, který umožňuje návodku přenést na jinou stanici, importovat do LPCS, popř. ji přehrát v MEN přehrávači. Před exportem do archivu je nutné provést export PDF (to lze provést v sekci Export PDF“ 4.4.14). PDF bude totiž v archivu přiloženo v takové verzi, v jaké ” bylo naposled exportováno. Editor uživatele automaticky upozorní, je-li třeba PDF export obnovit. Export PDF se během exportování návodu neprovádí automaticky, protože není vždy potřebný a je časově náročný. Podobu exportovaného archivu lze ovlivnit zaškrtávacími položkami nad tlačítkem pro export. Ty rozhodují o tom, zda bude archiv obsahovat některé soubory, které mohou rapidně ovlivnit velikost archivu, ale nejsou přímo nutné pro strukturu samotné návodky. První pole rozhoduje o přiložení dodatečných souborů (sekce Soubory“ 4.4.17). ” Druhé o zdrojových obrázcích (sekce Nahrát obrázky“ 4.4.16). Po kliknutí na ” tlačítko Exportovat MEN“ prohlížeč nabídne k uložení exportovaný archiv s ná” vodem. Jak bylo již zmíněno, archiv obsahuje verzi editoru, ze kterého byl exportován a při importu na stanici s rozdílnou verzí může dojít k problémům.
4.4.14
Sekce Export PDF“ ”
V této sekci je možné získat návodku ve formátu PDF připravenou pro tisk. V levé části lze nastavit některé informace zobrazované v patičce stránky. Údaje se uloží až po kliknutí na tlačítko Exportovat PDF“. V pravé části lze nastavit kvalitu ” obrázků v exportu. Ta může zásadně ovlivnit velikost výsledného souboru. Dále lze nastavit, jestli se má exportovat celá návodka nebo jen vybrané kroky. Protože každému kroku odpovídá vždy jen jedna strana A4, může se stát, že krok svým obsahem přesáhne svou stránku. V takovém případě je ve výsledném exportu pouze první strana kroku a obsah, který přesahuje, není v exportu obsažen.
4.4.15
Sekce Přehled obrázků“ ”
V přehledu obrázků je seznam automaticky zmenšených souborů vhodných pro vložení k pracovním krokům. Při nahrávání souborů v sekci Nahrát obrázky“ ” jsou automaticky vytvořeny zmenšené kopie a umístěny do této sekce.
29
Všechny obrázky v této sekci jsou ve formátu JPG. Pokud dojde k nahrání dvou obrázků se stejným jménem, ale rozdílnou koncovkou, vznikne pouze jeden JPG soubor v této sekci! Zmenšená kopie prvně nahraného souboru bude přepsána! Po kliknutí na obrázek se objeví zvětšený náhled. Stejného efektu lze dosáhnout kliknutím na ikonu lupy. Ikona řetězu slouží k získání cesty k obrázku, kterou lze použít pro vložení obrázku přímo do popisného textu pracovního kroku. Umisťování obrázků přímo do textu ovšem není doporučováno a k ilustraci je lepší využít hlavního obrázku pracovních kroků. Ikona křížku je určena pro smazání obrázku. Pozor, originální nezmenšený soubor v sekci Nahrát obrázky“ nebude ” smazán!
4.4.16
Sekce Nahrát obrázky“ ”
Tato sekce je určena k nahrání obrázků do editoru. K nahrání je potřeba mít v prohlížeči nainstalován Flash plugin. Editor umožňuje vybrat více souborů najednou. Pokud ovšem dojde během nahrávání fronty souborů k problému (například kvůli špatnému formátu souboru), nemusí dojít k nahrání zbytku fronty. Po úspěšném dokončení nahrání celé fronty je stránka obnovena. Pokud soubor s daným jménem už v editoru existuje, uživatel bude dotázán, zda má dojít k přepsání. Povolené typy souborů v této sekci jsou obrázky s příponami png, jpg, jpeg, gif, bmp, wbmp. Pokud dojde ke smazání obrázku v této sekci, zmenšená kopie v sekci Přehled obrázků“ nebude ovlivněna. ”
4.4.17
Sekce Soubory“ ”
V této sekci lze nahrát k návodce dodatečné soubory. Ty pak mohou být připojeny k MEN archivu a přeneseny spolu s ním. Jde pouze o uživatelovy pomocné či zdrojové soubory, které si přeje mít u návodky. Se samotnou návodkou ale nijak nesouvisí. Do této sekce lze nahrát všechny typy souborů kromě spustitelných PHP skriptů.
4.4.18
Sekce Kusovník“ ”
V této sekci je celkový přehled materiálů použitých v návodce. Jsou zde všechny materiály z XML kusovníku (pokud byl nahrán) a všechny nově přidané. Sloupec Množství z XML“ obsahuje původní množství materiálů uvedené ” v kusovníku (nově přidané materiály mají 0). Sloupec Použito“ obsahuje seč” tené kusy použitých materiálů ze všech kroků návodky. Poslední sloupec obsahuje tyto hodnoty odečtené. Pokud je hodnota záporná (červená), bylo v krocích vloženo větší množství, než bylo uvedeno v XML kusovníku. V opačném případě je hodnota označena zeleně. Nahráním nového XML kusovníku bude ten starý nahrazen. Ručně přidané materiály, které nebyly ve starém kusovníku, nebudou zachovány. Zachovány budou materiály, které jsou již použité v některém kroku, ale v novém kusovníku se nenalézají. Posledně nahraný XML kusovník je vždy dostupný v MEN archivu a je vždy přikládán při exportu návodu z editoru. DTD schéma XML dokumentu kusovníku je přiloženo na CD.
30
5. Programátorská dokumentace V této kapitole lze nalézt programátorský postup pro přidávání nových modulů do intranetového aplikačního manažeru, objasnění řešení některých složitějších problémů a seznam použitých knihoven a zdůvodnění, proč byly použity. Popisované knihovny byly buď vyvinuty přímo pro systém nebo se jedná o knihovny třetích stran. U později zmíněného typu knihoven je vždy v textu uvedeno, že se nejedná o práci autora.
5.1
Intranetový aplikační manažer
Jako intranetový aplikační manažer je označeno jádro systému, které se stará o autorizaci uživatelů a spouštění jednotlivých modulů. Popsáno je programátorské prostředí, do kterého se přidávají jednotlivé nové moduly systému, a sekce může sloužit jako příručka pro programátora, který bude tato rozšíření vyvíjet. Na obrázku 5.1 je letmý přehled rozdělení kódu manažeru. Více informací o funkcích jednotlivých skriptů lze nalézt uvnitř komentářů přímo v souborech. Pro jádro i pro základní moduly platí, že skripty jsou spárované do dvojic. První skript je zpravidla volán přímo a nebo prostřednictvím intranetového manažeru a vykresluje výstup pro uživatele. Druhý skript, se stejným názvem a příponou process, je volán pomocí knihovny jHadr 5.6.4 a AJAXu přímo ze stránky a provádí požadované akce (zápisy do databáze, generování dialogů. . .).
Obrázek 5.1: Ilustrace rozdělení kódu intranetového manažeru
31
5.1.1
Moduly
Jak už bylo řečeno, hlavní smysl intranetového manažeru spočívá v jeho jednoduchém a rychlém rozšiřování. Modulová architektura umožňuje stavět systém po blocích. Manažer dále nabízí užitečné knihovny vhodné k psaní velmi efektivního kódu. Programátor modulů řeší už jen samotný obsah a funkčnost své podaplikace. Manažer zároveň zapouzdřuje moduly takovým způsobem, že není nutné řešit například správné URL adresy a systémové cesty, vykreslování hlavičky a patičky stránky nebo vlastní grafický styl aplikace. Vždy může použít zdroje zpřístupněné jádrem a spolehnout se na jisté poskytnuté abstrakce.
5.1.2
Správa modulů
Aby došlo ke správnému přidání modulu do aplikace, musí se modul založit v administraci a poté přidat jeho sekce. Každá sekce je identifikována svým jménem souboru a názvem. Jméno souboru hlavní sekce udává, jak se bude jmenovat adresář modulu, který je pak umístěn v adresáři /app. Jména sekcí se pak pojí k jednotlivým PHP skriptům. Příklad správné konfigurace modulu je na obrázku 5.2.
Obrázek 5.2: Ukázka konfigurace skriptů a sekcí modulu Po propojení souborů se sekcemi je třeba přiřadit uživatelským skupinám oprávnění, která umožňují uživatelům sekci zobrazit/zapisovat do ní.
5.1.3
Spouštění modulů
Pokud se uživatel systému dostane do sekce modulu přes menu intranetového manažeru, je spuštěn příslušný skript, který byl se sekcí propojen. Skript, který celou tuto událost zpracovává a spouští modul, se nachází v kořenovém adresáři pod jménem apps.php.
32
Skript apps.php vykoná při spouštění následující akce: 1. Vykreslí hlavičku stránky 2. Pomocí příkazu include vloží, pokud existuje, skript [název modulu] functions.php v hlavním adresáři modulu 3. Pomocí příkazu include vloží skript, který byl k sekci připojen v administraci modulů, viz 5.1.2 4. Vykoná kód vloženého skriptu (zavoláním metody display(), viz níže) 5. Pokud byla nastavena chybová proměnná $ SESSION[’chyba’], zařídí její výpis na obrazovku 6. Vykreslí patičku stránky Skript z bodu 2 má být použit např. jako knihovní nebo konfigurační soubor modulu, což se ukázalo jako často požadovaná funkce. Pokud se uživatel nachází v hlavní sekci modulu (nevybral podsekci modulu), je v bodu 3 volán skript index.php z hlavního adresáře modulu. Aby nebylo možné spouštět výkonný kód skriptů sekcí mimo prostředí intranetového manažeru, například pomocí zavolání vhodné URL adresy, nesmí být výkonný kód sekcí spustitelný přímo. Po modulech je proto vyžadováno, aby skripty obsahovaly pouze jedinou třídu View se statickou metodou display(), která kód provede (bod 4). Manažer tuto metodu zavolá, ale přímý přístup na URL adresu skriptu nespustí žádnou nechtěnou akci, protože dojde pouze k nadeklarování třídy. Pro případ, kdy je jakýkoliv skript volán přímo, je v nadřazeném adresáři modulů /app umístěn knihovní skript app library.php. Ten automaticky připojuje všechny důležité knihovny jádra, které jsou jinak dostupné při volání sekce přes intranet.
5.1.4
Dostupné proměnné
Před zavoláním skriptu modulu jsou nastaveny důležité proměnné, které lze využít uvnitř modulu. V prostředí, ve kterém je spuštěn skript modulu uvnitř skriptu apps.php jsou nastaveny například následující konstanty: • PATH – absolutní URL, kde se nachází kořenový adresář intranetu • APP PATH – relativní cesta z kořenového adresáře intranetu do adresáře právě spouštěného modulu • CURRENT PATH – absolutní URL, přes kterou je právě volán skript apps.php (nice URL formát, bez GET části) • SEKCE – ID modulu, jak je uloženo v intranetu • SUBSEKCE – ID sekce modulu, jak je uloženo v intranetu
33
• ZAPIS – booleanovská proměnná, true, pokud má uživatel právo zápisu k aktuálně vybrané sekci modulu (právo čtení je implikováno tím, že je sekce zobrazována) • ADMIN – booleanovská proměnná, true, pokud je právě přihlášen administrátor intranetu • UID – ID uživatele, 0 pro anonymní přístup
5.1.5
Autentizace uživatelů
Autentizace uživatelů probíhá pomocí uložení informací o uživateli do SESSION proměnných. SESSION ID je posíláno jako součást cookies informací. Hesla uživatelů v databázi jsou zahashována pomocí funkce SHA-1 1 . Pro zvýšení bezpečnosti je navíc před hashováním k heslu přidána dvojitá sůl2 . Jedna pochází ze souboru config.php a její podoba byla nastavena během konfigurace systému administrátorem a je statická. Druhá je vygenerována pro každého uživatele zvlášť při vytvoření uživatelského účtu a je měněna při každé změně hesla uživatele. Důvod pro toto dvojité solení je prostý. Pokud by došlo k odcizení databáze, útočník nebude znát statickou sůl, která se nachází v konfiguračním souboru. Pokud by došlo i ke vyzrazení statické soli, dynamická sůl, která je u každého uživatele jiná, ztíží útok natolik, že nebude možné získat hesla uživatelů hromadně. Stálé přihlášení V případě stálého přihlášení uživatele je do cookies uloženo ID uživatele a hash osoleného hesla, který je ve stejné podobě i v databázi. Během prvního přístupu k systému je uživatel automaticky přihlášen. Tato metoda přihlašování není ze zřejmých důvodů bezpečná, ale nedochází během ní k prozrazení uživatelova hesla.
5.2
PHP knihovny jádra
Zde je uveden seznam knihoven a tříd jádra, které může libovolný modul využít. Všechny zmíněné třídy jsou při spouštění modulu automaticky připojovány. Připojovány jsou i v případě použití knihovny app library.php. Všechny zmíněné třídy byly vytvořeny autorem, nejedná se o kód třetích stran.
5.2.1
cSql
cSql je PHP třída, přes kterou se lze pohodlně připojit k databázi, vykonávat dotazy a zpracovávat výsledky. Plná dokumentace třídy je uvnitř skriptu třídy /cls/cSql.php nebo také součástí referenční příručky jádra přiložené na CD. 1 2
http://tools.ietf.org/html/rfc3174 http://cs.wikipedia.org/wiki/S%C5%AFl_%28kryptografie%29
34
5.2.2
cReg
cReg je PHP třída, která slouží k porovnávání řetězců oproti běžným regulárním výrazům. Součástí třídy je několik přednastavených výrazů, které většinou postačují pro většinu situací. Plná dokumentace třídy je uvnitř skriptu /cls/cReg.php nebo také součástí referenční příručky jádra přiložené na CD.
5.2.3
cPage
cPage je třída pro práci s HTML šablonami. Smyslem jejího použití je oddělení PHP a HTML kódu. Třída je uzpůsobena pro vypisování tabulek a sestavování výsledných stránek skládáním z menších částí, například v závislosti na právech uživatele. Výhodou použití této třídy jsou přednastavené proměnné, které jsou automaticky do stránky doplněny při závěrečném vypisování. Tyto proměnné obsahují různé užitečné cesty nebo informace o uživateli, jimiž se programátor modulů nemusí zabývat. Další výhodou je její částečná provázanost s třídou cSql při doplňování hodnot/vykreslování tabulek vzešlých z MySQL dotazů. Šablonovací systém a plná dokumentace třídy včetně příkladu je uvnitř skriptu /cls/cPage.php nebo také součástí referenční příručky jádra přiložené na CD.
5.2.4
Další PHP funkce
Skript functions.php, který se nachází v kořenovém adresáři, obsahuje další užitečné pomocné funkce, které využívá intranetový manažer a sdílí je s moduly prostřednictvím hlavní knihovny. Všechny funkce jsou detailně popsány uvnitř skriptu /functions.php nebo uvnitř součástí referenční příručky jádra přiložené na CD.
5.3
PHP knihovny modulu MEN
Zde je uveden seznam knihoven a tříd použitých uvnitř modulu MEN. Jde o třídy cMEN, cPage a o knihovny třetích stran, které zapouzdřují práci s PDF a XLSX soubory.
5.3.1
cMEN a cKrok
Tyto třídy reprezentují návody a jejich pracovní kroky. Smysl použití těchto tříd spočívá v transparentnosti čtení a nastavování vlastností návodů a kroků. Čtení i zápis představuje pro programátora přístup k polím reprezentujících objektů a třída už automaticky na pozadí čte a promítá tyto změny z a do databáze.
5.3.2
mPDF
Jedním z požadavků na modul elektronických návodek byla možnost získat návod i ve formátu PDF souboru uzpůsobeném pro tisk. Tisknuté návody jsou používány u pracovišť, která nedisponují zobrazovacím zařízením. Vzhledem k tomu, že popisné texty pracovních kroků mohou obsahovat složité formátování, jako například barvy, různé velikosti a typy odsazení písma a nadpisů, odrážkové seznamy
35
nebo i složitější tabulky, musí být toto formátování zahrnuto i v PDF souboru. Texty návodek jsou převáděny na HTML a CSS kód, ve kterém jsou zobrazovány v prohlížeči elektronických návodek. Je proto nutné tento HTML kód zpracovat a převést včetně kaskádových stylů do PDF dokumentu. Protože správné sémantické zpracování HTML kódu je velmi rozsáhlý problém, nebylo by rozumné zabývat se implementací vlastní knihovny. Rozhodl jsem se proto použít již existující PHP knihovnu mPDF, která tento problém řeší. Jedna z jejích funkcí je právě převod celých HTML stránek do formátu PDF. Knihovna podporuje většinu CSS2 vlastností a všechny standardní HTML tagy, takže výsledný kód, který je knihovnou zpracováván a který je generován JavaScriptovým WYSIWYG editorem, nezpůsoboval žádné závažnější potíže. mPDF je knihovna třetí strany. V systému byla použita verze 1.53 a dokumentaci knihovny lze najít na oficiálních stránkách projektu [4].
5.3.3
PDFMerger
Dalšími problémy, se kterým jsem se při generování PDF návodů setkal, byla paměťová a časová náročnost. Některé návody dosahují i délky stovek pracovních kroků, což znamená vygenerovat PDF soubor o minimálně stejném počtu stránek. Parser knihovny mPDF je díky bohatosti jeho funkcí náročný na paměť a při standardních hodnotách limitu omezení dostupné paměti pro PHP se ukázalo, že u návodů o 30 a více krocích (30 stranách PDF souboru) paměť docházela. Dalším důvodem pro toto mohlo být celkem náročné zpracovávání fotografií, kterými jsou pracovní kroky doplňovány. Problémem se ukázala být také časová náročnost generování PDF dokumentu, protože zpracování jednoho pracovního kroku a jeho převedení do formátu PDF zabere čas v řádech jednotek sekund. Pro návody o několika stech krocích tento proces trvá i několik minut. Protože se generování zároveň odehrává na straně serveru, uživatel musí být na klientské straně průběžně informován o průběhu procesu. Problém jsem vyřešil tak, že pracovní kroky návodu generuji postupně do separátních PDF souborů. Generování řídí JavaScript na straně klienta, který nechá PHP postupnými AJAXovými dotazy na server zpracovat návod stránku po stránce. Protože je tento proces řízen JavaScriptem, je možné uživatele informovat o průběhu i o přibližné zbývající době nebo případně proces kdykoliv zrušit. Po zpracování posledního kroku přichází na řadu knihovna PDFMerger, která PDF soubory jednotlivých kroků spojí ve výsledný dokument. Knihovna je uzpůsobena právě pro práci s delšími soubory a je paměťově nenáročná a zároveň rychlá — spojení několika stovek dokumentů zabere čas v řádu jednotek sekund. Jedná se o knihovnu třetí strany. V systému byla použita verze 1.0 a dokumentaci knihovny lze najít na oficiálních stránkách projektu [5].
5.3.4
PHPExcel
Další použitou, již existující, knihovnou je PHPExcel, která zapouzdřuje práci s excelovými sešity. Knihovna byla použita z toho důvodu, že původní firma, kde byl software nasazován, měla jejich stávající návody v tomto formátu dat. Editor elektronických návodek proto disponuje funkcí vytvořit návod ze zdrojového ex-
36
celového dokumentu. Další funkcí, kde bylo práce se sešity potřeba, je možnost vyexportovat návod ve formátu excelového sešitu, data upravit v tomto prostředí a upravený návod nahrát zpět do systému. Tato funkce je využívána například po dokončení prvního návrhu pracovních kroků a jejich rozřazení na jednotlivá pracoviště, případně k naplánování časové náročnosti pracovních kroků, pro které je pro mnoho uživatelů shrnující excelový list vhodnějším editačním nástrojem. PHPExcel je tedy použit jak pro načítání, tak pro generování sešitů formátu XLSX. Jedná se o knihovnu třetí strany. Byla použita verze 1.7.6 a detailní dokumentaci lze naleznout na oficiálních stránkách projektu [6].
5.4
Organizace modulu MEN
V této sekci je objasněno rozdělení PHP kódu modulu MEN. Dále je popsána organizace dat rozpracovaných návodů uvnitř MEN editoru.
5.4.1
Organizace kódu
Modul MEN je strukturou kódu značně složitější než modul LPCS. Problém je způsoben tím, že celá část modulu, která se týká přímo editace návodů, je z technických důvodů spouštěna prostřednictvím skriptu editor.php. Sekce editoru, která se má zobrazit, je určena GET parametrem action. Skript editor.php potom deleguje volání do příslušného skriptu a zobrazí patřičnou sekci. Rozdělení kódu uvnitř adresáře /app/men je následující: • *.php – skripty sekcí modulu MEN • editor.php – hlavní skript pro editaci návodů • php/editor/* – sekce editoru, volané skriptem editor.php • php/editor process/* – párové skripty ke skriptům sekcí editoru, které reagují na AJAXové požadavky • php/cls/* – třídy cMEN a cKrok modulu MEN, viz 5.3.1 • php/excel/* – knihovna PHPExcel, viz 5.3.4 • php/mpdf/* – knihovna mPDF, viz 5.3.2 • php/pdfmerger/* – knihovna PDFMerger, viz 5.3.3
5.4.2
Organizace dat
Modul MEN musí uchovávat mnoho souborů spojených s návody. Jedná se o nahrané obrázky, komprimované obrázky, přídavné soubory, exportované PDF, zdrojový kusovník a zdrojový XLSX soubor. Data návodů uvnitř editoru lze naleznout v adresáři /app/men/data, data návodů nahraných do databáze prohlížeče v adresáři /app/men/data prohlizec. Každý návod má pro sebe vyhrazen vlastní adresář pojmenovaný ID klíč. ID odpovídá sloupci meny.id v databázi. Klíč je náhodný řetězec vytvořený při založení nebo importování návodu do systému. 37
Adresář návodu obsahuje tři podadresáře: • files – dodatečné soubory ze sekce Soubory“ ” • src images – originální obrázky nahrané uživatelem • images – zmenšené kopie originálních obrázků, se kterými se v editoru pracuje
Dále může adresář návodu obsahovat následující soubory: • data.xlsx – zdrojový XLSX soubor návodky • kusovnik.xml – poslední nahraný XML kusovník • export.pdf – poslední exportované PDF celé návodky
Při importu návodky do prohlížeče jsou v datovém adresáři ponechány pouze obrázky ve složce images a exportované PDF. Ostatní soubory nejsou pro přehrání návodky nutné.
5.4.3
MEN archiv
MEN archiv, který slouží pro zálohu a přenos návodů mezi počítači, je povahou klasický zip archiv. Struktura souborů je stejná jako při uložení návodu v editoru (viz 5.4.2). Navíc obsahuje archiv klíčový soubor build.xml. Ten nese všechny informace, které jsou jinak uloženy v databázi. Podle něj je možné po importu do jiného počítače zpětně vytvořit strukturu návodu. DTD schéma pro tento XML soubor je přiloženo na CD.
5.5
PHP třídy modulu LPCS
V modulu LPCS je použito několik složitějších návrhových vzorů, které stojí za to zmínit.
5.5.1
Reprezentace linky
Složitější struktura linky vyžaduje pro svou reprezentaci i složitější objektový návrh. Objektová reprezentace linky je realizována pomocí tříd cLinka, cPracoviste, cPozice a cProdukt. Linky obsahují pracoviště, pracoviště obsahují pozice a pozice obsahují produkty (neomezená pracoviště obsahují místo pozic přímo produkty). Protože linku je nutné často prezentovat uživateli v různých podobách (sekce Výroba“, Pracoviště“, tvorba výrobních postupů. .), byl použit návrhový vzor ” ” Visitor 3 . Tyto třídy mají na starost pouze tvořit datovou strukturu, která odpovídá rozložení linky, a objektům umět přiřadit jejich vlastnosti. Vlastnostmi jsou 3
http://en.wikipedia.org/wiki/Visitor_pattern
38
myšleny například proveditelné akce s objekty (konkrétní produkt lze odeslat na další pracoviště, ale nelze mu resetovat časovač). Při zobrazování linky je použita třída cDisplayVisitor, která nad touto strukturou operuje. Třída dostane odkaz na cPage šablonu 5.2.3, kterou použije ke zobrazení linky. Na šabloně pak závisí, které akce objektů se zobrazí a jak budou data uživateli prezentována. Další důvod použití tohoto objektového návrhu spočívá v jednoduchém rozšiřování modulu, protože není problém přidat nového vlastního visitora, který linku zobrazí jinak, například jako infotabuli.
5.5.2
Parametry produktů
Další složitější strukturou jsou přídavné parametry produktů. V systému bylo zavedeno 10 základních typů parametrů a některé z nich se vyznačují svým specifickým chováním. Jedná se o styl uložení dat v databázi, validaci dat, ale například i o zobrazování ovládacích prvků uživateli. Pro datový typ reprezentující datum je vhodné vyzvat uživatele k zadání pomocí vyskakovacího kalendáře, pro typ boolean je vhodnější zobrazit zaškrtávací pole. Protože systém počítá s možností přidávání nových datových typů (nová firma může k identifikaci svých produktů používat odlišný formát řetězců), byl použit návrhový vzor Factory 4 . Každý typ parametru má svoji třídu dědící od třídy cParametr, která musí umět validovat vložená data, zobrazit hodnotu uživateli a vykreslit ovládací prvek, který umožní uživateli parametr zadat či změnit. Pomocí třídy cParametrFactory jsou pak vytvářeny potřebné instance podle konkrétních typů parametrů produktu. Přidání nového parametru vyžaduje implementaci jeho třídy a vytvoření reprezentace parametru v databázi, kam se budou hodnoty parametrů produktů ukládat.
5.6
Sdílené javaScriptové knihovny
Jádro systému obsahuje některé JavaScriptové funkce, které ulehčují zpracovávání dat, vykreslování tabulek a dynamickou manipulaci se stránkami. Všechny potřebné soubory jsou při spouštění modulů automaticky připojovány v HTML hlavičkách, takže programátor modulů opět nemusí řešit cesty, styly ani zdrojové soubory. Kromě knihoven jHadr a SlickForms se nejedná o autorovu práci, ale o kód třetích stran.
5.6.1
JSON
Systém využívá v některých svých funkcích JSON a tak je připojena oficiální JSON knihovna, která umožňuje parsování i dekódování dat ve formátu JSON. K tomu slouží funkce JSON.parse() a JSON.stringify(). Dokumentace datového formátu JSON je uvedena na oficiálních stránkách [7]. 4
http://en.wikipedia.org/wiki/Factory_method_pattern
39
5.6.2
jQuery
Základním kamenem většiny ostatních pluginů je framework jQuery — dnes již standardně užívaná knihovna při vývoji projektů obsahujících práci s JavaScriptem. V systému je použita verze 1.8.0 a dokumentace je k nalezení na oficiálních stránkách projektu [8].
5.6.3
jQuery UI
Systém dále používá prvky knihovny jQuery UI verze 1.8.23. K dispozici je plná verze, která obsahuje všechny dostupné elementy a vizuální efekty. Vizuální styl byl upraven pro potřeby intranetového manažera. Návod k použití a dokumentaci lze najít na oficiálních stránkách projektu [9]. Na této knihovně je založena i další a nejdůležitější JavaScriptová knihovna systému, knihovna jHadr, viz níže.
5.6.4
jHadr
Nejčastější způsob ovládání systému probíhá pomocí jQuery UI dialogů generovanými pomocí knihovny jHadr, která byla kvůli systému pro tyto účely vyvinuta. Důvody pro použití této knihovny jsou zmíněny v sekci ovládání systému 3.6 v kapitole 3. Základní smysl knihovny spočívá v automatizovaném sběru formulářových nebo i jinak získaných dat a jejich odeslání AJAXovým dotazem na server. Server vykoná s daty požadovanou akci a poté prostřednictvím PHP třídy jHadr vygeneruje speciální odpověď, která obsahuje informace o dialogu, který má být uživateli zobrazen. Ten může obsahovat například zprávu o výsledku provedené operace nebo libovolná tlačítka s různými funkcemi. JavaScriptová strana tuto odpověď obdrží a pomocí knihovny jQuery UI 5.6.3 vygeneruje požadovaný dialog. Výsledkem této operace mohou být kromě dialogů i různé akce, jako například přesměrování uživatele na novou adresu, obnovení stránky nebo potvrzení formuláře. Princip fungování knihovny a její detailní dokumentace je na oficiálních stránkách projektu [10].
5.6.5
SlickForms
Protože systém musí být vizuálně jednotný pro více internetových prohlížečů a operačních systémů, byl vyvinut jQuery plugin SlickForms, který upravuje klasické formulářové HTML prvky. Ty jsou po načtení stránky automaticky transformovány do vizuálně unifikované podoby. Existující pluginy, které tento problém řeší, nebyly nikdy dostatečné pro celkem specifické požadavky systému. Jednalo se buď o nedostatky v ovládání prvků, nevhodnou grafickou úpravu prvků nebo o kód, který kolidoval s použitím knihovny jQuery. Detailní dokumentaci lze naleznout na oficiálních stránkách projektu [11].
40
5.6.6
ColorBox
Systém disponuje i lightboxovým řešením, které umí v umělém pop-up okně zobrazovat zvětšené náhledy obrázků, různý dynamický HTML obsah, flash, AJAXem generovaný obsah a další. Verze 1.3.20.1 byla opět graficky upravena do stylu intranetového manažera. Detailní dokumentace a návod k použití se nachází na oficiálních stránkách projektu [12].
5.6.7
TableDnD
jQuery plugin TableDnD umožňuje jednoduše měnit pořadí řádků tabulek pomocí přetahování myší. Děje se tak dynamicky bez potřeby obnovení stránky. Data jsou po změně pořadí většinou odesílána pomocí technologie AJAX, případně pomocí knihovny jHadr, což dělá práci se systémem velmi rychlou. Detailní dokumentace je uvnitř souboru /layout/tablednd.js nebo na oficiálních stránkách projektu [13].
5.7
JavaScriptové knihovny modulu MEN
Pro modul MEN byly použity další JavaScriptové knihovny. Tato sekce se věnuje zdůvodnění jejich použití a místům, kde byly knihovny použity.
5.7.1
TinyMCE
Pracovní kroky elektronických návodů obsahují popisné texty, které jsou graficky formátovatelné. Pro jejich editaci je použit JavaScriptový WYSIWYG editor TinyMCE. Ten byl použit z důvodu široké nabídky editovacích funkcí, velké konfigurovatelnosti a také díky kompatibilitě jeho výstupního HTML a CSS kódu s PHP knihovnou mPDF 5.3.2, která tento kód později převádí do formátu PDF dokumentů. Kaskádové styly jsou totiž ve výsledném HTML kódu uvedeny v inline notaci, takže přímo v atributech style příslušných HTML tagů. Některé WYSIWYG editory tyto CSS styly extrahují a generují separátní soubor nebo CSS hlavičku, což ale nebylo pro účely generování PDF vhodné. Stejně tak pozdější zobrazování návodů v elektronické podobě se tímto stalo jednodušší. Jedná se o knihovnu třetí strany. V systému byla použita verze 3.4.7 a dokumentaci lze najít na oficiálních stránkách projektu [14].
5.7.2
QuickSand
Plugin QuickSand knihovny jQuery pomáhá při řazení náhledů obrázků v sekci Přehled obrázků“ a při výběru obrázku pracovního kroku v sekci Aktuální ” ” krok“. Obrázky je možné řadit podle názvu, velikosti a času poslední změny. Při vypisování obrázků jsou do HTML atributů data-nazev, data-velikost a datadatum přiřazena čísla, která odpovídají pořadí obrázků v tom kterém seřazení. JavaScript už se pak orientuje jen podle nich. Poslední nastavení seřazení je vždy navíc uloženo v cookies. QuickSand je opět plugin třetí strany. Více informací o použití pluginu je v souboru /app/men/tpl/quicksand.js a na oficiálních stránkách projektu [15]. 41
5.7.3
Uploadify
JavaScriptová a flashová knihovna Uploadify slouží k nahrávání většího množství souborů. Knihovna je použita pro nahrávání obrázků a souborů v sekcích Na” hrát obrázky“ a Soubory“. Hlavním důvodem pro použití knihovny je možnost ” výběru více souborů najednou, která není v některých prohlížečích dostupná. Bohužel je k tomu potřeba využití flashového pluginu, jemuž se na některých zařízeních nedostává podpory. S editorem je ovšem většinou pracováno na stolních počítačích. Další výhodou je i responzivnost při nahrávání souborů, kdy je uživateli zobrazován průběh nahrávání. Jedná se o knihovnu třetí strany. Více informací o použití knihovny lze najít na oficiálních stránkách projektu [16].
42
6. Porovnání s existujícím SW V této kapitole budou zmíněny existující implementace softwaru řešícího podobný problém a budou porovnány s naším systémem. Budou zmíněny pouze systémy, které se svými funkcemi a účelem blížily nejvíce, ikdyž k porovnání došlo s více produkty. Hledání podobných systémů se ukázalo být problematické, protože systémy jsou často vyvíjeny přímo v rámci konkrétní firmy a tím pádem spadá jejich obsah do firemního know-how. U profesionálně vyvíjeného softwaru za účelem prodeje jiným firmám byly většinou i samotné ukázky a demo verze bohužel zpoplatněné. Systémy tohoto druhu se navíc často zabývaly více finanční stránkou výroby, optimalizací plánování zakázek a nákupu výrobního materiálu. Samotné řízení výroby, které je podstatou našeho systému, nebo modelování schématu linek už řešeno nebylo.
6.1
Tuppas MES Software
Tuppas MES Software 1 je systém zaměřený na manufakturní výrobu, který má s naším několik společných vlastností. Stejně jako naše řešení je i tento systém webový, skládá se z modulů, které lze rozšiřovat, a umožňuje sledovat produkty a ukládat jejich výrobní historii. Navíc nabízí nástroje pro vyhodnocování dat a plánování výroby. Bohužel je spíše zaměřený na sledování výroby a ne na její řízení, takže nedisponuje možností vytvářet výrobní návody a modelovat přesné schéma linky.
6.2
EZ-MES
Software EZ-MES společnosti EasyWorks 2 je další webový systém, který je v jistých rysech velmi podobný našemu řešení. Systém obsahuje základní správu uživatelských rolí3 , která není tak rozsáhlá, jako u našeho systému. Uživatelské skupiny jsou předdefinovány, nelze je upravovat a dělení je celkem hrubé. Dalším společným rysem je definice typů produktů a k nim možnost vytvoření pracovních postupů. Postupy se skládají z pracovních kroků, což připomíná jistou analogii s elektronickými návody u našeho řešení. Provedené výrobní kroky lze také zpětně procházet a kontrolovat výrobu i výrobní historii. Oproti našemu řešení ovšem chybí definice parametrů produktů, závislost pracovních kroků na vlastnostech produktů a modelování schémat linek (či dělení produktů a výroby do více oddělených linek). Systém je uzpůsoben pro sledování produktů, ale už ne pro kontrolu a řízení výroby. Ze zveřejněných dokumentačních materiálů a videí vyplývá, že systém pouze uchovává přehled o produktech ve formě tabulky a k produktům se doplňují informace o jejich výrobě. Chybí 1
http://www.tuppas.com/MES-Software/MES-Software.htm http://eazyworks.com 3 http://www.eazyworks.com/EZ-MES-Online-Manual/Configuration-User-Rights. aspx 2
43
proto pohled na data ze strany pracovníků a pracovišť. Systém je tak spíše evidence výroby než její kontrola a řízení. Systém je také na první pohled složitější z hlediska ovládání a orientace, takže jednoduché akce, jako je například potvrzení provedení pracovního kroku, jsou obtížnější na orientaci.
Obrázek 6.1: Ukázka systému EZ-MES
6.3
IS Bílý Motýl
České řešení IS Bílý Motýl 4 s naším systémem sdílí opět podobné rysy jako software od firmy Tuppas. Opět jde o modulovou architekturu. Ovládání na straně klientů probíhá přes platformu Microsoft Visual FoxPro 5 , která podporuje pouze operační systém Microsoft Windows, takže z hlediska potřeby instalace a použitelnosti na různých zařízeních je systém v nevýhodě. Dále nabízí opět nástroje pro plánování výroby a oproti předchozímu porovnávanému systému disponuje možností návrhu výrobních postupů produktů a poté navazující kontrolou výroby. Systém je znovu spíše zaměřen na ekonomickou stránku výroby a opět chybí možnost modelování linek.
6.4
Závěr porovnání
Porovnáváním s jinými existujícími systémy bylo zjištěno, že volba modulové architektury byla na místě, protože je zastávána i u ostatních systémů. Stejně tak mnoho jiných systémů je webového charakteru. Dále se ukázalo, že by bylo vhodné, aby systém obsahoval statistické nástroje a analytické funkce, které by uživateli prezentovaly data generovaná výrobním procesem. Implementace je z důvodu značné rozsáhlosti momentálně neobsahuje, ale další rozšíření systému by se měla pravděpodobně ubírat tímto směrem. 4 5
http://www.bmservis.cz/is-bily-motyl http://msdn.microsoft.com/en-us/vfoxpro
44
7. Rozšíření systému Jedním z požadavků na systém, zmíněných v kapitole 2, byla podpora pro jednoduchou rozšiřitelnost systému. Hlavním důvodem jsou specifické požadavky firem na funkčnost jejich intranetových aplikací, které nelze předem odhadnout. V této kapitole je příklad některých takových rozšíření, která byla již implementována jinými programátory a nejsou proto zahrnuta v obsahu práce.
7.1
Systém SAP
Systém SAP1 je velmi rozšířeným systémem a často používaným ERP2 nástrojem. Firma, ve které byl systém pro kontrolu linkové výroby nasazen, používala pro správu vyráběných produktů právě systém SAP. Práce s ním byla ovšem neobratná, protože systém je velmi obecný. Hlavní databáze a servery byly umístěny v jiné lokalitě a spojení bylo nutné navíc dobře šifrovat, což práci s ním činilo i velmi pomalou (zpracování příkazů zabíralo čas v řádu jednotek sekund). Do SAP systému se zapisují všechny provedené akce s produkty, jako jsou například jejich přesuny po lince nebo chybová hlášení. To vše se po nasazení systému podařilo zautomatizovat pomocí nových modulů intranetového manažeru. Dlouho trvající dotazy, které jsou nyní řešeny pomocí protokolu SOAP3 a jazyka WSDL4 , je možné zpracovávat na pozadí separátními procesy, případně je lze shromažďovat a odesílat hromadně v dávkách. Propojení se systémem SAP sice pořád ještě není úplné, ale i přesto šetří denně mnoho času. Výhodou je, že pracovníci linky se už nyní vůbec nemusí tímto systémem zabývat a jejich práce se stává efektivnější.
7.2
Statistiky a přehledy
Další užitečnou nástavbou jsou statistické nástroje a přehledy, které prezentují uživatelům data generovaná procesem výroby. Systém je díky své rozsáhlosti momentálně sám neobsahuje, ale jeho další rozšíření by se určitě ubírala tímto směrem. Na obrázku 7.1 je příklad grafu z jednoho již existujícího statistického modulu, který zobrazuje intenzitu práce pracovníků linky. Tento přehled vznikl ze samotných informací o přesunu produktů po lince. Byl zjištěn seznam potvrzených pracovních kroků elektronických návodek a porovnána doba jejich skutečného trvání s předepsanou časovou náročností kroku. Výsledný graf ukazuje procentuální vyjádření poměru těchto dob, kde 100% značí, že pracovník pracuje přesně podle předepsané pracovní doby. 1
http://sap.com Enterprise Resource Planning 3 Simple Object Access Protocol 4 Web Service Definition Language 2
45
Obrázek 7.1: Graf intenzity práce zaměstnanců
7.3
Výrobní materiály
Mezi další vzniklé nástavby se řadí i modul pro správu výrobních materiálů. Vzhledem k tomu, že elektronické montážní návody obsahují u jednotlivých pracovních kroků seznam potřebného materiálu, je možné tato data extrahovat a pro produkty kompletovat tzv. kusovníky. Zde je třeba podotknout, že kusovník, který je poskytován přímo editorem návodů, zpravidla není směrodatný. Přesné množství materiálu je možné vypočítat až při definování parametrů produktu, na kterých návod závisí. Při zpracování zakázek pak dochází k celkovému odhadu náročnosti na materiál, jehož dostupnost musí být zajištěna. Na aktuální dostupnost materiálu a náročnost zakázek potom reagují disponenti při plánování výroby.
7.4
Další rozšíření
Nad systémem vznikla celá řada dalších menších rozšíření, jež zmíníme pouze okrajově. Zajímavá je například nástavba sekce Disponent“ modulu LPCS tzv. ” Heijunka box 5 . Jde o vizuální pomůcku, která umožňuje efektivní plánování výroby produktů. Softwarová implementace se ukázala být velkým usnadněním organizace některých konkrétních výrobních linek. Dalším urychlením práce je například možnost pohodlného tisku polepovacích štítků s čárovými kódy a poté zpětné vyhledání konkrétních produktů po přečtením čárového kódu čtecím zařízením. V poslední řadě stojí za zmínění modul pro správu materiálu na skladu. Pracovníci jsou vybaveni chytrými ručními skenovacími zařízeními, ve kterých běží operační systém Windows a prohlížeč Internet Explorer. V prohlížeči je načten intranetový manažer a spuštěn patřičný modul, který je graficky upraven do potřeb menší obrazovky. Pracovníci poté skenují čárové kódy produktů a systém automaticky kontroluje počty a stavy materiálů na skladu.
5
http://en.wikipedia.org/wiki/Heijunka_box
46
8. Závěr Vytvořený systém splňuje všechny hlavní požadavky, které vyplynuly z analýzy prostředí v kapitole 2. Funkčnost systému byla ověřena jeho nasazením ve firmě Rohde & Schwarz, konkrétně v její české pobočce ve Vimperku1 , která čítá přes 500 zaměstnanců. Firma se zabývá osazováním plošných desek a výrobou měřících, radiokomunikačních a radiomonitorovacích přístrojů. Výrobní proces těchto přístrojů je celkem komplexní záležitostí a systém úspěšně zvládá pokrýt variabilitu výrobních linek a složitých montážních návodů. Momentálně je kontrolováno 18 různých výrobních linek a vyráběno přes 2 000 typů různých přístrojů a komponent. Od nasazení systému bylo vyrobeno již přes 100 000 přístrojů a systém zaznamenal přes 1 000 000 provedených akcí s produkty. Vzniklá rozšíření systému a porovnání s podobnými systémy v kapitole 6 ukázalo, že systém ve své základní verzi postrádá některé očekávatelné moduly, jako jsou statistické a analytické nástroje. Implementace je momentálně kvůli svojí rozsáhlosti neobsahuje. Tyto nedostatky jsou částečně vynahrazeny silnou podporou pro jednoduché rozšiřování o nové moduly. Několik užitečných již vzniklých rozšíření bylo popsáno v předešlé kapitole. Rozumnou nástavbou systému by, kromě již zmíněných statistických nástrojů a zmíněných existujících rozšíření, byl například i plánovač zakázek. Jeho funkce by byla založena na odhadu vytížení linek a určoval by pořadí výroby jednotlivých produktů (momentálně funkce disponentů). Pořadí zpracování zakázek by pak mohlo záviset i na potřebném výrobním materiálu a jeho dostupnosti. Vhodné by bylo i rozšíření funkcí intranetového manažeru o klasické kancelářské aplikace, jako je například posílání zpráv mezi zaměstnanci nebo sdílený kalendář. Intranetový manažer představuje pro takovéto nástroje celkem silnou vývojovou platformu.
1
http://www.vimperk.rohde-schwarz.com
47
Literatura [1] PHP – skriptovací jazyk – dokumentace a referenční příručka – http://www.php.net [2] MySQL – databázový systém – dokumentace a referenční příručka – http://www.mysql.com [3] XAMPP – balíček Apache, MySQL, PHP a Perl – domovská stránka projektu – http://www.apachefriends.org/en/xampp.html [4] mPDF – PHP knihovna pro generování PDF dokumentů z HTML kódu – dokumentace a referenční příručka – http://www.mpdf1.com [5] PDFMerger – PHP knihovna pro práci s PDF dokumenty – dokumentace a referenční příručka – http://pdfmerger.codeplex.com [6] PHPExcel – PHP knihovna pro práci s Excelovými sešity – dokumentace a referenční příručka – http://phpexcel.codeplex.com [7] JSON – datový formát pro výměnu dat – referenční příručka – http://www.json.org [8] jQuery – JS framework – dokumentace a referenční příručka – http://www.jquery.com [9] jQueryUI – JS knihovna pro práci s vizuálními a grafickými komponentami – dokumentace a referenční příručka – http://www.jqueryui.com [10] jHadr – framework pro práci s AJAXem, formuláři a dialogy – dokumentace a referenční příručka – http://premun.qsb.cz/jHadr [11] SlickForms – JS plugin pro vizuální transformaci prvků – dokumentace – http://premun.qsb.cz/app/SlickForms [12] ColorBox – lightboxové řešení pro knihovnu jQuery – dokumentace – http://www.jacklmoore.com/colorbox
48
[13] TableDnD – jQuery plugin pro drag’n’drop práci s tabulkami – dokumentace – www.github.com/isocra/TableDnD [14] TinyMCE – JS WYSIWYG textový editor – dokumentace a referenční příručka – http://www.tinymce.com [15] QuickSand – jQuery plugin pro řazení a filtrování prvků – dokumentace a referenční příručka – http://razorjack.net/quicksand [16] Uploadify – JS/flashový plugin pro upload souborů – dokumentace a referenční příručka – http://www.uploadify.com [17] Bristle Software SQL Tips – hlavní rozdíly v syntaxi MSSQL a Oracle – http://www.bristle.com/Tips/SQL.htm, kapitola 6 [18] MySQL Workbench – vizuální pomůcka pro návrh databází – domovská stránka projektu – http://www.mysql.com/products/workbench/
49
Seznam použitých zkratek AJAX
Asynchronous JavaScript and XML
CSS
Cascading Style Sheets
DTD
Document Type Definition
ERP
Enterprise Resource Planning
GUI
Graphical User Interface
HTML
HyperText Markup Language
HTTP
HyperText Transfer Protocol
HTTPS
HyperText Transfer Protocol Secure
ID
Identifikátor
JS
JavaScript
JSON
JavaScript Object Notation
MES
Manufacturing Execution System
MVC
Model-View-Controller
MySQL
My Structured Query Language
OCI
Oracle Call Interface
ODBC
Open Database Connectivity
OS
Operační systém
PDF
Portable Document Format
PHP
Hypertext Preprocessor
SQL
Structured Query Language
SW
Software
URL
Uniform Resource Locator
WYSIWYG
What You See Is What You Get
XLSX
Excel Microsoft Office Open XML Format Spreadsheet
XML
Extensible Markup Language
50
Přílohy A. Obsah přiloženého CD Přiložené CD obsahuje následující adresáře: • text prace – text práce ve formátu PDF • text src – zdrojové soubory textu práce • referencni prirucka – referenční příručka intranetu • src – zdrojový kód práce (obsahuje i instalační balíček) • modelove soubory – ukázky struktury některých souborů: • build.dtd – DTD schéma hlavního XML souboru MEN archivu • kusovnik.dtd – DTD schéma XML kusovníku MEN návodu • zdrojovy soubor.xlsx – ukázka zdrojového sešitu pro MEN návod • mysql schemata – schémata databází
51
B. Schémata MySQL databází Schémata databází byla vytvořena pomocí MySQL Workbench [18].
Obrázek 8.1: MySQL schéma databáze intranetového manažeru
Obrázek 8.2: MySQL schéma databáze modulu MEN editoru
52
Obrázek 8.3: MySQL schéma databáze modulu MEN prohlížeče
53
Obrázek 8.4: MySQL schéma databáze modulu LPCS
54
Obrázek 8.5: MySQL schéma databáze modulu LPCS, bez detailů 55
Seznam obrázků 4.1 4.2 4.3 4.4 4.5 4.6 4.7
Ukázka kontextové nabídky . . . . . . . . Tvoření výrobního postupu . . . . . . . . Definování opcí produktů . . . . . . . . . . Příklad sekce Výroba“ . . . . . . . . . . . ” Ilustrace ovládacích prvků MEN prohlížeče Ukázka úvodní obrazovky MEN editoru . . Ukázka editace pracovního kroku návodky
. . . . . . .
16 17 18 20 22 23 27
5.1 5.2
Ilustrace rozdělení kódu intranetového manažeru . . . . . . . . . . Ukázka konfigurace skriptů a sekcí modulu . . . . . . . . . . . . .
31 32
6.1
Ukázka systému EZ-MES . . . . . . . . . . . . . . . . . . . . . . .
44
7.1
Graf intenzity práce zaměstnanců . . . . . . . . . . . . . . . . . .
46
8.1 8.2 8.3 8.4 8.5
MySQL MySQL MySQL MySQL MySQL
52 52 53 54 55
schéma schéma schéma schéma schéma
databáze databáze databáze databáze databáze
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
intranetového manažeru . . modulu MEN editoru . . . modulu MEN prohlížeče . . modulu LPCS . . . . . . . modulu LPCS, bez detailů
56
. . . . . . .
. . . . .
. . . . . . .
. . . . .
. . . . . . .
. . . . .
. . . . . . .
. . . . .
. . . . . . .
. . . . .
. . . . . . .
. . . . .
. . . . .