Skip to content
Snippets Groups Projects
Commit 00fd2a74 authored by Laurent Lecluse's avatar Laurent Lecluse
Browse files

Mise en place du CRON pour la MAJ des effectifs Chargens

parent c23ee419
No related branches found
No related tags found
No related merge requests found
Showing
with 91 additions and 61 deletions
---
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
No preview for this file type
......@@ -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é.
......
No preview for this file type
No preview for this file type
......@@ -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);
if (!Console::isConsole()) {
$serviceAuthorize = $serviceLocator->get('BjyAuthorize\Service\Authorize');
$chargensProvider->setServiceAuthorize($serviceAuthorize);
}
$chargensProvider->setServiceTypeHeures(
$serviceLocator->get(TypeHeuresService::class)
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment