Skip to main content
Skip table of contents

Create or Update

Beschreibung

Der Prozess stellt eine generische Schnittstelle zum Anlegen / Aktualisieren von Daten in EVI bereit. Dies gilt übergreifend für alle im System vorhandenen Entitäten.

Eingabeparameter enthalten <Name> <Werte> Paare mit den internen Feldnamen, z. B. "MatchCode.Customer" - "CURSOR AG". Es können beliebig viele Felder übergeben werden. Es muss allerdings sichergestellt sein, dass der Key eineindeutig dem internen Feldernamen entspricht. Felder, bei denen dies nicht der Fall ist, werden ignoriert.

Für die Pflege der Konfigurations-Entität gilt folgende Regel:

  • Keine Konfiguration: Es erfolgt keinerlei Pflichtfeldprüfung 

  • Der Eintrag SYSTEM zur Entität: Es werden die systemweit definierten Pflichtfelder geprüft (gemäß Feldeigenschaften) 

  • Konfiguration von Feldern unterhalb einer Entität: Es werden genau diese Felder als Pflichtfelder geprüft.

Der Prozess bietet die Möglichkeit, vorhandene Datensätze zu aktualisieren. Die Suche nach vorhandenen Datensätzen erfolgt wie nachfolgend beschrieben.

  • Wir der Parameter IDENTIFIERS mitgegebn, wird dieser verwendet, um einen oder Mehrere Datensätze zu suchen.

  • Sofern in der Konfigurations-Entität Felder definiert sind, wird gemäß der Feldreihenfolge geprüft, ob das Feld in den Eingabeparametern vorhanden ist. Ist dies der Fall, werden Datensätze mit diesem Feldwert gesucht.
    Findet die Suche keinen Datensatz, wird mit dem nächsten Feld in der Feldliste analog verfahren. Die Prüfung der Feldliste endet, sobald eine Suche mindestens einen Treffer liefert. 

  • Ist nichts in der Konfigurations-Entität definiert, wird das Feld "Pk.<Name der Entität> (z. B. "Pk.Customer" oder "Pk.Quote") in den Eingabeparametern gesucht, und es wird genau über diesen Primärschlüssel gesucht.
    Liefert die Suche einen Datensatz, wird dieser aktualisiert Wird kein Datensatz über den Primärschlüssel gefunden, wird ein neuer Datensatz angelegt.

Allgemein: Wenn die Suche nach vorhandenen Datensätzen keinen Treffer liefert, wird per Definition ein neuer Datensatz angelegt. Dies gilt unabhängig davon, welches Suchverfahren verwendet wurde.

Anzahl Rückgabeparameter: Standardmäßig erwartet der Prozess genau einen Treffer bei der Suche nach vorhandenen Datensätzen (unabhängig von der verwendeten Suchmethode).
Sollen explizit mehrere Datensätze aktualisiert werden, muss der optionale Eingabeparameter "CRUD_MULTIPLE" mit "true" übergeben werden.
In dieser Konstellation werden alle gefundenen Datensätze aktualisiert.

Code

JAVA
de.cursor.jevi.common.script.IScriptWorkSpace fncCreateOrUpdate(Map parameter, Map result, Map logMap)
{
  if(logMap == null) logMap = SC12EVIBaseUtils.newLogMap();
  if(result == null) SC12EVIBaseUtils.addError(logMap, "Parameter \"result\" is null");
    
  if(!parameter.containsKey("fields")      && parameter.get("fields")      == null) SC12EVIBaseUtils.addError(logMap, "Parameter \"fields\" is not Set");
  if(!parameter.containsKey("entityName")  && parameter.get("entityName")  == null) SC12EVIBaseUtils.addError(logMap, "Parameter \"entityName\" is not Set");
    
  if(SC12EVIBaseUtils.hasError(logMap)) return null;
    
  String           entityName  = parameter.get("entityName");
  Map              fields      = parameter.get("fields");
  List             identifiers = ((!parameter.containsKey("identifiers") && parameter.get("identifiers") == null) ? null  : parameter.get("identifiers"));
  boolean          multiple    = ((!parameter.containsKey("multiple")    && parameter.get("multiple")    == null) ? false : parameter.get("multiple"));
  boolean          mandatory   = ((!parameter.containsKey("mandatory")   && parameter.get("mandatory")   == null) ? true  : parameter.get("mandatory"));
  Map              fieldValues = new HashMap();
  List             primaries   = new ArrayList()
  IScriptWorkSpace ws          = WorkSpaceScriptUtils.createEmptyWorkSpace(entityName);
    
  primaries = SC12CRUDUtils.getPrimaryKeyList(entityName, mandatory, identifiers, logMap, fields, fieldValues);
    
  if(!SC12EVIBaseUtils.hasError(logMap))
  {
    ws = SC12CRUDUtils.createRecordsets(fieldValues, entityName, primaries, multiple, logMap, result);
  }
    
  if(!SC12EVIBaseUtils.hasError(logMap))
  {
    result.put("RECORDSET",  SC12CRUDUtils.getRecordsets(ws, entityName));
    result.put("SUCCESSFUL", "SUCCESS");
    result.put("WARNINGS",   SC12EVIBaseUtils.getWarnings(logMap));
  }
  else
  {
    result.put("RECORDSET",   null);
    result.put("ACTION",     "ERROR");
    result.put("SUCCESSFUL", "ERROR");
    result.put("ERRORS",     SC12EVIBaseUtils.getErrors(logMap));
    result.put("WARNINGS",   SC12EVIBaseUtils.getWarnings(logMap));
  }
  return ws;
}

Parameter

  • parameter
    Typ - Map
    Wertepaare mit den benötigten Parametern. Benötigte Werte sind

    • FIELDS
      Typ - Map
      Wertepaare der Form <Interner technischer Feldname = neuer Wert>  (z. B. "MatchCode.Customer" = "CURSOR GIESSEN").
      Alle Wertepaare werden für spätere Prüfungen / Neuanlagen / Aktualisierungen verwendet. 

    • ENTITY
      Typ - String
      Interner technischer Name der Entität in exakter Groß- / Kleinschreibung (z. B. "Customer", "ContactPerson").

    • CRUD_MULTIPLE
      Typ - boolean
      Optionaler Parameter, wird dieser mit "true" übergeben, ist die Aktualisierung > 1 Datensätze möglich. Dieser Parameter wird nur berücksichtigt,
      wenn kein technischer Primärschlüssel (z. B. "Pk.Customer") als Eingabeparameter angegeben wird.

  • result
    Typ - Map
    Hashmap, in der das formatierte Ergebnis zurück gegeben wird

  • logMap (optional)
    Typ - Map
    HashMap, in der das Logging während des Aufrufs geführt wird, falls dieses separat aufbereitet werden soll.

Rückgabe

  • IScriptWorkSpace
    Die Funktion antwortet mit einem IScriptWorkSpace, in dem der Datensatz angelegt wurde, oder der/die Datensätze angepasst worden sind.

Variable Result

Außerdem enthält die Variable Result folgende Elemente:

  • RECORDSET
    Typ - Map
    Alle Felder des angelegten / aktualisierten Datensatzes (inklusive TableTail Felder)

  • SUCCESSFUL
    Typ - boolean
    true / false

  • ACTION
    Typ - String
    gibt CREATED oder MODIFIED zurück

  • WARNINGS
    Typ - Map
    Summe aller Warnungen, die während der Bearbeitung entstanden sind 

  • ERRORS
    Typ - Map
    Menge der Fehler, die zum Abbruch des Prozess geführt haben 

JavaScript errors detected

Please note, these errors can depend on your browser setup.

If this problem persists, please contact our support.