我正在为 Salesforce.com 开发 Novell Identity Manager 驱动程序,并试图更好地了解 Salesforce.com 平台。
迄今为止,我取得了非常好的成功。我可以从 SFDC 中读取几乎任意对象类,并为它们创建 eDirectory 对象,等等。这一切都已完成并且运行良好。(发布者频道)。一旦我把 Query 事件映射出来,几乎所有东西都开始在 Publisher Channel 中工作。
我现在正致力于在 eDirectory 中发生更改时将事件发送回 SFDC(订阅者通道)。
我在 SOAP API 中使用 upsert() 函数,并且使用 Novell Identity Manager,您基本上可以构建 SOAP 文档,并且可以在构建它时看到结果。(您可以在 XSLT 中执行此操作,或者您可以使用各种允许的令牌在 DirXML 脚本中构建文档。我正在使用到目前为止运行良好的 DirXML 脚本。)。
该评论的结果是我可以构建 SOAP 文档,查看它,以确保我做对了。这通常不同于示例代码通常提供的 Java/C++ 方法。这种方式更直观。
关于 upsert() 有几件事我不完全理解。我知道如何清空一个值,我应该得到那种事件。在<urn:sObjects>
节点内部,添加一个类似的节点(假设您已经声明了命名空间):
<urn1:fieldsToNull>FieldName</urn1:fieldsToNull>
我知道如何向属性(FieldName)添加一个值(AttrValue),添加一个节点,如:
<FieldName>AttrValue</FieldName>
所有这些都有效并且非常简单。
我的问题是,SFDC 中的值可以是多值的吗?在 eDirectory 中,多值属性的更改可以通过两种方式发生:
- 可以删除所有值,并重新添加新集合。
- 删除的单个值可以作为那种事件(删除值)发送,也可以在一次操作中删除多个值。
查看 SFDC,我只看到似乎存储在单个条目中的多选项列表属性:或;划定的。在 SFDC 中是否有另一种以不同方式管理的多值属性?如果是这样,人们将如何通过 SOAP API 操作它?
我仍然需要决定是否要将这些多选项列表映射到单个字符串或字符串的多值属性。第一种方法更简单,第二种方法更有用......嗯......选择......
一些参考资料:
- 我一直在使用示例 SOAP 消息页面来了解文档的外观。
- Apex Explorer是一个用于浏览数据库和测试查询的踢球工具。就像DBVisualizer对 JDBC 连接的数据库所做的一样。如果没有它,这将变得更加困难!
- SoapUi也是必需的,而且是一个可爱的工具!