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

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

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

Notes de version
Version : 2.4.2.5

Déploiement

Renommer les applications selon les nom suivants :

  • GUI : flower-docs-gui-webapp-2.4.2.5.war → gui.war
  • Core : flower-docs-core-webapp-2.4.2.5.war → core.war
  • ARender : flower-docs-arender-hmi-2.4.2.5.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.5)

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

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