Gestion des filtres sur des collections
Sommaire
Présentation générale
L’objectif principal de ce comportement est de permettre le positionnement de filtres sur des vues avec des données multiples issues du réservoir de données.
Fonctionnalités
- Filtrer des tableaux de données du réservoir de données sur des champs à valeur multiple
Utilisation
Pour mettre en place ce comportement, il suffit de déclarer deux extensions JAVA :
- une extension sur une vue de processus
- une extension sur le formulaire comportant le tableau de données issues du réservoir de données.
Extension de vue
Poser l’extension suivante sur la vue de processus souhaitée :
com.vdoc.kit.ui.extensions.view.FilterMultipleValuesViewExtension
Extension de formulaire
Poser l’extension suivante sur le formulaire d’étape souhaité :
com.vdoc.kit.ui.extensions.document.FilterMultipleValuesDocumentExtension
Exemple de mise en œuvre
Depuis un document processus, l’utilisateur veut pouvoir :
- créer des données dans la tableB ;
- filtrer les données présentées dans le tableau en fonction des données sélectionnées de la tableA.
Pour cela, créer deux tables liées tableA et tableB (une donnée de la tableB fait référence à une donnée de la tableA) dans le réservoir de données.
Table A
Nom de champ | Type | Commentaire |
---|---|---|
fieldTitle | Texte | |
fieldDescription | Texte |
Table B
La tableB pointe sur la tableA via le champ fieldRefTableA. La tableB pointe sur le document
Nom de champ | Type | Commentaire |
---|---|---|
fieldTitle | Texte | |
fieldRefTableA | Donnée de réservoir (simple) | |
fieldRefDocument | Texte (Référence vers un objet) | Permet de faire référence au document processus. |
Altérer la vue par défaut associée à la tableB comme suit :
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<definition name="DEFAULT" catalog="DB" catalogType="4" class="com.axemble.vdoc.sdk.interfaces.IStorageResource" extensionClasses="com.vdoc.kit.ui.extensions.view.FilterMultipleValuesViewExtension">
<filters>
<fieldgroup operator="AND">
<field name="sys_ResourceDefinition" value="TableB"/>
<field name="fieldRefTableA.sys_Title" operator="equals" value="${iResource.values.fieldRefMulipleTableA.sys_Title}"/>
<fieldgroup/>
</fieldgroup>
</filters>
<template type="desktop" displayMode="table"></template>
<view sortBy="" sortAscending="true" enableCreateTreatment="true" enableOpenTreatment="true" enableDeleteTreatment="true" enableSecureTreatment="true" itemsPerPage="10" countElements="true">
<column name="fieldTitle"/>
<column name="fieldRefTableA.sys_Title"/>
</view>
</definition>
Ensuite, créer un processus dont le formulaire de la première étape (par exemple) comporte deux champs :
- un champ multiple pointant sur les données de la tableA
- un champ tableau pointant sur les données de la tableB (via un écran XML)
Description du formulaire de processus
Nom de champ | Type | Commentaire |
---|---|---|
fieldRefMulipleTableA | Donnée de réservoir (multiple) | |
fieldXmlTableOfTableB | Écran personnalisable (XML personnalisé) | <view column=“fieldRefDocument” name=“LesTableB” action=“view” label=“LG_SELECTION” provider=“com.axemble.vdoc.storage.ui.core.providers.views.ResourceViewProvider” enableCreateTreatment=“true” view=“uril://vdoc/resourceDefinitionView/DefaultOrganization/AppExample/DB:4/TableB/DEFAULT” selectable=“true” paginable=“true” filterable=“true” > |