System provisioningowy
Jest to system przeznaczony do provisioningu kontraktów i usług w systemach technicznych (sieciowych) u operatora sieci telekomunikacyjnej.
Został wdrożony produkcyjnie przez BlueSoft na początku 2006 roku i od tej pory jest stale rozwijany.
W 2007 roku został wdrożony jako system provisioningu usług dla operatorów wirtualnych (MVNO).
W styczniu 2009 został również wdrożony produkcyjnie u operatora usług stacjonarnych i jest wykorzystywany do provisioningu platformy VoIP.
Do jego głównych zadań należą:
- Aktywacja i deaktywacja kontraktów GSM, CDMA, xDSL w systemach technicznych
- Aktywacja, modyfikacja i deaktywacja usług podstawowych, VAS i WLR
- Provisioning produktów i usług na platformie VoIP
- Provisioning produktów i usług dla operatorów wirtualnych MVNO
Cechy systemu
Spójna, przemyślana architektura, modułowa budowa i szerokie możliwości konfiguracyjne systemu pozwalają na jego łatwe wdrożenie i szybkie dostosowanie do specyfiki wymagań klienta.
Dedykowany silnik reguł biznesowych
Unikalną i wyróżniającą produkt cechą jest zastosowanie opracowanego przez BlueSoft dynamicznego języka reguł biznesowych Provisioning Script, dostosowanego do specyfiki domeny tego systemu (Domain Specific Language).
Silnik Provisioning Script wykorzystuje również własny język zapytań PQL (Provisioning Query Language), pozwalający na łatwe wyszukiwanie danych w dokumentach wejściowych i na stosowanie skomplikowanych predykatów.
Konfiguracja umożliwia szybkie dokonanie zmian w działaniu systemu, bez potrzeby jego zatrzymywania - załadowanie nowej konfiguracji jest możliwe na systemie działającym online (hot swap).
Język Provisioning Script posiada następujące konstrukcje leksykalne:
- procesy i podprocesy
- parametry z argumentami (odpowiednik funkcji/metod z języków ogólnego przeznaczenia)
- instrukcje warunkowe
- iteracje
- instrukcje przypisania
- wywołania parametrów i podprocesów
- wyjątki użytkownika
- operacje adapterowe
- stałe, tablice stałych, tablice dynamiczne
- wyrażenia PQL
Wysoka wydajność i skalowalność
Aplikacja przetwarza zlecenia z systemów zewnętrznych w sposób wielowątkowy i asynchroniczny, pozwalając na osiągnięcie wysokiej wydajności przetwarzania i dużej skalowalności, przy jednoczesnej łatwości jego monitorowania i strojenia przez administratorów.
Każdy typ zlecenia może mieć przypisaną tzw. klasę obsługi, która określa jego priorytet względem innych zleceń, umożliwia regulację liczby przetwarzanych zleceń z danej klasy lub całkowite wyłączenie przetwarzania zleceń danego typu, a także zdefiniowanie reguł dla powtórzeń w przypadku wystąpienia błędów.
Aplikacja pozwala również na dynamiczne sterowanie liczbą zleceń wysyłanych w danej chwili do systemów provisionowanych, co zapobiega nadmiernemu ich obciążeniu (sterowanie przepływem) i jest kluczowe z punktu widzenia stabliności i dostępności całej platformy integracyjnej.
Zaawansowane możliwości konfiguracyjne
Każde zlecenie może posiadać wiele tzw. wartości kluczowych (key values - wartość obiektu biznesowego, np. nr abonenta), co umożliwia ich łatwą identyfikację i wyszukiwanie przy pomocy narzędzia monitorującego.
Wartości kluczowe pozwalają również na proste serializowanie zleceń, czyli wykonywanie szeregowo zleceń, operujących na danym obiekcie biznesowym.
Ponadto system posiada bardziej zaawansowane możliwości konfigurowania blokad (locks), sterujących sposobem współbieżnego wykonywania się zleceń na tych samych obiektach biznesowych, zapobiegając tym samym osiągnięciu niespójnego stanu tych obiektów. Umożliwia to uzyskanie bardziej złożonych zależności pomiędzy wieloma obiektami biznesowymi, niż przy użyciu prostej serializacji.
Każda operacja wykonywana na systemach provisionowanych, może posiadać odpowiednią operację kompensującą, co umożliwia wycofanie (rollback) zmian poczynionych w trakcie realizacji zlecenia i przywrócenie systemu provisionowanego do stanu sprzed rozpoczęcia wykonywania zlecenia (transakcyjność).
Otwarta architetura modułowa
System jest zbudowany w architekturze luźno powiązanych ze sobą komponentów, co znacznie ułatwia dalszą jego rozbudowę i modyfikację. Do zasadniczych komponentów systemu należą:
- Configuration - konfiguracja reguł biznesowych, opisujących sposób dekompozycji zleceń danego typu na atomowe operacje. Konfiguracja odbywa się przy użyciu narzędzie Console - drzewa reguł buduje się w sposób wizualny przy pomocy konsoli konfiguracyjnej i z użyciem wyrażeń języka Provisioning Script oraz PQL.
Dla każdej operacji, która ma zostać wykonana na systemach dziedzinowych, można zdefiniować mapowania danych, które muszą być przekazane do warstwy adapterowej tych systemów.
Konfigurować można również atrybuty operacji adapterowych, takie jak liczbę powtórzeń w przypadku wystąpienia błędu, czas pomiędzy powtórzeniami, listę błędów akceptowalnych, a także maksymalną liczbę operacji, którą dany adapter jest w stanie obsłużyć jednocześnie (regulacja obciążenia).
Dla każdej operacji adapterowej można zdefinować odpowiednią operację kompensującą.
Konfiguracja jest trwale przechowywana w bazie danych, co umożliwia jej łatwe wersjonowanie oraz zapewnia bezpieczeństwo i integralność danych.
- Provisioning Script Engine - moduł napisany przy użyciu języka Java (Cup/JLex), który na podstawie danych wejściowych oraz reguł definiowanych z użyciem Provisioning Script i PQL, wyznacza scenariusz przetwarzania zlecenia i operacje do wykonania na adapterach systemów provisionowanych (dziedzinowych).
Wykonuje automatycznie zaawansowane techniki optymalizacyjne, pozwalając na szybki dostęp do danych z użyciem zapytań PQL. Engine potrafi wykryć odwołania do stałych oraz wyrażeń, których wartości są już znane bądź mogą być obliczone już na etapie rozpoczynania wykonywania reguł, a także indeksuje dane z dokumentu wejściowego zlecenia dla wyrażeń, które będą mogły być obliczone dopiero na etapie wykonywania reguł (w runtime), w celu uzyskania szybkiego dostępu do nich
- Dispatcher Engine - moduł składający się z części bazodanowej (Oracle PL/SQL) i z części integracyjnej na platformie webMethods, odpowiedzialny za asynchroniczną realizację scenariusza, wyznaczonego przez Provisioning Script engine, obsługę sytuacji awaryjnych (błędnych), obsługę kompensacji, blokad oraz wysyłanie notyfikacji do systemów zlecających.
Dane operacyjne są trwale zapisywane w bazie danych, co zapewnia kontynuację pracy systemu, np. po usunięciu zaistniałej awarii, oraz łatwe monitorowanie przebiegu wykonywania zleceń.
- Stub Services - warstwa usług na platformie integracyjnej webMethods, dostosowujących postać danych dla operacji wyznaczonych przez Provisioning Script engine do specyfiki danego adaptera systemu provisionowanego. Stanowi warstwę abstrakcji, oddzielającą specyficzne dla systemu dziedzinowego mapowania danych od pozostałych komponentów systemu provisioningowego.
- Console/Debugger - narzędzie dla deweloperów/administratorów do wizualnej konfiguracji reguł biznesowych, sterujących sposobem dekompozycji zleceń i przepływem danych.
Umożliwia administratorom konfigurowanie parametrów dynamicznych systemu, takich jak: makymalna liczba przetwarzanych zleceń, parametry klas obsługi, sterujące przetwarzaniem zleceń danego typu oraz ustawienie poziomu logowania zachowania systemu.
Zasadniczą częścią konsoli jest również wizualny debugger reguł biznesowych, pozwalający na krokowe śledzenie wykonywania się reguł dla zadanych danych wejściowych, podgląd stanu zmiennych lokalnych i globalnych, podgląd wartości obliczonych parametrów dla operacji adapterowych, stawianie break pointów w dowolnym miejscu kodu. Stanowi nieocenione narzędzie dla developerów, przyspieszając tworzenie i testowanie nowych reguł biznesowych.
Konsola została wykonana w technoligii JSP/Struts, z użyciem techniki AJAX (DWR).
- Provisioning Monitor - narzędzie monitorujące pracę wszystkich kluczowych komponentów systemu. Umożliwia wyszukanie zleceń wg zadanych kryteriów (typ, status, data złożenia, data przetworzenia, wartości kluczowe) i przegląd danych operacyjnych zleceń - stan wykonania scenariusza, wartości obliczonych parametrów, przekazywanych do systemów provisionowanych, błędy zwracane przez te systemy. Pozwala administratorom na ponowienie lub anulowanie wybranych zleceń oraz podgląd logów systemu, ułatwiając lokalizowanie i eliminację ewentualnych problemów.
Narzędzie zostało wykonane w technologii webMethods DSP.