Contrôler l'intégrité des documents

cancel
Showing results for 
Search instead for 
Did you mean: 
dranakan
Active Member

Contrôler l'intégrité des documents

Hello,

Mon Alfresco stocke différents documents qui sont définis par une clef (créée par le type et les meta-data). Ces clefs sont normalement toutes uniques and je désire créer une action qui va vérifier ceci…

Forme des clefs :
-Type_A, Meta_A,Meta_B
-Type_B, Meta_A,Meta_C,Meta_D
-Type_C, …

L'action va lire chaque document et comparer avec les autres. (Ici par exemple, pour vérifier tous les documents type_A, l'action va comparer ce type avec les valeurs des couples Type_A,Meta_A,Meta_B,…)

Comment je peux faire cette action pour que cela soit performant ?  (Avez-vous un exemple ?)  :?:
Comment pourrais-je lancer cette action toutes les nuits  :?:

Merci :-)
(posté aussi sur forum en)
9 Replies
rguinot
Customer

Re: Contrôler l'intégrité des documents

pas clair
dranakan
Active Member

Re: Contrôler l'intégrité des documents

J'éclaircis…

Mon alfresco contient par exemple 3 documents définis selon un modèle de données personnalisé.

Modèle de données
Type : facture
Meta : numéro client
Meta : numéro entreprise

Données
1 facture : numéroClient=4, numéroEntreprise=1
1 facture : numéroClient=5, numéroEntreprise=1
1 facture : numéroClient=4, numéroEntreprise=2

Règle
Aucune facture ne peut avoir le même numéroClient et même numéroEntreprise.

Exemple d'erreur
1 facture : numéroClient=4, numéroEntreprise=2
1 facture : numéroClient=4, numéroEntreprise=2

Vérification
Créer une action qui compare les documents. Cela générera une alarme (log, email,…) si des doublons sont trouvés.

Questions
Comment je peux faire cette action pour que cela soit performant ? (Avez-vous un exemple ?) :?:
Comment pourrais-je lancer cette action toutes les nuits :?:
Cela est-il possible de faire au niveau du modèle de données :?:

Merci bien
rguinot
Customer

Re: Contrôler l'intégrité des documents

pencherait plutôt vers une contrainte custom : http://wiki.alfresco.com/wiki/Constraints
dranakan
Active Member

Re: Contrôler l'intégrité des documents

Merci bien.

Cela semble un excellent moyen pour lancer la vérification.

En ce qui concerne la vérification elle-même (comparer les métadonnées de tous les documents). Avez-vous des conseils particulier pour effectuer une recherche performante dans Alfresco ? (se servir de la Search API (utiliser une manière de faire particulière?), requête directe dans la base de données, …)  :?:
dranakan
Active Member

Re: Contrôler l'intégrité des documents

En suivant ceci http://wiki.alfresco.com/wiki/Constraints, je suis entrain d'implémenter un contrôle qui sera appelé par certains types de documents. Je n'arrive pas à définir une contrainte pour un type.

J'ai définit une contrainte dans mon model

   …
   <constraint name="sg:SingleDoc" type="ch.custom.model.constraint.SingleDocConstraint">
   </constraint>                  
</constraints>

J'ai créé le bout de code qui check (le contrôle n'est pas encore implémenté):

package ch.custom.model.constraint;

import org.alfresco.repo.dictionary.constraint.AbstractConstraint;
import org.alfresco.service.cmr.dictionary.ConstraintException;

/**
* Check that the document is single in Alfresco. (Check attributes)
*
*/
public class SingleDocConstraint extends AbstractConstraint {
   @Override
   protected void evaluateSingleValue(Object value) {
      // Check if same type with same attributs values exist in alfresco
      …
   }
}

Je désire pouvoir déclencher un contrôle dès qu'un document est ajouter, modifié. Pour ceci, je définis une contrainte. Je désire associer la contrainte au type de document, mais cela n'est visiblement pas possible (d'après la description du modèle de données (modelSchema.xsd)).

Comment puis-je associer une contrainte à un type de document (dans mon model) ?

(j'ai vu qu'on pourrait ajouter un aspect au type, et lui mettre une "property", laquelle fait référence à ma contrainte, mais je pense qu'on pourrait faire plus propre…)

Merci
rguinot
Customer

Re: Contrôler l'intégrité des documents

On peut bien entendu ajouter une contrainte à un type de document. voir par exemple la contrainte cm:filename sur le type cmSmiley Surprisedbject du contentModel
dranakan
Active Member

Re: Contrôler l'intégrité des documents

Merci. Avez-vous un autre exemple, car il semble que la contrainte soit liée à la propriété "cm:name"et non au type.

D:\Alfresco\tomcat\webapps\alfresco\WEB-INF\classes\alfresco\model\contentModel.xml
 
<types>
      <type name="cm:cmobject">
         <title>Object</title>
         <parent>sys:base</parent>
         <properties>
            <property name="cm:name">
               <title>Name</title>
               <type>d:text</type>
               <mandatory enforced="true">true</mandatory>
            <index enabled="true">
              <atomic>true</atomic>
              <stored>false</stored>
                  <tokenised>both</tokenised>
               </index>
               <constraints>
                  <constraint ref="cm:filename" />
               </constraints>
            </property>
         </properties>
         <mandatory-aspects>
            <aspect>cm:auditable</aspect>
         </mandatory-aspects>
      </type>

Merci bien.
rguinot
Customer

Re: Contrôler l'intégrité des documents

A quoi d'autre qu'une propriété voulez vous affecter la contrainte ?
dranakan
Active Member

Re: Contrôler l'intégrité des documents

Je désire affecter une contrainte à plusieurs propriétés.
Le but étant de vérifier dans Alfresco qu'un document d'un certain type ne peut exister plusieurs fois avec les mêmes valeurs d'attributs.

Si vous avez une autre idée pour faire ceci… je suis preneur.

Merci bien.