Zrozumieć JBoss Drools

Marek Brzozowski
March 17, 2016 | Software development

Zbiór bibliotek napisanych w języku Java zebranych w jeden pakiet JBoss Drools to kompleksowe rozwiązanie szeroko stosowane w biznesie, a dokładniej rzecz ujmując w procesie tworzenia rozwiązań informatycznych dla biznesu. Powstało z potrzeby ułatwienia i przyspieszenia tworzenia biznesowych działań i pozwoliło na zwiększenie elasyczności poprzez wyniesienie logiki biznesowej do konfiguracji danego oprogramowania. Dzięki takiemu podejściu reguły może modyfikować analityk systemowy lub biznesowy, a zmiany wprowadzać bezpośrednio w arkuszach MS Excel lub z użyciem pseudonaturalnego języka DSL (Domain Specific Language). Jednak zamim to zrobi to od nas – ekspertów Drools – zależy jakie wyrażenia DSL będzie miał do dyspozycji lub w jaki sposób będzie zmieniał reguły biznesowe.

Wiedza jest wszystkim

Najnowsza wersja pakietu to Drools 6.3.0.Final. Nie jest moim celem opisywać tu wszystkiego, a jedynie zwrócić uwagę na najważniejsze rzeczy, które pozwolą zrozumieć jak działają reguły. Z tego względu dociekliwych odsyłam do dokumentacji.

Osoby niezaznajomione z Drools’ami często podchodzą do problemu implementowania logiki biznesowej tak jak w kodzie Java, rozwiązując ją za pomocą for’ów, if’ów oraz kondensują całą logikę w ramach kilku reguł, co sprawia, że reguła ma ponad 1000 linii i jest mało czytelna. Reguły powinny być rozsądnie krótkie, logiczne, łatwe do zrozumienia. Jeśli już widzisz taki ciągnący się makaron – rozbij na mniejsze części.

Używaj reguł tam, gdzie:

  • logika zmienia się często,
  • problem jest złożony i tradycyjne podejście jest trudne w implementacji,
  • problem może nie jest złożony, ale tradycyjne podejście się nie sprawdzi,
  • opiekun” logiki biznesowej nie jest techniczny,

Najważniejszą sprawą jest jednak to, aby zrozumieć jak działają reguły. Najlepiej na przykładzie.

Niekończąca się opowieść

Ważna persona z biznesu chce by system przywitał nowego klienta, jeśli jeszcze tego nie zrobił. W tym celu definiujemy klasę Messages, odpowiedni proces oraz plik reguł jak poniżej:

public class Messages {

	public static final Integer UNDEFINED = -1;
	public static final Integer HELLO = 0;
	public static final Integer GOODBYE = 1;

	private String message;

	private Integer status;
	
	public Messages() {
	    this.message = "";
	    this.status = UNDEFINED;
	}
	
	// getter and setters
}

Chcesz poznać nas lepiej? Dowiedz się, co nas wyróżnia.