{
"Comment": "End-to-end vehicle order fulfillment pipeline — validates order, checks inventory, runs credit assessment, schedules production, arranges delivery, and notifies the customer.",
"StartAt": "ValidateOrder",
"States": {
"ValidateOrder": {
"Type": "Task",
"Resource": "arn:aws:states:::lambda:invoke",
"Parameters": {
"FunctionName": "${ValidateOrderFunctionArn}",
"Payload.$": "$"
},
"ResultPath": "$.validation",
"Retry": [
{
"ErrorEquals": [
"Lambda.ServiceException",
"Lambda.AWSLambdaException",
"Lambda.SdkClientException"
],
"IntervalSeconds": 2,
"MaxAttempts": 3,
"BackoffRate": 2
}
],
"Catch": [
{
"ErrorEquals": [
"States.ALL"
],
"ResultPath": "$.error",
"Next": "ValidationError"
}
],
"Next": "IsOrderValid"
},
"IsOrderValid": {
"Type": "Choice",
"Choices": [
{
"Variable": "$.validation.Payload.isValid",
"BooleanEquals": true,
"Next": "CheckInventory"
}
],
"Default": "CancelInvalidOrder"
},
"CancelInvalidOrder": {
"Type": "Task",
"Resource": "arn:aws:states:::lambda:invoke",
"Parameters": {
"FunctionName": "${CancelOrderFunctionArn}",
"Payload": {
"reason": "INVALID_ORDER",
"order.$": "$"
}
},
"ResultPath": "$.cancellation",
"End": true
},
"ValidationError": {
"Type": "Fail",
"Error": "ValidationError",
"Cause": "Order validation lambda failed unexpectedly"
},
"CheckInventory": {
"Type": "Task",
"Resource": "arn:aws:states:::lambda:invoke",
"Parameters": {
"FunctionName": "${CheckInventoryFunctionArn}",
"Payload.$": "$"
},
"ResultPath": "$.inventory",
"Retry": [
{
"ErrorEquals": [
"States.ALL"
],
"IntervalSeconds": 2,
"MaxAttempts": 2,
"BackoffRate": 2
}
],
"Catch": [
{
"ErrorEquals": [
"States.ALL"
],
"ResultPath": "$.error",
"Next": "InventoryCheckError"
}
],
"Next": "IsVehicleAvailable"
},
"IsVehicleAvailable": {
"Type": "Choice",
"Choices": [
{
"Variable": "$.inventory.Payload.isAvailable",
"BooleanEquals": true,
"Next": "RunCreditCheck"
}
],
"Default": "CancelUnavailableOrder"
},
"CancelUnavailableOrder": {
"Type": "Task",
"Resource": "arn:aws:states:::lambda:invoke",
"Parameters": {
"FunctionName": "${CancelOrderFunctionArn}",
"Payload": {
"reason": "VEHICLE_UNAVAILABLE",
"order.$": "$"
}
},
"ResultPath": "$.cancellation",
"End": true
},
"InventoryCheckError": {
"Type": "Fail",
"Error": "InventoryCheckError",
"Cause": "Inventory check lambda failed unexpectedly"
},
"RunCreditCheck": {
"Type": "Task",
"Resource": "arn:aws:states:::lambda:invoke",
"Parameters": {
"FunctionName": "${RunCreditCheckFunctionArn}",
"Payload.$": "$"
},
"ResultPath": "$.credit",
"Retry": [
{
"ErrorEquals": [
"States.ALL"
],
"IntervalSeconds": 2,
"MaxAttempts": 2,
"BackoffRate": 2
}
],
"Catch": [
{
"ErrorEquals": [
"States.ALL"
],
"ResultPath": "$.error",
"Next": "CreditCheckError"
}
],
"Next": "IsCreditApproved"
},
"IsCreditApproved": {
"Type": "Choice",
"Choices": [
{
"Variable": "$.credit.Payload.isApproved",
"BooleanEquals": true,
"Next": "ScheduleProduction"
}
],
"Default": "CancelDeclinedOrder"
},
"CancelDeclinedOrder": {
"Type": "Task",
"Resource": "arn:aws:states:::lambda:invoke",
"Parameters": {
"FunctionName": "${CancelOrderFunctionArn}",
"Payload": {
"reason": "CREDIT_DECLINED",
"order.$": "$"
}
},
"ResultPath": "$.cancellation",
"End": true
},
"CreditCheckError": {
"Type": "Fail",
"Error": "CreditCheckError",
"Cause": "Credit check lambda failed unexpectedly"
},
"ScheduleProduction": {
"Type": "Task",
"Resource": "arn:aws:states:::lambda:invoke",
"Parameters": {
"FunctionName": "${ScheduleProductionFunctionArn}",
"Payload.$": "$"
},
"ResultPath": "$.production",
"Retry": [
{
"ErrorEquals": [
"States.ALL"
],
"IntervalSeconds": 2,
"MaxAttempts": 2,
"BackoffRate": 2
}
],
"Catch": [
{
"ErrorEquals": [
"States.ALL"
],
"ResultPath": "$.error",
"Next": "ProductionSchedulingError"
}
],
"Next": "ArrangeDelivery"
},
"ProductionSchedulingError": {
"Type": "Fail",
"Error": "ProductionSchedulingError",
"Cause": "Production scheduling lambda failed unexpectedly"
},
"ArrangeDelivery": {
"Type": "Task",
"Resource": "arn:aws:states:::lambda:invoke",
"Parameters": {
"FunctionName": "${ArrangeDeliveryFunctionArn}",
"Payload.$": "$"
},
"ResultPath": "$.delivery",
"Retry": [
{
"ErrorEquals": [
"States.ALL"
],
"IntervalSeconds": 2,
"MaxAttempts": 2,
"BackoffRate": 2
}
],
"Catch": [
{
"ErrorEquals": [
"States.ALL"
],
"ResultPath": "$.error",
"Next": "DeliveryArrangementError"
}
],
"Next": "NotifyCustomer"
},
"DeliveryArrangementError": {
"Type": "Fail",
"Error": "DeliveryArrangementError",
"Cause": "Delivery arrangement lambda failed unexpectedly"
},
"NotifyCustomer": {
"Type": "Task",
"Resource": "arn:aws:states:::lambda:invoke",
"Parameters": {
"FunctionName": "${NotifyCustomerFunctionArn}",
"Payload": {
"notificationReason": "ORDER_CONFIRMED",
"order.$": "$.order",
"delivery.$": "$.delivery.Payload"
}
},
"ResultPath": "$.notification",
"Retry": [
{
"ErrorEquals": [
"States.ALL"
],
"IntervalSeconds": 2,
"MaxAttempts": 2,
"BackoffRate": 2
}
],
"Catch": [
{
"ErrorEquals": [
"States.ALL"
],
"ResultPath": "$.error",
"Next": "NotificationError"
}
],
"Next": "OrderFulfillmentComplete"
},
"NotificationError": {
"Type": "Fail",
"Error": "NotificationError",
"Cause": "Customer notification lambda failed unexpectedly"
},
"OrderFulfillmentComplete": {
"Type": "Succeed"
}
}
}JSONExpand
100%
Automotive 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.