Grandes difficulté pour déployer un modèle

cancel
Showing results for 
Search instead for 
Did you mean: 
drisschelouati
Active Member

Grandes difficulté pour déployer un modèle

Bonjour à tous, cela fait déjà quelques temps que j'ai commencé à travailler sur Alfresco. Je trouve que c'est un produit formidable qui offre énormément de possibilités.

Je dispose de la version Community 5.0.d avec le module de records management version 2.3. Après avoir largement exploité les fonctionnalités disponibles nativement, j'ai commencé à me pencher sur la modélisation de contenu.Bien qu'offrant des possibilités d'extension pratiquement sans limite, la modélisation reste difficile d'accès pour les néophytes comme moi, surtout que je ne suis ni programmeur, ni développeur, mais plutôt consultant. Toutefois, j'ai investi du temps pour comprendre la modélisation de modèles basiques grâce au xml.

Après avoir lu beaucoup de tutoriaux, fait beaucoup d'erreurs, et m'être attaqué à des projets encore trop complexes pour moi, je me suis ravisé et j'ai décidé de réaliser quelque chose de simple, afin de pouvoir tester la possibilité d'extension des modèles existants.

J'ai choisi d'écrire un modèle pour étendre "cm:content" avec deux subtypes : "ad:cinvoice" (facture client) et "ad:finvoice" (facture fournisseur).


1- L'enregistrement du modèle : invoicecustom-model-context.xml

<code><?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.mtg.dictionaryBootstrap" parent="dictionaryModelBootstrap" depends-on="dictionaryBootstrap">

            <property name="models">

                <list>

                    <value>alfresco/extension/invoicecustom-model.xml</value>

                </list>

            </property>

        </bean>

</beans><code>


Le fichier a été copié dans Alfresco/shared/classes/alfresco/extension



2- La déclaration du modèle : invoicecustom-model.xml


<?xml version="1.0" encoding="UTF-8"?>
<!– Definition of new Model –>
<model xmlns="http://www.alfresco.org/model/dictionary/1.0" name="ad:invoicecustom-model">
   <!– Optional meta-data about the model –>
   <description>Custom invoice model</description>
   <author>Driss Chelouati</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 –>
   <namespaces>
      <namespace uri="ad.typemodeles.com" prefix="ad" />
   </namespaces>
   <!–      T Y P E   D E F I N I T I O N S      –>
   <types>
      <!–   Type definitions For this model go here –>
      <type name="ad:cinvoice">
         <title>Facture client</title>
         <description>Facture émise</description>
         <parent>cm:content</parent>
         <properties>
            <property name="ad:client">
               <title>Nom du client</title>
               <type>d:text</type>
               <mandatory>true</mandatory>
               <constraints>
                  <constraint name="ad:clientList" type="LIST">
                     <parameter name="allowedValues">
                        <list>
                           <value>Hassan</value>
                           <value>Hamid</value>
                           <value>Bouazza</value>
                        </list>
                     </parameter>
                  </constraint>
               </constraints>
            </property>
            <property name="adSmiley Tongueaydate">
               <title>Date de paiement</title>
               <type>d:date</type>
               <mandatory>true</mandatory>
            </property>
            <property name="ad:ammount">
               <title>Montant</title>
               <type>d:float</type>
               <mandatory>true</mandatory>
            </property>
            <property name="ad:reference">
               <title>Référence facture</title>
               <type>d:int</type>
               <mandatory>false</mandatory>
            </property>
         </properties>
      </type>
      <type name="ad:finvoice">
         <title>Facture fournisseur</title>
         <description>Facture reçue</description>
         <parent>cm:content</parent>
         <properties>
            <property name="ad:fournisseur">
               <title>Nom du fournisseur</title>
               <type>d:text</type>
               <mandatory>true</mandatory>
               <constraints>
                  <constraint name="ad:fournisseurList" type="LIST">
                     <parameter name="allowedValues">
                        <list>
                           <value>Omar</value>
                           <value>Jean</value>
                           <value>Jack</value>
                        </list>
                     </parameter>
                  </constraint>
               </constraints>
            </property>
            <property name="adSmiley Tongueaiedate">
               <title>Date de paiement</title>
               <type>d:date</type>
               <mandatory>true</mandatory>
            </property>
            <property name="ad:amount">
               <title>Montant</title>
               <type>d:float</type>
               <mandatory>true</mandatory>
            </property>
            <property name="ad:ref">
               <title>Référence facture</title>
               <type>d:int</type>
               <mandatory>false</mandatory>
            </property>
         </properties>
      </type>
   </types>
</model>

Le fichier a été copié dans Alfresco/shared/classes/alfresco/extension


3- Configuration de l'interface Share (forms): "share-config-custom. xml"

J'ai tout d'abordajouté dans le fichier, sous "alfresco-config"


<alfresco-config>

<!– Create item form –>

<config evaluator="model-type" condition="ad:cinvoice">
          <forms>
             <form>
                <field-visibility>      
                   <show id="ad:client"/>
                   <show id="adSmiley Tongueaydate"/>
                   <show id="ad:ammount"/>
                   <show id="ad:reference"/>
                   <show id="cm:creator" for-mode="view"/>
                   <show id="cm:created" for-mode="view"/>
                   <show id="cm:modifier" for-mode="view"/>
                   <show id="cm:modified" for-mode="view"/>
               </field-visibility>
          <create-form template="/org/alfresco/components/data-lists/forms/dataitem.ftl"/>
      <appearance>
              <field id="ad:client">
                <control template="/org/alfresco/components/form/controls/selectmany.ftl"/>
         </field>
         <field id="adSmiley Tongueaydate">
            <control template="/org/alfresco/components/form/controls/daterange.ftl"/>
         </field>
         <field id="ad:ammount">
            <control template="/org/alfresco/components/form/controls/textfield.ftl"/>
         </field>
         <field id="ad reference">
            <control template="/org/alfresco/components/form/controls/textarea.ftl"/>
         </field>
      </appearance>
             </form>
          </forms>
   </config>

<!–Edit View–>

<config evaluator="node-type" condition="ad:cinvoice">
          <forms>
             <form>
                <field-visibility>      
                   <show id="ad:client"/>
                   <show id="adSmiley Tongueaydate"/>
                   <show id="ad:ammount"/>
                   <show id="ad:reference"/>
                   <show id="cm:creator" for-mode="view"/>
                   <show id="cm:created" for-mode="view"/>
                   <show id="cm:modifier" for-mode="view"/>
                   <show id="cm:modified" for-mode="view"/>
               </field-visibility>
          <create-form template="/org/alfresco/components/data-lists/forms/dataitem.ftl"/>
      <appearance>
              <field id="ad:client">
                <control template="/org/alfresco/components/form/controls/selectmany.ftl"/>
         </field>
         <field id="adSmiley Tongueaydate">
            <control template="/org/alfresco/components/form/controls/daterange.ftl"/>
         </field>
         <field id="ad:ammount">
            <control template="/org/alfresco/components/form/controls/textfield.ftl"/>
         </field>
         <field id="ad reference">
            <control template="/org/alfresco/components/form/controls/textarea.ftl"/>
         </field>
      </appearance>
             </form>
          </forms>
   </config>

<!– Create item form –>

       <config evaluator="model-type" condition="ad:finvoice">      
         <forms>
              <form>
                <field-visibility>     
                   <show id="ad:fournisseur"/>
                   <show id="adSmiley Tongueaiedate"/>
                   <show id="ad:amount"/>
                   <show id="ad:ref"/>
                   <show id="cm:creator" for-mode="view"/>
                   <show id="cm:created" for-mode="view"/>
                   <show id="cm:modifier" for-mode="view"/>
                   <show id="cm:modified" for-mode="view"/>
               </field-visibility>
          <create-form template="/org/alfresco/components/data-lists/forms/dataitem.ftl"/>
      <appearance>
              <field id="ad:fournisseur">
                <control template="/org/alfresco/components/form/controls/selectmany.ftl"/>
         </field>
         <field id="adSmiley Tongueaiedate">
            <control template="/org/alfresco/components/form/controls/daterange.ftl"/>
         </field>
         <field id="ad:amount">
            <control template="/org/alfresco/components/form/controls/textfield.ftl"/>
         </field>
         <field id="ad ref">
            <control template="/org/alfresco/components/form/controls/textarea.ftl"/>
         </field>
      </appearance>
             </form>
         </forms>
       </config>

<!–Edit View–>

       <config evaluator="node-type" condition="ad:finvoice">      
         <forms>
              <form>
                <field-visibility>     
                   <show id="ad:fournisseur"/>
                   <show id="adSmiley Tongueaiedate"/>
                   <show id="ad:amount"/>
                   <show id="ad:ref"/>
                   <show id="cm:creator" for-mode="view"/>
                   <show id="cm:created" for-mode="view"/>
                   <show id="cm:modifier" for-mode="view"/>
                   <show id="cm:modified" for-mode="view"/>
               </field-visibility>
          <create-form template="/org/alfresco/components/data-lists/forms/dataitem.ftl"/>
      <appearance>
              <field id="ad:fournisseur">
                <control template="/org/alfresco/components/form/controls/selectmany.ftl"/>
         </field>
         <field id="adSmiley Tongueaiedate">
            <control template="/org/alfresco/components/form/controls/daterange.ftl"/>
         </field>
         <field id="ad:amount">
            <control template="/org/alfresco/components/form/controls/textfield.ftl"/>
         </field>
         <field id="ad ref">
            <control template="/org/alfresco/components/form/controls/textarea.ftl"/>
         </field>
      </appearance>
             </form>
         </forms>
       </config>

Plus bas dans le fichier, j'ai ajouté les deux subtypes à cm:content

<!–
         Used by the "Change Type" action

         Define valid subtypes using the following example:
            <type name="cm:content">
               <subtype name="cm:mysubtype" />
            </type>

         Remember to also add the relevant i18n string(s):
            cm_mysubtype=My SubType
      –>
      <types>
         <type name="cm:content">
               <subtype name="ad:cinvoice" />
               <subtype name="ad:finvoice" />
         </type>

         <type name="cm:folder">
         </type>

         <type name="trx:transferTarget">
            <subtype name="trx:fileTransferTarget" />
         </type>
      </types>

      <!–
         If set, will present a WebDAV link for the current item on the Document and Folder details pages.
         Also used to generate the "View in Alfresco Explorer" action for folders.
      –>
      <repository-url>http://localhost:8080/alfresco</repository-url>

j'ai ensuite enregistré les changements.

4- Configuration de slingshot.properties (Alfresco/Tomcat/Webapps/alfresco/WEB-INF/classes/alfresco/messages)

j'ai ensuite ajouté les 2 subtypes à slingshot.properties, comme indiqué dans la doc Alfresco:

   # Types
    type.cm_content=Content Base Type
    type.cm_folder=Folder Base Type
    type.trx_transferTarget=Transfer Target
    type.trx_fileTransferTarget=File Transfer Target
    type.ad_cinvoice=Facture client
    type.ad_finvoice=Facture fournisseur



Après avoir sauvegardé, je relance le service Alfresco (préalablement arrêté pour effectuer les manips de configuration), je me log et :

1- Je ne peux pas changer le type de document, aucun choix dans la liste de la box
2- Aucune trace de ces modèles de factures dans Share
3- Lorsque j'effectue les modifs dans slingshot.properties et que je lance Alfresco, je n'ai plus accès à la prévisualisation issue de google docs, qui fonctionne à nouveau dès que je restaure le fichier par défaut, mais pas de modèles ni de types ajoutés
4- Y a t-il des conflits possibles avec le module de records management?

J'ai essayé beaucoup de méthodes (dont la dynamic approach qui ne semble pas fonctionner) et je n'y arrive vraiment pas et c'est un peu frustrant, je ne sais pas si je suis passé à côté d'un truc important, alors j'espère vraiment que quelqu'un voudra bien se dévouer pour m'aider à résoudre ce casse-tête!!!

Merci d'avance à ce qui me liront
5 Replies
jeanjot
Active Member

Re: Grandes difficulté pour déployer un modèle

Je serais vous je commencerais pas prendre une version stable de Alfresco, soit la dernière la 5.0.c. D'ailleurs je ne connais pas de version 5.0.d.

Si vous ne voyez rien dans share c'est que votre fichier Share "share-config-custom. xml" contient des erreurs.

Pouvez vous aussi nous mettre à disposition vos fichiers de log

a+
drisschelouati
Active Member

Re: Grandes difficulté pour déployer un modèle

Merci de votre réponse, tout d'abord autant pour moi, je possède effectivement la version 5.0.c. J'ai pas mal avancé de mon côté étant donné que je n'ai pas eu de réponse sur le forum. Après avoir essayé la "dynamic approach" (ne fonctionne pas), la "bootstrap approach" (pas réussi non plus), je me suis lancé dans  le build d'AMP avec Maven. Après m'etre pas mal arraché les cheveux, j'ai réussi à monter un modèle simple, qui s'installe correctement mais qui manque encore de configuration sur share pour afficher les bonnes valeurs dans le bon ordre.

Je voulais savoir quels sont les "config evaluator" et autres éléments de configuration (éventuellement fichiers .properties) que je dois ajouter pour les différents formulaires (édition dans le mode d'affichage détaillé, formulaire d'édition dans l'entrepôt, formulaire de recherche avancée), types, aspects et associations compris. Merci de bien vouloir m'éclairer sur le sujet et dites moi si vous avez besoin que j'upload le ontenu de mes fichiers de configuration du modèle (model, context et share config).

MERCI!
slimabid
Member II

Re: Grandes difficulté pour déployer un modèle

Bonjour, j'ai suivi les étapes de Mr drisschelouati et j'ai eu ceci :
ps: Je suis aussi novice avec Alfresco !

Merci d'avance.
drisschelouati
Active Member

Re: Grandes difficulté pour déployer un modèle

Bonjour Mr Slim Abid, je ne suis pas spécialiste comme vous le savez, mais au vu de votre log, il semble y avoir des problèmes quant à l'enregistrement de votre modèle par SPRING. Il y a peut-être une erreur dans votre fichier model-context.xml. Quelle méthode avez-vous utilisé, travaillez-vous sur MAVEN?
jeanjot
Active Member

Re: Grandes difficulté pour déployer un modèle

Commencer par corriger votre fichier suivant : facture-context.xml
<strong>[C:\Alfresco\tomcat\shared\classes\alfresco\extension\facture-context.xml] is invalid; nested exception is org.xml.sax.SAXParseException; lineNumber: 1; columnNumber: 112; cvc-elt.1.a: Cannot find the declaration of element 'bean'.</strong>

Voir à la ligne 1, colonne 112

Je vous conseille d'avoir un outil pour valider votre fichier au format XML.