GEDOPLAN
JavaBusiness Process Management (BPM)Application ServerJakarta EE (Java EE)Softwarearchitektur

CIB seven in der Praxis

JavaBusiness Process Management (BPM)Application ServerJakarta EE (Java EE)Softwarearchitektur
gears 534989 1280

Im Dezember habe ich euch in meinem Blog-Beitrag darüber berichtet, dass die beliebte BPM-Lösung Camunda 7 in das Projekt CIB seven übergegangen ist.

Heute möchte ich damit beginnen ein Praxisbeispiel aus dem Jakarta EE Umfeld vorzustellen. Bei Enterprise-Anwendungen, die einen Prozess abbilden starten wir zunächst mit der Modellierung mit Hilfe der BPMN. Ich habe einen einfachen Buchungsprozess bspw. für unsere Seminare erstellt.

Da das Beispiel doch recht viele Aspekte beinhaltet, habe ich mich dazu entschieden diesen Blog-Beitrag aufzuteilen.

Buchung eines Kurses

buchung 1

Wer jetzt nicht so vertraut mit BPMN ist, der kann sicherlich den wichtigen Teil dieses Prozesses erkennen. Für das bessere Verständnis erläutere ich den Prozess zunächst in Textform.

Beim Start werden Buchungsdaten wie der gewünschte Kurs, der Kursbeginn, das Buchungsdatum, der Name des Teilnehmers und seine EMail-Adresse an den Prozess übergeben. Hierbei können wir ganz einfach eine Java-Klasse verwenden.

@Data
public class Buchung implements Serializable {
  private LocalDateTime date;
  private String course;
  private LocalDate start;
  private String customer;
  private Integer rebate;
  private String email;
}

Im zweiten Schritt wird auf Basis dieser Daten eine Bestätigungsmail verschickt. Dabei handelt es sich um einen sogenannten Service Task, der eine automatische Verarbeitung ermöglicht.

Im nächsten Schritt wollen wir nun prüfen, ob der Teilnehmer bereits bei uns registriert ist um ggf. Rabatte für ihn zu ermitteln.

Die Raute mit dem X ist in BPMN ein sogenanntes Gateway. Hier erfolgt auf Basis von Variablen eine Entscheidung über den weiteren Verlauf des Prozesses. Falls keine Rabatte für die Buchung vergeben werden können, erfolgt sofort der Versand der Buchungsbestätigung.

Ist bei der Prüfung der Kundendatenbank herausgekommen, dass dort für den Kurs Rabatte vergeben wurden, dann wird im nächsten manuellen Schritt, dem sogenannten User Task geprüft, ob diese auch korrekt ermittelt wurden. Diese manuelle Aufgabe ist durch das kleine Personensymbol gekennzeichnet und bedeutet, dass über irgendeine Schnittstelle die Prüfung durch eine Person erfolgen muss.

Nach Abschluss dieser Prüfung wird dann ebenfalls eine Buchungsbestätigung versendet.

Um den Prozess möglichst einfach zu halten, habe ich alle anderen Aspekte eines Buchungsprozesses weggelassen. Nun sollten wir den Prozess einigermaßen verstanden haben und können uns mit den technischen Details beschäftigen.

CIB seven Workflow-Engine

Schauen wir uns zunächst einmal den Prozessschritt für die Prüfung der Bestandskunden und die Ermittlung eines Rabattes an. Wir gehen an dieser Stelle davon aus, dass wir einen möglichen Rabatt für einen Kunden in der Datenbank gespeichert haben. Das könnte sich zum Beispiel an der Häufigkeit der Kursbuchungen orientieren oder andersweitig ermittelt werden. Um nun die Implementierung an den Prozess anbinden zu können, können wir die Jakarta Expression Language (EL) verwenden.

implementation 2 png

Der CustomerService ist eine CDI-Bean in der auch andere Beans, wie bspw. Repositories verwendet werden können.

@Named
@RequestScoped
public class CustomerService {
  @Inject
  CustomerRepository customerRepository;

  public Booking check(Booking booking) {
    customerRepository.findCustomerByName(booking.getCustomer())
        .ifPresent(customer -> booking.setRebate(customer.getRebate()));
    return booking;
  }
}

Die Implementierung der Methode findCustomerByName gibt lediglich in einem Fall einen Rabatt zurück und das ist wenn der Name „Max Mustermann“ verwendet wird. Damit können wir einen Happy-Path unseres Prozesses ohne den Aufruf des User Task durchlaufen.

Wer dieses Beispiel bereits jetzt ausprobieren möchte, kann das Projekt wie immer auf GitHub finden. Dort sind auch Daten hinterlegt mit denen man über einen Rest-Aufruf den Prozess starten kann. Ansonsten könnt ihr euch schon auf den zweiten Teil meines Beitrags freuen, in dem wir noch weiter unseren Buchungsprozess durchlaufen werden.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Bitte füllen Sie dieses Feld aus.
Bitte füllen Sie dieses Feld aus.
Bitte gib eine gültige E-Mail-Adresse ein.
Sie müssen den Bedingungen zustimmen, um fortzufahren.

Autor

Diesen Artikel teilen

LinkedIn
Xing

Gibt es noch Fragen?

Fragen beantworten wir sehr gerne! Schreibe uns einfach per Kontaktformular.

Kurse

weitere Blogbeiträge

Work Life Balance. Jobs bei Gedoplan

We are looking for you!

Lust bei GEDOPLAN mitzuarbeiten? Wir suchen immer Verstärkung – egal ob Entwickler, Dozent, Trainerberater oder für unser IT-Marketing! Schau doch einfach mal auf unsere Jobseiten! Wir freuen uns auf Dich!

Work Life Balance. Jobs bei Gedoplan

We are looking for you!

Lust bei GEDOPLAN mitzuarbeiten? Wir suchen immer Verstärkung – egal ob Entwickler, Dozent, Trainerberater oder für unser IT-Marketing! Schau doch einfach mal auf unsere Jobseiten! Wir freuen uns auf Dich!