Home Forum Allgemeines Allgemeines zu Nuclos [HOWTO] Regelentwicklung in Eclipse

Ansicht von 2 Beiträgen - 1 bis 2 (von insgesamt 2)
  • Autor
    Beiträge
  • #3955

    Es wurde schon in mehreren Posts geschrieben, dass es problematisch sei, Regeln zu entwickeln und zu debuggen.
    z.B.:
    https://www.nuclos.de/index.php/de/forum/makros-und-regeln/3022-debugging-und-logfiles
    https://www.nuclos.de/index.php/de/forum/makros-und-regeln/1718-beschreibung-der-regeln-apis
    https://www.nuclos.de/index.php/de/forum/allgemeines-zu-nuclos/3113-nuclos-309-nicht-einsetzbar-

    Voraussetzung ist, das sowohl Server als auch Client im Eclipse Debugger laufen und aus den Quellen kompiliert wird. (Wenn das gewuenscht und erlaubt ist, wuerde ich noch posten, wie das geht, oder eine Seite im Wiki dazu schreiben. (Was sagt das Support-Team dazu?))

    Jetzt muss der Classpath des NuclosJavaCompilers angepasst werden. Das geschieht in org.nuclos.server.customcode.codegenerator.NuclosJavaCompiler::init().


    Index: src/java/org/nuclos/server/customcode/codegenerator/NuclosJavaCompiler.java
    ===================================================================
    --- src/java/org/nuclos/server/customcode/codegenerator/NuclosJavaCompiler.java (revision 32)
    +++ src/java/org/nuclos/server/customcode/codegenerator/NuclosJavaCompiler.java (working copy)
    @@ -147,8 +147,12 @@
    private void init() {
    try {
    List classpath = new ArrayList();
    + File wsdlDirectory = NuclosSystemParameters.getDirectory(NuclosSystemParameters.WSDL_GENERATOR_LIB_PATH);
    + String classesPath = wsdlDirectory.getAbsolutePath().concat("/../classes");
    + File classesDirectory = new File(classesPath);
    + classpath.add(classesDirectory);
    classpath.addAll(getExpandedSystemParameterClassPath());
    - classpath.addAll(getLibs(NuclosSystemParameters.getDirectory(NuclosSystemParameters.WSDL_GENERATOR_LIB_PATH)));
    + classpath.addAll(getLibs(wsdlDirectory));
    stdFileManager.setLocation(StandardLocation.CLASS_PATH, new ArrayList
    (classpath));
    stdFileManager.setLocation(StandardLocation.SOURCE_OUTPUT, Collections.singleton(getSourceOutputPath()));
    stdFileManager.setLocation(StandardLocation.CLASS_OUTPUT, Collections.singleton(getBuildOutputPath()));

    Jetzt steht an erster Stelle im Pfad das Verzeichnis webapp/WEB-INF/classes, in das Eclipse die Uebersetzten Quellen wirft.

    Jetz brauchen wir noch den Code fuer die Regel:


    package org.nuclos.project.bcdb;

    import org.nuclos.common.collect.collectable.CollectableEntity;
    import org.nuclos.common.collect.collectable.CollectableEntityField;
    import org.nuclos.common.collect.collectable.Collectable;
    import org.nuclos.common.collect.collectable.CollectableField;
    import org.nuclos.common.collect.collectable.CollectableValueField;
    import org.nuclos.common.collect.collectable.CollectableValueIdField;
    import org.nuclos.common.collect.collectable.searchcondition.*;
    import org.nuclos.common.*;
    import org.nuclos.common.mail.*;
    import org.nuclos.common.fileimport.*;
    import org.nuclos.server.common.*;
    import org.nuclos.server.common.calendar.CommonDate;
    import org.nuclos.server.customcode.NuclosRule;
    import org.nuclos.server.genericobject.valueobject.*;
    import org.nuclos.server.masterdata.valueobject.*;
    import org.nuclos.server.ruleengine.*;
    import org.nuclos.common.dal.vo.EntityObjectVO;
    import java.util.*;

    public class TestRule {
    public static void rule(RuleInterface server) throws NuclosBusinessRuleException {
    // do stuff
    }
    }

    und eine Wrapper-Geschaeftsregel in Nuclos.


    /** @name TestRegel
    */

    public void rule(RuleInterface server) throws NuclosBusinessRuleException {
    org.nuclos.project.bcdb.TestRule.rule(server);
    }

    Das eignet sich allerdings nur zum lokalen Entwickeln auf einer Maschine, funktioniert die Regel, kann sie
    dann in den Nuclos-Regel-Editor kopiert und dem Codegenerator uebergeben werden.

    Viel Spass

    Daniel

    #26169
    caf
    Verwalter
Ansicht von 2 Beiträgen - 1 bis 2 (von insgesamt 2)