diff --git a/CHANGELOG b/CHANGELOG index b3c7ce602644a82b3a9b196819ddc088ad518d78..ccfc622c231c3cc282711f0d7896a290a09f2b21 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -1,3 +1,8 @@ +--- +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 diff --git a/bin/ose b/bin/ose index 74514f13b33daa8dd5625e4dee5a679754369635..bb6fe0eaa2af43ad021c662cafc5c62204796a60 100755 --- a/bin/ose +++ b/bin/ose @@ -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"); } diff --git a/code/GenDbStructure/DdlGen.php b/code/GenDbStructure/DdlGen.php index 3e6a3e8fd8ecdbebdc09636aae7ac4a9636414af..421fa95adfeeccb98b4c3cd2be3920833a65ad1e 100644 --- a/code/GenDbStructure/DdlGen.php +++ b/code/GenDbStructure/DdlGen.php @@ -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', diff --git a/code/test6.php b/code/test6.php index 8443aef099d237cdb43cdaf5b269f49da5c0193b..9db28f97aa7526d7555e5523f5611387bf7c0955 100644 --- a/code/test6.php +++ b/code/test6.php @@ -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 diff --git "a/data/D\303\251ploiement/Changements.pdf" "b/data/D\303\251ploiement/Changements.pdf" index c089acb498495aadcc15e8533c83e58abd026955..363bda2b2febca8291ef5a81ddf8819de0f47e1c 100644 Binary files "a/data/D\303\251ploiement/Changements.pdf" and "b/data/D\303\251ploiement/Changements.pdf" differ diff --git "a/data/D\303\251ploiement/Proc\303\251dure d'installation.md" "b/data/D\303\251ploiement/Proc\303\251dure d'installation.md" index d50fc0b7499d435ef0cc206e91a938bb52513b22..1a1a04cfa4f24a041254f32decbed0f4bee09f83 100644 --- "a/data/D\303\251ploiement/Proc\303\251dure d'installation.md" +++ "b/data/D\303\251ploiement/Proc\303\251dure d'installation.md" @@ -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é. diff --git "a/data/D\303\251ploiement/Proc\303\251dure d'installation.pdf" "b/data/D\303\251ploiement/Proc\303\251dure d'installation.pdf" index 536675ba2e04a9fc91a92e19c995cdb8ab502ec5..a1557e2f58805c025cc66900d499a088023f53fa 100644 Binary files "a/data/D\303\251ploiement/Proc\303\251dure d'installation.pdf" and "b/data/D\303\251ploiement/Proc\303\251dure d'installation.pdf" differ diff --git "a/data/D\303\251ploiement/Proc\303\251dure de mise \303\240 jour.pdf" "b/data/D\303\251ploiement/Proc\303\251dure de mise \303\240 jour.pdf" index 26aa26e12d08fbd56dd9e67be8d1cd348903a160..5fb3146d38888f758009784448032796a5f677e3 100644 Binary files "a/data/D\303\251ploiement/Proc\303\251dure de mise \303\240 jour.pdf" and "b/data/D\303\251ploiement/Proc\303\251dure de mise \303\240 jour.pdf" differ diff --git "a/data/D\303\251ploiement/ose-ddl.sql" "b/data/D\303\251ploiement/ose-ddl.sql" index a74bf3a89e76b1cc842f8ee0d9fd6f6c0ee126aa..0877219ec73a90bf8b2cdcd2175234f3f91e2ca6 100755 --- "a/data/D\303\251ploiement/ose-ddl.sql" +++ "b/data/D\303\251ploiement/ose-ddl.sql" @@ -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 ( diff --git "a/data/Mises \303\240 jour/06.3.sql" "b/data/Mises \303\240 jour/06.3.sql" index cd9fad55d85018becdd2e737c6c195b58a53d368..1a34001cb233f575710a6eec4187d0c895c9befc 100644 --- "a/data/Mises \303\240 jour/06.3.sql" +++ "b/data/Mises \303\240 jour/06.3.sql" @@ -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 diff --git a/module/Application/Module.php b/module/Application/Module.php index 602bca4c3fcf377b75240e082ae1ce63d6575add..552bc9b23c5ebad43af0ab20f167d874353b4883 100755 --- a/module/Application/Module.php +++ b/module/Application/Module.php @@ -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", ]; } diff --git a/module/Application/config/chargens.config.php b/module/Application/config/chargens.config.php index 90802b814b7ce3806b113460838d8dc399424977..26019373f09a65c43138721ba693f4ef30610950 100644 --- a/module/Application/config/chargens.config.php +++ b/module/Application/config/chargens.config.php @@ -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' => [ diff --git a/module/Application/src/Application/Controller/ChargensController.php b/module/Application/src/Application/Controller/ChargensController.php index 54020ebc52cf674d8f32c5cd3269200f388b49eb..dd4569b8df2e0822a71784b53927e37b87cbeceb 100644 --- a/module/Application/src/Application/Controller/ChargensController.php +++ b/module/Application/src/Application/Controller/ChargensController.php @@ -342,6 +342,13 @@ class ChargensController extends AbstractController + public function calculEffectifsAction() + { + $this->getProviderChargens()->calculEffectifs(); + } + + + public function exportCsvAction() { /** @var Scenario $scenario */ diff --git a/module/Application/src/Application/Provider/Chargens/ChargensProvider.php b/module/Application/src/Application/Provider/Chargens/ChargensProvider.php index 2fb67f7450b7743a0252aa1ae60427faa387d809..272b1a7e7070c4b2913121bb5c0b888061513035 100644 --- a/module/Application/src/Application/Provider/Chargens/ChargensProvider.php +++ b/module/Application/src/Application/Provider/Chargens/ChargensProvider.php @@ -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 * diff --git a/module/Application/src/Application/Provider/Chargens/ChargensProviderFactory.php b/module/Application/src/Application/Provider/Chargens/ChargensProviderFactory.php index 9be47f21a2440c2329879696c1e85166fc9c90fb..c1962546e847f3e3a874355996221144b54c3bc1 100644 --- a/module/Application/src/Application/Provider/Chargens/ChargensProviderFactory.php +++ b/module/Application/src/Application/Provider/Chargens/ChargensProviderFactory.php @@ -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)