Zum Hauptinhalt springen

Simulation@1

Der Node Simulation@1 wird verwendet, um mithilfe verschiedener Simulatoren realistische Testdaten zu erzeugen. Er kann alles von Zufallszahlen und Adressen bis hin zu komplexen Energiemessdaten erzeugen.

Adapter-Voraussetzungen​

  • Allgemeine Verfügbarkeit: Alle Adapter unterstützen diesen Node-Typ.

Node-Konfiguration​

transformations:
- type: Simulation@1
locale: "en" # Optional: Locale for data generation (default: "en")
simulations:
- targetPath: $.customer.firstName # Path where the generated value should be stored
simulatorKey: Person.FirstName # The simulator to use (see complete list below)
configuration: "{}" # Optional: JSON configuration for the simulator
- targetPath: $.customer.age
simulatorKey: Math.IntRandom
configuration: "{\"min\": 18, \"max\": 80}"
- targetPath: $.energy.meteringPoint
simulatorKey: Energy.MeteringPointNumber
configuration: "{\"length\": 33, \"countryCode\": \"AT\"}"

Konfigurationseigenschaften​

EigenschaftTypErforderlichBeschreibung
localestringNeinLocale für die Datenerzeugung (Standard: "en"). Beeinflusst sprachspezifische Daten wie Namen, Adressen
simulationsarrayJaListe von Simulationskonfigurationen
simulations[].targetPathstringJaJSONPath, unter dem der erzeugte Wert gespeichert werden soll
simulations[].simulatorKeystringJaBezeichner des zu verwendenden Simulators
simulations[].configurationstringNeinJSON-String mit simulatorspezifischen Optionen (Standard: "")

Verfügbare Simulatoren​

Diese Implementierung basiert auf Bogus mit zusätzlichen benutzerdefinierten Generatoren.

Adress-Simulatoren​

# Basic address components
- simulatorKey: Address.Country
- simulatorKey: Address.CountryCode
- simulatorKey: Address.ZipCode
- simulatorKey: Address.City
- simulatorKey: Address.StreetAddress
- simulatorKey: Address.StreetName
- simulatorKey: Address.BuildingNumber

Personen-Simulatoren​

# Basic person data
- simulatorKey: Person.FirstName
- simulatorKey: Person.LastName
- simulatorKey: Person.FullName
- simulatorKey: Person.Email
- simulatorKey: Person.UserName
- simulatorKey: Person.Avatar
- simulatorKey: Person.Phone
- simulatorKey: Person.DateOfBirth
- simulatorKey: Person.Gender

# Company information (consistent per person instance)
- simulatorKey: Person.Company.Name
- simulatorKey: Person.Company.CatchPhrase
- simulatorKey: Person.Company.Bs

# Address information (consistent per person instance)
- simulatorKey: Person.Address.Street
- simulatorKey: Person.Address.State
- simulatorKey: Person.Address.Suite
- simulatorKey: Person.Address.City
- simulatorKey: Person.Address.ZipCode
- simulatorKey: Person.Address.Geo.Lat
- simulatorKey: Person.Address.Geo.Lng

Energie-Simulatoren​

# Metering point numbers for energy systems
- simulatorKey: Energy.MeteringPointNumber
configuration: |
{
"length": 33, # Total length of the number (default: 31)
"countryCode": "AT" # Country code prefix (default: "AT")
}

# Random timestamps for energy data
- simulatorKey: Energy.DateTime
configuration: |
{
"startDate": "2024-01-01T00:00:00.000Z", # Start date (ISO format)
"endDate": "2024-12-31T23:59:59.999Z" # End date (ISO format)
}

Mathematik-Simulatoren​

# Sine wave generator
- simulatorKey: Math.Sinus
configuration: |
{
"amplitude": 1.0, # Wave amplitude (default: 1)
"frequency": 1.0 # Wave frequency (default: 1)
}

# Triangle wave generator
- simulatorKey: Math.Triangle
configuration: |
{
"amplitude": 1.0, # Wave amplitude (default: 1)
"frequency": 1.0 # Wave frequency (default: 1)
}

# Constant value generator
- simulatorKey: Math.Constant
configuration: |
{
"amplitude": 1 # Constant value to return (default: 1)
}

# Random integer generator
- simulatorKey: Math.IntRandom
configuration: |
{
"min": 1, # Minimum value (default: 1)
"max": 100 # Maximum value (default: 100)
}

# Random double generator
- simulatorKey: Math.DoubleRandom
configuration: |
{
"min": 1.0, # Minimum value (default: 1.0)
"max": 100.0 # Maximum value (default: 100.0)
}

Text-Simulatoren​

# Lorem ipsum word generator
- simulatorKey: Text.Lorem.Word
configuration: |
{
"count": 3 # Number of words to generate (default: 1)
}

Hinweise zum Verhalten​

  • Konsistenz von Personendaten: Personenbezogene Simulatoren wahren die Konsistenz innerhalb einer einzelnen Node-Ausführung. Wenn Sie Person.FirstName und Person.LastName im selben Simulations-Node erzeugen, gehören sie zur selben virtuellen Person.
  • Wellengeneratoren: Die Generatoren Math.Sinus und Math.Triangle verwenden die aktuelle Systemzeit, um zeitbasierte Wellenmuster zu erzeugen.
  • Locale-Unterstützung: Der Locale-Parameter beeinflusst die sprachspezifische Datenerzeugung. Die unterstützten Locales hängen von der Bogus-Bibliothek ab.
  • Energie-Nummern: Der Generator Energy.MeteringPointNumber erzeugt realistische Zählpunktbezeichner, wie sie in europäischen Energiesystemen üblich sind.

Beispiel-Anwendungsfälle​

Vollständiges Kundenprofil​

- type: Simulation@1
locale: "de"
simulations:
- targetPath: $.customer.firstName
simulatorKey: Person.FirstName
- targetPath: $.customer.lastName
simulatorKey: Person.LastName
- targetPath: $.customer.email
simulatorKey: Person.Email
- targetPath: $.customer.age
simulatorKey: Math.IntRandom
configuration: "{\"min\": 18, \"max\": 80}"
- targetPath: $.customer.address.street
simulatorKey: Person.Address.Street
- targetPath: $.customer.address.city
simulatorKey: Person.Address.City
- targetPath: $.customer.company
simulatorKey: Person.Company.Name

Energiezählerdaten​

- type: Simulation@1
simulations:
- targetPath: $.meter.meteringPointId
simulatorKey: Energy.MeteringPointNumber
configuration: "{\"length\": 33, \"countryCode\": \"AT\"}"
- targetPath: $.meter.timestamp
simulatorKey: Energy.DateTime
configuration: "{\"startDate\": \"2024-01-01T00:00:00.000Z\", \"endDate\": \"2024-12-31T23:59:59.999Z\"}"
- targetPath: $.meter.consumption
simulatorKey: Math.DoubleRandom
configuration: "{\"min\": 0.1, \"max\": 15.0}"

Zeitreihendaten​

- type: Simulation@1
simulations:
- targetPath: $.signal.sineWave
simulatorKey: Math.Sinus
configuration: "{\"amplitude\": 10, \"frequency\": 0.5}"
- targetPath: $.signal.triangleWave
simulatorKey: Math.Triangle
configuration: "{\"amplitude\": 5, \"frequency\": 1.0}"
- targetPath: $.signal.noise
simulatorKey: Math.DoubleRandom
configuration: "{\"min\": -0.5, \"max\": 0.5}"