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

Mise à jour des procédures : mise en forme

parent ed4ee751
No related branches found
No related tags found
No related merge requests found
...@@ -20,6 +20,10 @@ switch ($action) { ...@@ -20,6 +20,10 @@ switch ($action) {
$version = $c->getArg(3); $version = $c->getArg(3);
/* Action à effectuer */ /* Action à effectuer */
break; break;
case 'synchronisation':
$job = $c->getArg(2);
$oa->exec('UnicaenImport SyncJob '.$job);
break;
default: default:
help($c, $oa); help($c, $oa);
break; break;
...@@ -207,7 +211,7 @@ class OseAdmin ...@@ -207,7 +211,7 @@ class OseAdmin
public function exec($args) public function exec($args)
{ {
$this->console->exec("php ../public/index.php " . $args); $this->console->exec("php ".dirname(__DIR__)."/public/index.php " . $args);
} }
} }
......
...@@ -323,6 +323,7 @@ class DataGen ...@@ -323,6 +323,7 @@ class DataGen
if ('PRIVILEGE_ID' == $column) { if ('PRIVILEGE_ID' == $column) {
$cppSql = "SELECT cp.code || '-' || p.code FROM privilege p JOIN categorie_privilege cp ON cp.id = p.categorie_id WHERE p.id = privilege_id"; $cppSql = "SELECT cp.code || '-' || p.code FROM privilege p JOIN categorie_privilege cp ON cp.id = p.categorie_id WHERE p.id = privilege_id";
return "(SELECT p.id FROM privilege p JOIN categorie_privilege cp ON p.categorie_id = cp.id WHERE cp.code || ''-'' || p.code = ''' ||($cppSql)|| ''')"; return "(SELECT p.id FROM privilege p JOIN categorie_privilege cp ON p.categorie_id = cp.id WHERE cp.code || ''-'' || p.code = ''' ||($cppSql)|| ''')";
} }
...@@ -339,7 +340,6 @@ class DataGen ...@@ -339,7 +340,6 @@ class DataGen
} }
if ($def['constraint_table']) { if ($def['constraint_table']) {
$ctable = $def['constraint_table']; $ctable = $def['constraint_table'];
$ccol = $def['constraint_column']; $ccol = $def['constraint_column'];
......
...@@ -355,14 +355,7 @@ END; ...@@ -355,14 +355,7 @@ END;
ORDER BY ORDER BY
object_name object_name
"; ";
$this->addDdlQuery(self::PACKAGES_BODIES, $q, function($name,$ddl){ $this->addDdlQuery(self::PACKAGES_BODIES, $q);
if ($name == 'OSE_IMPORT'){
$ddl = str_replace('-- SYNC COMMENT', '/*', $ddl);
$ddl = str_replace('-- END SYNC COMMENT', '*/', $ddl);
}
return $ddl;
});
$q = "SELECT $q = "SELECT
......
No preview for this file type
---
title: "Procédure d'installation de OSE"
author: Laurent Lécluse - DSI - Unicaen
titlepage: true
titlepage-color: 06386e
titlepage-text-color: ffffff
titlepage-rule-color: ffffff
titlepage-rule-height: 1
...
# Prérequis # Prérequis
## Serveur Web ## Serveur Web
Installer sur une distribution GNU/Linux - Debian 9 (Stretch) de préférence. Installer sur une distribution GNU/Linux - Debian 9 (Stretch) de préférence.
...@@ -190,11 +200,27 @@ Ce mode vous permettra de : ...@@ -190,11 +200,27 @@ Ce mode vous permettra de :
Une fois cette étape terminée, il convient de passer OSE en mode production. Cela se fait dans le fichier de configuration `config.local.php`, en positionnant à `false` `global/modeInstallation`. Une fois cette étape terminée, il convient de passer OSE en mode production. Cela se fait dans le fichier de configuration `config.local.php`, en positionnant à `false` `global/modeInstallation`.
# Mise en place de la tâche CRON # Mise en place des tâches CRON
Une tâche CRON doit être lancée sur votre serveur régulièrement. Des tâches CRON doivent être lancée sur votre serveur régulièrement.
Elle sert à envoyer les notifications par mail pour les indicateurs à ceux qui se sont abonnés. Elle sert à envoyer les notifications par mail pour les indicateurs à ceux qui se sont abonnés.
En voici la commande : Dans tous les cas, c'est le script de OSE qui sera appelé.
Le script est situé dans le répertoire de OSE, `bin/ose`.
Il est suivi de l'action à exécuter, puis éventuellement de paramètres.
Exemple d'utilisation pour lancer une tâche de synchronisation appelée `principal`:
```bash
/usr/bin/php /var/www/ose/bin/ose synchronisation principal
```
| 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 :
```cron ```cron
###################### ######################
...@@ -202,7 +228,8 @@ En voici la commande : ...@@ -202,7 +228,8 @@ En voici la commande :
###################### ######################
# Notifications par mail des personnes abonnées à des indicateurs. # Notifications par mail des personnes abonnées à des indicateurs.
# Exécution du script du lundi au vendredi,chaque heure de 7h à 1h : # 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 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
``` ```
OSE est maintenant installé. OSE est maintenant installé.
......
No preview for this file type
---
title: "Procédure de mise à jour de OSE"
author: Laurent Lécluse - DSI - Unicaen
titlepage: true
titlepage-color: 06386e
titlepage-text-color: ffffff
titlepage-rule-color: ffffff
titlepage-rule-height: 1
...
# Procédure de mise à jour # Procédure de mise à jour
## Mode maintenance ## Mode maintenance
......
No preview for this file type
...@@ -1170,6 +1170,10 @@ CREATE TABLE "IMPORT_TABLES" ...@@ -1170,6 +1170,10 @@ CREATE TABLE "IMPORT_TABLES"
( "TABLE_NAME" VARCHAR2(30 CHAR) NOT NULL ENABLE, ( "TABLE_NAME" VARCHAR2(30 CHAR) NOT NULL ENABLE,
"SYNC_FILTRE" VARCHAR2(2000 CHAR), "SYNC_FILTRE" VARCHAR2(2000 CHAR),
"SYNC_ENABLED" NUMBER(1,0) DEFAULT 0 NOT NULL ENABLE, "SYNC_ENABLED" NUMBER(1,0) DEFAULT 0 NOT NULL ENABLE,
"SYNC_JOB" VARCHAR2(40 CHAR),
"SYNC_HOOK_BEFORE" VARCHAR2(4000 CHAR),
"SYNC_HOOK_AFTER" VARCHAR2(4000 CHAR),
"ORDRE" NUMBER,
CONSTRAINT "IMPORT_TABLES_PK" PRIMARY KEY ("TABLE_NAME") ENABLE CONSTRAINT "IMPORT_TABLES_PK" PRIMARY KEY ("TABLE_NAME") ENABLE
) ; ) ;
   
...@@ -2854,16 +2858,6 @@ CREATE OR REPLACE PACKAGE "OSE_HISTO" AS ...@@ -2854,16 +2858,6 @@ CREATE OR REPLACE PACKAGE "OSE_HISTO" AS
END OSE_HISTO; END OSE_HISTO;
/ /
   
-- OSE_IMPORT
CREATE OR REPLACE PACKAGE "OSE_IMPORT" IS
PROCEDURE REFRESH_MVS;
PROCEDURE SYNC_TABLES;
PROCEDURE SYNCHRONISATION;
END ose_import;
/
-- OSE_PAIEMENT -- OSE_PAIEMENT
CREATE OR REPLACE PACKAGE "OSE_PAIEMENT" AS CREATE OR REPLACE PACKAGE "OSE_PAIEMENT" AS
   
...@@ -5184,6 +5178,7 @@ SELECT ...@@ -5184,6 +5178,7 @@ SELECT
FROM FROM
user_tab_cols tc user_tab_cols tc
JOIN importable_tables t ON t.table_name = tc.table_name JOIN importable_tables t ON t.table_name = tc.table_name
LEFT JOIN import_tables it ON it.table_name = tc.table_name
LEFT JOIN c_values cv ON cv.table_name = tc.table_name AND cv.column_name = tc.column_name LEFT JOIN c_values cv ON cv.table_name = tc.table_name AND cv.column_name = tc.column_name
LEFT JOIN user_tab_cols stc ON stc.table_name = 'SRC_' || tc.table_name AND stc.column_name = tc.column_name LEFT JOIN user_tab_cols stc ON stc.table_name = 'SRC_' || tc.table_name AND stc.column_name = tc.column_name
WHERE WHERE
...@@ -5191,7 +5186,7 @@ WHERE ...@@ -5191,7 +5186,7 @@ WHERE
AND tc.column_name <> 'ID' AND tc.column_name <> 'ID'
AND tc.table_name <> 'SYNC_LOG' AND tc.table_name <> 'SYNC_LOG'
ORDER BY ORDER BY
tc.table_name, tc.column_id; it.ordre, tc.table_name, tc.column_id;
   
-- V_INDICATEUR_1010 -- V_INDICATEUR_1010
CREATE OR REPLACE FORCE VIEW "V_INDICATEUR_1010" ("ID", "ANNEE_ID", "INTERVENANT_ID", "STRUCTURE_ID") AS CREATE OR REPLACE FORCE VIEW "V_INDICATEUR_1010" ("ID", "ANNEE_ID", "INTERVENANT_ID", "STRUCTURE_ID") AS
...@@ -10141,98 +10136,6 @@ CREATE OR REPLACE PACKAGE BODY "OSE_HISTO" AS ...@@ -10141,98 +10136,6 @@ CREATE OR REPLACE PACKAGE BODY "OSE_HISTO" AS
END OSE_HISTO; END OSE_HISTO;
/ /
   
-- OSE_IMPORT
CREATE OR REPLACE PACKAGE BODY "OSE_IMPORT" IS
PROCEDURE REFRESH_MV( mview_name varchar2 ) IS
BEGIN
DBMS_MVIEW.REFRESH(mview_name, 'C');
EXCEPTION WHEN OTHERS THEN
UNICAEN_IMPORT.SYNC_LOG( SQLERRM, mview_name );
END;
PROCEDURE REFRESH_MVS IS
BEGIN
-- Mise à jour des vues matérialisées
-- procédure à adapter aux besoins de chaque établissement
REFRESH_MV('MV_UNICAEN_STRUCTURE_CODES');
REFRESH_MV('MV_AFFECTATION');
REFRESH_MV('MV_INTERVENANT');
END;
PROCEDURE SYNC_TABLES IS
BEGIN
/* procédure à adapter aux besoins de chaque établissement
UNICAEN_IMPORT.SYNCHRONISATION('PAYS');
UNICAEN_IMPORT.SYNCHRONISATION('DEPARTEMENT');
UNICAEN_IMPORT.SYNCHRONISATION('ETABLISSEMENT');
UNICAEN_IMPORT.SYNCHRONISATION('STRUCTURE');
UNICAEN_IMPORT.SYNCHRONISATION('ADRESSE_STRUCTURE');
UNICAEN_IMPORT.SYNCHRONISATION('DOMAINE_FONCTIONNEL');
UNICAEN_IMPORT.SYNCHRONISATION('CENTRE_COUT');
UNICAEN_IMPORT.SYNCHRONISATION('CENTRE_COUT_STRUCTURE');
-- Import automatique des users des nouveaux directeurs
INSERT INTO utilisateur (
id, display_name, email, password, state, username
)
SELECT
utilisateur_id_seq.nextval id,
display_name,
email,
password,
state,
username
FROM
mv_affectation
WHERE
username not in (select username from utilisateur);
UNICAEN_IMPORT.SYNCHRONISATION('AFFECTATION');
UNICAEN_IMPORT.SYNCHRONISATION('CORPS');
UNICAEN_IMPORT.SYNCHRONISATION('GRADE');
UNICAEN_IMPORT.SYNCHRONISATION('INTERVENANT');
UNICAEN_IMPORT.SYNCHRONISATION('AFFECTATION_RECHERCHE');
UNICAEN_IMPORT.SYNCHRONISATION('ADRESSE_INTERVENANT');
UNICAEN_IMPORT.SYNCHRONISATION('GROUPE_TYPE_FORMATION');
UNICAEN_IMPORT.SYNCHRONISATION('TYPE_FORMATION');
UNICAEN_IMPORT.SYNCHRONISATION('ETAPE');
UNICAEN_IMPORT.SYNCHRONISATION('ELEMENT_PEDAGOGIQUE');
UNICAEN_IMPORT.SYNCHRONISATION('EFFECTIFS');
--UNICAEN_IMPORT.SYNCHRONISATION('ELEMENT_TAUX_REGIMES');
UNICAEN_IMPORT.SYNCHRONISATION('CHEMIN_PEDAGOGIQUE');
UNICAEN_IMPORT.SYNCHRONISATION('VOLUME_HORAIRE_ENS');
UNICAEN_IMPORT.SYNCHRONISATION('NOEUD');
UNICAEN_IMPORT.SYNCHRONISATION('LIEN');
UNICAEN_IMPORT.SYNCHRONISATION('SCENARIO_LIEN');
REFRESH_MV('TBL_NOEUD');
UNICAEN_TBL.CALCULER('chargens');
-- Mise à jour des sources calculées en dernier
UNICAEN_IMPORT.SYNCHRONISATION('TYPE_INTERVENTION_EP');
UNICAEN_IMPORT.SYNCHRONISATION('TYPE_MODULATEUR_EP');
*/
END;
PROCEDURE SYNCHRONISATION IS
BEGIN
REFRESH_MVS;
SYNC_TABLES;
END SYNCHRONISATION;
END ose_import;
/
-- OSE_PAIEMENT -- OSE_PAIEMENT
CREATE OR REPLACE PACKAGE BODY "OSE_PAIEMENT" AS CREATE OR REPLACE PACKAGE BODY "OSE_PAIEMENT" AS
...@@ -19038,33 +18941,46 @@ INSERT INTO ETAT_VOLUME_HORAIRE(ID, CODE, LIBELLE, ORDRE) VALUES (ETAT_VOLUME_HO ...@@ -19038,33 +18941,46 @@ INSERT INTO ETAT_VOLUME_HORAIRE(ID, CODE, LIBELLE, ORDRE) VALUES (ETAT_VOLUME_HO
   
   
-- Table IMPORT_TABLES -- Table IMPORT_TABLES
INSERT INTO IMPORT_TABLES(TABLE_NAME, SYNC_FILTRE, SYNC_ENABLED) VALUES (q'[INTERVENANT]', q'[WHERE (IMPORT_ACTION IN ('delete','update','undelete') OR STATUT_ID IN (SELECT si.id FROM statut_intervenant si JOIN type_intervenant ti ON ti.id = si.type_intervenant_id WHERE ti.code = 'P'))]', 0); INSERT INTO IMPORT_TABLES(TABLE_NAME, SYNC_FILTRE, SYNC_ENABLED, SYNC_JOB, SYNC_HOOK_BEFORE, SYNC_HOOK_AFTER, ORDRE) VALUES (q'[INTERVENANT]', q'[WHERE (IMPORT_ACTION IN ('delete','update','undelete') OR STATUT_ID IN (SELECT si.id FROM statut_intervenant si JOIN type_intervenant ti ON ti.id = si.type_intervenant_id WHERE ti.code = 'P'))]', 0, NULL, q'[UNICAEN_IMPORT.REFRESH_MV('MV_UNICAEN_STRUCTURE_CODES');
INSERT INTO IMPORT_TABLES(TABLE_NAME, SYNC_FILTRE, SYNC_ENABLED) VALUES (q'[AFFECTATION_RECHERCHE]', q'[WHERE INTERVENANT_ID IS NOT NULL]', 0); UNICAEN_IMPORT.REFRESH_MV('MV_INTERVENANT');]', NULL, 12);
INSERT INTO IMPORT_TABLES(TABLE_NAME, SYNC_FILTRE, SYNC_ENABLED) VALUES (q'[ADRESSE_INTERVENANT]', q'[WHERE INTERVENANT_ID IS NOT NULL]', 0); INSERT INTO IMPORT_TABLES(TABLE_NAME, SYNC_FILTRE, SYNC_ENABLED, SYNC_JOB, SYNC_HOOK_BEFORE, SYNC_HOOK_AFTER, ORDRE) VALUES (q'[AFFECTATION_RECHERCHE]', q'[WHERE INTERVENANT_ID IS NOT NULL]', 0, NULL, NULL, NULL, 13);
INSERT INTO IMPORT_TABLES(TABLE_NAME, SYNC_FILTRE, SYNC_ENABLED) VALUES (q'[ELEMENT_TAUX_REGIMES]', q'[WHERE IMPORT_ACTION IN ('delete','insert','undelete')]', 0); INSERT INTO IMPORT_TABLES(TABLE_NAME, SYNC_FILTRE, SYNC_ENABLED, SYNC_JOB, SYNC_HOOK_BEFORE, SYNC_HOOK_AFTER, ORDRE) VALUES (q'[ADRESSE_INTERVENANT]', q'[WHERE INTERVENANT_ID IS NOT NULL]', 0, q'[test1]', NULL, NULL, 14);
INSERT INTO IMPORT_TABLES(TABLE_NAME, SYNC_FILTRE, SYNC_ENABLED) VALUES (q'[VOLUME_HORAIRE_ENS]', NULL, 0); INSERT INTO IMPORT_TABLES(TABLE_NAME, SYNC_FILTRE, SYNC_ENABLED, SYNC_JOB, SYNC_HOOK_BEFORE, SYNC_HOOK_AFTER, ORDRE) VALUES (q'[ELEMENT_TAUX_REGIMES]', q'[WHERE IMPORT_ACTION IN ('delete','insert','undelete')]', 0, NULL, NULL, NULL, 20);
INSERT INTO IMPORT_TABLES(TABLE_NAME, SYNC_FILTRE, SYNC_ENABLED) VALUES (q'[TYPE_MODULATEUR_EP]', NULL, 0); INSERT INTO IMPORT_TABLES(TABLE_NAME, SYNC_FILTRE, SYNC_ENABLED, SYNC_JOB, SYNC_HOOK_BEFORE, SYNC_HOOK_AFTER, ORDRE) VALUES (q'[VOLUME_HORAIRE_ENS]', NULL, 0, q'[test1]', NULL, NULL, 22);
INSERT INTO IMPORT_TABLES(TABLE_NAME, SYNC_FILTRE, SYNC_ENABLED) VALUES (q'[TYPE_INTERVENTION_EP]', NULL, 0); INSERT INTO IMPORT_TABLES(TABLE_NAME, SYNC_FILTRE, SYNC_ENABLED, SYNC_JOB, SYNC_HOOK_BEFORE, SYNC_HOOK_AFTER, ORDRE) VALUES (q'[TYPE_MODULATEUR_EP]', NULL, 0, q'[test1]', NULL, NULL, 27);
INSERT INTO IMPORT_TABLES(TABLE_NAME, SYNC_FILTRE, SYNC_ENABLED) VALUES (q'[TYPE_FORMATION]', NULL, 0); INSERT INTO IMPORT_TABLES(TABLE_NAME, SYNC_FILTRE, SYNC_ENABLED, SYNC_JOB, SYNC_HOOK_BEFORE, SYNC_HOOK_AFTER, ORDRE) VALUES (q'[TYPE_INTERVENTION_EP]', NULL, 0, q'[test1]', NULL, NULL, 26);
INSERT INTO IMPORT_TABLES(TABLE_NAME, SYNC_FILTRE, SYNC_ENABLED) VALUES (q'[STRUCTURE]', NULL, 0); INSERT INTO IMPORT_TABLES(TABLE_NAME, SYNC_FILTRE, SYNC_ENABLED, SYNC_JOB, SYNC_HOOK_BEFORE, SYNC_HOOK_AFTER, ORDRE) VALUES (q'[TYPE_FORMATION]', NULL, 0, q'[test1]', NULL, NULL, 16);
INSERT INTO IMPORT_TABLES(TABLE_NAME, SYNC_FILTRE, SYNC_ENABLED) VALUES (q'[SCENARIO_LIEN]', NULL, 0); INSERT INTO IMPORT_TABLES(TABLE_NAME, SYNC_FILTRE, SYNC_ENABLED, SYNC_JOB, SYNC_HOOK_BEFORE, SYNC_HOOK_AFTER, ORDRE) VALUES (q'[STRUCTURE]', NULL, 0, q'[test1]', NULL, NULL, 4);
INSERT INTO IMPORT_TABLES(TABLE_NAME, SYNC_FILTRE, SYNC_ENABLED) VALUES (q'[PAYS]', NULL, 0); INSERT INTO IMPORT_TABLES(TABLE_NAME, SYNC_FILTRE, SYNC_ENABLED, SYNC_JOB, SYNC_HOOK_BEFORE, SYNC_HOOK_AFTER, ORDRE) VALUES (q'[SCENARIO_LIEN]', NULL, 0, q'[test1]', NULL, NULL, 25);
INSERT INTO IMPORT_TABLES(TABLE_NAME, SYNC_FILTRE, SYNC_ENABLED) VALUES (q'[NOEUD]', NULL, 0); INSERT INTO IMPORT_TABLES(TABLE_NAME, SYNC_FILTRE, SYNC_ENABLED, SYNC_JOB, SYNC_HOOK_BEFORE, SYNC_HOOK_AFTER, ORDRE) VALUES (q'[PAYS]', NULL, 0, q'[test1]', NULL, NULL, 1);
INSERT INTO IMPORT_TABLES(TABLE_NAME, SYNC_FILTRE, SYNC_ENABLED) VALUES (q'[LIEN]', NULL, 0); INSERT INTO IMPORT_TABLES(TABLE_NAME, SYNC_FILTRE, SYNC_ENABLED, SYNC_JOB, SYNC_HOOK_BEFORE, SYNC_HOOK_AFTER, ORDRE) VALUES (q'[NOEUD]', NULL, 0, q'[test1]', NULL, q'[UNICAEN_IMPORT.REFRESH_MV('TBL_NOEUD');
INSERT INTO IMPORT_TABLES(TABLE_NAME, SYNC_FILTRE, SYNC_ENABLED) VALUES (q'[GROUPE_TYPE_FORMATION]', NULL, 0); UNICAEN_TBL.CALCULER('chargens');]', 23);
INSERT INTO IMPORT_TABLES(TABLE_NAME, SYNC_FILTRE, SYNC_ENABLED) VALUES (q'[GRADE]', NULL, 0); INSERT INTO IMPORT_TABLES(TABLE_NAME, SYNC_FILTRE, SYNC_ENABLED, SYNC_JOB, SYNC_HOOK_BEFORE, SYNC_HOOK_AFTER, ORDRE) VALUES (q'[LIEN]', NULL, 0, q'[test1]', NULL, NULL, 24);
INSERT INTO IMPORT_TABLES(TABLE_NAME, SYNC_FILTRE, SYNC_ENABLED) VALUES (q'[ETAPE]', NULL, 0); INSERT INTO IMPORT_TABLES(TABLE_NAME, SYNC_FILTRE, SYNC_ENABLED, SYNC_JOB, SYNC_HOOK_BEFORE, SYNC_HOOK_AFTER, ORDRE) VALUES (q'[GROUPE_TYPE_FORMATION]', NULL, 0, q'[test1]', NULL, NULL, 15);
INSERT INTO IMPORT_TABLES(TABLE_NAME, SYNC_FILTRE, SYNC_ENABLED) VALUES (q'[ETABLISSEMENT]', NULL, 0); INSERT INTO IMPORT_TABLES(TABLE_NAME, SYNC_FILTRE, SYNC_ENABLED, SYNC_JOB, SYNC_HOOK_BEFORE, SYNC_HOOK_AFTER, ORDRE) VALUES (q'[GRADE]', NULL, 0, q'[test1]', NULL, NULL, 11);
INSERT INTO IMPORT_TABLES(TABLE_NAME, SYNC_FILTRE, SYNC_ENABLED) VALUES (q'[ELEMENT_PEDAGOGIQUE]', NULL, 0); INSERT INTO IMPORT_TABLES(TABLE_NAME, SYNC_FILTRE, SYNC_ENABLED, SYNC_JOB, SYNC_HOOK_BEFORE, SYNC_HOOK_AFTER, ORDRE) VALUES (q'[ETAPE]', NULL, 0, q'[test1]', NULL, NULL, 17);
INSERT INTO IMPORT_TABLES(TABLE_NAME, SYNC_FILTRE, SYNC_ENABLED) VALUES (q'[EFFECTIFS]', NULL, 0); INSERT INTO IMPORT_TABLES(TABLE_NAME, SYNC_FILTRE, SYNC_ENABLED, SYNC_JOB, SYNC_HOOK_BEFORE, SYNC_HOOK_AFTER, ORDRE) VALUES (q'[ETABLISSEMENT]', NULL, 0, q'[test1]', NULL, NULL, 3);
INSERT INTO IMPORT_TABLES(TABLE_NAME, SYNC_FILTRE, SYNC_ENABLED) VALUES (q'[DOMAINE_FONCTIONNEL]', NULL, 0); INSERT INTO IMPORT_TABLES(TABLE_NAME, SYNC_FILTRE, SYNC_ENABLED, SYNC_JOB, SYNC_HOOK_BEFORE, SYNC_HOOK_AFTER, ORDRE) VALUES (q'[ELEMENT_PEDAGOGIQUE]', NULL, 0, q'[test1]', NULL, NULL, 18);
INSERT INTO IMPORT_TABLES(TABLE_NAME, SYNC_FILTRE, SYNC_ENABLED) VALUES (q'[DEPARTEMENT]', NULL, 0); INSERT INTO IMPORT_TABLES(TABLE_NAME, SYNC_FILTRE, SYNC_ENABLED, SYNC_JOB, SYNC_HOOK_BEFORE, SYNC_HOOK_AFTER, ORDRE) VALUES (q'[EFFECTIFS]', NULL, 0, q'[test1]', NULL, NULL, 19);
INSERT INTO IMPORT_TABLES(TABLE_NAME, SYNC_FILTRE, SYNC_ENABLED) VALUES (q'[CORPS]', NULL, 0); INSERT INTO IMPORT_TABLES(TABLE_NAME, SYNC_FILTRE, SYNC_ENABLED, SYNC_JOB, SYNC_HOOK_BEFORE, SYNC_HOOK_AFTER, ORDRE) VALUES (q'[DOMAINE_FONCTIONNEL]', NULL, 0, q'[test1]', NULL, NULL, 6);
INSERT INTO IMPORT_TABLES(TABLE_NAME, SYNC_FILTRE, SYNC_ENABLED) VALUES (q'[CHEMIN_PEDAGOGIQUE]', NULL, 0); INSERT INTO IMPORT_TABLES(TABLE_NAME, SYNC_FILTRE, SYNC_ENABLED, SYNC_JOB, SYNC_HOOK_BEFORE, SYNC_HOOK_AFTER, ORDRE) VALUES (q'[DEPARTEMENT]', NULL, 0, q'[test1]', NULL, NULL, 2);
INSERT INTO IMPORT_TABLES(TABLE_NAME, SYNC_FILTRE, SYNC_ENABLED) VALUES (q'[CENTRE_COUT_STRUCTURE]', NULL, 0); INSERT INTO IMPORT_TABLES(TABLE_NAME, SYNC_FILTRE, SYNC_ENABLED, SYNC_JOB, SYNC_HOOK_BEFORE, SYNC_HOOK_AFTER, ORDRE) VALUES (q'[CORPS]', NULL, 0, q'[test1]', NULL, NULL, 10);
INSERT INTO IMPORT_TABLES(TABLE_NAME, SYNC_FILTRE, SYNC_ENABLED) VALUES (q'[CENTRE_COUT]', NULL, 0); INSERT INTO IMPORT_TABLES(TABLE_NAME, SYNC_FILTRE, SYNC_ENABLED, SYNC_JOB, SYNC_HOOK_BEFORE, SYNC_HOOK_AFTER, ORDRE) VALUES (q'[CHEMIN_PEDAGOGIQUE]', NULL, 0, NULL, NULL, NULL, 21);
INSERT INTO IMPORT_TABLES(TABLE_NAME, SYNC_FILTRE, SYNC_ENABLED) VALUES (q'[AFFECTATION]', NULL, 0); INSERT INTO IMPORT_TABLES(TABLE_NAME, SYNC_FILTRE, SYNC_ENABLED, SYNC_JOB, SYNC_HOOK_BEFORE, SYNC_HOOK_AFTER, ORDRE) VALUES (q'[CENTRE_COUT_STRUCTURE]', NULL, 0, q'[test1]', NULL, NULL, 8);
INSERT INTO IMPORT_TABLES(TABLE_NAME, SYNC_FILTRE, SYNC_ENABLED) VALUES (q'[ADRESSE_STRUCTURE]', NULL, 0); INSERT INTO IMPORT_TABLES(TABLE_NAME, SYNC_FILTRE, SYNC_ENABLED, SYNC_JOB, SYNC_HOOK_BEFORE, SYNC_HOOK_AFTER, ORDRE) VALUES (q'[CENTRE_COUT]', NULL, 0, q'[test1]', NULL, NULL, 7);
INSERT INTO IMPORT_TABLES(TABLE_NAME, SYNC_FILTRE, SYNC_ENABLED, SYNC_JOB, SYNC_HOOK_BEFORE, SYNC_HOOK_AFTER, ORDRE) VALUES (q'[AFFECTATION]', NULL, 0, q'[test1]', q'[UNICAEN_IMPORT.REFRESH_MV('MV_AFFECTATION');
/* Import automatique des users des nouveaux directeurs */
INSERT INTO utilisateur (
id, display_name, email, password, state, username
)
SELECT
utilisateur_id_seq.nextval id,
aff.*
FROM
(SELECT DISTINCT display_name, email, password, state, username FROM mv_affectation) aff
WHERE
username not in (select username from utilisateur);]', NULL, 9);
INSERT INTO IMPORT_TABLES(TABLE_NAME, SYNC_FILTRE, SYNC_ENABLED, SYNC_JOB, SYNC_HOOK_BEFORE, SYNC_HOOK_AFTER, ORDRE) VALUES (q'[ADRESSE_STRUCTURE]', NULL, 0, q'[test1]', NULL, NULL, 5);
   
   
-- Table INDICATEUR -- Table INDICATEUR
...@@ -5,3 +5,83 @@ ALTER TABLE effectifs MODIFY ( ...@@ -5,3 +5,83 @@ ALTER TABLE effectifs MODIFY (
); );
DROP VIEW V_TYPE_INTERVENTION_REGLE_EP; DROP VIEW V_TYPE_INTERVENTION_REGLE_EP;
ALTER TABLE import_tables ADD (
ordre NUMBER
);
ALTER TABLE import_tables ADD (
sync_job VARCHAR2(40 CHAR)
);
ALTER TABLE import_tables ADD (
sync_hook_before VARCHAR2(4000 CHAR)
);
ALTER TABLE import_tables ADD (
sync_hook_after VARCHAR2(4000 CHAR)
);
CREATE OR REPLACE FORCE VIEW "V_IMPORT_TAB_COLS" ("TABLE_NAME", "COLUMN_NAME", "DATA_TYPE", "LENGTH", "NULLABLE", "HAS_DEFAULT", "C_TABLE_NAME", "C_COLUMN_NAME", "IMPORT_ACTIF") AS
WITH importable_tables (table_name )AS (
SELECT
t.table_name
FROM
user_tab_cols c
join user_tables t on t.table_name = c.table_name
WHERE
c.column_name = 'SOURCE_CODE'
MINUS
SELECT
mview_name table_name
FROM
USER_MVIEWS
), c_values (table_name, column_name, c_table_name, c_column_name) AS (
SELECT
tc.table_name,
tc.column_name,
pcc.table_name c_table_name,
pcc.column_name c_column_name
FROM
user_tab_cols tc
JOIN USER_CONS_COLUMNS cc ON cc.table_name = tc.table_name AND cc.column_name = tc.column_name
JOIN USER_CONSTRAINTS c ON c.constraint_name = cc.constraint_name
JOIN USER_CONSTRAINTS pc ON pc.constraint_name = c.r_constraint_name
JOIN USER_CONS_COLUMNS pcc ON pcc.constraint_name = pc.constraint_name
WHERE
c.constraint_type = 'R' AND pc.constraint_type = 'P'
)
SELECT
tc.table_name,
tc.column_name,
tc.data_type,
CASE WHEN tc.char_length = 0 THEN NULL ELSE tc.char_length END length,
CASE WHEN tc.nullable = 'Y' THEN 1 ELSE 0 END nullable,
CASE WHEN tc.data_default IS NOT NULL THEN 1 ELSE 0 END has_default,
cv.c_table_name,
cv.c_column_name,
CASE WHEN stc.table_name IS NULL THEN 0 ELSE 1 END AS import_actif
FROM
user_tab_cols tc
JOIN importable_tables t ON t.table_name = tc.table_name
LEFT JOIN import_tables it ON it.table_name = tc.table_name
LEFT JOIN c_values cv ON cv.table_name = tc.table_name AND cv.column_name = tc.column_name
LEFT JOIN user_tab_cols stc ON stc.table_name = 'SRC_' || tc.table_name AND stc.column_name = tc.column_name
WHERE
tc.column_name not like 'HISTO_%'
AND tc.column_name <> 'ID'
AND tc.table_name <> 'SYNC_LOG'
ORDER BY
it.ordre, tc.table_name, tc.column_id;
/
-- Suppression du JOB OSE_SRC_SYNC => Synchro effectuée maintenant par CRON
BEGIN
DBMS_SCHEDULER.DROP_JOB(job_name => '"OSE"."OSE_SRC_SYNC"',
defer => false,
force => true);
END;
/
drop package "OSE"."OSE_IMPORT";
\ No newline at end of file
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please to comment