Использование веб-службы SalesForce для создания и установки типа задачи - PullRequest
1 голос
/ 18 июня 2010

Я успешно создаю задание с использованием API-интерфейса SOAP API SalesForce через Java.

Однако моя проблема в том, что я не могу установить его тип. Все они по умолчанию «Позвонить», но я действительно хочу, чтобы они были «Электронная почта».

Может ли кто-нибудь указать мне, куда я могу это сделать? Я думаю , что это связано с RecordTypeMapping, но я несколько озадачен тем, как использовать это в моем Java-коде, чтобы найти конкретный тип задачи.

Я чувствую, что так близко с этим справился. У меня есть правильный WSDL, который дает мне дополнительный метод для класса Task.java, но независимо от того, что я передаю, он умирает.

Кажется, это не слишком большая просьба, но я озадачен тем, к каким точкам присоединиться, чтобы заставить его работать

Любая помощь будет оценена. спасибо

Ответы [ 2 ]

3 голосов
/ 18 июня 2010

Это поле доступно через API, как и любое другое. Ваша проблема также не имеет ничего общего с RecordTypes (когда вы вставляете запись через API, вы можете указать любую строку в качестве значения списка выбора).

Итак, давайте начнем с контрольного списка , и если это не поможет, мы подумаем о дополнительных возможностях:)

  1. Видимо ли поле на странице "Новая задача"?
  2. Что говорит «Доступность поля просмотра» ? (поместите свой собственный идентификатор организации в ссылку, я использовал мой "na5")
  3. Знаете ли вы профиль пользователя, чьи учетные данные вы используете для подключения через API (например, «Системный администратор»)? Можете ли вы проверить в «Установка безопасности на уровне поля» , что этот профиль может видеть это поле (1-й флажок) и не помечен как доступный только для чтения (2-й флажок)?
  4. Можете ли вы попытаться установить «Вызов» в качестве значения по умолчанию для этого поля и посмотреть, что произойдет?
  5. Можете ли вы попробовать вставить новую задачу через загрузчик данных Salesforce.com? Если это сработает, это будет означать, что сам по себе API в порядке (Data Loader также использует API), и проблема лежит где-то в вашем приложении.
  6. Если вам действительно необходим доступ к так называемым метаданным, чтобы узнать возможные значения списка выбора, вы можете использовать вызовы description (). Это должно помочь вам начать, но, как я уже говорил, насколько я помню, значения списка выбора не применяются при использовании API.
  7. Глупо, но ... проконсультируйтесь с вашим системным администратором, если он не поместил никаких рабочих процессов, которые изменяют значение этого поля. И спросите разработчиков Apex, есть ли какие-либо триггеры «перед вставкой» в объекте Task ...

РЕДАКТИРОВАТЬ: для всех пользователей, у которых есть проблемы с интеграцией Salesforce (особенно "Я создал новое настраиваемое поле, кажется, я могу запросить его, но я не вижу его в возвращаемом Результаты ») есть еще пара шагов:

Если вы используете корпоративный WSDL - не забудьте скачать свежую копию. Java, C # и т. Д. Люди должны восстановить свои классы из wsdl («потреблять» его снова), чтобы увидеть новые поля. Пользователи PHP не должны беспокоиться (в прошлый раз, когда я проверял, что все выполняется во время выполнения в "PHP toolkit" ... конечно, если вы действительно сгенерировали что-то из WSDL - сделайте это снова). Но в случае с PHP кажется, что WSDL может быть как-то кэширован в вашем приложении. Перезагрузите сервер, чтобы убедиться, что используется свежий wsdl?


Это заняло у меня больше времени, чем ожидалось (Apache Axis 2 генерирует совершенно другой код, чем тот, который я использовал с Axis 1.x) + Я столкнулся с некоторыми другими отвлекающими факторами, но я проверил это.

Вкратце: это обычное поле, доступное через API, и оно работает для меня.

Пожалуйста, убедитесь, что ваш корпоративный WSDL содержит строки, подобные

<complexType name="Task">
    <complexContent>
        <extension base="ens:sObject">
            <sequence>
                <element name="Account" nillable="true" minOccurs="0" type="ens:Account"/>
                (...)
                <element name="Type" nillable="true" minOccurs="0" type="xsd:string"/>
                (...)
            </sequence>
        </extension>
    </complexContent>
</complexType>

Если это так - восстановите ваши классы Java из него. Если нет - загрузите новый WSDL.

С помощью Apache Axis2 и enterprise.wsdl мне удалось создать такой пример кода:

Task task = Task.Factory.newInstance();
task.setType("Alan's Email");   // Not a valid picklist value, just to prove that these don't matter when we use API.
task.setWhatId("0067000000AH3ME"); // An Opportunity Id ("Burlington Textiles" in my test org) to which this task will be related.
task.setStatus("Not Started");
task.setPriority("Normal");
task.setDescription("A new Task has been created with methods from Enterprise WSDL.");

Вы можете скачать весь тестовый проект (довольно большой) здесь . Существует большая вероятность, что код выглядит странно, если вы привыкли к стилю Axis 1.x (большинство примеров Salesforce API написаны с использованием старого Axis), но, уверяю вас, это сработало для меня.

Если вам все еще нужна помощь - я думаю, нам придется связаться напрямую?

Удачи.

0 голосов
/ 28 июня 2010

Имя поля API, которое содержит 'Call' (и значение по умолчанию) - ComboBox, а не PickList, и оно называется Subject.

Task.Subject = 'Email';

Если вы хотите установить значение по умолчанию, сделайте это из приложения Salesforce:

Setup->Customize->Activities->Task Fields->Subject
...