User Tools

Site Tools


access:track2013stories

AGTEK Access Server - Trackwork 2013

To support SmartTrack and Trackwork applications, the AGTEK Access server needs to change to accommodate new requirements. The first version of the server, written by external consultants, was a C++/Linux based server which had several issues. The second version of the server, written in Java/Linux, has been in production since 2009. A modified server implementation starting in 2014 is anticipated to support the track applications.

Story 1 - Leveling the base

We are anticipating that the trackwork will be significantly less than the original Java server implementation (2009) and should be less effort than the license extensions (2011). To prepare for the track extensions, the server needs to be in a relatively clean state. This will prevent any lingering server issues from introducing challenges to the track implementation.

The following items will set the base line for the track work:

  • Tag AgtekNet for pre-track work
  • Remove the remaining Box.net code.
  • Write report for keys created / month
  • Write report for checkouts / month
  • Write an autopruner for Apache tomcat
  • Enterprise work
    • Enterprise bit for said customers
    • Enterprise customers get reports
  • Fix desktop session monitor
    • Op/second graph doesn't update correctly.
    • Add tab showing operation times, min, max, median (graph over time?)
  • Fix C++ API to use time_t 64 bit
  • Wildcard user searches, add support to AccessSupport/KeyForge
  • Upgrade the server runtime to Java 7, latest build
  • Read SmartTrack stories, extract server requirements
  • Server bugs
    • 10 - Two checkouts in a row, more debugging?
    • 7 - Performance stats? Basic collecting?
    • 4 - Framework for purging licenselog, don't deploy

Story 2 - Base line

Provide the server base to support, at least, the capabilities required in SmartTrack.

  • Storage of normal tracks
    • Extend track file format to include compass, use floating point.
    • Extend track file format to include fixType
    • Add version to header to allow server to deal with V1, V2, etc.
    • V2 files write values in float, include position type (AUTO, FIXED, etc)
  • Clean up
    • Remove TMM and TSM tables, drop table TMM; drop table TSM;
    • Remove RTK table, in each customer. drop table RTK; drop table RTKTRACK;
      • Remove RTK related tabs from customerView in com.agtek.support
      • Remove RTKTrack related tables from support tool.
      • Remove RTKTrackApi, protobuf
    • alter table TRACK set START, END, DISCOVERY, LARGESTGAP to bigint(20) ?
    • Add fix type to TRACK table, may be implied by API
    • Add ability to migrate tracks to S3
  • API extensions
    • Define constants for machine type
      • Scraper
      • Bulldozer
      • Excavator
  • Remove Track fields; rejected_dop. fix support display
    • Add Track field statistics | int(16) Add support tool display options for stats
    • New track statistics, extend TrackDB for this too.
      TrackStatistics
       {
          int     track_id;            // Handle of associated track
          long    moving_seconds;      // delta seconds
          long    start_seconds;       // absolute time
          long    end_seconds;         // absolute time
          long    last_cycle_time;     // delta seconds
          long    average_cycle_time;  // delta seconds
          int     cycle_count;
          boolean is_metric;
          double  amount;              // CY for non-metric, M**3 for metric
          double  average_speed;       // MPH for non-metric, KPH for metric
       } 

      Add a new table to the customer database

      TrackStatistics
       +--------------------+------------+------+-----+---------+----------------+
       | Field              | Type       | Null | Key | Default | Extra          |
       +--------------------+------------+------+-----+---------+----------------+
       | handle             | int(16)    | NO   | PRI |         | auto_increment |
       | track              | int(16)    | NO   |     |         |                |
       | start_seconds      | int(16)    | NO   |     |         |                |
       | end_seconds        | int(16)    | NO   |     |         |                |
       | moving_seconds     | int(16)    | NO   |     |         |                |
       | last_cycle_time    | int(16)    | NO   |     |         |                |
       | average_cycle_time | int(16)    | NO   |     |         |                |
       | cycle_count        | int(16)    | NO   |     |         |                |
       | is_metric          | tinyint(1) | NO   |     |         |                |
       | amount             | float      | NO   |     |         |                |
       | average_speed      | float      | NO   |     |         |                | 
       +--------------------+------------+------+-----+---------+----------------+
    • Position Object extensions
      • Add fixtype and compass field
         Position
         {
            enum FixType {Auto, DGPS, Float, Fixed };
            FixType type;
            boolean hasCompass;
            float   compass; // 0.0 .. 359.9999999
         }
      • Change PositionCodec and extend protobuf
      • Override upload to include project. The existing method operates as it does today. Tracks would be tagged with no project. Null will be acceptable for the StoredProject argument and makes this new method behave just like the old one.
        upload( StoredProject proj, String serial, List<Position> positions)
      • Make sure that the Position object is in the JavaDocs
    • Move Track/Position API to authenticated states in Server (require authentication)\
    • TrackAPI Modifications
      • Add TrackAPI.getGPSStats(String serialNumber ) for a single serial number. Return instance of GPS Stats or null, if not found.
      • Add TrackAPI.updateGPSStats( GPSStats statObject ) application to set stats + latest_version
    • GPSSim may need some changes.
    • AccessSupport program
      • Devices page/tab can go because no longer assign to customer.
      • Delete com.agtek.net.storage.data.Device;
      • Delete com.agtek.net.support.gui.DeviceTableModel;
      • Delete com.agtek.net.support.dialog.AssignDeviceDialog
      • Delete com.agtek.net.support.op.GetDevices, DeleteDeviceOp, AssignDeviceOp
      • Remove Device oriented methods from SupportAPI and drop protobuf items for those.
      • Delete DeviceDB from storageDB
      • Delete RTK panels

Story 3 - Supervisory level

  • HaulSim
    • Add login dialog to HaulSim
    • Modify HaulSim to be able to write GPX files.
  • SmartTrack Management interface, CRUD directives
    • See Smartsuite Configuration for directive file information
    • TrackAPI.CreateTrackerDirective( SerialNumber, StoredProject, StoredFile )
    • TrackAPI.DeleteTrackerDirective(int directiveId )
    • TrackAPI.updateTrackerDirective(TrackerDirective newDirective) - May only be updated if NOT acknowledged
    • List<TrackerDirective> TrackApi.getTrackerDirective(StoredProject)
    • TrackerDirective TrackApi.getTrackerDirective(StoredProject, SerialNumber)
    • TrackApi.acknowledgeTrackerDirective(int directiveNumber)
    • All directives are permanent until project is archived
    • Tracker directives can be superceeded, and will not be usable, only newest one is available.
    • Add new client side data object, configuratuion policy, possibly attached to vehicle table
TrackerDirective
 {
    int           handle;
    long          time;
    String        trackerSerialNumber;
    StoredProject project;
    StoredFile    job_file;
    boolean       isAcknowledged;
 }
  • (MAYBE) Add database table for directive, could be extension of vehicle table
    tracker_directives
     +--------------------+------------+------+-----+---------+----------------+
     | Field              | Type       | Null | Key | Default | Extra          |
     +--------------------+------------+------+-----+---------+----------------+
     | handle             | int(16)    | NO   | PRI |         | auto_increment |
     | time               | int(16)    | NO   |     |         |                |
     | project            | int(16)    | NO   |     |         |                |
     | job_file           | int(16)    | NO   |     |         |                |
     | acknowledged       | tinyint(1) | NO   |     |       0 |                | 
     +--------------------+------------+------+-----+---------+----------------+
  • ProjectApi
  • Add ProjectAPI.archiveProject - packages documents, tracks, directives into a ZIP file and stores it the Project directory. Will only work on an inactive project.
  • Add ProjectApi.deleteProject - Deletes all project related DB entries, and files. Only works if project in inactive (or does not exist inside of the project table).
access/track2013stories.txt · Last modified: 2014/02/26 23:14 by mjallison