В salesforce.com вы можете иметь многозначные атрибуты? - PullRequest
1 голос
/ 26 апреля 2010

Я разрабатываю драйвер Novell Identity Manager для Salesforce.com и пытаюсь лучше понять платформу Salesforce.com.

У меня действительно хороший успех на сегодняшний день.Я могу читать довольно много произвольных классов объектов из SFDC и создавать для них объекты eDirectory, а что нет.Это все сделано и работает хорошо.(Издательский канал).После того, как мне удалось сопоставить события Query, большинство всего начало работать на канале издателя.

Сейчас я работаю над отправкой событий обратно в SFDC (канал подписчика), когда происходят изменения в eDirectory.

Я использую функцию upsert () в SOAP API, а с Novell Identity Manager вы в основном создаете документ SOAP и можете видеть результаты по мере его создания.(Вы можете сделать это в XSLT или использовать различные разрешенные токены для построения документа в DirXML Script. Я использую DirXML Script, который до сих пор работал хорошо.).

Результат этого комментариячто я могу создать документ SOAP, посмотреть его, чтобы убедиться, что я правильно понял.Который обычно отличается от подхода Java / C ++, который обычно обеспечивает пример кода.Гораздо более наглядно в этом смысле.

В upsert () есть несколько вещей, которые я не совсем понимаю.Я знаю, как очистить значение, если я получу событие такого рода.Внутри узла <urn:sObjects> добавьте узел типа (при условии, что вы уже объявили свои пространства имен):

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

Я знаю, как добавить значение (AttrValue) в атрибут (FieldName), добавьте узел, например:

<FieldName>AttrValue</FieldName>

Все это работает и довольно просто.

У меня вопрос: может ли значение в SFDC быть многозначным?В eDirectory изменение многозначного атрибута может происходить двумя способами:

  • Все значения могут быть удалены, а новый набор добавлен заново.
  • Одно удаленное значение может бытьотправлено как событие такого рода (remove-value) или многие значения могут быть удалены за одну операцию.

Глядя на SFDC, я когда-либо вижу только атрибуты Multi-picklist, которые, кажется, хранятся в однойзапись: или;разграничены.Есть ли другой тип многозначного атрибута, который по-разному управляется в SFDC?И если да, то как можно было бы манипулировать им с помощью API-интерфейса SOAP?

Мне все еще нужно решить, хочу ли я отобразить эти множественные списки в одну строку или многозначный атрибут строк.Первый способ проще, второй способ более полезен ... Хммм ... Выбор ...

Некоторые ссылки:

  • Я использовал страницу Пример SOAPсообщения , чтобы понять, как должны выглядеть документы.
  • Apex Explorer - это инструмент для просмотра базы данных и тестирования запросов.Так же, как DBVisualizer делает для баз данных, связанных с JDBC.Без этого было бы намного сложнее!
  • Требуется также SoapUi и прекрасный инструмент!

1 Ответ

2 голосов
/ 27 апреля 2010

Насколько я знаю, нет поля с несколькими значениями, кроме списков с несколькими выборами (и они отображаются в строку, разделенную точкой с запятой). Обычно платформа предлагает вам создать правильные отношения с другой (возможно, новой, пользовательской) таблицей, если вам нужно иметь несколько значений, связанных с вашими данными.

Единственная другая «необычная» вещь, о которой я могу подумать, это то, как поле OwnerId на определенных объектах (Case, Lead, возможно, что-то еще) может использоваться для указания на запись User или Queue. Выглядит странно, когда вы привыкли к связям внешних ключей из традиционных баз данных. Но это не совпадает с тем, что вы спрашиваете, так как будет одновременно только одно значение.

Конечно, иногда вы можете быть удивлены значениями, которые вы увидите в базе данных в зависимости от локали просмотра пользователя (например, профиль системного администратора становится Systeembeheerder на голландском языке). Но это все равно будет одно значение, переведенное на лету непосредственно перед отправкой результатов запроса.

Когда мне приходилось выполнять SOAP-интеграцию с SFDC, я всегда использовал файлы WSDL, и большую часть времени мне нравился код Java, сгенерированный из них с помощью Apache Axis. Самостоятельное создание сообщения SOAP кажется ... вау, немного хардкорным. Вы уверены, что предпочитаете визуализацию XML над созданием классов, исключений и всего этого, готового к использованию одним из нескольких готовых интеграционных методов? Если они когда-нибудь изменят WSDL, мне нужно просто восстановить классы из него; тогда как изменения в вашей библиотеке создания сообщений SOAP могут быть болезненными ...

...