Workflow-Bedingungs-Skripte#
sysman
sysadmin
Sie können Zustandsübergängen in Workflows ein Workflow-Bedingungs-Skript zuweisen. Dieses Skript wird ausgeführt
beim Laden eines Vorgangs zum Editieren
beim Abspeichern mit dem Zustandsübergang, dem das Skript zugeordnet ist
Im ersten Fall hat das Bedingungs-Skript damit Einfluss auf die zur Verfügung gestellten Zustände in der Zustandsauswahlliste des Vorgangs beim Editieren. Im zweiten Fall kann das Bedingungs-Skript den gewünschten Zustandsübergang blockieren.
Ein Bedingungs-Skript kann beliebige Prüfungen durchführen und gibt entweder “true” oder “false” zurück.
Beispiele#
Das folgende Skript wird im Workflow zwischen den Übergang vom Initial-Zustand (schwarzer Kreis) in den ersten regulären Zustand gehängt und verhindert, dass automatisch erstellte E-Mails wie Abwesenheitsnachrichten zum Erstellen eines Vorgangs im System führen.
import java.util.List;
import java.util.Map;
import java.util.regex.Pattern;
import com.aurel.track.admin.customize.scripting.BINDING_PARAMS;
import com.aurel.track.admin.customize.scripting.GroovyScriptExecuter;
import com.aurel.track.util.emailHandling.EmailCleanUtils;
public class EmailGuardScript {
private static String PARAMETER_SCRIPT_NAME = "EmailGuardParams";
private static String PARAMETER_SCRIPT_METHOD = "getRejectPatterns";
public Map<String, Object> handleEvent(Map<String, Object> inputBinding) {
String subject = (String)inputBinding.get(BINDING_PARAMS.EMAIL_SUBJECT);
if (subject!=null) {
List<Pattern> rejectPatterns =
(List<Pattern>)GroovyScriptExecuter
.getParameterInstanceGroovyHandler(
PARAMETER_SCRIPT_NAME, PARAMETER_SCRIPT_METHOD);
boolean patternFound = EmailCleanUtils.patternFound(subject,
rejectPatterns);
inputBinding.put(BINDING_PARAMS.GUARD_PASSED, !patternFound);
}
return inputBinding;
}
}
Das folgende zum obigen Skript gehörende Parameter-Skript zeigt, wie Sie Logik und Konfiguration voneinander trennen können:
import java.util.LinkedList;
import java.util.List;
import java.util.regex.Pattern;
import com.aurel.track.util.emailHandling.EmailCleanUtils;
public class EmailGuardParams {
private EmailGuardParams() {
List<String> rejectStrings = new LinkedList<String>();
/******************Reject subject strings************************/
// the regEx which if found in email subject no item/comment will
// be added
rejectStrings.add("Undelivered Mail Returned to Sender");
rejectStrings.add("au�er Haus");
rejectStrings.add("out of.*?house");
rejectStrings.add("out of.*?office");
rejectStrings.add("be out of the office");
/***********Do not modify after this line **********************/
rejectPatterns = EmailCleanUtils.compilePatterns(rejectStrings);
}
private static EmailGuardParams instance = null;
private static List<Pattern> rejectPatterns;
public static EmailGuardParams getInstance() {
if (instance==null) {
instance = new EmailGuardParams();
}
return instance;
}
public static List<Pattern> getRejectPatterns() {
return rejectPatterns;
}
}