Setkání FlexiBee vývojářů Jak jsme psali eshop
Ing. Tomáš Hruška, Aleš Woska Červen 2012
ARIT s.r.o. - na trhu již od roku 1996
Tým profesionálů, které práce baví
ARIT - silný partner pro FlexiBee
distributor a certifikovaný partner FlexiBee
instalace v celé ČR
zkušenosti se zaváděním a správou mnoha informačních systémů
systémový integrátor
certifikace RHCE
komplexní škála řešení
široké portfolio zákazníků
možnost zákaznických úprav
Projekty pro FlexiBee pomocí REST API FlexiShop – 2010, dnes v. 1.6 FlexiServis - 2010, dnes v. 1.8 Připojení proprietáních shopů GPS Tracking – kniha jízd Docházkový systém
E-Shop
SYNCHRO WWW
DB
DB
FlexiShop – základní návrh
přímá komunikace s FlexiBee → automatická fakturace, sklad, pokladny, účty, kontakty, … konzistence dat → není třeba uchovávat na jednom místě data vhodná pro zákazníky a na druhém místě uchovávat privátní data firmy, nerozcházejí se hodnoty dokumentace práce s FlexiBee - http://www.flexibee.eu/api/doc/navody/ ukazka-v-php/ komunikace s FlexiBee přes REST API → univerzální přístup přes HTTPS, zabezpečený a dobře průchozí protokol vyvíjeno nad redakčním systémem CMS Made Simple → pro nás známé prostředí, robustnost, modifikovatelnost, snadná ovladatelnost a škálovatelnost
FlexiShop
REST API WWW
DB
FlexiShop – vývojové fáze 1. FlexiBee modul nejprve bylo nutné do CMS vytvořit modul pro komunikaci s FlexiBee 2. Produkty a práce se skladem zobrazování kategorií a produktů bylo vyvíjeno jako první, aby eshop před úplným dokončením mohl sloužit jako katalog 3. Uživatelé mezistupeň mezi katalogem produktů a košíkem 4. Košík díky FlexiBee rychle - tvorba faktur a objednávek, automaticky generované skladové pohyby → spousta ušetřené práce
FlexiShop
REST API WWW
cache
DB
FlexiShop – FlexiBee modul FlexiBee modul CMS modul, přes který se bude komunikovat s FlexiBee je přes něj vedena celá komunikace eshop-FlexiBee využívá HTTP metody GET, PUT a DELETE pro plnou komunikaci mezi redakčním systémem a FlexiBee komunikace přes JSON nebo XML $flexiBee = $gCms->GetModuleInstance('FlexiBee'); $query_url = "strom.json?limit=0&detail=detail&order=nazev"; $kategorie = $flexiBee->GetJSON($query_url);
FlexiShop – Produkty Produkty a sklad vyvíjeno jako první, aby eshop před dokončením mohl sloužit jako katalog nová verze FlexiBee implementovala strom ceníku, který značně ulehčil implementaci kategorií před fungujícím stromem bylo vše řešeno pomocí štítků, tedy šly nasimulovat jen dvě úrovně struktury, se stromem ceníku omezení padají in-time komunikace mezi stavem ceníku ve FlexiBee a katalogem na eshopu => změny jsou viditelné ihned $flexiBee = $gCms->GetModuleInstance('FlexiBee'); $query_url = "cenik/(" . rawurlencode("in subtree $pom and exportNaEshop = 'true' and stitky = 'code:E_MASTER' and $filtr") . ").json" . "?detail=detail&start=$startelement&limit=$pagelimit$sort"; $zbozi = $flexiBee->GetJSON($query_url);
FlexiShop – Správa uživatelů Správa uživatelů mezistupeň mezi katalogem produktů a košíkem je možné nakupovat jako přihlášený i nepříhlášený uživatel informace o uživateli ihned přístupné ve FlexiBee
FlexiBee nemá mechanismus pro autebtikaci
$flexiBee = $gCms->GetModuleInstance('FlexiBee'); $stitek = "code:ESHOP"; $wsurl = "kontakt/(" . rawurlencode("stitky = '$stitek' and email= '".$uinfo['username']."'") . ").json?limit=0&detail=detail"; $kontakt = $flexiBee->GetJSON($wsurl); $kontakt = $kontakt["winstrom"]["kontakt"][0];
FlexiShop – Košík Košík poměrně rychle - tvorba faktur a objednávek přes FlexiBee, automaticky generované rezervace a skladové pohyby → spoustu ušetřené práce bez nutnosti exportů a synchronizací, přes REST API dochází k okamžité komunikaci a vložení do systému FlexiBee možnost získat přímo vygenerovaný PDF dokument z FlexiBee zatím chybí podpora rozesílání informací z FlexiBee $url = "objednavka-prijata.xml"; $body = '<winstrom version="1.0">
…'; $flexiBee->PutWithBody($url, $body);
FlexiShop – vliv změn v REST API
Volitelnost detailu v dotazu
v původní verzi bylo možné volit pouze ze tří úrovní detailů (ID, přehled, podrobný), což mělo značnou nevýhodu v tom, že se muselo přes REST API získávat mnohem více dat, než bylo třeba, kvůli toho vznikaly problémy s rychlostí. Implementováním volitelných detailů v novějších verzích FlexiBee se tento problém vyřešil a odpovědi na dotazy je nyní možné získat v podstatně rychlejším časem předtím: $url = 'cenik/123.json?detail=detail'; nyní:
$url = 'cenik/123.json?detail=custom:nazev,popis';
FlexiShop – vliv změn v REST API
Urychlení jádra
v rámci optimalizací dotazování přes REST API byla v novějších verzích FlexiBee zvětšena rychlost zpracování dotazů, což mělo pozitivní vliv na rychlost eshopu
FlexiShop – vliv změn v REST API Možnost zavolat uložený dotaz přes REST API umožní ještě zvýšit míru optimalizací pro hladší chod eshopu umožní si individuálně doplnit specializované dotazy přináší problém nestálosti DB struktury – nutná opatrnost
Rozesílání mailů očekávané web hooks tento problém vyřeší zatím v rámci CMS nebo serveru
FlexiShop – chybějící datové typy Co dělat, když FlexiBee nemá požadované datové struktury
dohodnout se s FlexiBee :) využití jiného pole – hrozba přepsání uživatelem, řešením by byl zákaz zobrazování / přepisu pole ve FB využití štítků – nejčastější případ, jednoduché typy využití atributů – očekáváme ve FB v 2012 využití příloh – opět nutno logisticky ošetřit
Jak vypadá současný stav? Online ukázka
DOTAZY? Děkujeme za pozornost