Home Forum Nuclos Konfiguration Businessprozesse Direktes Setzen einer Aktion

Ansicht von 8 Beiträgen - 1 bis 8 (von insgesamt 8)
  • Autor
    Beiträge
  • #3432
    Matthias Haake
    Teilnehmer

    Hallo,

    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,
    Matthias

    #3433
    Claudia Mangstl
    Teilnehmer

    Hallo Matthias,

    Sie müssen hier auf jeden Fall die ID des Aktionswertes setzen:

    server.setField(sEntityName, "nuclosProcess", , null);

    Viele Grüße,
    Claudia

    #3434
    Matthias Haake
    Teilnehmer

    Super, 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,
    Matthias

    #3435
    Matthias Haake
    Teilnehmer

    Ich 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,
    Matthias

    #3436
    Matthias Haake
    Teilnehmer

    Der 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;
    }
    }

    #3440
    Claudia Mangstl
    Teilnehmer

    Hallo 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,
    Claudia

    #26714
    Dieter Mennig
    Teilnehmer

    Hi 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.

    #26715
    Dieter Mennig
    Teilnehmer

    Habs 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.
Ansicht von 8 Beiträgen - 1 bis 8 (von insgesamt 8)