Elements reference

Runtime, publish, execute en logs

Deze pagina behandelt alles na het editorwerk: publiceren, versioning, runtime vars/secrets, test execute, execution logs en integratie met datasources.

1. Publish en versions

OnderdeelBeschrijving
PublishValideert draft, bouwt dependencies en maakt een nieuwe version.
latestVersionElementmetadata verwijst na publish naar nieuwste version.
Version statusBevat build/publish uitkomst per versie.
Build metricsWheels count en build duration worden opgeslagen.
Als Git sync Apply een wijziging uit de repo terugschrijft naar een bestaand gepubliceerd Element, wordt alleen de draft bijgewerkt. De huidige gepubliceerde version blijft actief totdat je handmatig opnieuw publiceert. In het Elements-overzicht zie je dat als Updated draft.

Versions tabel

  • Version, Status, Published.
  • Wheels (aantal dependency artifacts).
  • Build (ms).

2. Runtime vars en runtime secrets

Element runtime dialoog
  • Deze dialoog bundelt tijdelijke params, runtime vars, secrets en execute-acties.
  • Gebruik hem om een Element gecontroleerd te testen zonder dashboards of datasources te wijzigen.
  • Documenteer welke variabelen echt runtime-afhankelijk zijn zodat anderen dezelfde testcontext kunnen herhalen.
Runtime testen is de snelste manier om codefouten te scheiden van page- of datasourcefouten.
Tenant runtime store
  • De runtime store bevat tenantbrede variabelen en secrets die Elements kunnen hergebruiken.
  • Gebruik deze opslag voor gedeelde configuratie, niet voor gebruikersspecifieke data.
  • Wijzigingen hier kunnen meerdere Elements tegelijk raken.
Beheer runtime store centraal en wijzig waarden bewust, omdat afhankelijkheden verspreid kunnen zijn.
TypeInputGedrag
Runtime varID + JSON valueJSON moet valide zijn; leesbaar met getVar().
Runtime secretID + nieuwe waarde bij opslaanWrite-only opslag; leesbaar met getSecret().
Runtime writebacksetVar() in codeNieuwe waarde wordt na run teruggeschreven.

3. Test execute

VeldBeschrijving
versionLeeg betekent latest published version.
timeoutSecondsRange 1-300, default 30.
paramsJSON object met inputparameters.
{
  "version": "",
  "timeoutSeconds": 30,
  "params": {
    "from": "2026-01-01",
    "to": "2026-01-31",
    "country": "NL"
  }
}

4. Live datasource streaming

Wanneer gebruik je dit?

  • Gebruik dit als een Element tijdens de run al widget-data moet tonen of vervangen.
  • Dit werkt via een datasource met connector type element en Default data format = Live stream, of direct via een gepubliceerd Element van type stream_data.
  • De equivalente raw datasource config is streamMode: "commands".
HelperDoelGedrag in widgets
emitProgress(...)Status/progress doorgevenGeeft progress events door; voegt geen datasource rows toe.
appendRows([...])Nieuwe rows toevoegenWidgets zien extra rows terwijl het Element nog draait.
replaceRows([...])Volledige dataset vervangenWidgets schakelen over naar de nieuwe set rows.
clearRows()Huidige rows leegmakenMaakt de live datasource tabel leeg voordat nieuwe rows volgen.

Belangrijke notities

  • Deze helpers zijn bedoeld voor datasource requests via /data/{id}/stream, niet voor gewone snapshot/parquet loads.
  • Actieve dashboardfilters worden voor live-stream datasources standaard als params doorgestuurd naar het Element.
  • Zet datasource requestParamsMode op none als je die filterparams juist niet wilt doorgeven.
  • De normale return value van je Element blijft bestaan, maar live widget-updates horen uit deze stream helpers te komen.
  • Gepubliceerde data- en stream_data-Elements zijn direct selecteerbaar als datasource in dashboards; een aparte datasource-doc is daarvoor niet verplicht.
def run(context, params):
    import time

    emitProgress(phase="starting", message="Start live run", progressPercent=0)
    clearRows()

    for step in range(1, 5):
        time.sleep(3)
        appendRows([{
            "step": step,
            "message": f"Tick {step}",
            "value": step * 10,
        }])
        emitProgress(
            phase="running",
            message=f"Step {step} van 4",
            progressPercent=step * 25,
        )

    return {"done": True}

Waar vind ik voorbeelden?

  • element-examples/command_stream_demo.py toont incrementele row updates.
  • element-examples/cloudrunlogs.py toont een langere append-only live tail.

5. Execution logs

KolomBeschrijving
TimeStarttijd van de run.
Statussuccess/error/failed.
SourceHerkomst (admin_test, datasource, flow, etc.).
VersionUitgevoerde version.
DurationRuntime duur in ms.
ErrorKorte foutsamenvatting.
View detailsVolledige payload incl. meta/stdout/stderr/result en vastgelegde logger-berichten.

Logger-output tijdens runs

  • Gebruik in Element-code de ingebouwde logger, bijvoorbeeld logger.info("Start refresh") of logger.error("API call mislukt").
  • Deze berichten verschijnen in de uitvoerlogdetails per run, inclusief severity, loggernaam en stacktrace bij logger.exception(...).
  • Gebruik dit voor controlepunten, externe API-fouten en business-validatie, zodat debugging niet alleen via stdout of traceback hoeft.

Integratie met datasources

  • Element connector roept dezelfde runtime aan met elementId, elementVersion, elementEntrypoint.
  • Request params kunnen direct worden doorgestuurd of hernoemd via requestParamMap.
  • Timeouts zijn configureerbaar per datasource via elementTimeoutSeconds.