【Apex】【Salesfoece】Salesforce 的 package.xml 文件

Salesforce 的 package.xml 文件

 

package.xml文件

在部署元数据(Metadata)的时候,package.xml是很关键的一个文件。此文件中定义了一个XML格式的列表,其中包含了各个元数据组件的定义。

Metadata API中的deploy()和retrieve()函数可以用来操作其中的内容。

组件

每个组件都是一个元数据类型的一个实例,比如:“CustomObject”是一种元数据类型,代表了自定义对象,而名为“ExampleObject__c”的自定义对象是此元数据类型的一个实例。

package.xml文件组成元素

一个package.xml文件的范例如下:

<?xml version="1.0" encoding="UTF-8"?>
<Package xmlns="http://soap.sforce.com/2006/04/metadata">
    <types>
        <members>MyCustomObject__c</members>
        <name>CustomObject</name>
    </types>
    <types>
        <members>*</members>
        <name>CustomTab</name>
    </types>
    <types>
        <members>Standard</members>
        <name>Profile</name>
    </types>
    <version>40.0</version>
</Package>

package.xml文件主要包括以下几个元素:

  • fullName:定义了此package的名字,如果没有,则表示其中包含的内容是未管理的包

  • types:定义了元数据的类型和其包含的实例。一个package.xml文件可以包含多个 types 标签。types 标签是此文件的核心部分

  • name:每个 types 标签包含一个,定义了此元数据类型的名字

  • members:包含在 types 标签中,定义了组件的名字,可以有很多个,也可以直接用通配符(*符号)来代表所有的组件

  • version:定义了API的版本

package.xml文件示例

标准对象(Standard Objects)

<?xml version="1.0" encoding="UTF-8"?>
<Package xmlns="http://soap.sforce.com/2006/04/metadata">
    <types>
        <members>Account</members>
        <name>CustomObject</name>
    </types>
<version>40.0</version>
</Package>

在上面的示例中,包含了标准对象Account的定义。需要注意的是:

  • 标准对象所在的 types 标签中的 name 标签的值是“CustomObject”
  • 对于标准对象,在 members 标签中必须列出名字,不能用通配符(*符号)代替

自定义对象(Custom Objects)

<?xml version="1.0" encoding="UTF-8"?>
<Package xmlns="http://soap.sforce.com/2006/04/metadata">
    <types>
        <members>*</members>
        <name>CustomObject</name>
    </types>
<version>40.0</version>
</Package>

在上面的示例中,在 members 标签中用通配符(*符号)表示包括所有的自定义对象(不包括任何标准对象)。

标准列表值(Standard Picklist Fields)

<?xml version="1.0" encoding="UTF-8"?>
<Package xmlns="http://soap.sforce.com/2006/04/metadata">
    <types>
        <members>Industry</members>
        <name>StandardValueSet</name>
    </types>
<version>40.0</version>
</Package>

对于版本是38.0及以后的API,当表示标准列表值的时候,可以直接将 types 标签中的 name 标签值设定为“StandardValueSet”,而不需要声明它属于哪个对象。

注意,members 标签中的值是区分大小写的。

对于版本是37.0及更早的API,types 标签中不能用这种表示方法,而是像下面的例子那样:

<?xml version="1.0" encoding="UTF-8"?>
<Package xmlns="http://soap.sforce.com/2006/04/metadata">
    <types>
        <members>Account.Industry</members>
        <name>CustomField</name>
    </types>
<version>37.0</version>
</Package>

这里,members 标签中的值是不区分大小写的。

字段(Fields)

<?xml version="1.0" encoding="UTF-8"?>
<Package xmlns="http://soap.sforce.com/2006/04/metadata">
    <types>
        <members>MyCustomObject__c.MyCustomField__c</members>
        <name>CustomField</name>
    </types>
    <types>
        <members>Account.SLA__c</members>
        <members>Account.Phone</members>
        <name>CustomField</name>
    </types>
<version>40.0</version>
</Package>

在上面的示例中,两个 types 标签分别包含了标准对象的字段和自定义对象的字段。注意,name 标签中的值都是“CustomField”。

对象的权限

<objectPermissions>
    <allowCreate>true</allowCreate>
    <allowDelete>true</allowDelete>
    <allowEdit>true</allowEdit>
    <allowRead>true</allowRead>
    <viewAllRecords>false</viewAllRecords>
    <modifyAllRecords>false</modifyAllRecords>
    <object>MyCustomObject__c</object>
</objectPermissions>

当需要对某一个对象设定权限时,使用 objectPermissions 标签,在其中用 allowCreate 等标签定义各种权限。

其他的还有字段的权限等,用 fieldPermissions 等标签表示。

posted @ 2020-11-28 21:13  猪猪宝丫  阅读(191)  评论(0编辑  收藏  举报