Commit 00fd2a74 authored by Laurent Lécluse's avatar Laurent Lécluse
Browse files

Mise en place du CRON pour la MAJ des effectifs Chargens

parent c23ee419
---
title: "Changement intervenus sur OSE"
author: Laurent Lécluse - DSI - Unicaen
...
#OSE 6.3
## Corrections de bugs
......@@ -29,6 +34,8 @@ Le déploiement de OSE se fait désormais directement à partir de sa plateforme
* Nouvelle procédure de mise à jour à partir de GitLab.
* Suppression des anciens Jobs Oracle et remplacement par des tâches CRON
## Procédure de mise à jour
* Sauvegardez votre fichier de configuration local (`config/application.local.php`)
......@@ -40,6 +47,7 @@ Supprimez complètement le répertoire OSE.
* Procédez à une nouvelle installation (procédure ici : https://ose.unicaen.fr/deploiement/install).
Si vous déployez au même endroit qu'avant, la configuration d'Apache ne devra pas être modifiée.
La base de données n'a pas non plus besoin d'être réinstallée.
* Réintégrez votre fichier de configuration locale.
Attention : **ce dernier a changé d'emplacement**. De `config/application.local.php` il est devenu `config.local.php`.
......@@ -50,3 +58,13 @@ Le fichier n'est donc plus placé dans le répertoire `config`, mais à la **rac
A sa place, copiez-collez dans votre fichier la rubrique `'etablissement'` en provenance
du fichier `config/application.local.dist`, puis personnalisez-là.
* Modifiez la structure de votre base de données en exécutant dans SQL developer le script de mise à jour suivant :
`data/Mises à jour/06.3.sql`
* Créez les tâches CRON suivantes si elles n'existent pas déjà :
* notifier-indicateurs
* synchronisation
* chargens-calcul-effectifs
Pour cela, se référer à la procédure d'installation de OSE.
\ No newline at end of file
......@@ -24,6 +24,9 @@ switch ($action) {
$job = $c->getArg(2);
$oa->exec('UnicaenImport SyncJob '.$job);
break;
case 'chargens-calcul-effectifs':
$oa->exec('chargens-calcul-effectifs');
break;
default:
help($c, $oa);
break;
......@@ -104,6 +107,8 @@ function help(Console $c, OseAdmin $oa)
$c->println('Actions possibles :');
$c->println(" - update : Mise à jour de l'application");
$c->println(" - notifier-indicateurs : Envoi des mails relatifs aux indicateurs");
$c->println(" - synchronisation <job> : Effectue la synchronisation des données pour le <job> transmis");
$c->println(" - chargens-calcul-effectifs : Calcul des effectifs du module Charges");
}
......
......@@ -111,22 +111,6 @@ class DdlGen
$this->ddl[self::JOBS] = [];
$this->ddl[self::JOBS]['OSE_CHARGENS_CALCUL_EFFECTIFS'] = "BEGIN
DBMS_SCHEDULER.CREATE_JOB (
job_name => 'OSE_CHARGENS_CALCUL_EFFECTIFS',
job_type => 'STORED_PROCEDURE',
job_action => 'OSE_CHARGENS.CALC_ALL_EFFECTIFS',
number_of_arguments => 0,
start_date => TO_TIMESTAMP_TZ('2017-04-27 17:04:05.788458000 EUROPE/PARIS','YYYY-MM-DD HH24:MI:SS.FF TZR'),
repeat_interval => 'FREQ=DAILY;BYHOUR=20;BYMINUTE=0;BYSECOND=0',
end_date => NULL,
enabled => TRUE,
auto_drop => FALSE,
comments => 'Calcul général des effectifs des charges d''enseignement'
);
END;
/";
$this->ddl[self::JOBS]['OSE_FORMULE_REFRESH'] = "BEGIN
DBMS_SCHEDULER.CREATE_JOB (
job_name => 'OSE_FORMULE_REFRESH',
......
......@@ -6,3 +6,13 @@
* @var $viewName string
* @var $sl \Zend\ServiceManager\ServiceLocatorInterface
*/
use UnicaenImport\Processus\ImportProcessus;
/** @var ImportProcessus $ip */
$ip = $sl->get(ImportProcessus::class);
$ip->syncJob('test1');
\ No newline at end of file
......@@ -133,22 +133,6 @@ Certaines données ont en effet besoin d'être mis à jour périodiquement.
A vous d'adapter les périodicités à vos besoins.
```sql
/
BEGIN
DBMS_SCHEDULER.CREATE_JOB (
job_name => 'OSE_CHARGENS_CALCUL_EFFECTIFS',
job_type => 'STORED_PROCEDURE',
job_action => 'OSE_CHARGENS.CALC_ALL_EFFECTIFS',
number_of_arguments => 0,
start_date => TO_TIMESTAMP_TZ('2017-04-27 17:04:05.788458000 EUROPE/PARIS','YYYY-MM-DD HH24:MI:SS.FF TZR'),
repeat_interval => 'FREQ=DAILY;BYHOUR=20;BYMINUTE=0;BYSECOND=0',
end_date => NULL,
enabled => TRUE,
auto_drop => FALSE,
comments => 'Calcul général des effectifs des charges d''enseignement'
);
END;
/
......@@ -216,20 +200,19 @@ Exemple d'utilisation pour lancer une tâche de synchronisation appelée `princi
| Usage | Fréquence | Action de script |
| --------------------- | --------------------- | --------------------- |
| Indicateurs : envoi des notifications par mail | Les jours de semaine entre 5h et 17h | notifier-indicateurs |
| Synchronisation : Mise en place d'un job pour l'import des données. Plusieurs jobs pourront être créés au besoin | Tous les quarts d'heures entre 7h et 21h sauf le dimanche | synchronisation |
Voici un exemple de crontab :
| Synchronisation : Mise en place d'un job pour l'import des données. Plusieurs jobs pourront être créés au besoin | Tous les quarts d'heures entre 7h et 21h sauf le dimanche | synchronisation `<Nom du job>` |
| Calcul des effectifs du module Charges | une fois par jour, à 20h tous les jours sauf le dimanche. | chargens-calcul-effectifs |
Après la commande, on ajoute `1> /tmp/oselog 2>&1` pour loguer le résultat dans le fichier`/tmp/oselog`.
A adapter le cas échéant.
Voici un exemple de crontab :
```cron
######################
# OSE #
######################
# Notifications par mail des personnes abonnées à des indicateurs.
# Exécution du script du lundi au vendredi,chaque heure de 7h à 1h :
0 5-17 * * 1-5 root /usr/bin/php /var/www/ose/bin/ose notifier-indicateurs 1> /tmp/oselog 2>&1
*/15 7-21 * * 1-6 php /usr/bin/php /var/www/ose/bin/ose synchronisation job1 1> /tmp/oselog 2>&1
# m h dom mon dow command
0 5-17 * * 1-5 /usr/bin/php /var/www/ose/bin/ose notifier-indicateurs 1> /tmp/oselog 2>&1
*/15 7-21 * * 1-6 /usr/bin/php /var/www/ose/bin/ose synchronisation job1 1> /tmp/oselog 2>&1
0 20 * * 1-6 /usr/bin/php /var/www/ose/bin/ose chargens-calcul-effectifs 1> /tmp/oselog 2>&1
```
OSE est maintenant installé.
......
......@@ -18690,23 +18690,6 @@ ALTER TRIGGER "WF_ETAPE_DEP_CK" ENABLE;
-- Jobs
--------------------------------------------------
 
-- OSE_CHARGENS_CALCUL_EFFECTIFS
BEGIN
DBMS_SCHEDULER.CREATE_JOB (
job_name => 'OSE_CHARGENS_CALCUL_EFFECTIFS',
job_type => 'STORED_PROCEDURE',
job_action => 'OSE_CHARGENS.CALC_ALL_EFFECTIFS',
number_of_arguments => 0,
start_date => TO_TIMESTAMP_TZ('2017-04-27 17:04:05.788458000 EUROPE/PARIS','YYYY-MM-DD HH24:MI:SS.FF TZR'),
repeat_interval => 'FREQ=DAILY;BYHOUR=20;BYMINUTE=0;BYSECOND=0',
end_date => NULL,
enabled => TRUE,
auto_drop => FALSE,
comments => 'Calcul général des effectifs des charges d''enseignement'
);
END;
/
-- OSE_FORMULE_REFRESH
BEGIN
DBMS_SCHEDULER.CREATE_JOB (
......@@ -83,5 +83,13 @@ BEGIN
force => true);
END;
/
-- Suppression du JOB OSE_CHARGENS_CALCUL_EFFECTIFS
BEGIN
DBMS_SCHEDULER.DROP_JOB(job_name => '"OSE"."OSE_CHARGENS_CALCUL_EFFECTIFS"',
defer => false,
force => true);
END;
/
drop package "OSE"."OSE_IMPORT";
\ No newline at end of file
......@@ -161,6 +161,8 @@ class Module implements ConsoleUsageProviderInterface, ConsoleBannerProviderInte
"Notifications",
'notifier indicateurs [--force]' => "Notification par mail des personnes abonnées à des indicateurs",
['--force', "Facultatif", "Envoie les mails sytématiquement, sans tenir compte de la fréquence de notification."],
"Charges d'enseignement",
'chargens-calc-effectifs' => "Calcul des effectifs du module Charges",
];
}
......
......@@ -183,6 +183,22 @@ return [
],
],
'console' => [
'router' => [
'routes' => [
'chargens-calcul-effectifs' => [
'options' => [
'route' => 'chargens-calcul-effectifs',
'defaults' => [
'controller' => 'Application\Controller\Chargens',
'action' => 'calcul-effectifs',
],
],
],
],
],
],
'navigation' => [
'default' => [
'home' => [
......
......@@ -342,6 +342,13 @@ class ChargensController extends AbstractController
public function calculEffectifsAction()
{
$this->getProviderChargens()->calculEffectifs();
}
public function exportCsvAction()
{
/** @var Scenario $scenario */
......
......@@ -156,6 +156,16 @@ class ChargensProvider
/**
* @return \Doctrine\DBAL\Driver\Statement
*/
public function calculEffectifs()
{
return $this->getBdd()->execPlsql('OSE_CHARGENS.CALC_ALL_EFFECTIFS;');
}
/**
* @param Etape $etape
*
......
......@@ -5,6 +5,7 @@ namespace Application\Provider\Chargens;
use Application\Connecteur\Bdd\BddConnecteur;
use Application\Service\TypeHeuresService;
use UnicaenTbl\Service\TableauBordService;
use Zend\Console\Console;
use Zend\ServiceManager\FactoryInterface;
use Zend\ServiceManager\ServiceLocatorInterface;
......@@ -33,8 +34,10 @@ class ChargensProviderFactory implements FactoryInterface
$chargensProvider = new ChargensProvider();
$chargensProvider->setBdd($bdd);
$serviceAuthorize = $serviceLocator->get('BjyAuthorize\Service\Authorize');
$chargensProvider->setServiceAuthorize($serviceAuthorize);
if (!Console::isConsole()) {
$serviceAuthorize = $serviceLocator->get('BjyAuthorize\Service\Authorize');
$chargensProvider->setServiceAuthorize($serviceAuthorize);
}
$chargensProvider->setServiceTypeHeures(
$serviceLocator->get(TypeHeuresService::class)
......
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment