Portál AbcLinuxu, 1. května 2025 14:12
Firma amotIQ je výhradním distributorem ERP (enterprise resource planning) systému abas v ČR. Serverová část abas běží na Linuxu a amotIQ jej lokalizuje, přizpůsobuje české legislativě a ladí dle konkrétních přání zákazníků.
V dubnu šla na AbcLinuxu.cz výzva, aby se ozvaly firmy, které používají OSS. Prohodili jsme s Robertem Krátkým několik mailů, ve kterých jsem slíbil, že napíšu dva články, a tím tato aktivita na půl roku ustala, až by si jeden myslel, že šla úplně do ztracena. Ale slip(b)y se mají plnit, zvláště pak o Vánocích, takže se můžete začíst do článku o vynikající spolupráci OSS operačního systému a velké komerční aplikace.
Teď tedy to hlavní - odpověď na otázku, jaký OSS ve firmě používáme. Kromě již obvyklých firemních matadorů, jako jsou Firefox, OpenOffice.org nebo (občas) Gimp je naše firma specifická tím, že prodává a implementuje podnikový řídící systém abas ERP, který je produktem německé firmy Abas AG. Ten má jako primární serverovou platformu právě Linux na různých architekturách (x86, x86_64, IA64 a Power), teprve jako sekundární architektura jsou Windows (o detailech níže).
amotIQ, s. r. o., je výhradním distributorem ERP systému abas v České a Slovenské republice, má zde okolo třiceti aktivních zákazníků - veskrze výrobní podniky malé (s tržbami do 0,5 mld. Kč/rok) a střední (s tržbami do 2 mld. Kč/rok) velikosti. Kromě svého kmenového produktu - abas ERP - dodává amotIQ také systém pro řízení kvality RQM od výrobce Pickert & Partner nebo produkt Corporate Planner, který by se dal zjednodušeně zařadit mezi MIS (manažerský informační systém), ale jeho záběr je mnohem komplexnější než bývá u MIS obvyklé.
Zákazníky amotIQu pravděpodobně znát nebudete, protože to jsou veskrze „neviditelní“ subdodavatelé, proto uvedu spíše jejich výrobky a odběratele, což už by měla být známější jména. Naši zákazníci vyrábí například titanové ojnice pro Porsche, kované díly pro kamiony Scania nebo součástky pro nápravy Opelu/GM, elektrické a elekronické součásti do světel na kamiony, kompletní stroje pro těžbu dřeva, díly do převodovek snad všech značek (Mercedes, Škoda, Toyota, Honda, ...), ale kromě těchto zvučných jmen máme například i zákazníka, který přeprodává spojovací materiál, nebo výrobce vánočního (a jiného) osvětlení zejména pro supermarkety a města.
Já osobně pracuji v amotIQu jako něco mezi konzultantem a programátorem. Původně jsem nastupoval jako „systémový architekt“, což je prakticky vedoucí programátor, později se ale ukázalo, že jsem použitelný i pro konzultační účely, takže mám práci o něco rozmanitější.
Marketingový newspeak by řekl asi něco jako „abas ERP je pokročilý, komplexní a integrovaný podnikový řídící systém s integrovaným finančním a nákladovým účetnictvím“. Přeloženo do normálního jazyka to funguje asi tak, že po založení všech základních dat (zákazníci, dodavatelé, díly, pracoviště, ...) a jejich parametrizaci (který díl má mít jakou skladovou zásobu, který zákazník má mít jakou splatnost) nasypete do systému objednávky zákazníků a systém vypočítá, co máte kdy nakoupit, co máte kdy vyrobit a co k tomu potřebujete (materiály, kapacity), co máte kam poslat a co komu zaplatit a vyfakturovat. Pak nákupčí v systému nakupují, výrobáci vyrábí a hlásí, co vyrobili a co spotřebovali, prodejci prodávají a fakturanti (tedy častěji fakturantky) fakturují. Na pozadí toho všeho běží finanční účetnictví a nákladové účetnictví, což je zjednodušeně řečeno účetnictví uvnitř firmy.
My děláme pro systém českou a slovenskou lokalizaci - tj. překlady a programové úpravy pro soulad s českou a slovenskou legislativou. Pak samozřejmě systém nabízíme a prodáváme a děláme do něj zákaznické úpravy specifické pro každou implementaci. Kromě toho všeho vytváříme v systému funkce, které samotný systém nepokrývá a které se hodí pro více zákazníků - například v současné době pracuji na plánování a řízení údržby vlastních strojů (preventivní prohlídky, opravy, ...).
Linux je primární platformou pro server abasu. Kromě Linuxu jde provozovat server i na Windows, ale má to několik úskalí. Je třeba zakoupit (kromě Windows serveru) MKS Toolkit (navíc licence toolkitu vyžaduje poplatek i za každého klienta), což je prakticky produkt velmi podobný Cygwinu, jenom placený a komerční. Po zkušenostech nemáme MKS toolkit moc rádi, protože v něm číhají lahůdky jako korn shell nebo prehistorický bash (ani jeden nemá např. použitelnou historii příkazů), jako terminál slouží terminál Windows (zkuste si v cmd copy - paste, opravdu lahůdka) a administrativní zásahy (reorganizace databáze, přegenerování obrazovek, kopie databáze, ...) jsou oproti „nativní“ linuxové verzi asi čtyřikrát pomalejší. Když si připočteme další parádičky Windows (nutnost přihlašovat se na Windows terminal server, např.), vychází z toho, že pokud má někdo z nás provádět něco na Windows instalacích, už předem nám z toho naskakuje husí kůže. Ale nesmíme to říkat moc nahlas, přece jenom jsou Windows oficiálně podporovaná platforma a pro práci v systému samotném nehraje platforma serveru žádnou roli.
Linuxová verze serveru je oproti Windows verzi mnohem více „admin friendly“. Z distribucí je podporovaný, kromě obou hlavních enterprise - tedy RHEL i SLES, ještě Debian. Dříve jsme prodávali k abasu RHEL, ale můžu říct, že ani Red Hat, ani SUSE to nemají lehké. Linux je prostě v povědomí zákazníků „ten systém zdarma“ a pokud za něj mají platit cca 10 000 Kč ročně, je jim to nějak divné. Abychom předešli těmto diskusím, přešli jsme pozvolna pro nové instalace na Debian.
Co se týká klienta abasu, je situace oproti serveru obrácená. Klient je nativní Windows aplikace, ale je oficiálně podporován běh klienta pod Wine. Abas AG dokonce poskytuje optimalizovanou verzi Wine pro spuštění klienta. Abych pravdu řekl, žádný z našich zákazníků Linux na stanicích nepoužívá, linuxového klienta jsme rozbíhali pouze jednou přímo z freeNX instalovaného na serveru abasu. Fungoval.
Čeho si ale na abasu při své každodenní práci cením nejvíce, není jenom „běží pod Linuxem“, ale zejména „linuxový feel“ celého systému. Posuďte sami z několika aspektů:
abas má dodnes funkční textové (aka „ncurses“) rozhraní. Přihlásíte se na server pomocí ssh a můžete si spustit textového klienta. Pravda, dnes už se nevyužívá a oproti GUI má některá omezení, ale jednoúčelové použití někde ve výrobě je stále možné.
abas má síťový textový komunikační protokol nazvaný EDP. Session se podobá naříklad komunikaci s SMTP serverem. Já napíšu login a heslo, systém mi odpoví, pak zadám příkaz, systém jej provede a zahlásí „OK“ nebo „chyba“. Pomocí EDP můžete se serverem komunikovat stejně jako přes GUI. Napsal jsem několik programů v Perlu, které to využívaly pro různé interaktivní akce, při kterých je potřeba odezva od systému a na základě ní se pak program nějak zachová.
Programy abasu jsou uložené na disku v souborech. Jde na to nasadit git, subversion, jdou kopírovat, symlinkovat, upravovat přes ssh a vim, zálohovat, cokoli se dá dělat se souborem.
Tisky jsou řešeny přes lpr, popřípadě (dnes ve většině případů) se pomocí jasper reports generují PDF soubory, které se podhodí klientu. Každopádně transformace proběhne na serveru.
Otevřené okno v klientu = proces na serveru vyvolaný přes inetd/xinetd. Dá se na něj dát kill, dá se na něj pustit "strace", automaticky se tak balancuje zátěž na serveru, dá se pomocí toho škálovat do clusteru. Navíc tak jde systém spouštět vzdáleně bez potřeby vzdálené plochy, stačí zkopírovat binárky klienta.
Kolik oken máš, tolikrát jsi procesem
abas ERP je zkrátka pěkným důkazem toho, jak může prorůstat OSS a jeho myšlenky do komerční sféry. Taky je příjemné vidět, že mezi výrobci ERP systémů nejsou jenom ti, kdo Linux nikdy nebudou podporovat už z principu (Microsoft Dynamics), popřípadě kteří jsou na Microsoftu technologicky závislí (QI/Helios, ...), ale že jsou i firmy linuxové řešení aktivně podporující (SAP nebo abas).
protoze pisete, ze jste slibil 2 clanky, ocekaval bych pokracovani (nejsem si ale )jist, zda bude. Pro jistotu, ze kdyz uz pokracovani nebude, nekolik bodu, ktere (kdyz uz se zde takova problematika popisuje) by me (a mozna par ostatnich) zajimaly:
System:
Filozofie
klient
upravy aplikace:
jakou databazi/e pouziva abas a je zde nejaka zvlastnostAbas používá vlastní databázi, která se jmenuje "ekslogdb". Specifická je tím, že není SQL a je "objektová". Určitě se k ní dostanu v příštím článku.
replikace, read-only server pro reports, listings, screensReplikace na druhý server / cluster může běžet na pozadí. Druhou možností je, že abas umí "zastavit zápis do databáze" (všechny změny od klientů se dějí do paměti a klienti se nic nedoví), pak se dá databáze "ukradnout" (cp, tar, rsync, cokoli je libo...) a znovu spustit zápis. Tím se dá vytvořit záložní read-only server, ale popravdě pro různé OLAP využíváme spíš vypumpování dat do MySQL / MSSQL / whatever, protože databáze je nestandardní.
sprava background procedur, fronta vyrizenych uloh, pokracovani v ulozePopravdě se to moc nepoužívá, protože celý systém je navržený tak, aby všechno probíhalo okamžitě - třeba MRP běh je "net-change", takže trvá pár sekund. Jinak se ale dají spouštět úlohy přes interní spooler nebo přes cron. Využíváme to pro EDI, které má pak ale vlastní prostředí v GUI, kde jde vidět, co se zpracovalo a co zůstalo někde ležet.
fax z aplikace (poptavka primo na fax, mail)Mail ano, fax přes řešení třetí strany - systém vysype PDFko, k tomu je v podstatě známé telefonní číslo a obojí je potřeba někam nacpat.
podpora telefonie (volit tel.c. z aplikace, zobrazeni zakaznickych udaju pri prichozim hovoru)Volání z aplikace ano, zobrazení zákaznických údajů primitivně přes DDE (= Windows).
testovaci systemy,Jako jestli je možné mít oddělenou databázi pro testování? Ano.
sber osobnich/provoznich dat (integrovan?, jake terminaly, mozno pouzit PC)PC použít možno, ale je potřeba licence. Pro tyto jednorázové účely jsou licence samozřejmě za speciální ceny. Nicméně pořád je potřeba Linux nebo Windows na terminálu, což je omezující. Proto používáme občas řešení třetích stran, které mají terminály třeba jenom s dvouřádkovým ascii displayem a klávesnicí.
dilensky monitoringCo vejde do systému ve zpětných hlášeních, to se tam samozřejmě zobrazí.
podpora v expedici (termotiskarny pro stitky), dokumentace pro zakazku/jednotlive dily, kompletace instrukcnich podkladu/navodu k pouziti orientovanch na zakazku/dilVše podporováno, ale je to potřeba chápat tak, že něco je standard a zrovna v expediční dokumentaci se (pokud to není VDA) vždycky dělá na přání zákazníka.
sprava helpu na firemni , aplikacni uzivatelske urovniHelp je aplikační (od výrobce / distributora) a dá se doplnit o vlastní (=firemní). Uživatelský není, ale dá se to řešit pomocí abas portálu, který se umí integrovat do GUI.
podpora PDA. mobile apodPřímá podpora (nativní klient) není, ale dá se pracovat přes abas eB (webové rozhraní).
vicejazycne aplikace, omezeniVícejazyčnost je základní vlastností, jsou jazyky, ve kterých se dá přihlásit do GUI a jazyky korespondenční - těch bývá typicky víc. GUI tak může být CZ / EN / DE a korespondence pak běží například ještě v Polštině, Ruštině, Francouzštině. Zapnutí jazyků je v podstatě otázkou zatržení políčka v konfiguraci. Omezení je v tom, že základním jazykem je Němčina a zbytek vzniká vlastně překladem. My to často "obcházíme" tím, že texty vkládáme rovnou česky, ty se v systému tváří jako německé a pokud pro dané věty neexistují překlady, použijí se německé (=naše) ve všech jazycích.
podpora mandantu, vicefirmeni spoluprace (jeden nakupci pro vice firem)Pro toto se využívá EDI a funkcionalita zvaná multisite. V podstatě neexistuje jeden hlavní systém a několik "slave" (pokud se to takto nenakonfiguruje), nebo že by se všichni hlásili k jedné jediné databázi, ale vše je peer-to-peer a jednotlivé servery si vyměňují informace podle konfigurace EDI. Jeden nákupčí má tedy typicky svou vlastní instalaci a s ostatními si vyměňuje EDI zprávy. Pokud navíc běží více abas serverů na jednom fyzickém hardware, mohou si navzájem sdílet licence - tzn. pool licencí je společný a všichni si z něj půjčují.
jak je resen dilensky monitoringNo, to je hodně široká otázka - v podstatě každé pracoviště má frontu práce a bere si z ní, vždycky je vidět, co má dělat a co udělal (ze zpětných hlášení). Pohledy jsou v podstatě dva - jeden na úrovni výrobních příkazů a jeden na úrovni operací (pracovních kroků) samotných.
jaka filozofie se skryva za planovanim vyrobyZákladem je prakticky klasické MRP II s net-change (takže běží rychle, typicky jenom několik sekund). Pak se v tom dá různě vrtat - posouvat celé výrobní příkazy nebo jenom operace, fixovat, měnit množství.
reseni pristupovych prav (databaze , aplikacni server)Přístupová práva řeší aplikační server, pro samotná práva se vytvoří šablony a ty se přidělí uživatelům. Fajn je, že jsou rozdělené databázové tabulky a pak ještě příkazy. Třeba příkaz "běh MRP" zasahuje do hodně tabulek, ale protože se nastavují práva na příkaz, není potřeba řešit to ještě na tabulkách. Pro různý "fine-tuning" se pak použijí programy pověšené na "maskein" event.
jakym stylem se deklaruje vzhled klienta a jak je svazan s datyPro GUI klienta je to textovým konfiguračním souborem - je v něm IP serveru a port, umístění samba share (nebo nfs cesta) a barvy + loga.
jak se definuje vzhled formularuExistuje grafický návrhář, který "vyplivne" XML, ale my staromilci používáme mnohem raději textový soubor, do kterého se napíše, kam se má které pole umístit. Dynamická změna formuláře za běhu pak už není možná.
jak se definuje/programuje logika, ktera 'plni' formulareNo, jsou v podstatě dva typy formulářů - formuláře nad daty (například nad objektem "dodavatel") a ty plní systém sám + pole, u kterých to aplikační server dovolí, se dají ještě změnit / naplnit programem. Pak jsou tzv. "infosystémy", což by se dalo přeložit jako interaktivní report. U toho člověk začíná "na čistém stole", nejprve si zadefinuje proměnné, pak je rozmístí na formuláři (nebo to nechá udělat systém automaticky a pak do nich nahraje data programem odkudkoli ze systému.
jak jsou administrovany tiskarny (jak svazane s uzivatelem, oddelenim, aplikaci)Tiskárny jsou veskrze systémové a lokální. Systémové tiskárny se administrují přes lpd (popř. cokoli kompatibilního - třeba cups), o lokální tiskárny se systém nestará, protože vyplivne uživateli PDF, které se typicky otevře v PDF prohlížeči a odtud jej uživatel vytiskne. Systémové tiskárny jde svázat s konkrétním reportem (např. výrobní příkaz vždycky vyjede ve výrobě), popřípadě se vazba k čemukoli dá dělat primitivně programem ve stylu if oddělení = kontrola then tiskárna = hplj16 a rovnou tiskni.
co je s GDI/nonGDI tiskarnami, ktere visi primo na pracovnich stanicichStanice dostane PDF, to si pak může tisknout, mailovat, uložit, co se jí líbí.
je pri provozu tiskaren pres lpr mozno vyuzivat specifickych tiskarenskych funcki (duplex,A3.)Ano, řešili jsme to pomocí nadefinování více tiskáren v CUPS a tiskárnám jsme přidali "banner před" a "banner po", kde byly esc sekvence pro nastavení. Tak třeba normální výrobní příkaz vyjede na normální papír a spěšný na červený z jiného zásobníku. Jinak je nějaké nastavení i v systému, ale měnit to pro každý tisk...
jak je resena velikost masek v klientu (zmena velikosti, font, fixace velikosti pro uzivatele)Popravdě řečeno nijak. Pokud si uživatel nastaví font tak veliký, že se mu maska nevejde na obrazovku, tak má holt smůlu. Jo, a dají se připravit speciální masky pro malé obrazovky.
automatizace v klientu (zapnuti preddefinovynach masek na urcitem miste obrazovky)To je otázka WM, na to abas nesahá. V Linuxu se s tím dá hrát, ve Windows je to tuším tak, že maska se otevře stejně veliká, jako byla naposledy a na stejné místo.
jak je podporovan multimonitor provoz (popup na druhe obrazovce?)
multiwindow funkcionalita nebo pouze jedna maska v jednom okamziku)Multiwindow, vždy. abas je vlastně takový Gimp.
jak je odlisen v klientu testovaci system od produktivnihoTypicky barvou - testovací bývá žlutý a oranžový, "ostrý" necháváme v původní "abas" zelené, nebo jaká to je. + ještě logo.
jak jsou realizovany graficka znazorneni udaju (kapacity, spotreby)Prostředí umí grafy. Mohl jsem dát nějaký do screenshotu, příště se polepším.
jak je v klientu resena problematika pristupovych prav v situacich, kdy pristupova prava zavisi na konkretnim stavu dat (napr. pri zobrazeni dat je jiz jasne, ze nemohou byt zmenena)Programem na eventu "maskein".
prebirani dat z excelu/jinych kancelarskych aplikaci na strabne klientaPřes script "edpimport.sh". O něm napíšu v příštím článku.
editacni moznosti pro nabidkove texty (formatovani, vzhled)Je možnost editace formuláře výtisku (JasperReports), ale jednotlivé pole bude vždy stejným fontem. Šlo by asi embeddovat nějaké PDF, ale popravdě jsem to nikdy neřešil.
integrace vykresove dokumentace (cad viewer)Externí a není problém. (Ani trávník sekat neumí, ale slibují v příští verzi.
podpora konstrukce, svazanost s cad, napr. moznosti blokovani skladu/produkce pri konstrukcnich zmenachTo se musí řešit hlavně organizačně. V principu je na dílu flag, jestli jde použít nebo ne, ale říct, že to řeší tento problém, by bylo příliš sprosté zjednodušení.
uzivatelske menuJe. Je uživatelské, několik administrátorem přidělených + základní, každé jde upravit (kromě základního), zakázat nebo povolit u uživatele...
jak se programuji dodatecne business-funkce (jazyk, podpurne prostredi, moznosti koncoveho uzivatele)Na to bych se podíval v příštím článku.
programovani a uprava reportuJasperReports, popřípadě pak tisk do "Excelu", OOo apod. Ale nic zvláštního.
uprava clientaPřiznám se, že moc nerozumím otázce, ale na hlavní metody se podívám příště. No, tak se dívám, že by to mohli vydat jako další článek.
vylepsena souborova databaze (neni to SQL) .. jake problemy jsou s tou databazi ? 1- pada 2- k datum je mozno pristouput pouze pres abas-aplikaci 3- neexistuje export do nejakeho standardniho formatu 4- neexistuje ODBC driver pro windows 5- neexistuje ODBC driver pro uunix 6- neexistuje zadny interpretacni jazyk (perl, python, ..) pres ktery je mozno manipulovat data 7- je pomala
1 - ne
2 - standardne ano
3 - to co si pracne vyfiltrujete (a filtrace je opravdu "zahul") muzete zkopirovat do Excelu,OO.org
4 a 5 - existuje, ale radeji se neptejte za kolik
6 - myslim ze ne
7 - ano velmi
1 - Souhlas
2 - Nesouhlas. Můžete (kromě GUI) přímo přes EDP protokol, přes edpexport.sh a edpinfosys.sh (export do CSV, XML, textu...), dále přes eB, nebo portal. My dodáváme navíc naše vlastní rozhraní do různých DB - MySQL, Postgresql, MSSQL, cokoli existuje DBI pro Perl.
3 - "ručně" jak píše OndraZX, pak XML, CSV, do dalších DB.
4 - Existuje, prodává se zvlášť za cenu jedné licence.
5 - AFAIK neexistuje
6 - Standardně mají knihovny Java (JEDP) a Python (PyEDP), dále pak cokoli dalšího - EDP protokol je textový a samotný je primitivní, píšu pro něj programy v Perlu. Vše je popsané v přímo v helpu. Pomocí edpimport.sh je pak možno velmi primitivně manipulovat daty třeba i z bashe.
7 - To je sice velmi kategorické tvrzení, ale bohužel neobsahuje moc faktických informací. Mám tady server s netBurst Xeonem, někde okolo 2,6GHz (=vykopávka). Pokud se databází prochází podle indexu, je rychlá - řekl bych - "normálně" - odezvy jsou prakticky neměřitelné. Pokud se neprochází podle indexu, pak projít nějakých 20000 záznamů trvá asi 1s (měřeno stopkami).
Celkově je systém svižný, dokud nedáte vypsat velké množství řádků na obrazovku - ale to není o rychlosti databáze, ale samotného GUI, které na toto - pravda - není moc stavěné. GUI zobrazuje (při tady tom mém testu) přibližně 500 řádků za sekundu, tzn. zobrazení faktury o 1000 řádcích trvá přibližně 2s. No, pokud má někdo přístup k jinému ERP, může zkusit, jak na tom je.
Nicméně to jsou všechno věci, které jdou jednoduše řešit konzultacemi a doškolením.To jste presne vystihl - uzivatel se potrebuje Abas opravdu naucit - ale dle meho nazoru se aplikace s dnesni dobe chovaji jinym zpusobem - jsou proste uzivatelsky mnohem privetivejsi - a to skolenim nezmenim
Databáze interně funguje v "eks" kódování, ale externě jde komunikovat mimo jiné pomocí UTF-8, plus spousta dalších, je to jenom o nastaveníNejen datatabaze, masky, FOPy, ale i administratorska (root) konzole (v dobe minule i textovy klient) bezi v tomto kodovani - resi se to "berlickou" pomoci Putty s doplnenym "eks" kodovanim, pokud se neco zmenilo rad se poucim.
Bodům s nekompatibilitou moc nerozumím - nekompatibilita s čím?Potrebuji vytahovat automaticky data z databaze - krome predrazeneho ODBC rozhrani nic jineho nenabizite. V dnesni dobe takove systemy bezi logicky na SQL standardu.
Co se týká lokalizace - používáte slovníky od abas AG, nebo amotIQu?Amotiq - my jsme treba resili "Artikl" vs. "Zbozi" - v jednom dialogu byl prvni vyraz v jinem druhy. Je pravda ze mame customizace, kde se to vice projevuje.
To zni jak starsi implementace nikym nepodporovana.Implementovano v roce 2008 Amotiqem
zkusenosti s tim nemam, ale neda mi to nezminit ERP5
moznost stahnout Mandriva balicky - menu Community
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.