首页 > 解决方案 > Pentaho / Salesforce:如何将 SF-Enterprise-Web-Services-API V48.0 集成到仅支持 v47.0 的 PDI 9.0 中

问题描述

实际上我正在使用 PDI 8.2,但是我可以升级到 9.0。

主要问题是客户希望从迄今为止运行良好的销售人员中提取数据。但他使用的是 48.0 版的 Enterprise Web Services API,最新的 Pentaho 仅支持 v47.0。

我强烈认为通过 v48.0 阅读不适用于 PDI,因此我必须构建一个解决方法。
谁能指出一个可行的解决方案?
老实说,我什至不知道 Enterprise 或 Partner API 是否与 Pentaho 相关。有我自己的 SF 帐户,以便我可以尝试使用 API。“Web 服务查找”是解决方法的正确步骤吗?

任何答案将不胜感激!提前致谢!

标签: web-servicessalesforcepentahokettlepdi

解决方案


哦,伙计,真是个疯狂的问题,到处都是。

我强烈认为通过 v48.0 阅读是行不通的

您必须尝试一下,但它应该可以工作。Salesforce 每年发布 3 个版本,这就是他们升级 API 版本的时间。我们现在是 Spring'20,它是 v.48。这并不意味着不推荐使用以下任何内容。使用任何 API 版本 >= 20 调用都应该没有问题。据我记得他们的主服务协议规定,发布的 API 版本将保持至少 3 年。好吧,v.20 已经 9 年了,而且还在继续强大......

检查例如https://baa.my.salesforce.com/services/data/(如果您的客户启用了“我的域”,您也可以使用它而不是某些未知公司),您应该会看到一个类似于此的列表:https://developer.salesforce.com/docs/atlas.en-us.api_rest.meta/api_rest/dome_versions.htm(无需登录,这将是鸡和蛋的情况。您需要选择您想要的 API 版本进行登录调用时)。

那么...您的集成有什么作用。我假设它读取或写入 SF 表(对象),非常基本的东西。从这个意义上说,47 对 48 并不重要。您仍然应该看到 Accounts、Contacts、自定义对象...您不会看到在 v 48 中专门创建的表。除非您必须看到Spring'20 发行说明中提到的内容,否则我不会太担心。

如果您的客户编写了一个特定的类(服务)来向您提供数据,并且它是用 v.48 编写的,那么当您以 v.47 登录时它可能不可见。但是他们可以降级版本,一切都应该很好。无论如何,此类自定义服务很少被通用 ETL 工具使用,因此只有在您进行自定义编码时才会担心。

Enterprise 或 Partner API 是否与 Pentaho 相关

听起来您的 ETL 工具使用 SOAP API。Salesforce 提供 2 个版本的 WSDL 文件和服务定义。

“合作伙伴”是通用的,世界上所有的 SF 组织都生成相同的 WSDL 文件。它不包含关于在 vanilla salesforce 之上编写的表、列、自定义服务的任何具体信息。但它确实包含如何调用 login() 或运行“描述”的信息,为您提供用户可以看到的所有表,它们的名称是什么,列是什么,数据类型......所以你在运行时学习东西。当您构建一个可以连接到任何 SF 或者您想要动态的通用可重用应用程序时,“合作伙伴”非常棒(一些每天学习列并且可以毫无问题地处理更改的备份工具。或者有一个“连接向导”,其中您指定哪些表,哪些列,哪些映射...新字段进入 - 只需重新运行向导)。

“企业”将特定于该特定客户。它包含“合作伙伴”拥有的所有内容,但也包含数据库表当前状态的描述等。因此您不必调用“描述”,您已经拥有了所有内容。您可以使用它来“使用” WSDL 文件,从中生成您的 Java/PHP/C# 类,并在您的程序中与它们进行交互,就像任何其他普通对象一样,而不是制作 XML 消息。不利的一面是,如果添加了新字段或新表 - 您将不知道您的程序是否没有调用“描述”。您需要生成新的 WSDL 并再次使用它并重新编译您的程序...

选择正确的真的取决于你需要做什么。我遇到的 ETL 工具一般都适用于“合作伙伴”。

“Web 服务查找”是正确的步骤吗

不知道,我用过 Informatica、Azure Data Factory、Jitterbit、Talend……但不知道 Pentaho 的东西。去尝试一下。如果您直接从 SF 表中提取数据而不调用任何自定义代码(您可以考虑 SF 自定义服务,例如从存储过程中提取数据) - API 版本应该没那么重要。如果你去 < 41.0 我相信你不会看到个别对象,但我怀疑你需要这么多的前沿。


推荐阅读