1

我需要以编程方式从多个应用程序(如 salesforce、sap 和 oracle)中获取几乎所有数据。大多数这些应用程序通过 Web 服务提供基于肥皂的 API。我使用 Apache Axis (wsdl2java) 编写了一些客户端代码,以从一个实体(表)(例如联系人)中获取记录。大多数应用程序中有数十或数百个实体。我想我必须编写大量代码来获取所有数据。有没有更好的方法来解决这个问题?

4

3 回答 3

1

我意识到您说过您需要以编程方式访问数据,但请查看 salesforce 的数据导出功能。

对于使用 SOAP API 的程序化导出,如果您希望保持松散类型而不是硬编码您支持的实体列表,您可能需要使用Partner API。您将执行describeGlobal()以获取支持的实体列表,即对象。然后你可以做一个describeSObjects()来获取一个对象的字段列表。此时,您可以从该对象中查询并检索记录。

您可能还想查看Bulk API,它是为处理大型数据集而设计的。有效载荷是 CSV,这可能对您来说更容易处理。

于 2013-02-28T17:39:38.947 回答
1

如果您想定期提取数据,可以使用 Talend Open Studio (Opensource) 提取所有数据;我们在几个 SF 项目中使用 Talend 来做到这一点。它生成 java 代码,您可以将其部署在任何运行 java 的服务器上,并将 cron 用作调度程序。

我们还编写了一个基于 Java 的应用程序,它使用元数据动态获取所有 SF 自定义对象,以便自动从每个对象中提取每日更改以进行每日(增量)备份。

克劳斯

于 2013-03-12T16:10:45.537 回答
0

好的。这是试图回答我自己的问题。我刚刚有了一个想法:我想我可以通过找出 Axis 或 jax-ws 生成的所有对象及其对应的包装类之间的映射,然后创建元数据(object_type、class_name、method_name、 data_types 等),然后有一个元数据驱动的代码来获取所有记录。你认为这是一个好方法吗?

如果我能从社区中获得更多想法和评论,我真的很感激。非常感谢。

于 2013-03-01T06:01:19.837 回答