Skip to content

Simplified Class Diagram

---
  config:
    class:
      hideEmptyMembersBox: true
---
classDiagram
direction LR
    class Notification {
         deliver()
    }
    class Envelope {
    }
    class Transport {
        deliver()
        select_targets()
    }
    class TransportConfig {
    }
    class Target {
        List~string~ entity_ids
        List~string~ device_ids
        List~string~ person_ids
        List~string~ email
        List~string~ phone
        Dict~string,List~ other_ids
    }
    class Delivery{
        validate()
        select_targets()
    }
    class DeliveryConfig {
    }
    class Context {
    }
    class Scenario {
    }
    class Snoozer {
    }
    class Snooze {
    }
    class PeopleRegistry {
        people
        determine_occupancy()
        refresh_tracker_state()
        mobile_devices_for_person()
    }
    namespace transports {
        class EmailTransport{}
        class SMSTransport{}
        class AlexaDevicesTransport{}
        class AlexaMediaPlayerTransport{}
        class MobilePushTransport{}
        class ChimeTransport{}
        class PersistentTransport{}
        class GenericTransport{}
        class MediaPlayerTransport{}
        class NotifyEntityTransport{}
    }

    Notification "1" *-- "*" Envelope
    Envelope "1" ..> "1" Transport
    Envelope "1" *-- "1" Target
    Transport "1" *-- "*" DeliveryConfig
    Context "1" o-- "0..*" Scenario
    Snoozer "1" *-- "0..*" Snooze
    Context "1" -- "1" Snoozer
    Context "1" -- "1" PeopleRegistry
    DeliveryConfig <|-- TransportConfig
    DeliveryConfig <|-- Delivery
    Transport <|--  EmailTransport
    Transport <|--  SMSTransport
    Transport <|--  AlexaDevicesTransport
    Transport <|--  AlexaMediaPlayerTransport
    Transport <|--  MobilePushTransport
    Transport <|--  ChimeTransport
    Transport <|--  PersistentTransport
    Transport <|--  GenericTransport
    Transport <|--  MediaPlayerTransport
    Transport <|--  NotifyEntityTransport