Определите, есть ли у текущего пользователя доступ к функциям Salesforce CRM Content через партнерский API - PullRequest
2 голосов
/ 28 марта 2011

При использовании Salesforce Partner API (версия 21.0), как я могу определить, может ли текущий пользователь / сеанс создать новую версию контента ?

Использование descriptionGlobal () Я могу подтвердить, что ContentVersion и ContentDocument доступны как объекты для текущей организации.

Использование descriptionSObject () Я могу подтвердить, что текущий сеанс пользователя помечает ContentVersion как создаваемый. Я также подтвердил, что поля, которые я задаю при вставке записи ContentVersion, помечены как создаваемые (PathOnClient, VersionData и FirstPublishedLocationId).

В моих тестовых случаях, если у пользователя есть доступ к области контента через веб-интерфейс Salesforce, тогда тестовый пример проходит с созданием ContentVersion.

Однако, когда я пытаюсь использовать тот же код из редакции разработчика (без доступа к области контента), он падает с сообщением:

FIELD_INTEGRITY_EXCEPTION - Пользователь не имеет доступа к контенту Salesforce. Неверное значение поля :: Источник происхождения

Создаваемые метаданные Partner API для ContentVersion и поля, указывающие, что это должно сработать.

Я работаю в C #, но код Java в рецепте Публикация документов в Personal Workspace Salesforce CRM Content делает то же самое без проверок метаданных, которые можно создавать.

Чтобы попытаться исключить мой код как причину проблемы, я подтвердил, что ContentVersion должен создаваться с помощью Force.com Explorer:

Force.com Explorer showing attributes for ContentVersion

Ответы [ 2 ]

2 голосов
/ 06 апреля 2011

Я думаю, я понял это.Проверка того, что ContentVersion можно создать отдельно, недостаточна.

Мне также нужно было проверить, что у текущего пользователя (как указано getUserInfo () ) есть поле UserPermissionsSFContentUser и что оно истинно.

Из Руководства разработчика API веб-служб для User.UserPermissionsSFContentUser .

Указывает, назначена ли пользователю одна лицензия пользователя Salesforce CRM Content (true) или нет (false).Ярлык является пользователем Salesforce CRM.Лицензия пользователя контента Salesforce CRM предоставляет пользователю доступ к приложению контента Salesforce CRM.

2 голосов
/ 30 марта 2011

Объекты Content немного причудливы в Salesforce, так как они были частью приобретения компании под названием Koral, поэтому некоторые их поведения не совсем такие же, как и у других стандартных объектов Salesforce.

Я пытался проверить ContentDocument.creatable, но это неверно даже для пользователей, которые могут создать Контент в противном случае.

Это потому, что ContentDocument никогда не создается, он поддерживает только следующие методы: delete (), query (), retrieve (), undelete (), descriptionSObjects ()

Чтобы создать ContentDocument, вам нужно создать новый объект ContentVersion без установки ContentDocumentId.

Из Руководства разработчика API веб-служб :

Это автоматически создает родителя запись документа. При добавлении нового версия документа, вы должны указать существующий ContentDocumentId который инициирует процесс пересмотра для документа. Когда последний версия опубликована, название, владелец, и опубликовать статус поля обновлено в документе.

Проверка на ContentVersion.creatable должна работать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...