package.xml文件
在部署元数据(Metadata)的时候,package.xml是很关键的一个文件。此文件中定义了一个XML格式的列表,其中包含了各个元数据组件的定义。
Metadata API中的deploy()和retrieve()函数可以用来操作其中的内容。
组件
每个组件都是一个元数据类型的一个实例,比如:“CustomObject”是一种元数据类型,代表了自定义对象,而名为“ExampleObject__c”的自定义对象是此元数据类型的一个实例。
package.xml文件组成元素
一个package.xml文件的范例如下:
MyCustomObject__c
CustomObject
*
CustomTab
Standard
Profile
40.0
package.xml文件主要包括以下几个元素:
fullName:定义了此package的名字,如果没有,则表示其中包含的内容是未管理的包
types:定义了元数据的类型和其包含的实例。一个package.xml文件可以包含多个 types 标签。types 标签是此文件的核心部分
name:每个 types 标签包含一个,定义了此元数据类型的名字
members:包含在 types 标签中,定义了组件的名字,可以有很多个,也可以直接用通配符(*符号)来代表所有的组件
version:定义了API的版本
package.xml文件示例
标准对象(Standard Objects)
Account
CustomObject
40.0
在上面的示例中,包含了标准对象Account的定义。需要注意的是:
- 标准对象所在的 types 标签中的 name 标签的值是“CustomObject”
- 对于标准对象,在 members 标签中必须列出名字,不能用通配符(*符号)代替
自定义对象(Custom Objects)
*
CustomObject
40.0
在上面的示例中,在 members 标签中用通配符(*符号)表示包括所有的自定义对象(不包括任何标准对象)。
标准列表值(Standard Picklist Fields)
Industry
StandardValueSet
40.0
对于版本是38.0及以后的API,当表示标准列表值的时候,可以直接将 types 标签中的 name 标签值设定为“StandardValueSet”,而不需要声明它属于哪个对象。
注意,members 标签中的值是区分大小写的。
对于版本是37.0及更早的API,types 标签中不能用这种表示方法,而是像下面的例子那样:
Account.Industry
CustomField
37.0
这里,members 标签中的值是不区分大小写的。
字段(Fields)
MyCustomObject__c.MyCustomField__c
CustomField
Account.SLA__c
Account.Phone
CustomField
40.0
在上面的示例中,两个 types 标签分别包含了标准对象的字段和自定义对象的字段。注意,name 标签中的值都是“CustomField”。
对象的权限
true
true
true
true
false
false
当需要对某一个对象设定权限时,使用 objectPermissions 标签,在其中用 allowCreate 等标签定义各种权限。
其他的还有字段的权限等,用 fieldPermissions 等标签表示。