Salesforce: вход через SOAP от Salesforce к Salesforce - PullRequest
0 голосов
/ 01 марта 2012

Я реализовал пакетное задание, которое выполняет вызов веб-службы в том же экземпляре salesforce, который затем должен отправлять электронные письма с вложением в формате PDF, поскольку вы не можете отправлять вложения в формате PDF непосредственно из пакетного задания. Мой вызов веб-сервиса выглядит так:

    public static void callOut(List ids){ 
        InvoiceAttachmentConnector.InvoiceAttachmentService ws = new InvoiceAttachmentConnector.InvoiceAttachmentService(); 
        ws.SessionHeader = new InvoiceAttachmentConnector.SessionHeader_element(); 
        ws.SessionHeader.sessionId = UserInfo.getSessionId(); 
        ws.handleInvoicePdfAttachment(ids); 
    }

Однако в пакетных заданиях UserInfo.getSessionId () возвращает ноль, поэтому я получаю исключение INVALID_SESSION_ID.

Как мне войти в систему, чтобы получить SessionId? До сих пор я не нашел решения для входа из Salesforce в Salesforce. Если бы вы могли помочь, я был бы признателен! Спасибо!

1 Ответ

2 голосов
/ 02 марта 2012

Вы не можете получить идентификатор сеанса, подобный этому, в пакетном апексе, так как он работает в контексте системы и поэтому не имеет конкретной пользовательской информации для извлечения.

ОБНОВЛЕНИЕ:

У вас есть следующие опции:

  1. Попробуйте запустить веб-сервисы wsdl из вашей организации Salesforce через генератор wsdl to apex в вашей организации для генерациинекоторые классы, которые могут позволить вам войти в систему.Вам разрешен только один запрос веб-службы на вызов выполнения.
  2. Вы можете создать страницу сайтов, к которой вы делаете запрос HTTP-получения, в своем пакетном апексе.Для этого необходимо получить идентификаторы элементов, для которых вы хотите отправить PDF-файлы, и конкретного пользователя, который будет работать, поскольку вы должны использовать метод System.runAs (user).Вы можете передать эти параметры в заголовок HTTPRequest или в пользовательскую настройку.

Обратите внимание, что ни одно из этих решений не является идеальным, вы можете сначала пересмотреть, почему вы используете Batch Apex, и посмотреть,Вы можете переопределить его по-другому.

...