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.

1. časť
2. časť