Control Flow
Control flow in Laminar
Control flow basics
Adding if this then that
logic in Laminar can be done using either JavaScript or JQ. Here are examples in both languages:
JavaScript Example
(payload) => {
const { input } = payload;
if ((input.activity_type === "route-destination-status" ||
input.activity_type === "update-destinations") &&
/skipped|failed|completed|loaded/.test(String(input.detailed_event)) &&
input.order_id?.length > 0) {
return {
"lam.resolveThenExecute": {
"lam.workflowId": 60,
"lam.payload": input,
"lam.result": { "status": "OK" }
}
};
} else {
return { "lam.exit": true };
}
}
JQ Example
.input |
if ((.activity_type == "route-destination-status" or
.activity_type == "update-destinations") and
(.detailed_event? | tostring | test("skipped|failed|completed|loaded")) and
(.order_id | length > 0))
then
{
"lam.resolveThenExecute": {
"lam.workflowId": 60,
"lam.payload": .,
"lam.result": { "status": "OK" }
}
}
else
{ "lam.exit": true }
end
Another Control Flow Example
JavaScript Version
(payload) => {
const results = payload.step_1.response.results;
if (results.length === 0) {
return { "lam.exit": true };
} else if (results.length === 1) {
return {
"order_ids": [Number(results[0].order_id)]
};
} else {
return { "lam.exit": true };
}
}
JQ Version
.step_1.response.results |
if length == 0 then
{ "lam.exit": true }
elif length == 1 then
.[0] | { "order_ids": [(.order_id | tonumber)] }
else
{ "lam.exit": true }
end
Laminar Keywords
Keywords allow workflows to be executed conditionally from within flows, making it easier to support complex control flow logic within custom integrations.
Last updated
Was this helpful?