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” >