Normal flow — offer, accept, status push

CreateDeliveryReq accepted → Attempt=1 offer → accept → push in the order Assigned, Accepted, PickedUp, Delivered

Normal flow — offer, accept, status push CreateDeliveryReq accepted → Attempt=1 offer → accept → push in the order Assigned, Accepted, PickedUp, Delivered SubscribeDeliveryReq SubscribeDeliveryRes BindCourierSessionReq BindCourierSessionRes CreateDeliveryReq CreateDeliveryRes OfferDeliveryMsg (attempt=1) OfferDeliveryNotify OfferDeliveryNotify CourierDecisionMsg(accepted=true) CourierDecisionMsg OfferDeliveryResultMsg DeliveryStatusChangedReq(Assigned) DeliveryStatusChangedRes DeliveryStatusChangedReq(Accepted) DeliveryStatusChangedRes DeliveryStatusChangedReq(PickedUp) DeliveryStatusChangedRes DeliveryStatusChangedReq(Delivered) DeliveryStatusChangedRes DeliveryStatusUpdatedMsg DeliveryStatusNotify DeliveryStatusNotify(Delivered) Customer Client · Sequence participant Customer Client CustomerGateway · Sequence participant CustomerGateway Courier Client · Sequence participant Courier Client CourierSession · Sequence participant CourierSession Dispatch · Sequence participant Dispatch CourierActor · Sequence participant CourierActor Tracking · Sequence participant Tracking CustomerActor · Sequence participant CustomerActor

Order and verification

  • • Confirm DeliveryStatusNotify arrives in the order Assigned, Accepted, PickedUp, Delivered, and that each payload's DeliveryId matches the subscription.
  • • Recording and pushing status events in order is an Application sample policy and does not mean the Framework provides a general channel-wide global order.
  • • While waiting for the courier's response, the Dispatch handler doesn't occupy an execution turn.