Sie zeigen eine alte Version dieser Seite an. Zeigen Sie die aktuelle Version an.

Unterschiede anzeigen Seitenhistorie anzeigen

« Vorherige Version anzeigen Version 4 Nächste Version anzeigen »

Erster Fall: Die Rechnungen der Kunden werden nicht in der Nuclos-Datenbank gespeichert, sondern werden auf einem Drittsystem gepflegt. Dazu kann ein sogenanntes "ProxyBO" Rechnungen im Bo-Wizard erstellt werden. Damit wird ein Interface (hier: "org.nuclet.businessentity.RechnungProxy", wichtig ist das komplette Ausschreiben des Pfades, damit die Klasse aus Proxy-Implementation erkannt wird) zur Verfügung gestellt, dessen Implementation die Daten holt, bzw. schreibt:

 

package org.nuclet.businessentity;
import java.util.*;
import org.nuclos.api.exception.*;
import org.nuclos.api.rule.*;

public class RechnungProxyImpl implements org.nuclet.businessentity.RechnungProxy {
private User user;

public List<Rechnung> getByKunde(Long id) {
  List<Rechnung> rlist = new ArrayList<>();
  // Get Rechnungen for Kunde with "id" from another source
  // ...
  // rlist.add(...)
  //
  return rlist;
}

public List<Rechnung> getAll() {
  // Get Data from another source
}
public List<Long> getAllIds() {
  // Get Data from another source
}
public Rechnung getById(Long id) {
  // Get Data from another source
}

public void insert(Rechnung rechnung) throws BusinessException {
  // Write Data to another source
}
public void update(Rechnung rechnung) throws BusinessException {
  // Write Data to another source
}
public void delete(Long id) throws BusinessException {
  // Delete Data within another source
}

public void commit() {
}
public void rollback() {
}
public void setUser(User user) {
  this.user = user;
}
}

 

Zweiter Fall: Es soll eine Sammelbearbeitung geben, bei der die Rechnungen mehrerer Kunden auf einmal bearbeitet werden. Grundsätzlich ist das schon mit dem Standard-Proxy-Interface oben möglich. Jedoch gibt es die Option ein weiteres Interface zu implementieren, um die Performance zu verbessern. Das Interface "org.nuclos.api.rule.CollectiveProcessingProxy" fordert die Implementierung einer zusätzlichen Methode "getForCollectiveProcessing", mehr der die Rechnungen mehrerer Kunden auf einmal geholt werden können:

 

 

package org.nuclet.businessentity;

import java.util.*;
import org.nuclos.api.businessobject.attribute.*;
import org.nuclos.api.businessobject.*;
import org.nuclos.api.exception.*;
import org.nuclos.api.provider.*;
import org.nuclos.api.rule.*;
import org.nuclos.api.*;
public class RechnungProxyImpl implements org.nuclet.businessentity.RechnungProxy, CollectiveProcessingProxy {
private User user;

public <PK> List getForCollectiveProcessing(ForeignKeyAttribute<PK> attribute, Collection<PK> ids) {
  if (attribute == Rechnung.KundeId) {
    List ret = new ArrayList<>();
    // Fill Data für several Kunden with the given ids at once
    // ret.add(...);
    //
    return ret;
  }
  return null;
}
public List<Rechnung> getByKunde(Long id) {
  // Rest is the same as before
  • Keine Stichwörter