Home › Forum › Nuclos Konfiguration › Businessprozesse › Direktes Setzen einer Aktion
- Dieses Thema hat 7 Antworten und 3 Teilnehmer, und wurde zuletzt aktualisiert vor 10 Monaten von
Dieter Mennig.
-
AutorBeiträge
-
6 April 2011 um 12:51 Uhr #3432
Matthias Haake
TeilnehmerHallo,
in einer Regel möchte ich beim Speichern die Aktion des Objektes setzen (nuclosProcess). Wie realisiere ich das?
Was ich bereits (ohne Erfolg) probiert habe:
server.setEnumeratedAttributeByValue("nuclosProcess", "Aktion 1");
Und das funktionierte leider auch nicht:
server.setFieldValue("entityName", "nuclosProcess", "Aktion 1");
Bei den Aufrufen kommt auch nie eine Fehlermeldung – geändert ist der Wert aber trotzdem nicht. Habe ich eine API-Funktion übersehen?
Vielen Dank im Voraus für jeden Tipp!
Freundliche Grüße,
Matthias6 April 2011 um 13:04 Uhr #3433Claudia Mangstl
TeilnehmerHallo Matthias,
Sie müssen hier auf jeden Fall die ID des Aktionswertes setzen:
server.setField(sEntityName, "nuclosProcess", , null);
Viele Grüße,
Claudia6 April 2011 um 13:06 Uhr #3434Matthias Haake
TeilnehmerSuper, danke!!! Und die ID kriege ich woher? Ich habe mal was versucht:
CollectableComparison condition = server.newGOComparison("nuclosProcess", "process", ComparisonOperator.EQUAL, "Aktion 1");Collection result = server.getGenericObjectIds("nuclosProcess", condition);
Fehler: Ein Attribut mit dem Namen „process“ ist nicht vorhanden.
Hmm, gibts eine Doku zu den Nuclos-internen Entitäten?
Vielen Dank,
Matthias6 April 2011 um 13:30 Uhr #3435Matthias Haake
TeilnehmerIch habe durch es mittels „trial and error“ jetzt so realisiert:
Collection ids = server.getMasterDataIds("nuclos_process");
for (Iterator it = ids.iterator(); it.hasNext(); )
{
Integer id = (Integer)it.next();
MasterDataVO processObj = server.getMasterData("nuclos_process", id);
String processName = processObj.toString();
//...
}
Ist nicht die effizienteste Herangehensweise – aber es funktioniert erstmal. Falls Sie noch einen besseren Weg kennen, wäre ich Ihnen dankbar.
Viele Grüße,
Matthias6 April 2011 um 13:39 Uhr #3436Matthias Haake
TeilnehmerDer Vollständigkeit halber noch als Ergänzung: Die Module-ID sollte natürlich geprüft werden. Sonst weist man dem Objekt event. eine gleichlautende Aktion eines anderen Moduls zu.
Integer moduleId = server.getModuleId();Collection ids = server.getMasterDataIds("nuclos_process");
for (Iterator it = ids.iterator(); it.hasNext(); )
{
Integer id = (Integer)it.next();
MasterDataVO processObj = server.getMasterData("nuclos_process", id);
String processName = processObj.toString();
Integer processModuleId = (Integer)processObj.getField("moduleId");if (processModuleId.equals(moduleId) && processName.equals(""))
{
// .. set process
break;
}
}6 April 2011 um 16:28 Uhr #3440Claudia Mangstl
TeilnehmerHallo Matthias,
die erste Variante war vom Prinzip her schon die richtige. So sollte es funktionieren:
CollectableComparison cond1 = org.nuclos.common.SearchConditionUtils.newMDComparison(org.nuclos.server.common.MasterDataMetaCache.getInstance().getMetaData(NuclosEntity.PROCESS.getEntityName()), "name", ComparisonOperator.EQUAL, "");
Collection result = server.getMasterDataIds(NuclosEntity.PROCESS.getEntityName(), new org.nuclos.server.genericobject.searchcondition.CollectableSearchExpression(cond1));
Ich werde eine Liste mit den internen Bezeichnungen der Nuclosentitäten ins Wiki stellen.
Viele Grüße,
Claudia1 August 2022 um 10:25 Uhr #26714Dieter Mennig
TeilnehmerHi zusammen,
ich würde diesen Task gerne nochmal aufmachen. Kann bitte jemand einen Codeschnipsel posten, wie das in der aktuellen API funktioniert, also direktes Setzen einer Aktion per Regel.
Danke euch.
1 August 2022 um 20:39 Uhr #26715Dieter Mennig
TeilnehmerHabs gefunden, steht im Wiki unter dem Query Provider –> runterscrollen bis zur Methode getByProcess. Somit erledigt.
-
Diese Antwort wurde geändert vor 10 Monaten von
Dieter Mennig.
-
Diese Antwort wurde geändert vor 10 Monaten von
-
AutorBeiträge