一:定义文件的相关tag和属性
每一个Repository Item 类型都是在<item-descriptor> 下描述的。
Name:在整个定义文件中都是唯一的。
Cache-mode: Item-descriptor 级别默认就是simple .如果item某一个具体的属性不想使用cache。可以设置为disable,这样会覆盖Item-descriptor的缓cache-model。
<item-descriptor name="user" cache-mode="simple">
<table name="dps_user">
<property name="password" cache-mode="
disabled">
...
</table>
...
</item-descriptor>
但是希望小心使用disable。因为去取这个item的时候,都回去数据库查询。那么会显著的降低应用的性能。
Simple:每一个server维护属于自己的内存中的缓存。
Lock: 这个缓存模式适用于有多台server的应用。解决多台server同时update一个item。
======================
他需要有几个先决条件:
1 Item-descriptor的查询缓存必须disable,通过设置query-cache-size=0
2 必须配置ClientLockManager component。
=====================
我们可以设置缓存到期时间
Item-expire-timeout: item缓存到期时间
Query-expire-timeout: 查询缓存到期时间
还有分布式缓存,这个暂不予介绍。
Default:缺省值是false.如果设为true,那么就是这repository的默认的item-descriptor.
Display-name;一般用在ACC.
Id-separator: id的分隔符,默认是:。适用于多个列作为id.
Item-cache-size: 缓存的item的数量。如果超过设定值。那么就会把最近访问较少的额item删除掉。
Sub-type-value: 如果这个item是一个sub-type.那么需要指定这个属性。就是自己的值。
Super-type:并且需要指定他所继承的父类。
Property:如果在item-descriptor tag下直接使用Property,那么这个属性是瞬时属性,既不会持久化到数据库。但是可读,可写不能查询。
==========================================
Table
Name:表名
Id-column-names:数据库表的id
Type:指定表的类型primary/auxiliary/multi
==========================================
Property
Name: 指定属性名字。
Cache-mode:可以重载Parent级别的cache-mode.
Cascade:级联。insert/update/delete.
Category:对相似的属性进行分组。一般适用于BCC.使用
propertySortPriority去指定这个组属性的显示顺序。
<property category="Basics" name="firstName"
data-type="string" display-name="First name">
<attribute name="propertySortPriority" value="-3"/>
</property>
<property category="Basics" name="middleName"
data-type="string“ display-name="Middle name">
<attribute name="propertySortPriority" value="-2"/>
</property>
<property category="Basics" name="lastName"
data-type="string" display-name="Last name">
<attribute name="propertySortPriority" value="-1"/>
</property>
Column-name: 对应的数据库的表名。
Component-data-type:如果一个属性的数据类型是list, array, Set, map . 那么它必须有一个component-data 去指定的这个数据类型的基本数据类型。
<property name=”xxx” data-type=”list” component-data=”int”>
Component-item-data: 如果data-type为list, array,
Map, set ,他们的基本数据类型是item-descriptor. Component-item-data 它就是用来指定这个item的类型。而且这个集合所装的item类型必须一致。
Item-type: 就是直接对另外一个item的引用。
Repository: 指定这个属性所在的repository 定义文件
<property name="siteGroup"
column-name="SITE_ID" category="NGP"
item-type="enterpriseSiteGroup" required="true"
repository="/atg/multisite/SiteRepository"
display-name="Enterprise Site Group" >
<attribute value="11" name="propertySortPriority"/>
<attribute name="uiStringIdType"
value="/atg/multisite/SiteRepository:enterpriseSiteGroup"/>
</property>
=================================================
它的父节点是property。子节点是expression.
这个节点或者标签主要用于派生属性。什么意思呢?就是从其他re
Pository item 或者 property衍生出一些属性值。
他有几个要求:
1 派生属性必须是transient 属性。
2 通过<derivation >定义,内部可以包含一个或者多个<ex-
Pression>
那么<expression>里面有装的是property 的name。
<item-descriptor name="employee">
<property name="department" item-type="department"/>
<property name="empSpendingLimit" data-type="int"/>
<property name="spendingLimit" writable="false">
<derivation method=“firstNonNull”>
<expression>empSpendingLimit</expression>
<expression>department.deptSpendingLimit
</expression>
</derivation>
</property>
</item-descriptor>
<item-descriptor name="department">
...
<property name="deptSpendingLimit" data-type="int"/>
</item-descriptor>
比如以上的例子引用的就是某一个item的属性和某一个自己item的属性。并且使用哪一个并不是随意决定的,在derivation有一个method的属性。这个属性用于指定使用哪一个expression的property. 上述例子就是firstNonNull,如果第一个不为空,就使用empSpendingLimit.否则就使用department这个item的deptSpendingLimit属性。
而且这个method用户可以自己定制。使用user-method就可以完成定制。
============================================
Option
没有子节点,只有父节点property.
使用情况:当某一个属性的数据类型是枚举,那么枚举的可能的值就需要用到<option>
<property name="gender" data-type="enumerated">
<option value="male" code="0"/>
<option value="female" code="1"/>
</property>
===============================================
Attribute
没有子节点只有父节点。可能的父节点包括item-descriptor,
Property, table
它的作用就是以键值对的形式为属性描述器提供一些参数。这些属性描述器可以是OOTB,也可以是我们自己定制的。
=============================================
Name-query
是item-descriptor的子节点,有<rql-query>和<sql-
Query>子节点。
<rql-query>父节点是<name-query>子节点是rql-filter
Or <query-name> or <rql>
<rql>没有子节点。他所包装的内容就是一个rql的查询语句。
<named-query>
<rql-query>
<query-name>staticPageBySeoName</query-name>
<rql>seoName EQUALS IGNORECASE ?0 AND sites includes ?1</rql>
</rql-query>
</named-query>
Query-name指的就是这个rql命名查询的名称。Rql就是查询语句。
如果我们想直接在dyn/admin下面直接查询rql.我们可以在<query-
Items>下面直接使用这个rql and 提供相关的参数。
Sql-query同样是这样的用法,只不过需要提供的是sql语句。
======================================================
Add-item,update-item,remove-item,print-item,query-items等等这些我们经常用于dyn/admin。
item-descriptor你所需要添加或者修改或者删除或者查询的item.
Id 你这个item所对应的repository 的 id.
子标签包括set-property.
二:用户自定义属性类型
首先,我们必须明确,这个属性是不是需要持久化到数据库。
其次,我们需要创建一个Java类去描述property.根据属性是否持久化到数据库。我们需要继承的Java class也不一样。
如果需要持久化到数据库:
Java class 需要继承GSAPropertyDescriptor
如果不需要持久化到数据库,即临时属性,那么
Java class 需要继承RepositoryPropertyDescriptor
我们需要在这个类中重载getPropertyValue()和setPropertyValue()。我们可以在这个处理类去定义一些属性。这些属性的属性值我们可以在xml文件中通过<attribute name=”” value=””/>
传进来。比如
<property name="SEOName" property-type="com.ngp.commerce.
repository.NGPSEOFriendlyPropertyDescriptor"
writable="false" data-type="string">
<attribute name="basePropertyName" value="displayName"/>
<attribute name="uiwritable" value="false" />
</property>
Writable=”false” 表示不可写。但是可以读。
Uiwritable=”false” 表示不能通过ACC去修改或者设置值。
最后,去Repository 定义文件去set这个property-type
为你书写的子类。
相关推荐
在ATG电子商务平台的核心模型中,仓库(Repository)扮演着极为重要的角色。 ### 仓库概念详解 #### 1. 仓库简介 在ATG中,**仓库(Repository)**是一个存储各种业务对象的数据层组件。这些对象可以是产品信息、用户...
ATG Repository Definition Editor是一款专为ATG(Oracle ATG Commerce)设计的开源工具,它极大地简化了SQL存储库定义的创建和编辑过程。这个模块提供了一个直观的用户界面,允许开发者无需深入理解底层XML和DDL...
欢迎使用“ ATG资源库建模器”工具。 每个人都面临在ATG中创建存储库xml文件的挑战。 在这里,我们提供了一个基于GUI的工具,该工具具有创建新的和修改现有存储库xml文件的功能。 这具有存储库树中每个元素的xml源...
Repository Beans是用于将ATG存储库抽象为POJO的工具包。 通过使用Repository Bean,可以针对ATG Repository开发,但保留针对POJO进行编码的好处。
### ATG介绍(中文) #### 一、B2B与B2C ATG系统支持B2B(Business to Business,企业对企业)和B2C(Business to Consumer,企业对消费者)两种电子商务模式。在B2B模式下,ATG为批发商、分销商等提供专业的交易...
标题与描述均提到了“ATG Merchandise 功能详解”,这指向了Oracle ATG Web Commerce平台中的Merchandising功能模块。此模块是为电子商务网站提供强大管理能力的关键组件,旨在提升客户体验、增加业务敏捷性、降低...
### ATG Commerce编程指南知识点解析 #### 一、概述 **ATG Commerce**是一款由Art Technology Group(ATG)开发的电子商务平台解决方案。该平台旨在为开发者提供一系列强大的工具和服务,帮助他们构建高度定制化的...
ATG教程.doc ATG教程.doc ATG教程.doc ATG教程.doc
ENRAF 854ATG1伺服液位计中文资料 ENRAF 854ATG1伺服液位计是一款高级的液位计,用于测量液体的高度和密度。该设备具有高精度和高可靠性,广泛应用于石油、化工、能源、食品等行业。 液位测量的原理 液位测量是...
2. ATG公司及其产品的商标:文档中提到的ATG公司以及它的多个软件产品,例如ATG Dynamo Application Server、ATG Commerce、ATG Content Administration等。了解这些产品可以帮助IT专业人士认识到这些技术在市场上的...
### ATG电子商务编程指南核心知识点解析 #### 一、引言与版权说明 《ATG - Program Guide》作为ATG电子商务平台的编程指南,旨在为开发者提供深入理解及操作ATG电子商务系统的全面指导。该文档版本为10.0.1,由Art...
在本文中,我们将深入探讨如何在Linux环境下安装ATG 11.1版本。ATG(Application Technology Generator)是Oracle公司的一个电子商务平台,用于构建高度个性化的在线购物体验。以下是一些关键步骤和配置要点: 首先...
ATG开发学习
国外ATG网络进展及余割平方波束ATG地面天线设计 ATG(Air to Ground,地空通信)系统是近年来备受关注的一种航空通信技术,以其高速、低延迟、低成本等特点,逐渐取代卫星通信,成为航空行业的新兴趋势。欧美已经...
ATG(Autonomous Trading Group)是Oracle公司的一款先进的电子商务平台,专为大型企业和在线零售商提供全面的电子商务解决方案。ATG 10.2 版本是这个平台的一个重要迭代,它包含了众多增强功能和改进,旨在提升用户...