[résolu] Création d'un espace (space) par java

cancel
Showing results for 
Search instead for 
Did you mean: 
adnuser
Member II

[résolu] Création d'un espace (space) par java

Bonjour,
je cherche a crée un espace dans le dictionnaire au démarrage d'alfresco , pas vis-a-vis du bootstrap car celui-ci n'est lu que pendant la phase initiale d'installation.
Mais cette fonction doit être réalisé seulement dans les classpath:alfresco/extension/…. car je doit tout mettre dans un jar qui sera lu seulement quand le serveur tomcat démarre (pour des raison de portabilité)
donc je ne doit pas créer des fichier dans "tomcat/share/classes/alfresco/extension/"

peut-être par les AMP ?

merci d'avance
vincent
2 Replies
michel
Member II

Re: [résolu] Création d'un espace (space) par java

Bonjour,


pourrais-tu être un peut plus clair, svp, car il y a 2, 3 points dans ta demande qui me sont obscurs…

donc quand tu dis:

je cherche a crée un espace dans le dictionnaire

c'est bien dans le dictionnaire des données d'alfresco dont tu parles?

pour ce qui est de l'endroit ou se trouve "la fonction" (je préfère de loin class) ce n'est pas vraiment important car si tu crées un jar (qui au passage est toujours lu au démarrage de TomCat, mais pas exécuté), il n'y a que l'arborescence des packages java.

mis à part ça, n'est-il pas mieux de créer ton espace, non pas au démarrage de TomCat, mais à la première fois que l'on essaye de l'utiliser?

et au final, pour pouvoir créer un esapce, il faut utilisé le nodeService d'alfresco, avec la méthode suivante.


public ChildAssociationRef createNode(
            NodeRef parentRef,
            QName assocTypeQName,
            QName assocQName,
            QName nodeTypeQName,
            Map<QName, Serializable> prop
)



assocTypeQName
doit avoir la valeur du

ContentModel.ASSOC_CONTAINS

assocQName
doit être un qname qui donne le nom de la relation (généralement si tu appel ton espace test tu mets:

QName.createQName(NamespaceService.CONTENT_MODEL_1_0_URI, "test")
)

nodeTypeQName
doit être de type

ContentModel.TYPE_FOLDER

Et pour finir:

props
la liste des propriété du noeud.

généralement tu la définis comme suit (pour un espace qui se nomme Test:

Map<QName, Serializable> props = new HashMap<QName, Serializable>(1);
      props.put(ContentModel.PROP_NAME, "Test");

bien à toi.

Michel
adnuser
Member II

Re: [résolu] Création d'un espace (space) par java

merci de la réponse.
oui la création de l'espace doit être dans le dictionnaire d'alfresco.

j'ai résolu le problème avec un module, car je voulais tout simplement créer cet espace a l'initialisation.


créer un projet avec une arborescence type module sous eclipse:
[img]http://smeserver.free.fr/affiche_amp.jpg[/img]

il faut d'abord utiliser 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>
   <import resource="classpath:alfresco/module/org.alfresco.module.logosvision/context/logosvision-bootstrap-context.xml"/>
   <import resource="classpath:alfresco/module/org.alfresco.module.logosvision/context/logosvision-action-context.xml"/>
   <import resource="classpath:alfresco/module/org.alfresco.module.logosvision/context/logosvision-model-context.xml"/>
</beans>

puis le logosvision-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>
   <!– LogoVision Model Registration –>
   <bean id="lv_dictionaryBootstrap" parent="dictionaryModelBootstrap" depends-on="dictionaryBootstrap">
        <property name="models">
            <list>
                <value>alfresco/module/org.alfresco.module.logosvision/model/logosvisionModel.xml</value>
            </list>
        </property>
    </bean>

</beans>

le Modèle logosvisionModel.xml
<?xml version="1.0" encoding="UTF-8"?>

<!– Definition of new Model –>
<model name="lv:logosvisionmodel" xmlns="http://www.alfresco.org/model/dictionary/1.0">

   <!– Optional meta-data about the model –>  
   <description>LogoVision Model</description>
   <author>Filali-Ansary Vincent</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="http://www.azurdigitalnetworks.net/model/logosvisionbase/1.0" prefix="lv"/>
   </namespaces>

   <types>
  
      <type name="lv:logosvisionmodel">
         <title>LogosVision Base</title>
         <parent>cm:folder</parent>
      </type>
     
   </types>
 
    <aspects>
     
      <!– Definition of new logosvisionnable Aspect –>
      <aspect name="lv:logosvisionnable">
         <title>LogosVisionnable</title>
         <properties>
            <property name="lv:logosvision">
               <title>LogosVision</title>
               <type>d:text</type>
               <multiple>true</multiple>
            </property>
         </properties>
      </aspect>
     
   </aspects>
  
</model>

le bootstrap logosvision-bootstrap-context.xml ou en fait on déclare dans la clé path ou ce trouve le répertoire parent du futur espace.
<?xml version='1.0' encoding='UTF-8'?>
<!DOCTYPE beans PUBLIC '-//SPRING//DTD BEAN//EN' 'http://www.springframework.org/dtd/spring-beans.dtd'>

<beans>
   <!– LogosVision base data bootstrap bean –>  
   <bean id="lv_bootstrapSpaces"
      class="org.alfresco.repo.module.ImporterModuleComponent"
      parent="module.baseComponent" depends-on="lv_dictionaryBootstrap">
      
        <property name="moduleId" value="org.alfresco.module.logosvision" />
       <property name="name" value="bootstrapSpaces" />
       <property name="description" value="Initial data requirements" />
       <property name="sinceVersion" value="1.0" />
       <property name="appliesFromVersion" value="1.0" />   
       <property name="importer" ref="spacesBootstrap"/>
       <property name="bootstrapViews">
          <list>
               <!– LogosVision space –>
            <props>
                  <prop key="path">/${spaces.company_home.childname}/${spaces.dictionary.childname}</prop>
                 <prop key="location">alfresco/module/org.alfresco.module.logosvision/bootstrap/logosvision_space.xml</prop>
               </props>
           </list>    
       </property>
   </bean>

</beans>

enfin le logosvision_space.xml qui contient la déclaration de l'espace avec son nom dans 
<cm:name>LogosVision Base</cm:name>

<?xml version="1.0" encoding="UTF-8"?>
<view:view xmlns:view="http://www.alfresco.org/view/repository/1.0">
  <lv:logosvisionmodel
     xmlns:act="http://www.alfresco.org/model/action/1.0"
     xmlns:app="http://www.alfresco.org/model/application/1.0"
     xmlns:ver="http://www.alfresco.org/model/versionstore/1.0"   
     xmlns:mix="http://www.jcp.org/jcr/mix/1.0"
     xmlns:jcr="http://www.jcp.org/jcr/1.0"
     xmlns:wcm="http://www.alfresco.org/model/wcmmodel/1.0"
     xmlns:wcmwf="http://www.alfresco.org/model/wcmworkflow/1.0"
     xmlns:rule="http://www.alfresco.org/model/rule/1.0"
     xmlns:fm="http://www.alfresco.org/model/forum/1.0"
     xmlns:nt="http://www.jcp.org/jcr/nt/1.0"
     xmlns:alf="http://www.alfresco.org"
     xmlns:d="http://www.alfresco.org/model/dictionary/1.0"
     xmlns:view="http://www.alfresco.org/view/repository/1.0"
     xmlns:lv="http://www.azurdigitalnetworks.net/model/logosvisionbase/1.0"
     xmlns:wf="http://www.alfresco.org/model/workflow/1.0"
     xmlns:usr="http://www.alfresco.org/model/user/1.0"
     xmlns:cm="http://www.alfresco.org/model/content/1.0"
     xmlns:sv="http://www.jcp.org/jcr/sv/1.0"
     xmlns:sys="http://www.alfresco.org/model/system/1.0"
     xmlns:wca="http://www.alfresco.org/model/wcmappmodel/1.0"
     xmlns:bpm="http://www.alfresco.org/model/bpm/1.0"
     xmlns:custom="custom.model"
     xmlns:reg="http://www.alfresco.org/system/registry/1.0"
     xmlns:module="http://www.alfresco.org/system/modules/1.0"
     xmlns=""
     view:childName="cm:LogosVision Base"
     >

    <view:aspects>
      <app:uifacets></app:uifacets>
    </view:aspects>   
    <view:acl>
      <view:ace view:access="ALLOWED">
        <view:authority>GROUP_LogosVision_Internal</view:authority>
        <view:permission>Coordinator</view:permission>
      </view:ace>
      <view:ace view:access="ALLOWED">
        <view:authority>GROUP_LogosVision_Partners</view:authority>
        <view:permission>Contributor</view:permission>
      </view:ace>
    </view:acl>
    <view:properties>
      <app:icon>space-icon-pen</app:icon>
      <cm:description></cm:description>     
      <cm:title></cm:title>
      <cm:name>LogosVision Base</cm:name>
    </view:properties>
  </lv:logosvisionmodel>
</view:view>


merci de la réponse aussi réactive.