IBM FileNet

Installer & Configurer votre instance Flower

    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 la propriété ${F_HOME} définissant le répertoire dans lequel est stocké la configuration de FlowerDocs.

    Ce répertoire doit être défini par serveur d’application (au niveau de la JVM) grâce à la propriété flower.docs.config.dir. Il doit contenir les fichiers de configuration :

    • flowerdocs.properties : contient l’ensemble des propriétés de configuration pour Flower
    • 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ée

    Configuration générale

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

    ws.url=http://<flower host>:<flower port>/<flower context path>/services
    core.services.dao=filenet
    core.services.file.dao=filenet
    ws.ldap.type=filenet
    
    scope.default=<scope>
    
    gui.client.arender.params.doc=id
    gui.client.arender.params.file=id
    gui.client.arender.params.scope=objectStoreName
    
    ######## 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 :

    Proprités 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

    Flower 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

    Proprités 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

    Proprités 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

    Oracle

    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
    

    MS SQLServer

    #Flower 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
    

    Login Module

    L’authentification des utilisateurs auprès de FileNet doit passer par le login module FileNet. Il est donc nécessaire de le configurer au niveau du serveur d’application utilisé.

    Pour Tomcat, ajouter le fichier jaas.config suivant dans le dossier conf du répertoire d’installation :

    FileNetP8WSI {
        com.filenet.api.util.WSILoginModule required;
    };
    

    Configuration additionnelle

    Proprités Description
    doc.prop.wkfid Nom de la propriété permettant de définir sur l’identifiant du workflow sur les pièces jointes
    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. Flower 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 Flower.


    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 Flower.

    Configuration

    La configuration de Flower 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 Flower 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

    Téléchargement

    Télécharger les applications suivantes :

    Flower GUI
    Interface graphique (Version : 2.4.2)

    Flower Core
    Coeur de l'application exposant des web services (Version : 2.4.2)

    ARender HMI
    Interface graphique de la visionneuse (Version : 2.4.2)

    Notes de version
    Version : 2.4.2

    Déploiement

    Renommer les applications selon les nom suivants :

    • GUI : flower-docs-gui-webapp-2.4.2.war → gui.war
    • Core : flower-docs-core-webapp-2.4.2.war → core.war
    • ARender : flower-docs-arender-hmi-2.4.2.war → flower-docs-arender.war

    Copier les trois applications WEB renommées dans le répertoire ${TOMCAT_HOME}/webapps



    Pour configurer les applications déployées, il est nécessaire de suivre la procédure en fonction du connecteur concerné.


    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 Flower.

    • Créer les classes de document :

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

    • Ajouter 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, ouvrir l’ACCE puis :

    • Ouvrir la librairie (ou ObjectStore)
    • Cliquer sur Corbeille de récupération
    • Cliquer sur Nouveau
    • Dans le champ Nom d’affichage, saisir FlowerDocsBin
    • Cliquer 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 accès.

    Configuration PCC

    Accès à la PCC

    Pour ouvrir l’applet de configuration de la PCC :

    • Ouvrir l’ACCE
    • Aller dans la librairie (ou ObjectStore)
    • Clic droit sur Système de flux de travaux
    • Cliquer sur Configurer les paramètres de flux de travaux

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

    Code module

    Flower Operations
    Code module Flower (Version : 2.4.2)

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

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

      • Aller dans l’onglet Adapteur
      • Sélectionner Composant Java
      • Cliquer sur Configurer
      • Sélectionner le code module Flower Operations
      • Puis sélectionner la classe Java com.arondor.flower.component.FlowerOperations.class
    • Cliquer 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 embarque 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éer 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 :

    • cliquer droit sur le Connection Point
    • cliquer 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).

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

    Configuration minimale pour Flower

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

    Première exécution

    • Décompresser l’archive flower-filenet-bpm-batch-2.3.6-packaging.zip
    • Déposer les fichiers excel correspondant à votre paramétrage dans le dossier data (à la place de ceux fournis par le produit).
    • Editer le fichier database.properties situé dans le répertoire props et adapter 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 Flower
      • 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.
    • Executer le script d’exécution run en fonction du système d’exploitation

    Erreurs possibles à l’initialisation de la BDD Flower

    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à

    • supprimer la table T_SELECT_LIST_ELEMENT_VIEW
    • exécuter la procédure stockée INITVIEW
    • relancer 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 la Process Configuration Console.


    Ensuite, effectuer les étapes suivantes :

    • Sélectionner la connection à la base de donnée
    • Cliquer sur Action > Propriétés…
    • Aller dans l’onglet Connexions DbExecute
    • Cliquer 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é à Flower
    • Cliquer ensuite sur Ok afin de vérifier la connexion

    Workflows de base Flower


    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 Flower.

    Créer 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érer les définitions en sélectionnant la librairie (ou Object Store) adéquat.

    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, ceci représentera un tag sur la classe de tâche Flower
    • préfixe T_ pour toutes les données techniques qui seront disponibles sur la classe de tâche Flower mais masquées à l’utilisateur final, ceci représentera un tag technique sur la classe de tâche Flower


    Le nom symbolique des data fields ne doivent 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 Flower 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)


    Nota : Ce mode ne permet de stocker, dans Elasticsearch, que les données issues de Flower. 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, configurer 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 : Ouvrer la PCC et vérifier 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