The components of a project back end

The back end of a BOINC project consists of a number of components that together are responsible for generating work and handling results. Some of these components are supplied by BOINC; other parts are project- or application-specific:

Component BOINC-supplied part project-supplied part
Work generator: generates work units, work sequences, results, and the corresponding input files. Functions and programs that handle the details of creating workunit, work sequence, and result database records. Programs or scripts that generate input files, install them on data servers, and call the BOINC functions.
Result retry generator: generates additional results if some of those initially sent are lost not completed, or completed erroneously. A program, result_retry, that does the job. Some parameters used by result_retry.
Result validation and accounting: compare redundant results; select a canonical result representing the correct output, and a canonical credit granted to users and hosts that return the correct output. A program, validate, that contains the basic logic for validation. An application-specific function, linked with validate, that compares sets of redundant results.
Assimilator: parse output files of completed results, and take appropriate action (record results in a database, and/or generate more work) A main program that enumerates unassimilated workunits and updates the database. A function that assimilates a workunit, either by processing its canonical result or handling an error return.
File deleter: delete input and output files when they are no longer needed. A program, file_deleter, that does the job. None.

Project that use work sequences will need two additional processes:

Component BOINC-supplied part project-supplied part
Work sequence relocater: detects work sequences whose hosts have failed, and relocates them to other hosts. A program seq_relocate Some parameters used by seq_relocate
Work sequence validation and accounting: Similar to result validation, but for work sequences. A program seq_validate An application-specific function, linked with seq_validate, that compares sets of redundant results.