Créer des applications PLM avancées avec beCPG et Alfresco
Introduction
Qu'est-ce qu'un PLM et à quoi sert-il ?
Wikipédia en donne la définition suivante :
« Dans l'industrie, la gestion du cycle de vie des produits (PLM) est le processus qui gère l'ensemble du cycle de vie d'un produit, depuis sa conception, en passant par l'ingénierie et la fabrication, jusqu'au service après-vente et à la mise au rebut des produits fabriqués. Le PLM intègre les personnes, les données, les processus et les systèmes métier, et fournit une colonne vertébrale d'information produit à l'entreprise et à son écosystème étendu. »
Autrement dit, le PLM gère un produit tout au long de son cycle de vie : conception, design, fabrication, service et mise au rebut.
Un PLM combine souvent les briques suivantes :
- Gestion documentaire
- Processus BPMN
- Gestion de projet
Le PLM visait d'abord l'industrie. Il s'est ensuite étendu à de nombreux secteurs, parmi lesquels :
- Aéronautique et défense
- Automobile
- Biens de consommation
- Éducation
- Énergie
- Finance
- Agroalimentaire et boissons
- Administration publique
- Santé
- Électronique de haute technologie
- Industrie
- Dispositifs médicaux
- Pharmacie
Pourquoi la plateforme Alfresco ?
Wikipédia en donne la définition suivante :
« Alfresco est un système libre de gestion de contenu d'entreprise pour Microsoft Windows et les systèmes d'exploitation de type Unix. »
Alfresco ECM constituait un bon point de départ pour construire une plateforme PLM. Il offrait notamment :
- Une gestion documentaire puissante prête à l'emploi
- L'intégration de processus BPMN avec Activiti
- Une interface web moderne
- Une large communauté d'utilisateurs
- Un référentiel de contenu pour stocker les métadonnées des produits
Pour en savoir plus : http://www.alfresco.com
Et beCPG ?
beCPG est une plateforme ouverte qui apporte à Alfresco les modules manquants pour construire des applications PLM.
Elle se décline en trois grands volets :
- PLM
- Gestion de projet
- Reporting et BI
L'une des premières applications construites sur cette plateforme est la suite « beCPG for foods ». beCPG for foods est une application PLM complète pour l'agroalimentaire et les boissons. Prête à l'emploi, elle propose des modules propres à ce secteur, notamment :
- Référentiel produits
- Gestion des formules et des recettes
- Génération des fiches techniques et reporting
- Gestion réglementaire
- Gestion de la qualité
beCPG fournit aussi un large ensemble d'outils techniques utilisables seuls pour répondre à des besoins clients spécifiques. En voici quelques-uns :
- Datalists produit et configuration
- Framework ORM
- QueryBuilder
- Contrôles de formulaire personnalisés
- Concepteur de modèles
- Permissions par champ
- …
La suite de ce tutoriel présente ces modules et composants.
Fonctionnalités principales de beCPG PLM
Modèle
Le module beCPG PLM constitue le cœur de l'application : il gère les produits. Dans le vocabulaire beCPG, un produit s'appelle une « entité ». Un modèle Alfresco représente l'entité, qui doit hériter du super-type beCPG « entityV2 ».
Voici notre premier modèle PLM :

Vous verrez plus loin que vous pouvez créer ce modèle avec le concepteur de modèles beCPG. Une fois l'entité créée et déployée, le moteur beCPG la considère comme un produit PLM et gère son cycle de vie.
Voyons ce que vous pouvez faire avec un produit.
Créez votre nouvelle entité depuis le menu "Créer".

beCPG vous redirige ensuite vers la vue de l'entité.

La vue de l'entité diffère de la vue d'un document standard. La vue entité, ou vue produit, met l'accent sur les métadonnées de l'entité et ajoute plusieurs actions personnalisées. Pour associer une image personnalisée à votre entité, cliquez sur l'image du logo.
Votre nouvelle entité apparaît dans le menu beCPG des éléments récents.

Comme toujours en PLM, votre produit est associé à des documents et à des datalists. Des liens de navigation vers ces éléments figurent en haut à droite. L'entité apparaît comme un dossier dans la bibliothèque documentaire Alfresco. Pour parcourir son contenu, utilisez l'arborescence ou cliquez sur le lien "Documents". Vous accédez alors à un dossier Alfresco standard où vous pouvez ajouter la documentation technique de votre produit.
L'entité, ses documents et ses datalists forment un tout. Vous verrez dans la partie consacrée au versionnage que tout est versionné sous l'entité.
Voici la vue des documents :

Depuis cette vue, vous pouvez accéder aux datalists ou revenir au détail de l'entité.
Parlons maintenant des datalists. Elles constituent la partie principale de l'entité PLM.
Les datalists rattachent de multiples informations à votre produit. Leur usage le plus courant consiste à représenter la composition du produit. Elles servent aussi à d'autres usages, comme les listes de tâches ou les listes de documents associés.
Dans notre exemple de centrale nucléaire, l'entité dispose d'une datalist hiérarchique qui représente les différentes parties de la centrale. Chaque partie est elle-même une entité dotée d'une datalist de composants.
Pour ajouter la fonctionnalité de datalist à votre entité, déclarez l'aspect bcpg:entityListsAspect comme obligatoire sur votre type d'entité Alfresco. Un aspect ajoute une fonctionnalité à votre entité PLM. beCPG utilise beaucoup les aspects.
Un modèle Alfresco représente la datalist, qui doit hériter du super-type beCPG « bcpg:entityListItem ». Pour la rendre hiérarchique, utilisez l'aspect « bcpg:depthLevelAspect ».
Le modèle doit ressembler à ceci :

Une fois le modèle déployé, vous pouvez ajouter cette datalist à votre entité. Vous ne pouvez toutefois pas l'ajouter directement : chaque entité s'appuie sur un modèle d'entité (entityTemplate) qui définit sa structure et son arborescence de dossiers. Pour créer ce modèle, procédez comme suit :
- Créez une nouvelle entité et ajoutez-lui l'aspect "Modèle d'entité".
- Ouvrez ses datalists et ajoutez vos datalists.
- Revenez à votre première entité : beCPG y ajoute automatiquement les datalists.
Rangez votre modèle dans « Repository/System/Entity templates » (ou via l'administration beCPG, dossiers système).

Commencez ensuite à ajouter des éléments (la section Créer votre modèle PLM avec le concepteur explique la création des formulaires).

beCPG vous permet de modéliser vos données. Une fois votre entité prête, vous bénéficiez de tous les composants beCPG liés aux entités :
- Versionnage avec branches
- Vue des rapports de l'entité
- Modification en masse des entités
- Import/export des entités
- Accès distant aux entités
- Ordres de modification avec contrôle de version
- Analyse BI
- Vues de datalists personnalisées
- Formulation des entités
- Datalists sensibles aux versions
Cas d'emploi
Le cas d'emploi est une fonctionnalité PLM disponible automatiquement pour vos entités. Vous pouvez l'utiliser depuis la recherche (édition Entreprise uniquement) :

Ou directement depuis les actions de votre entité :

La page des cas d'emploi vous permet d'ajouter d'autres entités, de choisir l'association sur laquelle porte le cas d'emploi et de changer l'opérateur lorsque vous sélectionnez plusieurs entités.
Par exemple : « Donne-moi toutes les parties utilisées dans "planPartList" et dans Plant 1 OU Plant 2 ».
Vous pouvez exporter les résultats du cas d'emploi :

Créer votre modèle PLM avec le concepteur
Vous pouvez créer votre modèle de zéro avec le concepteur, mais partir d'un fichier XML existant est plus rapide. Créez un fichier avec le contenu ci-dessous et ajoutez-le dans « Repository/Data dictionary/models ». Changez le nom du modèle, qui doit être unique.
<model xmlns="http://www.alfresco.org/model/dictionary/1.0" name="splm:splmmodel">
<imports>
<import uri="http://www.alfresco.org/model/dictionary/1.0" prefix="d" />
<import uri="http://www.bcpg.fr/model/becpg/1.0" prefix="bcpg" />
</imports>
<namespaces>
<namespace uri="http://www.bcpg.fr/model/plm/sample/1.0" prefix="splm" />
</namespaces>
</model>
Ouvrez ensuite "Menu" > "beCPG" > "Concepteur de modèles" : votre modèle apparaît.

Avec le bouton "Nouvel élément", créez l'arborescence de votre modèle et ajoutez les propriétés et les datalists de votre centrale nucléaire.

Une fois votre modèle prêt, publiez-le. Il reste à créer les formulaires associés :
- Ouvrez « Repository/Data dictionary/configurations » et créez un fichier XML vide.
- Vérifiez que ce fichier apparaît dans le menu des formulaires du concepteur.
- Faites glisser votre type sous la configuration de formulaire : le concepteur crée automatiquement les formulaires correspondants.
Pour personnaliser l'interface, créez plusieurs formulaires avec des identifiants différents. Les formulaires de type « model-type » ne sont associés à aucun nœud. Les formulaires de type « node-type » servent à modifier des nœuds existants. Voici les combinaisons possibles :
entity :
model-type
- default (creation form)
- search (search form)
- bulk-edit (list of field in bulk-edit)
node-type
- default (edition form)
datalist :
model-type
- default (creation form)
- filter (filter form)
- datagrid (datagrid column)
node-type
- default (edition form)
Concentrons-nous sur la datalist des parties de la centrale. Pour la rendre multiniveau, ajoutez l'aspect « bcpg:depthLevelAspect ». Ajoutez ensuite au formulaire les champs suivants :
- « bcpg:parent », pour choisir le parent ;
- « bcpg:depthLevel » dans le formulaire de filtre, pour filtrer par niveau.
Pour choisir une partie, utilisez le contrôle d'autocomplétion beCPG. Faites glisser le contrôle sur le champ plantPartRef. Supprimez tous les paramètres, inutiles dans ce cas.

Publiez les formulaires en cliquant sur le bouton de la barre d'outils.