Skip to main content

Process Target

The process target is a built-in automation target that triggers a named process to run whenever an automation condition is fired. It is the standard way to chain event-driven data changes into scheduled or on-demand process execution — without any polling or manual intervention.

Built-in targets

Built-in targets are provided by OpenDataDSL and referenced using the @ prefix on their script name (e.g. @ProcessTarget). They are available to all tenants without any additional configuration.


process — Run a process​

Inputs​

InputRequiredDescription
process✅The name of the process to run

Using this target in an automation​

Run a process when a dataset completes​

A common use case is triggering a downstream enrichment or reporting process as soon as a dataset is marked complete:

//#region Run an enrichment process when a dataset completes
ab = AutomationBuilder("dataset", "private", "MY_PROVIDER.FEED.PRODUCT")
ab.addCondition("complete")
ab.setTarget("process")
ab.setProperty("process", "MY_ENRICHMENT_PROCESS")
ab.icon = "play-fill text-success"
ab.enabled = true
save ${automation:ab}
//#endregion

Run a process when a curve build succeeds​

//#region Run a reporting process when a Smart Curve build succeeds
ab = AutomationBuilder("curve", "private", "MY_CURVE_OBJECT:CLOSE")
ab.addCondition("success")
ab.setTarget("process")
ab.setProperty("process", "MY_REPORTING_PROCESS")
ab.icon = "play-fill text-success"
ab.enabled = true
save ${automation:ab}
//#endregion

Run a process when an object is updated​

You can also react to master data changes — for example, re-running a calculation process whenever a reference object is modified:

//#region Re-run a calculation process when a reference object changes
ab = AutomationBuilder("object", "private", "MY_REFERENCE_OBJECT")
ab.addCondition("update")
ab.setTarget("process")
ab.setProperty("process", "MY_CALCULATION_PROCESS")
ab.icon = "play-fill text-success"
ab.enabled = true
save ${automation:ab}
//#endregion

Chaining processes into a pipeline​

Because a process execution fires process service actions on completion (success, warning, failed), a process triggered by one automation can itself trigger further automations. This makes it straightforward to build multi-stage pipelines where each step hands off to the next.

dataset:complete  →  [process target]  →  Process runs  →  process:success  →  [email / blob / jira target]

The following example runs an enrichment process when a dataset completes, then sends a Teams notification when the process succeeds:

//#region Stage 1 — run enrichment process when dataset completes
ab = AutomationBuilder("dataset", "private", "MY_PROVIDER.FEED.PRODUCT")
ab.addCondition("complete")
ab.setTarget("process")
ab.setProperty("process", "MY_ENRICHMENT_PROCESS")
ab.icon = "play-fill text-success"
ab.enabled = true
save ${automation:ab}
//#endregion

//#region Stage 2 — notify Teams when the process succeeds
ab = AutomationBuilder("process", "private", "MY_ENRICHMENT_PROCESS")
ab.addCondition("success")
ab.setTarget("teams-ops")
ab.setProperty("template", "my-scripts\\templates\\ProcessSuccessMessage")
ab.icon = "microsoft-teams text-teams"
ab.enabled = true
save ${automation:ab}
//#endregion
Handling failures

Add a parallel automation on the failed action of the process service to raise a JIRA task or send a notification if the process does not complete successfully — without affecting the success path.


Pre-configured process target​

If you have a process that should always be run in response to a particular type of event, you can create a custom target with the process name pre-filled. Users setting up automations then only need to select the target — no process name configuration required.

//#region Create a pre-configured target for a specific process
at = AutomationTarget()
at.publisher = "myorg"
at.code = "run-daily-enrichment"
at.name = "Run the Daily Enrichment Process"
at.description = "Triggers the daily enrichment process"
at.icon = "play-fill text-success"
at.script = "@ProcessTarget"
at.template = "run the daily enrichment process"
at.allowTransformation = false
at.allowPropertyChange = true
at.services = ["dataset"]
at.actions = ["complete"]

at.properties.process = "MY_DAILY_ENRICHMENT_PROCESS"

at.tags = ["Process"]
save at
//#endregion

Once saved, automations using run-daily-enrichment require no additional properties:

//#region Use the pre-configured process target
ab = AutomationBuilder("dataset", "private", "MY_PROVIDER.FEED.PRODUCT")
ab.addCondition("complete")
ab.setTarget("run-daily-enrichment")
ab.icon = "play-fill text-success"
ab.enabled = true
save ${automation:ab}
//#endregion