Valeur d'une association

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

Valeur d'une association

Bonjour,

J'ai un champs Sites et une association "Enfants" : déclarer ainsi dans mon modèle
<?xml version="1.0" encoding="UTF-8"?>


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

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

   <!– Optional meta-data about the model –>  
   <description>se Model</description>
   <author></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 contrat.model should be changed to reflect your own
   namespace –>
  
   <namespaces>
               <namespace uri="se.model" prefix="se"/>
   </namespaces>

   <aspects>
           <!– Definition of new Content Aspect: Individu Details –>
      <aspect name="se:Details">
         <title>TITRE SE</title>
               <properties>
                  <property name="se:Sites">
                       <title>Sites</title>
                       <type>d:text</type>
                       <constraints>
                                 <constraint type="LIST">
                                    <parameter name="allowedValues">
                                        <list>
                                           <value>A</value>
                                           <value>B</value>
                                        </list>
                              </parameter>
                          </constraint>
                    </constraints>      
                  </property>                              
         </properties>
         <associations>
         <association name="se:Enfants">
             <source>
                <role>cm:referencedBy</role>
                     <mandatory>false</mandatory>
                     <many>true</many>
                </source>
                <target>
               <class>cm:content</class>
               <role>se:Enfants</role>
               <mandatory>false</mandatory>
               <many>true</many>
            </target>
         </association>
      </associations>
    </aspect>
    </aspects>
</model>

Donc lorsque j'ajoute un document, j'ai bien enfant avec les trois zones :
1. Rechercher et sélectionner des éléments.
2.Choisir et ajoutés
3.Eléments sélectionnés

J'ai ensuite un script js, qui doit travailler en fonction des valeurs des champs.
Pour récupérer les valeurs de site je fais
var listeSites = document.properties["se:Sites"];

Mais comment faire pour récupérer les valeurs Enfants, j'ai fais
var listeEnfants = document.properties["se:Enfants"];

Mais listeEnfants  est toujours null
12 Replies
rivarola
Active Member

Re: Valeur d'une association

Bonjour,

C'est
document.assocs["se:Enfants"]
(voir http://wiki.alfresco.com/wiki/3.1_JavaScript_API#ScriptNode_API)
hlander10
Member II

Re: Valeur d'une association

merci pour cette info et la documentation

J'ai par contre un comportement étrange….

Je m'explique dans mon script je fais différentes choses, et à la fin je désirs copier le document dans un nouvelle espace.
donc je fini avec :
document.copy(cheminFinal);

Le document est bien copier dans l'espace les propriétés sont également copiés, par contre pas les associations, le champs enfants est vide.

si par contre je fais un move avec :
document.move(cheminFinal);
là l'association est bien rempli.

Je comprends pas trop ce comportement
rivarola
Active Member

Re: Valeur d'une association

Bonjour,

C'est le comportement par défaut d'Alfresco : il copie en général les child-associations (sauf les discussions je crois) mais pas les associations. C'est en fait un cas assez complexe car si on copie une grappe d'objets avec des relations internes et des relations externes, on ne sait pas toujours dans un cas générique s'il faut modifier les relations internes pour les faire pointer sur les copies ou sur les originaux. Idem pour les relations externes : doit-on les perdre ou les conserver, auquel cas on risque d'arriver à une erreur d'intégrité si plusieurs noeuds pointent sur le même alors que dans le modèle on a déclaré l'inverse, etc.
Dans le doute les ingénieurs d'Alfresco ont préféré ne rien faire et c'est à nous de faire des scripts qui dupliquent les associations que l'on souhaite.
hlander10
Member II

Re: Valeur d'une association

Alors je viens d'essayer avec child-association et c'est pareil.

Pouvez vous m'expliquer comment dupliquer les associations sur le nouveau document

Merci
rivarola
Active Member

Re: Valeur d'une association

C'est un petit peu plus bas dans la même page d'aide :
createAssociation(ScriptNode target, string assocType)
    Creates a new target association to the specified node with the given association type QName.
hlander10
Member II

Re: Valeur d'une association

je l'ai vu en effet mais impossible de l'utiliser, c'est pour ça que je disais peu ou pas d'exemple
rivarola
Active Member
hlander10
Member II

Re: Valeur d'une association

Bonjour et merci pour le lien.

Je rectifie une erreur, le child-association, garde bien le lien si on fait par exemple un copier/coller par l'interface.

Par contre je n'arrive pas a faire un copy() dans mon script qui garde l'association.

Je vais regarder comment ajouter l'association
hlander10
Member II

Re: Valeur d'une association

alors j'essai d'ajouter l'association qui chez moi est une child-association

voici comment elle est déclaré :
<child-association name="se:Enfants">
             <source>
                <role>cm:referencedBy</role>
                     <mandatory>false</mandatory>
                     <many>true</many>
                </source>
                <target>
               <class>cm:content</class>
               <role>se:Enfants</role>
               <mandatory>false</mandatory>
               <many>true</many>
            </target>
         </child-association>

Et voila le test fais dans le script
var fichier = companyhome.childByNamePath("Soc/Backup/Edit.txt");  
     document.createAssociation(fichier, "se:Enfants");

Le fichier Edit.txt existant bien sur

Déjà j'ai fichier = node no longer exists
et ensuite pb evidement pour créer l'assocation


Je comprends pas