Ajout métadata et gestion des droits

cancel
Showing results for 
Search instead for 
Did you mean: 
thomasberment
Member II

Ajout métadata et gestion des droits

Salut tout le monde, je suis nouveau sur le forum et je travaille sur Alfresco depuis peu de temps.

J'avais une question importante, qui est la suivante : peut-on ajouter une méta-donnée "statut" pour un document ? Et peut-on donner des droits d'acces sur cette méta-donnée?

Je m'explique, mon souhait est de réaliser dans un espace une liste de document qui ont tous des "statut" différents, par exemple "en lecture", "relu", "validé", etc. Une sorte de cycle de vie d'un document… Et en parallèle à ça gérer les droits d'accès à ces fichiers, par exemple bob à le droit de lire les documents "validé" mais pas les éditer, toto peut éditer un document "en lecture".

J'espère avoir était clair sur mon objectif, sinon hésitez pas à me poser des questions …

J'ai vu qu'il était possible d'ajouter des méta-données mais je sais pas trop comment faire et par où commencer. En plus la gestion des droits sur les méta-données j'ai pas trouvé grand chose voir même rien sur le sujet. Pouvez-vous m'aider ?

Merci à tous …
12 Replies
mdutoo
Member II

Re: Ajout métadata et gestion des droits

Bonjour Thomas

Le plus simple sans développement est d'utiliser un dossier différent pour chaque état, et de poser les différentes permissions appropriées sur chacun.

Si tu ne souhaites pas que tes utilisateurs change l'état en déplaçant les documents, ou si les droits posés ne suffisent pas pour ça, tu devra définir un workflow jBPM ou un ensemble de (web)scripts. Si tu souhaites en plus marquer sur chaque document son état actuel, tu devras effectivement définir une métadonnée "statut", typiquement de type d:text et avec une contrainte de type LIST (liste de valeurs), et la laisser changer manuellement ou bien là aussi la gérer par scripts.

Enfin, si tu veux réaliser exactement ce que tu décris (un dossier avec des documents d'états et droits différents dépendant de l'état), il te faudra définir un workflow mais aussi customiser les droits en développant en Java ta propre implémentation de DynamicAuthority.

Cordialement,
Marc
thomasberment
Member II

Re: Ajout métadata et gestion des droits

Déjà merci pour ta réponse…

J'ai tenté de faire quelque chose, ajouter une méta-donnée à "un" document déjà pour voir et ça ne marche pas comme je voudrai, voir même pas du tout en fait.
J'ai commencé par cet élément car dans la définition de mon workflow j'aurai besoin du statut du document.

Alors voila ce que j'ai fait, je me suis aidé d'un document sur les "content model". Je ne sais pas si j'ai fait ce qu'il fallait, mais j'ai tenté un truc.
Dans mon dossier "Alfresco\tomcat\shared\classes\alfresco\extension" j'ai écrit trois fichiers :

1/ custom-model-context.xml
<?xml version='1.0' encoding='UTF-8'?>
<!DOCTYPE beans PUBLIC '-//SPRING//DTD BEAN//EN' 'http://www.springframework.org/dtd/spring-beans.dtd'>

<beans>

    <!– Registration of new models –>   
    <bean id="extension.dictionaryBootstrap" parent="dictionaryModelBootstrap" depends-on="dictionaryBootstrap">
        <property name="Statut">
            <list>
                <value>alfresco/extension/customModel.xml</value>
            </list>
        </property>
    </bean>
         
</beans>

2/ customModel.xml
<?xml version="1.0" encoding="UTF-8"?>

<!– Custom Model –>

<!– Note: This model is pre-configured to load at startup of the Repository.  So, all custom –>
<!–       types and aspects added here will automatically be registered –>

<model name="custom:customModel" xmlns="http://www.alfresco.org/model/dictionary/1.0">

   <!– Optional meta-data about the model –>  
   <description>Epingler le statut d'un document</description>
   <author>Thomas Berment</author>
   <version>1.0</version>

   <imports>
        <!– Import Alfresco Dictionary Definitions –>
      <import uri="http://www.alfresco.org/model/dictionary/1.0" prefix="d"/>
      <!– Import Alfresco Content Domain Model Definitions –>
      <import uri="http://www.alfresco.org/model/content/1.0" prefix="cm"/>
   </imports>

   <!– Introduction of new namespaces defined by this model –>
   <!– NOTE: The following namespace custom.model should be changed to reflect your own namespace –>
   <namespaces>
      <namespace uri="custom.model" prefix="custom"/>
   </namespaces>
     
</model>


<aspects>
  <!– Definition of new Content Aspect: Customer Details –>
  <aspect name="custom:Metadatastatut">
    <title>Statut du document</title>
    <properties>
    <property name="custom:Statut">
      <title>Statut du document</title>
      <type>d:text</type>
      <constraint name="custom:typestatut" type="LIST">
        <parameter name="allowedValues">
          <list>
            <value>En travail</value>
            <value>En relecture</value>
            <value>Validé</value>
            <value>4</value>
            <value>5</value>
          </list>
        </parameter>
      </constraint>
    </property>
    </properties>
  </aspect>
</aspects>

3/ web-client-config-custom.xml
 <!– Lists the custom aspect in business rules Action wizard –>
   <config evaluator="string-compare" condition="Action Wizards">
     <aspects>
      <aspect name="custom:Metadatastatut"/>
     </aspects>
   </config>
  
   <!– Displays the properties in view details page –>
    <config evaluator="aspect-name" condition="custom:Metadatastatut">
    <property-sheet>
    <separator name="sepCust1" display-label="Statut du document" component-generator="HeaderSeparatorGenerator" />
    <show-property name="custom:Statut"/>
    </property-sheet>
    </config>


Au final ça ne marche pas, je ne sais pas si c'est bon où c'est une erreur quelque part …
Merci de votre aide.
yannb
Member II

Re: Ajout métadata et gestion des droits

Salut thomas, tu veux dire quoi par ça ne marche pas ?

A ce stade tu dois activer ton aspect Metadatastatut sur le document :
Pour ça :
- Tu vas sur ton dossier
- Tu cliques sur détail
- Tu fais Run As
- dans la liste, ajouter un aspect
- Tu choisis ton aspect Metadatastatut et tu valides.

Ensuite tu reviens sur le détail de ton dossier le champ devrait être présent et vide, tu peux alors le modifier.
thomasberment
Member II

Re: Ajout métadata et gestion des droits

Salut, alors j'ai bien suivi la démarche que tu décris ci-dessus, mais j'ai rien dans la liste déroulante. Rien ne fait référence à mon aspect Metadatastatut. Je dois avoir un soucis au niveau du code, je vais revoir ça.

Si vous avez la solution qui vous saute aux yeux n'hésité pas, merci.
mdutoo
Member II

Re: Ajout métadata et gestion des droits

Bonjour Thomas

Déjà, ta contrainte devrait être définie au-dessus des types, je crois.

Part d'une version plus simple, ou de l'exampleModel fourni par Alfresco, puis regarde comment c'est fait dans WEB-INF/classes/alfresco/model/contentModel.xml .

Cordialement,
Marc
thomasberment
Member II

Re: Ajout métadata et gestion des droits

Salut, j'avais déjà des erreurs au niveau de mon fichier customModel.xml. Je l'a donc modifié et normalement il devrait être bon. Seul problème c'est que rien n'apparait dans la liste déroulante. J'essai de trouver la solution…


<?xml version="1.0" encoding="UTF-8"?>

<!– Custom Model –>

<!– Note: This model is pre-configured to load at startup of the Repository.  So, all custom –>
<!–       types and aspects added here will automatically be registered –>

<model name="custom:customModel" xmlns="http://www.alfresco.org/model/dictionary/1.0">

   <!– Optional meta-data about the model –>  
   <description>Epingler le statut d'un document</description>
   <author>Thomas Berment</author>
   <version>1.0</version>

   <imports>
        <!– Import Alfresco Dictionary Definitions –>
      <import uri="http://www.alfresco.org/model/dictionary/1.0" prefix="d"/>
      <!– Import Alfresco Content Domain Model Definitions –>
      <import uri="http://www.alfresco.org/model/content/1.0" prefix="cm"/>
   </imports>

   <!– Introduction of new namespaces defined by this model –>
   <!– NOTE: The following namespace custom.model should be changed to reflect your own namespace –>
   <namespaces>
      <namespace uri="custom.model" prefix="custom"/>
   </namespaces>
  
   <constraint name="custom:typestatut" type="LIST">
        <parameter name="allowedValues">
          <list>
            <value>En Travail</value>
            <value>A Relire</value>
            <value>En Relecture</value>
            <value>A Valider</value>
            <value>Validation</value>
          </list>
        </parameter>
      </constraint>

  
     <aspects>
        <!– Definition of new Content Aspect: Customer Details –>
        <aspect name="custom:Metadatastatut">
          <title>Statut du document</title>
          <properties>
          <property name="custom:Statut">
            <title>Statut</title>
            <type>d:text</type>
            <!–<protected>false</protected>
            <mandatory>false</mandatory>
            <multiple>false</multiple>–>
            <constraints>
              <constraint ref="custom:typestatut"/>
            </constraints>
          </property>
          </properties>
        </aspect>
      </aspects>  
     
</model>


EDIT : Voila j'ai un retour d'erreur sur TOMCAT :

[img]http://nsa13.casimages.com/img/2010/02/19/100219110355344224.jpg[/img]

Vous en pensez quoi ?
mdutoo
Member II

Re: Ajout métadata et gestion des droits

<constraint> doit être dans un <constraints>, d'où l'intérêt d'un éditeur XML avec validation !
thomasberment
Member II

Re: Ajout métadata et gestion des droits

<constraint> doit être dans un <constraints>, d'où l'intérêt d'un éditeur XML avec validation !

Tu entends quoi par éditeur XML avec validation ? Il existe un éditeur spécial pour Alfresco ?
thomasberment
Member II

Re: Ajout métadata et gestion des droits

Salut tout le monde, j'ai résolu mon problème … Pour ceux que ça intéresse voilà mon code :

1/ custom-model-context.xml
<?xml version='1.0' encoding='UTF-8'?>
<!DOCTYPE beans PUBLIC '-//SPRING//DTD BEAN//EN' 'http://www.springframework.org/dtd/spring-beans.dtd'>

<beans>
    <!– Registration of new models –>   
    <bean id="extension.dictionaryBootstrap" parent="dictionaryModelBootstrap" depends-on="dictionaryBootstrap">
        <property name="models">
            <list>
                <value>alfresco\extension\customModel.xml</value>
            </list>
        </property>
    </bean> 
</beans>


2/ customModel.xml

<?xml version="1.0" encoding="UTF-8"?>

<!– Custom Model –>

<!– Note: This model is pre-configured to load at startup of the Repository.  So, all custom –>
<!–       types and aspects added here will automatically be registered –>

<model name="custom:custommodel" xmlns="http://www.alfresco.org/model/dictionary/1.0">

   <!– Optional meta-data about the model –>  
   <description>Epingler le statut d'un document</description>
   <author>Thomas Berment</author>
   <version>1.0</version>

   <imports>
        <!– Import Alfresco Dictionary Definitions –>
      <import uri="http://www.alfresco.org/model/dictionary/1.0" prefix="d"/>
      <!– Import Alfresco Content Domain Model Definitions –>
      <import uri="http://www.alfresco.org/model/content/1.0" prefix="cm"/>
   </imports>

   <!– Introduction of new namespaces defined by this model –>
   <!– NOTE: The following namespace custom.model should be changed to reflect your own namespace –>
   <namespaces>
      <namespace uri="custom.model" prefix="custom"/>
   </namespaces>
  
  
   <constraints>
   <constraint name="custom:typestatut" type="LIST">
        <parameter name="allowedValues">
          <list>
            <value>Travail</value>
            <value>Relu</value>
            <value>Validé</value>
            <value>Archivé</value>
          </list>
        </parameter>
      </constraint>
      </constraints>
  
  
     <aspects>
        <!– Definition of new Content Aspect: Customer Details –>
        <aspect name="custom:Metadatastatut">
          <title>Statut du document</title>
          <properties>
          <property name="custom:Statut">
            <title>Statut</title>
            <type>d:text</type>
            <!–<protected>false</protected>
            <mandatory>false</mandatory>
            <multiple>false</multiple>–>
            <constraints>
              <constraint ref="custom:typestatut"/>
            </constraints>
          </property>
          </properties>
        </aspect>
      </aspects>  
     
</model>


3/ web-client-config-custom.xml

 <!– Lists the custom aspect in business rules Action wizard –>
   <config evaluator="string-compare" condition="Action Wizards">
     <aspects>
      <aspect name="custom:Metadatastatut"/>
     </aspects>
   </config>
  
   <!– Displays the properties in view details page –>
    <config evaluator="aspect-name" condition="custom:Metadatastatut">
    <property-sheet>
      <separator name="sepCust1" display-label="Statut du document" component-generator="HeaderSeparatorGenerator" />
      <show-property name="custom:Statut"/>
    </property-sheet>
    </config>


Par contre j'obtient un truc pas très joli à mon gout. Voyez par vous même :

[img]http://nsa13.casimages.com/img/2010/02/22/mini_100222093037994117.jpg[/img]

Je voudrai avoir le statut du fichier affiché comme une metadata "normale", à la suite des autres quoi … Savez vous d'où vient le problème ?

Merci beaucoup !