Jak se nepíše webová služba

Dostal jsem nabídku na udělání portálu pro zjišťování insolvence jak osob tak firem.
Úloha by se to zdála celkem snadná po tom co jsem zjistil, že existuje webová služba ISIR.
Aniž by člověk musel být analyticky zdatný, tak hned čeká, že pod touto webovou službou budou existovat například metody getPerson(rodne_cislo) a getCompany(IC) a jejich návratová hodnota bude TRUE/FALSE podle toho zda daný subjekt v insolvenci je nebo není.
Po seznámení se se službou končí logika na tom, že webová služba má dvě metody. Ale nejmenují se getPerson(rodne_cislo) a getCompany(IC), ale neočekávaně getIsirPub0012(long_1) a getIsirPub001(Calendar_1). Tady je otázka, zda daná firma, která tuto službu ministerstvu dodala měla tak nízký rozpočet, že si nemohla dovolit tyto metody ani smysluplně pojmenovat o argumentech raději nemluvě.
Ale tady absurdita teprve začíná…
Dále je třeba se zabývat co vlastně tyto metody poskytují. První zmiňovaná (getIsirPub0012(long_1)) vrátí maximálně 1000 záznamů (co je v tomto případě záznam napíšu později) s ID větším nebo rovno než je parametr long_1. Než začnete přemýšlet k čemu to může sloužit, tak si počkejte na vysvětlení co je vlastně obsahem záznamu. Ale než toto objasním tak ještě vysvětlím druhou metodu. Druhá metoda (getIsirPub001(Calendar_1)) očekává parametr datum ve formátu 2011-11-24T00:00:00.000Z a vrací maximálně 1000 záznamů vzniklých po tomto čase. Hmm…

A teď velké objasnění co je vlastně obsahem záznamu. Záznam je jen „doklad“ o změně stavu. Takže pokud se těchto záznamů během celého soudního řízení vytvoří 100, tak musím zpracovávat 100 nedůležitých záznamů abych čekal na ten poslední a věděl jestli daný subjekt je v insolvenci a nebo není.

Pokud to zatím z textu nevyplývá, tak je třeba zmínit, že není možné jednoduše zjistit zda subjekt XY v insolvenci je a nebo není. Jediný způsob je si stáhnout kompletní databázi a následně to vyhledat až v ní. V databázi je ke dnešku přes 3.000.000 záznamů.

A jen perličkou na konec uzavřu toto povídání zmínkou o dokumentaci. Poslední aktualizace (k mému údivu) byla zrovna dneska, kde přibyl graf přechodů mezi stavy a informace o připojení. Graf je dost nepřehledný, ale ten vychází z procesu a lepší něco než nic. Informace o připojení mi přijde jako věc, která tu snad musela být od začátku (?!?), tak proč se v dokumentu objevila až po čtyřech letech a ještě s jednou zásadní chybou (viz obrázek).
ISIR připojení k webové službě

To jako fakt někdo myslí vážně, že takto má fungovat nějaká webová služba?

8 komentářů u „Jak se nepíše webová služba

  1. IvanR

    Mám stejně tristní zkušenost. „Webová služba ISIR“ je naprosto ostudná prasárna, vytvořená tak diletantsky, že se nevyplatí si s tím nic začínat. Sám s tím pracuju cca 3 roky pro účely privátní aplikace a generuje to jenom problémy a nekonzistentní data. Každému, kdo uvažuje o tom tenhle paskvil nějak použít bych rád doporučil jediné – nedělat to a najít si místo toho jiný projekt.

  2. martin

    Nahlížejte na to pohledem, že každý den musíte těch osob zkontrolovat 100.000 (každá větší firma) nebo třeba milion (např. mobilní operátor). Pak má stahování kompletní databáze obrovský smysl!

    1. Jan Kocmánek Autor příspěvku

      Takže je lepší, aby si desítky (stovky, tisíce) subjektů stahovaly statisíce záznamů denně, které nepotřebují, než aby služba poskytovala opravdu jen to co někdo potřebuje?

    1. Jan Kocmánek Autor příspěvku

      Tak z principu služby je asi jasné ne? V CRONu načítám po nějakých blocích, které zpracovávám. Další CRON zjistí, kde ten minulý skončil a načte další kus, …

      Samozřejmě je třeba kolem řešit spousty drobností, které nastávají… Změny specifikací XML za běhu, … Ale to už je KNOW HOW…

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna.

Tato stránka používá Akismet k omezení spamu. Podívejte se, jak vaše data z komentářů zpracováváme..