Salesforce提供按需定制的软件服务,这些服务涉及客户关系管理的各个方面,例如从普通的联系人管理、产品目录到订单管理、机会管理、销售管理等。DataWorks数据集成支持读取Salesforce类型的数据源,本文为您介绍Salesforce的使用详情。
支持的字段类型
字段类型 | 脚本模式数据类型 |
address | STRING |
anyType | STRING |
base64 | BYTES |
boolean | BOOL |
combobox | STRING |
complexvalue | STRING |
currency | DOUBLE |
date | DATE |
datetime | DATE |
double | DOUBLE |
STRING | |
encryptedstring | STRING |
id | STRING |
int | LONG |
json | STRING |
long | LONG |
multipicklist | STRING |
percent | DOUBLE |
phone | STRING |
picklist | STRING |
reference | STRING |
string | STRING |
textarea | STRING |
time | DATE |
url | STRING |
geolocation | STRING |
创建数据源
在进行数据同步任务开发时,您需要在DataWorks上创建一个对应的数据源,操作流程请参见创建并管理数据源,详细的配置参数解释可在配置界面查看对应参数的文案提示。
Salesforce支持如下方式创建数据源:
Salesforce官方:通过登录Salesforce官网自动获取Salesforce访问地址信息,创建数据源。
自定义:通过指定您自己部署的Connected App的Consumer Key和Consumer Secret,自动获取Salesforce访问地址,创建数据源。
自定义模式数据源配置方式
创建Connected App
进入创建页面。
前往Salesforce官网并登录。
在顶部单击,然后在左侧导航栏单击App Manager。
在Lightning Experience App Manager页面,单击New Connected App。
填写Connected App相关配置。
关键参数配置:
序号
参数说明
①
根据业务需求,创建符合Salesforce规范的应用名(Connected App Name)、API名称(API Name)及联系人邮箱(Contact Email)。
②
开启Enable OAuth Settings。回调URL(Callback URL)填写为
https://bff-cn-shanghai.data.aliyun.com/di/oauth/callback/index.html
。③
在Selected OAuth Scopes中添加以下Scope:
Access Connect REST API resources (chatter api)
Access the identity URL service (id, profile, email, address, phone)
Access unique user identifiers (openid)
Manage user data via APIs (api)
Perform requests at any time (refresh token, offline_access)
④
关闭Require Proof Key for Code Exchange (PKCE) Extension for Supported Authorization Flows。
开启Require Secret for Web Server Flow。
开启Require Secret for Refresh Token Flow。
查看Connected App的Consumer Key and Secret。
在App Manager列表中找到已创建的App,点击App右侧的,然后单击View。
在App详情页面,查看Consumer Key and Secret。
复制Consumer Key和Consumer Secret值用于后续创建Saleforce数据源时使用。
填写数据源参数
进入数据集成页面。
登录DataWorks控制台,切换至目标地域后,单击左侧导航栏的数据开发与治理 > 数据集成,在下拉框中选择对应工作空间后单击进入数据集成。
单击左侧导航栏的数据源,进入数据源管理页面。
单击新增数据源,搜索Salesforce并打开,在新增Salesforce数据源页面,配置数据源类型为自定义。
关键参数配置:
参数
说明
登录地址
填写为
https://<Salesforce域名>/services/oauth2/authorize
。认证地址
填写为
https://<Salesforce域名>/services/oauth2/token
。Consumer Key和Consumer Secret
填写为已获取Connected App详情中的Consumer Key和Consumer Secret。
单击登录Salesforce,在授权页面填写用户名、密码后,单击允许授权(Allow),完成数据源配置。
数据同步任务开发
数据同步任务的配置入口和通用配置流程可参见下文的配置指导。
单表离线同步任务配置指导
操作流程请参见通过向导模式配置离线同步任务、通过脚本模式配置离线同步任务。
脚本模式配置的全量参数和脚本Demo请参见下文的附录:脚本Demo与参数说明。
附录:脚本Demo与参数说明
离线任务脚本配置方式
如果您配置离线任务时使用脚本模式的方式进行配置,您需要按照统一的脚本格式要求,在任务脚本中编写相应的参数,详情请参见通过脚本模式配置离线同步任务,以下为您介绍脚本模式下数据源的参数配置详情。
Reader脚本Demo
案例1:查询Salesforce Object
{
"type":"job",
"version":"2.0",
"steps":[
{
"stepType":"salesforce",
"parameter":{
"datasource":"",
"serviceType": "sobject",
"table": "Account",
"beginDateTime": "20230817184200",
"endDateTime": "20231017184200",
"where": "",
"column": [
{
"type": "STRING",
"name": "Id"
},
{
"type": "STRING",
"name": "Name"
},
{
"type": "BOOL",
"name": "IsDeleted"
},
{
"type": "DATE",
"name": "CreatedDate"
}
]
},
"name":"Reader",
"category":"reader"
},
{
"stepType":"stream",
"parameter":{},
"name":"Writer",
"category":"writer"
}
],
"setting":{
"errorLimit":{
"record":"0"
},
"speed":{
"throttle":true,
"concurrent":1,
"mbps":"12"
}
},
"order":{
"hops":[
{
"from":"Reader",
"to":"Writer"
}
]
}
}
案例2:使用BULK API1.0查询Salesforce Object
{
"type":"job",
"version":"2.0",
"steps":[
{
"stepType":"salesforce",
"parameter":{
"datasource":"",
"serviceType": "bulk1",
"table": "Account",
"beginDateTime": "20230817184200",
"endDateTime": "20231017184200",
"where": "",
"blockCompoundColumn":true,
"bulkQueryJobTimeoutSeconds":86400,
"column": [
{
"type": "STRING",
"name": "Id"
},
{
"type": "STRING",
"name": "Name"
},
{
"type": "BOOL",
"name": "IsDeleted"
},
{
"type": "DATE",
"name": "CreatedDate"
}
]
},
"name":"Reader",
"category":"reader"
},
{
"stepType":"stream",
"parameter":{
"print": true
},
"name":"Writer",
"category":"writer"
}
],
"setting":{
"errorLimit":{
"record":"0"
},
"speed":{
"concurrent":1
}
},
"order":{
"hops":[
{
"from":"Reader",
"to":"Writer"
}
]
}
}
案例3:使用BULK API2.0查询Salesforce Object
{
"type":"job",
"version":"2.0",
"steps":[
{
"stepType":"salesforce",
"parameter":{
"datasource":"",
"serviceType": "bulk2",
"table": "Account",
"beginDateTime": "20230817184200",
"endDateTime": "20231017184200",
"where": "",
"blockCompoundColumn":true,
"bulkQueryJobTimeoutSeconds":86400,
"column": [
{
"type": "STRING",
"name": "Id"
},
{
"type": "STRING",
"name": "Name"
},
{
"type": "BOOL",
"name": "IsDeleted"
},
{
"type": "DATE",
"name": "CreatedDate"
}
]
},
"name":"Reader",
"category":"reader"
},
{
"stepType":"stream",
"parameter":{},
"name":"Writer",
"category":"writer"
}
],
"setting":{
"errorLimit":{
"record":"0"
},
"speed":{
"throttle":true,
"concurrent":1,
"mbps":"12"
}
},
"order":{
"hops":[
{
"from":"Reader",
"to":"Writer"
}
]
}
}
案例4:使用SOQL查询语句
{
"type":"job",
"version":"2.0",
"steps":[
{
"stepType":"salesforce",
"parameter":{
"datasource":"",
"serviceType": "query",
"query": "select Id, Name, IsDeleted, CreatedDate from Account where Name!='Aliyun' ",
"column": [
{
"type": "STRING",
"name": "Id"
},
{
"type": "STRING",
"name": "Name"
},
{
"type": "BOOL",
"name": "IsDeleted"
},
{
"type": "DATE",
"name": "CreatedDate"
}
]
},
"name":"Reader",
"category":"reader"
},
{
"stepType":"stream",
"parameter":{},
"name":"Writer",
"category":"writer"
}
],
"setting":{
"errorLimit":{
"record":"0"
},
"speed":{
"throttle":true,
"concurrent":1,
"mbps":"12"
}
},
"order":{
"hops":[
{
"from":"Reader",
"to":"Writer"
}
]
}
}
Reader脚本参数
参数 | 是否必选 | 描述 | 默认值 |
datasource | 是 | 数据源名称,脚本模式支持添加数据源,此配置项填写的内容必须与添加的数据源名称保持一致。 | 无 |
serviceType | 否 | 同步方式,支持以下配置项:
| sobject |
table | 是 | Salesforce Object,和表名类似,例如Account、Case、Group。当serviceType配置为sobject、bulk1或bulk2时必填。 | 无 |
beginDateTime | 否 |
| 无 |
endDateTime | 否 | 无 | |
splitPk | 否 |
| 无 |
blockCompoundColumn | 否 | 组合数据类型行为。当serviceType配置为bulk1或bulk2时使用。取值:
| true |
bulkQueryJobTimeoutSeconds | 否 |
| 86400 |
batchSize | 否 |
| 300000 |
where | 否 |
| 无 |
query | 否 |
| 无 |
queryAll | 否 |
| false |
column | 是 | 所配置的表中需要同步的列名集合,使用JSON的数组描述字段信息。
| 无 |
connectTimeoutSeconds | 否 |
| 30 |
socketTimeoutSeconds | 否 |
| 600 |
retryIntervalSeconds | 否 |
| 60 |
retryTimes | 否 |
| 3 |