AnsweredAssumed Answered

Grandes difficulté pour déployer un modèle

Question asked by drisschelouati on Feb 26, 2015
Latest reply on Mar 14, 2015 by jeanjot
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="ad:paydate">
               <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="ad:paiedate">
               <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="ad:paydate"/>
                   <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="ad:paydate">
            <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="ad:paydate"/>
                   <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="ad:paydate">
            <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="ad:paiedate"/>
                   <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="ad:paiedate">
            <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="ad:paiedate"/>
                   <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="ad:paiedate">
            <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

Outcomes