| 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 |
| |
| |