Ako spracovať JSON/XML string v SAP Cloud Applications Studiu? – 3. časť
Napísali: Kristián Kačinetz, SAP Developer & Ondrej Rimovský, SAP Developer
V predchádzajúcich častiach tejto série článkov sme si ukázali akým spôsobom je v Jave možné implementovať jednoduchú SOAP službu. Následne sme túto jednoduchú SOAP službu rozšírili o spracovanie dát REST služby a ich odosielanie v SOAP formáte.
V tejto časti série si prejdeme implementáciu SOAP webovej služby v SAP Cloud Application Studiu a tým ukončíme túto sériu článkov. V SAP Cloud Application Studiu si postupne prejdeme implementovaním Bussiness Objektu, ABSL scriptov a generovaním obrazoviek.
Implementácia
Prvým krokom implementácie je vytvorenie nového projektu v SAP Cloud Application Studiu. V novom projekte si vytvoríme nový Business Object, ktorý nazveme napríklad Corona.
Obsah Business Objektu bude nasledovný:
import AP.Common.GDT as apCommonGDT; businessobject Corona { [Label("Country")][AlternativeKey] element Country: MEDIUM_Name; [Label("Confirmed")] element Confirmed:INTEGER_Quantity; [Label("Dead")] element Dead:INTEGER_Quantity; [Label("Recovered")] element Recovered:INTEGER_Quantity; [Label("Updated Date")] element UpdatedDate:Date; [Label("Updated Time")] element UpdatedTime:Time; action LoadDataFromWS; }
Následne Business Objekt aktivujeme a po aktivácii k nemu necháme vytvoriť súbory scriptov. Po vygenerovaní súborov pre scripty môžeme k Business Objektu vygenerovať obrazovky. Kvôli jednoduchosti použijeme objektovo založenú navigáciu, a vo formulári vyplníme pole Short ID:
Vo webovom rozhraní Cloud for Customer sa prihlásime ako administrátor, odnavigujeme sa do záložky Administrator a následne Business Users, vyhľadáme svoj účet a klikneme na Edit -> Access Rights, zoradíme vzostupne podľa Work Center / View Name a nájdeme podľa mena, ktoré sme zadali v predchádzajúcom formulári.
Priradíme právo na zobrazenie svojmu užívateľov a uložíme. V SAP Cloud Application Studiu pridáme novú položku, zo zoznamu si vyberieme External Web Service Integration. Novú položku pomenujeme napríklad CoronaService:
Na nasledujúcej obrazovke zvolíme Web Service Type na SOAP. V ďalšom kroku je potrebné nahrať WSDL našej služby. WSDL súbor je možné získať z rozhrania našej služby, ktorú sme vytvorili v predchádzajúcich častiach návodu, v prehliadači na adrese:
https://{your_url}/soap_guide/guideService?wsdl |
Po načítaní WSDL súboru v prehliadači súbor uložíme ako {file}.wsdl. Zmenou parametru v url adrese našej SOAP služby získame aj XSD schému k našej webovej službe. Parameter je potrebné zmeniť z wsdl na xsd=1:
https://{your_url}/soap_guide/guideService?xsd=1 |
Súbor uložíme ako {file}.xml. Po stiahnutí týchto súborov je nutné upraviť wsdl súbor a zmeniť v ňom adresu XSD schémy. V našom prípade sme tieto súbory nazvali guideService.wsdl a guideService.xml. Editujeme teda súbor guideService.wsdl, riadok odkazujúci na XSD schému online:
<xsd:import namespace="http://soap/" schemaLocation="https:// {your_url}/soap_guide/guideService?xsd=1" />
Riadok zmeníme tak aby odkazoval na lokálny súbor:
<xsd:import namespace="http://soap/" schemaLocation="guideService.xml" />
Vrátime sa k vytvoreniu novej položky v SAP Cloud Application Studiu. Oba súbory vložíme na aktuálnej obrazovke:
V ďalšom kroku zaškrtneme Create Communication Scenario a vyplníme potrebné údaje, môžeme povoliť aj nezabezpečené URL:
Po vytvorení súborov si otvoríme Communication Scenario a upravíme Communication Type na A2X, v záložke services sa uistíme, že máme zakliknuté nasledujúce:
Ak nie sú služby v rámci Communication Scenario dostupné tak sa v aplikaci Cloud Application Studio odhlásime a znova prihlásime. Obe nové položky následne aktivujeme a klikneme pravým na Communication Scenario. Vytvoríme si nový komunikačný systém:
V spodnej časti v System Instances pridáme nový riadok a skopírujeme ID systému, ako preferovaný aplikačný protokol vyberieme Web Service:
Následne komunikačný systém uložíme a klikneme na tlačidlo Actions, kde ho aktivujeme. V SAP Cloud Application Studio opäť klikneme pravým na Communication Scenario a vytvoríme nový Communication Arrangement. Z listu dostupných scenárov si vyberieme CoronaServiceCommScena. V ďalšom kroku ako System Instance ID vyberieme systém, ktorý sme vytvorili. Stlačíme tlačidlo next a na ďalšej obrazovke vyberieme Edit Advanced Settings. Prepínač použiť základné nastavenia zmeníme na nie. Ostatné nastavenia urobíme podľa nasledujúceho obrázku:
Uložíme a aktivujeme Communication Arrangement. Po tomto kroku by sme mali byť schopní otestovať našu webovú službu v SAP Cloud Application Studio. Pre otestovanie klikneme pravým tlačidlom na integráciu webovej služby a zvolíme Test Service Operations. Na obrazovke, ktorá sa nám zobrazí si vyberieme službu a prípadne vyplníme požadované údaje. Následne odošleme požiadavku a počkáme na odpoveď:
Do našej akcie pridáme nasledujúci kód:
import ABSL; var data : elementsof Corona; var Response = Library::CoronaService.getCountryDataList(" ", "CoronaServiceCommScena"); var CommFault = Response.CommunicationFault; var CommFaultItems = CommFault.Item; if(CommFaultItems.Count() == 0) { foreach(var CountryData in Response.return.countryDataList) { var query = Corona.QueryByElements; var selparam = query.CreateSelectionParams(); selparam.Add(query.Country.content, "I", "EQ", CountryData.country); var result = query.Execute(selparam); if(result.Count() > 0) { var inst = result.GetFirst(); inst.Confirmed.content = CountryData.confirmed; inst.Dead.content = CountryData.dead; inst.Recovered.content = CountryData.recovered; inst.UpdatedDate = CountryData.updated.GetDate(); inst.UpdatedTime = CountryData.updated.GetTime(); } else { data.Confirmed.content = CountryData.confirmed; data.Country.content = CountryData.country; data.Dead.content = CountryData.dead; data.Recovered.content = CountryData.recovered; data.UpdatedDate = CountryData.updated.GetDate(); data.UpdatedTime = CountryData.updated.GetTime(); Corona.Create(data); } } }
Vo webovom rozhraní si otvoríme náš objekt, pridáme novú položku a spustíme náš script:
Po spustení scriptu a uložení položky máme na našom objekte založené všetky dáta, ktoré boli prijaté z webovej služby:
Záver
Posledným krokom sme ukončili túto sériu článkov, počas ktorej sme vytvorili SOAP webovú službu, ktorá umožňuje jednoduché spracovanie dát z REST webovej služby v SAP Cloud Application Studiu. Na vytvorenie služby sme využili Javu, ktorá umožňuje jednoduché vytvorenie SOAP webovej služby.
Táto séria článkov vznikla kvôli požiadavke na jednoduché spracovanie odpovedí z REST webových služieb nakoľko SAP Cloud Application Studio aktuálne neposkytuje možnosť natívneho spracovania takýchto odpovedí vo formáte JSON/XML. V návode sme popísali spôsob akým je možné spracovať odpovede vo formáte JSON avšak je jednoduché implementáciu v Jave upraviť tak aby dokázala spracovať aj odpovede vo formáte XML.