cancel
Showing results for 
Search instead for 
Did you mean: 

Contrôler l'intégrité des documents

dranakan
Champ on-the-rise
Champ on-the-rise
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 9

rguinot
Confirmed Champ
Confirmed Champ
pas clair

dranakan
Champ on-the-rise
Champ on-the-rise
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
Confirmed Champ
Confirmed Champ
pencherait plutôt vers une contrainte custom : http://wiki.alfresco.com/wiki/Constraints

dranakan
Champ on-the-rise
Champ on-the-rise
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
Champ on-the-rise
Champ on-the-rise
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
Confirmed Champ
Confirmed Champ
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
Champ on-the-rise
Champ on-the-rise
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
Confirmed Champ
Confirmed Champ
A quoi d'autre qu'une propriété voulez vous affecter la contrainte ?

dranakan
Champ on-the-rise
Champ on-the-rise
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.