cancel
Showing results for 
Search instead for 
Did you mean: 

Problème d'association non reconnue

pierrem
Champ in-the-making
Champ in-the-making
Bonjour,

Je travail avec une version alfresco community 3.0 installée sur un serveur linux mandriva 10 avec une JVM - v1.6.0_06-b02
Je cherche a personnaliser le modèle de données.
Une des personnalisation qui m'interesserait serai d'associer un nom d'utilisateur de la base (classe "cmSmiley Tongueerson" si j'ai bien compris) avec un fichier. Il s'agirait de l'auteur du fichier par exemple.

voici la définition du modèle ModeleQSE.xml
<model name="qse:modeleQSE" xmlns="http://www.alfresco.org/model/dictionary/1.0">
   <description>Modele QSE</description>
   <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" />
      <import uri="http://www.alfresco.org/model/system/1.0" prefix="sys" />
   </imports>
   <namespaces>
        <!– Define a Namespace for my new definitions –>
      <namespace uri="modele.qse" prefix="qse" />
   </namespaces>

    <!– Type and Aspect definitions go here –>
   <types>
      <type name="qse:DocQualite">
         <title>Document Qualité</title>
         <parent>cm:content</parent>      
         <properties>
            <property name="qse:ChapitreNorme">
               <title>Chapitre de la norme</title>
               <type>d:category</type>
               <mandatory>true</mandatory>
            </property>
            <property name="qse:TypeDocument">
               <title>Type du document</title>
               <type>d:category</type>
               <mandatory>true</mandatory>
            </property>
            <property name="qse:Processus">
               <title>Processus rattaché</title>
               <type>d:category</type>
               <mandatory>true</mandatory>
            </property>
         </properties>
         <mandatory-aspects>
            <aspect>cm:versionable</aspect>
            <aspect>qse:Reference</aspect>
            <aspect>qse:utilisateur</aspect>
         </mandatory-aspects>
      </type>
   </types>
   
   <aspects>
       <aspect name="qse:Reference">
         <title>Reference</title>
         <properties>
            <property name="qse:CodeIndex">
               <title>Code d'indexation</title>
               <type>d:text</type>
            </property>
         </properties>
      </aspect>
      
      <aspect name="qse:utilisateur">
         <title>utilisateur</title>
         <associations>
            <association name="qse:initiateur">
               <title>Initiateur</title>
               <source>
                        <mandatory>false</mandatory>
                        <many>false</many>
                     </source>
                     <target>
                        <class>cm:person</class>
                        <mandatory>false</mandatory>
                        <many>false</many>
                     </target>
              </association>
           </associations>
      </aspect>
      
   </aspects>
</model>


voici le module-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>
   <!– Add the Spring beans here –>
   <bean id="ModeleQse" parent="dictionaryModelBootstrap" depends-on="dictionaryBootstrap">
        <property name="models">
            <list>
                <value>alfresco/module/docqualite/ModeleQse.xml</value>
            </list>
        </property>
    </bean>
</beans>


voici enfin la partie ajoutée au web-client-config-custom.xml
<config evaluator="string-compare" condition="Content Wizards">
      <content-types>
         <type name="qse:DocQualite" />
      </content-types>
   </config>
   
   <config evaluator="node-type" condition="qse:DocQualite">
      <property-sheet>
         <show-property name="qse:ChapitreNorme" />
         <show-property name="qse:TypeDocument" />
         <show-property name="qse:Processus" />
      </property-sheet>
   </config>
   
   <config evaluator="aspect-name" condition="qse:Reference">
      <property-sheet>
         <show-property name="qse:CodeIndex" />
      </property-sheet>
   </config>

   <config evaluator="aspect-name" condition="qse:utilisateur">
      <property-sheet>
         <show-association name="qse:initiateur" />
      </property-sheet>
   </config>


Ces fichiers sont structuré grâce au module éclipse ajoutés grâce à amps au war d'alfresco.

Au lancement tout fonctionne très bien.
Je retrouve mon modèle, je complète les propriété et les associations sans problème sur l'écran "Modifier les propriétés du contenu" dans le web client.
C'est à dire que je renseigne bien à l'importation d'un contenu ce que j'avais mis dans mon modèle :
Les trois paramètres liés aux catégories tout comme le code d'indexation. Et je choisi bien parmis les utilisateurs un paramètre (une association en fait) "Initiateur"


mais lorsque je fait "ok" alfresco retourne une erreur de ce type :


Veuillez corriger les erreurs ci-dessous puis cliquez sur OK.

    * Une erreur système s'est produite pendant l'opération : Association {modele.qse}Initiateur has not been defined in the data dictionary

Pourtant il me semble bien que Initiateur a bien été défini dans ModuleQSE.xml
Alors que se passe t'il ?
3 REPLIES 3

pierrem
Champ in-the-making
Champ in-the-making
A noter que si j'ajoute l'aspect "qse:utilisateur" dans le web-client-config-custom.xml comme ceci :


config evaluator="string-compare" condition="Action Wizards">
          <aspects>
                  <aspect name="qse:utilisateur" />
           </aspects>
     </config>   

Je peux sans problème ajouter cet aspect à tout document.
Mais dès lors que je modifie la propriété pour y associer une personne, alfresco me retourne la même erreur :

Veuillez corriger les erreurs ci-dessous puis cliquez sur OK.

    * Une erreur système s'est produite pendant l'opération : Association {modele.qse}Initiateur has not been defined in the data dictionary

Le log me retourne ceci :


15:12:01,981 ERROR [org.alfresco.web.ui.common.Utils] Une erreur système s'est produite pendant l'opération : Association {modele.qse}Initiateur has not been defined in the data dictionary
java.lang.IllegalArgumentException: Association {modele.qse}Initiateur has not been defined in the data dictionary
   at org.alfresco.repo.policy.AssociationPolicyDelegate.checkAssocType(AssociationPolicyDelegate.java:86)
   at org.alfresco.repo.policy.AssociationPolicyDelegate.get(AssociationPolicyDelegate.java:172)
   at org.alfresco.repo.node.AbstractNodeServiceImpl.invokeOnCreateAssociation(AbstractNodeServiceImpl.java:515)
   at org.alfresco.repo.node.db.DbNodeServiceImpl.createAssociation(DbNodeServiceImpl.java:1432)
   at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
   at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
   at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
   at java.lang.reflect.Method.invoke(Method.java:597)
   at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:296)
   at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:177)
   at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:144)
   at org.alfresco.repo.transaction.SingleEntryTransactionResourceInterceptor.invokeInternal(SingleEntryTransactionResourceInterceptor.java:163)
   at org.alfresco.repo.transaction.SingleEntryTransactionResourceInterceptor.invoke(SingleEntryTransactionResourceInterceptor.java:138)
   at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:166)
   at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:204)
   at $Proxy3.createAssociation(Unknown Source)
   at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
   at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
   at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
   at java.lang.reflect.Method.invoke(Method.java:597)
   at org.alfresco.repo.service.StoreRedirectorProxyFactory$RedirectorInvocationHandler.invoke(StoreRedirectorProxyFactory.java:221)
   at $Proxy4.createAssociation(Unknown Source)
   at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
   at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
   at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
   at java.lang.reflect.Method.invoke(Method.java:597)
   at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:296)
   at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:177)
   at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:144)
   at org.alfresco.repo.node.MLPropertyInterceptor.invoke(MLPropertyInterceptor.java:241)
   at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:166)
   at org.alfresco.repo.node.MLPropertyInterceptor.invoke(MLPropertyInterceptor.java:241)
   at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:166)
   at org.alfresco.repo.node.NodeRefPropertyMethodInterceptor.invoke(NodeRefPropertyMethodInterceptor.java:274)
   at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:166)
   at org.alfresco.repo.tenant.MultiTNodeServiceInterceptor.invoke(MultiTNodeServiceInterceptor.java:108)
   at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:166)
   at org.alfresco.repo.node.NodeRefPropertyMethodInterceptor.invoke(NodeRefPropertyMethodInterceptor.java:274)
   at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:166)
   at org.alfresco.repo.tenant.MultiTNodeServiceInterceptor.invoke(MultiTNodeServiceInterceptor.java:108)
   at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:166)
   at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:204)
   at $Proxy3.createAssociation(Unknown Source)
   at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
   at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
   at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
   at java.lang.reflect.Method.invoke(Method.java:597)
   at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:296)
   at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:177)
   at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:144)
   at net.sf.acegisecurity.intercept.method.aopalliance.MethodSecurityInterceptor.invoke(MethodSecurityInterceptor.java:80)
   at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:166)
   at org.alfresco.repo.security.permissions.impl.ExceptionTranslatorMethodInterceptor.invoke(ExceptionTranslatorMethodInterceptor.java:49)
   at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:166)
   at org.alfresco.repo.audit.AuditComponentImpl.audit(AuditComponentImpl.java:245)
   at org.alfresco.repo.audit.AuditMethodInterceptor.invoke(AuditMethodInterceptor.java:69)
   at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:166)
   at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:107)
   at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:166)
   at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:204)
   at $Proxy3.createAssociation(Unknown Source)
   at org.alfresco.web.bean.content.EditContentPropertiesDialog.finishImpl(EditContentPropertiesDialog.java:199)
   at org.alfresco.web.bean.dialog.BaseDialogBean$1.execute(BaseDialogBean.java:121)
   at org.alfresco.web.bean.dialog.BaseDialogBean$1.execute(BaseDialogBean.java:118)
   at org.alfresco.repo.transaction.RetryingTransactionHelper.doInTransaction(RetryingTransactionHelper.java:294)
   at org.alfresco.repo.transaction.RetryingTransactionHelper.doInTransaction(RetryingTransactionHelper.java:209)
   at org.alfresco.web.bean.dialog.BaseDialogBean.finish(BaseDialogBean.java:127)
   at org.alfresco.web.bean.dialog.DialogManager.finish(DialogManager.java:534)
   at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
   at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
   at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
   at java.lang.reflect.Method.invoke(Method.java:597)
   at org.apache.myfaces.el.MethodBindingImpl.invoke(MethodBindingImpl.java:132)
   at org.apache.myfaces.application.ActionListenerImpl.processAction(ActionListenerImpl.java:61)
   at javax.faces.component.UICommand.broadcast(UICommand.java:109)
   at javax.faces.component.UIViewRoot._broadcastForPhase(UIViewRoot.java:97)
   at javax.faces.component.UIViewRoot.processApplication(UIViewRoot.java:171)
   at org.apache.myfaces.lifecycle.InvokeApplicationExecutor.execute(InvokeApplicationExecutor.java:32)
   at org.apache.myfaces.lifecycle.LifecycleImpl.executePhase(LifecycleImpl.java:95)
   at org.apache.myfaces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:70)
   at javax.faces.webapp.FacesServlet.service(FacesServlet.java:139)
   at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:269)
   at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
   at org.alfresco.web.app.servlet.AuthenticationFilter.doFilter(AuthenticationFilter.java:81)
   at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:215)
   at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
   at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:210)
   at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:174)
   at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
   at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:117)
   at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:108)
   at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:151)
   at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:870)
   at org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:665)
   at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:528)
   at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:81)
   at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:685)
   at java.lang.Thread.run(Thread.java:619)



Je ne sais vraiment plus quoi faire… Personne n'aurait une piste ?

pierrem
Champ in-the-making
Champ in-the-making
Apparement le même module testé sur une config "ALfresco 3.0 b, Vista et Java 1.6.0_07-b06" fonctionne parfaitement….
C'est à n'y rien comprendre !
Est-ce un bug lié à la version de Java, au serveur ?
Ais-je mal configuré Alfresco ou mon module ?

pierrem
Champ in-the-making
Champ in-the-making
L'erreur semble avoir disparue lorsque l'on inclue "web-client-config-custom.xml" dans le module.

On modifie donc le "module-contexe.xml" comme ceci
<beans>
   
   <!– Add the Spring beans here –>
   <bean id="ModeleQse" parent="dictionaryModelBootstrap" depends-on="dictionaryBootstrap">
        <property name="models">
            <list>
                <value>alfresco/module/docqualite/ModeleQse.xml</value>
            </list>
        </property>
    </bean>
       
     <bean id="ModeleQse_config" class="org.alfresco.web.config.WebClientConfigBootstrap" init-method="init">
       <property name="configs">
         <list>
            <value>classpath:alfresco/module/docqualite/ui/web-client-config-custom.xml</value>
         </list>
       </property>
    </bean>
   
</beans>

Et le web-client-config-custom.xml reste donc comme ceci mais doit bien sur être inclu dans la structure de  fichiers du module


<alfresco-config>

<config evaluator="string-compare" condition="Content Wizards">
      <content-types>
         <type name="qse:DocQualite" />
      </content-types>
   </config>
  
   <config evaluator="node-type" condition="qse:DocQualite">
      <property-sheet>
         <show-property name="qse:ChapitreNorme" />
         <show-property name="qse:TypeDocument" />
         <show-property name="qse:Processus" />
      </property-sheet>
   </config>
  
   <config evaluator="aspect-name" condition="qse:Reference">
      <property-sheet>
         <show-property name="qse:CodeIndex" />
      </property-sheet>
   </config>

   <config evaluator="aspect-name" condition="qse:utilisateur">
      <property-sheet>
         <show-association name="qse:initiateur" />
      </property-sheet>
   </config>
</alfresco-config>

Le ModeleQse.xml reste le même.

Cela étant je ne comprend toujours pas très bien mon erreur initiale