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

Как запустить построитель процессов нажатием кнопки на объекте?

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

Требования: новое числовое поле, настраиваемая кнопка, построитель процессов. Некоторое понимание JavaScript и SOQL.

Создайте новое числовое поле. (Я назвал свой триггер Process Builder) Назовите его и не забудьте дать описание, чтобы администраторы / разработчики позже не запутались.

Создайте новую настраиваемую кнопку. Обозначьте это и опишите.

Внимание! Тип отображения должен быть Кнопка страницы сведений. Поведение должно быть Выполнение JavaScript.

Поместите этот код в свою кнопку. При необходимости измените имена переменных.

//I am assuming this code allows for the JS SOQL calls
//Check the resources section for SF documentation
{!REQUIRESCRIPT("/soap/ajax/29.0/connection.js")} 
{!REQUIRESCRIPT("/soap/ajax/29.0/apex.js")}
//Select the current account records and put it into the record //variable
var records = sforce.connection.query("SELECT Id, Process_Builder_Trigger__c FROM Account Where id = '{!Account.Id}'");
//The records object come with other garbage so we need to only pull //out the account we are working with
//Pull the account object out of the records variable and set it to //accountRec
var accountRec = records.getArray('records')[0];
//Increase accountRec Process_Builder_Trigger__c 
//JS sees the number field as a string so this will make sure that //is a number - Number(accountRec.Process_Builder_Trigger__c)
accountRec.Process_Builder_Trigger__c = Number(accountRec.Process_Builder_Trigger__c) + 1;
//Update accountRec object 
sforce.connection.update([accountRec]);
//Reload the page 
window.location.reload();

Добавьте кнопку в макет объекта.

Наконец, создайте построитель процесса, который запускается при изменении числового поля. Теперь построитель процессов может делать все, что вы хотите!

На самом деле это всего 5 строк кода. Понимание того, что нажатие кнопки увеличит количество числового поля, вместо того, чтобы выполнять встроенное редактирование или переходить на страницу редактирования, является ключевым. В разделе ресурсов я включу суть текущей версии, которая у меня есть, с проверкой пользователя и диалоговым окном подтверждения, чтобы запросить пользователя.

Но почему?

Одна из основных причин, по которой я выбрал метод поля кнопки и числа, а не флажок, заключается в том, что вы можете повторно использовать числовое поле, и оно в основном автоматически подсчитывает количество нажатий кнопки.

А потому было интересно.

Проблемы

Одна из серьезных проблем, которые я обнаружил при использовании этого метода для запуска построителя процессов, заключается в том, что он медленный. Существует задержка между нажатием кнопки и обновлением страницы. Для моей организации это не проблема, но для других она может быть проблемой. Поскольку существует задержка между обновлением страницы и нажатием кнопки. Некоторые довольные щелчком пользователи могут запускать построитель процессов много раз. Вот почему я добавил код подтверждения JS - см. Суть.

Заявление об ограничении ответственности / ресурсы

Я не являюсь «экспертом» в области администрирования или разработки Salesforce. В настоящее время (24.08.2016) у меня 1 год опыта работы с Salesforce. Работаю над своим сертифицированным разработчиком платформы Salesforce I. Конечно, есть и другие способы решения этой проблемы, но это тот, который я выбрал, чтобы узнать что-то новое и в основном посмотреть, возможно ли это.

Документация Force.com Workbook на JS и пользовательскую кнопку.

Спасибо, что зашли так далеко.