Rollbase i serwisy OpenEdge

W poprzednim artykule obiecałem, że stworzymy w Rollbase aplikację, opierającą się o dane z bazy danych OpenEdge. Wykorzystamy do tego serwis OE, o którym pisałem w części I i w części II.

W naszej aplikacji będziemy korzystać z dwóch tablic: Customer i Order, dlatego do serwisu OE trzeba dodać obiekt (business entity) Order.

Podobnie jak dla obiektu Customer, klikamy na podkatalog AppServer i wybieramy New -> New -> Business Entity. Podajemy nową nazwę obiektu Order i klikamy Next.

W drugim kroku wybieramy aktywne połączenie z bazą danych i wybieramy  tabelę Order, a następnie Finish.

Widzimy, że w podkatalogu AppServer utworzyły się pliki dla nowego zasobu, w tym plik klasy Order.cls.

Ponownie nowy obiekt biznesowy trzeba dodać do serwisu. Rozwijamy Defined Services i prawym klawiszem klikamy na Edit a następnie Next.

Na ekranie Create a Data Object service zaznaczamy Order.cls i klikamy Finish.

Po zrestartowaniu serwera aplikacji PAS możemy podejrzeć, że nowo-utworzony plik .json zawiera struktury Customer i Order.

Obiekt Order, to plik klasy oraz ProDataSet dsOrder, zawierający tablicę tymczasową ttOrder.

Żeby z serwisu OE utworzyć obiekt w Rollbase wymagane jest aby tablica tymczasowa zawierała przynajmniej jedno pole tekstowe, które posłuży do mapowania dla pola Record Name (w tablicy ttCustomer jest pole Customer.Name).

W tablicy ttOrder takiego pola nie ma, dlatego musimy je utworzyć.

Wygodnie jest posłużyć się tutaj tzw. Callback Procedure. Są to procedury podobne do trygerów w 4GL i dotyczą różnych zdarzeń w ProDataSecie (jeszcze jeden powód, dla którego warto znać ProDataSety!).

Najpierw w pliku oder.i dodamy pole OrderName typu znakowego.

Następnie w pliku Order.cls w metodzie ReadOrder dodajemy dla tablicy ttOrder Callback Procedure o nazwie AddField dla zdarzenia After-Row-Fill, która będzie wywołana po zapełnieniu każdego rekordu w tabeli tymczasowej.

Poniżej metody ReadOrder definiujemy procedurę AddField.

Każdy rekord ttOrder będzie miał tekstową wartość w polu OrderName złożoną z nr klienta i nr zamówienia.

Klasę Order.cls należy teraz skompilować (prawy klik, Compile).

Aby plik .json miał aktualną strukturę z nowym polem postępujemy podobnie jak kilka kroków powyżej.

Teraz przejdźmy do Rollbase’a.

Nasuwa się pytanie czy nie można było utworzyć jeden ProDataSet z dwoma tablicami tymczasowymi i relacją między nimi? Przecież w PDS można to zrobić bez trudu. Otóż Rollbase ma ograniczenie polegające na tym, że mapować można tylko PDS złożone z pojedynczych tablic.

Przejdźmy do ekranu Create a New Application. Kto nie pamieta jak to zrobić niech kliknie TUTAJ.

Klikamy Create from External Data. Pojawia się ekran

Musimy odszukać ścieżkę do pliku .json: [workspace]\mobile6\PASOEContent\static

oraz URI dla serwisu. Next

Chociaż podaliśmy URI dla Customera, Rollbase proponuje na podstawie pliku .json utworzenie 2 obiektów: ttCustomer, ttOrder.

Klikamy Next. Zaznaczamy pola, które maja zawierać obiekty. Trzeba poprawić pola Resource URI, bo mają niepoprawne wartości. Dla pola OrderName ustawiamy typ Record Name. Bez wybrania tego typu dla jednego pola, pojawi sie błąd. Dlatego zadaliśmy sobie wcześniej trochę trudu, aby takie pole utworzyć w ttOrder. W ttCustomer typ Record Name jest przypisany automatycznie dla pola Name.

Klikamy Create. Nasza aplikacja (nazwa mobile6Service) pojawia się na liście aplikacji.

Po wybraniu aplikacji można przeglądać rekordy ttOrders i ttCustomers. Na razie nie są one ze sobą powiązane.

Teraz zbudujemy relację między ttOrders i ttCustomers.

Wchodzimy w ustawienia aplikacji (koło zębate)

Klikamy na nazwę obiektu ttOrder

Tworzymy nowa relację klikając New OpenEdge Relationship.

Ustawiamy pole relacji CustNum

Rodzaj relacji ustawiamy na Many ttOrders to One ttCustomer.

Poniżej sa dodatkowe ustawienia. Warto m.in. mieć możliwość wstawiania ttOrders do widoków ttCustomers (przykład za chwilę). Save.

Wchodzimy ponownie w podgląd danych ttCustomers i budujemy nowy widok (Create New View).

Wybieramy pola wraz z ttOrders, które już się pojawiło na liście.

Mamy efekt końcowy, do którego dążyliśmy.

Rollbase – aplikacje w chmurze

Rollbase – platforma PaaS (Platform as a Service), służy do budowania aplikacji biznesowych. Dostęp do Rollbase jest przez przeglądarki internetowe, a budowanie w znaczącej mierze polega na czynnościach “przeciagnij i upuść” i zminimalizowanym programowaniu.

Rollbase oferuje dostęp do środowiska w chmurze prywatnej (Private Cloud), instalowanej w lokalnej sieci lub hostingowej (Host Cloud), dostępnej zdalnie u dostawcy usług.

Rozbudowany interfejs webowy został przeprojektowany w wersji 4.0. Wykorzystuje on obecnie nowoczesne komponenty Kendo UI Telerika (obiekty ekranowe, motywy) i sprawia, że dopasowuje się on automatycznie do zmiennych rozmiarów ekranu oraz pozwala na tworzenie aplikacji o nowoczesnym wyglądzie, które działają na różnych urządzeniach. Nowy interfejs korzysta także z zestawu Font Awesome, skalowalnych ikon wektorowych, które można łatwo dopasować za pomocą CSS.

Administratorzy, zarządzający środowiskiem Rollbase mogą przełączać między nowym a klasycznym interfejsem, w zależności od potrzeb klientów.

Aby mieć darmowy dostęp do tego środowiska możemy zapisać się na okres 30-dni.

Po zalogowaniu się do Rollbase’a widzimy listę przykładowych aplikacji. Większość z nich zawiera mało danych. Możemy sami je dodać, robić zestawienia, edytować itd. Możemy wreszcie utworzyć własną aplikację.

Na tej samej stronie w przeglądarce, po prawej stronie znajdują się odnośniki do tworzenia takich aplikacji oraz do zasobów wiedzy nt Rollbase’a.

Klikając przycisk Quick Create Start rozpoczynamy tworzenie nowej aplikacji od zera, przy czym jesteśmy “prowadzeni za rękę” po kolejnych etapach. Jak to wygląda, można obejrzeć na krótkim filmie.

No dobrze, ale co zrobić jeśli nie chcemy wprowadzać danych od nowa tylko wykorzystać te istniejące w bazie OpenEdge? Jest tutaj kilka opcji, ale najbardziej uniwersalną i zalecaną metodą jest wykorzystanie serwisu OpenEdge typu REST, np. takiego jaki stworzyliśmy w zeszłym miesiącu.

Aby to zrobić należy odszukać w środowisku przycisk tworzenia nowej aplikacji (ale nie od zera). Opiszę jak go znaleźć w wersji 4.0.x

Klikamy nieco ukryte menu (strzałka)…

…i New Applications.

Innym sposobem można rozwinąć menu Rollbase i wybrać Setup Home

Następnie New Application.

Tym czy innym sposobem, otwiera się okno Create a New Application.

Guide Me Throught It to tworzenie aplikacji od zera.

Install from Marketplace – Marketplace to rodzaj sklepu online, w którym użytkownicy mogą instalować swoje aplikacje i dzielić je z innymi użytkownikami.

Create from Existing Objects – wykorzystujemy w nowej aplikacji zdefiniowane wcześniej obiekty.

Create from External Data – to metoda, której szukamy. Wykorzystuje ona utworzone wcześniej metadane, np. serwisu OpenEdge.

Metodę tę pokażę następnym razem.