cancel
Showing results for 
Search instead for 
Did you mean: 

Failed to resolve aspect

st
Champ in-the-making
Champ in-the-making
Bonjour à tous,

Je viens solliciter votre aide de nouveau car j'ai un problème que je n'arrive pas à régler. Il s'agit d'une cohabitation d'un aspect et d'un workflow dans mon alfresco. L'un sans l'autre marche mais les deux en meme temps me provoquent un erreur…

Alors voilà je vous dit tout :
j'ai un créé un aspect dans exampleModel.xml (se trouve dans C:\alfresco-community-2.1.0\tomcat\shared\classes\alfresco\extension) : "my : docA"

Voilà le contenu de mon fichier :

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

<!– Definition of new Model –>

<!– The important part here is the name - Note: the use of the my: namespace
     which is defined further on in the document –>
<model name="my:mynewmodel" xmlns="http://www.alfresco.org/model/dictionary/1.0">

   <!– Optional meta-data about the model –>  
   <description>Example custom Model</description>
   <author></author>
   <version>1.0</version>

   <!– Imports are required to allow references to definitions in other models –>  
   <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 my.new.model should be changed to reflect your own namespace –>
   <namespaces>
      <namespace uri="my.new.model" prefix="my"/>
   </namespaces>
  

      <constraints>
   <constraint name="my:AStatusC" type="LIST">
         <parameter name="allowedValues">
            <list>
                  <value>Delivered by A</value>
              <value>Qualified by S</value>
         </list>
         </parameter>
      </constraint>
   </constraints>
  
  
   <types>
  
      <!– Definition of new Content Type: Standard Operating Procedure –>
     <!–
      <type name="my:sop">
         <title>Standard Operating Procedure</title>
         <parent>cm:content</parent>
         <properties>
            <property name="my:publishedDate">
               <type>d:datetime</type>
            </property>
            <property name="my:authorisedBy">
               <type>d:text</type>
            </property>
         </properties>
         <associations>
            <association name="my:signOff">
               <source>
                  <mandatory>false</mandatory>
                  <many>false</many>
               </source>
               <target>
                  <class>cm:content</class>
                  <mandatory>false</mandatory>
                  <many>false</many>
               </target>
            </association>
            <child-association name="my:processSteps">
               <source>
                  <mandatory>false</mandatory>
                  <many>false</many>
               </source>
               <target>
                  <class>cm:content</class>
                  <mandatory>false</mandatory>
                  <many>true</many>
               </target>
         </child-association>           
         </associations>
      </type>
      –>
    </types>
   
    <aspects>
      <aspect name="my:docA">
         <title>Document A</title>
         <properties>
            <property name="my:ADocumentVersion">
               <type>d:text</type>
            </property>
            <property name="my:AApplicationVersions">
               <type>d:text</type>
            <multiple>true</multiple>
            </property>
            <property name="my:AApplicationCode">
               <type>d:text</type>
            </property>
            <property name="my:AStatus">
               <type>d:text</type>
            <default>Delivered by A</default>
            <constraints>
                  <constraint ref="my:AStatusC"/>
               </constraints>
            </property>
         </properties>
      </aspect>
   </aspects>

</model>


Ensuite j'ai un fichier qui s'appelle example-model-context.xml (qui se trouve dans : C:\alfresco-community-2.1.0\tomcat\shared\classes\alfresco\extension)

<?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/exampleModel.xml</value>
            </list>
        </property>
    </bean>
         
</beans>

et finalement j'ai un code dans web-client-config-custom (qui se trouve dans : C:\alfresco-community-2.1.0\tomcat\shared\classes\alfresco\extension et dans C:\alfresco-community-2.1.0\tomcat\webapps\alfresco\WEB-INF\classes\alfresco\extension (je ne sais pas ou exactement le mettre…donc je l'ai mis dans les deux…) )


<alfresco-config>

   <!– Example of overriding the from email address –>
   <!–
   <config>
      <client>
         <from-email-address>someone@your-domain.com</from-email-address>
         <search-max-results>100</search-max-results>
      </client>
   </config>
   –>

   <!– Example of adding languages to the list in the login page –>
   <config evaluator="string-compare" condition="Languages">
      <languages>
         <language locale="ca_ES">Catalan</language>
         <language locale="hr_HR">Croatian</language>
         <language locale="cs_CZ">Czech</language>
         <language locale="da_DK">Danish</language>
         <language locale="de_DE">German</language>
         <language locale="es_ES">Spanish</language>
         <language locale="el_GR">Greek</language>
         <language locale="fi_FI">Finnish</language>
         <language locale="fr_FR">French</language>
         <language locale="it_IT">Italian</language>
         <language locale="ja_JP">Japanese</language>
         <language locale="du_NL">Dutch</language>
         <language locale="pl_PL">Polish</language>
         <language locale="pt_PT">Portuguese</language>
         <language locale="pt_BR">Portuguese (Brazilian)</language>
         <language locale="ru_RU">Russian</language>
         <language locale="sv_SV">Swedish</language>
         <language locale="tr_TR">Turkish</language>
         <language locale="zh_CN">Simplified Chinese</language>
      </languages>
   </config>

   <!– Example of configuring advanced search –>
   <!–
   <config evaluator="string-compare" condition="Advanced Search">
      <advanced-search>
         <content-types>
         </content-types>
         <custom-properties>
            <meta-data aspect="app:simpleworkflow" property="app:approveStep" />
         </custom-properties>
      </advanced-search>
   </config>
   –>

   <!– Example of changing the sort direction for a view in the client –>
   <!–
   <config evaluator="string-compare" condition="Views">
      <views>
         <view-defaults>
            <topic>
               <sort-direction>ascending</sort-direction>
            </topic>
         </view-defaults>
      </views>
   </config>
   –>

   <!– Example of adding a custom icon to the Create Space dialog –>
   <!–
   <config evaluator="string-compare" condition="cm:folder icons">
      <icons>
         <icon name="space-icon-custom" path="/images/icons/space-icon-custom.gif" />
      </icons>
   </config>
   –>

   <!– The config below shows how to incorporate the example model–>
   <!– into the web client, for this to work you will need to –>
   <!– rename example-model-context.xml.sample to example-model-context.xml –>
   <!–
   <config evaluator="string-compare" condition="Content Wizards">
      <content-types>
         <type name="my:sop" />
      </content-types>
   </config>

   <config evaluator="node-type" condition="my:sop">
      <property-sheet>
         <show-property name="mimetype" display-label-id="content_type"
                        component-generator="MimeTypeSelectorGenerator" />
         <show-property name="size" display-label-id="size"
                        converter="org.alfresco.faces.ByteSizeConverter"
                        show-in-edit-mode="false" />              
         <show-property name="my:publishedDate" />
         <show-association name="my:signOff" />
         <show-property name="my:authorisedBy" />
         <show-child-association name="my:processSteps" />
      </property-sheet>
   </config>

   <config evaluator="aspect-name" condition="my:imageClassification">
      <property-sheet>
         <show-property name="my:width"/>
         <show-property name="my:height"/>
         <show-property name="my:resolution"/>
      </property-sheet>
   </config>

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

   <config evaluator="string-compare" condition="Advanced Search">
      <advanced-search>
         <content-types>
            <type name="my:sop" />
         </content-types>
         <custom-properties>
            <meta-data type="my:sop" property="my:authorisedBy" />
            <meta-data aspect="my:imageClassification" property="my:resolution" />
         </custom-properties>
      </advanced-search>
   </config>
   –>


<config evaluator="aspect-name" condition="my:docA">
      <property-sheet>
         <show-property name="my:AStatus"/>
         <show-property name="my:AApplicationCode"/>
         <show-property name="my:AApplicationVersions"/>
         <show-property name="my:ADocumentVersion"/>
      </property-sheet>
   </config>

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

   <config evaluator="string-compare" condition="Advanced Search">
      <advanced-search>
         <custom-properties>
            <meta-data aspect="my:docA" property="my:AStatus" />
            <meta-data aspect="my:docA" property="my:AApplicationCode" />
            <meta-data aspect="my:docA" property="my:AApplicationVersions" />
            <meta-data aspect="my:docA" property="my:ADocumentVersion" />
         </custom-properties>
      </advanced-search>
   </config>

  
     <!– Definition des interfaces utilisateurs utilisees pour le workflow test –>

<config evaluator="node-type" condition="scwf:submitReviewTask" replace="true">
  <property-sheet>
   <separator name="sep1" display-label-id="general" component-generator="HeaderSeparatorGenerator"/>–>
   <show-property name="bpm:workflowDescription" component-generator="TextAreaGenerator"/>–>
   <separator name="sep2" display-label-id="users_and_roles" component-generator="HeaderSeparatorGenerator" />
    <show-association name="bpm:assignee" />
  </property-sheet>
</config>
  
<config evaluator="node-type" condition="scwf:aReviewing" replace="true">
  <property-sheet>
    <separator name="sep1" display-label-id="general" component-generator="HeaderSeparatorGenerator"/>
    <show-property name="bpm:description" component-generator="TextAreaGenerator" read-only="true"/>
    <show-property name="bpm:comment" component-generator="TextAreaGenerator"/>
  </property-sheet>
</config>
  
<config evaluator="node-type" condition="scwf:sRevision" replace="true">
  <property-sheet>
    <separator name="sep1" display-label-id="general" component-generator="HeaderSeparatorGenerator"/>
    <show-property name="bpm:description" component-generator="TextAreaGenerator" read-only="true"/>
    <show-property name="bpm:comment" component-generator="TextAreaGenerator"/>
    <separator name="sep2" display-label-id="users_and_roles" component-generator="HeaderSeparatorGenerator" />
    <show-association name="bpm:assignee" display-label-id="wf_reviewer"/>
  </property-sheet>
</config>


</alfresco-config>


Vous remarquerez que le code à la fin du précédent fichier provient d'un workflow que j'ai mis en place.

Voilà. alfresco boote correctement.
Evidemment j'ai testé beaucoup de choses et j'ai remis la base de données à zéro à chaque fois pour être sur que ça ne vienne pas de là.

Mon problème est que pris indépendamment, j'ai bien mon aspect "Document A" qui s'affiche dans Alfresco lorsque je veux ajouter un aspect. Donc pas de soucis.
quand je pends mon workflow tout seul, il marche aussi.
Mais lorsque je lance un Alfresco ou j'ai les deux ensemble (rappelons que le seul fichier commun est web-client-config-custom.xml) et bien là mon workflow marche bien, mais j'ai pas l'aspect qui apparait..

Etrange non? :shock:

Cela fait trois jours entiers que je teste toutes les combinaisons possibles de fichiers que je reprends des alfresco "neuf" en y rajoutant petit à petit les fihciers et que je n'arrive toujours pas à avoir cet aspect qui s'affiche et qui marche sans que cela ne me provoque l'erreur :

WARN  [org.alfresco.web.bean.actions.BaseActionWizard] Failed to resolve aspect 'my:docA'

Je m'en remets donc à ceux qui expérimentés ou intéressés, voudront bien m'aider à solutionner ce problème qui est en train de me gacher mes journées …

Merci d'avance!

Saralix
12 REPLIES 12

st
Champ in-the-making
Champ in-the-making
Personne ne connait la réponse à ce problème?

Peut etre y a t-il un ordre précis dans le web-client-config-custom.xml pour y mettre les aspects et les défs des workflow…?
:?

st
Champ in-the-making
Champ in-the-making
Personne ne connait la réponse à ce problème?

Peut etre y a t-il un ordre précis dans le web-client-config-custom.xml pour y mettre les aspects et les défs des workflow…?
:?

rguinot
Confirmed Champ
Confirmed Champ
Si les deux fonctionnent correctement séparés, cela me fait penser à un conflit entre les deux.
Es tu sure qu'il n'y a pas de noms ou namespaces ou autre qui auraient le même nom dans la définition de l'aspect et du workflow ?

st
Champ in-the-making
Champ in-the-making
Oui ça je suis sure qu'il n'y a pas de noms communs. Je n'ai pas du tout menti dans le code que j'ai posté sur le forum.

en fait, j'ai essayé d'en créer un autre aspect pour voir si ça venait du namespace et ça ne marche pas non plus.

Dans docModel.xml, j'avais mis la définition des aspect de mon aspect : seuelement un titre et des propriétés.
Dans doc-model-context.xml : le path de mon docModel
Dans mon web-client-config-custom, le meme style que ce qui a été posté par moi plus haut.

En fait j'ai pris quasiment les memes données, j'ai changé le namespace de 'my' à 'ap', j'ai créé d'autres fichiers, mais rien pareil : des que je veus ajouter un aspect : j'ai l'erreur 'failed to resolve aspect'…

Je me doute qu'il doit y avoir un conflit… mais ou? pourquoi ? et comment le régler?

Je tourne en rond depuis quelques jours sur ce sujet et ça devient incompréhensible…

rguinot
Confirmed Champ
Confirmed Champ
Je n'ai pas vu la déclaration de ton workflow dans ton premier post, l'as tu mise ?

Deux autres idées me viennent :

* Lorsque tu références ton aspect, il faut peut être utiliser l'URI complète du namespace et pas uniquement le prefix.
* Tu as un deuxième modèle pour la déclaration du workflow ? Dans ces cas la il faut que tu importes le modèle qui contient la déclaration de l'aspect, voir la section <imports> des modèles standards Alfresco pour des exemples.

st
Champ in-the-making
Champ in-the-making
Merci pour tes réponses.
Non je n'ai pas mise ma déclaration de mon workflow parce que je voulais pas surcharger mon ost. Mais en tous les cas je sais que ça ça marche vu que mon workflow je le lance sans probleme.

Lorsque je référence mon aspect… tu veux dire lorsque je fais ça : 
<namespaces>
      <namespace uri="my.new.model" prefix="my"/>
   </namespaces>
???
Normalement on se sert de l'aspect comme ça : "my:docA"?
Je comprends pas sinon où tu veux en venir…!

quand j'utilise mon aspect dans un workflow,  je l'importe bien sur.
Pour le moment ce n'est pas ce que je fais : je cherche juste à avoir en meme temps dans mon alfresco :

-mon workflow qui marche
-ajouter mon aspect "docA" àtous les documents en inbound.

Je cherche juste à les avoir séparément.

Tu comprends mieux mon problème?

merci en tous les cas de m'aider à chercher la cause de mon "malheur'! lol Smiley Happy

rguinot
Confirmed Champ
Confirmed Champ
Lorsque tu fais référence à my:docA dans ton workflow il faut peut être utiliser l'URI complète à savoir : {my.new.model}docA . à l'exception bien entendu de lorsque tu déclares ton namespace.  le prefix "my" n'est qu'un "raccourci".

Ce n'est qu'une piste.

st
Champ in-the-making
Champ in-the-making
je ne suis plus au travail là donc je ne pourrai tester ceci que demain matin…

Oui ben sur ce n'est qu'une piste mais je vais l'essayer…meme si je doute un peu étant donné que sans mon workflow, l'utilisations de my:docA marche très bien sans le "my.new.model'…

Mais merci! si t'as d'autres pistes, et bien je suis preneuse évidemment :wink:

st
Champ in-the-making
Champ in-the-making
bon et bien ça ne marche pas… comme on pouvait s'y attendre!

mais on moins, c'est testé… ça n'en reste pas moins…bizarre :?