Zu Content springen
Deutsch
  • Es gibt keine Vorschläge, da das Suchfeld leer ist.

Formeln für Attribute in big erstellen und verwenden

Attributwerte berechnen, Texte zusammensetzen und Bedingungen auswerten

Mit Formeln können Sie Attributwerte in big aus anderen Werten ableiten. So lassen sich etwa Kennzeichnungen zusammensetzen, Zahlen berechnen oder Werte abhängig von einer Bedingung setzen. Formeln werden auf Typattributen angelegt und automatisch ausgeführt; als Eingaben können Instanz- und Typattribute dienen.

Die Formelsprache basiert auf Spring Expression Language (SpEL). Die folgenden Beispiele zeigen die in big verwendeten Funktionen und Schreibweisen.

Eine Formel anlegen

Im Beispiel soll aus System und Medium ein Kennzeichnungsschlüssel entstehen.

  1. Öffnen Sie Elemente & Attribute und wählen Sie das Typattribut, das den berechneten Wert erhalten soll.
  2. Öffnen Sie über das Taschenrechner-Symbol den Formeleditor.
  3. Wählen Sie die Funktion parseString und das erste Eingabeattribut System aus. Fügen Sie beides zur Formel hinzu.

  1. Fügen Sie mit dem Operator + weitere Bestandteile und das Attribut Medium hinzu.

  1. Ergänzen Sie bei Bedarf feste Textbestandteile direkt im Formelfeld. Setzen Sie diese in einfache Anführungszeichen.

Die vollständige Beispielformel lautet:

'DEMO' + parseString('System') + '_' + parseString('Medium')

Sie bildet den Kennzeichnungsschlüssel aus festem Text sowie den Werten von System und Medium, getrennt durch einen Unterstrich.

Attribute und Datentypen lesen

Verwenden Sie eine zur Eingabe passende Funktion:

  • Text: parseString('Attributname')
  • Kommazahl: parseDouble('Attributname')
  • Ganzzahl: parseInt('Attributname')
  • Datum: parseDate('Attributname'); bei Datumsberechnungen kann zusätzlich das Eingabeformat angegeben werden, beispielsweise parseDate('Termin', 'yyyy-MM-dd').

Ein nicht belegter Attributwert kann als null vorliegen. Berücksichtigen Sie das besonders bei Berechnungen.

Texte zusammensetzen und bearbeiten

Mit + verbinden Sie Textbestandteile:

parseString('System') + parseString('Medium')

Für das Zerlegen und Prüfen von Texten stehen unter anderem diese Ausdrücke zur Verfügung:

trimEnd('Typennamen_Tuere', '_', 2) trimStart('Typennamen_Tuere', '_', 2) trim('Bewehrungsplannummer', '-', '2') substring('Geschoss', '2', '6') parseString('instancetype_name').length() parseString('Bewehrungsplannummer').split(',').length

trimEnd und trimStart kürzen Text anhand eines Trennzeichens von hinten beziehungsweise vorn. trim wählt einen Abschnitt; substring schneidet einen Zeichenbereich aus. Mit length() ermitteln Sie die Textlänge, mit split(',').length die Anzahl der durch Kommas getrennten Teile.

Wenn bei trim der angeforderte Abschnitt nicht vorhanden ist, kann die Funktion den gesamten abgefragten Text zurückgeben. Prüfen Sie das Ergebnis gegebenenfalls, bevor Sie es als Attributwert verwenden. Auch Ersetzungen von Textbestandteilen sind mit Formeln möglich.

Zahlen berechnen

Für Berechnungen stehen +, -, * und / zur Verfügung. Beispiele:

parseDouble('Breite') * parseDouble('Hoehe') parseDouble('lichte Höhe') + parseDouble('Höhe Rohfussboden') parseDouble('lichte Höhe') / parseDouble('Höhe Rohfussboden') parseDouble('lichte Höhe')^2

Weitere Funktionen sind mod für den Rest einer Division und roundDouble zum Runden auf eine bestimmte Zahl von Nachkommastellen:

roundDouble('Tage abgeschlossen gemäss Fortschritt', 2)

Verwenden Sie bei Divisionen, die ein Ergebnis mit Nachkommastellen liefern sollen, eine Dezimalzahl wie 11.0 statt der Ganzzahl 11 als Divisor.

Leere Eingabewerte berücksichtigen

Ein leerer Eingabewert (null) kann verhindern, dass eine mathematische Formel ein Ergebnis liefert. Dafür gibt es zwei Möglichkeiten:

  • Legen Sie unter Elemente & Attribute einen Standardwert für das Eingabeattribut fest. Damit er in leere Instanzen geschrieben wird, ist ein Modelllauf erforderlich.

[Screenshot 9: Standardwert für ein Attribut unter Elemente & Attribute]

  • Prüfen Sie den Wert in der Formel und verwenden Sie bei null beispielsweise 0:
(parseDouble('Tonnage Index 1') != null ? parseDouble('Tonnage Index 1') : 0) + (parseDouble('Tonnage Index 2') != null ? parseDouble('Tonnage Index 2') : 0)
Bedingungen formulieren

Eine Bedingung folgt dem Muster Bedingung ? Wert_wenn_wahr : Wert_wenn_falsch. Verwenden Sie == für „gleich“, && für und und || für oder. Runde Klammern helfen bei verschachtelten Ausdrücken; jede geöffnete Klammer muss geschlossen werden.

Beispiel für eine Kombination aus zwei Bedingungen:

(parseString('Nutzungseinheit') == 'HNF' && parseString('SIA') == '8.1')   ? 'Wahr' : 'False'

Auch mehrere Fälle lassen sich ineinander verschachteln:

(parseString('Lage Aussen') == 'Aussen' ? 'C2.1' :  (parseString('Lage Aussen') == 'Innen' ? 'C2.2' :   (parseString('Lage Aussen') == 'oben' ? 'C5.2' : '-')))

Text können Sie mit .contains(...) oder .startsWith(...) prüfen. Ein vorangestelltes ! kehrt eine Wahrheitsprüfung um:

!parseString('Geschoss').contains('1OG') ? 'Yes' : ''

Ein Punkt verbindet Ausdrücke miteinander, beispielsweise parseString('instancetype_name').contains('FEN_').

Mit Datumswerten arbeiten

Das aktuelle Datum können Sie im gewünschten Format abfragen:

currentDate('dd.MM.yyyy') currentDate('MM.dd.yyyy') currentDate('yyyy.MM.dd')

Für Berechnungen mit einem vorhandenen Datum stehen unter anderem diese Ausdrücke zur Verfügung:

parseDate('Termin', 'yyyy-MM-dd').plusDays(4) parseDate('Termin', 'yyyy-MM-dd').minusWeeks(4) parseDate('Termin', 'yyyy-MM-dd').minusMonths(6).minusWeeks(1) plusBusinessDays(parseDate('Termin', 'yyyy-MM-dd'), 4)

Mit plusDays und minusDays verschieben Sie ein Datum um Tage, mit plusWeeks und minusWeeks um Wochen sowie mit plusMonths und minusMonths um Monate. plusBusinessDays addiert Werktage. Mit parseCw('Start Date', 'dd.MM.yyyy') ermitteln Sie die Kalenderwoche eines Datums.

Eine Differenz in Tagen kann mit daysBetween berechnet werden, sofern beide Eingabewerte vorhanden sind:

parseString('Start') != '' && parseString('Completion') != ''   ? daysBetween(parseDate('Start', 'yyyy-MM-dd'),                 parseDate('Completion', 'yyyy-MM-dd'))   : null

Hinweise zu Formeln

  • Formeln werden automatisch ausgeführt und ihre Ergebnisse unmittelbar aktualisiert.
  • Eine Formel kann nur Attribute innerhalb derselben Instanz direkt lesen. Für Werte anderer Elemente oder Instanzen können Relationen diese zunächst auf ein Hilfsattribut übertragen.
  • Wird ein Attribut umbenannt, müssen Sie seinen Namen in bestehenden Formeln manuell ändern.
  • Verwenden Sie das einfache Anführungszeichen ' nicht in Attributwerten oder freien Textbestandteilen einer Formel; es dient als Begrenzung von Zeichenketten.
  • Der Formeleditor prüft die Syntax, aber nicht, ob die Formel fachlich das gewünschte Ergebnis liefert. Das Zeichenlimit beträgt 10.000 Zeichen.
  • Formeln können auch über die Attributsmatrix angelegt oder bearbeitet werden.
  • Es kann sinnvoll sein, das berechnete Typattribut zu schützen, damit seine Werte nur über die Formel oder ein Mapping befüllt werden.
  • Gleiche Formeln für mehrere Attribute oder Elemente können über den Batch Export und Import für Attribute und Elemente übertragen werden.

[Screenshot 10: Einstellung zum Schützen eines Typattributs mit Formel]

Formelattribute lassen sich als globale Attribute auswählen, wenn Elastic Search in der Konfiguration aktiviert ist.