Как мое приложение может подать заявку Salesforce с пользовательскими полями? - PullRequest
2 голосов
/ 25 мая 2010

У меня есть приложение, которое отправляет сообщения об ошибках для нескольких клиентов по нескольким направлениям. Я хотел бы, чтобы это приложение включало Salesforce в качестве пункта назначения. У меня есть веб-ссылка на Enterprise WSDL, и я могу создавать случаи для Salesforce. Это прекрасно работает, пока я не хочу включить пользовательские настраиваемые поля в качестве части дела. Пользовательские поля строго типизированы с префиксом __c для моего экземпляра salseforce. Но у меня не будет возможности обновить мой веб-сервис с помощью экземпляра salesforce для моих клиентов.

Как я могу отправить заявку Salesforce с настраиваемыми полями, которые не определены в WSDL?

Разве я не должен использовать Enterprise WSDL?

Ответы [ 2 ]

4 голосов
/ 25 мая 2010

Вам необходимо использовать Partner WSDL

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

Вот некоторые Примеры WSDL для партнеров на Java

1 голос
/ 27 мая 2010

Пример моего кода с использованием Partner WSDL

//Base class
public class SalesforceBase
{
    private readonly List<SalesforceCustomField> _customFields = new List<SalesforceCustomField>();
    private readonly XmlDocument _document = new XmlDocument();
    private readonly List<XmlElement> _elements = new List<XmlElement>();
    private readonly string _type;

    protected SalesforceBase(string type)
    {
        _type = type;
    }

    public string Type
    {
        get
        {
            return _type;
        }
    }

    public IEnumerable<SalesforceCustomField> CustomFields
    {
        get
        {
            return _customFields;
        }
    }

    public XmlElement[] Any
    {
        get
        {
            return _elements.ToArray();
        }
    }

    public void AddCustomField(SalesforceCustomField customField)
    {
        UpdateElements(customField.FieldName, customField.Value);
        _customFields.Add(customField);
    }

    protected void UpdateElements(string name, string value)
    {
        var element = _elements.Find(ele => ele.Name == name);
        if (element != null)
        {
            element.InnerText = value;
        }
        else
        {
            element = _document.CreateElement(name);
            element.InnerText = value;
            _elements.Add(element);
        }
    }
}
//Implement Base
public class SalesforceContact : SalesforceBase
{
    public SalesforceContact() : base("Contact") { }

    private string _firstName;
    public string FirstName
    {
        get { return _firstName; }
        set
        {
            if (value != null)
            {
                UpdateElements("FirstName", value);
                _firstName = value;
            }
        }
    }
}
//Send It
SForceService.create( new sObject(){Any = contact.Any, type = contact.Type});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...