Freight Booking Pipeline

This workflow models a complete end-to-end freight booking pipeline using AWS Step Functions. It includes booking validation, carrier capacity checks, hazardous materials screening, rate calculation, booking confirmation, and pickup scheduling.

{
  "Comment": "Full freight booking pipeline: validate, check capacity, verify hazmat, calculate rates, confirm, and schedule pickup",
  "StartAt": "ValidateBooking",
  "States": {
    "ValidateBooking": {
      "Type": "Task",
      "Resource": "${ValidateBookingFunctionArn}",
      "ResultPath": "$.validation",
      "Next": "IsBookingValid"
    },
    "IsBookingValid": {
      "Type": "Choice",
      "Choices": [
        {
          "Variable": "$.validation.Payload.isValid",
          "BooleanEquals": true,
          "Next": "CheckCarrierCapacity"
        }
      ],
      "Default": "CancelInvalidBooking"
    },
    "CancelInvalidBooking": {
      "Type": "Task",
      "Resource": "${CancelBookingFunctionArn}",
      "Parameters": {
        "cancelReason": "Booking validation failed",
        "cancelReasonCode": "INVALID_BOOKING",
        "booking.$": "$"
      },
      "ResultPath": "$.cancellation",
      "Next": "BookingFailed"
    },
    "CheckCarrierCapacity": {
      "Type": "Task",
      "Resource": "${CheckCarrierCapacityFunctionArn}",
      "ResultPath": "$.capacity",
      "Next": "IsCapacityAvailable"
    },
    "IsCapacityAvailable": {
      "Type": "Choice",
      "Choices": [
        {
          "Variable": "$.capacity.Payload.isCapacityAvailable",
          "BooleanEquals": true,
          "Next": "VerifyHazmat"
        }
      ],
      "Default": "CancelNoCapacity"
    },
    "CancelNoCapacity": {
      "Type": "Task",
      "Resource": "${CancelBookingFunctionArn}",
      "Parameters": {
        "cancelReason": "No carrier capacity available",
        "cancelReasonCode": "NO_CAPACITY",
        "booking.$": "$"
      },
      "ResultPath": "$.cancellation",
      "Next": "BookingFailed"
    },
    "VerifyHazmat": {
      "Type": "Task",
      "Resource": "${VerifyHazmatFunctionArn}",
      "ResultPath": "$.hazmat",
      "Next": "IsHazmatCompliant"
    },
    "IsHazmatCompliant": {
      "Type": "Choice",
      "Choices": [
        {
          "Variable": "$.hazmat.Payload.isHazmatCompliant",
          "BooleanEquals": true,
          "Next": "CalculateFreightRates"
        }
      ],
      "Default": "CancelHazmatViolation"
    },
    "CancelHazmatViolation": {
      "Type": "Task",
      "Resource": "${CancelBookingFunctionArn}",
      "Parameters": {
        "cancelReason": "Hazardous materials compliance failure",
        "cancelReasonCode": "HAZMAT_VIOLATION",
        "booking.$": "$"
      },
      "ResultPath": "$.cancellation",
      "Next": "BookingFailed"
    },
    "CalculateFreightRates": {
      "Type": "Task",
      "Resource": "${CalculateFreightRatesFunctionArn}",
      "ResultPath": "$.rates",
      "Next": "ConfirmBooking"
    },
    "ConfirmBooking": {
      "Type": "Task",
      "Resource": "${ConfirmBookingFunctionArn}",
      "ResultPath": "$.confirmation",
      "Next": "SchedulePickup"
    },
    "SchedulePickup": {
      "Type": "Task",
      "Resource": "${SchedulePickupFunctionArn}",
      "ResultPath": "$.pickup",
      "Next": "BookingComplete"
    },
    "BookingComplete": {
      "Type": "Succeed"
    },
    "BookingFailed": {
      "Type": "Succeed"
    }
  }
}
JSON
Expand
100%

Logistics teams can use patterns like this to build reliable, compliant, and scalable automation for payment systems and can test and refine these flows locally with Thrubit to reduce cloud cost and speed up iteration.