lam.execute

Learn more about the execute keyword

Invocation

Data transformation must output:

JavaScript

{
  "lam.execute": [
    {
      "lam.workflowId": 39,
      "lam.payload": { /* payload data */ }
    }
  ]
}

JQ

{ 
  "lam.execute": [
    {
      "lam.workflowId": Integer,
      "lam.payload": { ... }
    }
  ]
}
Key
Description
Type

execute

The workflows to execute with a payload

Array<{ workflowId, payload }>

workflowId

The workflow ID to invoke

Integer

payload

The payload to pass to the workflow

Object

Functionality

The execute keyword executes each specified workflow in the array with its corresponding payload synchronously. This blocks the current workflow's execution until all specified workflows complete.

Examples

JavaScript

(payload) => {
  const { input } = payload;
  const { Recipient, PackagesInfo } = input;
  
  const packagePayloads = PackagesInfo.Packages.map(pkg => ({
    "lam.workflowId": 39,
    "lam.payload": {
      address_1: Recipient.Address1,
      address_2: Recipient.Address2,
      EXT_FIELD_first_name: Recipient.Firstname,
      EXT_FIELD_last_name: Recipient.Name,
      EXT_FIELD_email: Recipient.Email,
      EXT_FIELD_phone: Recipient.Tel,
      EXT_FIELD_weight: pkg.Weight.Value,
      custom_user_fields: [
        { order_custom_field_id: 1852 }
      ],
      address_city: Recipient.City,
      address_state_id: Recipient.CountryStateCode,
      address_country_id: Recipient.CountryCode,
      address_zip: Recipient.PostalCode,
      tracking_number: pkg.PreAssignTrackingNumber.TrackingNumber
    }
  }));

  return {
    "lam.execute": packagePayloads
  };
}

JQ

.input |
.Recipient as $rcp |
.PackagesInfo.Packages as $pkgsInfo |
{
  "lam.execute": $pkgsInfo | to_entries | map({
    address_1: $rcp.Address1,
    address_2: $rcp.Address2,
    EXT_FIELD_first_name: $rcp.Firstname,
    EXT_FIELD_last_name: $rcp.Name,
    EXT_FIELD_email: $rcp.Email,
    EXT_FIELD_phone: $rcp.Tel,
    EXT_FIELD_weight: .value.Weight.Value,
    custom_user_fields: [
      {
        order_custom_field_id: 1852,
      }
    ],
    address_city: $rcp.City,
    address_state_id: $rcp.CountryStateCode,
    address_country_id: $rcp.CountryCode,
    address_zip: $rcp.PostalCode,
    tracking_number: .value.PreAssignTrackingNumber.TrackingNumber
  }) | map({
    "lam.workflowId": 39,
    "lam.payload": .
  })
}

In this example we map an array of packages to the execute keyword. Laminar will then invoke workflow 39 with each individual payload in sequence.

Last updated

Was this helpful?