Невозможно развернуть событие платформы с помощью Ant Migration Tool - PullRequest
0 голосов
/ 26 октября 2018

У меня проблема с загрузкой метаданных в организацию сборки управляемого приложения Salesforce с помощью инструмента миграции ant. Первоначальная проблема была в довольно крупном приложении, но мне удалось сократить его до 2 файлов, которые демонстрируют проблему: Platform Event и класс Apex (веб-сервис), который публикует его.

объекты / CTIDeviceUpdateEvent__e:

<?xml version="1.0" encoding="UTF-8"?>
<CustomObject xmlns="http://soap.sforce.com/2006/04/metadata">
    <deploymentStatus>Deployed</deploymentStatus>
    <description>Event raised by AVS when the CTI user updates their outbound device.</description>
    <eventType>StandardVolume</eventType>
    <fields>
        <fullName>NewCtiDevice__c</fullName>
        <externalId>false</externalId>
        <isFilteringDisabled>false</isFilteringDisabled>
        <isNameField>false</isNameField>
        <isSortingDisabled>false</isSortingDisabled>
        <label>NewCtiDevice</label>
        <length>64</length>
        <required>true</required>
        <type>Text</type>
        <unique>false</unique>
    </fields>
    <fields>
        <fullName>UserId__c</fullName>
        <externalId>false</externalId>
        <isFilteringDisabled>false</isFilteringDisabled>
        <isNameField>false</isNameField>
        <isSortingDisabled>false</isSortingDisabled>
        <label>UserId</label>
        <precision>18</precision>
        <required>true</required>
        <scale>0</scale>
        <type>Number</type>
        <unique>false</unique>
    </fields>
    <label>CTI Device Update Event</label>
    <pluralLabel>CTI Device Update Events</pluralLabel>
</CustomObject>

классы CtiDeviceUpdateWebService.cls

global with sharing class CtiDeviceUpdateWebService {

    webservice static void ctiDeviceUpdate(Integer natterboxUserId, String newCtiDeviceRaw) {

        List<CTIDeviceUpdateEvent__e> evlist = new List<CTIDeviceUpdateEvent__e> { new CTIDeviceUpdateEvent__e(UserId__c = 1, NewCTIDevice__c = '2001') } ;

        // Call method to publish events
        List<Database.SaveResult> results = EventBus.publish(evlist);

        // Inspect publishing result for each event
        for (Database.SaveResult sr : results) {
            if (sr.isSuccess()) {
                System.debug('Successfully published event.');
            } else {
                for(Database.Error err : sr.getErrors()) {
                    System.debug('Error returned: ' +
                            err.getStatusCode() +
                            ' - ' +
                            err.getMessage());
                }
            }
        }
    }
}

package.xml:

<?xml version="1.0" encoding="UTF-8"?>
<Package xmlns="http://soap.sforce.com/2006/04/metadata">
    <types>
        <members>*</members>
        <name>CustomObject</name>
    </types>
    <types>
        <members>*</members>
        <name>ApexClass</name>
    </types>
    <version>41.0</version>
</Package>

При развертывании API метаданных я получаю следующий результат:

[sf:deploy] Request for a deploy submitted successfully.
[sf:deploy] Request ID for the current deploy task: 0Af1n00001VmcmHCAR
[sf:deploy] Waiting for server to finish processing the request...
[sf:deploy] Request Status: InProgress
[sf:deploy] Request Status: Failed

BUILD FAILED
/Users/jim.page/Documents/salesforce_ant_43.0/nbavs/build.xml:31: 
*********** DEPLOYMENT FAILED ***********
Request ID: 0Af1n00001VmcmHCAR

All Component Failures:
1.  classes/CtiDeviceUpdateWebService.cls -- Error: Method does not exist or incorrect signature: void publish(List<CTIDeviceUpdateEvent__e>) from the type EventBus (line 12, column 54)
2.  classes/CtiDeviceUpdateWebService.cls -- Error: Invalid type: CTIDeviceUpdateEvent__e (line 9, column 9)

*********** DEPLOYMENT FAILED ***********

Я пробовал разные версии API, разные настройки в метаданных событий разных типов, используя пространство имен моего управляемого пакета, и Google и я вне идей.

Примечание. Когда я просто разворачиваю событие платформы самостоятельно, развертывание работает, и я вижу его в разделе Setup | Platform Events в организации сборки. Но когда веб-служба добавляется в смесь, развертывание не выполняется. Нет проблем с доступом к пользовательским объектам из веб-службы.

Обратите внимание, что этот код отлично работает в dev-организации.

1 Ответ

0 голосов
/ 26 октября 2018

Хорошо - в тот момент, когда я опубликовал этот вопрос, один из моих коллег дал мне ответ.Файл метаданных класса имел номер версии, который был до 41.0, когда события платформы были запущены в производство.

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