Tuesday 22 November 2011

Procedure to bring your custom repository in to ATG10.0.2 merchandising-flex view for Browse/Find modes, to query /update/search your custom repository asset items.


Procedure to bring your custom repository in to ATG10.0.2 merchandising-flex view for Browse/Find modes, to query /update/search on your custom repository asset items.
For these we have to create few components in your module for production (live) and publishing (CA) to bring custom repository in merchandising flex mode to support content administration (version)
Like Below:



Components for production (live): steps need for production (step:1-to-step:3)

step-1: create repository definition xml file as per your requirements
Example : /config/../xxRepository.xml
<?xml version="1.0" encoding="ISO-8859-1" ?>
<!DOCTYPE gsa-template
        PUBLIC "-//Art Technology Group, Inc.//DTD General SQL Adapter//EN"
        "http://www.atg.com/dtds/gsa/gsa_1.0.dtd">
<gsa-template>

<header>
<name>xx Repository</name>
</header>
 
  <!--///////////////////////////////////////-->
  <!-- xx Repository      -->
  <!--///////////////////////////////////////-->

<item-descriptor name="xxSection" display-name="xxxcontent" display-property="type">
 <table name="xx_content"  type="primary" id-column-name="section_id">
  
  <property name="xxsectionId" column-name="xxsection_id" data-type="String"
         display-name-resource="xx Section ID"   />
   <property name="type" column-name="type" data-type="String"
             display-name-resource="Type of the Section" />
          
 </table>
     </item-descriptor>
 </gsa-template>

Note: repository definitions should be simple. If it contains multi-relationship it may through error/unable to bring those relationships .be concentrate on repository design. Initially start with simple repository design.

Step-2:
create repository component by using above repository definition file
Example code:/config/../xxRepository.properties
$class=atg.adapter.gsa.GSARepository
$scope=global
definitionFiles=/../xxRepository.xml
repositoryName=xxRepository
XMLToolsFactory=/atg/dynamo/service/xml/XMLToolsFactory
transactionManager=/atg/dynamo/transaction/TransactionManager
idGenerator=/atg/dynamo/service/IdGenerator
dataSource=/atg/dynamo/service/jdbc/SwitchingDataSource

Step-3: create  ”Initial.properties” in your  project  local  config folder in this path ”/config/atg/Initial.properties”
Example Code : Initial.properties
initialServices+=/../xxRepository

Components for publishing (CA):   steps need for content administration (step-4 - to-   step-13)

Step-4: create repository component (“xxRepository_production”) by using above custom repository definition file (Step-1)
Example code: in your version module ..\Versioned\config\..\ xxRepository_production.properties
$class=atg.adapter.gsa.GSARepository
$scope=global
definitionFiles=/../xxRepository.xml
foreignRepositorySuffix=_production
XMLToolsFactory=/atg/dynamo/service/xml/XMLToolsFactory
transactionManager=/atg/dynamo/transaction/TransactionManager
idGenerator=/atg/dynamo/service/IdGenerator
dataSource=/atg/dynamo/service/jdbc/SwitchingDataSource
lockManager=/atg/dynamo/service/ClientLockManager_production

Step-5: create repository component (“xxRepository ”)by using above custom repository definition file (Step-1)
Example code: ..\Versioned\config\..\ xxRepository.properties
$class=atg.adapter.version.VersionRepository
versionManager=/atg/epub/version/VersionManagerService
versionItemsByDefault=true
$scope=global
definitionFiles=/../xxRepository.xml
repositoryName=xxRepository
XMLToolsFactory=/atg/dynamo/service/xml/XMLToolsFactory
transactionManager=/atg/dynamo/transaction/TransactionManager
idGenerator=/atg/dynamo/service/IdGenerator
dataSource=/atg/dynamo/service/jdbc/JTDataSource
Step-6:  create AssetResolver component in exact path ” ..\Versioned\config\atg\dynamo\service\ AssetResolver.properties” : in your version module
Example code: AssetResolver.properties
additionalAssetSources+=\
             /../xxRepository

Step-7:  create VersionManagerService component in exact path ” ..\Versioned\config\atg\epub\version\ VersionManagerService.properties” : in your version module
Example code VersionManagerService.properties
versionedRepositories+=\
    xxRepository=/../xxRepository

Step-8:  create deploymentTopology.xml  in exact path ” ..\ Versioned\config\atg\epub\ deploymentTopology.xml ” : in your version module
Example code: for  deploymentTopology.xml
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE publishing-deployment-topology SYSTEM
"http://www.atg.com/dtds/publishing_deployment/publishing_deployment_1.0.dtd">
<publishing-deployment-topology>
<target>
 <target-name>Production</target-name>

    <agent>
    <agent-name>PubAgent</agent-name>
    <principal-asset>NONE</principal-asset>
    <include-asset-destination>/atg/epub/file/ConfigFileSystem
    </include-asset-destination>
    <include-asset-destination>/atg/epub/file/WebAppRefFileSystem
    </include-asset-destination>
    <transport>
    <transport-type>RMI</transport-type>
    <rmi-uri>rmi://127.0.0.1:8860/atg/epub/AgentTransport</rmi-uri>
    </transport>
    </agent>

    <agent>
    <agent-name>WebAgent1</agent-name>
    <principal-asset>NONE</principal-asset>
    <include-asset-destination>/atg/epub/file/WWWFileSystem
    </include-asset-destination>
    <transport>
      <transport-type>RMI</transport-type>
      <rmi-uri>rmi://127.0.0.1:8860/atg/epub/AgentTransport</rmi-uri>
    </transport>
    </agent>

<repository-mapping>
  <source-repository>/..xxRepository</source-repository>
  <destination-repository>/../xxRepository_production</destination-repository>
</repository-mapping>
</target>
</publishing-deployment-topology>

Step-9:  create  ContentRepositories component in exact path ” ..\ Versioned\config\atg\registry\ ContentRepositories.properties” : in your version module
Example code: ContentRepositories.properties
$class=atg.repository.nucleus.RepositoryRegistryService
initialRepositories+=\
                /../xxRepository,\
                /../xxRepository_production


Step-10:  create  ProductionRepositoryMapper component in exact path ” ..\ Versioned\config\atg\repository\ ProductionRepositoryMapper.properties” : in your version module
Example code: ProductionRepositoryMapper.properties
repositoryMappings+=\
       /../xxRepository_production
Step-11: create  ”Initial.properties” in component in exact path ” ..\ Versioned\config\atg\ Initial .properties” : in your version module
Example Code : Initial.properties
initialServices+=/../xxRepository_production,\
      ../xxRepository



These Steps especially need for Flex merchandising view:
To get your custom repository in to merchandising flex Browse mode this step is required 

Step-12:  create MerchandisingBrowseHierarchy.xml  in exact path ” ..\ Versioned\config\atg\remote\commerce\browse\ MerchandisingBrowseHierarchy.xml ”  in your version module .
Example code: for  MerchandisingBrowseHierarchy.xml
<browse-hierarchy xml-combine="append">

<browse-item id="home" xml-combine="append">
     <browse-item reference-id="myxxRepository"/>
</browse-item>

<!-- ***************** -->
<!--   xx Repository  -->
<!-- ***************** -->
<!-- Root browsing node -->
<browse-item id="myxxRepository"
     label="xx Repository"
     is-root="true"
     icon-resource="node.catalogs.iconSmall"
     multisite="disabled">
      <browse-item reference-id="myxxSection "/>
</browse-item>

<!--Cms Section -->
<browse-item id="myxxSection"
     label="xx Section"
     is-root="true"
     icon-resource="node.catalogs.iconSmall"
     multisite="disabled">
     <list-definition id="allXxSectionItems"
          retriever="query"
          child-type="/../xxRepository:xxSection ">
          <retriever-parameter name="query"
               value="ALL" />
     </list-definition>
</browse-item>
</browse-hierarchy>

To get your custom repository in to merchandising flex Find mode this step is required 

Step-13:  create MerchandisingFindConfiguration.xml  in exact path ” ..\ Versioned\config\atg\remote\commerce\find\ MerchandisingFindConfiguration.xml ”  in your version module .
Example code: for  MerchandisingFindConfiguration.xml
<find-configuration site-filtering="true">
     <asset-family id="myXxRepository" site-filtering="true">
          <display-name>xx Repository</display-name>
          <enable-default-query>true</enable-default-query>
          <enable-filter-as-you-type>true</enable-filter-as-you-type>
          <result-list page-size="100"/>
          <default-asset-type>myXxSection</default-asset-type>
         
                  
          <asset-type
               id=" myXxSection"
               site-filtering="true">
               <enable-default-query>true</enable-default-query>
               <enable-filter-as-you-type>true</enable-filter-as-you-type>
               <repository-path>/../xxRepository</repository-path>
               <repository-item-type>xxSection</repository-item-type>
          </asset-type>
                 
     </asset-family>
</find-configuration>