Hallo Hans,
hier nun der Code meiner Regeln in der vereinfachten Version.
Die Bibliotheksregel:
import org.nuclos.common.collect.collectable.searchcondition.*;
import org.nuclos.server.masterdata.valueobject.*;
import org.nuclos.server.ruleengine.*;
import java.util.*;
public abstract class Zaehler {
public static void zaehleEinenHoch(RuleInterface server, String suchbegriff) throws NuclosBusinessRuleException {
CollectableComparison cond = org.nuclos.common.SearchConditionUtils.newMDComparison(org.nuclos.server.common.MasterDataMetaCache.getInstance().getMetaData("WerteTest"), "suchfeld", ComparisonOperator.EQUAL, suchbegriff);
Collection ids = server.getMasterDataIds("WerteTest", new org.nuclos.server.genericobject.searchcondition.CollectableSearchExpression(cond));
Object[] objekte = ids.toArray();
String test = "Testnummer";
Integer aktuellerWert = 0;
if (objekte.length == 1) {
Integer id = new Integer(objekte[0].toString());
MasterDataVO item = server.getMasterData("WerteTest", id);
aktuellerWert = (Integer)item.getField("wert");
aktuellerWert = aktuellerWert++;
server.setFieldValue("WerteTestZiel", "zeichenkette", test + aktuellerWert.toString());
server.setFieldValue("WerteTest", id, "wert", aktuellerWert);
}
else
{
throw new NuclosBusinessRuleException("Fehler");
}
}
}
Die Geschäftsregel dazu:
public void rule(RuleInterface server) throws NuclosBusinessRuleException {
String suchbegriff = "Suchwort2";
Zaehler.zaehleEinenHoch(server, suchbegriff);
}
Im Anhang noch ein Ausschnitt aus den Logs zu dem Zeitpunkt, an dem die Regel zwei Mal ausgeführt wird.
Ich benutze Nuclos in der neuesten Beta-Version. Haben wir hier vielleicht einen Bug?
Danke und viele Grüße 🙂
P.S.: Das mit dem 0.5 hochzählen war auch mehr eine Verzweiflungsidee… 🙂