IBM FileNet

Installer & Configurer votre instance FlowerDocs
IBM FileNet

    Le connecteur FileNet s’appuie sur la version 5.2.1 du produit FileNet P8 d’IBM.

    Le connecteur est validé sous Oracle 11g et SQL Server 2014.


    Cette documentation s’appuie sur le dossier ${FD_HOME} contenant les fichiers de configuration des applications.

    FlowerDocs Core

    Le dossier ${FD_HOME} doit contenir les fichiers de configuration :

    • core.properties : contient l’ensemble des propriétés de configuration pour FlowerDocs
    • config.properties : contient l’ensemble des propriétés de configuration pour FileNet
    • database.properties : contient l’ensemble des propriétés de configuration pour la base de données

    L’ensemble des propriétés permettant de configurer l’application FlowerDocs Core doivent être ajoutées dans le fichier core.properties situé dans le répertoire ${FD_HOME}.
    Concernant le chargement des fichiers config.properties et database.properties, il est nécessaire de fournir la propriété flower.docs.config.dir à la JVM. Ces fichiers sont chargés au démarrage de la JVM, les modifications ne sont donc prises en compte qu’après redémarrage de l’application.

    core.services.dao=filenet
    core.services.file.dao=filenet
    ws.ldap.type=filenet
    
    ######## LDAP configuration ########################################################
    ldap.bind.url=ldap://<ldap host>:<ldap port>
    ldap.bind.dn=<ldap admin DN>
    ldap.bind.password=<ldap admin password>
    ldap.base.dn=<ldap base DN>
    ldap.attr.display.name=displayName
    ldap.attr.id=CN
    
    ######## FILENET Configuration #####################################################
    system.admin.username=<filenet admin name>
    system.admin.password=<filenet admin password>
    filenet.uri=http://<filenet host>:<filenet port>/wsi/FNCEWS40MTOM/
    
    database.type=<mssql ou oracle>

    Accès à FileNet

    La configuration générale pour FileNet s’effectue dans le fichier config.properties :

    Propriété Description
    filenet.ce.os.name Nom de la librairie (ou object store) utilisée
    filenet.ce.connectionPoint Nom du point de connexion du système de flux de travaux
    filenet.workitem.uid Champ utilisé pour l’identifiant d’un workflow

    Exemple :

    filenet.ce.os.name=OS1
    filenet.ce.connectionPoint=CP1
    filenet.workitem.uid=F_WobNum
    add.filenet.document.allowed=false

    Accès aux bases de données

    FlowerDocs nécessite l’accès à deux bases de données qui doivent être configurées dans le fichier database.properties :

    • son référentiel
    • celle utilisée par FileNet pour stocker les workflows

    Accès au référentiel

    Propriété Description
    jdbc.driver Classe Java à utiliser comme drive JDBC
    jdbc.url URL JDBC permettant l’accès au référentiel (ex : jdbc:oracle:thin:@host:port:nom de la base)
    jdbc.schema.name Nom du schéma dans lequel est stocké le référentiel
    jdbc.username Nom de l’utilisateur accédant au schéma
    jdbc.password Mot de passe de l’utilisateur accédant au schéma

    Accès à la base FileNet

    Propriété Description
    filenet.pe.jdbc.driver Classe Java à utiliser comme drive JDBC
    filenet.pe.jdbc.url URL JDBC permettant l’accès au référentiel (ex : jdbc:oracle:thin:@host:port:nom de la base)
    filenet.pe.jdbc.username Nom de l’utilisateur accédant au schéma
    filenet.pe.jdbc.password Mot de passe de l’utilisateur accédant au schéma
    filenet.pe.region.number Numéro de la région isolée à utiliser

    Exemples

    
    jdbc.driver=oracle.jdbc.OracleDriver
    jdbc.url=jdbc:oracle:thin:@localhost:1521:orcl
    jdbc.schema.name=FLOWER_USR
    jdbc.username=FLOWER_USR
    jdbc.password=PASSWORD
    
    filenet.pe.jdbc.driver=oracle.jdbc.OracleDriver
    filenet.pe.jdbc.url=jdbc:oracle:thin:@localhost:1521:orcl
    filenet.pe.jdbc.username=FNOS1_USR
    filenet.pe.jdbc.password=PASSWORD
    filenet.pe.region.number=1
    
    #FlowerDocs task DB properties
    jdbc.driver=com.microsoft.sqlserver.jdbc.SQLServerDriver
    jdbc.url=jdbc:sqlserver://<database host>;databaseName=flower_db
    jdbc.schema.name=dbo
    jdbc.username=<database user>
    jdbc.password=<database password>
    
    #Filenet DB properties
    filenet.pe.jdbc.driver=com.microsoft.sqlserver.jdbc.SQLServerDriver
    filenet.pe.jdbc.url=jdbc:sqlserver://<database host>;databaseName=<database name>
    filenet.pe.jdbc.username=<database user>
    filenet.pe.jdbc.password=<database password>
    filenet.pe.region.number=1
    filenet.pe.jdbc.schemaname=dbo
    
    jpa.vendor.adapter=org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter
    jpa.vendor.adapter.databasePlatform=org.hibernate.dialect.SQLServer2012Dialect
    jpa.property.hibernate.hbm2ddl.auto=validate
    jpa.property.hibernate.show_sql=true
    

    FlowerDocs GUI

    L’ensemble des propriétés permettant de configurer l’application FlowerDocs GUI doivent être ajoutées dans le fichier gui.properties situé dans le répertoire ${FD_HOME}.
    Ce fichier est chargé au démarrage de la JVM, les modifications ne sont donc prises en compte qu’après redémarrage de l’application.

    ws.url=http://<flower host>:<flower port>/<flower context path>/services
    scope.default=<scope>
    
    gui.client.arender.params.doc=id
    gui.client.arender.params.file=id
    gui.client.arender.params.scope=objectStoreName
    arender.rendition.nodes=http(s)://rendition-host:8761
    
    ######## LDAP configuration ########################################################
    ldap.bind.url=ldap://<ldap host>:<ldap port>
    ldap.bind.dn=<ldap admin DN>
    ldap.bind.password=<ldap admin password>
    ldap.base.dn=<ldap base DN>
    ldap.attr.display.name=displayName
    ldap.attr.id=CN
    
    ######## FILENET Configuration #####################################################
    system.admin.username=<filenet admin name>
    system.admin.password=<filenet admin password>

    Configuration additionnelle

    Propriété Description
    historyDateFormatter Format de date utilisé pour manipuler les dates de l’historique d’un workflow (T_LastActionDate). Ce format doit être le même que celui utilisé au niveau de la définition de workflow
    queryDateFormatter Format de date utilisé pour manipuler les champs de workflow de type date. Ce format doit être le même que celui utilisé par le Process Engine
    doc.prop.wkfid Nom de la propriété permettant de définir l’identifiant du workflow sur les pièces jointes
    filenet.pe.roster Nom du roster utilisé (par défaut : DefaultRoster)
    filenet.autoclassify.document Désactiver le classement automatique des documents dans le dossier /FlowerDocs/Documents (par défaut : true)

    Cette section liste les répertoires nécessaires au bon fonctionnement du connecteur. FlowerDocs s’appuie sur une arborescence technique située dans le répertoire /FlowerDocs à la racine (dossier RootFolder).


    Les dossiers listés dans cette partie doivent être créés avant le démarrage de FlowerDocs.


    Il est préconisé de réaliser les étapes concernant le modèle de données FileNet à partir de l’export FDM mis à disposition avec le produit afin de faciliter les changements de modèles induits par FlowerDocs.

    Configuration

    La configuration de FlowerDocs est réalisée sous la forme de documents stockés dans les répertoires suivants :

    • /FlowerDocs/Administration
    • /FlowerDocs/Administration/Classes
    • /FlowerDocs/Administration/Reports
    • /FlowerDocs/Administration/Scope
    • /FlowerDocs/Administration/Securities
    • /FlowerDocs/Administration/TagCategories
    • /FlowerDocs/Administration/Tags
    • /FlowerDocs/Administration/Workflow definition


    Il est préconisé que l’accès à ces répertoires et leur contenu soit restreint aux utilisateurs habilités.

    Instances

    Les composants créés via FlowerDocs sont par défaut stockés dans les répertoires suivants (s’ils ne sont pas reclassés dans d’autres répertoires) :

    • /FlowerDocs/Documents
    • /FlowerDocs/Files
    • /FlowerDocs/Folders
    • /FlowerDocs/Searches
    • /FlowerDocs/VirtualFolders


    Il est préconisé de réaliser les étapes concernant le modèle de données FileNet à partir de l’export FDM mis à disposition avec le produit afin de faciliter les changements de modèles induits par FlowerDocs.

    • Créez les classes de documents :

      • GUIConfiguration
      • OperationHandlerRegistration
      • Script
      • CSS
      • LDAPConfiguration
      • FactFieldsConfiguration
      • UserPreference
    • Ajoutez une propriété FlowerAcl de type Objet (dont la classe est Objet Personnalisé) sur les classes Document & Dossier

    • Ajoutez une propriété isVirtualFolder de type Booléen (dont la valeur par défaut est false) sur la classe Dossier

    Pour gérer la suppression logique, il est nécessaire de configurer une corbeille de récupération nommée FlowerDocsBin.

    Pour cela, ouvrez l’ACCE puis :

    • Ouvrez la librairie (ou ObjectStore)
    • Cliquez sur Corbeille de récupération
    • Cliquez sur Nouveau
    • Dans le champ Nom d’affichage, saisissez FlowerDocsBin
    • Cliquez sur Suivant puis Terminer

    Une fois la corbeille de récupération créée, il peut être nécessaire d’affiner la sécurité par défaut positionnée sur cette corbeille.



    Pour qu’un utilisateur puisse placer un composant dans cette corbeille, il est nécessaire qu’il y ait accès.

    Configuration PCC

    Accès à la PCC

    Pour ouvrir l’applet de configuration de la PCC :

    • Ouvrez l’ACCE
    • Allez dans la librairie (ou ObjectStore)
    • Cliquez droit sur Système de flux de travaux
    • Cliquez sur Configurer les paramètres de flux de travaux

    Ensuite, repérez le connection point associé à la région considérée et double-cliquez pour s’y connecter.

    Code module

    FlowerDocs Operations
    Code module FlowerDocs (Version : 2.5.0)

    • Depuis l’ACCE, créez un document de classe Module de code avec le JAR FlowerDocs Operations (flower-filenet-bpm-operations-2.5.0-jar-with-dependencies.jar)

    • Puis dans la PCC, ouvrez les propriétés de Files d'attente des composants > FLOWER_Composant :

      • Allez dans l’onglet Adapteur
      • Sélectionnez Composant Java
      • Cliquez sur Configurer
      • Sélectionnez le code module FlowerDocs Operations
      • Puis sélectionnez la classe Java com.arondor.flower.component.FlowerOperations.class
    • Cliquez sur Appliquer les modifications

    Import à partir d’assets FDM

    L’import FDM fourni avec le produit comporte la configuration minimale pour la PCC lors de l’initialisation d’un nouveau projet. Les assets flower-docs-filenet-pe embarquent la configuration PCC et les workflows. Afin de fluidifier un premier déploiement, le transfert des workflows peut être réalisé en même temps que leur import. Ceci suppose d’avoir au préalable créé le composant FLOWER_COMPOSANT car il sera nécessaire pour mapper les services.

    Import à partir d’un fichier XML

    Une configuration initiale peut être importée à partir d’un fichier XML. Pour la charger depuis la PCC :

    • Cliquez droit sur le Connection Point
    • Cliquez sur Importer à partir d’un fichier XML

    Export d’une configuration

    Les modifications de la configuration des files d’attente peuvent être sauvegardées sous la forme d’un fichier XML. Ce type de sauvegarde peut être utilisée pour initialiser une région (comme indiqué dans la partie précédente).

    • Cliquez droit sur le Connection Point
    • Cliquez sur Importer à partir d’un fichier XML

    Configuration minimale pour FlowerDocs

    Le nom de la file d’attente ne doit pas dépasser 25 caractères. Pour chaque file d’attente définie et pour le roster, il est nécessaire d’exposer à minima les champs suivants (chaîne) :

    • T_StepName
    • T_StepId
    • T_AssignedTo
    • T_StepACL
    • T_WorkflowName
    • T_AttachmentIds
    • T_WorkInProgress
    • T_WorkflowId
    • T_AssignedTeam

    Ensuite, tous les champs métier utilisés dans les select clause des recherches et dossier virtuels doivent être exposés.

    Schéma Oracle

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


    Créez un schéma dédié à FlowerDocs en exécutant le script suivant et en l’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éez une nouvelle base de données dédiée à FlowerDocs et définissez le compte d’accès FlowerDocs propriétaire de cette base.

    Scripts Oracle

    Exécutez 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 :

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

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

    • Tapez :

      @<nom du fichier SQL> ;


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

    Scripts SQL Server

    Exécutez 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;
    Batch FileNet
    Batch permettant d'initialiser le référentiel FlowerDocs (Version : 2.5.0)

    Première exécution

    • Décompressez l’archive flower-filenet-bpm-batch-2.3.6-packaging.zip
    • Déposez les fichiers Excel correspondant à votre paramétrage dans le dossier data (à la place de ceux fournis par le produit).
    • Editez le fichier database.properties situé dans le répertoire props et adaptez les propriétés suivantes en fonction du référentiel créé précédemment :

      • jdbc.url : URL de connexion JDBC à la base de données
      • jdbc.username : utilisateur dédié au référentiel FlowerDocs
      • jdbc.password : mot de passe associé
      • Le paramètre reload.procedures du fichier config.properties est positionné à true.
      • Les paramètres hibernate.hbm2ddl.auto et jpa.property.hibernate.hbm2ddl.auto du fichier database.properties sont positionnés à create.
    • Executez le script d’exécution run en fonction du système d’exploitation

    Erreurs possibles à l’initialisation de la BDD FlowerDocs

    Si l’erreur suivante survient com.flower.filenet.bpm.model.exceptions.TechnicalException: Could not initialize view using stored procedure: FLOWER_USR.INITVIEW Caused by: java.sql.SQLSyntaxErrorException: ORA-00955: ce nom d'objet existe déjà

    • supprimez la table T_SELECT_LIST_ELEMENT_VIEW
    • exécutez la procédure stockée INITVIEW
    • relancez le batch

    Exécution ultérieure

    Le paramètre reload.procedures du fichier config.properties est positionné à false. Les paramètres hibernate.hbm2ddl.auto et jpa.property.hibernate.hbm2ddl.auto du fichier database.properties sont positionnés à validate.

    La création d’une connexion DbExecute doit être réalisée à partir de Process Configuration Console.


    Ensuite, effectuez les étapes suivantes :

    • Sélectionnez la connexion à la base de données
    • Cliquez sur Action > Propriétés…
    • Allez dans l’onglet Connexions DbExecute
    • Cliquez sur l’icône Ajouter et saisir les informations suivantes :
      • Nom de connexion : REF_DB
      • Les autres informations doivent être remplies avec celles du référentiel dédié à FlowerDocs
    • Cliquez ensuite sur Ok afin de vérifier la connexion

    Workflows de base FlowerDocs


    Il est préconisé de réaliser les étapes concernant le modèle de données FileNet à partir de l’export FDM mis à disposition avec le produit afin de faciliter les changements de modèles induits par FlowerDocs.

    Créez les définitions de workflows suivants dans le dossier /FlowerDocs/Administration/Workflow definition :

    • WF_Flower_Root.pep
    • WF_Flower_Root_Business.pep

    Puis pour chacun, transférez les définitions en sélectionnant la librairie (ou Object Store) adéquate.

    Construction des workflows métier

    Tous les workflows métier créés dans le Process Designer héritent du workflow WF_Flower_Root_Business.

    Les noms symboliques des data fields créés au sein d’une définition de workflow doivent respecter la norme suivante :

    • préfixe B_ pour toutes les données métiers qui seront affichées côté interface utilisateur représentant un tag sur la classe de tâches FlowerDocs
    • préfixe T_ pour toutes les données techniques qui seront disponibles sur la classe de tâches FlowerDocs, mais masquées à l’utilisateur final, représentant un tag technique sur la classe de tâches FlowerDocs


    Le nom symbolique des data fields ne doit pas dépasser les 30 caractères.


    De plus si des héritages de données sont à prévoir entre la partie CE et PE, les noms symboliques des data fields PE doivent être identiques aux noms symboliques de property templates.


    Le mode multi DAO permet une écriture en Y des données à la fois dans FileNet et dans Elasticsearch. Ce mode permet d’alimenter Elasticsearch avec les données issues de FlowerDocs pour construire des tableaux de bord avec Kibana.

    Ce mode s’active en ajoutant les propriétés suivantes :

    Proprités Valeur Description
    core.dao.multi true Activation du mode multi DAO
    es.conflict.version true Désactiver la gestion des modifications concurrentes d’Elasticsearch
    es.nodes Renseigner cette propriété avec les adresses des différents noeuds Elasticsearch séparées par une , (par défaut : localhost:9300)


    Note : Ce mode ne permet de stocker, dans Elasticsearch, que les données issues de FlowerDocs. Les modifications effectuées directement auprès de FileNet ne seront pas répercutées dans Elasticsearch. Dans ce cas, une indexation doit être faite depuis un code module FileNet.

    Erreur à l’ouverture du Process Designer

    Erreur : Vous obtenez une erreur HTTP 505 à l’ouverture d’une définition de workflow dans Process Designer via ICN

    Solution : Dans l’onglet Administration d’ICN, configurez le référentiel de Flux de travaux du bureau considéré

    Erreur lors d’une recherche

    Erreur : java.sql.SQLSyntaxErrorException: ORA-00904: “T_WorkflowName” : identificateur non valide

    Solution : Ouvrez la PCC et vérifiez que le champ indiqué dans l’erreur est bien exposé sur la file d’attente concernée

    Erreur lors d’une suppression physique

    Erreur : FNRCE0058E: E_REQUIRED_VALUE_ABSENT: Une valeur de propriété obligatoire n’a pas été définie. La propriété de singleton obligatoire RecoveryBin ne comporte aucune valeur.

    Solution : Vérifiez que l’utilisateur concerné a bien accès à la corbeille de récupération dans l’ACCE