Gardens Builder
Gardens Builder to implementacja modelu GAM w systemie MS Windows
Opis na podstawie opinii o technologii Gardens wydanej przez Poznański Park Naukowo - Technologiczny Fundacji UAMW zależności od parametrów wywołania oraz uprawnień licencyjnych Gardens Builder może pełnić funkcje zintegrowanego środowiska developerskiego, aplikacji klienta (RunTime) lub serwera aplikacyjnego (GAS - Gardens Application Server).
IDE - Zintegrowane Środowisko Rozwoju Gardens Builder zawiera między innymi takie udogodnienia jak:
- (RAD) wizualny edytor okien i raportów
- edytor pakietów i funkcji (kolorowana składnia, podpowiedzi "suflera" podczas pisania kodu)
- debugger z możliwością śledzenia wykonywanego kodu
- wsparcie dla wielojęzyczności aplikacji

Gardens Builderzawiera własny język programowania czwartej generacji o nazwie QLX oraz wbudowany kompilator co umożliwia szybkie i łatwe modyfikowanie każdego obszaru aplikacji. Jądro QLX zawiera w sobie szereg podstawowych funkcji graficznych co umożliwia łatwą modyfikację GUI. Język programowania jest prosty i zoptymalizowany pod kątem czasochłonności budowania i modyfikowania logiki aplikacji. Konstrukcja kompilatora umożliwia natomiast bezpieczne dokonywanie zmian w czasie działania systemu co przyspiesza procesy implementacji i testowania aplikacji.
System umożliwia pracę z wieloma bazami danych łącząc się z nimi bezpośrednio za pomocą interfejsów OLEDB. Możliwe jest także wykorzystywanie własnej plikowej bazy danych. Istnieją proste mechanizmy do tworzenia automatycznych importów i eksportów danych za pomocą plików tekstowych (XML, CSV, TAB).
W jądrze Gardens zawarto mechanizmy podstawowych interfejsów COM+ do sterowania obiektami zewnętrznymi (możliwość komunikowania się z aplikacjami COM typu MS WORD, MS EXCEL).
Możliwa jest także komunikacja między aplikacjami Gardens za pomocą sieci TCP/IP co umożliwia budowanie rozproszonych systemów wielowarstwowych lub systemów replikacji danych.
Budowa
Gardens Builder został napisany wyłącznie z wykorzystaniem STL C++. W obszarze GUI zbudowano specjalizowane klasy bezpośrednio za pomocą API systemu WIN32. Do komunikacji z bazami danych wykorzystano bezpośrednio niskopoziomowe interfejsy OLEDB. Napisano również własną plikową bazę danych. W jądrze QLX zawarto natomiast mechanizmy podstawowych interfejsów COM+ do sterowania obiektami zewnętrznymi, własny protokół i możliwości komunikacji TCP/IP, własne algorytmy kompresji i kodowania danych oraz parser XML bezpośrednio do struktur Data Schema.
Całość została napisana w języku C++. Źródło jest wysoce zoptymalizowane zajmuje ok. 9000 linii kodu zaś wynikowy program to zaledwie 950KB.
Kompilator QLX
Zbudowany kompilator jest wynalazkiem autorskim. Jego działanie polega na parsowaniu, w momencie ładowania, obiektów źródła tekstowego do pamięci o bardzo złożonej strukturze hierarchicznej bazującej na wartościowaniu przez binarne drzewo adresów. W czasie wykonania, tworzone są wyłącznie stosy obiektów oraz wykonywana jest wędrówka po adresach wraz z elementarnymi kalkulacjami. Zapewnia to dobrą wydajność operacji bazowych języka (lepszą od innych języków 4GL) .
Taka konstrukcja umożliwia również ekstrema typu kompilacja jednej z funkcji pakietu w czasie działania aplikacji i przy współdziałania innych funkcji.
Repozytorium ogrodu
Wszystkie elementy ogrodu przechowywane są w bazie danych lub w plikach. Na repozytorium ogrodu składa się zestaw systemowych tabel zgodnie z filozofią Gardens, powiązanych ze sobą w hierarchiczne struktury Data Schema. Ogród składa się z:
- Data Schema Trees - kolekcja drzew definiujących schemat danych aplikacji,
- Custom Types - kolekcja własnych, definiowalnych typów danych,
- Connections - kolekcja połączeń,
- Object Tree - kolekcja obiektów aplikacji (Pakiety, Okna, Raporty,
- Resources List - lista zasobów graficznych (ikony, obrazy, pliki EMF),
- Projects - lista projektów - grupowanie obiektów ogrodu dla lepszego zarządzania zmianami aplikacji,
- ML - słowniki wielojęzyczne.
Dodatkowo istnieją rozbudowywane elementy związane z nadawaniem wersji ogrodu i budowaniem dokumentacji.
XML .NET Transformer
Gardens Aplication Model Builder może pracować jako serwer aplikacyjny udostępniający GUI klienta na stronach www. Dzieje się tak dzięki komponentowi GAM Buildera o nazwie XML .NET Transformer, który udostępnia wygląd okien w postaci XML. Z tej postaci strona B2B dokonuje transformacji do ASP.NET Web Form. Logika aplikacji przetwarzana jest przez serwer GAM.
Transformacja okien do XML jest również wykorzystywana w rozwiązaniu mobilnym.
Projektowanie aplikacji
Wysoce zoptymalizowany kod języka QLX posiada możliwości autokreacji. Pozwala to budować wysokopoziomowe narzędzia do projektowania automatycznej generacji ogrodu - aplikacji wynikowej (CASE).
Gardens umożliwia stworzenie dowolnej aplikacji w bardzo krótkim czasie. Umożliwia też budowę narzędzi do jeszcze większego zoptymalizowania procesu budowy aplikacji. Istnieje zatem możliwość budowania ogrodu, który „projektuje i generuje inne ogrody”.
