42 KiB
com.sforce.soap.partner 模块说明
概述
com.sforce.soap.partner 模块是 Salesforce Partner API 的 Java 客户端实现,提供了与 Salesforce 进行数据交互的 SOAP 接口。Partner API 是一个动态 API,可以访问组织中的任何对象和字段,无需预先定义。
主要功能
1. CRUD 操作
- Create: 创建新记录
- Retrieve: 检索单个记录
- Update: 更新记录
- Delete: 删除记录
- Upsert: 更新或插入记录
- Merge: 合并记录
2. 批量操作
- Create 批量: 批量创建记录
- Update 批量: 批量更新记录
- Delete 批量: 批量删除记录
- Upsert 批量: 批量更新或插入记录
3. 查询功能
- Query: 执行 SOQL 查询
- QueryAll: 查询所有记录(包括已删除的)
- QueryMore: 获取查询结果的下一页
- Search: 执行 SOSL 搜索
4. 描述功能
- DescribeGlobal: 描述所有可用对象
- DescribeSObject: 描述特定对象
- DescribeSObjects: 描述多个对象
- DescribeLayout: 描述对象布局
- DescribeTabs: 描述标签页
- DescribeQuickActions: 描述快速操作
5. 认证和会话
- Login: 用户登录
- Logout: 用户登出
- ChangeOwnPassword: 修改自己的密码
- SessionHeader: 会话头信息
6. 高级功能
- ConvertLead: 转换线索
- EmptyRecycleBin: 清空回收站
- ProcessSubmitRequest: 处理提交请求
- GetUserInfo: 获取用户信息
- GetServerTimestamp: 获取服务器时间戳
核心类
Connector
作用: Partner API 的连接工厂类,负责创建 PartnerConnection 实例。
主要功能:
- 创建 PartnerConnection 实例
- 管理连接配置
- 设置默认端点
主要方法:
newConnection(String username, String password): 使用用户名和密码创建连接newConnection(ConnectorConfig config): 使用配置对象创建连接
默认端点: https://login.salesforce.com/services/Soap/u/65.0
使用示例:
// 使用用户名和密码创建连接
PartnerConnection connection = Connector.newConnection("username", "password");
// 使用配置对象创建连接
ConnectorConfig config = new ConnectorConfig();
config.setUsername("username");
config.setPassword("password");
config.setAuthEndpoint("https://test.salesforce.com/services/Soap/u/65.0");
PartnerConnection connection = Connector.newConnection(config);
// 登录并获取会话信息
LoginResult loginResult = connection.login("username", "password");
System.out.println("Session ID: " + loginResult.getSessionId());
System.out.println("Server URL: " + loginResult.getServerUrl());
PartnerConnection
作用: Partner API 的核心连接类,负责执行所有 API 操作。
主要功能:
- 执行 CRUD 操作(create、update、delete、upsert、merge)
- 执行查询操作(query、queryAll、queryMore、search)
- 执行描述操作(describeGlobal、describeSObject、describeSObjects)
- 管理会话和头部信息
- 执行高级操作(convertLead、emptyRecycleBin、sendEmail 等)
主要方法:
login(String username, String password): 用户登录logout(): 用户登出query(String queryString): 执行 SOQL 查询queryAll(String queryString): 查询所有记录(包括已删除的)queryMore(String queryLocator): 获取查询结果的下一页search(String searchString): 执行 SOSL 搜索create(SObject[] sObjects): 创建记录update(SObject[] sObjects): 更新记录delete(String[] ids): 删除记录undelete(String[] ids): 恢复已删除的记录upsert(String externalIdFieldName, SObject[] sObjects): 更新或插入记录merge(String id, SObject sObject, String[] duplicateId): 合并记录retrieve(String[] fieldsToRetrieve, String type, String[] ids): 检索单个记录describeGlobal(): 描述所有可用对象describeSObject(String sObjectType): 描述特定对象describeSObjects(String[] sObjectTypes): 描述多个对象convertLead(LeadConvert leadConvert): 转换线索emptyRecycleBin(String[] ids): 清空回收站sendEmail(SingleEmailMessage[] emails): 发送邮件resetPassword(String userId): 重置用户密码setPassword(String userId, String newPassword): 设置用户密码
SOAP 头部设置:
setQueryOptions(int batchSize): 设置查询批处理大小setAssignmentRuleHeader(String assignmentRuleId, Boolean useDefaultRule): 设置分配规则头部setEmailHeader(boolean triggerAutoResponseEmail, boolean triggerOtherEmail, boolean triggerUserEmail): 设置邮件头部setDisableFeedTrackingHeader(boolean disableFeedTracking): 设置禁用 Feed 跟踪头部setAllOrNoneHeader(boolean allOrNone): 设置全有或全无头部setAllowFieldTruncationHeader(boolean allowFieldTruncation): 设置允许字段截断头部setDuplicateRuleHeader(boolean allowSave, boolean includeRecordDetails, boolean runAsCurrentUser): 设置重复规则头部setStreamingEnabledHeader(boolean enableStreaming): 设置流式启用头部
使用示例:
PartnerConnection connection = Connector.newConnection("username", "password");
// 执行查询
QueryResult queryResult = connection.query(
"SELECT Id, Name, Industry FROM Account LIMIT 10"
);
for (SObject record : queryResult.getRecords()) {
System.out.println("Account: " + record.getField("Name"));
}
// 创建记录
SObject account = new SObject();
account.setType("Account");
account.setField("Name", "Acme Corporation");
account.setField("Industry", "Technology");
SaveResult[] results = connection.create(new SObject[]{account});
// 更新记录
account.setId("001xx000003IAC");
account.setField("Name", "Acme Inc.");
connection.update(new SObject[]{account});
// 删除记录
connection.delete(new String[]{"001xx000003IAC"});
// 设置查询选项
connection.setQueryOptions(100);
// 设置全有或全无头部
connection.setAllOrNoneHeader(true);
SObject
作用: 表示 Salesforce 中的任何对象记录,是一个动态对象,继承自 XmlObject。
主要功能:
- 动态字段访问和设置
- 类型安全的字段操作
- 支持所有 CRUD 操作
- 支持字段清空(fieldsToNull)
- 支持子对象关系
主要方法:
getType(): 获取对象类型setType(String type): 设置对象类型getId(): 获取记录 IDsetId(String Id): 设置记录 IDgetField(String name): 获取字段值setField(String name, Object value): 设置字段值getFieldsToNull(): 获取要清空的字段列表setFieldsToNull(String[] fieldsToNull): 设置要清空的字段列表getSObjectField(String name): 获取 SObject 类型的字段值setSObjectField(String name, SObject value): 设置 SObject 类型的字段值addChild(XmlObject child): 添加子对象getChildren(String name): 获取子对象列表
使用示例:
// 创建 Account 记录
SObject account = new SObject();
account.setType("Account");
account.setField("Name", "Acme Corporation");
account.setField("Industry", "Technology");
account.setField("AnnualRevenue", 1000000.00);
// 创建并设置子对象(Contact)
SObject contact = new SObject();
contact.setType("Contact");
contact.setField("FirstName", "John");
contact.setField("LastName", "Doe");
account.setSObjectField("Owner", contact);
// 设置字段为 null(清空字段)
account.setFieldsToNull(new String[]{"AnnualRevenue"});
// 获取字段值
String name = (String) account.getField("Name");
Double revenue = (Double) account.getField("AnnualRevenue");
// 批量创建
SObject[] accounts = new SObject[10];
for (int i = 0; i < 10; i++) {
SObject acc = new SObject();
acc.setType("Account");
acc.setField("Name", "Account " + i);
accounts[i] = acc;
}
SaveResult[] results = connection.create(accounts);
QueryResult
作用: 表示查询操作的结果,包含查询返回的记录和分页信息。
主要属性:
records: 记录列表(SObject[])size: 记录数量(int)done: 是否完成(boolean)queryLocator: 查询定位器(String,用于分页)searchRecords: 搜索记录列表(SearchRecord[])
主要方法:
getRecords(): 获取记录列表setRecords(SObject[] records): 设置记录列表getSize(): 获取记录数量setSize(int size): 设置记录数量isDone(): 判断是否完成setDone(boolean done): 设置是否完成getQueryLocator(): 获取查询定位器setQueryLocator(String queryLocator): 设置查询定位器
使用示例:
// 执行查询
QueryResult queryResult = connection.query(
"SELECT Id, Name, Industry FROM Account LIMIT 10"
);
// 遍历记录
for (SObject record : queryResult.getRecords()) {
String name = record.getField("Name").toString();
String industry = record.getField("Industry").toString();
System.out.println("Account: " + name + ", Industry: " + industry);
}
// 处理分页
while (!queryResult.isDone()) {
queryResult = connection.queryMore(queryResult.getQueryLocator());
for (SObject record : queryResult.getRecords()) {
System.out.println("More records: " + record.getField("Name"));
}
}
// 使用批量大小设置
connection.setQueryOptions(200);
QueryResult result = connection.query("SELECT Id, Name FROM Account");
System.out.println("Total records: " + result.getSize());
SaveResult
作用: 表示创建、更新或删除操作的结果,包含操作是否成功和错误信息。
主要属性:
id: 记录 ID(String)success: 是否成功(boolean)errors: 错误列表(Error[])
主要方法:
getId(): 获取记录 IDsetId(String id): 设置记录 IDisSuccess(): 判断是否成功getSuccess(): 获取成功状态setSuccess(boolean success): 设置成功状态getErrors(): 获取错误列表setErrors(Error[] errors): 设置错误列表
使用示例:
// 创建记录
SObject account = new SObject();
account.setType("Account");
account.setField("Name", "Acme Corporation");
SaveResult[] results = connection.create(new SObject[]{account});
// 处理结果
for (SaveResult result : results) {
if (result.isSuccess()) {
System.out.println("创建成功,ID: " + result.getId());
} else {
System.out.println("创建失败");
for (Error error : result.getErrors()) {
System.out.println("错误代码: " + error.getStatusCode());
System.out.println("错误消息: " + error.getMessage());
System.out.println("字段: " + String.join(", ", error.getFields()));
}
}
}
// 批量更新
SObject[] accounts = new SObject[2];
accounts[0] = new SObject();
accounts[0].setType("Account");
accounts[0].setId("001xx000003IAC");
accounts[0].setField("Name", "Updated Account 1");
accounts[1] = new SObject();
accounts[1].setType("Account");
accounts[1].setId("001xx000003IAD");
accounts[1].setField("Name", "Updated Account 2");
SaveResult[] updateResults = connection.update(accounts);
for (SaveResult result : updateResults) {
if (result.isSuccess()) {
System.out.println("更新成功: " + result.getId());
}
}
DescribeSObjectResult
作用: 描述对象的元数据,包含对象的详细信息和字段定义。
主要属性:
name: 对象名称(String)label: 对象标签(String)keyPrefix: ID 前缀(String)labelPlural: 复数标签(String)fields: 字段列表(Field[])childRelationships: 子关系列表(ChildRelationship[])createable: 是否可创建(boolean)updateable: 是否可更新(boolean)deletable: 是否可删除(boolean)queryable: 是否可查询(boolean)replicateable: 是否可复制(boolean)retrieveable: 是否可检索(boolean)undeletable: 是否可恢复(boolean)triggerable: 是否可触发(boolean)mergeable: 是否可合并(boolean)activateable: 是否可激活(boolean)layoutable: 是否有布局(boolean)searchable: 是否可搜索(boolean)actionOverrides: 动作覆盖列表(ActionOverride[])
主要方法:
getName(): 获取对象名称getLabel(): 获取对象标签getKeyPrefix(): 获取 ID 前缀getFields(): 获取字段列表getChildRelationships(): 获取子关系列表isCreateable(): 判断是否可创建isUpdateable(): 判断是否可更新isDeletable(): 判断是否可删除isQueryable(): 判断是否可查询
使用示例:
// 描述 Account 对象
DescribeSObjectResult describeResult = connection.describeSObject("Account");
System.out.println("对象名称: " + describeResult.getName());
System.out.println("对象标签: " + describeResult.getLabel());
System.out.println("ID 前缀: " + describeResult.getKeyPrefix());
System.out.println("可创建: " + describeResult.isCreateable());
System.out.println("可更新: " + describeResult.isUpdateable());
System.out.println("可删除: " + describeResult.isDeletable());
// 遍历字段
for (Field field : describeResult.getFields()) {
System.out.println("字段: " + field.getName());
System.out.println(" 类型: " + field.getType());
System.out.println(" 标签: " + field.getLabel());
System.out.println(" 可创建: " + field.isCreateable());
System.out.println(" 可更新: " + field.isUpdateable());
System.out.println(" 必填: " + field.isNillable());
}
// 遍历子关系
for (ChildRelationship relation : describeResult.getChildRelationships()) {
System.out.println("子关系: " + relation.getChildSObject());
System.out.println(" 字段: " + relation.getField());
}
DeleteResult
作用: 表示删除操作的结果,包含删除是否成功和错误信息。
主要属性:
id: 记录 ID(String)success: 是否成功(boolean)errors: 错误列表(Error[])
主要方法:
getId(): 获取记录 IDsetId(String id): 设置记录 IDisSuccess(): 判断是否成功getSuccess(): 获取成功状态setSuccess(boolean success): 设置成功状态getErrors(): 获取错误列表setErrors(Error[] errors): 设置错误列表
使用示例:
// 删除单个记录
DeleteResult[] results = connection.delete(new String[]{"001xx000003IAC"});
for (DeleteResult result : results) {
if (result.isSuccess()) {
System.out.println("删除成功: " + result.getId());
} else {
System.out.println("删除失败: " + result.getId());
for (Error error : result.getErrors()) {
System.out.println("错误: " + error.getMessage());
}
}
}
// 批量删除
String[] ids = new String[]{"001xx000003IAC", "001xx000003IAD", "001xx000003IAE"};
DeleteResult[] deleteResults = connection.delete(ids);
int successCount = 0;
int failureCount = 0;
for (DeleteResult result : deleteResults) {
if (result.isSuccess()) {
successCount++;
} else {
failureCount++;
System.out.println("删除失败: " + result.getId());
}
}
System.out.println("成功: " + successCount + ", 失败: " + failureCount);
UpsertResult
作用: 表示 Upsert(更新或插入)操作的结果,包含操作是否成功、是否创建和错误信息。
主要属性:
id: 记录 ID(String)success: 是否成功(boolean)created: 是否创建新记录(boolean)errors: 错误列表(Error[])
主要方法:
getId(): 获取记录 IDsetId(String id): 设置记录 IDisSuccess(): 判断是否成功getSuccess(): 获取成功状态setSuccess(boolean success): 设置成功状态isCreated(): 判断是否创建getCreated(): 获取创建状态setCreated(boolean created): 设置创建状态getErrors(): 获取错误列表setErrors(Error[] errors): 设置错误列表
使用示例:
// Upsert 操作(基于外部 ID)
SObject account = new SObject();
account.setType("Account");
account.setField("ExternalId__c", "EXT123");
account.setField("Name", "Acme Corporation");
UpsertResult[] results = connection.upsert("ExternalId__c", new SObject[]{account});
for (UpsertResult result : results) {
if (result.isSuccess()) {
if (result.isCreated()) {
System.out.println("创建新记录,ID: " + result.getId());
} else {
System.out.println("更新现有记录,ID: " + result.getId());
}
} else {
System.out.println("Upsert 失败");
for (Error error : result.getErrors()) {
System.out.println("错误: " + error.getMessage());
}
}
}
// 批量 Upsert
SObject[] accounts = new SObject[2];
accounts[0] = new SObject();
accounts[0].setType("Account");
accounts[0].setField("ExternalId__c", "EXT001");
accounts[0].setField("Name", "Account 1");
accounts[1] = new SObject();
accounts[1].setType("Account");
accounts[1].setField("ExternalId__c", "EXT002");
accounts[1].setField("Name", "Account 2");
UpsertResult[] upsertResults = connection.upsert("ExternalId__c", accounts);
SearchResult
作用: 表示 SOSL 搜索操作的结果,包含搜索返回的记录和元数据。
主要属性:
queryId: 查询 ID(String)searchRecords: 搜索记录列表(SearchRecord[])searchResultsMetadata: 搜索结果元数据(SearchResultsMetadata)
主要方法:
getQueryId(): 获取查询 IDsetQueryId(String queryId): 设置查询 IDgetSearchRecords(): 获取搜索记录列表setSearchRecords(SearchRecord[] searchRecords): 设置搜索记录列表getSearchResultsMetadata(): 获取搜索结果元数据setSearchResultsMetadata(SearchResultsMetadata metadata): 设置搜索结果元数据
使用示例:
// 执行 SOSL 搜索
SearchResult searchResult = connection.search(
"FIND {Acme} IN ALL FIELDS RETURNING Account (Id, Name, Industry), " +
"Contact (Id, FirstName, LastName)"
);
System.out.println("查询 ID: " + searchResult.getQueryId());
// 遍历搜索结果
for (SearchRecord record : searchResult.getSearchRecords()) {
SObject sobject = record.getRecord();
String objectType = record.getType();
if (objectType.equals("Account")) {
System.out.println("Account: " + sobject.getField("Name"));
} else if (objectType.equals("Contact")) {
System.out.println("Contact: " + sobject.getField("FirstName") + " " + sobject.getField("LastName"));
}
}
// 获取搜索元数据
SearchResultsMetadata metadata = searchResult.getSearchResultsMetadata();
System.out.println("搜索上下文: " + metadata.getSearchContext());
Error
作用: 表示 API 操作中的错误信息。
主要属性:
statusCode: 状态代码(StatusCode)message: 错误消息(String)fields: 相关字段列表(String[])extendedErrorDetails: 扩展错误详情(ExtendedErrorDetails[])
主要方法:
getStatusCode(): 获取状态代码setStatusCode(StatusCode statusCode): 设置状态代码getMessage(): 获取错误消息setMessage(String message): 设置错误消息getFields(): 获取相关字段列表setFields(String[] fields): 设置相关字段列表getExtendedErrorDetails(): 获取扩展错误详情setExtendedErrorDetails(ExtendedErrorDetails[] details): 设置扩展错误详情
常见错误代码:
INVALID_FIELD: 字段不存在或无效INVALID_ID: ID 无效MALFORMED_QUERY: 查询语法错误INVALID_OPERATION: 操作无效DUPLICATE_VALUE: 值重复ENTITY_IS_DELETED: 记录已删除INSUFFICIENT_ACCESS: 权限不足INVALID_CROSS_REFERENCE_KEY: 跨引用键无效
使用示例:
SaveResult[] results = connection.create(new SObject[]{account});
for (SaveResult result : results) {
if (!result.isSuccess()) {
for (Error error : result.getErrors()) {
System.out.println("错误代码: " + error.getStatusCode());
System.out.println("错误消息: " + error.getMessage());
if (error.getFields() != null && error.getFields().length > 0) {
System.out.println("相关字段: " + String.join(", ", error.getFields()));
}
if (error.getExtendedErrorDetails() != null) {
for (ExtendedErrorDetails detail : error.getExtendedErrorDetails()) {
System.out.println("扩展详情: " + detail.getMessage());
}
}
}
}
}
Field
作用: 表示对象的字段元数据,包含字段的详细属性。
主要属性:
name: 字段名称(String)label: 字段标签(String)type: 字段类型(SoapType)length: 字段长度(int)precision: 精度(int)scale: 小数位数(int)createable: 是否可创建(boolean)updateable: 是否可更新(boolean)nillable: 是否可为空(boolean)defaultedOnCreate: 创建时是否有默认值(boolean)autoNumber: 是否自动编号(boolean)calculated: 是否计算字段(boolean)custom: 是否自定义字段(boolean)unique: 是否唯一(boolean)externalId: 是否外部 ID(boolean)indexed: 是否索引(boolean)aggregatable: 是否可聚合(boolean)aiPredictionField: 是否 AI 预测字段(boolean)defaultValue: 默认值(Object)picklistValues: 选项列表值(PicklistEntry[])referenceTo: 引用对象列表(String[])relationshipName: 关系名称(String)
主要方法:
getName(): 获取字段名称getLabel(): 获取字段标签getType(): 获取字段类型isCreateable(): 判断是否可创建isUpdateable(): 判断是否可更新isNillable(): 判断是否可为空isCustom(): 判断是否自定义字段isUnique(): 判断是否唯一isExternalId(): 判断是否外部 IDgetPicklistValues(): 获取选项列表值getReferenceTo(): 获取引用对象列表
使用示例:
DescribeSObjectResult describeResult = connection.describeSObject("Account");
for (Field field : describeResult.getFields()) {
System.out.println("字段: " + field.getName());
System.out.println(" 标签: " + field.getLabel());
System.out.println(" 类型: " + field.getType());
System.out.println(" 可创建: " + field.isCreateable());
System.out.println(" 可更新: " + field.isUpdateable());
System.out.println(" 可为空: " + field.isNillable());
System.out.println(" 自定义: " + field.isCustom());
// 处理选项列表字段
if (field.getType() == SoapType.picklist && field.getPicklistValues() != null) {
System.out.println(" 选项列表:");
for (PicklistEntry entry : field.getPicklistValues()) {
System.out.println(" - " + entry.getLabel() + " (" + entry.getValue() + ")");
}
}
// 处理引用字段
if (field.getReferenceTo() != null && field.getReferenceTo().length > 0) {
System.out.println(" 引用对象: " + String.join(", ", field.getReferenceTo()));
}
}
使用场景
1. 数据同步
- 从外部系统同步数据到 Salesforce
- 从 Salesforce 同步数据到外部系统
- 双向数据同步
- 增量数据同步
2. 数据集成
- 与其他系统集成
- 数据迁移
- 数据导入/导出
- 批量数据处理
3. 自定义应用开发
- 构建自定义应用
- 实现业务逻辑
- 用户界面集成
- 自动化工作流
4. 报表和分析
- 数据查询和报表
- 业务分析
- 数据可视化
- 决策支持
5. 数据管理
- 数据维护
- 数据清理
- 数据归档
- 数据备份
SOQL 查询示例
基本查询
QueryResult result = connection.query(
"SELECT Id, Name, Industry FROM Account"
);
条件查询
QueryResult result = connection.query(
"SELECT Id, Name, Industry FROM Account WHERE Industry = 'Technology'"
);
排序和限制
QueryResult result = connection.query(
"SELECT Id, Name, CreatedDate FROM Account ORDER BY CreatedDate DESC LIMIT 10"
);
关联查询
QueryResult result = connection.query(
"SELECT Id, Name, (SELECT FirstName, LastName FROM Contacts) FROM Account"
);
聚合查询
QueryResult result = connection.query(
"SELECT Industry, COUNT(Id) FROM Account GROUP BY Industry"
);
注意事项
- API 限制: 有 API 调用次数限制和并发限制
- 查询限制: SOQL 查询有记录数限制(通常为 50,000 条)
- 批量操作: 批量操作有大小限制(通常为 200 条记录)
- 字段限制: 查询和更新有字段数限制
- 权限要求: 需要适当的对象和字段权限
- 会话管理: 会话有超时时间,需要定期刷新
- 错误处理: 需要正确处理各种错误情况
- 性能考虑: 大量数据操作可能影响性能
- 版本兼容性: 不同版本的 Salesforce 可能有不同的 API 行为
- 动态特性: Partner API 是动态的,需要处理运行时类型
错误处理
常见错误类型
- INVALID_FIELD: 字段不存在或无效
- INVALID_ID: ID 无效
- MALFORMED_QUERY: 查询语法错误
- INVALID_OPERATION: 操作无效
- DUPLICATE_VALUE: 值重复
- ENTITY_IS_DELETED: 记录已删除
- INSUFFICIENT_ACCESS: 权限不足
- INVALID_CROSS_REFERENCE_KEY: 跨引用键无效
错误处理示例
try {
SaveResult[] results = connection.create(new SObject[]{account});
for (SaveResult result : results) {
if (!result.isSuccess()) {
for (Error error : result.getErrors()) {
System.out.println("错误代码: " + error.getStatusCode());
System.out.println("错误消息: " + error.getMessage());
System.out.println("字段: " + error.getFields());
}
}
}
} catch (ConnectionException e) {
System.out.println("连接错误: " + e.getMessage());
} catch (ApiFault e) {
System.out.println("API 错误: " + e.getExceptionMessage());
}
最佳实践
- 使用批量操作: 尽量使用批量操作减少 API 调用
- 查询优化: 只查询需要的字段,使用适当的过滤条件
- 错误处理: 实现完善的错误处理和重试机制
- 会话管理: 妥善管理会话,避免频繁登录
- 性能监控: 监控 API 调用性能和响应时间
- 日志记录: 记录 API 调用和错误信息
- 测试: 在生产环境前充分测试
- 文档: 记录 API 使用和集成逻辑
相关文档
文件分类
连接和认证
- Connector.java - 连接工厂类
- PartnerConnection.java - Partner API 连接类
- LoginResult.java - 登录结果
- SessionHeader_element.java - 会话头
- CallOptions_element.java - 调用选项
- QueryOptions_element.java - 查询选项
数据操作
- Create_element.java - 创建请求
- CreateResponse_element.java - 创建响应
- Update_element.java - 更新请求
- UpdateResponse_element.java - 更新响应
- Delete_element.java - 删除请求
- DeleteResponse_element.java - 删除响应
- DeleteByExample_element.java - 按示例删除请求
- DeleteByExampleResponse_element.java - 按示例删除响应
- DeleteByExampleResult.java - 按示例删除结果
- Upsert_element.java - 更新或插入请求
- UpsertResponse_element.java - 更新或插入响应
- UpsertResult.java - 更新或插入结果
- Merge_element.java - 合并请求
- MergeResponse_element.java - 合并响应
- Undelete_element.java - 恢复请求
- UndeleteResponse_element.java - 恢复响应
- UndeleteResult.java - 恢复结果
- Retrieve_element.java - 检索请求
- RetrieveResponse_element.java - 检索响应
查询和搜索
- Query_element.java - 查询请求
- QueryResponse_element.java - 查询响应
- QueryResult.java - 查询结果
- QueryAll_element.java - 查询所有请求
- QueryAllResponse_element.java - 查询所有响应
- QueryMore_element.java - 查询更多请求
- QueryMoreResponse_element.java - 查询更多响应
- Search_element.java - 搜索请求
- SearchResponse_element.java - 搜索响应
- SearchResult.java - 搜索结果
- SearchRecord.java - 搜索记录
- SearchRecordMetadata.java - 搜索记录元数据
- SearchResultsMetadata.java - 搜索结果元数据
- SearchSnippet.java - 搜索片段
- SearchStatus.java - 搜索状态
- SearchLayout.java - 搜索布局
- SearchLayoutResult.java - 搜索布局结果
- SearchLayouts_element.java - 搜索布局请求
- SearchLayoutsResponse_element.java - 搜索布局响应
- SearchScopeOrder.java - 搜索范围顺序
- SearchScopeOrder_element.java - 搜索范围顺序请求
- SearchScopeOrderResponse_element.java - 搜索范围顺序响应
- SearchScopeOrderResult.java - 搜索范围顺序结果
- SearchableEntity.java - 可搜索实体
- SearchableEntities_element.java - 可搜索实体请求
- SearchableEntitiesResponse_element.java - 可搜索实体响应
- SearchableEntityResult.java - 可搜索实体结果
描述功能
- DescribeGlobal_element.java - 描述全局请求
- DescribeGlobalResponse_element.java - 描述全局响应
- DescribeGlobalResult.java - 描述全局结果
- DescribeGlobalSObjectResult.java - 描述全局对象结果
- DescribeSObject_element.java - 描述对象请求
- DescribeSObjectResponse_element.java - 描述对象响应
- DescribeSObjectResult.java - 描述对象结果
- DescribeSObjects_element.java - 描述多个对象请求
- DescribeSObjectsResponse_element.java - 描述多个对象响应
- DescribeNouns_element.java - 描述名词请求
- DescribeNounsResponse_element.java - 描述名词响应
- DescribeNounResult.java - 描述名词结果
布局和标签页
- DescribeLayout_element.java - 描述布局请求
- DescribeLayoutResponse_element.java - 描述布局响应
- DescribeLayoutResult.java - 描述布局结果
- DescribeLayout.java - 布局描述
- DescribeLayoutRow.java - 布局行
- DescribeLayoutSection.java - 布局节
- DescribeLayoutItem.java - 布局项
- DescribeLayoutComponent.java - 布局组件
- DescribeLayoutButton.java - 布局按钮
- DescribeLayoutButtonSection.java - 布局按钮节
- DescribeLayoutSaveOption.java - 布局保存选项
- DescribeLayoutFeedFilter.java - 布局 Feed 过滤器
- DescribeLayoutFeedView.java - 布局 Feed 视图
- DescribeCompactLayouts_element.java - 描述紧凑布局请求
- DescribeCompactLayoutsResponse_element.java - 描述紧凑布局响应
- DescribeCompactLayoutsResult.java - 描述紧凑布局结果
- DescribeCompactLayout.java - 紧凑布局
- DescribePrimaryCompactLayouts_element.java - 描述主紧凑布局请求
- DescribePrimaryCompactLayoutsResponse_element.java - 描述主紧凑布局响应
- DescribeTabs_element.java - 描述标签页请求
- DescribeTabsResponse_element.java - 描述标签页响应
- DescribeTabSetResult.java - 描述标签集结果
- DescribeTab.java - 标签页描述
- DescribeAllTabs_element.java - 描述所有标签页请求
- DescribeAllTabsResponse_element.java - 描述所有标签页响应
快速操作
- DescribeQuickActions_element.java - 描述快速操作请求
- DescribeQuickActionsResponse_element.java - 描述快速操作响应
- DescribeQuickActionResult.java - 描述快速操作结果
- DescribeQuickActionsForRecordType_element.java - 描述记录类型快速操作请求
- DescribeQuickActionsForRecordTypeResponse_element.java - 描述记录类型快速操作响应
- DescribeAvailableQuickActions_element.java - 描述可用快速操作请求
- DescribeAvailableQuickActionsResponse_element.java - 描述可用快速操作响应
- DescribeAvailableQuickActionResult.java - 描述可用快速操作结果
- DescribeQuickActionDefaultValue.java - 快速操作默认值
- DescribeQuickActionParameter.java - 快速操作参数
- DescribeQuickActionListItemResult.java - 快速操作列表项结果
- DescribeQuickActionListResult.java - 快速操作列表结果
- RetrieveQuickActionTemplates_element.java - 检索快速操作模板请求
- RetrieveQuickActionTemplatesResponse_element.java - 检索快速操作模板响应
- RetrieveMassQuickActionTemplates_element.java - 检索批量快速操作模板请求
- RetrieveMassQuickActionTemplatesResponse_element.java - 检索批量快速操作模板响应
结果和错误
- SaveResult.java - 保存结果
- DeleteResult.java - 删除结果
- UndeleteResult.java - 恢复结果
- UpsertResult.java - 更新或插入结果
- Error.java - 错误信息
- StatusCode.java - 状态代码
- ExceptionCode.java - 异常代码
- ExtendedErrorDetails.java - 扩展错误详情
- DuplicateError.java - 重复错误
- DuplicateResult.java - 重复结果
- SendEmailError.java - 发送邮件错误
高级功能
- ConvertLead_element.java - 转换线索请求
- ConvertLeadResponse_element.java - 转换线索响应
- EmptyRecycleBin_element.java - 清空回收站请求
- EmptyRecycleBinResponse_element.java - 清空回收站响应
- ProcessSubmitRequest_element.java - 处理提交请求
- ProcessSubmitRequestResponse_element.java - 处理提交请求响应
- ProcessSubmitRequestResult.java - 处理提交请求结果
- GetUserInfo_element.java - 获取用户信息请求
- GetUserInfoResponse_element.java - 获取用户信息响应
- GetServerTimestamp_element.java - 获取服务器时间戳请求
- GetServerTimestampResponse_element.java - 获取服务器时间戳响应
- ResetPassword_element.java - 重置密码请求
- ResetPasswordResponse_element.java - 重置密码响应
- ResetPasswordResult.java - 重置密码结果
- SetPassword_element.java - 设置密码请求
- SetPasswordResponse_element.java - 设置密码响应
- SetPasswordResult.java - 设置密码结果
- ChangeOwnPassword_element.java - 修改自己的密码请求
- ChangeOwnPasswordResponse_element.java - 修改自己的密码响应
- ChangeOwnPasswordResult.java - 修改自己的密码结果
邮件功能
- SendEmail_element.java - 发送邮件请求
- SendEmailResponse_element.java - 发送邮件响应
- SendEmailResult.java - 发送邮件结果
- SendEmailMessage_element.java - 发送邮件消息请求
- SendEmailMessageResponse_element.java - 发送邮件消息响应
- SingleEmailMessage.java - 单封邮件消息
- MassEmailMessage.java - 批量邮件消息
- EmailFileAttachment.java - 邮件文件附件
- Email.java - 邮件
- EmailHeader_element.java - 邮件头
- RenderEmailTemplate_element.java - 渲染邮件模板请求
- RenderEmailTemplateResponse_element.java - 渲染邮件模板响应
- RenderEmailTemplateResult.java - 渲染邮件模板结果
- RenderStoredEmailTemplate_element.java - 渲染存储的邮件模板请求
- RenderStoredEmailTemplateResponse_element.java - 渲染存储的邮件模板响应
- RenderStoredEmailTemplateResult.java - 渲染存储的邮件模板结果
- RenderStoredEmailTemplateRequest.java - 渲染存储的邮件模板请求
- SendEmailOptOutPolicy.java - 发送邮件退出策略
SOAP 头部
- AllOrNoneHeader_element.java - 全有或全无头
- AllowFieldTruncationHeader_element.java - 允许字段截断头
- AssignmentRuleHeader_element.java - 分配规则头
- CallOptions_element.java - 调用选项头
- CurrencyConversionHeader_element.java - 货币转换头
- DebuggingHeader_element.java - 调试头
- DebuggingInfo_element.java - 调试信息
- DisableFeedTrackingHeader_element.java - 禁用 Feed 跟踪头
- DuplicateRuleHeader_element.java - 重复规则头
- EmailHeader_element.java - 邮件头
- LocaleOptions_element.java - 区域设置选项头
- MruHeader_element.java - 最近使用头
- PackageVersionHeader_element.java - 包版本头
- QueryOptions_element.java - 查询选项头
- SessionHeader_element.java - 会话头
- StreamingEnabledHeader_element.java - 流式启用头
- UserTerritoryDeleteHeader_element.java - 用户地域删除头
数据分类
- DataCategory.java - 数据分类
- DataCategoryGroup.java - 数据分类组
- DataCategoryGroupSobjectTypePair.java - 数据分类组对象类型对
- DescribeDataCategoryGroups_element.java - 描述数据分类组请求
- DescribeDataCategoryGroupsResponse_element.java - 描述数据分类组响应
- DescribeDataCategoryGroupResult.java - 描述数据分类组结果
- DescribeDataCategoryGroupStructures_element.java - 描述数据分类组结构请求
- DescribeDataCategoryGroupStructuresResponse_element.java - 描述数据分类组结构响应
- DescribeDataCategoryGroupStructureResult.java - 描述数据分类组结构结果
- DescribeDataCategoryMappings_element.java - 描述数据分类映射请求
- DescribeDataCategoryMappingsResponse_element.java - 描述数据分类映射响应
- DescribeDataCategoryMappingResult.java - 描述数据分类映射结果
应用菜单
- DescribeAppMenu_element.java - 描述应用菜单请求
- DescribeAppMenuResponse_element.java - 描述应用菜单响应
- DescribeAppMenuResult.java - 描述应用菜单结果
- DescribeAppMenuItem.java - 应用菜单项
主题
- DescribeTheme_element.java - 描述主题请求
- DescribeThemeResponse_element.java - 描述主题响应
- DescribeThemeResult.java - 描述主题结果
- DescribeThemeItem.java - 主题项
- DescribeGlobalTheme_element.java - 描述全局主题请求
- DescribeGlobalThemeResponse_element.java - 描述全局主题响应
- DescribeGlobalTheme.java - 全局主题
路径助手
- DescribePathAssistants_element.java - 描述路径助手请求
- DescribePathAssistantsResponse_element.java - 描述路径助手响应
- DescribePathAssistantsResult.java - 描述路径助手结果
- DescribePathAssistant.java - 路径助手
- DescribePathAssistantStep.java - 路径助手步骤
- DescribePathAssistantField.java - 路径助手字段
软电话布局
- DescribeSoftphoneLayout_element.java - 描述软电话布局请求
- DescribeSoftphoneLayoutResponse_element.java - 描述软电话布局响应
- DescribeSoftphoneLayoutResult.java - 描述软电话布局结果
- DescribeSoftphoneLayoutItem.java - 软电话布局项
- DescribeSoftphoneLayoutSection.java - 软电话布局节
- DescribeSoftphoneLayoutInfoField.java - 软电话布局信息字段
- DescribeSoftphoneLayoutCallType.java - 软电话布局呼叫类型
- DescribeSoftphoneScreenPopOption.java - 软电话屏幕弹出选项
SOQL 列表视图
- DescribeSoqlListViews_element.java - 描述 SOQL 列表视图请求
- DescribeSoqlListViewsResponse_element.java - 描述 SOQL 列表视图响应
- DescribeSoqlListViewResult.java - 描述 SOQL 列表视图结果
- DescribeSoqlListView.java - SOQL 列表视图
- DescribeSoqlListViewParams.java - SOQL 列表视图参数
- DescribeSoqlListViewColumn.java - SOQL 列表视图列
- DescribeSoqlListViewOrderBy.java - SOQL 列表视图排序
- DescribeSoqlListViewFilter.java - SOQL 列表视图过滤器
- DescribeSoqlListViewScope.java - SOQL 列表视图范围
- DescribeSObjectListViews_element.java - 描述对象列表视图请求
- DescribeSObjectListViewsResponse_element.java - 描述对象列表视图响应
知识设置
- DescribeKnowledgeSettings_element.java - 描述知识设置请求
- DescribeKnowledgeSettingsResponse_element.java - 描述知识设置响应
批准布局
- DescribeApprovalLayout_element.java - 描述批准布局请求
- DescribeApprovalLayoutResponse_element.java - 描述批准布局响应
- DescribeApprovalLayoutResult.java - 描述批准布局结果
- DescribeApprovalLayout.java - 批准布局
Visualforce
- DescribeVisualForce_element.java - 描述 Visualforce 请求
- DescribeVisualForceResponse_element.java - 描述 Visualforce 响应
- DescribeVisualForceResult.java - 描述 Visualforce 结果
- VisualforcePage.java - Visualforce 页面
动作覆盖
- ActionOverride.java - 动作覆盖
- ActionOverrideType.java - 动作覆盖类型
字段和关系
- Field.java - 字段
- ChildRelationship.java - 子关系
- PicklistEntry.java - 选项列表项
- FieldDefinition.java - 字段定义
SObject
- sobject/SObject.java - SObject 基类
- sobject/SObject.java - SObject 实现
故障
- fault/ApiFault.java - API 故障
- fault/ApiQueryFault.java - API 查询故障
- fault/InvalidIdFault.java - 无效 ID 故障
- fault/InvalidFieldFault.java - 无效字段故障
- fault/InvalidSObjectFault.java - 无效对象故障
- fault/MalformedQueryFault.java - 格式错误查询故障
- fault/MalformedSearchFault.java - 格式错误搜索故障
- fault/InvalidQueryLocatorFault.java - 无效查询定位器故障
- fault/LoginFault.java - 登录故障
- fault/InvalidNewPasswordFault.java - 无效新密码故障
- fault/InvalidOldPasswordFault.java - 无效旧密码故障
- fault/UnexpectedErrorFault.java - 意外错误故障
- fault/FaultCode.java - 故障代码
- fault/ExceptionCode.java - 异常代码
其他类型
- Address.java - 地址
- Email.java - 邮件
- Article.java - 文章
- AnalyticsCloudComponent.java - Analytics Cloud 组件
- Canvas.java - Canvas
- CustomLinkComponent.java - 自定义链接组件
- WebLinkPosition.java - Web 链接位置
- WebLinkType.java - Web 链接类型
- WebLinkWindowType.java - Web 链接窗口类型
- AppMenuType.java - 应用菜单类型
- CaseType.java - 案例类型
- AttachmentRetrievalOption.java - 附件检索选项
- DebugLevel.java - 调试级别
- DifferenceType.java - 差异类型
- ShareAccessLevel.java - 共享访问级别
- UiBehavior.java - UI 行为
- TabOrderType.java - 标签页顺序类型
- SoapType.java - SOAP 类型
- StringList.java - 字符串列表
- SimpleNameObjectValuePair.java - 简单名称对象值对
- AdditionalInformationMap.java - 附加信息映射
- ChangeEventHeader.java - 变更事件头
- ChangeEventType.java - 变更事件类型
SOQL 相关
- SoqlCondition.java - SOQL 条件
- SoqlConditionGroup.java - SOQL 条件组
- SoqlWhereCondition.java - SOQL WHERE 条件
- SoqlSubQueryCondition.java - SOQL 子查询条件
- SoqlNotCondition.java - SOQL NOT 条件
- SoqlConjunction.java - SOQL 连接词
- SoqlOperator.java - SOQL 操作符
- StartsWith.java - 以...开始
注意: 该模块共包含 687 个 Java 文件,涵盖了 Salesforce Partner API 的所有功能和元数据类型。