Technologie – PHP, SOAP, MySQL
Elementy przedstawione na schemacie #1, wchodzące w skład tej części projektu to: Service 1, DB, ETL, Warehause i Service 2.
Na schemacie #2 "Service 1" został przedstawiony jako "Model" - serwis ten realizuje pełne wsparcie procesów Worker.
Kod tej części projektu Rummager napisany został w PHP przy wykorzystaniu zewnętrznej biblioteki phpwsdl implementującej protokół SOAP oraz automatyczne generowanie opisów WSDL serwisów 1 i 2. Diagram UML zdefiniowanych klas przedstawiony został na schemacie #3 - szczegóły implementacji można podejrzeć bezpośrednio w kodzie: https://github.com/lbacik/rummager-service.
Baza
Baza danych została opisana w osobnym artykule, dostępnym tutaj.
Service 1
Serwis realizujący wywołania Workerów. Uwaga – aktualnie serwis nie posiada żadnego mechanizmu autoryzacji! - zobacz niżej - „autoryzacja”.
ETL, Analysis
Procesy ETL są realizowane przez procedury bazy danych wywoływane zewnętrznie, o zaplanowanej porze, np z poziomu usługi cron systemu operacyjnego – dane są pobierane z tabel bazy opisanej powyżej, agregowane i ładowane do tabel z prefiksem: dw_f_ w tej samej bazie. Tak przygotowane dane są wykorzystywane przy generowaniu raportów.
Service 2
Serwis umożliwia dostęp do statystyk/raportów systemu (generowanych min. przez procesy ETL).
Autoryzacja
Aktualnie Serwisy 1 i 2 nie posiadają mechanizmów autoryzacji, dlatego pliki implementujące te serwisy umieszczone zostały w osobnych katalogach w źródłach projektu - ma to ułatwić konfigurowanie różnych adresów dostępowych do serwisów, co powinno pozwolić na "ukryje" adresu "Service 1" przed użytkownikami posiadającymi adres (dostęp) do "Service 2" - rozwiązanie dość kiepskie, ale działa :) Po zaimplementowaniu autoryzacji pliki implementujące obydwie usługi zostaną przeniesione do jednego katalogu i bez przeszkód będą mogły być udostępniane pod jednym adresem.
- Projekt Rummager: http://luka.sh/projekty/rummager
- GitHub: https://github.com/lbacik/rummager-service