Versionen im Vergleich

Schlüssel

  • Diese Zeile wurde hinzugefügt.
  • Diese Zeile wurde entfernt.
  • Formatierung wurde geändert.
Kommentar: Migrated to Confluence 5.3

...

Ausführen eines Arbeitsschrittes


MethodeBeispiel
insertexecute
MethodeBeispiel
update
Codeblock
public class Bestellunganlegen implements InsertRule {
    public void insert(InsertContext context) throws BusinessException { 

        Anfrageposition newPos = new Anfrageposition();
        
        Artikel myArticel = QueryProvider.getById(Artikel.class, 40465351L);
        Lager myLager = QueryProvider.getById(Lager.class, 40276065L);
   
        newPos.setPositionsnr(0);        
        newPos.setArtikelId(myArticel.getId());
        newPos.setAnzahl(2.0d);
        newPos.setLagerId(myLager.getId());
     
        BusinessObjectProvider.insert(newPos);
    }
}

Erläuterung:

Neue BusinessObjekte werden einfach mit new instantiiert und anschließend befüllt. Denken Sie daran, dass viele Instanzen von Entitäten in Nuclos Referenzen auf andere Entitäten besitzen. In oberen Beispiel das Lager und der Artikel. In diesem Fall ermitteln Sie die Daten, z.B. mit Hilfe des QueryProviders, und weisen sie über die Id des Eintrages zu. Wurde das BusinessObjekt korrekt und vollständig befüllt, kann es mit dem Aufruf der Methode "insert" abgespeichert werden.

insertAlllDie InsertAll-Methode unterscheidet sich von der Verarbeitung der Daten nicht von der insert-Methode. Über übergebene Collection wird sequentiell abgearbeitet und die einzelnen Einträge an die insert-Methode weitergereicht.

Aktualisieren bestehender Einträge

Codeblock
public class Bestellunganlegen implements InsertRuleimport org.nuclos.api.provider.GenerationProvider;

public class AuftragAbschliessen implements UpdateFinalRule {
    public void insertupdateFinal(InsertContextUpdateContext context) throws BusinessException { 
       
        Artikel myArticelAuftrag a = QueryProvidercontext.getByIdgetBusinessObject(ArtikelAuftrag.class, 40465351L);
        Rechnung r 
        myArticel.setEinstandspreis(3.99d);
        
        BusinessObjectProvider.update(myArticel= GenerationProvider.execute(a, ErstelleRechnungAusAuftragGEN.class);
    }
}

Erläuterung:

Der Artikel wird mit Hilfe des QueryProviders ermitteln und verändert. Im oberen Beispiel wird der Einstandspreis eines Artikels neu geschrieben. Da der Artikel bereits in der Datenbank vorhanden ist, kann mit dem Aufruf der update-Methode der Eintrag aktualisiert werden.

updateAllDie UpdateAll-Methode unterscheidet sich von der Verarbeitung der Daten nicht von der update-Methode. Über übergebene Collection wird sequentiell abgearbeitet und die einzelnen Einträge an die update-Methode weitergereicht.

Löschen bestehender Einträge

Die deleteLogicalAll-Methode unterscheidet sich von der Verarbeitung der Daten nicht von der deleteLogical-Methode. Die übergebene Collection wird sequentiell abgearbeitet und die einzelnen Einträge an die deleteLogical-Methode weitergereicht

Die Ausführung eines Arbeitsschrittes über den GenerationProvider kann aus jeder Regel heraus vorgenommen werden. Aufgrund der Typsicherheit müssen Quell- und Zielobjekte immer zum Arbeitsschritt, resp. zu den hinterlegten Typen der generierten Arbeitsschritt-Klasse passen. Im oberen Beispiel erstellt der Arbeitsschritt "Erstelle Rechnung aus Auftrag" eine Rechnung. Der übergebene Parameter a muss vom Typ "Auftrag" sein. Der Rückgabewert muss wiederum vom Typ "Rechnung" sein. Erlaubt sind nur diese Typen von BusinessObjekten, andere Angaben führen zu Compile-Fehlern in der Regel,da sie nicht zur Klasse "ErstelleRechnungAusAuftragGEN" passen.

Im Falle eines Laufzeit-Fehlers wird eine BusinessException geworfen

MethodeBeispiel
delete
Codeblock
public class Bestellpositionanlegen implements InsertRule {
    public void insert(InsertContext context) throws BusinessException { 
       
        Artikel myArticel = QueryProvider.getById(Artikel.class, 40465351L);
            
        BusinessObjectProvider.delete(myArticel);
    }
}

Erläuterung:

Ein bestehender Artikel wird aus der Datenbank gelesen, In diesem Fall ist die Id bekannt. Der Artikel kann aber auch mittels Query aus der Datenbank ermittelt werden. Anschließend wird der Eintrag physikalisch aus der Datenbank gelöscht. Anzumerken ist, dass das Löschen ein Standardprozess in Nuclos ist. Sollten noch Verknüpfungen zwischen diesem Artikel und anderen Entitäten bestehen, kann der Eintrag nicht gelöscht werden. Es tritt ein Fehler auf, der zum Abbruch der gesamten Regelverarbeitung führt.

deleteAllDie deleteAll-Methode unterscheidet sich von der Verarbeitung der Daten nicht von der delete-Methode. Die übergebene Collection wird sequentiell abgearbeitet und die einzelnen Einträge an die delete-Methode weitergereicht.
deleteLogical
Codeblock
public class Bestellpositionanlegen implements InsertRule {
    public void insert(InsertContext context) throws BusinessException { 
       
        Artikel myArticel = QueryProvider.getById(Artikel.class, 40465351L);
            
        BusinessObjectProvider.deleteLogical(myArticel);
    }
}

Erläuterung:

Ein bestehender Artikel wird aus der Datenbank gelesen, In diesem Fall ist die Id bekannt. Der Artikel kann aber auch mittels Query aus der Datenbank ermittelt werden. Anschließend wird der Eintrag logisch aus der Datenbank gelöscht. Anzumerken ist, dass das Löschen ein Standardprozess in Nuclos ist. Sollten noch Verknüpfungen zwischen diesem Artikel und anderen Entitäten bestehen, kann der Eintrag nicht gelöscht werden. Es tritt ein Fehler auf, der zum Abbruch der gesamten Regelverarbeitung führt.
deleteLogicalAll

.