JSDO – JavaScript Data Object

Zanim napiszę o tworzeniu serwisów REST, wykorzystaniu danych OpenEdge w produktach Rollbase czy Telerik, trzeba przyswoić sobie pewne nowe pojęcia.
Jednym z nich jest omówiony wcześniej Pacific AppServer. Obecnie zajmiemy się progressowymi obiektami JSDO.
Obiekty te zapewniają wsparcie dla złożonego modelu danych oraz API do manipulowania danymi przy zachowaniu pełnej integralności.

Pierwotnym wykorzystaniem JSDO były aplikacje mobilne jednakże, jak wspomniałem, wykorzystuje się je także w integracji z innymi produktami.

Obiekty po stronie klienta zapewniają dostęp do zasobów wystawionych jako serwis WWW oraz upraszczają mapowanie pomiędzy danymi JSDO i elementami HTML. Zasobami tymi są logika biznesowa ABL oraz dane OpenEdge. Najczęściej wykorzystuje się dane z ProDataSetów, które z kolei mapują dane z baz OpenEdge.

jsdo mapping

JSDO komunikuje się z serwerem aplikacji (OE AppServer, PAS) wysyłając i odbierając dane.
Może wykonywać operacje CRUD (Create, Read, Update, Delete) zdefiniowane w obiektach Business Entity (BE) lub wywoływać metody na AppServerze.

Wszystko to razem, dla kogoś kto zetknął się z nową technologią po raz pierwszy, wydaje się być zbyt skomplikowane. jsdo mapping Niejednokrotnie słyszałem od Was podczas spotkań, że lepiej jest zostać przy znanej technologii, bo tutaj nie za bardzo wiadomo o co chodzi. Jednakże wiele elementów, o których mówię jest zautomatyzowanych. Np. tworząc w OE Developer’s Studio, w danym projekcie nowy obiekt typu Business Entity, mogę wskazać na tablicę z której chcę mapować dane (patrz rysunek). Tworzą się wtedy automatycznie ProDataSet i zasoby REST, a mapowanie PDS JSDO jest automatyczne. Jeśli zachodzi potrzeba mogę edytować metody CRUD dla BE itd. Pokażę wkrótce jak to zrobić.

Katalog JSDO – definiuje logiczny schemat oraz mapowanie do zdalnego źródła danych. Katalog ten zawiera plik JSON (JavaScript Object Notation).
Katalog określa również API do wywoływania zdalnej logiki biznesowej (poza podstawowymi operacjami CRUD).
Katalog ten jest niezbędny jeśli chcemy wykorzystać JSDO jako zewnętrzne źródło danych w innych produktach.

Z danych JSDO można korzystać na różne sposoby. Poniżej przedstawiam przykład przygotowany przez PSC i Telerik. Istnieje zdefiniowany serwis OE, przekazujący dane poprzez JSDO. Mamy podany katalog JSDO z plikiem JSON.

<!DOCTYPE html>
<html>
<head>
<title>Simple JSDO Usage</title>
<script src=”http://oemobiledemo.progress.com/jsdo/progress.jsdo.3.1.js”></script>
</head>
<body><!– results will be written here by JavaScript –><script>
(function () {var serviceURI = “http://oemobiledemo.progress.com/MobilityDemoService”,
catalogURI = serviceURI + “/static/mobile/MobilityDemoService.json”;

// create a new session object
var session = new progress.data.Session();
session.login(serviceURI, “”, “”);
session.addCatalog(catalogURI);

// create a JSDO
var jsdo = new progress.data.JSDO({ name: ‘dsCustomer’ });
jsdo.subscribe(‘AfterFill’, onAfterFillCustomers, this);

// calling fill reads from the remote OE server
jsdo.fill();

// this function is called after data is returned from the server
function onAfterFillCustomers(jsdo, success, request) {
// for each customer record returned
jsdo.eCustomer.foreach(function (customer) {
// write out some of the customer data to the page
document.write(customer.data.CustNum + ‘ ‘ + customer.data.Name + ‘<br>’);
});
}

}());
</script>
</body>
</html>

Obsługa powyższego przykładu jest zrealizowana głównie przy pomocy dwóch obiektów: Session – zarządzanie sesją i autoryzacją oraz JSDO – dostęp do danych OpenEdge poprzez informacje zawarte w katalogu JSDO.

Jak działa ten przykład możecie sprawdzić TUTAJ.