Financial Assistant Specification

Overall system

  • Server (Java)
    • JSON interaction with a servlet (maintain session)
    • Methods
      • Login (String id, String encrypted password) returns success or hint
      • GetTableColumns(timestamp, String[] whereClauses, String postArgs, Object[] columnDefinitions) – returns an array of Objects with the table contents that have a timestamp later than the passed-in value. If zero, the whole table is returned
      • SetTableData(Object[] columnData) – returns success or error message
      • IsNewData(timestamp, Object[] columnDefinitions) – returns the number of updated “rows”
      • ColumnData
        • Name
        • Value
        • Type
        • isNew (boolean) – set when “Add New” is used on the client
      • When a SetTableData comes in, the servlet iterates over the isNew == true items to INSERT new values. Once that’s done, then data can be UPDATEd
      • Dropdown menu interface, that connects to mySqlIf.runSQL(DBUserInfo user, String stmt, boolean recordFlag)
  • Client (JavaScript)
    • Re-implement com.fgm.ProjectPortfolioAddableListCB.*
    • Data Dictionary handles remote calls and typing
      • A DD call should look something like“myFunction(foo:int, bar:String):String”)
      • The DD may have a matching DD on the Servlet side
      • DataDictionaries pass a DataObject between them that contains data and identifying information. There could also be some compression here (BSON?)
      • DataDictionary methods:
        • registerLocalCallback(event, targetFunction)
        • registerRemoteCallback(event, targetFunction) // may have some special hashing to keep track of what event caused a particular set of data to arrive.
        • callRemote
        • callLocal
    • Budget-center based rows
    • Lots of nearly identical rows
    • Row creation is done in the following ways:
      • Adding a new date and MIPR extension (?) to an existing row
      • The creation of a new line item using a dialog
      • Once a new row is “created” the data is sent to the servlet, which populates the appropriate tables, runs the query that builds the “master” table, and downloads a new copy of the table. This can be optimized later if needed by not having the entire table download.

Schedule (well, not really. More of an ordering)

  1. Servlet communication with self test
    1. Talks to PPM DB
    2. Builds master table
    3. Tested using URL arguments
  2. Client
    1. Local Log
    2. Server Log
  3. DataDictionary
    1. Server
      1. receives request for server logs based on level, time, date, etc.
    2. Client
      1. Sends server log table
  4. Login handling of credentials (splash screen, etc)
  5. Re-implement com.fgm.ProjectPortfolioAddableListCB.*
  6. DataGrid view (as per spreadsheet)
  7. “Add Budget Center” dialog
  8. “Add MIPR” dialog
  9. “Change Funding” dialog

Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: