`

ATG-Repository

阅读更多
一:定义文件的相关tag和属性

Item-descriptor:

每一个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-typelist, 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>

=================================================

Derivation

它的父节点是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的属性。这个属性用于指定使用哪一个expressionproperty. 上述例子就是firstNonNull,如果第一个不为空,就使用empSpendingLimit.否则就使用department这个itemdeptSpendingLimit属性。

而且这个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 Guide

    在ATG电子商务平台的核心模型中,仓库(Repository)扮演着极为重要的角色。 ### 仓库概念详解 #### 1. 仓库简介 在ATG中,**仓库(Repository)**是一个存储各种业务对象的数据层组件。这些对象可以是产品信息、用户...

    ATG-Commerce-Product-Overview.pptx

    ATG-Commerce-Product-Overview

    atg-resolver-1.0-sources.jar

    atg-resolver-1.0-sources.jar

    atg-resolver-1.0.jar

    atg-resolver-1.0.jar

    恩拉夫ENRAF854ATG-部件及错误代码.doc

    恩拉夫ENRAF854ATG-部件及错误代码doc,恩拉夫ENRAF854ATG-部件及错误代码

    ATG - Program Guide

    ### ATG电子商务编程指南核心知识点解析 #### 一、引言与版权说明 《ATG - Program Guide》作为ATG电子商务平台的编程指南,旨在为开发者提供深入理解及操作ATG电子商务系统的全面指导。该文档版本为10.0.1,由Art...

    ATG - Commerce Guide

    ### ATG Commerce编程指南知识点解析 #### 一、概述 **ATG Commerce**是一款由Art Technology Group(ATG)开发的电子商务平台解决方案。该平台旨在为开发者提供一系列强大的工具和服务,帮助他们构建高度定制化的...

    About Oracle Applications Technology 11i.ATG-PF.H Rollup 4 (RUP

    Oracle Applications Technology 11i.ATG-PF.H Rollup 4,简称为RUP4,是Oracle公司针对其11i版本应用技术的一个重要更新包。这个更新旨在提供一个全面且最新的描述,包含了从Oracle Applications Technology 11i....

    ATG - Page Dev Guide

    ### ATG电子商务平台页面开发指南知识点解析 #### 一、简介 《ATG Page Developer’s Guide》是一份针对ATG电子商务平台的页面开发者指南文档,该文档版本为10.0.1,由Art Technology Group, Inc.(简称ATG)出版。...

    ENRAF854ATG--液位计项目.doc

    ENRAF854ATG是一款液位计,主要用于监测和控制液体容器的液位。该文档详细介绍了与854ATG液位计相关的项目、命令类型以及其功能。液位计的操作涉及到多个指令和参数,这些参数在不同的保护等级下被管理和访问,以...

    Uber-ATG-Self-Driving-Safety-Report2018.zip

    《Uber ATG 自动驾驶安全报告2018》是一份深入探讨Uber先进技术集团(Advanced Technologies Group,简称ATG)在自动驾驶技术研发与测试过程中的安全实践、策略与挑战的重要文档。该报告详细揭示了公司在2018年针对...

    ATG-dynadmin-utils的「atg-dynadmin-utils」-crx插件

    ATG Dyn管理页面的附加组件。 该插件提供的功能可帮助您...当前,您将获得存储库页面:*按ID打印项目*按ID打印项目(URL版本)*查询项目*添加项目*使高速缓存热键无效*存储库定义预览Nucleus页面:*组件搜索自动完成...

    ATG - Personalization Guide

    ### ATG个性化编程指南 #### 一、简介 ATG(Art Technology Group)是一家领先的电子商务解决方案提供商,专注于为企业提供高效、灵活的电商平台构建工具。在众多ATG的产品中,个性化模块是其一大特色之一,它能够...

    Uber-ATG-Self-Driving-Safety-Report2018.pdf

    《Uber自动驾驶安全报告》是Uber Advanced Technologies Group (ATG)发布的一份重要文件,旨在阐述其在自动驾驶领域的安全原则和方法。这份报告于2018年发布,展示了Uber对于推动安全、高效、可负担的未来移动出行的...

    About Oracle Applications Technology ATG-PF.H Rollup 6

    About Oracle Applications Technology ATG_PF.H Rollup 6

    ATG-CRS-Turnkey:ATG CRS 快速设置指南

    ATG-CRS-Turnkey 是一个专为快速配置和部署ATG (Oracle Commerce) 的Customer Relationship Service (CRS) 系统的解决方案。这个项目旨在帮助用户在短时间内搭建起一个功能完备的ATG CRS环境,从而减少初始设置的...

    ATG-PS-Functions:野心技术的常用功能

    ATG-PS功能雄心技术常用的Powershell功能我们正在使用基于功能的系统。 有两种加载会话功能的方法:1)Powershell方法运行任: $progressPreference = ' silentlyContinue ' # If running from a LogMeIn ...

    atg-dynadmin-utils-crx插件

    语言:English ATG Dyn Admin页面的附件 ...当前,您将获得存储库页面:*按ID打印项目*按ID打印项目(URL版本)*查询项目*添加项目*使高速缓存热键无效*存储库定义预览Nucleus页面:*组件搜索自动完成...

    ATG-Captcha-internshala博客

    在这个“ATG-Captcha-internshala博客”中,我们可以推测内容可能涉及如何在ATG系统中集成Captcha服务,可能是实习生在实习期间完成的一个项目。以下是对这个主题的详细解释: 1. **ATG平台介绍**:ATG是Autonomy...

    atg-tdd:使用Oracle Web Commerce(ATG)简化TDD的框架

    atg-tdd 使用Oracle Web Commerce(ATG)简化TDD的框架 #Idea我认为生产代码应该在可行的情况下包含在单元测试中。 拥有单元测试套件有一个巨大的好处,不断验证我们的代码是否按预期工作。 不仅在初始实施阶段,...

Global site tag (gtag.js) - Google Analytics