Я разрабатываю драйвер менеджера по Идентификационным данным Novell для Salesforce.com и пытаюсь понять платформу Salesforce.com лучше.
Я имел действительно хороший успех до настоящего времени. Я могу считать в значительной степени классы произвольного объекта из SFDC и создать объекты eDirectory для них, и что нет. Это все сделано и работающий приятно. (Канал издателя). После того как я планировал события Query, большинство все начало работать в Канале Издателя.
Я теперь работаю над передачей обратно событий к SFDC (Канал подписчика), когда изменения происходят в eDirectory.
Я использую upsert () функция в API SOAP, и с менеджером по Идентификационным данным Novell, Вы в основном создаете документ SOAP и видите результаты, как Вы создаете его. (Можно сделать это в XSLT, или можно использовать различные позволенные маркеры для создания документа в Сценарии DirXML. Я использую Сценарий DirXML, который работал хорошо до сих пор.).
Результат того комментария - то, что я могу создать документ SOAP, посмотрите его, чтобы быть уверенными, что я разбираюсь в нем. Который обычно отличается, чем подход Java/C++, который обычно обеспечивает пример кода. Намного более визуальный этот путь.
Существует несколько вещей о upsert (), что я действительно не полностью понимаю. Я знаю, как очистить значение, должен я получать такое событие. В
узел, добавляет узел как (предположение, что Вы уже объявили свои пространства имен):
Я знаю, как добавить значение (AttrValue) к атрибуту (Имя поля), добавьте узел как:
Все это работает и является довольно прямым.
Вопрос, который я имею, может значение в SFDC быть многозначным? В eDirectory, много ценный изменяемый атрибут, может произойти два пути:
Смотря на SFDC, я только когда-либо вижу атрибуты Multi-picklist, которые, кажется, хранятся в однократном въезде: или; разграниченный. Действительно ли там другой - вид много ценного атрибута, управляемого по-другому в SFDC? И если так, как можно было бы управлять им через API SOAP?
Я все еще должен решить, хочу ли я отобразить те multi-picklists на единственную строку или много ценный атрибут строк. Первый путь легче, второй путь более полезен... Хм... Выбор...
Некоторые ссылки:
Насколько мне известно, нет поля с несколькими значениями, кроме раскрывающихся списков с множественным выбором (и они отображаются в строку, разделенную точкой с запятой). Обычно платформа поощряет вас создавать правильные отношения с другой (возможно, новой, настраиваемой) таблицей, если вам нужно иметь несколько значений, связанных с вашими данными.
Еще одна «необычная» вещь, о которой я могу думать, - это то, как можно использовать поле OwnerId на определенных объектах (Case, Lead, может быть, что-то еще), чтобы указать на запись User или Queue. Это выглядит странно, если вы привыкли к отношениям внешнего ключа из традиционных баз данных. Но это не совпадает с тем, что вы спрашиваете, поскольку одновременно будет только одно значение.
Конечно, иногда вы можете быть удивлены значениями, которые вы увидите в базе данных в зависимости от локали просматривающего пользователя (например, профиль системного администратора становится Systeembeheerder на голландском языке). Но это по-прежнему будет одно значение, переведенное на лету непосредственно перед отправкой вам результатов запроса.
Когда мне приходилось выполнять интеграцию SOAP с SFDC, я всегда использовал файлы WSDL, и большую часть времени все было нормально с Java-кодом, созданным из них с помощью Apache Axis.Самостоятельное создание SOAP-сообщения кажется ... вау, немного хардкорно. Вы уверены, что предпочитаете визуализацию XML, а не создание классов, исключений и всего этого, готового к использованию, с помощью одного из нескольких готовых методов интеграции ? Если они когда-нибудь изменят WSDL, мне нужно просто регенерировать из него классы; в то время как изменения в вашей библиотеке создания сообщений SOAP могут быть болезненными ...