Geschäftsprozesse
Als nächster Punkt, sind bei der Entwicklung von Enterprise Application Software die Geschäftprozesse zu bedenken. Auch hierfür bietet das x4:framework eine komfortable Hilfestellung an.
Ein Geschäftsprozess stellt einen definierten Vorgang innerhalb des Applikations-Servers dar, an dem zumeist Geschäftsobjekte (Session Beans) beteiligt sind.

Beispiele für einen Geschäftsprozess:
- Anlegen und freigeben einer News in einem Content Management System,
- Buchen eines Fluges in einem Online-Reisebüro,
- Kaufen eines Buches in einem Online-Shop,
- Protokollieren eines Telefonats mit einem Kunden in einem Costumer, Relationship Management System.
Zum einen ist zu erwarten, dass eine relativ große Anzahl an Geschäftsprozessen abzubilden und somit zu implementieren ist.
Zum anderen werden die Geschäftsprozesse zwar ausschließlich auf dem Applikations-Server ausgeführt, initiiert werden sie aber durch den Benutzer. Das bedeutet, dass die Ausführung in der Rich Client Anwendung bzw. im Präsentations-Server beginnt.
Hieraus ergeben sich folgende benötigte Klassen pro Geschäftsprozess:

Für den Anwendungsfall spezifisch ist hier ausschließlich der Code, der in der Implementierungs-Klasse vorhanden ist. Die restlichen Klassen werden zwar zwingend benötigt, der Code bleibt allerdings im Grunde immer unverändert. Daher ist es sinnvoll, große Teile des benötigten Codes zu generieren.
Auch hierfür stellt das Framework einen Generator zur Verfügung. Dieser nimmt die Implementierung des Geschäftsprozesses entgegen und sorgt für die Generierung der restlichen benötigten Strukturen. Die Konfiguration der Ausgabe ist in diesem Fall über bestimmte Tags möglich, die innerhalb der Implementierung des Geschäftsprozesses angegeben werden.
Folgende Methode soll nicht innerhalb einer Transaktion ausgeführt werden
/**
* @x4.sessionBean.service.noTransaction
*/
public boolean isAuthenticated()
{
...
Nach Aufruf folgender Methode ist kein Update des Caches notwendig
/**
* @x4.sessionBean.service.noCacheUpdate
*/
public byte[] getKeyForClientSideEncryption()
{
...
Somit ist der Aufwand, der für die Implementierung der Geschäftslogik anfällt, auf ein Minimum reduziert.