Advanced AMP Development

From alfrescowiki

Jump to: navigation, search

Warning: Archived Page
This page addresses a topic that is better suited to Alfresco's official documentation. This page is not being maintained and might not apply to modern versions of Alfresco. It is likely that we will completely remove this page in the future.

The official documentation is at: http://docs.alfresco.com



AMP file structure

  /
  |
  |- /config
  |
  |- /lib
  |
  |- /licenses
  |
  |- /web
    |
    |- /jsp
    |
    |- /css
    |
    |- /images
    |
    |- /scripts
  |
  |- module.properties
  |
  |- file-mapping.properties


Structure config directory

  /config
  |
  |- /alfresco
    |
    |- /module
       |
       |- /moduleid
          |- module-context.xml
          |
          |- /boostrap
          |  |-script-import.xml
          |  |-groups-import.xml
          |  |-content-template-import.xml
          |  |-space-to-import.xml
          |  |-/space-to-import
          |
          |- /context
          |  |-bootstrap-context.xml
          |  |-action-context.xml
          |  |-others-context.xml
          |
          |- /messages
          |
          |- /model
          |  |-modulenameModel.xml
          |
          |- /script
          |  |-somescript.js
          |
          |- /template
          |  |-sometemplate.ftl
          |
          |- /ui
          |  |-web-client-custom.xml
          |
          |- /workflow
             |-workflowmodulename_workflowModel.xml
             |-workflowmodulename_processdefinition.xml
             |-workflowmodulename-messages.properties

/alfresco/module/moduleid

For alfresco to pickup your module resources these have to be placed (these usually were placed in the <shared>/alfresco/extension directory) in the webapps/alfresco/WEB-INF/classes/alfresco/module/<moduleid> subdirectory as you can see in this snippet from WEB-INF/classes/alfresco/module-context.xml

   <!-- Import of installed modules -->
   <import resource="classpath*:alfresco/module/*/module-context.xml"/>
   <import resource="classpath*:alfresco/module/*/module-uninstall-context.xml"/>

contents of 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/<moduleid>/context/bootstrap-context.xml" />
  <import resource="classpath:alfresco/module/<moduleid>/context/action-context.xml" />
  <import resource="classpath:alfresco/module/<moduleid>/context/scheduled-action-context.xml" />

  <bean id="<moduleid>.ConfigBootstrap" class="org.alfresco.web.config.WebClientConfigBootstrap" init-method="init">
    <property name="configs">
     <list>
       <value>classpath:alfresco/module/<moduleid>/ui/web-client-xml</value>
     </list>
    </property>
  </bean>
</beans>

Using bootstrap

When installing a Module into the Alfresco system you probably want to import some stuff like spaces, templates, scripts etc. For this purpose you can use the boostrap mechanism.

The first line in module-context.xml:

    <import resource="classpath:alfresco/module/<moduleid>/context/bootstrap-context.xml" />

points to

bootstrap-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>
  <!-- Registration of new models -->
  <bean id="<moduleid>.dictionaryBootstrap" parent="dictionaryModelBootstrap" depends-on="dictionaryBootstrap">
    <property name="models">
      <list>
        <value>alfresco/module/<moduleid>/model/modulenameModel.xml</value>
      </list>
    </property>
  </bean>

  <!-- Bootstrap -->
  <bean id="<moduleid>.bootstrapSpaces" class="org.alfresco.repo.module.ImporterModuleComponent" 
                                        parent="module.baseComponent">
    <property name="moduleId" value="<moduleid>" />
    <property name="name" value="<moduleid>.bootstrapSpaces" />
    <property name="description" value="Initial data requirements" />
    <property name="sinceVersion" value="1.0" />
    <property name="appliesFromVersion" value="1.0" />
    <!-- Data properties -->
    <property name="importer" ref="spacesBootstrap"/>
    <property name="bootstrapViews">
      <list>
        <props>
          <prop key="path">/${spaces.company_home.childname}/${spaces.dictionary.childname}/${spaces.templates.content.childname}</prop>
          <prop key="location">alfresco/module/<moduleid>/bootstrap/content-template-import.xml</prop>
        </props>
        <props>
          <prop key="path">/${spaces.company_home.childname}/${spaces.dictionary.childname}/${spaces.scripts.childname}</prop>
          <prop key="location">alfresco/module/<moduleid>/bootstrap/script-import.xml</prop>
        </props>
        <props>
          <prop key="path">/${spaces.company_home.childname}</prop>
          <prop key="location">alfresco/module/<moduleid>/bootstrap/space-to-import.xml</prop>
        </props>
      </list>
    </property>
  </bean>

  <bean id="<moduleid>.bootstrapGroups" class="org.alfresco.repo.module.ImporterModuleComponent" 
                                        parent="module.baseComponent">
    <property name="moduleId" value="<moduleid>" />
    <property name="name" value="<moduleid>.bootstrapGroups" />
    <property name="description" value="Initial data requirements" />
    <property name="sinceVersion" value="1.1" />
    <property name="appliesFromVersion" value="1.1" />
    <!-- Data properties -->
    <property name="importer" ref="userBootstrap"/>
    <property name="bootstrapViews">
      <list>
        <props>
          <prop key="path">/${alfresco_user_store.system_container.childname}/sys:authorities</prop>
          <prop key="location">alfresco/module/<moduleid>/bootstrap/import_groups.xml</prop>
        </props>
      </list>
    </property>
  </bean>

  <bean id="<moduleid>.workflowBootstrap" parent="workflowDeployer">
    <property name="workflowDefinitions">
      <list>
        <props>
          <prop key="engineId">jbpm</prop>
          <prop key="location">alfresco/module/<moduleid>/workflow/workflowmodulename_processdefinition.xml</prop>
          <prop key="mimetype">text/xml</prop>
          <prop key="redeploy">true</prop>
        </props>
      </list>
    </property>
    <property name="models">
      <list>
        <value>alfresco/module/<moduleid>/workflow/workflowmodulename_workflowModel.xml</value>
      </list>
    </property>
    <property name="labels">
      <list>
        <value>alfresco/module/<moduleid>/workflow/workflowmodulename</value>
      </list>
    </property>
  </bean>

</beans>

Personal tools
© 2015 Alfresco Software, Inc. All Rights Reserved. Legal | Privacy | Disclaimers | Accessibility