了解架构结构 schema-structure
架构的基本结构如下所述。
数据架构 data-schema
对于<srcschema>
,结构如下:
<srcSchema>
<enumeration>
... //definition of enumerations
</enumeration>
<element> //definition of the root <element> (mandatory)
<compute-string/> //definition of a compute-string
<dbindex>
... //definition of indexes
</dbindex>
<key>
... //definition of keys
</key>
<sysFilter>
... //definition of filters
</sysFilter>
<attribute>
... //definition of fields
</attribute>
<element> //definition of sub-<element>
<attribute> //(collection, links or XML)
... //and additional fields
</attribute>
...
</element>
</element>
<methods> //definition of SOAP methods
<method>
...
</method>
...
</methods>
</srcSchema>
数据架构的XML文档必须包含具有 名称 和 命名空间 属性的 <srcschema>
根元素,才能填充架构名称及其命名空间。
<srcSchema name="schema_name" namespace="namespace">
...
</srcSchema>
让我们使用以下XML内容来说明数据模式的结构:
<recipient email="John.doe@aol.com" created="2009/03/12" gender="1">
<location city="London"/>
</recipient>
及其相应的数据架构:
<srcSchema name="recipient" namespace="cus">
<element name="recipient">
<attribute name="email"/>
<attribute name="created"/>
<attribute name="gender"/>
<element name="location">
<attribute name="city"/>
</element>
</element>
</srcSchema>
说明 description
架构的入口点是其主元素。 此插件易于识别,因为它与架构具有相同的名称,并且应该是根元素的子项。 内容的描述以此元素开头。
在本例中,主元素由以下行表示:
<element name="recipient">
主元素后面的 <attribute>
和 <element>
元素用于定义XML结构中数据项的位置和名称。
在我们的示例模式中,这些规则包括:
<attribute name="email"/>
<attribute name="created"/>
<attribute name="gender"/>
<element name="location">
<attribute name="city"/>
</element>
以下规则适用:
-
每个
<element>
和<attribute>
必须通过 name 属性用名称标识。note important IMPORTANT 元素的名称应简洁,最好是英文,并且仅包括XML命名规则中允许的字符。 -
只有
<element>
个元素可以在XML结构中包含<attribute>
个元素和<element>
个元素。 -
<attribute>
元素在<element>
中必须具有唯一的名称。 -
建议在多行数据字符串中使用
<elements>
。
数据类型 data-types
数据类型是通过 <attribute>
和 <element>
元素中的 type 属性输入的。
<attribute>
元素和<element>
元素的描述中提供了详细列表。
如果未填充此属性,则 string 是默认的数据类型,除非该元素包含子元素。 如果是,则仅将其用于分层构造元素(示例中为 <location>
个元素)。
架构支持以下数据类型:
-
字符串:字符串。 示例:名字、城镇等。
可以通过 length 属性指定大小(可选,默认值“255”)。
-
布尔值:布尔字段。 可能值的示例:true/false、0/1、yes/no等。
-
字节,短,长:整数(1字节、2字节、4字节)。 示例:年龄、帐号、点数等。
-
double:双精度浮点数。 示例:价格、费率等。
-
日期,日期时间:日期和日期+时间。 示例:出生日期、购买日期等。
-
datetimenotz:没有时区数据的日期+时间。
-
时间跨度:持续时间。 例如:资历。
-
备注:长文本字段(多行)。 示例:描述、评论等。
-
uuid:“uniqueidentifier”字段支持GUID(仅在Microsoft SQL Server中受支持)。
note note NOTE 若要在Microsoft SQL Server以外的RDBMS中包含 uuid 字段,必须添加 the newuuid()
函数并使用其默认值完成该函数。
以下是输入的类型的模式示例:
<srcSchema name="recipient" namespace="cus">
<element name="recipient">
<attribute name="email" type="string" length="80"/>
<attribute name="created" type="datetime"/>
<attribute name="gender" type="byte"/>
<element name="location">
<attribute name="city" type="string" length="50"/>
</element>
</element>
</srcSchema>
映射Adobe Campaign/DBMS数据的类型 mapping-the-types-of-adobe-campaign-dbms-data
下表列出了Adobe Campaign为各种数据库管理系统生成的数据类型的映射。
属性 properties
可以使用各种属性扩充数据架构的 <elements>
和 <attributes>
元素。 您可以填充标签以描述当前元素。
标签和描述 labels-and-descriptions
-
标签 属性允许您输入简短描述。
note note NOTE 标签与实例的当前语言关联。 示例:
code language-sql <attribute name="email" type="string" length="80" label="Email"/>
标签显示在Adobe Campaign客户端控制台输入表单中:
-
desc 属性允许您输入较长的描述。
该描述将显示在Adobe Campaign客户端控制台主窗口状态栏的输入表单中。
note note NOTE 该描述与实例的当前语言相关联。 示例:
code language-sql <attribute name="email" type="string" length="80" label="Email" desc="Email of recipient"/>
默认值 default-values
使用 default 属性定义在创建内容时返回默认值的表达式。
该值必须是符合XPath语言的表达式。 有关详细信息,请参阅使用XPath引用。
示例:
-
当前日期: default="GetDate()"
-
计数器: default="'FRM'+CounterValue('myCounter')"
在此示例中,默认值是使用字符串的串连来构造的,并使用免费计数器名称调用 CounterValue 函数。 每次插入时,返回的数字将递增1。
note note NOTE 在Adobe Campaign客户端控制台中,浏览到资源管理器的 Administration > Counters 文件夹以管理计数器。
要将默认值链接到字段,您可以使用<default>
或<sqldefault>
字段。
<default>
:允许您在创建实体时使用默认值预填充字段。 该值将不会是默认的SQL值。
<sqldefault>
:允许您在创建字段时添加值。 此值显示为SQL结果。 在架构更新期间,此值仅影响新记录。
明细列表 enumerations
打开明细列表 free-enumeration
userEnum 属性允许您定义一个打开的枚举,以存储和显示通过此字段输入的值。
语法如下:
userEnum="name of enumeration"
这些值显示在输入表单的下拉列表中:
设置明细列表 set-enumeration
枚举 属性允许您定义预先知道可能值的列表时使用的固定枚举。
enum 属性引用了在主元素之外的架构中填充的枚举类的定义。
枚举允许用户从下拉列表中选择一个值,而不是在常规输入字段中输入值:
数据架构中的枚举声明示例:
<enumeration name="gender" basetype="byte" default="0">
<value name="unknown" label="Not specified" value="0"/>
<value name="male" label="male" value="1"/>
<value name="female" label="female" value="2"/>
</enumeration>
枚举通过 <enumeration>
元素在主元素之外声明。
枚举属性如下:
- baseType:与值关联的数据类型
- 标签:枚举的说明
- name:枚举的名称
- 默认值:枚举的默认值
枚举值在 <value>
元素中具有以下属性:
- name:内部存储的值的名称
- 标签:图形界面中显示的标签
dbenum枚举 dbenum-enumeration
*dbenum 属性允许您定义属性与 enum 属性的属性相似的枚举。
但是,name 属性不会在内部存储该值,它存储了一个代码,该代码允许您在不修改相关表架构的情况下扩展这些表。
例如,此枚举用于指定营销活动的性质。
示例 example
以下是填充了属性的架构示例:
<srcSchema name="recipient" namespace="cus">
<enumeration name="gender" basetype="byte">
<value name="unknown" label="Not specified" value="0"/>
<value name="male" label="male" value="1"/>
<value name="female" label="female" value="2"/>
</enumeration>
<element name="recipient">
<attribute name="email" type="string" length="80" label="Email" desc="Email of recipient"/>
<attribute name="created" type="datetime" label="Date of creation" default="GetDate()"/>
<attribute name="gender" type="byte" label="gender" enum="gender"/>
<element name="location" label="Location">
<attribute name="city" type="string" length="50" label="City" userEnum="city"/>
</element>
</element>
</srcSchema>
集合 collections
集合是具有相同名称和相同层次级别的元素的列表。
值为“true”的 unbound 属性允许您填充集合元素。
示例:架构中 <group>
集合元素的定义。
<element name="group" unbound="true" label="List of groups">
<attribute name="label" type="string" label="Label"/>
</element>
使用XML内容的投影:
<group label="Group1"/>
<group label="Group2"/>
使用XPath引用 referencing-with-xpath
XPath语言在Adobe Campaign中用于引用属于数据架构的元素或属性。
XPath是一种语法,允许您在XML文档的树中查找节点。
元素由名称指定,属性由名称指定,名称前面加有字符“@”。
示例:
- @email:选择电子邮件,
- location/@city:选择
<location>
元素下的“city”属性 - …/@email:从当前元素的父元素中选择电子邮件地址
- 组
[1]/@label
:选择作为第一个<group>
集合元素的子项的“label”属性 - 组
[@label='test1']
:选择作为<group>
元素的子项且包含值“test1”的“label”属性
- 位置/@city 无效;请使用**
[location/@city]
** [@email]
和**@email**是等效的
也可以定义复杂的表达式,例如以下算术运算:
- @gender+1:将1添加到 性别 属性的内容中,
- @email + '('+@created+')':构造字符串的方法是采用添加到创建日期的电子邮件地址的值在括号之间(对于字符串类型,将常量放在引号中)。
在表达式中添加了高级函数,以丰富此语言的潜力。
您可以通过Adobe Campaign客户端控制台中的任意表达式编辑器访问可用函数的列表:
示例:
- GetDate():返回当前日期
- 年(@created):返回“已创建”属性中包含的日期的年份
- GetEmailDomain(@email):返回电子邮件地址的域
通过计算字符串构建字符串 building-a-string-via-the-compute-string
计算字符串 是用于构造表示与架构关联的表中记录的字符串的XPath表达式。 计算字符串 主要用于图形界面中显示选定记录的标签。
计算字符串 通过数据架构主元素下的 <compute-string>
元素定义。 expr 属性包含用于计算显示的XPath表达式。
示例:收件人表的计算字符串。
<srcSchema name="recipient" namespace="nms">
<element name="recipient">
<compute-string expr="@lastName + ' ' + @firstName +' (' + @email + ')' "/>
...
</element>
</srcSchema>
收件人的计算字符串的结果: Doe John (john.doe@aol.com)