Non-versioned Repositories in BCC

Non-versioned Repositories in BCC


This section explains about managing the non-versioned repositories (Orders, Inventory) in BCC. It includes series of steps, in which we will be updating the OOTB files as well as creating custom files too.
BCC HomePage

Inventory HomePage

Step 1: Create custom GenericActiviy in following path.
/config/my/activity/genericActivities.xml

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE gsa-template
PUBLIC "-//Art Technology Group, Inc.//DTD General SQL Adapter//EN"
"http://www.atg.com/dtds/activitymanager/activitymanager_1.0.dtd">
<generic-activities>
<!-- Add a link named "Edit Inventory" -->
<activity>
<id>editInventory</id>
<resource-bundle>my.webui.WebAppResources</resource-bundle>
<display-name-resource>editInventory.displayName</display-name-resource>
<description-resource>editInventory.description</description-resource>
<destination-page>
<!-- This link takes the user to the AssetManager UI -->
<url>/AssetManager/assetManager.jsp</url>
<!-- The clear-context flag clears any active Content Administration project references out of the user's session. -->
<clear-context>true</clear-context>
<!-- The ACL is optional. This ACL limits the visibility of this link to people with any of the epub roles. -->
<acl>Profile$role$epubAdmin:read;Profile$role$epubSuperAdmin:read;Profile$role$epubManager:read;Profile$role$epubUser:read</acl>
</destination-page>
</activity>
<!-- Add a link named "Edit Order" -->
<activity>
<id>editOrder</id>
<resource-bundle>my.webui.WebAppResources</resource-bundle>
<display-name-resource>editOrder.displayName</display-name-resource>
<description-resource>editOrder.description</description-resource>
<destination-page>
<!-- This link takes the user to the AssetManager UI -->
<url>/AssetManager/assetManager.jsp</url>
<!-- The clear-context flag clears any active Content Administration project references out of the user's session. -->
<clear-context>true</clear-context>
<!-- The ACL is optional. This ACL limits the visibility of this link to people with any of the epub roles. -->
<acl>Profile$role$epubAdmin:read;Profile$role$epubSuperAdmin:read;Profile$role$epubManager:read;Profile$role$epubUser:read</acl>
</destination-page>
</activity>
</generic-activities>

Step 2: Define custom ActivitySource.
/config/my/activity/ActivitySource.properties

$class=atg.bizui.activity.PortalActivitySource

# The name and description for the entry that appears on the left side of the home page.
activitySourceResourceBundle=my.webui.WebAppResources
activitySourceNameResource=activitySourceName
activitySourceDescriptionResource=activitySourceDescription

# Generic activity definitions
genericActivityDefinitionFiles=/my/activity/genericActivities.xml
genericActivityFileModificationInterval=every 300 seconds

securityConfiguration=/atg/dynamo/security/SecurityConfiguration
XMLToolsFactory=/atg/dynamo/service/xml/XMLToolsFactory
scheduler=/atg/dynamo/service/Scheduler

#defaultCreateWorkflowURL=/atg/bcc/process
defaultCreateWorkflowURL=/atg/bcc/process?successURL=/AssetManager/assetManager.jsp

# Default URL for the main project page.
defaultProcessURL^=/atg/bizui/activity/PublishingActivitySource.defaultProcessURL

# Default URL for the workflow task page. All tasks use the AssetManager UI.
defaultTaskURL=/AssetManager/assetManager.jsp
fallbackPriority=2

Step 3: Register your ActivitySource to OOTB ActivityManager.
/config/atg/bizui/activity/ActivityManager.properties

activitySources+=/my/activity/ActivitySource


Step 4: Create ViewConfiguration for Inventory and Order.
/config/my/web/assetmanager/InventoryViewConfiguration.properties

$class=atg.web.assetmanager.configuration.FilterableBrowseListViewConfiguration

# The path to the repository from which to draw the items
repositoryPath=/atg/commerce/inventory/InventoryRepository

# The type of items to display
assetTypeName=inventory

# Types the user is allowed to create in this view
createableTypesList=inventory

# Number of items to show per page
itemsPerPage=50


/config/my/web/assetmanager/OrderViewConfiguration.properties

$class=atg.web.assetmanager.configuration.FilterableBrowseListViewConfiguration

# The path to the repository from which to draw the items
repositoryPath=/atg/commerce/order/OrderRepository

# The type of items to display
assetTypeName=order

# Types the user is allowed to create in this view
createableTypesList=order

# Number of items to show per page
itemsPerPage=50

Step 5: Configure the Tabs and Buttons to TaskConfiguration.
/config/atg/web/assetmanager/configuration/taskConfiguration.xml

<?xml version="1.0" encoding="ISO-8859-1" ?>

<!DOCTYPE task-configuration
PUBLIC "-//Art Technology Group, Inc.//DTD Asset Manager Task Configuration//EN"
'http://www.atg.com/dtds/web/assetmanager/taskConfiguration_1.0.dtd'>
<task-configuration>
<!-- Define an activity for editing the inventory repository -->
<activity id="editInventory" inherit-from="assetManager.defaultEdit">
<activity-name>editInventory</activity-name>
<!-- Configure the buttons on the toolbar -->
<operations>
<operation>create</operation>
<operation>delete</operation>
</operations>
<!-- Define tabs for the left pane -->
<tabs>
<tab-order>
<tab-id>browse</tab-id>
<tab-id>search</tab-id>
</tab-order>
<initial-tab>browse</initial-tab>
<!-- Configure the Browse tab with a list view of inventory items -->
<tab id="browse">
<display-name-resource>assetManager.tab.browse</display-name-resource>
<page>/browse/browseTab.jsp</page>
<views>
<view-order>
<view-id>editInventory.inventory</view-id>
</view-order>
<initial-view>editInventory.inventory</initial-view>
<view id="editInventory.inventory">
<resource-bundle>my.webui.WebAppResources</resource-bundle>
<display-name-resource>editInventory.browseTab.view.inventory</display-name-resource>
<configuration>/my/web/assetmanager/InventoryViewConfiguration</configuration>
<page>/browse/list.jsp</page>
</view>
</views>
</tab>
<!-- Configure the Search tab to allow searching for inventory items -->
<tab id="search">
<display-name-resource>assetManager.tab.search</display-name-resource>
<page>/search/searchTab.jsp</page>
<views>
<initial-view>form</initial-view>
<view id="form">
<page>/search/searchForm.jsp</page>
<item-types>
<item-type>/atg/commerce/inventory/InventoryRepository:inventory</item-type>
</item-types>
</view>
<view id="results">
<page>/search/searchResults.jsp</page>
</view>
</views>
</tab>
</tabs>
</activity>

<!-- Define an activity for editing the order repository -->
<activity id="editOrder" inherit-from="assetManager.defaultEdit">
<activity-name>editOrder</activity-name>
<!-- Configure the buttons on the toolbar -->
<operations>
<operation>create</operation>
<operation>delete</operation>
</operations>
<!-- Define tabs for the left pane -->
<tabs>
<tab-order>
<tab-id>browse</tab-id>
<tab-id>search</tab-id>
</tab-order>
<initial-tab>browse</initial-tab>
<!-- Configure the Browse tab with a list view of inventory items -->
<tab id="browse">
<display-name-resource>assetManager.tab.browse</display-name-resource>
<page>/browse/browseTab.jsp</page>
<views>
<view-order>
<view-id>editOrder.order</view-id>
</view-order>
<initial-view>editOrder.order</initial-view>
<view id="editOrder.order">
<resource-bundle>my.webui.WebAppResources</resource-bundle>
<display-name-resource>editOrder.browseTab.view.order</display-name-resource>
<configuration>/my/web/assetmanager/OrderViewConfiguration</configuration>
<page>/browse/list.jsp</page>
</view>
</views>
</tab>
<!-- Configure the Search tab to allow searching for inventory items -->
<tab id="search">
<display-name-resource>assetManager.tab.search</display-name-resource>
<page>/search/searchTab.jsp</page>
<views>
<initial-view>form</initial-view>
<view id="form">
<page>/search/searchForm.jsp</page>
<item-types>
<item-type>/atg/commerce/order/OrderRepository:order</item-type>
</item-types>
</view>
<view id="results">
<page>/search/searchResults.jsp</page>
</view>
</views>
</tab>
</tabs>
</activity>
</task-configuration>

Step 6: Create services for Inventory and Order.
/config/my/remote/controlcenter/service/inventory.xml

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE application-configuration
PUBLIC "-//Art Technology Group, Inc.//DTD BCC Application Configuration //EN"
"http://www.atg.com/dtds/application-configuration/application-configuration_1.0.dtd">
<applications>
<application id="editInventory">
<resource-bundle>my.webui.WebAppResources</resource-bundle>
<display-name-resource>editInventory.displayName</display-name-resource>
<destination-page>
<url>/AssetManager/assetManager.jsp</url>
<query-parameter key="project" value="-1" />
<query-parameter key="activity" value="editInventory" />
</destination-page>
<acl>Profile$role$epubAdmin:read;Profile$role$epubSuperAdmin:read;Profile$role$epubManager:read;Profile$role$epubUser:read</acl>
<initializer>
</initializer>
<sort-priority>30</sort-priority>
<category>yourProjectExtras</category>
</application>
</applications>

config/my/remote/controlcenter/service/order.xml

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE application-configuration
PUBLIC "-//Art Technology Group, Inc.//DTD BCC Application Configuration //EN"
"http://www.atg.com/dtds/application-configuration/application-configuration_1.0.dtd">
<applications>
<application id="editOrder">
<resource-bundle>my.webui.WebAppResources</resource-bundle>
<display-name-resource>editOrder.displayName</display-name-resource>
<destination-page>
<url>/AssetManager/assetManager.jsp</url>
<query-parameter key="project" value="-1" />
<query-parameter key="activity" value="editOrder" />
</destination-page>
<acl>Profile$role$epubAdmin:read;Profile$role$epubSuperAdmin:read;Profile$role$epubManager:read;Profile$role$epubUser:read</acl>
<initializer>
</initializer>
<sort-priority>30</sort-priority>
<category>yourProjectExtras</category>
</application>
</applications>

Step 7: Register your custom services to ApplicationConfigurationManager.
/config/atg/remote/controlcenter/service/ApplicationConfigurationManager.properties

applicationFiles+=/my/remote/controlcenter/service/inventory.xml,\
                /my/remote/controlcenter/service/order.xml

Step 8: Add resource bundle.
/src/my/webui/WebAppResources.properties 

editInventory.displayName=Manage Inventory
editInventory.description=Manage Inventory
editInventory.browseTab.view.inventory=inventory
assetManager.tab.browse=Browse
assetManager.tab.search=Search
activitySourceName=Non-Versioned
activitySourceDescription=Non-Versioned
editOrder.browseTab.view.order=Order
editOrder.displayName=Manage Order
editOrder.description=Manage Order


Step 9: Override the componets of Order and Inventory and point datasource to Non_versioned DB (Production Core)

dataSource=/atg/dynamo/service/jdbc/JTDataSource_production

12 comments:

  1. Hi Iranna,

    I am trying to do something similar to what you have posted, very useful information by the way Thank you.

    But I am facing an issue with the resource bundle, for some reason the genericActivities.xml is not able to see the resource bundle and throws an exception.

    Do you recall having an issue with the resource bundle?

    Regards,
    Obed

    ReplyDelete
    Replies
    1. the title of for the source is added http://i.imgur.com/a6WVxsW.png but when I click on it it throws this exception:
      javax.servlet.jsp.JspException: An error occurred while evaluating custom action attribute "value" with value "${activity.displayName}": An error occurred while
      getting property "displayName" from an instance of class atg.bizui.activity.GenericActivity (java.util.MissingResourceException: Can't find resource for bundle j
      ava.util.PropertyResourceBundle, key emanageLoyaltyProgram.displayName)


      meaning that my genericActivities.xml file is not able to read the properties file.

      Any suggestion?

      Regards,
      Obed

      Delete
  2. Hi, I finally made it, it was a typo that I was not seeing.

    Thank you.

    Regards,
    Obed

    ReplyDelete
    Replies
    1. Hi, Where was the typo error? I mean in which file?

      Delete
  3. Hi,

    Cool. Good wishes.

    Regards,
    Iranna

    ReplyDelete
  4. Hi Iranna,

    I want to accomplish something like this:
    http://i.imgur.com/CPS1IWV.jpg the list property just display as follows: http://i.imgur.com/Ff9PRMG.png Do you know if there is an easy way to do this on the viewMappingRepository? or I will need to create a custom .jsp to make this possible?

    Regards,
    Obed

    ReplyDelete
  5. Hi Obed,

    Sorry for the delay in response. I got your requirement. You can achieve it by doing below things.
    1. You cannot have multiple properties in list level, so break down the list to relation and maintain multiple properties at relation level.
    2. Create custom JSP for the page. (You can refer "Price" tab of sku)
    3. Create Custom Formhandler to Update Item in BCC, and that formhandler should create relational item and store it in DB.

    Let me know, if above information helps. Or let me know, if you have found other way to achieve the same.

    Regards,
    Iranna

    ReplyDelete
  6. This comment has been removed by the author.

    ReplyDelete
  7. • Nice and good article. It is very useful for me to learn and understand easily. Thanks for sharing your valuable information and time. Please keep updatingAzure Online course

    ReplyDelete
  8. It's nice to read article about cxml, it will definitely help me in future.
    Commerce XML?

    ReplyDelete
  9. Hi ,

    i followed the instruction and its 11.3.2 ATG but some how listView is not coming under browse section.
    Number of item is showing in down count area.
    Could you pls suggest for the same.

    ReplyDelete