Console d’Administration

Écran d'Administration

Écran d’Administration

Note

Les écrans décrits ci-dessous sont réservés aux utilisateurs disposant du Profil administrateur.

Les utilisateurs avec d’autres Profils ne peuvent pas y accéder, que des droits d’affichage ou d’accès leur soient accordés ou non.

La console d’Administration permet d’exécuter des tâches d’administration sur l’application.

Tâches en arrière-plan

Le CRON

Le programme CRON démarre et arrête les tâches en arrière-plan qui traitent et vérifient périodiquement les indicateurs afin de générer les alertes, avertissements ou même les imports automatiques correspondants si nécessaire.

Le Cron fonctions un peu comme un Cron Linux

Ce programme exécute automatiquement des scripts, des commandes ou des logiciels à une date et une heure spécifiées, ou selon un cycle prédéfini.

Tâches en arrière-plan dans l'Administration

Les tâches en arrière-plan s’exécutent dans la console d’Administration

Vous pouvez activer ou désactiver le CRON directement depuis la barre d’informations.

Bouton CRON

Bouton d’activation du CRON

Comportement

* * * * *
│ │ │ │ │ L day of week
│ │ │ │ L month
│ │ │ L day of month
│ │ L hour
│ L minute

Par exemple pour les minutes

* * * * * = means every minute every day

5 * * * * = means every hours at 5 minutes (0:05, 1:05, ... to 23:05)

0 5 * * * = means every day at 5:00

*/5 * * * * = means every 5 minutes every, so will run at 0:00, 0:05, 0:10

0 */2 * * * = means every 2 hours at 0 minutes, so will run at 0:00, 2:00, 4:00

Pour les minutes Ceci s’applique à l’exécution du CRON et doit être défini manuellement.

*/5 : every 5 minutes

*/10 : every 10 minutes

*/15 : every 15 minutes

*/30 : every 30 minutes

Pour les heures Ceci s’applique à l’exécution du CRON et doit être défini manuellement.

*/2 : every 2 hours

*/3 : every 3 hours

*/4 : every 4 hours

*/6 : every 6 hours

*/8 : every 8 hours

*/12 : every 12 hours

Voir aussi

Le bouton CRON

Envoyer une alerte interne

Permet d’envoyer une alerte interne aux utilisateurs.

Alerte interne

Alerte interne

Des alertes internes peuvent être envoyées aux utilisateurs.

Vous pouvez définir une date et une heure d’envoi, des destinataires spécifiques ou tous les utilisateurs, ainsi que le type de message que les utilisateurs recevront : information, alerte ou avertissement…

Cela peut être une bonne pratique pour prévenir les utilisateurs avant un arrêt temporaire de ProjeQtOr pour une mise à jour par exemple.

Une alerte interne peut être envoyée par l’administrateur ou par les indicateurs de surveillance.

Par l’administrateur

L’administrateur peut envoyer une alerte interne via la console d’Administration.

Le message sera reçu par l’utilisateur via une fenêtre pop-up.

Indicateurs de surveillance

Les indicateurs de surveillance envoient uniquement des messages d’avertissement et d’alerte.

Le message contient des informations expliquant l’alerte :

  • Identifiant et type de l’élément.

  • Description de l’indicateur.

  • Valeur cible.

  • Valeur d’alerte ou d’avertissement.

Voir aussi

Les indicateurs sont définis dans l’écran Indicateurs.

Gérer les connexions

Gérer les connexions

Gérer les connexions

Permet de forcer la déconnexion des utilisateurs actifs et de fermer l’application aux nouvelles connexions.

Déconnecter tous les utilisateurs

  • Le bouton Déconnecter tous les utilisateurs permet de déconnecter tous les utilisateurs connectés à l’exception de votre propre connexion.

  • Le statut de l’application est affiché ci-dessous.

  • La déconnexion sera effective pour chaque utilisateur lorsque son navigateur vérifiera les alertes à afficher.

  • Le délai de déconnexion effective des utilisateurs dépendra du paramètre « délai (en secondes) pour vérifier les alertes » dans l’écran Paramètres globaux.

Ouvrir/Fermer l’application

  • Le bouton Ouvrir/Fermer l'application

  • Permet d’ouvrir et de fermer l’application.

  • Lorsque l’application est fermée, le message ci-dessous apparaît sur l’écran de connexion.

Vérification de cohérence

Vérification de constance

Vérification de cohérence

  • sur la séquence WBS : recherche de doublons, trous de séquence, ordre incorrect

  • sur la présence d’une et une seule ligne « PlanningElement » pour les éléments planifiables

  • sur la consolidation du travail des Tickets

  • sur la consolidation du travail sur les Activités

  • sur les Assignations

Vous pouvez programmer la recherche pour la vérification de cohérence ainsi que son exécution.

Définissez les paramètres de fréquence souhaités et activez le service.

Maintenance des données

L’administrateur a la possibilité de :

Maintenance des données

Maintenance des données

  • Fermer et supprimer les e-mails et alertes envoyés.

  • Supprimer l’historique des connexions.

  • Mettre à jour les Références pour tout type d’élément.

Vous pouvez automatiser ces nettoyages en les activant à l’aide des boutons correspondants.

Maintenance des fichiers journaux

Maintenance des fichiers journaux

Maintenance des fichiers journaux

L’administrateur a la possibilité de choisir le niveau des fichiers journaux parmi : débogage, trace, script et erreurs.

  • Supprimer les fichiers sur un nombre de jours donné.

  • Afficher la liste des journaux

  • Afficher la liste des derniers journaux.

Maintenance des fichiers journaux

Liste des fichiers journaux

Classement des projets par priorité

Maintenance des fichiers journaux

Classement des projets par priorité

Cette fonctionnalité d’administration vous permet de lister les projets par ordre de priorité plutôt que par ordre WBS dans un ensemble de Rapports.

Ce réordonnancement ne peut être effectué qu’au sein du même niveau de projet.

Les Rapports pouvant bénéficier du classement par priorité comprennent :

  • Plans de charge de travail (hebdomadaires, mensuels),

  • Rapports de planification (mensuels et annuels, Ressources de projet et Ressources de projet),

  • Planification mensuelle colorée par Ressource (fixe ou non).

API REST 2

ProjeQtOr fournit une API pour interagir avec ses éléments. Elle est fournie sous la forme d’un service web REST.

Les méthodes GET, PUT, POST et DELETE sont utilisées pour les éléments.

Pour des raisons de sécurité, l’API n’est pas activée par défaut.

Générez un fichier .htpasswd pour consulter les sujets connexes sur le web. Un modèle est fourni dans /api/.htpasswd, référençant l’utilisateur projeqtor et le mot de passe projeqtor.

Il est fourni à des fins de test uniquement. Ne l’utilisez pas dans un environnement de production car il exposera l’ensemble de vos données.

Mettez à jour le fichier .htaccess pour spécifier l’emplacement de votre fichier .htpasswd :

AuthUserFile « /pathToFile/.htpasswd » L’emplacement par défaut est le répertoire Apache.

Fonctionnement de l’API

L’utilisateur utilisé, celui défini dans le fichier .htpasswd, doit exister en tant qu’utilisateur dans la base de données. Les droits d’accès : lecture, création, mise à jour, suppression, doivent être définis pour cet utilisateur. Cela vous permet de fournir un certain accès à des utilisateurs externes et de contrôler la visibilité qu’ils ont sur vos données.

MÉTHODES

  • GET : lecture

  • PUT : création et mise à jour

  • POST : création, mise à jour

  • DELETE : suppression

Important

Pour les méthodes PUT, PUSH et DELETE, les données doivent être chiffrées avec l’algorithme AES-256, en utilisant la clé API définie pour l’utilisateur.

L’administrateur doit fournir cette clé API au consommateur de l’API. Vous pouvez utiliser la bibliothèque AESCRT fournie dans le répertoire /external pour le chiffrement.

Les méthodes PUT et PUSH sont similaires et peuvent toutes deux être utilisées pour créer ou mettre à jour des éléments.

La seule différence réside dans la façon d’envoyer les données : sous forme de tableau Post pour POST, sous forme de fichier pour PUT.

La méthode DELETE requiert des données, formatées comme pour un PUT, mais seul l’identifiant est requis.

Pour PUT, POST et DELETE, vous pouvez fournir :

  • Un élément unique : {« id »: « 1 »,…}

  • Une liste d’éléments : {« identified »: « id », « elements »: [{« id »: « 1 »,…}, {« id »: « 2 »,…}]}

  • Le format Json récupéré via GET peut être utilisé pour PUT, POST et DELETE.

  • Un fichier pour la classe pièce jointe (voir exemples) afin d’ajouter un fichier joint

Requêtes en Json

Quelques exemples de requêtes au format Json.

GET

  • URL: http://myserver/api/{objectclass}/{objectid} - (EX: http://myserver/api/Project/1)

    Description complète de l’objet de la classe donnée avec l’identifiant donné

  • URL: http://myserver/api/{objectclass}/all - (EX: http://myserver/api/Project/all)

    Description complète de tous les objets de la classe donnée

  • URL: http://myserver/api/{objectclass}/filter/{filterid} - (EX: http://myserver/api/Project/filter/1)

    Description complète de tous les objets de la classe donnée correspondant au filtre enregistré. L’identifiant du filtre peut être récupéré lors de l’enregistrement du filtre. L’utilisation d’un filtre d’une classe différente peut produire des résultats inattendus

  • URL: http://myserver/api/{objectclass}/search/{crit1}/{critN} - (EX: http://myserver/api/Activity/search/idProject=1/name like “%error%”)

    Description complète de tous les objets de la classe donnée correspondant aux critères donnés. Vous pouvez fournir autant de critères que vous le souhaitez, ils seront inclus dans la clause where avec l’opérateur AND. Contrairement à l’exemple, les critères doivent être « encodés en URL » ; utilisez par exemple la fonction PHP urlencode()

  • URL: http://myserver/api/{objetcclass}/updated/{start date}/{end date} - (EX: http://myserver/api/Project/updated/20231101000000/20231231235959)

    Description complète de tous les objets mis à jour entre la date de début et la date de fin. Le format de date est YYYYMMDDHHMMSS. Date >= « date de début » et date < « date de fin »

POST

  • URL: http://myserver/api/{objectclass}

    EX : Données fournies au format json en tant que valeur POST

    Description complète des objets mis à jour ou créés avec 2 champs supplémentaires : apiResult : statut de mise à jour et apiResultMessage

PUT

  • URL: http://myserver/api/{objectclass}

    EX : Données fournies au format json sous forme de fichier

    Description complète des objets mis à jour ou créés avec 2 champs supplémentaires : apiResult : statut de mise à jour et apiResultMessage

DELETE

  • URL: http://myserver/api/{objectclass}

    EX : Données fournies au format json sous forme de fichier

    Description complète des objets mis à jour ou créés avec 2 champs supplémentaires : apiResult : statut de mise à jour et apiResultMessage


Voici un exemple de code PHP appelant l’API pour une requête PUT et POST (création, mise à jour).

Note

Notez que par défaut l’API ProjeQtOr utilise une clé de chiffrement de 128 bits, c’est pourquoi dans les exemples la fonction AesCtr::encrypt utilise 128 comme dernier paramètre.

Si vous souhaitez le modifier, vous pouvez forcer l’API à utiliser une longueur de clé de chiffrement différente, il suffit d’ajouter dans parameters.php

$aesKeyLength=256; // Les valeurs possibles sont 128, 192, 256

(Le chiffrement 256 bits peut être illégal dans certains pays)

Cette requête liste tous les Tickets :

$fullUrl="http://myserver/api/Ticket/list/all";
$curl = curl_init($fullUrl);
curl_setopt($curl, CURLOPT_HTTPAUTH, CURLAUTH_BASIC);
curl_setopt($curl, CURLOPT_USERPWD, "projeqtor:projeqtor");
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
$curl_response = curl_exec($curl);
echo $curl_response;
curl_close($curl);

Avec DELETE permettant de supprimer le Ticket avec l’identifiant #1 :

$fullUrl="http://myserver/api/Ticket";
$data='{"id":"1"}';
$data=AesCtr::encrypt($data, 'ApiKeyForUserProjeqtor', 128);
$curl = curl_init($fullUrl);
curl_setopt($curl, CURLOPT_HTTPAUTH, CURLAUTH_BASIC);
curl_setopt($curl, CURLOPT_USERPWD, "projeqtor:projeqtor");
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($curl, CURLOPT_CUSTOMREQUEST, "DELETE");
curl_setopt($curl, CURLOPT_POST, true);
curl_setopt($curl, CURLOPT_POSTFIELDS, $data);
$curl_response = curl_exec($curl);
echo $curl_response;
curl_close($curl);

Avec PUT et POST (création ou mise à jour) permettant de mettre à jour le nom du Ticket avec l’identifiant #1 :

$fullUrl="http://myserver/api/Ticket";
$data='{"id":"1", "name":"name to be changed for Ticket 1"}';
$data=AesCtr::encrypt($data, 'ApiKeyForUserProjeqtor', 128);
$curl = curl_init($fullUrl);
curl_setopt($curl, CURLOPT_HTTPAUTH, CURLAUTH_BASIC);
curl_setopt($curl, CURLOPT_USERPWD, "projeqtor:projeqtor");
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($curl, CURLOPT_CUSTOMREQUEST, "PUT");
curl_setopt($curl, CURLOPT_POST, true);
curl_setopt($curl, CURLOPT_POSTFIELDS, $data);
$curl_response = curl_exec($curl);
echo $curl_response;
curl_close($curl);
$fullUrl="http://myserver/api/Ticket";
$data='{"id":"1", "name":"name to be changed for Ticket 1"}';
$data=AesCtr::encrypt($data, 'ApiKeyForUserProjeqtor', 256);
$curl = curl_init($fullUrl);
curl_setopt($curl, CURLOPT_HTTPAUTH, CURLAUTH_BASIC);
curl_setopt($curl, CURLOPT_USERPWD, "projeqtor:projeqtor");
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($curl, CURLOPT_CUSTOMREQUEST, "POST");
curl_setopt($curl, CURLOPT_POST, true);
curl_setopt($curl, CURLOPT_POSTFIELDS, $data);
$curl_response = curl_exec($curl);
echo $curl_response;
curl_close($curl);

Avec PUT et POST pour ajouter au Ticket #1 une pièce jointe avec un fichier :

$fullUrl="http://myserver/api/Attachment";
$data='{"id":"", "refType":"Ticket","refId":"1", "fileName":"test.zip","description":"test file","type":"file"}';
$data=AesCtr::encrypt($data, 'ApiKeyForUserProjeqtor', 256);
$curl = curl_init($fullUrl);
curl_setopt($curl, CURLOPT_HTTPAUTH, CURLAUTH_BASIC);
curl_setopt($curl, CURLOPT_USERPWD, "projeqtor:projeqtor");
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($curl, CURLOPT_CUSTOMREQUEST, "POST");
curl_setopt($curl, CURLOPT_POST, true);
curl_setopt($curl, CURLOPT_POSTFIELDS, array('data'=>$data, 'file'=>file_get_contents($filename)));
$curl_response = curl_exec($curl);
echo $curl_response;
curl_close($curl);
$fullUrl="http://myserver/api/Attachment";
$data='{"id":"", "refType":"Ticket","refId":"1", "fileName":"test.zip","description":"test file","type":"file"}';
$data=AesCtr::encrypt($data, 'ApiKeyForUserProjeqtor', 256);
$curl = curl_init($fullUrl);
curl_setopt($curl, CURLOPT_HTTPAUTH, CURLAUTH_BASIC);
curl_setopt($curl, CURLOPT_USERPWD, "projeqtor:projeqtor");
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($curl, CURLOPT_CUSTOMREQUEST, "POST");
curl_setopt($curl, CURLOPT_POST, true);
$postFields =
curl_setopt($curl, CURLOPT_POSTFIELDS, array('data'=>$data, 'file'=>new CURLFile($"test.zip", mime_content_type($"test.zip"),basename($"test.zip")));
$curl_response = curl_exec($curl);
echo $curl_response;
curl_close($curl);
Notez que les deux structures pour CURLOPT_POSTFIELDS peuvent toutes deux être utilisées pour POST et PUT
  • PUT avec les deux méthodes enverra les données et le fichier dans l’entrée (php://input) séparés comme un encodage multipart

  • POST avec la première méthode inclura le contenu du fichier dans un champ POST simple ($_REQUEST[“file”])

  • POST avec la seconde méthode utilisera la méthode d’encodage multipart ($_FILES[“file”])

  • La dernière est préférable pour les fichiers volumineux