= Bossa reference manual = [[T(DesignDocument)]] == Creating a Bossa project == First, [ServerIntro set up a BOINC server] and [MakeProject create a project]. Say your project is called 'test_project', your BOINC source directory is '~/boinc', and your BOINC projects directory is '~/projects'. Create Bossa's database tables as follows: {{{ cd ~/boinc/db mysql test_project < bossa_schema.sql mysql test_project < bossa_constraints.sql }}} Create a Bossa application (see below) as follows: {{{ cd ~/projects/test_project/html/ops php bossa_setup_example.php }}} You can edit bossa_setup_example.php to change the application name and front-end script name, if you like. == The Bossa database tables == Until Bossa has good web-based administration tools, you'll need to examine and modify the MySQL database directly, using the command-line tool 'mysql', or a web-based interface such as [http://www.phpmyadmin.net/ phpMyAdmin]. The Bossa tables 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 || == Front-end scripts == == Adding jobs ==