Portál AbcLinuxu, 2. května 2025 05:52
IS si píšeme sami na míru. Začalo to v dávných dobách počáteční slávy FoxPro. Tento jazyk se u nás (ČR) stal velmi oblíbeným, možná proto se o nás říkalo, že jsme FoxLand. Mno nic, začal tedy vývoj na foxpro (klasická dosová verze). Po dlouhé době se přešlo na Visual FoxPro. Z dávných vyprávění starců pamětníků probíhala migrace stylem copy-paste kodů z FP do VFP. Co nefungovalo, to se opravilo/dobastlilo. Migrace trvala několik probdělých dní a nocí, než se za běhu vychytaly ty nejzávažnější mouchy. Tenkrát nebyl MS v moc velké slávě a tak se jako storage použil NetWare(doteď běží) a pro databázový server se použil Oracle. Migrace stylem copy-past platila samozřejmě pro vše, včetně databázové struktury, která se pomalu za běhu napravuje. Tato situace přetrvává do dnes. Jen teda s tím rozdílem, že dnes již není jedno velké sídlo, ale jedno velké sídlo + hafo poboček a centrální oracle databáze neběží na MS Serveru, ale na linuxu.
Máme tedy IS napsaný ve VFP. Klientská app je umístěna na sdíleném disku a uživatelé si jí spouštějí. Komunikace s oraclem jede přes ODBC drivery. Na centrále jsou všechna data, tedy big databáze. Každá pobočka má svůj server se svojí databází. Databáze na pobočce neobsahuje všechny data, ale jen ta, která jsou nutná pro konkrétní pobočku. Všechny databáze se syncují s hlavní db (potřebné tabulky apod.) Z tohoto popisu je jasné, že klientské app na pobočkách jsou jiné. Dříve se psala klientská app pro každou pobočku zvlášť. Dnes se blížíme k tomu, že budou existovat asi jen 3 klientské app (větší pobočky svoje + jedna universální pro zbytek mini poboček).
Dalo by se tedy říci, že jsou pobočky nezávislé na hlavní databázi a tudíž, když padne spojení s pobočkou, tak lidé na pobočce mohou dále pracovat aniž by něco zaznamenali. Samozřejmě jen po určitou dobu (než budou potřebovat aktuálnější data z centrální db)
1) Všichni potřebují všechno z jakéhokoliv místa
Problém je ten, že pomalu chtějí všichni všechno, takže se na ostatních pobočkách objevují klientské app i pro jiné pobočky (vybraní uživatelé mohou přistupovat do jiných poboček). Dále je čím dál tím více potřeba mít aktuální data z více poboček na jednom místě, takže se v klientských app občas najde odkaz na db link směřující do jiné databáze v jiné lokaci. Když tedy v jedné pobočce padne net, tak nemusí něco v nějakém okně klientské app fungovat.
2) Podpora VFP a dokumentace
Dalším problémem je nezdokumentovaný kód IS a podpora VFP je kaput, ač ve Win7 není problém a ve Win8 snad také ještě nebude. Pokud jde o dokumentaci, tak problém se táhl od dob minulých a hektický vývoj a nezažité postupy udělaly svoje. V současné době se to programátoři snaží v jistých oblastech dohánět a počítá se, že s přepisem se vše dohoní.
3) Obezličky ve VFP a 32bit only
Je to starý a nepodporavaný jazyk, není tedy divu, že 64bit podpora není a nebude. Taktéž je na denním pořádku dělat různé obezličky v kódu, nebo občas napsat nějakou utilitu v jiném jazyce a z IS jí volat. Buď kvůli chybě VFP, nebo kvůli tomu, že danou věc nejde jinak udělat.
4) Lokalizace
Hodně poboček v hodně státech vyžaduje nějaký ucelený systém lokalizace, který nyní není a asi by šel už těžko implementovat.
5) Aktualizace klientské app
Mezi další problémy pak patří třeba update klientského programu. Když ho mají uživatelé spuštěný, je třeba je odstřihnout, resp. naplánovat výpadek, páč drží soubory na sdíleném disku. Když nějaký uživatel zapomene ukončit klienta, tak se musí sestřelit atd. Čím více poboček, tím více problémů s aktualizací, obzvláště v případě, kdy je na pobočce více klientů (pro jiné pobočky apod.). Zatím je situace v klidu udržitelná, ale růst naznačuje, že dlouho nebude. Jinak nejhorší update je jádra, tiskové formuláře a další věci, co se často dolaďují, se updatují za běhu, aniž by si toho někdo všiml, jelikož jsou drženi vždy jen chvilkově a né jako hlavní soubory, které jsou drženy nonstop.
6) Oracle client a ODBC
Občas se stane, že něco jde v jedné verzi oracle klienta, něco zase v jiné. Kompatibilita mezi verzemi tedy nic moc, aspoň z pohledu, jak jej využíváme. S Oracle klientem se nesou další data navíc a další věc, co se musí uživateli instalovat a konfigurovat. Toto lze vnímat jako problém, nebo taktéž ne (třeba kvůli tomu, že máme k dispozici image strojů apod., takže netřeba moc řešit).
7) Unit testy
Ano, na nic takového se u nás nehraje, zatím. Osobně jsem kolegovi programátorovi doporučoval, ať aspoň vyzkouší třeba FoxUnit (UnitTesting), ale zatím se netvářil nijak nadšeně. Pro foxku toho moc není. U nového projektu by na aspoň nějaké testování mohl být brán zřetel.
Máte čas na unit testy?
Dotaz: Unit Tests
8) ACL (read/write)
V současnosti na tom nejsme s implementací ACL moc dobře. Nějakým způsobem je u nás ACL implementováno a nějaké věci jsou přímo v kódu.
1) Standalone klient na file share + přímý přístup do Oracle databáze
Nad touto možností se uvažuje nejvíce. Jako funkční příklad lze použít Helios IQ, což je modulární IS, který podporuje všechno možné. Je to klasický klient, který se umístí na sdílený disk a uživatelé si jej odtud spouštějí. Klient přistupuje napřímo do MSSQL databáze pomocí SQL Native Client (SQLNCLI), což nevyžaduje žádnou konfiguraci v systému, jen mít tohoto klienta na každé stanici nainstalovaného.
Řešení by to tedy bylo stejné jako máme nyní, jen by se klientská app přepsala do jiného jazyka, byla by universální pro všechny pobočky. Taktéž by existovala hlavní db, do které by všichni přistupovali, aby se zajistilo to, že budou mít všichni "všechno". Komunikace by nemusela běžet přes ODBC a odpadla by tak jedna nepodstatná drobnost, která je ovšem potěšující. V takovém případě by bylo IS bez diskuse napsáno v C#.
Bezpečnost?
Otázkou je, zda by bylo spojení s oraclem šifrované, nebo nikoli. Protože třeba pro šifrovaný databázový link je vyžadována enterprise licence na oracle + koupě Oracle Advanced Security packu. Oproti holé standard verzi oracle je tedy cena diametrálně rozdílná.
2) Oracle + Aplikační server + REST API/nebo SOAP + klientská app
Další cesta je v podobě centrální db, buď Oracle RAC (nyní na jednom místě provozujeme), nebo nějaký cluster + Aplikační server (taktéž v clusteru), se kterým by komunikovali klienti. Tzn. cesta :
client sw -> REST/SOAP -> APP Server -> Oracle ServerV jobu provozujeme dva minoritní aplikační servery, jeden Glassfish (IDM) a jeden Oracle SOA Suite (tam běží naše mini aplikace pro mobilní terminály s mini klientskou app), takže pomalu oťukáváme.
Dále stojí uvážit nějaký druh cachování na straně klienta (push proxy apod.), komprimace dat apod.
Šifrování je pak sranda díky komunikaci přes https. Nešifrované spojení mezi aplikáčem a db už tolik nepálí (buď by byly obě části na stejném hw, nebo by mezi nimi mohl být šifrovaný tunel).
Výpadky internetu
Tato řešení přináší i nemálo problémů, třeba výpadek internetu/vpn spojení s nějakou pobočkou. V takovém případě je pobočka kaput a nemůže makat. Na druhou stranu, všude je backup lajna, která by se musela trochu poladit (v současné době slouží jen pro servery na pobočkách, né pro klienty). Takže je toto možná jen takový vsugerovaný problém, který neexistuje.
Umístění serverů a výpadek proudu
Dalším problémem by bylo umístění hlavních a záložních serverů. Dle šéfa by bylo nejlepší, kdyby zůstaly na centrále pod našimi křídly, jen by se tam posílila lajna a backup lajna by se dotáhla od jiného ISP. Teď máme všechno tzv. u prdele, kdyby byly servery v housingu, tak v případě hw problémů bude větší časová prodleva řešení. Další problém je, že u nás dokážou servery běžet bez proudu cca 5-6 hodin, což v případě housingu problém není. Také těžko říci, co by vyšlo ve finále levněji.
Duální řešení?
Dalo by se říci, že máme ještě jednu big velkou pobočku v jiném státu. Takže řešení spočívající v tom, že budou dva hlavní servery v různých lokacích + samozřejmě backup server, se kterým se počítá vždy a všude. V takovém případě je ovšem problém v tom, jak syncovat data mezi servery v nějakém rozumném čase, aby mohly být oba "live" a jak na tom pak budou struktury db a konzistence dat :-/. Toto řeší asi jedině Oracle cluster.
Jinak zbývá řešení v podobě big serveru v jedné lokaci, na který by se připojovali všichni + jeden backup server v jiné lokaci, který by měl aktuální data + nějaký rollback (5-15min). Tady je ale problém zase v tom, že překlápění z live na backup a zase zpět nebývá moc sranda a časově to také není zrovna "vteřinka" :-/.
Update a umístění klientské app
Pokud jde o update klientské app, tak mysl svádí mít jednoho klienta na file share serveru, ze kterého ho budou ostatní spouštět. Pokud by byly formuláře a další věci v oddělených souborech jako doposud, tak je to rozumná cesta k tomu, provádět update formulářů a jiných věcí bez výpadků (uživatelé je drží jen na chvilku a tak není problém vyhmátnout správný čas na update).
Kdyby ho měl každý klient u sebe na disku a update by probíhal nějakou automatizovanou formou, kdy uživatel bude informován o aktualizaci klienta, kterou bude muset potvrdit, jinak nepůjde pracovat. Verze klienta by mohla být zakomponována přímo v komunikačním REST API/SOAP, nebo v případě první varianty nějak jinak. Tím by odpadl problém s aktualizací klienta na sdíleném disku a taktéž by odpadl problém s případy, kdy je třeba něco udělat s file share serverem. Na druhou stranu, klient nebude mít pár MiB a kdyby měli všichni uživatelé aktualizovat každou chvíli formuláře apod., tak by to nebylo moc optimální :-/.
Toto by šlo vyřešit tak, že by se formuláře řešily nějak jinak, nebyly by jako nyní v podobě souborů na disku, ale mohly by se třeba nějak dynamicky generovat.
Občas se také vyskytne někdo na pomalé síti, u něhož je dobré mít klienta na lokálním PC, protože spoj k file share serveru je tuze slabý. Takový klient je buď někde na slabé wifině, nebo běží dočasně přes 3G/CDMA apod. V případě updatu se pak musí hlídat i aktualizace u těchto lidí.
Vývoj probíhá stylem : "Potřebujeme tady přidat tohle info a tamhle toto tlačítko. Bylo by to dobré do konce týdne." + K tomu opravy chyb a aktualizuje se tedy docela dost často. Všichni chtějí všechno hned, jak jinak :). Tudíž systém aktualizací nesmí být pro uživatele příliš otravující a pro adminy příliš náočný :).
Dá se říci, že dost věcí by pořešil klientský program formou webového aplikace, ale co svižnost? Možnosti klávesových zkratek a další věc? Lze vůbec udělat dostatečně použitelného klienta?
Rád si poslechnu nějaké návrhy :). Třeba existuje něco, o čem nemám páru.
A jsme u toho :). Jen se tento dotaz vztahuje k řešení č.2, protože u řešení č.1 jsme si řekli, že C# je jasná volba.
V čem tedy napsat klientskou a serverovou část (tou, co by běžela na aplikačním serveru). Jsou jen dvě zmíněné možnosti, tedy java, nebo C#. Pro nic jiného není důvod, protože toto jsou jazyky celkem jednoduché, obsahují hodně frameworků, které ulehčí práci a přechod z VFP by nemusel být tak bolestný, jako kdyby se přecházelo třeba na C++. V týmu máme jednoho javistu, zbytek je VFP, nebo všehochuť. Javista teď ale v javě moc nepíše, spíše píše v C#. Taktéž máme licence na Visual Studio.
Rozebírat, který jazyk je lepší, asi nemá moc smysl. Oba jsou na tom hodně dobře. Otázkou spíše je, co by bylo lepší pro nás? :D. Šéf by rád použil C#, jedním z důvodů je i to, že je to jednoduchý jazyk, nějaké zkušenosti s ním také jsou, licence na Visual Studio také máme (to je ale podle mně irelevantní, páč v tak velkém projektu se cena licencí za VS ztratí jako nic). Pár lidí už v něm u nás i něco napsalo.
Vendor lock-in
Mně se osobně nelíbí, že by u nás vznikl vendor lock-in. Nic jiného, než MS servery a aplikáče nelze použít. Existují nějaký open source aplikáče pro .NET, ale těm bych ani za mák nevěřil, nehledě na potřebu clusterování apod., což v podání MS není moc levné. Naproti tomu, aplikáčů pro javu existuje dost a s některými mám i zkušenosti, je tedy z čeho vybírat a o verze se supportem taktéž není nouze (buď by tedy sw řešení vyšlo na 0,-Kč, nebo něco, u čeho je support). Navíc oracle = java.
Lehkou nevýhodou javy zase může být na straně klientů problém s runtime, kdy .NET se tahá z windows update a od Visty je součástí OS, takže u .NETu odpadají problémy s frameworkem. Ovšem toto je celkem diskutabilní, jelikož reinstalace javy/pročištění systému apod. je otázkou chvilky, zato zažraný .NET, tam když se něco pose**, tak to není příjemné řešit.
Také je na snadě řešení, že serverová část by byla napsaná v javě a klientská v C#, ale to je podle mně hloupost, držet se dvou jazyků. Na druhou stranu jsem mluvil s kolegou javistou a ten říkal, že je to jedno, že jsou ty jazyky stejný.
Již existuje "hotové" řešení?
Narazil jsem i na řešení, kde je serverová část již pořešena (REST api, SOAP služby apod.) a vše je připraveno čistě jen na implementaci, viz třeba : tnaps (je to jen příklad, zmíněný produkt bych spíš viděl pro nějaké menší řešení). Mohl by někdo doporučit, nebo informovat o nějakém podobném řešení? Komerční/nekomerční, java/c#...Vůbec nemám představu, zda třeba něco podobného neposkytuje oracle apod.
Frameworky
S jazykem se táhnou i frameworky, jaký byste doporučili u zmíněnýh jazyků pro zmíněné řešení? Pro javu jsem narazil třeba na Spring, který je tak populární, že byl přepsán pro .NET.
Lokalizace
Jak řešíte u svých app lokalizaci? Nebo jak byste jí řešili a v jaký formě by byla lokalizace uložena?
Počet uživatelů by mohl být řekněme kolem 800.
Velikost centrální db kolem 250GiB.
Formát dat bych přirovnal k objednávkovému systému, kde se pracuje jak s jednotlivými objednávkami, tak se skupinou objednávek a se skupinou skupin objednávek :) + je integrován fakturační systém nad těmito objednávkami, který je propojen se SAPem. Současná práce probíhá stylem : uživatel vybere položku, vyskočí okno, položku zedituje, okno zavře, jiný položku přiřadí do nějaké skupiny, sloučí s jinou položkou apod. V prostředí fungují klávesové zkratky (zkušení uživatelé myš moc nepoužívají) Z tohoto popisu by mohly být trošku patrné případné požadavky na latence.
Předně bych chtěl upozornit diskutující, že nejsem programátor. Sice si občas zahraju na slepovače kódu, ale to je asi tak vše, nemám to rád :).
Taktéž bych nerad, aby to vypadalo, že se u nás za měsíc rozjíždí nový projekt s novým IS, to opravdu ne :D. Tento můj zápisek je spíše takový malý předprůzkum. Co vím, tak možná za rok se začne něco dít, ale je třeba se na to dostatečně připravit a volit vhodné nástroje a řešení. V současné době se volí jazyk a trochu se oťukává. Jelikož šéfovo představa je o C# (a asi i o řešení č.1), tak se nyní oťukává C#. Teamová diskuse na toto téma bude za pár dní.
Takže, jak to vidíte? Má někdo nějaké jiné nápady, se kterými by byl ochoten podělit se? Řešil někdo z vás už podobnou otázku? :).
Děkuji
Tiskni
Sdílej:
Osobně bych šel do javy a Oracle DB (případně Postgresql), bez použití JBoss nebo GlassFish. Případně pro ušetření práce by se dal nějaký "IS" sfouknout v Oracle Application Express...
bezpecnost? jestli to ma vubec smysl na technicke urovni tak sifrovane sql spojeni + prava na sqlPráva na sql nejsou pro spoustu věcí dostatečně jemný nástroj.
A co nějaké méně mastodontní řešení? Ruby+RoR, Python+Django?Výhoda těchto jazyků je spíš v rychlém vývoji a podnikový SW se obvykle moc nemění. takže bych řekl, že to nemá moc smysl.
SAP kvôli účto? Tomu chýba logika...Ani ne. Když máš konsolidovat nadnárodní skupinu, tak nakonec stejně přijdeš na to, že nejlevnější a nejrychlejší je nasadit stejný ERP a v něm pak použít ve všech pobočkách stejné nástroje. Druhá cesta je konsolidovat přes excely nebo nějaké formuláře, které ti pošlou z jednotlivých poboček, ale pak přijdeš na to, že oni tam mají nepravdivé údaje - ať už proto, že nerozumí tomu, co po nich chceš, nebo tam dají nesmysly záměrně. Navíc si to nemáš jak ověřit, protože jejich informačnímu systému nerozumíš a podrobnější data nemáš. Když na ně začneš tlačit, tak CFO odejde ke konkurenci a začínáš znovu od nuly s tím, že tam není nikdo, kdo by uměl aspoň vyplnit ten původní formulář. Za tři roky se stejně naštveš, koupíš globálně nějaký rozumný ERP a konsolidaci ti udělá tvé vlastní IT a nakonec řekneš, "kdybysme to udělali o tři roky dřív, tak jsme mohli být dávno jinde". Navíc při prodeji firmy dokáže nevěrohodný účetní systém hodně srazit cenu a naopak věrohodný ji hodně posílí - toto konkrétně jsem viděl loni, kdy se implementoval ERP čistě proto, aby se dosáhlo vyšší prodejní ceny společnosti. Další věc je, že akcionáři chtějí často nahlížet dovnitř do firmy a když nerozumí systému, tak jsou nespokojeni.
při současných technologických možnostechTak tohle spojeni me pobavilo. To jako ze s casem ty moznosti klesly? Nebo v cem konkretne prinasi tenky webovy klient vyhodu nad tlustym klientem? Neberte to zle. Ja nemam nic proti webovym resenim. Urcite to sve vyhody ma. Jenom nevim, co ma tolik lidi proti tlustym klientum. Prijde mi, ze u tenkeho klienta musite resit veci, ktere u tlusteho neexistuji.
To je také ten důvod, proč to nezadávat jiné firmě, protože ten vývoj je neustálý a v žádném případě není jen udržovací.No, zase pokud potkáte schopné konzultanty, kteří znají best-practice v oboru, tak vám můžou vyházet nesmysly z procesů, nemusíte vynalézat kolo a můžete to firmu zase někam potáhnout. Ale na druhou stranu můžete jenom vy vědět, jak se to má dělat, protože best-practice zatím neexistuje - to je těžko říct, když ani nevíme, co je vlastně za systém...
1) Standalone klient na file share + přímý přístup do Oracle databáze. Jako funkční příklad lze použít Helios IQ…Jestli má být Helios typický představitel kategorie, tak je to viditelný argument proč takový přístup nepoužívat.
Update a umístění klientské app…Celý tenhle "problém" je objevování kola. Civilizované operační systémy mají k tomuto účelu balíčkovací systémy. Dokonce i ty méně civilizované
Java vs. netTo je jako zeptat se jestli chceš být zastřelen nebo oběšen… chci žít v klidu a v pokoji, prezentaci a co největší část business logiky nacpu do nějakého skriptovacího jazyka. Například halasně proponované webové aplikace mají přednost v tom že prezentační vrstvu celkem v klidu vykostíš do nějakých šablon. V C++ bych sáhnul po QML. Určitě se najde něco i pro Javu (přinejhorším jython nebo jruby a k tomu nějaká MVC knihovna). Kromě toho…
Vendor lock-inPřed pár lety bych ještě řekl že Java je jasná věc. Dnes už bych si nebyl tak jistý. Redmond tě sice bude držet na krátkém vodítku (windows, windows, …), ale platící zákazníky se aspoň snaží nesrat přes míru
Větší srajda než jsou Sybasí produkty neexistují.Takova Informatica si s tim nezada.
No a teď přichází Windows 8 a tam je preferovaným jazykem pro vývoj aplikaci C++. Ale asi hlavně pro tu mobilní metro část.Proč by mělo být C++ preferované víc než C#? Je sice pravda, že oproti C++ jsou v C# nějaká omezení navíc, ale to přeci platí i pro vývoj na normální Windows. Například díky GC a podpoře pro asynchronní programování mi přijde C# 5 jako vhodný jazyk pro Metro aplikace.
Kdyby svět fungoval "dle očekávání", tak bych čekal metro celé v .netu, ne?Hlavním důvodem bude asi výkon. Navíc současné řešení (alespoň potenciálně) umožňuje vytvořit projekce i pro jazyky, jenž nevyužívají .NET.
Zatímco .NET je totální bastl bez záruk, který rozumně funguje pouze na Microsoft platfromě.Mono má komerční podporu i na Linuxu.
Ovšem namixované v poměru, že se spíše sčítají nevýhody než výhody.To si nemyslím. Určitá robustnost aplikací je pro mě vyšší prioritou než rychlost (netvrdím, že se to týká každého). A s novými typovými systémy postupně klesá potřeba dynamicky typovaných jazyků.
BTW co jsou to ty "nové typové systémy"?Mám na mysli typové systémy, jenž kombinují různé druhy polymorfismu a je pro ně znám algoritmus typové inference, který s "malou" dopomocí od programátora odvodí typy a vždy skončí.
Síla dynamicky typovaných jazyků leží úplně jinde.Řekněte, kde leží?
Ach jo. .NET byl v první řadě trucpodnik proti Javě.Není to reakce MS na žaloby Sunu ohledně modifikací Javy?
dotnet vznikl až dlouho potomSpor začal 1997 a vyvrcholil 2001. .NET 1.0 byl vydán 2002.
Reakcí na tenhle spor se Sunem bylo že prakticky přes noc ukončili microsfti svojí JavuAno, ukončili vývoj J++, ale s .NETem 1.0 přišel J#, který byl v podstatě následovníkem.
Pohled lidí, kteří zainvestovali velké prachy šité na míru ve Visual J++ na „v podstatě následovníkem“ – tedy napsat to celé znovu a investovat ještě jednou – je odlišný.Právě, že celé znovu to psát typicky nemuseli (podrobnosti jsou v příručce pro upgrade).
Doporučované frameworky?Vybíral bych z galerie NuGetů. Osobně bych se vyhýbal frameworkům, jenž se musí komplikovaně konfigurovat v XML a dal bych přednost konfiguraci v kódu – např. různá mapování lze pěkně nastavovat s pomocí Expression Trees – důvodem je samozřejmě fakt, že typový systém může ochránit před chybami v konfiguraci (ví se, že metoda/vlastnost existuje a má správný typ).
Nejlepší způsob lokalizace? (parsování souboru asi nebude patřit mezi to nejrychlejší)Třeba pomocí .resx souborů?
Jak by měla fungovat aktualizace klientské app?Pokud se aplikace nemá zavřít, tak funkčnost, kterou bude třeba aktualizovat, umístit do zvláštní assembly a tu loadovat do zvláštní AppDomain. Při aktualizaci celou AppDomain zrušit a vytvořit znovu s aktualizovanou verzí assembly. Mezi různými AppDomain se komunikuje pomocí remotingu. S tímhle může pomoci Managed Add-in framework (MAF). Vím, že bohaté zkušenosti s FP měl DAQUAS, zkusil bych se jich zeptat.
Dočetl jsem se, že "Chybějící podpora českého prostředí - není dokončen překladZas na druhou stranu česká lokalizace je jediná, která je vůbec rozpracovaná (IMHO v tom bude mít prsty pověstná česká vyčůranost (ještě znásobená a zkoncentrovaná v průmyslovém odvětví)). Co jsem to tak v rychlosti proletěl, je to práce na některý víkend (maximálně dva).
a moduly nejsou uzpůsobeny pro specifika českého prostřední, Chybějící podpora pro českou legislativu a specifika českého účetnictví.Přesně o tom mluvím. Vyčůraný jak pětikoruna. A aby se to samo stáhlo a implementovalo náhodou nechceš, když už je to všechno i tak zadarmo? IMHO maličkost.Je to stále pravda, nebo už s tím něco uďáli?
IMHO maličkost.No, z pohledu toho, kdo legislativní lokalizaci německého ERP dělal, bych teda neřekl. Ono ani tak nejde o to, že by to bylo nějaké těžké informatické kouzlo. Na lokalizaci je asi nejtěžší vědět, v čem konkrétně daný ERP nepodporuje českou legislativu a upravit to. Představ si, že máš nainstalovaný třeba tady ten OpenERP, umíš ho z programátorského hlediska upravovat, tak se do něj přihlásíš a jdeš jako dělat legislativní lokalizaci. Kam teda půjdeš a co upravíš? Nevěděl bych ani já, i když jsem to dělal na jiném systému, protože zrovna tady tento systém může mít problémy v jiných oblastech, než měl ten jiný, který už jsem dělal. Musíš sestavit tým lidí, kteří mají kvalifikaci v jednotlivých agendách (daně, mzdy, majetek, obecné účto, intrastat, účtování výroby, účtování skladů, inventury, clo atd.) a oni se musí s tím ERP naučit dělat, pak snesou požadavky pro kompatibilitu ERP s legislativou, které se nakódují. Dobré je pak ještě nechat udělat audity systému od třetí strany. Je fakt, že čistě z pohledu IT, který ví, co má dělat, to až tak složité není.
Všechny větší aplikace co znám mají práva ve vlastních tabulích a vynucují je na aplikační úrovni. Obvykle to znamená že všichni uživatelé mají na mašině nastavený BDE / ODBC / JDBC / whatever zdroj s maximálními potřebnými právy. A ano, každý kdo ví kam má koukat si může zařádit podle libosti. :-PJe to smutné, ale je to tak. Je to víceméně kvůli tomu, že aplikace potřebuje často práva na čtení nebo zápis ne podle tabulek DB, ale podle jednotlivých vět nebo polí (sloupců), což AFAIK SQL neřeší. Ono vůbec SQL není pro ERP zrovna ideální jazyk. Řešení s aplikačním serverem je lepší. I kdybych dělal nějakou blbost, dělal bych to přes aplikační server a co nejjednodušší rozšiřitelný protokol - toto rozhodnutí se v delším čase na 100% vyplatí.
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.