Jak zpracovat JSON/XML string v SAP Cloud Applications Studiu? – 3. část
Napsali: Kristián Kačinetz, SAP Developer & Ondrej Rimovský, SAP Developer
V předchozích částech této série článků jsme si ukázali jakým způsobem je v Javě možné implementovat jednoduchou SOAP službu. Následně jsme tuto jednoduchou SOAP službu rozšířili o zpracování dat REST služby a jejich odesílání v SOAP formátu.
V této části série si projdeme implementaci SOAP webové služby v SAP Cloud Application Studiu a tím ukončíme tuto sérii článků. V SAP Cloud Application Studiu si postupně projdeme provedením Bussiness Objektu, ABSL scriptů a generováním obrazovek.
Implementace
Prvním krokem implementace je vytvoření nového projektu v SAP Cloud Application Studiu. V novém projektu si vytvoříme nový Business Object, který nazveme například Corona.
Obsah Business Objektu bude následující:
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ásledně Business Objekt aktivujeme a po aktivaci k němu necháme vytvořit soubory scriptů. Po vygenerování souborů pro scripty můžeme k Business Objektu vygenerovat obrazovky. Kvůli jednoduchosti použijeme objektově založenou navigaci, a ve formuláři vyplníme pole Short ID:
Ve webovém rozhraním Cloud for Customer se přihlásíme jako administrátor, přesunete se do záložky Administrator a následně Business Users, vyhledáme svůj účet a klikneme na Edit -> Access Rights, seřadíme vzestupně podle Work Center / View Name a najdeme podle jména, které jsme zadali v předchozím formuláři.
Přiřadíme právo na zobrazení svému uživatelů a uložíme. V SAP Cloud Application Studiu přidáme novou položku ze seznamu si vybereme External Web Service Integration. Novou položku pojmenujeme například CoronaService:
Na následující obrazovce zvolíme Web Service Type na SOAP. V dalším kroku je třeba nahrát WSDL naší služby. WSDL soubor lze získat z rozhraní naší služby, kterou jsme vytvořili v předchozích částech návodu, v prohlížeči na adrese:
https://{your_url}/soap_guide/guideService?wsdl |
Po načtení WSDL souboru v prohlížeči soubor uložíme jako {file} .wsdl. Změnou parametru v url adrese naší SOAP služby získáme i XSD schéma k naší webové službě. Parametr je třeba změnit z WSDL na xsd = 1:
https://{your_url}/soap_guide/guideService?xsd=1 |
Súbor uložíme ako {file} .xml. Po stažení těchto souborů je nutné upravit soubor wsdl a změnit v něm adresu XSD schémy. V našem případě jsme tyto soubory 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 změme tak aby odkazoval na lokálny súbor:
<xsd:import namespace="http://soap/" schemaLocation="guideService.xml" />
Vrátíme se k vytvoření nové položky v SAP Cloud Application Studiu. Oba soubory vložíme na aktuální skupinu:
V dalším kroku zaškrtněte Vytvořit Create Communication Scenario a vyplňte potřebné údaje, můžeme povolit i nezabezpečené URL.
Po vytvoření souborů si otevřeme Communication Scenario a upravíme Communication Type na A2X, v záložkách služby se uistíme, že máme zakliknuté následující:
Není-li služba v Communication Scenario k dispozici, tak se v aplikaci Cloud Application Studio odhlásíme a znovu zaregistrujeme. Obe nové položky následně aktivujeme a klikneme na Communication Scenario. Vytvoříme si nový komunikační systém.
Ve spodní části v System instances přidáme nový řádek a zkopírujeme ID systému, jako preferovaný aplikační protokol vybereme Web Service.
Následně komunikační systém uložíme a klikneme na tlačítko Actions, kde ho aktivujeme. V SAP Cloud Application Studio opět klikneme pravým na Communication Scenario a vytvoříme nový Communication Arrangement. Z dopisu dostupných scénářů si vybereme CoronaServiceCommScena. V dalším kroku jako System Instance ID vybereme systém, který jsme vytvořili. Stiskneme tlačítko next a na další obrazovce vybereme Edit Advanced Settings. Přepínač použít základní nastavení změníme na ne. Ostatní nastavení provedeme podle následujícího obrázku:
Uložíme a aktivujeme Communication Arrangement. Po tomto kroku bychom měli být schopni otestovat naši webovou službu v SAP Cloud Application Studio. Pro otestování klikneme pravým tlačítkem na integraci webové služby a zvolíme Test Service Operations. Na obrazovce, která se nám zobrazí si vybereme službu a případně vyplníme požadované údaje. Následně odešleme požadavek a počkáme na odpověď:
Do naší akce přidáme následující 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); } } }
Ve webovém rozhraní si otevřeme náš objekt, přidáme novou položku a spustíme náš script:
Po spuštění scriptu a uložení položky máme na našem objektu založené všechna data, která byla přijata z webové služby:
Závěr
Posledním krokem jsme ukončili tuto sérii článků, během které jsme vytvořili SOAP webovou službu, která umožňuje snadné zpracování dat z REST webové služby v SAP Cloud Application Studiu. Pro vytvoření služby jsme využili Javu, která umožňuje snadné vytvoření SOAP webové služby.
Tato série článků vznikla kvůli požadavku na jednoduché zpracování odpovědí z REST webových služeb nakolik SAP Cloud Application Studio aktuální neposkytuje možnost nativního zpracování takových odpovědí ve formátu JSON / XML. V návodu jsme popsali způsob jakým je možné zpracovat odpovědi ve formátu JSON avšak je jednoduché implementaci v Javě upravit tak aby dokázala zpracovat i odpovědi ve formátu XML.