Conveying Information to Users
Outline Types of information in GridChem Inconsistency = confusion Appropriate UI for different information types Examples Game plan
Types of Information in GridChem GridChem has several different types of information. Some of it the user needs to see. Some of it the user might not need to see, but may want to see. Some of it the user doesn’t need to see.
Types of Information in GridChem Necessary information –Mostly generated by critical failures job submission failed account expiration project quota exceeded connection with the server broken file not found
Types of Information in GridChem Helpful information –Mostly generated by successes and GUI problems Cannot perform a requested action at the given time while another action is still running. bad username/password login successful file successfully retrieved invalid job description tool tips
Types of Information in GridChem Mostly unnecessary information –Stuff that’s nice for developers, but will only confuse most people stack traces trace statements verbose output xml serializations etc.
Inconsistency = Confusion In the WS and production clients, we make heavy use of System.out.println(), System.err.println() and Trace.note(). –Trace prints everything to the command line, so essentially we are writing everyting to System.out and System.err. –At different times, we print messages to the main GridChem panel. –Occasionally we pop up a message box which may arbitrarily show a warning, error, or simply convey some information.
Inconsistency = Confusion This is CONFUSING and adheres to the single most annoying feature of GUI design: popup windows
Inconsistency = Confusion We need to do a better job of presenting information to our users. The way in which we present that information must be structured, consistent, and intuitive.
Appropriate UIs Popups –only for critical messages when no other avenue is appropriate Progress Bar –for temporal tasks –should present all information conveyed to the user during this task Log files –contain all “excessive” information Panel dialog labels –for all info that is generally “nice to have” ie. success, etc.
Examples Progress bar example Dialog box examples Logging example Status label example
Examples Progress bar example
Examples Dialog box examples
Examples Logging examples (log4j) –open source, widely accepted logging utility –provides 4 levels of debugging output: ERROR: print error messages WARN: print error and warning messages DEBUG: print debug, warn, and error messages INFO: print everything
Examples Logging (cont) –Registering a class with the logger. public static Logger log = Logger.getLogger(SubmitJob.class.getName()); –Logging an error try { … } catch (Exception e) { log.error(e); log.error(object,e); log.error(object); } * where object is a custom string message, for example.
Examples Logging (cont.) –Logging a warning try { … } catch (Exception e) { log.warn(object,e); log.warn(object); } * where object is a custom string message, for example.
Examples Logging (cont.) –Logging a debug message public void someClass() { … if ( isTrue() ) { // do something } else { log.debug(object,e); log.debug(object); } … } * where object is a custom string message, for example.
Examples Logging (cont.) –Logging an informative message public void someClass() { … if ( isTrue() ) { // do something log.info(object,e); log.info(object); } else { log.debug(object,e); log.debug(object); } … } * where object is a custom string message, for example.
Examples Logging (cont.) –Output would then look like this (taken from GMS_WS logs) :52:28,944 INFO gms.GMSResource [ServiceThread-34,loadVO:408] Project comm_dooley_8_friendly_user_period successfully loaded for user dooley( ) :52:29,035 INFO credential.Credential [ServiceThread-34,getMyproxyDelegation:252] Retrieving credential from myproxy :52:30,239 INFO credential.Credential [ServiceThread-34,readCGIResponse:419] read server reply: User ccguser obtained X509 credential good for 480 hours :52:30,240 INFO credential.Credential [ServiceThread-34,stageRemoteCredential:332] Successfully staged credential on CGI server :52:30,240 INFO gms.GMSResource [ServiceThread-34,loadVO:414] Credentials successfully loaded for user dooley( ) :52:30,241 INFO gms.GMSResource [ServiceThread-34,loadVO:420] Preferences successfully loaded for user dooley( ) :52:30,668 INFO gms.GMSResource [ServiceThread-34,loadVO:430] VO successfully loaded for dooley( ) :52:40,047 INFO file.FileManager [ServiceThread-34, :88] User dooley has permission to access gsiftp://mss.ncsa.uiuc.edu//u/ac/ccguser/internal/dooley/dooley_proj/default_test.ccg-login.ncsa.uiuc.edu /default_test.out :52:42,127 INFO file.FileManager [CopyFileThread,run:259] Retrieving file /u/ac/ccguser/internal/dooley/dooley_proj/default_test.ccg-login.ncsa.uiuc.edu /default_test.out to temporary storage Mon Aug 21 11:52:42 CDT :52:45,800 ERROR gms.GMSResource [ServiceThread-34,retrieveJobOutput:832] org.gridchem.service.gms.exceptions.FileManagementException: Copy operation failed. File not present on local disk.
Examples Panel dialog label example –Used to guide the user through complex operations –Non-intrusive show/view dialog box serve as a textual progress display provide tips as to the next step. ties into the help tool use with job submission, job management, file creation, etc.