Klientské zadání požadovalo možnost tvorby vlastních formulářů pro jednotlivé typy položek. Díky nim budou moci uživatelé uvádět u odlišných projektů různé parametry nebo u jednotlivých skupin kontaktů evidovat odlišné údaje. Jak přetavil vývojář Jan Spilka tento brief do finálního technického řešení?
Jan Spilka
V čem spočívá nová funkce Layout by Type představená v rámci nejnovější verze eWay-CRM označené 5.4?
Už v předchozích verzích programu jsme nabízeli funkci návrháře formulářů. Uživatel si s jeho pomocí může sám navrhnout, jak má vypadat okno určité položky, například projektu. Aktuální verze jde ještě o krok dál a umožňuje nastylovat si vlastní obrazovku pro každý konkrétní typ položky.
Jak konkrétně se dá nová funkce využít?
Představme si třeba firmu, která dodává traktory. Vytvoří si proto projekt typu Dodávka traktoru. V jeho rámci potřebuje evidovat určité parametry. Může to být sériové číslo, jednotlivé komponenty, kdy byl přístroj uveden do provozu nebo třeba konec záruční lhůty. Pokud ale zároveň nabízí i servis, připraví si jiný typ projektu nazvaný Servis traktoru. S jeho pomocí pak bude evidovat zcela odlišné parametry. A když pak v praxi uživatel změní typ projektu, celý formulář se automaticky přeskládá, aby odpovídal danému typu činnosti.
Které moduly tuto funkci nabízejí?
Tuto možnost nabízí všechny moduly, umožňujících práci s Typem, jako jsou Projekty, Příležitosti, Doklady a další. Políčko Typ jsme dokonce dodali i do modulů Společnosti, Kontakty a Produkty. V nové verzi tak mohou být nadefinované různé typy společností, třeba Dodavatel a Zákazník. A opět je možné pro každou z nich vyladit příslušné okno do nejmenších detailů.
Customizace vybraného formuláře.
Maximální možná personalizace je obecně trendem. Vyžadují ji i klienti CRM systémů?
Když jsme připravovali původní funkci, tedy zmiňovaný návrhář formulářů, také nás podobná otázka napadla (směje se…). Ukázalo se ale, že přesně to naši klienti chtějí. Chtějí si prostě eWay-CRM vyšperkovat, aby se jim s ní co nejlépe pracovalo.
Jak nová funkce vznikala?
Jako vývojář dostanu příslušné zadání. Obvykle ho připraví náš ředitel ve spolupráci s obchodníky a projektovými manažery. Ti jsou v neustálém styku s klienty a mají perfektní přehled o jejich potřebách. Následně přemýšlíme nad tím, jak zadání co nejlépe zrealizovat.
Co zabralo nejvíc práce?
Dlouho jsme například analyzovali, jak uživatelům srozumitelně prezentovat mapování návrhu formuláře pro daný typ položky. Na jedné straně figuruje výpis všech typů a na druhé výpis všech nadefinovaných formulářů. My potřebovali znázornit jejich vzájemné propojení, umožňující uživateli nejen měnit jejich vzhled. Zároveň bylo potřeba zajistit, aby se po kliknutí na daný formulář aplikovala provedená změna na všechny typy položek.
Jaké jste zvolili řešení?
Nabízíme dvě možnosti zobrazení. Tou první je jednoduchý, tzv. simple mode, kdy má uživatel na výběr pouze dvě možnosti. Zvolený návrh může aplikovat buď na všechny položky, nebo pouze pro typ položky, kterou má právě zobrazenou.
Jednoduché, tzv. simple zobrazení.
Druhou možností je rozšířené zobrazení. V jeho rámci je možné rozkliknout seznam typů, na které chce uživatel vybraný návrh aplikovat. Uživatel může ale zvolit i možnost souhrnné editace. Pak se mu zobrazí výpis jednotlivých vzhledů formuláře a k nim existující matice jednotlivých typů.
Rozšířené zobrazení s různými typy formulářů.
Tuto matici si představuji jako excelovou tabulku. Řádek pak obsahuje typy a sloupec formuláře?
De facto ano. Na ose Y se nachází návrhy formuláře a na ose X typy. Samotná buňka pak znamená hodnotu ano nebo ne. Díky ní si mohou uživatelé navolit vzhled vybraných formulářů pro dané typy položky. Tímto způsobem jsme podstatně zlepšili uživatelskou přívětivost této funkcionality.
V původním zadání ale tyto dvě varianty zobrazení požadovány nebyly…
Protože se počítalo pouze s pokročilým zobrazením. Až kolega vývojář nám poradil dodělat i jednodušší variantu. Díky tomu, že má na starosti vývoj eWay-CRM pro mobilní zařízení, je pro něj taková koncepce samozřejmostí. Mobilní aplikace obvykle jako primární nabízí jednoduché zobrazení. Až když potřebuješ něco složitějšího, použiješ tlačítko pro pokročilejší nastavení. Je bezvadné, že se díky společnému cíli můžeme navzájem takto ovlivňovat.
Jak složité bylo tabulku pro matici vytvořit? Kliknutí na řádek asi bude mít dopad i na další řádky…
Systém neustále kontroluje zadaná pravidla. Pokud uživatel vybere konkrétní pohled pro jeden typ, automaticky se zruší vazba na původní typ, ze kterého uživatel vycházel. Vzhled nastavený jako výchozí se aplikuje na všechny typy. Když potřebuje uživatel u daného typu použít jiný vzhled, musí se tato hodnota vyškrtnout. A když vyškrtám všechny typově nadefinované vzhledy, aplikuje se znovu původní vzhled.
Kde se vytvořené formuláře ukládají a v jaké formě?
Ukládají se přímo do databáze eWay-CRM v podobě xml struktury. Díky tomu se pak návrhy formulářů synchronizují mezi jednotlivými uživateli. Ti jsou navíc odlišeni podle přístupových práv uživatele.
Může si uživatel nadefinovat nekonečné množství formulářů?
Teoreticky ano.
Mají customizované formuláře omezený počet polí?
Teoreticky ne. Ale s větším množstvím políček se samozřejmě zpomaluje načítání okna, protože je nutné vykreslit víc prvků. Zrovna minulý týden jsme publikovali sadu doporučení, jak dosáhnout rychlejšího načítání dialogových oken.
Jak probíhal vývoj nové funkcionality? Nadefinoval jsi různé scénáře využití a zkoušel je?
Už původní zadání obsahovalo několik možných scénářů. Během analýzy, která předchází samotnému vývoji, se jich snažím co nejvíce pokrýt. Přesto se ale některé scénáře podaří odhalit až při následném vývoji nebo testování.
Možné scénáře testujete s každou novou verzí eWay-CRM? Není takový přístup příliš časově náročný?
Ne, tímto způsobem nepostupujeme. Pro tyto účely využíváme tzv. „unit testy“. Jedná se o malé kousky kódu, které testují hlavní zdrojový kód. Unit testy se spouští automaticky každou noc a také po každém buildu nebo revizi. Díky nim se hned ráno dozvím, jestli se mi včera nepovedlo rozbít kód v úplně jiné části aplikace (proces testování podrobněji popisuje technický ředitel Roman Štefko).
Nakolik pokrývají automatické testy funkcionalitu celého systému?
Nově navrženou funkci Layout by Type pokrývají víceméně celou. Pracují podle nadefinovaných scénářů. Ty mě buď napadly nebo jsme na ně přišly během testování a reálného provozu v rámci firmy. Pokud jde o eWay-CRM jako celek, tak automatické testy pokrývají okolo padesáti procent jeho kódu.
Ukázka pokrytí kódu unit testy v systému eWay-CRM.
Ale i když připravíš novou funkci a nastavíš unit testy, může dojít k chybě uživatelského rázu. Tu automatické testy odhalit neumí…
Takový bug odhalí naši testeři. Já ho následně opravím a přidám odpovídající sadu unit testů. Tímto způsobem se také neustále zvyšuje spolehlivost celého našeho systému.
Už se k tobě donesly nějaké uživatelské ohlasy?
Od vydání aktualizace zatím uběhly jen dva týdny, což je ještě krátká doba. Pár pochvalných e-mailů už mi ale kluci přeposlali, takže super (směje se...).
Přečtěte si předchozí rozhovor s Honzou Spilkou nejen o vývoji kódů pro eWay-CRM.