IBM FileNet

Installer & Configurer votre instance FlowerDocs

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.2)

  • Depuis l’ACCE, créez un document de classe Module de code avec le JAR FlowerDocs Operations (flower-filenet-bpm-operations-2.5.0.2-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.2)

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