Object Composition (Low Level) - Zeppelin87/CSS-Sandbox GitHub Wiki

TrackingLog

  • The parent level TrackingLog object contains various, seemingly random, properties.
  • Each property found on the TrackingLog object can be grouped into 1 of 3 conceptual categories.
  1. Identifiers and/or SQL Primary Keys:

    • Id - Elasticsearch auto-generated documentId.
    • TrackingId - Unique identifier for the tracking object. (SQL Primary Key)
    • TrackingKey - LoadNumber_BookSequenceNumber
    • UserId - The userId associated with the tracking object. (SQL Primary Key)
    • CarrierCode - The carrier code associated with the tracking object.
    • LoadNumber - Parsed from 'TrackingKey' for query potential & business readability.
    • BookSequenceNumber - Parsed from 'TrackingKey' for query potential & business readability.
  2. Properties exposed for optimized Elasticsearch query/filtering:

    • LocationRequestCount - An aggregate count of location requests sent to a mobile device.
    • LocationResponseCount - An aggregate count of location responses received from a mobile device.
    • NonRequestedLocationResponseCount - An aggregate count of non requested location responses received from a mobile device.
  3. Tracking object life cycle properties:

    • IList<TrackingEvent> Events - A list of events that have taken place while processing the tracking object.

TrackingEvent

  • A new TrackingEvent is created, and continually updated, once an event is processed server side.
  • There are currently 7 different tracking events that can be appended to a TrackingLog:
    • CreateTracking
    • ActivateInactiveTracking
    • DeactivateTracking
    • LocationRequest
    • LocationResponse
    • NonRequestedLocationResponse
    • ResolveTracking
  • An additional point of interest is that each TrackingEvent has its own list of TrackingError(s)

TrackingError

  • There are a litany of potential errors that can occur throughout the life cycle of a Tracking object.
  • Adding a list of TrackingError(s) to each TrackingEvent will help narrow down the source of errors that occur during processing.
  • For example:
    • Any error that occurs while processing a LocationRequest will be appended to the LocationRequest TrackingEvent.
    • CreateTracking has its own list of errors, LocationResponse has its own list of errors, etc...