= Bossa implementation notes = == Database tables == Until Bossa has good web-based administration tools, you'll often need to directly examine and modify its MySQL database, using the command-line tool 'mysql' or a web-based interface such as [http://www.phpmyadmin.net/ phpMyAdmin]. The database tables used by Bossa (in addition to BOINC's tables for users, teams, etc.) are as follows: '''bossa_app''': || field name || type || meaning || || id || integer || row ID, assigned by MySQL || || create_time || integer || row creation time || || name || varchar(255) || short name (internal use; no spaces) || || user_friendly_name || varchar(255) || user-visible name (spaces OK) || || long_jobs || tinyint || nonzero if user can have > 1 active job || || start_url || varchar(255) || name (relative to project URL) of start script || || deprecated || tinyint || nonzero if deprecated (don't show) || || info || text || information (typically encoded in JSON) such as the criteria for which users to issue jobs to || '''bossa_job''': || field name || type || meaning || || id || integer || row ID, assigned by MySQL || || create_time || integer || row creation time || || name || varchar(255) || a unique name for this job || || app_id || integer || ID of bossa_app || || info || text || job-specific info (file names etc.) typically JSON-encoded || || batch || integer || batch number (use to group jobs) || || time_estimate || integer || number of seconds this job is likely to take || || time_limit || integer || give up if not completed after this number of seconds || || more_needed || tinyint || nonzero if more completed instances of this job are needed || || npending || integer || number of pending instances || || nsuccess || integer || number of successfully completed instances || || nsuccess_needed || integer || required number of successfully completed instances || '''bossa_job_inst''': || field name || type || meaning || || id || integer || row ID, assigned by MySQL || || create_time || integer || row creation time || || job_id || integer || ID of bossa_job || || user_id || integer || ID of user || || finish_time || integer || time when finished, or zero || || info || text || outcome info (usually JSON-encoded) || '''bossa_app_user''': || app_id || integer || ID of bossa_app || || user_id || integer || ID of user || || info || text || description of the user's skill or ranking at a given app, typically JSON-encoded || == Bossa PHP classes == Bossa provides the following classes (in '''html/inc/bossa.inc''' and '''html/inc/bossa_db.inc'''): '''!BossaApp, !BossaJob, !BossaJobInst''':: These correspond to the above tables, and have fields corresponding to each database field. They offer functions to insert, look up, and modify database rows. '''Bossa''':: Utility functions.