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.

1. část
2. část