Jestem wielkim fanem silników reguł biznesowych, ponieważ mogą one znacznie ułatwić Ci życie jako programista. Jednym z pierwszych doświadczeń, jakie miałem podczas pracy nad projektem hurtowni danych, było znalezienie procedur składowanych zawierających skomplikowane struktury CASE rozciągające się na całe strony. Debugowanie było koszmarem, ponieważ bardzo trudno było zrozumieć logikę stosowaną w tak długich strukturach CASE i określić, czy masz nakładanie się reguły na stronie 1 kodu z inną ze strony 5. Ogólnie ponad 300 takich reguł osadzonych w kodzie.
Kiedy otrzymaliśmy nowe wymaganie dotyczące rozwoju czegoś, co nazywa się Accounting Destination, które obejmowało obsługę ponad 3000 reguł, wiedziałem, że coś musi się zmienić. Pracowałem wtedy nad prototypem, który później stał się rodzicem tego, co teraz jest silnikiem Custom Business Rule, zdolnym do obsługi wszystkich standardowych operatorów SQL. Początkowo używaliśmy Excela jako narzędzia do tworzenia treści, a później stworzyliśmy aplikację ASP.net, która pozwoli użytkownikom biznesowym definiować własne reguły biznesowe bez konieczności pisania kodu. Teraz system działa dobrze, z bardzo małą liczbą błędów i zawiera ponad 7000 reguł obliczania tego miejsca docelowego księgowania. Nie sądzę, by taki scenariusz był możliwy po prostu na sztywno.
Jednak takie podejście ma pewne ograniczenia:
- Musisz mieć zdolnych użytkowników biznesowych, którzy doskonale rozumieją działalność firmy.
- Przeszukiwanie całego systemu (w naszym przypadku hurtowni danych) wymaga dużego nakładu pracy, aby określić wszystkie zakodowane na stałe warunki, które mają sens w przełożeniu na reguły obsługiwane przez Business Rule Engine. Musieliśmy również zadbać o to, aby te wstępne szablony były w pełni zrozumiałe dla użytkowników biznesowych.
- Potrzebujesz aplikacji służącej do tworzenia reguł, w której zaimplementowane są algorytmy wykrywania nakładających się reguł biznesowych. W przeciwnym razie skończysz z wielkim bałaganem, w którym nikt już nie zrozumie wyników, jakie osiągają. W przypadku błędu w komponencie ogólnym, takim jak niestandardowy silnik reguł biznesowych, debugowanie może być bardzo trudne i wymaga obszernych testów, aby upewnić się, że rzeczy, które działały wcześniej, działają również teraz.
Więcej szczegółów na ten temat można znaleźć w poście, który napisałem: http://dwhbp.com/post/2011/10/30/Implementing-a-Business-Rule-Engine.aspx
Ogólnie rzecz biorąc, największą zaletą korzystania z silników reguł biznesowych jest to, że pozwala użytkownikom odzyskać kontrolę nad definicjami reguł biznesowych i tworzeniem treści, bez konieczności udawania się do działu IT za każdym razem, gdy muszą coś zmienić. Zmniejsza również obciążenie pracą zespołów programistów IT, które mogą teraz skupić się na tworzeniu rzeczy o większej wartości dodanej.
Twoje zdrowie,
Nicolae