Skip to main content

Simulation@1

The Simulation@1 node is used to generate realistic test data using various simulators. It can generate everything from random numbers and addresses to complex energy metering data.

Adapter Prerequisites

  • General availability: All adapters support this node type.

Node Configuration

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\"}"

Configuration Properties

PropertyTypeRequiredDescription
localestringNoLocale for data generation (default: "en"). Affects language-specific data like names, addresses
simulationsarrayYesList of simulation configurations
simulations[].targetPathstringYesJSONPath where the generated value should be stored
simulations[].simulatorKeystringYesIdentifier for the simulator to use
simulations[].configurationstringNoJSON string with simulator-specific options (default: "")

Available Simulators

This implementation is based on Bogus with additional custom generators.

Address Simulators

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

Person Simulators

# 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

Energy Simulators

# 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)
}

Math Simulators

# 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 Simulators

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

Behavior Notes

  • Person Data Consistency: Person-related simulators maintain consistency within a single node execution. If you generate Person.FirstName and Person.LastName in the same simulation node, they will belong to the same virtual person.
  • Wave Generators: Math.Sinus and Math.Triangle generators use the current system time to generate time-based wave patterns.
  • Locale Support: The locale parameter affects language-specific data generation. Supported locales depend on the Bogus library.
  • Energy Numbers: The Energy.MeteringPointNumber generator creates realistic metering point identifiers commonly used in European energy systems.

Example Use Cases

Complete Customer Profile

- 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

Energy Meter Data

- 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}"

Time Series Data

- 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}"