Selektionsmaske
Der Aktionstyp Selektion dient dazu, dem Anwender eine Auswahlmöglichkeit zu bieten. Die Auswahl basiert auf Suchen und über entsprechende Konfigurationsmöglichkeiten kann der Anwender bei der Auswahl unterstützt werden.

Zunächst muss die Suche konfiguriert werden. Hierzu kann der Prozessdesigner über den Schalter Suche hinzufügen die im CRM bereits vorhanden Prozess-Suchen anzeigen, dem Prozess hinzufügen oder über den Schalter
Neue Suche eine Prozess-Suche anlegen. Diese Suchen sind Systemsuchen und in der CRM-Anwendung über die normale Suchmaske nicht auswählbar oder veränderbar.
Beim Erstellen einer neuen Suche aus dieser Maske heraus kann als Start-Entität nur eine der Entitäten aus dem Datenmodell des Prozesses genutzt werden.
Insbesondere ist der Button inaktiv, wenn das Datenmodell des Prozesses leer ist.
Aus den Suchen, die dem Prozess bekannt sind, kann er dann die Suchen wählen:

Diese Suche lässt sich dann über den Schalter Suche bearbeiten modifizieren oder unter einem neuen Namen speichern.
An dieser Stelle kann verifiziert werden, ob die Suche das erwartete Ergebnis liefert.

Abbildung: Bearbeitung einer Suche
Die Anzeigefelder der Suche werden dem Anwender bei der Ausführung angezeigt, daher werden diese in der Box Anzeigefelder zur Orientierung auch dem Prozessdesigner aufgelistet.
Zusätzlich zur gewählten Suche, kann die angezeigte Suche im Selektionsdialog auch durch eine Variable mit der ID (Plainkey) einer anderen Suche übersteuert werden. Beide Suchen sollten sich in der Struktur gleichen. Dadurch ist es möglich die verwendete Suche auf Grund vorangegangener Entscheidungen im Prozess zu verändern.

Enthält die gewählte Suche Parameter-Templates, so müssen diese vor der Ausführung und der Anzeige in der Suchmaske durch Variablen ersetzt werden. Die gewählten Variablen werden als Suchparameter angezeigt. Überflüssige Parameter kann man über das Kontextmenü wieder entfernen.

Anschließend kann er im Feld Ergebnis-Selektion konfigurieren, wie viele Datensätze der Anwender wählen kann oder muss, um den Schritt erfolgreich abzuschließen.

Die Optionen Suche direkt ausführen sorgt dafür, dass der Anwender beim Öffnen des Tasks eine Liste mit den Ergebnissen vorfindet, dies ist sinnvoll, wenn die Suche soweit bereits eingegrenzt ist. Für den Fall das die Option Suchfelder anzeigen deaktiviert ist, ist dies der Standard. Suchfelder anzeigen sorgt dafür, dass die in der Suche als Suchfelder deklarierten Felder dem Anwender zur Eingabe angezeigt werden und zudem bekommt er die Möglichkeit die Suche auszuführen.
Über das Skript auf der Maske können die Suchkriterien und die Suchausführung individuell angepasst werden. In der Einstiegs-Methode initTask()
können die Felder der Suchmaske mit z.B. FieldUtils.setValue
aus Prozess-Variablen vorbelegt werden. Das Volltext-Suchfeld kann über den Feldnamen "Lucene.<Bereich>" angesprochen werden. Datumsfelder, die mit der Funktion "liegt zwischen" aus zwei Felder bestehen, können mit der Angabe von "#0" bzw. "#1" am Ende des Feldnamens das entsprechende Feld der Suchmaske beschreiben. Die Ausführung dieser Methoden findet VOR der automatischen Ausführung der Suche statt.
Es ist auch möglich, die Suche automatisch, also ohne Benutzerinteraktion, direkt beim Öffnen der Benutzeraktion zu starten, indem die Methode SearchListUtils.startSearch()
verwendet wird. Dabei werden die im Skript zuvor belegten Werte aus der Selektionsmaske ebenfalls verwendet.
Es können auch Variablen als Suchparameter zu einer Suche hinzugefügt werden. Diese Parameter ersetzen die Platzhalter-Templates analog zu den Logiken im CRM in der sichtbaren Reihenfolge. Werden weniger Parameter angegeben als in der Suche definiert wurden, so werden die Parameter ohne Variablen mit keiner Bedingung versehen. Die Ersetzung der Platzhalter-Templates greift beim Öffnen der Aktion vor der initialen Ausführung der Suche.
Verarbeitung der Selektion im Prozess
Zur Vereinfachung der Auswahl durch den Benutzer kann das Fortfahren per Doppelklick aktiviert werden. Dies ist sinnvoll, wenn genau ein Datensatz gewählt werden soll. Der Doppelklick ist aber auch bei einer Mehrfachauswahl per STRG-Taste möglich.
Damit die selektierten Datensätze im Prozess weiterverarbeitet werden können, müssen diese als Prozess-Variable in der Einstiegsmethode completTask()
hinzugefügt werden:
void completeTask()
{
List<IContainer> selectedRows = SearchListUtils.getSelectedRows();
ProcessUtils.setVariable("listSelection", selectedRows);
}