Skip to content

Behavior Layer Reference

State machines and workflows in USL.

Behavior Definition

behavior OrderLifecycle for Order {
  initial state Pending

  state Pending {
    on confirm -> Confirmed
  }

  state Confirmed {
    // ...
  }
}

Transitions

Basic Transition

on event -> TargetState

With Guards

on confirm -> Confirmed
  requires this.hasPayment && this.hasAddress

With Effects

on confirm -> Confirmed
  effects {
    this.status = Status.Confirmed
    this.confirmedAt = now()
  }

With Events

on confirm -> Confirmed
  effects {
    emit OrderConfirmed(this.id)
  }

Nested States

state Active {
  state Working {
    on pause -> Paused
  }

  state Paused {
    on resume -> Working
  }

  on deactivate -> Inactive
}

Parallel States

parallel state Processing {
  region Payment {
    state PendingPayment
    state Paid
  }

  region Shipping {
    state PendingShipment
    state Shipped
  }
}

Verification

USL verifies: - All transitions preserve invariants - Initial state is valid - No unreachable states - Deterministic transitions

Back to Overview