Home › Forum › Nuclos Entwicklung › Makros und Regeln › Methoden von Geschäftsregeln weiderverwenden
- Dieses Thema hat 2 Antworten und 2 Teilnehmer, und wurde zuletzt aktualisiert vor 12 Jahre von
Markus Glitzner.
-
AutorBeiträge
-
12 Mai 2011 um 01:00 Uhr #3687
Markus Glitzner
TeilnehmerHallo!
Ich habe mir fogende Geschäftsregel beim Speichern einer Entität gebaut:
public void rule(RuleInterface server) throws NuclosBusinessRuleException {
String field = "auftragsnummer"; // the field name of the entity e.g. Aufträge
String key = "Auftragsnummer"; // the value in the name field of the entity Nummernkreiseif (server.isObjectNew()){
//get the next value and increase it
String value = server.callDbFunction("GET_NEXTVALUE", String.class , key);
server.callDbProcedure("SET_NEXTVALUE", key);//get the current entity name and set the value
String entity = org.nuclos.server.genericobject.Modules.getInstance().getEntityNameByModuleId(server.getModuleId());
server.setFieldValue(entity, field, value);
}
}
Diese Regel wird von mehreren Entitäten verwendet wobei sich immer nur die beiden Werte für field und key ändern.Ich würde nun gerne die Regel auslagern und von anderen Geschäftsregeln erneut aufrufen und die Parameter server, field u. key übergeben, sodass sich meine Geschäftsregel der einzelnen Entitäten auf etwa dieses Format verkürzen:
public void rule(RuleInterface server) throws NuclosBusinessRuleException {
setNextValue(server, "auftragsnummer", "Auftragsnummer");
}Geht das? Wenn ja wie?
Schöne Grüße
12 Mai 2011 um 01:49 Uhr #3688Ramin Goettlich
TeilnehmerHallo hugo,
für die Wiederverwendung von Code in Geschäftsregeln gibt es die sog. „Bibliotheksregeln“. Einfach eine neue Bibliotheksregel z.B. wie folgt anlegen:
public class Helper {
public static void setNextValue(...) {
...und dann in Geschäftsregeln z.B. so verwenden:
Helper helper = new Helper();
helper.setNextValue(...);
Grüsse,
nuclosian12 Mai 2011 um 04:04 Uhr #3689Markus Glitzner
TeilnehmerDanke!
mit einer kleinen import Ergänzung hat es funktioniert:
Bibliotheksregel:
//package für RuleInterface u. NuclosBusinessRuleException
import org.nuclos.server.ruleengine.*;public abstract class Helper {
public static void setNextValue(RuleInterface server, String field, String key) throws NuclosBusinessRuleException {
//field: the field name of the entity e.g. Aufträge
//key: the value in the name field of the entity Nummernkreiseif (server.isObjectNew()){
//get the next value and increase it
String value = server.callDbFunction("GET_NEXTVALUE", String.class, key);
server.callDbProcedure("SET_NEXTVALUE", key);//get the current entity name and set the value
String entity = org.nuclos.server.genericobject.Modules.getInstance().getEntityNameByModuleId(server.getModuleId());
server.setFieldValue(entity, field, value);
}
}
}Geschäftsregel:
public void rule(RuleInterface server) throws NuclosBusinessRuleException {
Helper.setNextValue(server, "auftragsnummer", "Auftragsnummer");
}Schöne Grüße
-
AutorBeiträge