AnsweredAssumed Answered

Failed to resolve aspect

Question asked by st on Mar 4, 2008
Latest reply on Mar 6, 2008 by rguinot
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

Outcomes