# Moteur de transformation

# Architecture

Le serveur TE comporte plusieurs services qui sont :

  • Request Server

    Ce serveur est celui qui est en écoute sur le réseau et qui gère la communication entre Anakeen Platform et TE.
    On peut catégoriser les demandes en deux types :

    • Demande de conversion,
    • Demandes de récupération de résultat.
      Dans le cas d'une demande de conversion, il stocke en local le fichier et les paramètres de la transformation demandée (nom du moteur à appliquer, URL de callback à appeler en fin de transformation) dans une tâche qui est alors en attente de traitement.
      Dans le cas d'une demande de récupération de résultat, il va inspecter la tâche correspondante pour voir si elle a été traitée et fournir le fichier de résultat.
  • Rendering Server

    Ce serveur tourne en tâche de fond, et scrute continuellement pour voir s'il y a de nouvelles tâches en attente de traitement.
    Lorsqu'une nouvelle tâche en attente de traitement est trouvée, il exécute alors le moteur de transformation associé avec le fichier soumit par le client.
    Si la tâche s'est correctement déroulée, il enregistre le fichier produit et appelle l'éventuelle URL de callback de la tâche pour notifier Anakeen Platform que le résultat de la conversion peut être récupéré.

  • OOO Server

    Ce serveur est une instance de OpenOffice lancée en mode serveur qui est utilise par certains moteurs de transformations.

# Cinématique

# Échange Client/Serveur

La communication entre Anakeen Platform et le Request Server permet au client de :

  • Demander la conversion d'un fichier avec un moteur donnée,
  • Demander le statut d'une tâche de conversion,
  • Demander la liste des moteurs de transformation supporté par le serveur TE avec, pour chacun, la liste des types MIME des fichiers compatibles en entré,
  • Demander la liste des tâches et de leurs journaux (management/monitoring),
  • Demander les journaux d'une tâche en particulier,
  • Demander les informations générale du serveur TE (version, charge, etc...),
  • Demander l'exécution des selftests,
  • Demander le résultat d'une tâche réussie,
  • Demander l'interruption d'une tâche,
  • Demander la purge de l'historique des tâches et des journaux.

# Cycle de traitement des demandes

Cycle de traitements des demandes
Cycle de traitements des demandes

# Request server

  • Lors de la réception d'une demande de conversion, le service Request server crée une tâche dans l'état B (Beginning),
  • La tâche passe ensuite dans l'état T (Transferring) durant le temps qu'il faut pour lire le fichier de la requête,
  • Une fois le fichier lu et enregistré, la tâche passe dans l'état W (Waiting) pour indiquer qu'elle est prête à être traitée,
  • Si la tâche est en erreur, son statu est positionné à K (Kockout),
  • Si la tâche est interrompue, son statut est positionné à I (Interrupted).

# Rendering server

  • En parallèle, le service Renderer server scrute les nouvelles tâches qui sont en attente de traitement (W),
  • Lorsqu'une nouvelle tâche est prise pour exécution, la tâche passe en status P (Processing),
  • Si la conversion est réussie, la tâche passe à l'état D (Done) et Anakeen Platform est notifié via l'URL de callback,
  • Si la tâche est en erreur, son statu est positionné à K (Kockout),
  • Si la tâche est interrompue, son statut est positionné à I (Interrupted).

# Création d'un moteur

# Protocole moteur

Un moteur est un exécutable (ou un shell-script) qui répond au protocole suivant:

  • Arguments

    L'exécutable est appelé avec deux arguments qui sont :

    • le fichier à transformer (entrée),
    • un fichier temporaire (existant) dans lequel le résultat doit être inscrit (sortie).
  • Exit code

L'exécutable doit se terminer avec :

  • un exit code égal à 0 si la conversion est réussie,
  • un exit code différent de 0 si la conversion a échoué.
  • Messages d'erreurs

    L'exécutabe émet ses messages d'erreurs sur STDERR.

  • Variables d'environnement

    Les variables d'environnement suivantes sont positionnées lors de l'exécution du moteur : -TE_HOME : contient un chemin d'accès à la racine du répertoire d'installation de TE.

  • Exemple : Script Bash conforme au protocole des moteurs décrit ci-dessus

#!/bin/bash

# Le premier argument est le fichier à transformer.
IN=$1
# Le deuxième argument est un fichier temporaire dans lequel
# sera inscrit le résultat.
OUT=$2

# Notre moteur compte simplement le nombre de lignes
# dans le fichier d'entré, et inscrit le résultat dans
# le fichier de sortie.
wc -l "$IN" > "$OUT"

if [ $? -ne 0 ]; then
    # En cas d'erreur, on émet un message sur STDERR
    echo "Erreur lors de l'exécution du moteur." 1>&2
    # Et on se termine avec un exit code <> 0
    exit 1
fi

# La conversion est réussi, on se termine avec
# un exit code = 0
exit 0

# Enregistrement d'un moteur

Pour être utilisable par TE, le moteur doit être exécutable et être déposé dans le répertoire $TE_HOME/lib/engines.
Ensuite, le moteur doit être enregistré auprès de TE afin de déclarer son nom de conversion et les types MIMES des fichiers qu'il supporte en entrée.
L'enregistrement des moteurs est géré dans la table engine :

INSERT INTO engine (name, mime, command, comment) VALUES (
    'linecount',
    'text/plain',
    '@TE_HOME@/lib/engines/linecount',
    'Compte le nombre de lignes dans un fichier texte'
);

Dans l'exemple ci-dessus, on déclare que notre shell-script aura comme nom de transformation linecount et qu'il est compatible avec les fichiers texte brut de type MIME text/plain.

Note

La chaîne @TE_HOME@ sera automatiquement remplacée par la racine du répertoire d'installation de TE lors de l'exécution du moteur.

# Classe Client

La classe \Anakeen\TransformationEngine\Client implémente l'API cliente pour l'utilisation d'un serveur TE.
Cette API cliente est fournie par le module transformation.
Elle permet de soumettre des fichiers pour transformation, récupérer le status des tâches ainsi créées, récupérer le fichier produit par ces tâches et interrompre des tâches.

# Constructeur

new \Anakeen\TransformationEngine\Client(string $host, int $port);

# Liste des paramètres

  • host (string)

    Le nom d'hôte (ou l'adresse IP) du serveur TE auquel doit se connecter le client.

  • port (int)

    Le port TCP du serveur TE auquel doit se connecter le client.

# Exemple

L'adresse et le port renseignés dans les paramètres applicatifs de Anakeen Platform sont accessibles avec la fonction \ContextParameterManager::getScopedParameterValue() et les paramètres TE_HOST et TE_PORT :

use Anakeen\Core\Internal\ContextParameterManager;

$clientTE = new \Anakeen\TransformationEngine\Client(
  \ContextParameterManager::getScopedParameterValue("TE_HOST"),
  \ContextParameterManager::getScopedParameterValue("TE_PORT")
);

# Méthodes

# SendTransformation

Envoie d'un fichier pour transformation

# Description

    /**
     * send a request to do a transformation
     *
     * @param string $te_name  Engine name
     * @param string $fkey     foreign key
     * @param string $filename the path where is the original file
     * @param string $callback url to activate after transformation is done
     * @param array &$info     transformation task info return "tid"=> ,"status"=> ,"comment=>
     *
     * @return string error message, if no error empty string
     */
string sendTransformation($te_name, $fkey, $filename, $callback, &$info)

Créer une tâche pour la transformation du fichier $filename avec le moteur de transformation $te_name.
l'identifiant de la tâche tid créé sur le serveur TE est retourné dans la structure $info.
Si une URL de callback est fournie via l'argument $callback, celle-ci est alors appelée lorsque la conversion est terminée avec un argument HTTP tid contenant l'identifiant de la tâche : c'est alors à la charge du code déclenché par le callback de venir récupérer le résultat à l'aide de l'identifiant de la tâche tid.
Le code peut aussi interroger régulièrement le serveur TE pour voir le status de la tâche à l'aide de l'identifiant tid retourné dans la structure $info.

# Liste des paramètres

  • te_name (string)

    Le nom du moteur de transformation à appliquer.

  • fkey (string)

    Un identifiant à la discrétion de l'appelant.

  • filename (string)

    Le chemin d'accès du fichier à convertir.

  • callback (string)

    l'URL à appeler à la fin de la transformation

  • info (array)

    Informations retournées de la tâche créée sur le serveur TE.

# Valeurs de retour

La méthode sendTransformation() retourne une chaîne non vide, contenant un message d'erreur, si la création de la tâche de transformation a échoué, ou une chaîne vide si la transformation a été correctement soumise au serveur.
Si la transformation a été correctement soumise au serveur, la variable $info contient les informations de la tâche créée sur le serveur :

array(
  "status" => (string) $tastStatus,
  "tid" => (string) $taskId,
  "comment" => (string) $transformationComment
);

Liste des constantes de statut de tâche :

  • \Anakeen\TransformationEngine\Client::TASK_STATE_BEGINNING (B)

    Demande de conversion reçue.

  • \Anakeen\TransformationEngine\Client::TASK_STATE_TRANSFERRING (T)

    Lecture/transfert du fichier à convertir.

  • \Anakeen\TransformationEngine\Client::TASK_STATE_ERROR (K)

    Erreur.

  • \Anakeen\TransformationEngine\Client::TASK_STATE_SUCCESS (D)

    Transformation réussie.

  • \Anakeen\TransformationEngine\Client::TASK_STATE_RECOVERED (R)

    Restauration des données par le client.

  • \Anakeen\TransformationEngine\Client::status_inprogress

    En cours de traitement.

  • \Anakeen\TransformationEngine\Client::status_waiting

    Attente de traitement par le moteur.

  • \Anakeen\TransformationEngine\Client::TASK_STATE_INTERRUPTED (I)

    Interrompue.

  • \Anakeen\TransformationEngine\Client::status_done

    Conversion terminée.

Si la transformation n'a pa pu être soumise au serveur ($err retourne un message non vide), la variable $info contient le code de l'erreur dans la propriété status :

array(
  'status' =>
    \AnakeenTransformationEngineClient::error_connect |
      \AnakeenTransformationEngineClient::error_noengine |
      \AnakeenTransformationEngineClient::error_sendfile |
      \AnakeenTransformationEngineClient::error_emptyfile |
      \AnakeenTransformationEngineClient::error_convert
);

Les constantes d'erreur sont :

  • \AnakeenTransformationEngineClient::error_connect

    Le client n'a pas pu établir une connexion avec le serveur TE.
    Vérifier que les paramètres de connexion TE_HOST et TE_PORT sont corrects et que le client peut se connecter sur l'hôte et le port TCP du serveur TE.

  • \AnakeenTransformationEngineClient::error_noengine

    Le nom du moteur de transformation demandé n'est pas connu par le serveur TE.
    Vérifier que le moteur demandé est bien déclaré sur le serveur TE.

  • \AnakeenTransformationEngineClient::error_sendfile

    Le fichier n'a pas pu être envoyé correcteur au serveur TE.
    Voir le message d'erreur retourné par sendTransformation() pour plus de détails sur l'erreur rencontrée.

  • \AnakeenTransformationEngineClient::error_emptyfile

    Le fichier soumis pour transformation n'existe pa ou est vide.
    Vérifier que le fichier $filename soumis pour transformation existe et n'est pas vide.

  • \AnakeenTransformationEngineClient::error_convert

    Le fichier soumis pour transformation n'a pas pu être converti.

# Erreurs / Exceptions

Aucune.

# Exempples

use Anakeen\TransformationEngine\Client;

$clientTE = new Client("mon-serveur.transformation.engine.com", 51968);
$filename = '/tmp/hello.txt';
$textContent = 'Hello world!';
file_put_contents($filename, $textContent);

$fkey = sprintf("test-conversion-%s", uniqid());
$callback = '';
$info = array();
$err = $clientTE->sendTransformation(
  'pdf' /* Nom de la conversion à appliquer : 'pdf' */,
  $fkey /* Identifiant de la conversion côté Anakeen Platform */,
  $filename /* Chemin du fichier à convertir */,
  $callback /* URL de callback pour la notification de fin de tâche */,
  $info /* Information en retour de la tâche de conversion créée */
);

if ($err != '') {
  throw new Exception(sprintf("sendTransformation() returned with error : %s", $err));
}
/* Si la demande est acceptée, l'identifiant de la conversion est retourné dans la structure $info */
var_export($info);
  • Résultat :
array(
  'tid' => '5d92ff7f7e3008.91895268',
  'status' => 'W',
  'comment' => '12bytesreadin0.021sec'
);

# getInfo

Récupérer les informations sur une tâche de transformation.

    /**
     * send a request to get information about a task
     *
     * @param int    $tid  task identifier
     * @param array &$info transformation task info return "tid"=> ,"status"=> ,"comment=>
     *
     * @return string error message, if no error empty string
     */
string getInfo($tid, &$info)

Une fois la tâche soumise (à l'aide de sendTransformation(), le client peut interroger régulièrement ( ou dans le code exécuté par le callback du serveur TE) la tâche à partir de son tid pour voir si elle est terminée(ou en attente, en échec, etc...)).

# Liste des paramètres

  • tid (string)

    Identifiant de la tâche dont on souhaite obtenir les informations.

  • info (array)

    Informations retournées de la tâche.

# Valeur de retour

La méthode getInfo() retourne une chaîne non vide, contenant le message d'erreur, si la demande d'information a échouée, ou une chaîne vide si la demande d'information est réussie. Si la demande d'information est réussie, la variable $info contient les informations de la tâche.
Les propriétés de $info peuvent être :

array(
  'tid' => (string) $taskId,
  'infile' => (string) $inputFile,
  'inmime' => (string) $inputFileMimeType,
  'outfile' => (string) $outputFile,
  'engine' => (string) $transformationName,
  'status' => (string) $status,
  'callback' => (string) $clientCallbackURL,
  'callreturn' => (string) $callbackReturn,
  'fkey' => (string) $clientForeignKey,
  'pid' => (string) $transformationPID,
  'comment' => (string) $transformationComment
);
  • tid

    Identifiant de la tâche.

  • infile

    Chemin d'accès (sur le serveur) du fichier à transformer.

  • inmime

    Type MIME du fichier à transformer.

  • outfile

    Chemin du fichier résultat de la transformation.

  • engine

    Moteur de transformation demandé par le client.

  • status

    Status de la tâche.
    Liste des constantes de statut de tâche :

    • \Anakeen\TransformationEngine\Client::TASK_STATE_BEGINNING (B)

      Demande de conversion reçue.

    • \Anakeen\TransformationEngine\Client::TASK_STATE_TRANSFERRING (T)

      Lecture/transfert du fichier à convertir.

    • \Anakeen\TransformationEngine\Client::TASK_STATE_ERROR (K)

      Erreur.

    • \Anakeen\TransformationEngine\Client::TASK_STATE_SUCCESS (D)

      Transformation réussie.

    • \Anakeen\TransformationEngine\Client::TASK_STATE_RECOVERED (R)

      Restauration des données par le client.

    • \Anakeen\TransformationEngine\Client::status_inprogress

      En cours de traitement.

    • \Anakeen\TransformationEngine\Client::status_waiting

      Attente de traitement par le moteur.

    • \Anakeen\TransformationEngine\Client::TASK_STATE_INTERRUPTED (I)

      Interrompue.

    • \Anakeen\TransformationEngine\Client::status_done

      Conversion terminée.

  • callback

    URL de callback fournie par le client.

  • callreturn

    Message retouné par l'appel à l'URL de callback.

  • fkey

    Clef fkey soumise par le client lors de la demande de transformation.

  • pid

    Le PID du processus de transformation lorsque celui-ci tourne.

  • comment

    Dernier message de la tâche.

# Erreurs/Exceptions

La méthode retourne une chaîne non vide contenant le message d'erreur si les informations de la tâche n'ont pu être récupérées.

# Exemple

use Anakeen\TransformationEngine\Client;
use Anakeen\TransformationEngine\ClientException;

$clientTE = new Client("mon-serveur.transformation.engine.com", 51968);
$tid = '5d92ff7f7e3008.91895268';
$info = array();
$err = $clientTE->getInfo($tid /* Identifiant de la tâche qu'on souhaite interroger */, $info);
if ($err != '') {
  throw new ClientException(sprintf("getInfo() returned with error: %s", $err));
}
var_export($info);
array(
  'tid' => '5d92ff7f7e3008.91895268',
  'infile' => '/var/tmp/te-task-XM6AmF/tes-7mmj7z.txt',
  'inmime' => 'text/plain;',
  'outfile' => '/var/tmp/te-task-XM6AmF/ter-PqQfRA.pdf',
  'engine' => 'pdf',
  'status' => 'D',
  'callback' => '',
  'callreturn' => '',
  'fkey' => 'test-conversion-5d92fefe55149',
  'pid' => '',
  'comment' => 'generatedby[
  /opt/dynacase-te-1.4.1-0.20160519.085812/lib/engines/txt2pdf
]command;'
);

# getTransformation

Récupérer le fichier produit par la transformation.

    /**
     * send a request to retrieve a transformation and to erase task from server
     * the status must be D (Done) or K (Done but errors).
     *
     * @param string $tid      Task identification
     * @param string $filename the path where put the file (must be writeable)
     *
     * @return string error message, if no error empty string
     */
    string getTransformation($tid, $filename)

Permet de récupérer dans le fichier local $outputFile le résultat de la transformation d'identifiant de tâche $tid.

# Liste des paramètres

  • tid (string)

    Identifiant de tâche dont on souhaite obtenir le fichier résultat.

  • outputFile (string)

    Chemin local du fichier dans lequel sera stocké le fichier résultant de la tâche.

# Valeur de retour

La méthode getTransformation() retourne une chaîne non vide, contenant le message d'erreur, si l'opération n'a pu être réalisée, ou une chaîne vide si l'opération est réussie.

# Erreurs/Exceptions

La méthode retourne une chaîne non vide contenant le message d'erreur si l'opération n'a pu être réalisée.

# Exemples

use Anakeen\TransformationEngine\Client;
use Anakeen\TransformationEngine\ClientException;

$clientTE = new Client("mon-serveur.transformation.engine.com", 51968);
$tid = '5d92ff7f7e3008.91895268';
$tmpFile = tempnam("/tmp/", 'hello');
$err = $clientTE->getTransformation(
  $tid /* Identifiant de la tâche dont on souahite récupérer le résultat */,
  $tmpFile /* Fichier dans lequel inscrire le résultat */
);
if ($err != '') {
  throw new ClientException(sprintf("getTransformation() returned with error: %s", $err));
}
printf("Fichier '%s' : %d octets\n", $tmpFile, filesize($tmpFile));
Fichier'/tmp/hellokeR061': 4297octets

# abortTransformation

Interrompre une tâche.

    /**
     * Abort a transformation and delete associated files on the server
     *
     * @param string $tid Task identification
     *
     * @return string error message, if no error empty string
     */
    string abortTransformation($tid)

Permet d'interrompre le traitement d'une tâche.

# Liste des paramètres

  • tid (string)

    Identifiant de la tâche dont on souhaite interrompre le traitement.

# Valeur de retour

La méthode abortTransformation() retourne une chaîne non vide contenant le message d'erreur si l'opération n'a pu être réalisée, ou une chaîne vide si l'opération est réussie.

# Erreurs/Exceptions

La méthode retourne une chaîne non vide contenant le message d'erreur si l'opération n'a pu être réalisée.

# Exemple

use Anakeen\TransformationEngine\Client;
use Anakeen\TransformationEngine\ClientException;

$clientTE = new Client("aeres-te.xen.corp.anakeen.com", 51968);
$tid = '5d92ff7f7e3008.91895268';
$err = $clientTE->abortTransformation($tid /* Identifiation de la tâche qu'on souhaite interrompre */);
if ($err != '') {
  throw new ClientException(sprintf("abortTransformation() returned with error: %s", $err));
}

Notes

L'interruption de la tâche :

  • Tue le processus de rendering si ce dernier est actif (pid de la tâche est différent de 0),
  • Les fichiers infile et outfile de la tâche sont conservés jusqu'à ce que la tâche soit supprimée.

# purgeTransformation

Supprime la demande de transformation

    /**
     * Purge a single task given its identifier.
     *
     * @param string $tid task's identifier
     *
     * @return string client error message on failure or empty string on success
     */
    string purgeTransformation($tid)

Les fichiers d'entrée et de sortie liés à la tâche sont supprimés ainsi que la référence à la tâche.

Avertissements

La suppression ne vérifie pas si la tâche est en cours d'exécution. Par conséquent, si la demande est en cours d'exécution il faut au préalable l'interrompre (voir la méthode abortTransformation()).

# Liste des paramètres

  • tid (string)

    Identifiant de la tâche qu'on souhaite supprimer.

# Valeur de retour

La méthode getTransformation() retourne une chaîne non vide, contenant le message d'erreur, si l'opération n'a pu être réalisée, ou une chaîne si l'opération est réussie.

# Erreurs/Exceptions

La méthode retourne une chaîne non vide contenant le message d'erreur si l'opération n'a pu être réalisée.

# Exemple

use Anakeen\TransformationEngine\Client;
use Anakeen\TransformationEngine\ClientException;

$clientTE = new Client("aeres-te.xen.corp.anakeen.com", 51968);
$tid = '5d92ff7f7e3008.91895268';
$err = $clientTE->getInfo($tid, $info);
if ($info['status'] == Client::TASK_STATE_PROCESSING) {
  throw new ClientException("La transformation est en cours d'exécution. Veuillez d'abord l'interrompre.");
}
$err = $clientTE->purgeTransformation($tid);
if ($err != '') {
  throw new ClientException(sprintf("Erreur lors de la suppression de la transformation '%s': %s", $tid, $err));
}

# Les moteurs

# Liste de moteur livrés en standard par TE

  • doc

    Ce moteur convertit le fichier au format Microsoft Word 97.
    Types MIME supportés par le moteur :

    • application/vnd.oasis.opendocument.text
  • mergeodt

    Ce moteur combine les documents OpenOffice Text (triés par leur nom) contenus dans une archive au format ZIP en un fichier au format OpenOffice Text.
    Types MIME supportés par le moteur :

    • application/zip,
    • application/x-zip.
  • mergepdf

    Ce moteur combine les documents OpenOffice Text (triés par leur nom) contenus dans une archive au format ZIP en un fichier au format PDF.
    Types MIME supportés par le moteur :

    • application/zip,
    • application/x-zip.
  • mergepdfa

    Ce moteur combine les documents OpenOffice Text (triés par leur nom) contenus dans une archive au format ZIP en un fichier au format PDF/A-1.
    Types MIME spportés par le moteur :

    • application/zip,
    • application/x-zip.
  • odt

    Ce moteur convertit le fichier en un fichier au format OpenOffice Text.
    Types MIME supportés par le moteur :

    • text/html.
  • pdf

    Ce moteur convertit le fichier en un fichier au format PDF.
    Types MIME supportés par le moteur :

    • application/vnd.oasis.opendocument.text,
    • application/vnd.oasis.opendocument.presentation,
    • application/vnd.oasis.opendocument.spreadsheet,
    • application/vnd.ms-excel,
    • application/msword,
    • application/vnd.ms-powerpoint,
    • application/vnd.sun.xml.writer,
    • application/vnd.sun.xml.calc,
    • application/vnd.sun.xml.impress,
    • application/pdf,
    • text/html,
    • text,
    • application/vnd.openxmlformats-officedocument.wordprocessingml.document,
    • application/vnd.openxmlformats-officedocument.spreadsheetml.sheet,
    • application/vnd.openxmlformats-officedocument.presentationml.presentation.
  • pdfa

    Ce moteur convertit le fichier en un fichier au format PDF/A-1.
    Types MIME supportés par le moteur :

    • application/vnd.oasis.opendocument.text,
    • application/vnd.oasis.opendocument.presentation,
    • application/vnd.oasis.opendocument.spreadsheet,
    • application/vnd.ms-excel,
    • application/msword,
    • application/vnd.ms-powerpoint,
    • application/vnd.sun.xml.writer,
    • application/vnd.sun.xml.calc,
    • application/vnd.sun.xml.impress,
    • text/html,
    • application/vnd.openxmlformats-officedocument.wordprocessingml.document,
    • application/vnd.openxmlformats-officedocument.spreadsheetml.sheet,
    • application/vnd.openxmlformats-officedocument.presentationml.presentation.
  • thumbnail

    Ce moteur convertit le fichier en une image (vignette) au format PNG.
    Types MIME supportés par le moteur :

    • application/vnd.oasis.opendocument.text,
    • application/vnd.oasis.opendocument.presentation,
    • application/vnd.oasis.opendocument.spreadsheet,
    • application/vnd.oasis.opendocument.graphics,
    • image,
    • application/pdf;
  • utf8

    Ce moteur converti le fichier en un fichier de texte brut UTF-8 (i.e. extraction de texte).
    Type MIME supportés par le moteur :

    • text,
    • application/vnd.oasis.opendocument.text,
    • application/vnd.oasis.opendocument.presentation,
    • application/vnd.oasis.opendocument.spreadsheet,
    • application/vnd.sun.xml.writer,
    • application/vnd.sun.xml.calc,
    • application/vnd.sun.xml.impress,
    • application/vnd.ms-powerpoint,
    • application/vnd.ms-excel,
    • application/msword,
    • application/pdf,
    • text/html,
    • application/vnd.openxmlformats-officedocument.wordprocessingml.document,
    • application/vnd.openxmlformats-officedocument.spreadsheetml.sheet,
    • application/vnd.openxmlformats-officedocument.presentationml.presentation,
    • text/x-mail,
    • application/vnd.ms-outlook,
    • application/mxbox,
    • application/x-iwork-numbers-sffnumbers,
    • application/x-iwork-pages-sffpages,
    • application/x-iwork-keynote-sffkey,
    • application/epub+zip.

# La base de données

# Liste des tables

# Table task

La table task contient les demandes de transformation.

  • tid (text)

    Identifiant de la transformation.

  • infile (text)

    Chemin d'accès au fichier envoyé par le lient pour conversion.

  • inmime (text)

    Type MIME du fichier envoyé par le client pour conversion.

  • outfile (text)

    Chemin d'accès du fichier produit par la transformation.

  • engine text)

    Nom du moteur de transformation à appliquer au fichier infile.

  • status (char)

    Code de statut de la transformation.

  • fkey (text)

    Clef étrangère envoyé par le client pour la transformation (voir Client::sendTranformation()).

  • callback (text)

    URL de callback envoyé par le client pour la transformation.

  • callreturn (text)

    Contenu de la réponse à l'exécution de la requête de callback.

  • cdate (timestamp)

    Timestamp de la création de la demande de transformation.

  • pid (integer)

    Identifiant du processus du moteur lorsque la transformation est en cours de traitement.

  • comment (text)

    Dernier commentaire de la transformation (mis à jour durant le déroulement de la transformation).

# Table histo

La table histo contient les messages d'informations émis durnat le traitement de la transformation.

  • tid (text)

    Identifiant de la transformation.

  • date (timestamp)

    Timestamp du message.

  • comment (text)

    Message/commentaire.

# Table engine

la table engine contient la liste des moteurs disponibles, les types MIME supportés en entrés de ces moteurs et le chemin du moteur à exécuter.

  • name (text)

    Nom du moteur de transformation.

  • mime (text)

    Type MIME supporté par le moteur. Le type MIME peut être complet et dans ce cas le moteur est exécuté lorsque le type MIME du fichier correspond strictement (e.g.g application/x-foo acceptera des fichiers de type application/x-foo), ou partiel (e.g. application) auquel cas le moteur sera utilisable pour tous les types MIME ayant la même base (e.g. application/x-foo ou application/x-bar ).

  • command (text)

    Chemin d'accès au moteur à exécuter pour cette transformation (voir enregistrement d'un moteur).

  • comment (text)

    Commentaire/description à la description de l'auteurdu moteur de transformation.