Référentiel

Le référentiel est alimenté par le batch Flower et permet de stocker l’ensemble de la configuration métier issue des fichiers Excel.

Schéma Oracle

Les opérations suivantes doivent être exécuter avec un utilisateur ayant le rôle sysdba


Créer un schéma dédié à Flower en exécutant le script suivant et en adaptant :

  • l’utilisateur (ici FLOWER_USR) et son mot de passe
  • le répertoire d’installation Oracle (ici /oracle/app/oracle/oradata/orcl)
  • le nom des tablespaces ( ici FLOWER_DB_TS et FLOWER_DB_TMP_TS)

    CREATE BIGFILE TABLESPACE FLOWER_DB_TS DATAFILE 
    	'/oracle/app/oracle/oradata/orcl/FLOWER_DB_TS.DBF' SIZE 100M AUTOEXTEND ON NEXT 1M 
    	LOGGING
    	ONLINE
    	PERMANENT
    	EXTENT MANAGEMENT LOCAL AUTOALLOCATE
    	BLOCKSIZE 8K
    	SEGMENT SPACE MANAGEMENT AUTO
    	FLASHBACK ON;
    
    CREATE BIGFILE TEMPORARY TABLESPACE FLOWER_DB_TMP_TS TEMPFILE 
    	'/oracle/app/oracle/oradata/orcl/FLOWER_DB_TMP_TS.DBF' SIZE 100M AUTOEXTEND ON NEXT 1M 
    	EXTENT MANAGEMENT LOCAL UNIFORM SIZE 1M;
    
    CREATE USER FLOWER_USR 
    	IDENTIFIED BY FILENET
    	DEFAULT TABLESPACE FLOWER_DB_TS
    	TEMPORARY TABLESPACE FLOWER_DB_TMP_TS
    	PROFILE DEFAULT
    	ACCOUNT UNLOCK;
      
    GRANT CREATE SEQUENCE TO FLOWER_USR;
    GRANT ALTER SESSION TO FLOWER_USR;
    GRANT CREATE SESSION TO FLOWER_USR;
    GRANT CREATE TABLE TO FLOWER_USR;
    GRANT CREATE VIEW TO FLOWER_USR;
    GRANT CREATE PROCEDURE TO FLOWER_USR;
    GRANT UNLIMITED TABLESPACE TO FLOWER_USR;
    GRANT SELECT ON SYS.DBA_PENDING_TRANSACTIONS TO FLOWER_USR;
    GRANT SELECT ON SYS.DBA_2PC_PENDING TO FLOWER_USR;
    GRANT EXECUTE ON SYS.DBMS_XA TO FLOWER_USR;
    GRANT SELECT ON SYS.DUAL TO FLOWER_USR;
    GRANT SELECT ON SYS.PENDING_TRANS$ TO FLOWER_USR;
    GRANT SELECT ON SYS.PRODUCT_COMPONENT_VERSION TO FLOWER_USR;
    

Schéma SQL Server

Créer une nouvelle base de données dédiée à Flower et définir le compte d’accès Flower propriétaire de cette base.

Scripts Oracle

Exécuter ensuite le script suivant :

CREATE SEQUENCE WKF_ID;
CREATE OR REPLACE PROCEDURE GETWKFID (id_dmd IN OUT NUMBER) IS
 BEGIN 
 select WKF_ID.nextval into id_dmd from dual; 
END getwkfid;

create or replace
PROCEDURE GetMembership (LDAPGroupName IN OUT VARCHAR, QueuesName IN OUT VARCHAR, ResultsNumber IN OUT NUMBER)
IS
   TYPE Type_TableQueueNames is TABLE of t_queue.name%type;
   TableQueueNames Type_TableQueueNames := Type_TableQueueNames();
   positionFin NUMBER(3) := 0;
   NumberResultsTemp NUMBER(3) := 0;
   QueryDescription VARCHAR2(512) := 'Select name from t_queue where id in (select queue_id from t_ldap_group where name in (''';
     
BEGIN   
   positionFin := LENGTH(LDAPGroupName);
   LDAPGroupName := SUBSTR(LDAPGroupName, 0, positionFin-1);
   LDAPGroupName := REPLACE(LDAPGroupName, ';', ''',''' );   
   QueryDescription := QueryDescription || LDAPGroupName || '''))';
   
   EXECUTE IMMEDIATE QueryDescription BULK COLLECT INTO TableQueueNames;
   
   IF TableQueueNames.COUNT = 0 THEN
        ResultsNumber := 0;
   ELSE   
     FOR i IN TableQueueNames.first..TableQueueNames.last LOOP
          IF QueuesName IS NULL THEN
              QueuesName := TableQueueNames(i);
          ELSE
              QueuesName := QueuesName || ';' || TableQueueNames(i);
          END IF;
          NumberResultsTemp := NumberResultsTemp + 1;
     END LOOP;
     QueuesName := QueuesName || ';';
   END IF;
   
   ResultsNumber := NumberResultsTemp;
   
   EXCEPTION   
     WHEN NO_DATA_FOUND THEN
        ResultsNumber := 0;
END;
/

En passant par SQL Plus :

  • Lancer une invite de commandes
  • Exécuter la commande (le service name est différent du host) :

    sqlplus <user>@<service name> 
    
  • Entrer le mot de passe de connexion

  • Taper :

    @<nom du fichier SQL> ;
    


Nota : Si une erreur apparaît, vérifier qu’à la fin du fichier le caractère « / » est bien présent

Scripts SQL Server

Exécuter ensuite le script suivant :

CREATE SEQUENCE [dbo].[WKF_ID] 
 AS [bigint]
 START WITH 1
 INCREMENT BY 1
 MINVALUE 1
 MAXVALUE 9223372036854775807
 CACHE

Puis celui-ci :

CREATE PROCEDURE [dbo].[GETWKFID]
	@wkfid bigint out
AS
BEGIN
	SELECT @wkfid = NEXT VALUE FOR dbo.WKF_ID
END;