Both sides previous revision Previous revision Next revision | Previous revision |
kb:web:balans_common_web_objects [2018/04/16 07:50] – aleksandar | kb:web:balans_common_web_objects [2020/11/13 09:32] (current) – [Realizovane grane] aleksandar |
---|
====== Balans Common Web Objects ====== | ====== Balans Common Web Objects ====== |
| |
- [[:kb:balans_veb_servisi_autorizacija|Autorizacija i dobijanje prava pristupa sistemu]] | BCWO se deli na grane navedene u tablici ispod, a koje su različito implementirane. U pitanju je kombinacija RESTful i SOAP tehnika. |
- [[:kb:balans_veb_servisi_sifarnici|Manipulacija šifarnicima sistema]] | |
- [[:kb:balans_veb_servisi_fieldops|FieldOps (Teledirekt) operacije]] | ===== 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 |
| |
| |