WebSphere Product Center: WebSphere Commerce Integration
Version 5.2
Note! Before using this information and the product it supports, read the information in "Notices" at the end of this document.
23 March2005
This edition of this document applies to WebSphere Product Center, version 5.2 (5724-I68), and to all subsequent releases and modifications until otherwise indicated in new editions.
Copyright International Business
Machines Corporations 2005. All rights reserved.
US Government Users Restricted Rights-Use, duplication or
disclosure restricted by GSA ADP Schedule Contract with IBM Corp.
Ch 3 Integration with WebSphere Commerce
Commerce Configuration
Exporting WC Data to Commerce
Setup for preview
Product Center Configuration
Appendix A - Data Model Reference
Commerce integration provides a foundation for customers to establish a comprehensive, highly productive authoring environment for product information for their Business to Business (B2B) and Business to Consumer (B2C) e-commerce Web sites. WebSphere Product Center (hereafter called Product Center) can greatly extend the value of e-commerce implementations by dramatically improving the preparation of rich and accurate product information for publishing.
In combination with an e-commerce platform, it provides tools for orchestrating the contributions of multiple users across functions to various Commerce processes. It also offers features and capabilities to significantly simplify aggregating, enhancing, managing, and approving large amounts of complex product information.
Business processes supported include: new product introductions; creating cross-sells, up-sells and promotions; product end-of-life; synchronizing item information; mass uploads of items and their attributes to a Web site; and syndicating product information to multiple customer touch points in addition to e-commerce Web sites.
Commerce server integration includes:
Basic Product Center data modeling that includes representations for the Commerce catalog objects such as Categories, Product, Product Groups, SKUs, etc.
Export full catalog data as well as delta changes to Commerce application
Preview of an item in Product Center by clicking a preview menu option, with Commerce screens, and navigate in the Commerce application to see all the related commerce catalog objects
WebSphere Product Center 5.2
Integration with WebSphere Commerce 5.6 version with DB2 II version 8.2
Package developed for enabling Commerce integration with Product Center is a zip file <WPC_WC_Int.zip>, which contains the following:
Filter file
Jar file holding the command classes <WPC_WC.jar>
ReadMe.txt
The product data that is defined in Product Center and loaded onto Commerce contains default inventory . The user would need to use the Commerce Suite Accelerator for changing it.
Data exchange between Product Center and Commerce is based on XML documents. The Commerce team should provide the DTD for their latest mass upload tool. Product Center scripts are used to create XML documents, which can be validated against the Commerce DTD, and FTP them to one pre- defined location from where the Commerce application will pick up the document and process the same. In case of any errors encountered during processing the XML document needs to be handled manually.
The First catalog feed to commerce is considered to be the Full Export and subsequently only the objects that have either changed or deleted in Product Center are exported to commerce as part of the delta feed.
Product Center generates the XML that adheres to the DTD defined by commerce (WCS.dtd). The delta process always involves the execution of the delete xml first and then the update, to remove any inconsistency in the object states.
The integration of WebSphere Product Center and WebSphere Commerce accomplishes the following objectives:
Data model representation of commerce objects in Product Center
Mass / delta data upload to commerce application
Item preview feature of an existing object in Product Center, in the Commerce store pages
Note: Refer to Appendix A for details on data model reference.
The following objects are included in the Product Center integration package:
WCCatentryCtg – The Master Catalog in Product Center
This catalog represents the master catalog in commerce. The catalog is associated with the WCPdtHier hierarchy that has custom post-process and post-save scripts
The Catalog is associated with WCCatentryPSpec as the PrimarySpec, the attribute catalog entry type deciding the type of the catalog item. I.e. Bundle/Product/StaticKit/DynamicKit
The Sales Catalogs in commerce are represented as secondary hierarchies to the master catalog
WCSKUCtg – The SKUs that belong to a Product
The commerce data model has SKUs contained with a product. I.e. The defining attributes for a product makes the SKUs. Since there is no direct representation of this object in Product Center, the SKU-Product relationship is established through this catalog
The Product defined in the WCCatentryCtg (Master Catalog), is saved as a category in this catalog
The defining attributes and the corresponding values defined in the WCCatentyCtg, are attached as secondary specs to the above category
WCSalesHr – The Sales Catalog
The sales catalogs in commerce serve as tools to publish seasonal product information along with the offers, discounts etc.
This is accomplished in Product Center by attaching multiple secondary hierarchies to the WCCatentryCtg (Master Catalog)
The functionality to copy items or categories from the Master Catalog is provided through the Copy Items or Category Entry Preview Script
ActivityLog– The Activity Log Catalog
The Activity log catalog is the key identifier for the application to recognize full and partial data uploads
Every Object created in Product Center finds an entry here in the post – save scripts and is updated as when such object undergoes changes
The attribute UpdateDateTime identifies the time when a particular object was created/modified/deleted. This is compared with the lookup value of WC1_LAST_UPLOAD_TIME to determine if it will be part of the delta catalog feed
A number of Product Center scripts aid in the data-model representation of the commerce objects in Product Center. The following table describes them
Script Name | Script Type | Description/Functionality |
WCCatentry Post Processiong Script | Catalog Script – Post Process |
Performs basic data model validations like duplicate part number, defining attribute related validations etc |
CatentryCtg post save | WCSKUCtgPostSave |
Checks if the item saved is a product, then creates the product as a category in the SKU catalog and also attaches the defining attribute as a secondary spec |
WCSKUCtgPostSave | WCSKUCtgPostSave |
Creates entry in activity log catalog |
WCCatentryCtg Entry Preview Script | Entry Preview |
Builds the XML for the item requested for preview and uploads the XML data as a HTTP Post and invokes the commerce preview command |
WCSkuCtgEntryPreview | Entry Preview |
Same as above, preview for a SKU |
DataExportToCommerceScript | Report Script |
The Report that facilitates the user to perform full/delta catalog feeds to commerce. This script in conjunction with some trigger scripts build the XML by computing the items to be exported from ActivityLog Catalog incase of delta , FTP the XML to a predefined directory ( described in the lookup table) and invokes the commerce command. |
WC-Export.Wc.XmlFormat | Trigger Script |
ASP/JSP like This script is an important piece in building the XML. All the commerce XML nodes are described in this script as functions which are called from the trigger scripts. |
WC.Validation.Utility.Lib | Trigger Script |
A validation trigger script to perform basic validations on the objects like not null, filtering of special characters, uniqueness validation etc. |
WCExportUtil.wpcs | Trigger Script |
The main work horse script which is invoked in case of full/delta export as well as during preview. Handles all the business logic and builds the XML |
activityLogger.wpcs | Trigger Script |
This script handles all activity log catalog related entries. |
WC.utility.Lib | Trigger Script |
Has utility functions like changed Multi occurrence values for a item, creating secondary spec, deleting SKU relationship for catalog items etc. |
CopyItemsandCategory | Trigger Script |
This script is used to copy the items or the categories from the master catalog’s to the Sales Catalogs. |
Library Logger | Trigger Script |
A logger utility used by dev to have a log of events.Currently commented out as logger is not thread safe. |
This chapter provides the configuration for both Product Center and WebSphere Commerce.
Commerce server is installed
WebSphere Product Center Instance is successfully created
Commerce store to which the data needs to be defined is published successfully
FTP server is available with a shared folder having write access to dump the XML load files
Copy the files command.xml, SQLLoad.dtd, SQLLoad.xml, store.xml into a temporary folder. For example, C:\test
Copy wpcwcpolicy.xml and wpcwcUserGroup.xml file into the directory <WC_installDir>\xml\policies\xml
Copy the file "WCPWC.jar" into the directory <WAS_installdir>\installedApps\<cell_name>\WC_<instance_name>.ear
Copy the properties file WPCWCProperties.properties into the director <WAS_installdir>\installedApps\<cell_name>\WC_<instance_name>.ear\Stores.war\WEB-INF\classes
Use the following steps to configure the integration commands in WebSphere Commerce.
1) Load the file SQLLoad.xml file copied into C:\test directory, into the database, by running the idresolver followed by massloader command in the same window, as shown below:
idresgen -dbname <dbname> -dbuser <dbuser> -dbpwd <passwd> -infile C:\test\ SQLLoad.xml –outfile C:\test\ SQLLoadout.xml –method mixed
massload -dbname <dbname> -dbuser <dbuser> -dbpwd <passwd> -infile C:\test\ SQLLoadout.xml –method sqlimport
Note: In the SQLLoad.dtd file, ensure that the path for wcs.dtd is set appropriately
For example, if the wcs.dtd exists in the directory D:\WebSphere\CommerceServer56\schema\xml then the path should be specified as below:
<!ENTITY % wcs.dtd SYSTEM "D:\WebSphere\CommerceServer56\schema\xml\wcs.dtd">
2) Load the wpcwcUserGroup.xml file which was copied into <WC_installDir>\xml\policies\xml directory. For this, open a command prompt window, go to <WC_installDir>\bin directory and run the acpload command as below:
acugload <database name> <database user> <password> wpcwcUserGroup.xml <schema name>
where
d bname is name of database
dbuser is name of the user connecting to database
dbpwd is the password for the user connecting to database
schemaname is the name of the target database schema
3) Load the wpcwcpolicy.xml file which was copied into <WC_installDir>\xml\policies\xml directory. For this, open a command prompt window, go to <WC_installDir>\bin directory and run the acpload command as below:
acpload <dbname> <dbuser> <dbpwd> wpcwcpolicy.xml <schemaname>
where
dbname is name of database
dbuser is name of the user connecting to database
dbpwd is the password for the user connecting to database
schemaname is the name of the target database schema
4) Open the MANIFEST.MF file which exists in the directory <WAS_installdir>\installedApps\<cell_name>\WC_<instance_name>.ear\Stores.war\META-INF and add the jar file WPCWC.jar to the end of the Class-Path.
5) Open the WPCWCProperties.properties file in <WAS_installdir>\installedApps\<cell_name>\WC_<instance_name>.ear\Stores.war\WEB-INF\classes, and modify the following values appropriately
dbname is name of database
dbuser is name of the user connecting to database
dbpwd is the password for the user connecting to database
idresinfiledir is the directory where the Product Center should FTP the input filesFor example : C:/WPC-WC/testing
massloadinfile is the output file that would be gerenerated from IdResolver process and which would go as an input to the massloader process
For example: C:/WPC-WC/testing/idresout.xml
schemaname is the name of the target database schema
customizer is the Customizer file which has to be provided for other databases like Oracle.
For example : OracleConnectionCustomizer.propertiespropfilename is the path for the properties file IdResolveKeys.properties
For example : C:/WebSphere/CommerceServer56/properties/IdResolveKeys.properties
Note :
1. Add the following entry to the end of the file IdResolveKeys.properties file which exists in the directory <WC_installDir>\properties.
ATTRIBUTE=@LANGUAGE_ID@NAME@FIELD1:LANGUAGE_ID NAME FIELD1
2. Do not modify the other properties of mixedmethod, sqlmethod, deletemethod and optimize.
3. Ensure that wcs.dtd is placed in the directory specified by idresinfiledir.
This section describes how to extracting information from WebSphere Commerce to a commerce stpre.
Create a new user ( belonging to the root organization ) in Commerce through the Org. Admin Console with Administrative Privileges. Assign a WPCAdministrator Role to the user.
Use the following steps for extracting metadata information from WebSphere Commerce:
1) Extract the zip file onto a local directory
2) Copy the filter file Export_MetaData_Filter.xml to a temporary directory. For example, C:\test.
3) Open the Export_MetaData_Filter.xml file to make the following changes and save the file :
Search for string ConsumerDirect and replace the ConsumerDirect with the appropriate identifier of the store that is being considered
Serach for the string 7000000000000000002, and replace the member_id value of 7000000000000000002, with the appropriate value of the member_id of the store being considered
4) Open a command prompt window and change to the directory <WC_installdir>\bin
5) Run the massextract tool from <WC_installdir>\bin as below :
massextract -dbname <dbname> -dbuser <username> -dbpwd <password> -filter
C:\test\Export_MetaData_Filter.xml -outfile <outfile> -schemaname <schemaname>
where
dbname: is name of database
username: is name of the user connecting to database
password: is the password for the user connecting to database
outfile: is the name of the output xml file where the extracted data will be stored
schemaname: is the name of the target database schema
The metadata information would be generated in a file, as defined by the value given for <outfile> above.
Edit the <outfile> generated in the previous section. Go to following element at the end of the file and replace the logonPwd with information about the correct password that was created in the "Create a new user" section .
<userId
logonid = “<logonId of the user >”
logonpassword =”<logonPwd of the user>” />
This edited outfile would be the metadata information supplied to Product Center.
1. Open the WPCWCProperties.properties file in <WAS_installdir>\installedApps\<cell_name>\WC_<instance_name>.ear\Stores.war\WEB-INF\classes, and go to the property name ConsumerDirectImgDir.
2. This name has to be changed according to the stores that has been published. In this case, ConsumerDirect is the identifier of the store that has been published, hence the name ConsumerDirectImgDir.
3. If the identifier of the store published is ToolTech, then this property name is given as ToolTechImgDir instead of ConsumerDirectImgDir.
4. The value for this property name ConsumerDirectImgDir is given a path where the images of the store is placed. This path is relative to the StoreDirectory. For example, if the path of the store on the commerce machine is:
<WAS_installdir>/installedApps/<cell_name>/WC_<instance_name>.ear/Stores.war/ConsumerDirect
and the images are to be placed in the images directory within it, then the property should be mentioned as :
ConsumerDirectImgDir = images
1. From the WPC_WC_Version_X.zip file extract the zip file PreviewUtils.zip to a temporary folder.
2. Extract PreviewUtils.zip contents to WAS_HOME\installedApps\<node_name>\<cellname.ear>\Stores.war
There are two approaches to preview:
1. Publish the ConsumerDirect store using the Admin console interface in Commerce
2. Extract the JSPs from the samples.zip to WAS_HOME\installedApps\<node_name>\<cellname.ear>\Stores.war\ConsumerDirect.
For example, C:\WebSphere\AppServer\installedApps\vdev\WC_demo.ear\Stores.war\ConsumerDirect
3. Restart the commerce server
Approach B ( Needs JSP development): Modifying the store JSPs for any other store
Assumptions : The Databeans in the JSP are populated using their keyId .
Logic for Preview to work:
a) The Data Beans corresponding to Data received from Product Center are cached on the Commerce Server end in a Data Structure. This data structure is housed in a HashMap . This Data Structure can be retrieved from the HashMap using the PreviewBeanId value passed in the session. The Data Beans can be retrieved from this Data Structure using their primary key values passed in the request. The JSP uses these DataBeans (which contain merged information) instead of constructing their own Data beans.
b) The JSP can be made to use these databeans by having a JSP, which performs the process of loading these data Beans into the page scope. This JSP should be statically included in all the JSPs, that require the preview feature. The name of the variable / key used to load the variable into page scope should ideally be the same as the name of the variable that the data bean is going to be used as in the JSP. ( This is for ease of development when using JSTL)
c) Certain features which are not to be enabled during preview (such as Ordering an Item etc) should be conditionally blanked out / replaced with an appropriate message.
See PreviewDatabeanEnvironmentSetup.jsp in the PreviewHelper directory for implementation.
1) Obtain the Preview Bean ID from the HashMap
HttpSession session1 = requst.getSession();
String prvw_Bean_Id = (String)
session1.getAttribute(MappingConstants.PRVW_DATA_BEAN_ID);
2) Obtain the Data Structure , using this ID:
if (prvw_Bean_Id != null) {
CommDataHashBucket wpcComMapDataBucket = CommDataHashBucket.getCommDataHashBucket();
WPCCommerceMapDataStructure wpcComDataStructure =
wpcComMapDataBucket.getComDataStructure(prvw_Bean_Id);
HashMap catlgObjMap =
wpcComDataStructure.getCatalogObjectsMap();
1) Catalog Data Beans :
String catlgId = request.getParameter("catalogId");
if (catlgId != null) {
CatalogPreviewDatabean cPrvwDb = null;
HashMap catlgDBMap = (HashMap)
catlgObjMap.get(MappingConstants.CATALOG_BEAN);
cPrvwDb = (CatalogPreviewDatabean) catlgDBMap.get(new Integer(catlgId));
2) Category Data Beans :
String catgryId = request.getParameter("categoryId");
if (catgryId != null) {
CategoryPreviewDataBean catgryPrvwDB = null;
HashMap catlgDBMap = (HashMap)
catlgObjMap.get(MappingConstants.CATEGORY_BEAN);
catgryPrvwDB = (CategoryPreviewDataBean)
catlgDBMap.get(catgryId);
3) For any of the other Product Related Data Beans
String prodId = request.getParameter("productId");
if (prodId != null) {
HashMap catlgDBMap = (HashMap) catlgObjMap.get(MappingConstants.PRODUCT_BEAN);
Object prodLvLObj = catlgDBMap.get(prodId);
if (prodLvLObj != null) {
if (prodLvLObj instanceof ProductPreviewDataBean) {
ProductPreviewDataBean prodPrvwDB =
(ProductPreviewDataBean) prodLvLObj;
;
}
else if (prodLvLObj instanceof ItemPreviewDataBean) {
ItemPreviewDataBean itemPrvwDB = (ItemPreviewDataBean) prodLvLObj;
}
else if(prodLvLObj instanceof PackagePreviewDataBean)
{
PackagePreviewDataBean itemPrvwDB =
(PackagePreviewDataBean) prodLvLObj;
}
else if(prodLvLObj instanceof BundlePreviewDataBean){
BundlePreviewDataBean itemPrvwDB = (BundlePreviewDataBean) prodLvLObj;
}else if(prodLvLObj instanceof DynamicKitPreviewDataBean){
DynamicKitPreviewDataBean itemPrvwDB = (DynamicKitPreviewDataBean) prodLvLObj;
}
if (cPrvwDb != null) {
pageContext.setAttribute("catalog",cPrvwDb,1);
}
The name of variable used to put it in the page scope should be the same as the one used to instantiate it in the Store JSP. This has be to done for all kinds of Catalog Objects.
Statically include this JSP in the Existing JSP used for display of the catalog object.
For example: <%@ include file="../../PreviewHelper/PreviewDatabeanEnvironmentSetup.jsp" %>
1) If using JSTL : No change required
2) If using regular JSP coding , perform a similar action to the one shown in the code snippet below:
DynamicKitDataBean DynamicKitDataBean = null;
String storeId = ((TypedProperty)request.getAttribute(ECConstants.EC_REQUESTPROPERTIES)).getString(ECConstants.EC_STORE_ID);
if (pageContext.getAttribute("DynamicKitDataBean") == null) {
DynamicKitDataBean = new DynamicKitDataBean ();
com.ibm.commerce.beans.DataBeanManager.activate (DynamicKitDataBean, request);
} else {
DynamicKitDataBean = (DynamicKitDataBean) pageContext.getAttribute("DynamicKitDataBean");
}
To take care of these scenarios , Check for a value for PreviewBeanId and if set take appropriate action such as display a message stating action disabled. As shown in the following piece of code:
<c:when test="${!empty PreviewBeanId}">
<span class="text"><fmt:message key="SKU_NOT_BUYABLE" bundle="${storeText}" /></span><br /><br />
</c:when>
Fill up the corresponding entries shown below in the WPCWCproperties.properties file. These are the pages that will be used for Preview for various catalog objects created in Product Center. The keys are the combination of Store Identifier and Catalog Object Display. (In the below example : The Store Identifer is ConsumerDirect)
######### CATALOG DISPLAY JSP's ###############
ConsumerDirectCategoryDisplay = ShoppingArea/CatalogSection/CategorySubsection/CategoriesDisplay.jsp
ConsumerDirectProductDisplay = ShoppingArea/CatalogSection/CatalogEntrySubsection/ProductDisplay.jsp
ConsumerDirectItemDisplay = ShoppingArea/CatalogSection/CatalogEntrySubsection/ItemDisplay.jsp
ConsumerDirectDynamicKitDisplay = ShoppingArea/CatalogSection/CatalogEntrySubsection/DynamicKitDisplay.jsp
ConsumerDirectPackageDisplay = ShoppingArea/CatalogSection/CatalogEntrySubsection/PackageDisplay.jsp
ConsumerDirectBundleDisplay = ShoppingArea/CatalogSection/CatalogEntrySubsection/BundleDisplay.jsp
Use the following steps to configure Product Center for WebSphere Commerce integration.
1. Create a company called carmel in WPC environment by running the command src/db/schema/cmp/create_cmp.sh --code=carmel
2. Now get the .zip file commerce_carmelV1.0.zip using FTP from the below specified location
Server : <refer to the covering note>
User name : <refer to covering note>
Password : <refer to covering note>
Location : <refer to covering note>
3. Extract the zip file in some local dir. This .zip file will contain below listed ones
COMMERCE_CARMELLKP.ZIP
COMMERCE_CARMELNONLKP.ZIP
readme.txt
4. As a work around to a bug in import/export tool first create the attribute collection WCSKUAttrValColl with out any content in it.
5. Import first COMMERCE_CARMELLKP.ZIP then COMMERCE_CARMELNONLKP.ZIP using WPC import environment feature into carmel company created in step 1.
6. Get the help from commerce team in filling the details for the below specified lookup table fields for the lookup table WCConfigLkpTbl, leave the other values in this lookup table as is:
a. WC1_STORE_ID |
ID of the store that is published |
b. WC1_MEMBER_ID |
Commerce member ID |
c. WC1_MASTER_CATALOG_ID |
ID of the master catalog for the store published |
d. WC1_LANGUAGE_ID |
Will be always 1, don't change this value |
e. WC1_ITEM_TYPE_ID |
Don't change this value |
f. WC1_ITEM_SPC_ID |
Don't change this value |
g. WC1_BASE_ITEM_ID |
Don't change this value |
h. WC1_FFMCENTER_ID |
Get the help from Commerce team to fill in this value |
i. WC1_QUANTITY_ID |
Don't change this value |
j. WC1_TRADE_POSCN_ID |
Get the help from Commerce team to fill in this value |
k. WC1_SALES_CATALOG_ID |
One sales catalog must be created in the commerce instance and the ID of that catalog must be given here, get the help from commerce team to do that |
l. WC1_FTP_HOST_NAME |
IP of the box where the commerce server is running |
m. WC1_FTP_PORT |
FTP Port, normally this will not change, depends on the configuration of the FTP server in the commerce server box |
n. WC1_FTP_USER_ID |
FTP user name for the commerce server box FTP server, get the help from commerce team to fill in this value |
o. WC1_FTP_PASSWORD |
FTP password for the commerce server box FTP server, get the help from commerce team to fill in this value |
p. WC1_FTP_PATH |
Path from which the massload tool will pickup the FTPed file, get the help from commerce team to fill in this value |
q. WC1_SALES_HIERARCHY_NAME |
This should not be changed, predefined sales hierarchy for the sales/navigational catalog created in commerce as part of the step k |
r. WC1_SERVER_NAME |
Name of the server where commerce server is running |
s. WC1_LAST_UPLOAD_TIME |
Keep this empty first time so that initial load will be started, from then onwards this key will have the value of the last run time stamp of the report, if this is empty initial load will be executed |
t. DEFAULT_LOCALE |
This attribute must have the default locale for the integration part. THIS MUST BE SET AT THE TIME OF DEPLOYMENT AND SHOULD NOT BE CHANGED AT A LATTER STAGE, ALSO THIS LOCALE MUST BE PART OF THE COMPANY ATTRIBUTES AND AS PART OF SPECS WCCatentryCtg, WCSKUCtg |
u. WC1_LOGON_CMD |
This must be the fully qualified URL of the new Commerce Logon Cmd http://<serverName_where_Commerce_installed>/webapp/wcs/stores/servlet/WPCWCLogOn? |
v. WC1_LOGON_CMD_USER |
User created for security purpose ( Consult commerce team ) |
w. WC1_LOGON_CMD_USER_PASSWORD |
Password of the user created in v. |
7. The lookup table " WCCurrencyLkpTbl" has to be filled with the supported currencies in commerce, the exact three character value for each currency needs to be filled for both key and value. For example, USD as key and USD as value. Get the help from commerce team in getting the list of currencies supported in the respective commerce version.
8. To run the initial load / delta upload execute the Product Center report DataExportToCommerce. Depending on the value of the above said field either initial load or delta load will be executed
9. Make sure the commerce server IP is available as part of the /etc/hosts file in the Product Center installed box.
10. Because of a bug in the Import/Export tool, the attribute collection for the hierarchy WCPdtHier, WCPdtHierAttrColl needs to be set manually.
11. Make sure to set the value for "Locale for Item and Category Data Display" in Home > My Settings is set to the proper Locale so that user be able to see the content in the preview feature in the same locale as the user expects.
12. Make sure to have the link attribute catentry of WCCatentryCtg in attributes page is properly linked to WCSKUCtg attribute catentry_id, as because of a import / export bug this link attribute is not getting set
13. Mount the public_html directory.
14. Make sure that the catalog attributes have the entries for identifier and name with values as Master and MyMasterCatalog
1. Create a sales catalog in Commerce
2. Create a category tree with spec as WCCgrySalesHSpec
3. Attach this as a secondary hierarchy to the catalog WCCatentryCtg
4. Make a new entry in the lookup table SalesLookupTable
SalesCatalogName - must be the name of the category tree created in step 2
SalesCatalogId - This should be fetched from the catalog table in commerce db instance for the sales catalog created in step 1, field should be catalog_id
catalogIdentifier - This should be fetched from the catalog table in commerce db instance for the sales catalog created in step 1, field should be identifier
5. Make a new entry in the lookup table Last Sequence Register
Hierarchy Name - should be name of the sales hierarchy name
Last Sequence - 500000
6. Copy the content from "Copy Items or Category" from Data Model Manager -> scripting -> script console -> Entry Preview Script, then create a new entry preview script with the name as current sales category tree name appended with "Copy Items or Category" so that it will be unique
7. Copy the script content from post save and post process event for WCSalesHr and paste the same content for newly created sales hierarchy as well
The First catalog feed to commerce is considered to be the Full Export and subsequently only the objects that have either changed or deleted in Product Center are exported to commerce as part of the delta feed.
Product Center generates the XML that adheres to the DTD defined by commerce (WCS.dtd). The delta process always involves the execution of the delete xml first and then the update, to remove any inconsistency in the object states.
To launch a Full Export go to Product Manager > Reports > Reports Console. Select the DataExportToCommerce report and launch it.
The Lookup value WC1_LAST_UPLOAD_TIME in the lookup table WCConfigLkpTbl, determines if the catalog feed is a full export or delta. If this value is blank then it is a full export and computes the XML based on the present state of the Master / SKU catalogs and exports the same to commerce
Once the XML is generated ( With the time stamp affixed to the file name e.g WC-WPC-FullExport-2005-03-10-18.26.42.000026.xml )it is FTP-ed to directory as per the lookup value WC1_FTP_PATH
The commerce command , http://2fdtxp90.in.ibm.com/webapp/wcs/stores/servlet/WPCWCLogOn? is launched with values for WCCmd = Publish and the name of the xml file as the loadFile value.
Internally, commerce invokes the Idresolver and the mass load tool to upload this data to the database
To launch the Full Export go to Product Manager > Reports > Reports Console. Select DataExportToCommerce report and launch it.
The Lookup value WC1_LAST_UPLOAD_TIME in WCConfigLkpTbl looup table, determines the catalog feed is a full export or delta. If there is some value for this field then it’s a delta and the report script first computes all the objects that are deleted since the last time the report was run, from the activity log and builds the XML
Once the XML is generated ( With the time stamp affixed to the file name e.g WC-WPC-DeltaExport-Delete-2005-03-10-18.50.10.000050.xml)it is FTP-ed to directory as per the lookup value WC1_FTP_PATH .
The commerce command , http://2fdtxp90.in.ibm.com/webapp/wcs/stores/servlet/WPCWCLogOn? is launched with values for WCCmd = Delete and the name of the xml file as the loadFile value.
Internally, commerce invokes the Idresolver and the mass load tool to upload this data to the database
To launch the Full Export go to Product Manager > Reports > Reports Console. Select DataExportToCommerce report and launch it.
The Lookup value WC1_LAST_UPLOAD_TIME in WCConfigLkpTbl looup table, determines the catalog feed is a full export or delta. If there is some value for this field then it is a delta and the report script first computes all the objects that are deleted since the last time the report was run, from the activity log and builds the XML
Once the XML is generated (With the time stamp affixed to the file name e.g WC-WPC-DeltaExport-Update-2005-03-10-19.20.44.000020.xml)it is FTP-ed to directory as per the lookup value WC1_FTP_PATH .
The commerce command, http://2fdtxp90.in.ibm.com/webapp/wcs/stores/servlet/WPCWCLogOn? is launched with values for WCCmd = Publish and the name of the xml file as the loadFile value.
Internally commerce invokes the Idresolver and the mass load tool to upload this data to the database.
As the primary objective of the integration is to share the data available in Product Center, and the XML data model that will be generated from Product Center for this purpose is the mass upload document which is a direct representation of different tables in commerce, an understanding of commerce internal objects and in which table an object is stored and which tables that have relationships between different commerce objects would be helpful.
Store |
We may look at this as a master container under which all the data will be available interrelated. It is possible to have multiple stores in the same commerce application, and the same information is available in more than one stores. All the store information will be stored in the commerce table store and storeent. |
Catalog |
These catalogs are similar to Product Center catalogs. These catalogs will be attached to atleast one store. Catalog related information will be stored in 2 different tables catalog / catalogddsc. Relationship between catalog and store will be stored in storecat. |
Category |
These categories are similar to category in Product Center. These categories will be under catalogs. Category related information will be store in 2 tables, catgroup / catgrpdesc. Relationship between different categories will be stored in catgrprel table. Relationship between category and catalog is stored in cattogrp table and relationship between category and store is stored in storecgrp table. |
Product |
These products will be attached under categories. All the product related information will be stored in 3 different tables, baseitem / catentry / catentdesc. Product, bundle, static kit, dynamic kit, item all these objects will be stored in the same set of tables catentry / catentdesc, if catenttype_id field of catentry has the value as productBean, then current object is product. Also product, static kit, dynamic kit related info will be stored in one more table called baseitem, where if the itemtype_id field has the value as ITEM, current object is Product. Storecent table will store the relationship between store and product. Relationship between category and product will be stored in the table catgpenrel. |
Attributes |
These attributes will be attached to a product and attribute related information will be stored in the table attribute including relationship between attribute and product. |
Item |
These items are similar to items in Product Center. Items will be attached under products. Information related to item is stored in 2 tables, catentry / catentdesc. Both item and product is stored in the same table. catenttype_id is the one which differentiates between product and item. For item value for catenttype_id will be itemBean. Similar to products, items will also be related to specific stores and that will information will be stored in the same place as products storecent table. Catentrel table maintains the relationship between product and item. |
Attributes Values |
These attributes values will be attached under items and will hold the value for the attributes attached to the product to which these items are attached. Attribute value related information will be stored in attrvalue table including the relationship between item and attribute value. |
Bundles |
Bundle is a grouping object which can have different set of items / products / static kit / dynamic kit object to form one bundle. This bundle will be stored in 2 tables’ catentry and catentdesc. catenttype _id for this object is BundleBean. |
Static kit |
Similar to bundles, except that bundles can be disassociated, but static kits can’t be and static kits can contain only SKU. Catenttype_id for static kit is StaticBean. In addition to catentry and catentdesc tables, portion of info related to static kit will also be stored in baseitem table, here if the value of the field itemtype_id is STKT current object is static kit. |
Dynamic Kit |
Similar to static kit, main difference here is that this can hold the product configurator URL where the item information is available locally, but will be resolved by product configurator in the specified URL. In addition to catentry and catentdesc tables, portion of info related to static kit will also be stored in baseitem table, here if the value of the field itemtype_id is DNKT current object is dynamic kit. In the catentry table catentrytype_id for this object is DynamicKitBean. |
All commerce related Product Center objects are pre-pended with WC, so that there is no conflict with any other objects.
The following table summarizes the previous table above. Please refer to the validation section that follows the table below for a set of validations that is applicable.
Object / feature |
Product Center Representation | Commerce Representation |
Store |
Below values will be stored as key value pairs in
Product Center lookup
table
|
Store related info is store in tables STORE and STOREENT. Every store is associated with one master catalog and multiple sales catalogs |
Catalog |
Mater catalog is represented as 2 catalogs and 2 hierarchies in
Product Center
1. Catentry catalog Any catalog specific attributes will be stored as part of catalog attributes in Product Center. For commerce specific attributes we will use the custom catalog attribute definition feature where we can specify a key and respective value for catalog attributes. Hierarchy related attributes will also be stored in the same way. Catenetry catalog will have the representation of WC objects product, bundle, static kit and dynamic kit |
All catalog specific data is stored in tables catalog, catalogdsc, storecat. Different objects that can be associated with master catalog are category, Product, Item, Bundle, Static Kit and Dynamic Kit. These information is stored in below
tables
1. catgroup 2. catgrpdesc 3. cattogrp 4. storecgrp 5. catgrprel 6. baseitem 7. catentry 8. catentdesc 9. catgpenrel 10. catentrel 11. attribute 12. attrvalue |
Category |
Similar to Product Center category. Product Hierarchy will be used to store the category related details. In the product sku hierarchy we will make sure that user can’t create any category under the product category and no items created under any other category other than the leaf category which is a product. | All category related information is stored in
tables
1. catgroup 2. catgrpdesc 3. cattogrp 4. storecgrp 5. catgrprel |
Product |
Product will have its own attributes as well as set of attributes will be defined specific to products, for which value will be given at the item level. As there is no direct representation of this in
Product Center, product will be defined in the catentry catalog where for the catentrytype_id field user will select the value as Product, in the post save of that catalog one category will be created in the product sku hierarchy and the defined attributes given for this product in the catenetry catalog will be created as secondary spec and attached to the newly created category in product sku hierarchy as item category spec, also one relationship attribute in this hierarchy spec will related the respective item in the catentry catalog. There is no need for the user to add this product category separately. The moment he creates the product in the catenetry catalog, this category will be created automatically and ready to add item. Products can’t have value for relationship attributes, if the user had entered then validation error will be thrown |
Product information is stored as part of tables baseitem, catentry, cateentrydesc tables. In the base item identifier for product will be field itemtype_id having value as ITEM and in the catentry table field catenttype_id having the value as ProductBean |
SKU |
All SKU related details are stored in the SKU catalog. This catalog is associated to the product sku hierarchy in which all the products will the leaf category in which attributes for them are attached as item category specs in the post save of catenetry catalog. While the SKU is getting added it will be pre-populated with the respective attribute values from the linked product and user may change it and save it as per his request. | All SKU related details will be stored in catentry, cateentrydesc tables. If the field catenttype_id in catentry table has the value as ItemBean current entry is SKU |
Bundle |
In the catenetry catalog catenttype_id field having the value as Bundle will represent bundle object of commerce. This spec will have one link attribute which is multi occurrence attribute and attached to SKU catalog. This will be used to group different SKUs from SKU catalog. These bundles can have descriptive attributes but not defined attributes | All bundle related details will be stored in catentry, cateentrydesc tables. If the field catenttype_id in catentry table has the value as BundleBean current entry is bundle |
Static kit |
Catentry catalog will represent static kit object of commerce and the value for the catentrytype_id must be StaticKit. This catalog will be attached to product hierarchy. Current spec will have one link attribute which is multi occurrence attribute and will be linked to SKU catalog. | All static kit related details will be stored in baseitem, catentry, cateentrydesc tables. If the field catenttype_id in catentry table has the value as StaticBean current entry is bundle and if the field itemtype_id in baseitem has the value as STKT current object represents static kit |
Dynamic Kit |
Catenetry catalog will represent dynamic kit object of commerce and the value for the field catentrytype_id must be DynamicKit. This catalog will be attached to product hierarchy. Current catalog spec will have one link attribute which is multi occurrence attribute and attached to SKU catalog. Along with this one more multi occurrence attribute of type URL will be used to represent the product configurator URL | All dynamic kit related details will be stored in baseitem, catentry, cateentrydesc tables. If the field catenttype_id in catentry table has the value as DynamicKitBean current entry is bundle and if the field itemtype_id in baseitem has the value as DNKT current object represents static kit |
ATP |
If the field ALLOCATIONGOODFOR in the table store has the value as 1, this feature is enabled. There is no computation or any user entry is required to represent this feature in
Product Center. Pre defined static values which will be provided by commerce team is used to create XML snippets to fill the respective tables in commerce. |
Below tables in commerce are used to represent ATP feature1. itemversn2. distarrang3. storeitem4. storeitmffc5. inventory6. itemspc7. versionspc8. itemffmctr |
Merchandising |
This feature is implemented using set of merchandising specific attributes that are defined in the current spec of catentry catalog. There will be 2 important attributes merchandising type attribute which can have the values as X-SELL,UPSELL, ACCESSORY, REPLACEMENT and other attribute will be a relationship attribute where the user can select the cantentry catalog or SKU catalog and relate the respective WC objects | Below set of tables are related to merchandising in commerce1. massoctype2. massoc3. massoccece |
Sales |
This feature will be represented by having one hierarchy which will have different categories in it, either created directly by the user or user may choose to have same set of category along with its children from the product hierarchy. This can have only information till category. To differentiate the sales hierarchy from other hierarchies, we will add one hierarchy attribute, HIERARCHY_TYPE and the value as SALES.
Product, SKU, bundle, static kit and dynamic kit information can’t be represented as part of the sales hierarchy. There can be as many sales hierarchies as required by the user.In addition to user creating his own categories, if he chooses to copy the structure from the master catalog or from other sales catalog he should be able to. For this purpose we will add entry preview script to any sales hierarchy where he can choose to copy structure from other sales catalog or master catalog under the current category. |
One normal catalog is created and field mastercatalog in storecat is set to 0. |
Item preview |
Entry preview script will be used for this feature, on selecting this feature one URL in commerce will be invoked along with necessary item information. This item information will be again a mass upload XML for the current entry, which might be a category, product, bundle, static kit or dynamic kit. Along with invoking the URL of WC, we will be passing on type of the WC object as well. | |
Add |
Any add operation involves adding images as well as attributes, during export the attribute information will be transferred as part of the mass upload XML structure, images will zipped and be sent along with the mass load XML document | |
Modify |
Similar to add. Any change in any attribute will trigger to have all the attributes sent along, no partial information will be sent | |
Delete |
Always any delete in Product Center will trigger to set the markfordelete field in commerce tables, which is again update action in respective commerce tables and to invoke one command URL in WC where that command can take care of any further action like SQLs to be fired to complete this action | |
Localization |
All the attributes that are having language_id, will be defined as localized attributes in Product Center. In the Product Center settings user may enable all the locales that he / she wants to enable | Locales supported using the language_id field in different tables. As of now commerce supported locales are en_US, ja_JP, fr_FR, de_DE, it_IT, es_ES, pt_BR, zh_CN, zh_TW, ko_KR |
Currency |
In the Product Center settings user may configure all the currencies that the user wants to. | As of now commerce supported currencies are BRL, CNY, EUR, JPY, KRW, TWD,USD |
Below set of basic validations will be applied while the user is saving the item in the catentry catalog as part of the post processing script.
Commerce table definitions are directly converted to XML tags having table name as the element name and different table fields defined as element attributes. Attributes values are the actual values that need to be filled in those table fields. For the primary key alone, they are pre-pended with the @ symbol so that the primary key generation rule of commerce will be used to recreate the primary before storing these values in commerce tables.
It is possible, during implementation, to add one or more extensions of this table and add few more fields as needed. During these kind of situations, the extender table will have the link to the corresponding record in extended table in the form of foreign key.
Data transfer between Product Center and commerce will be in the form of XML documents. As specified in the solution brief, these generated documents will be placed in one common place known to both Product Center and commerce and commerce will pickup those documents from and process them.
Note: Error handling as part of this data exchange is handled manually. There will not be any communication from commerce to Product Center; it will always be from Product Center to Commerce.
XML document generated from Product Center MUST be compatible with this DTD. XML document generated as per this DTD is direct representation of Commerce data model in the schema level.
For Product Center Item preview capability in commerce, using custom tools item preview menu will be added in Product Center and whenever req. user may choose that menu item while after selecting that item. Now the item details which can be shown in the static page provided by commerce for this item preview capability will be passed on using HTTP Post method. Now the same will be parsed in the commerce side and shown in the commerce static page at the appropriate place. How the static page should look like, what are the other places user may navigate from that page, how the user will be controlled with in that static page is up to the commerce team to decide on.
Requirement from Product Center team will to have a URL where it can do a HTTP Post call along with the necessary data to be shown in the static page.
IBM may not offer the products, services, or features discussed in this document in all countries. Consult your local IBM representative for information on the products and services currently available in your area. Any reference to an IBM product, program, or service is not intended to state or imply that only that IBM product, program, or service may be used. Any functionally equivalent product, program, or service that does not infringe any IBM intellectual property right may be used instead. However, it is the user's responsibility to evaluate and verify the operation of any non-IBM product, program, or service.
IBM may have patents or pending patent applications covering subject matter described in this document. The furnishing of this document does not give you any license to these patents. You can send license inquiries, in writing, to:
IBM Director of Licensing
IBM Corporation
North Castle Drive
Armonk, NY 10504-1785
U.S.A.
The following paragraph does not apply to the United Kingdom or any other country where such provisions are inconsistent with local law:
INTERNATIONAL BUSINESS MACHINES CORPORATION PROVIDES THIS PUBLICATION AS IS WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. Some states do not allow disclaimer of express or implied warranties in certain transactions, therefore, this statement may not apply to you.
This information could include technical inaccuracies or typographical errors. Changes are periodically made to the information herein; these changes will be incorporated in new editions of the publication. IBM may make improvements and/or changes in the product(s) and/or program(s) described in this publication at any time without notice.
Any references in this information to non-IBM Web sites are provided for convenience only and do not in any manner serve as an endorsement of those Web sites. The materials at those Web sites are not part of the materials for this IBM product and use of those Web sites is at your own risk.
IBM may use or distribute any of the information you supply in any way it believes appropriate without incurring any obligation to you.
Licensees of this program who wish to have information about it for the purpose of enabling: (i) the exchange of information between independently created programs and other programs (including this one) and (ii) the mutual use of the information which has been exchanged, should contact:
IBM Burlingame Laboratory
Director IBM Burlingame Laboratory
577 Airport Blvd., Suite 800
Burlingame, CA 94010
U.S.A
Such information may be available, subject to appropriate terms and conditions, including in some cases, payment of a fee.
The licensed program described in this document and all licensed material available for it are provided by IBM under terms of the IBM Customer Agreement, IBM International Program License Agreement, or any equivalent agreement between us.
Any performance data contained herein was determined in a controlled environment. Therefore, the results obtained in other operating environments may vary significantly. Some measurements may have been made on development-level systems and there is no guarantee that these measurements will be the same on generally available systems. Furthermore, some measurement may have been estimated through extrapolation. Actual results may vary. Users of this document should verify the applicable data for their specific environment.
Information concerning non-IBM products was obtained from the suppliers of those products, their published announcements or other publicly available sources. IBM has not necessarily tested those products and cannot confirm the accuracy of performance, compatibility or any other claims related to non-IBM products. Questions on the capabilities of non-IBM products should be addressed to the suppliers of those products.
This information may contain examples of data and reports used in daily business operations. To illustrate them as completely as possible, the examples may include the names of individuals, companies, brands, and products. All of these names are fictitious and any similarity to the names and addresses used by an actual business enterprise is entirely coincidental.
All statements regarding IBM's future direction or intent are subject to change or withdrawal without notice, and represent goals and objectives only.
Programming interface information, if provided, is intended to help you create application software using this program.
General-use programming interfaces allow you to write application software that obtain the services of this program's tools.
However, this information may also contain diagnosis, modification, and tuning information. Diagnosis, modification and tuning information is provided to help you debug your application software.
Warning: Do not use this diagnosis, modification, and tuning information as a programming interface because it is subject to change.
The following terms are trademarks or registered trademarks of International Business Machines Corporation in the United States or other countries, or both:
IBM
the IBM logo
AIX
CrossWorlds
DB2
DB2 Universal Database
Domino
Lotus
Lotus Notes
MQIntegrator
MQSeries
Tivoli
WebSphere
Microsoft, Windows, Windows NT, and the Windows logo are trademarks of Microsoft Corporation in the United States, other countries, or both.
MMX, Pentium, and ProShare are trademarks or registered trademarks of Intel Corporation in the United States, other countries, or both.
Java and all Java-based trademarks are trademarks of Sun Microsystems, Inc. in the United States, other countries, or both.
Other company, product or service names may be trademarks or service marks of others.
IBM WebSphere Product Center contains certain Excluded Components (as defined
in the relevant License Information document), to which the following additional
terms apply. This software is licensed to you under the terms and conditions of
the International Program License Agreement, subject to its Excluded Components
provisions. IBM is required to provide the following notices to you in
connection with this softwatre:
i.) IBM WebSphere Product Center includes the following software that was
licensed by IBM from the Apache Software Foundation under the terms and
conditions of the Apache 2.0 license:
- Apache Regular Expression v1.2
- Apache Axis v1.1
- Apache XML4J v3.0.1
- Apache Log4j v1.1.1
- Apache Jakarta Commons DBCP Package v1.1
- Apache Jakarta Commons Pool Package v1.1
- Apache Jakarta Commons Collections Package v3.0
Apache License
Version 2.0, January 2004
http://www.apache.org/licenses/
TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
1. Definitions.
"License" shall mean the terms and conditions for use, reproduction,
and distribution as defined by Sections 1 through 9 of this document.
"Licensor" shall mean the copyright owner or entity authorized by the
copyright owner that is granting the License.
"Legal Entity" shall mean the union of the acting entity and all ther
entities that control, are controlled by, or are under common control with that
entity. For the purposes of this definition, "control" means (i) the
power, direct or indirect, to cause the direction or management of such entity,
whether by contract or otherwise, or (ii) ownership of fifty percent (50%) or
more of the outstanding shares, or (iii) beneficial ownership of such entity.
"You" (or "Your") shall mean an individual or Legal Entity
exercising permissions granted by this License.
"Source" form shall mean the preferred form for making modifications,
including but not limited to software source code, documentation source, and
configuration files.
"Object" form shall mean any form resulting from mechanical
transformation or translation of a Source form, including but
not limited to compiled object code, generated documentation, and conversions to
other media types.
"Work" shall mean the work of authorship, whether in Source or Object
form, made available under the License, as indicated by a copyright notice that
is included in or attached to the work (an example is provided in the Appendix
below).
"Derivative Works" shall mean any work, whether in Source or Object
form, that is based on (or derived from) the Work and for which the editorial
revisions, annotations, elaborations, or other modifications represent, as a
whole, an original work of authorship. For the purposes of this License,
Derivative Works shall not include works that remain separable from, or merely
link (or bind by name) to the interfaces of, the Work and Derivative Works
thereof.
"Contribution" shall mean any work of authorship, including the
original version of the Work and any modifications or additions to that Work or
Derivative Works thereof, that is intentionally submitted to Licensor for
inclusion in the Work by the copyright owner or by an individual or Legal Entity
authorized to submit on behalf of the copyright owner. For the purposes of this
definition, "submitted" means any form of electronic, verbal, or
written communication sent
to the Licensor or its representatives, including but not limited to
communication on electronic mailing lists, source code control systems, and
issue tracking systems that are managed by, or on behalf of, the Licensor for
the purpose of discussing and improving the Work, but excluding communication
that is conspicuously marked or otherwise designated in writing by the copyright
owner as "Not a Contribution."
"Contributor" shall mean Licensor and any individual or Legal Entity
on behalf of whom a Contribution has been received by Licensor and subsequently
incorporated within the Work.
2. Grant of Copyright License. Subject to the terms and conditions of this
License, each Contributor hereby grants to You a perpetual, worldwide,
non-exclusive, no-charge, royalty-free, irrevocable copyright license to
reproduce, prepare Derivative Works of, publicly display, publicly perform,
sublicense, and distribute the Work and such Derivative Works in Source or
Object form.
3. Grant of Patent License. Subject to the terms and conditions of this License,
each Contributor hereby grants to You a perpetual, worldwide, non-exclusive,
no-charge, royalty-free, irrevocable (except as stated in this section) patent
license to make, have made, use, offer to sell, sell, import, and otherwise
transfer the Work, where such license applies only to those patent claims
licensable by such Contributor that are necessarily infringed by their
Contribution(s) alone or by combination of their Contribution(s) with the Work
to which such Contribution(s) was submitted. If You institute patent litigation
against any entity (including a cross-claim or counterclaim in a lawsuit)
alleging that the Work or a Contribution incorporated within the Work
constitutes direct or contributory patent infringement, then any patent licenses
granted to You under this License for that Work shall terminate as of the date
such litigation is filed.
4. Redistribution. You may reproduce and distribute copies of the Work or
Derivative Works thereof in any medium, with or without modifications, and in
Source or Object form, provided that You meet the following conditions:
(a) You must give any other recipients of the Work or Derivative Works a copy of
this License; and
(b) You must cause any modified files to carry prominent notices stating that
You changed the files; and
(c) You must retain, in the Source form of any Derivative Works that You
distribute, all copyright, patent, trademark, and
attribution notices from the Source form of the Work, excluding those notices
that do not pertain to any part of the Derivative Works; and
(d) If the Work includes a "NOTICE" text file as part of its
distribution, then any Derivative Works that You distribute must
include a readable copy of the attribution notices contained within such NOTICE
file, excluding those notices that do not
pertain to any part of the Derivative Works, in at least one of the following
places: within a NOTICE text file distributed
as part of the Derivative Works; within the Source form or documentation, if
provided along with the Derivative Works; or,
within a display generated by the Derivative Works, if and wherever such
third-party notices normally appear. The contents
of the NOTICE file are for informational purposes only and do not modify the
License. You may add Your own attribution
notices within Derivative Works that You distribute, alongside or as an addendum
to the NOTICE text from the Work, provided that such additional attribution
notices cannot be construed as modifying the License.
You may add Your own copyright statement to Your modifications and may provide
additional or different license terms and conditions for use, reproduction, or
distribution of Your modifications, or for any such Derivative Works as a whole,
provided Your use, reproduction, and distribution of the Work otherwise complies
with the conditions stated in this License.
5. Submission of Contributions. Unless You explicitly state otherwise, any
Contribution intentionally submitted for inclusion in the Work by You to the
Licensor shall be under the terms and conditions of this License, without any
additional terms or conditions. Notwithstanding the above, nothing herein shall
supersede or modify the terms of any separate license agreement you may have
executed with Licensor regarding such Contributions.
6. Trademarks. This License does not grant permission to use the trade names,
trademarks, service marks, or product names of the Licensor, except as required
for reasonable and customary use in describing the origin of the Work and
reproducing the content of the NOTICE file.
7. Disclaimer of Warranty. Unless required by applicable law or agreed to in
writing, Licensor provides the Work (and each
Contributor provides its Contributions) on an "AS IS" BASIS, WITHOUT
WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, including,
without limitation, any warranties or conditions of TITLE, NON-INFRINGEMENT,
MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You are solely responsible
for determining the appropriateness of using or redistributing the Work and
assume any risks associated with Your exercise of permissions under this
License.
8. Limitation of Liability. In no event and under no legal theory, whether in
tort (including negligence), contract, or otherwise,
unless required by applicable law (such as deliberate and grossly negligent
acts) or agreed to in writing, shall any Contributor be liable to You for
damages, including any direct, indirect, special, incidental, or consequential
damages of any character arising as a result of this License or out of the use
or inability to use the Work (including but not limited to damages for loss of
goodwill, work stoppage, computer failure or malfunction, or any and all other
commercial damages or losses), even if such Contributor has been advised of the
possibility of such damages.
9. Accepting Warranty or Additional Liability. While redistributing the Work or
Derivative Works thereof, You may choose to offer, and charge a fee for,
acceptance of support, warranty, indemnity, or other liability obligations
and/or rights consistent with this License. However, in accepting such
obligations, You may act only on Your own behalf and on Your sole
responsibility, not on behalf of any other Contributor, and only if You agree to
indemnify, defend, and hold each Contributor harmless for any liability incurred
by, or claims asserted against, such Contributor by reason of your accepting any
such warranty or additional liability.
END OF TERMS AND CONDITIONS
APPENDIX: How to apply the Apache License to your work.
To apply the Apache License to your work, attach the following boilerplate
notice, with the fields enclosed by brackets "[]"
replaced with your own identifying information. (Don't include the brackets!)
The text should be enclosed in the appropriate
comment syntax for the file format. We also recommend that a file or class name
and description of purpose be included on the same "printed page" as
the copyright notice for easier identification within third-party archives.
Copyright [yyyy] [name of copyright owner]
Licensed under the Apache License, Version 2.0 (the "License"); you
may not use this file except in compliance with the License. You may obtain a
copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software distributed
under the License is distributed on an "AS IS" BASIS, WITHOUT
WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License
for the specific language governing permissions and limitations under the
License.
ii.) IBM WebSphere Product Center includes the following software that was
licensed by IBM from Scott Hudson, Frank Flannery and C. Scott Ananian under the
following terms and conditions:
- Cup Parser Generator v0.10k
CUP Parser Generator Copyright Notice, License, and Disclaimer
Copyright 1996-1999 by Scott Hudson, Frank Flannery, C. Scott Ananian
Permission to use, copy, modify, and distribute this software and its
documentation for any purpose and without fee is hereby granted, provided that
the above copyright notice appear in all copies and that both the copyright
notice and this permission notice and warranty disclaimer appear in supporting
documentation, and that the names of the authors or their employers not be used
in advertising or publicity pertaining to distribution of the software without
specific, written prior permission. The authors and their employers disclaim all
warranties with regard to this software, including all implied warranties of
merchantability and fitness. In no event shall the authors or their employers be
liable for any special, indirect or consequential damages or any damages
whatsoever resulting from loss of use, data or profits, whether in an action of
contract, negligence or other tortious action, arising out of or in connection
with the use or performance of this software.
iii.) IBM WebSphere Product Center includes the following software that was
licensed by IBM from Elliot Joel Berk and C. Scott Ananian under the following
terms and conditions:
- JLex v1.2.6
JLEX COPYRIGHT NOTICE, LICENSE AND DISCLAIMER.
Copyright 1996-2003 by Elliot Joel Berk and C. Scott Ananian
Permission to use, copy, modify, and distribute this software and its
documentation for any purpose and without fee is hereby granted, provided that
the above copyright notice appear in all copies and that both the copyright
notice and this permission notice and warranty disclaimer appear in supporting
documentation, and that the name of the authors or their employers not be used
in advertising or publicity pertaining to distribution of the software without
specific, written prior permission. The authors and their employers disclaim all
warranties with regard to this software, including all implied warranties of
merchantability and fitness. In no event shall the authors or their employers be
liable for any special, indirect or consequential damages or any damages
whatsoever resulting from loss of use, data or profits, whether in an action of
contract, negligence or other tortious action, arising out of or in connection
with the use or performance of this software. Java is a trademark of Sun
Microsystems, Inc. References to the Java programming language in relation to
JLex are not meant to imply that Sun endorses this product.
iv.) IBM WebSphere Product Center includes the following software that was
licensed by IBM from International Business Machines Corporation and others
under the following terms and conditions:
- ICU4J v2.8
ICU License - ICU 1.8.1 and later
COPYRIGHT AND PERMISSION NOTICE
Copyright (c) 1995-2003 International Business Machines Corporation and others
All rights reserved.
Permission is hereby granted, free of charge, to any person obtaining a copy of
this software and associated documentation files (the "Software"), to
deal in the Software without restriction, including without limitation the
rights to use, copy, modify, merge, publish, distribute, and/or sell copies of
the Software, and to permit persons to whom the Software is furnished to do so,
provided that the above copyright notice(s) and this permission notice appear in
all copies of the Software and that both the above copyright notice(s) and this
permission notice appear in supporting documentation.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF THIRD
PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS
NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL
DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING
OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
Except as contained in this notice, the name of a copyright holder shall not be
used in advertising or otherwise to promote the sale, use or other dealings in
this Software without prior written authorization of the copyright holder.
-----------------------------------------------------------------------------
All trademarks and registered trademarks mentioned herein are the property of
their respective owners.