TAO Offline Capability offers schools the possibility to take assessments in environments with unstable internet connections. It uses Virtual Machines (VM) and a Central Server (CS). The assessment is performed on the VMs that contain a TAO installation as well as the tests. At the end the results of the test will be synchronized with the Central Server.
These instructions assume that you already have a TAO installation on your system. If you don't, go to package/tao and follow the installation instructions.
Add the extension to your TAO composer and to the autoloader:
composer require oat-sa/extension-tao-offline
Install the extension on the CLI from the project root:
sudo php tao/scripts/installExtension oat-sa/extension-tao-offline
php tao\scripts\installExtension oat-sa/extension-tao-offline
As a system administrator you can also install it through the TAO Extension Manager:
- Settings (the gears on the right-hand side of the menu) -> Extension manager
- Select taoOffline on the right-hand side, check the box and hit install
Synchronization and Encryption
The synchronization process is based upon two actors, the Client Server, which is installed on a Virtual Machine, and the Central Server.
Setting up the Client Server
The following script needs to be run on a TAO instance in order to create a Client Server:
sudo -u www-data php index.php '\oat\taoOffline\scripts\tools\setup\SetupClientServer'
On systems where extension-tao-encryption is installed, the script will set it up with encryption.
Point the instance to a specific server by executing the following command:
sudo -u www-data php index.php '\oat\taoSync\scripts\tool\RegisterHandShakeRootURL' --rootUrl=http://tao-central.dev/
Setting up the Central Server
Run the following to turn a TAO instance into a Central Server.
sudo -u www-data php index.php 'oat\taoOffline\scripts\tools\setup\SetupCentralServer'
Again, instances with
taoEncryption will benefit from encryption.
Types of available synchronizations
- Central Server to VM
- Test Centers
- LTI Consumers
- VM to Central Server
- Test Sessions
- Result Logs
- LTI Users
Overview of the workflow
Synchronizing users with encryption
Every user has been assigned an application key that is used to decrypt the delivery content. Properties that are excluded from the synchronization process can be found under
excludedProperties in the configuration file
config/taoSync/syncService.conf.php. Properties that are encrypted are defined inside
Synchronizing deliveries with encryption
During the synchronization of the deliveries, the test package is sent to the client. The client then imports the test and generates a delivery.
Note: If you are synchronizing a delivery that already exists on the VM a new import of the test will be created.
Synchronizing results with encryption
chunkSize of a result is an essential configuration parameter that needs to be set in advance; the default is
10. It can be set depending on the number of variables included in a result.
If you have, for example, a test with 100 items (which means about 400 variables), the total request will contain about 4000 variables. This scenario is likely to overload the server. In this case, reducing the
chunkSize to a smaller value is advised.
The statuses of a result that needs to be sent can be configured under
config/taoSync/resultService.conf.php. Each request to the server will include the number of results. The process will stop after all results have been sent.
Synchronizing results - Logs
Each result log is synchronized with the Central Server to maintain a history of the test. The number of logs sent per request is defined in the configuration inside