lam.asyncExecute

Learn more about the asyncExecute keyword

Invocation

Data transformation must output:

JavaScript

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

JQ

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

asyncExecute

The workflows to execute with a payload

Array<{ workflowId, payload }>

workflowId

The workflow ID to invoke asynchronously

Integer

payload

The payload to pass to the workflow

Object

Functionality

The asyncExecute keyword executes each specified workflow in parallel. Unlike lam.execute, this keyword runs workflows asynchronously and does not block the current workflow's execution.

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.asyncExecute": packagePayloads
  };
}

JQ

.input |
.Recipient as $rcp |
.PackagesInfo.Packages as $pkgsInfo |
{
  "lam.asyncExecute": $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 asyncExecute keyword. Laminar will then invoke workflow 39 with each individual payload in parallel.

Last updated

Was this helpful?