====== Balans Common Web Objects ====== BCWO se deli na grane navedene u tablici ispod, a koje su različito implementirane. U pitanju je kombinacija RESTful i SOAP tehnika. ===== RESTful ===== REST je skraćeno od "REpresentational State Transfer" i široko je prihvaćena i u upotrebi tehnologija na bazi HTTP protokola. Veb servisi koji koriste ovu tehniku se nazivaju RESTful. Ovo je najčešći vid komunikacije na internetu danas. ===== SOAP ===== SOAP je skraćenica za "Simple Object Access Protocol" koji je nastao 1998. Može da se posmatra kao "uži" RESTful servis (iako je stariji), jer koristi isključivo POST HTTP metod, XML i mora da sadrži odredjena HTTP zaglavlja sa tačnim vrednostima. Mnogi razvojni alati za SOAP veb servise automatski stvaraju WSDL ( Web Services Description Language) XML specifikaciju koja je dostupa dodavanjem //?WSDL// na glavni URL servisa. Velika prednost je što moderna razvojna okruženja (Visual Studio, NetBeans) podržavaju uvoz ove specifikacije i automatski prave potreban kod, tako da korisnik ne programira taj deo. Linkovi: https://www.w3.org/TR/soap/\\ https://www.w3schools.com/xml/xml_soap.asp \\ https://www.tutorialspoint.com/soap/what_is_soap.htm Alati za testiranje: soapUI - https://www.soapui.org/ ===== Realizovane grane ===== Grane su nezavisne. Jedina dodirna tačka grana jeste odeljak 1 koji svi koriste za dobijanje prava pristupa Za upotrebu svih metoda, neohodan je **token**. Token se dobija pozivom metodi GetToken ([[:kb:balans_veb_servisi_autorizacija|opisana u odeljku 1]]) preko dodeljenih podataka za pristup - korisnički nalog i šifra. Ekvivalentan je API key stringu, koji je široko raspostranjem na internetu, sa tom razlikom što token ima značajno kraći period važenja. Takodje je potrebno da Melany Software prvo autorizuje kompaniju (što je već uradjeno kada dobijete nalog i šifru). ^RB^Odeljak^Implementacija^Revizija| |1|[[:kb:balans_veb_servisi_autorizacija|]]|RESTful i SOAP|19-6-11| |2|[[:kb:balans_veb_servisi_sifarnici|]]|SOAP|20-11-13| |3|[[:kb:balans_veb_servisi_fieldops|FieldOps (Teledirekt) operacije]]|RESTful|19-6-11| ===== Primer korišćenja (redosleda) ===== Ukoliko je cilj komunikacije sa servisom da se dobiju informacije o stanjima artikala na skladištima, a pto vraća metoda //StockLevel//, za njen poziv klijent mora da zna još i koje vrednosti parametara može da upotrebi: * U opštem slučaju, redosled radnji počinje pozivom metodi //GetToken //da bi se dobio token, kao obavezan parametar svih metoda. * Dalje, za moguće vrednosti parametra __stockType__, mora prethodno da izvrši poziv //GetStockTypes// i dobije rezultat. * Ako želi da vidi samo konkretno skladište, onda u __stockID __može da unese neku vrednost ID skladišta koje je dobio prethodnim pozivom metodi //StocksAvailable//. Ao želi sva skladišta, unosi nulu za ovaj parametar. * Analogno, pozivom metodi //ItemsAvailable//, klijent saznaje IDjevi artikala, šifre i nazivi i onda te podatke upotrebiti u parametrima __itemID,____itemArticle__, __itemType__, __itemColor__, __itemModel__ ili __itemTitle __ove funkcije. \\ \\ Ovde naglašavam da se ovi parametri medjusobno isključuju: Ako zadata kombinacija itemID i itemColor vrednosti koja ne postoji, onda sistem vraća prazan rezultat. Isto se dobija, na primer, da se preda kombinacija itemArticle, itemType i itemTitle vrednosti koja ne postoji u bazi podataka. I slično. \\ U ovakvim slučajevima se koriste džoker vrednosti koje ne filtriraju rezultat po datom parametru. Za numeričke vrednosti džoker je **nula**, a za tekstualne **znak procenat %. **Neki parametri mogu da se izostave, a prema dokumentaciji konkretne metode**.** \\ \\ Za poziv ovoj metodi prvo treba saznati podatke koje vraćaju metode //GroupsAvailable, SubgroupsAvailable, ManufacturersAvailable i CategoriesAvailable//. Sumirano za primer, redosled bi bio: - GetToken('', userName, userCode, [authUser], [authCustomer]) → token - GetStockTypes(token) → Spisak mogućih vrednosti za tipove skladišta - StocksAvailable(token) → Informacije o postojećim skladištima - GroupsAvailable(token) → Informaceij o postojećim grupama - SubgroupsAvailable(token, [groupID]) → Informacije o postojećim podgrupama - CategoriesAvailable(token, [groupID], [subgroupID]) → spisak kategorija u sistemu - ManufacturersAvailable(token) → Informacije o zabeleženim proizvodjačima - ItemsAvailable (sessToken, [groupID], [subgroupID], [categoryID], [manufID], [itemID], [itemArticle], [itemType], [itemColor], [itemModel], [itemTitle], [itemBarcode]) → Spisak Item objekata (artikli) - StockLevel (sessToken, stockID, stockType, [forDate], [itemID], [itemArticle], [itemType], [itemColor], [itemModel], [itemTitle],[priceListName],[priceListDate]) → rezultat stanja artikala na skladištima