2010-04-26 99 views
1

我正在为Salesforce.com开发Novell Identity Manager驱动程序,并试图更好地了解Salesforce.com平台。在salesforce.com你可以拥有多值属性吗?

我迄今为止取得了非常好的成绩。我可以从SFDC中读取几乎任意的对象类,并为它们创建eDirectory对象,而不是。这一切都已完成并且工作得很好。 (发布者频道)。一旦我查询了Query事件,大多数事情都开始在Publisher频道中运行。

当我在eDirectory中发生更改时,我正在将事件发送回SFDC(订户通道)。

我在SOAP API中使用upsert()函数,并且使用Novell Identity Manager,您基本上构建了SOAP文档,并且可以在构建它时看到结果。 (你可以在XSLT中完成,或者你可以使用各种允许的令牌在DirXML Script中建立文档,我使用的DirXML Script目前运行良好)。

该评论的结果是,我可以构建SOAP文档,看看它,以确保我能正确地做到这一点。这通常与示例代码通常提供的Java/C++方法不同。这种方式更多的视觉。

关于upsert()有几件事我不完全明白。我知道如何消除价值,我应该得到那种事件。在<urn:sObjects>节点内,添加一个节点像(假设你得到你的命名空间已声明):

<urn1:fieldsToNull>FieldName</urn1:fieldsToNull>

我知道如何将一个值(AttrValue)添加到属性(字段名),加上像一个节点:

<FieldName>AttrValue</FieldName>

所有这些工作,是非常简单的。

我的问题是,SFDC的值是否可以多值?在eDirectory中,正在更改的多值属性可能发生在两种方式:

  • 所有值都可以删除,并重新添加新集。
  • 删除的单个值可以作为该类事件(删除值)发送,或者可以在一个操作中删除多个值。

看着SFDC,我只看到似乎存储在单个条目中的多选项列表属性:或;分隔。 SFDC中是否有另一种多值属性管理方式不同?如果是这样,那么如何通过SOAP API操纵它呢?

我仍然需要决定是否要将这些多选项列表映射到单个字符串或字符串的多值属性。第一种方法是比较容易,第二种方式是比较有用的...嗯... ...选择

一些参考:

  • 我一直在使用Sample SOAP messages页面了解文档应该是什么样子。
  • Apex Explorer是一款用于浏览数据库和测试查询的踢球工具。就像DBVisualizer对于JDBC连接的数据库一样。没有它,这将会变得更加困难!
  • SoapUi也是必需的,而且是一个可爱的工具!

回答

2

据我所知除了多选择选项列表(他们映射到以分号分隔的字符串)没有多值字段。如果您需要与您的数据关联的多个值,平台通常会鼓励您与另一个表(可能是新的自定义表)建立适当的关系。

我能想到的唯一其他“不寻常”的事情是如何使用某些对象上的OwnerId字段(Case,Lead,也许是别的东西)来指向User或Queue记录。当您习惯了传统数据库中的外键关系时,看起来很奇怪。但是这与你所要求的不一样,因为一次只会有一个值。

当然,有时您可能会看到您将在数据库中看到的值,具体取决于查看用户的区域设置(系统管理员配置文件变为荷兰语中的Systeembeheder等)。但是,这仍然是一个单一的值,在将查询结果发回给您之前即可进行翻译。

当我必须执行与SFDC的SOAP集成时,我一直使用WSDL文件,并且大部分时间都没有问题,使用Apache Axis从其中生成Java代码。手工制作SOAP消息似乎......哇,硬核一点。你确定你更喜欢通过类的创建,异常和所有这些东西的可视化XML的可视化与现成的integration方法之一使用吗?如果他们会改变WSDL,我只需要从它重新生成类;而对您的SOAP消息创建库的更改可能会很痛苦......

相关问题