Знайомство з мовою програмування Deluge. Створення довільної функції в системі Zoho CRM

На початку 2015 року мною була опублікована стаття про Zoho CRM, в якій я описав функціонал даної системи, але не розглядав питання її доопрацювання. Зараз я вирішив розповісти про доопрацювання детальніше, так як на практиці це виявилося дуже актуальним. З системою я працюю вже більше року, і її часто доводиться допрацьовувати під ті чи інші запити користувачів.

Доопрацювання системи Zoho CRM виробляються на мові Deluge, розробленому компанією Zoho. Deluge інтегрований також в продукт Zoho Creator, але в даній статті ми розглянемо використання мови саме в Zoho CRM.

Що таке Deluge?

Визначення з сайту (переклад з сайту).
Deluge (Data Enriched Language for the Universal Grid Environment ) — це online мова програмування, який допомагає додавати різні типи бізнес-логіки в довільні функції і робити їх більш потужними.

Deluge і ZOHO CRM

У Zoho CRM мова Deluge використовується при написанні так званої Custom function.
Custom function — це довільна функція, яка дозволяє доопрацьовувати поведінку системи відповідно до побажань користувачів, не завязываясь на якісь попередні налаштування.
З чого я пропоную почати знайомство з цією мовою? На сайті компанії Zoho є багато прикладів його використання, але я вирішив привести реальний приклад зі своєї практики. Дуже простий і наочний приклад, в якому будуть видні основні моменти роботи з мовою і демонстрація його можливостей.

Опис прикладу

Ми розглянемо, як створюється функція, яка була реалізована на одному з проектів. Функція називається Contacts Phone Validate. Завдання функції полягає в тому, щоб перевіряти правильність заповнення користувачами номера телефону контактної особи в Zoho CRM.

Функція повинна працювати наступним чином:

  • користувач вводить номер телефону контактної особи в Zoho CRM
  • якщо телефон введений у неправильному форматі, то система повідомляє про помилку шляхом надсилання електронного листа
  • якщо помилки у форматі введення немає — номер телефону додається в систему
Телефон може бути неправильним з кількох причин:

  • Якщо він введений у неправильному форматі
  • Якщо такий номер вже є в системі
Отже, розглянемо на прикладі, як відбувається створення довільної функції в системі Zoho CRM допомогою мови Deluge.

Налаштування функції проводиться безпосередньо в облікового запису користувача Zoho CRM і доступна користувачам з правами управління робочим процесом Workflow.

Відразу хочу звернути вашу увагу на те, що зважаючи неідеальної локалізації системи Zoho CRM ми будемо розглядати налаштування функції англійською мовою.

Додавання довільної функції

Додавання довільної функції включає в себе етапи:

  • Програмування функції
  • Зв'язування функції з правилом робочого процесу Workflow Rules
Розглянемо детально кожен з етапів.

1. Програмування функції

Для того, щоб запрограмувати довільну функцію, виконайте наступні дії:

1. Зайдіть в Setup > Automation > Workflow > Custom Function
2. На сторінці Custom Functions натисніть Configure Custom Function
3. Далі натисніть Write your own



4. У вікні, що відкрилося, виконайте наступні дії:

  • Виберіть ім'я функції. Наша функція буде називатися ContactsPhoneValidate. Далі натисніть на посилання Edit Arguments.
  • Виберіть модуль системи, в якому буде діяти функція. У нашому випадку це модуль Contacts. Співвіднесіть дані функції з ім'ям поля або з необхідним значенням у модулі CRM. У нашому прикладі параметром функції є contactPhone, який відповідає полю Phone в модулі Contacts.


  • Натисніть Done
5. Напишіть необхідну функцію в конструкторі Deluge Script.

У нашому прикладі функція виглядала наступним чином. Оголошуємо змінні:

mapVariable=map();// Створюємо змінну типу Map ( https://www.zoho.com/creator/help/script/create-map.html )
errorType=""; // змінній зберігаємо текст помилки

Перевіряємо правильність формату введення і територіальну приналежність:

if(input.contactPhone.startsWith(("+7"))) // Перевіряємо на +7, номер повинен бути без +
{
errorType="Формат Російського номера повинен бути 7XXXXXXXXXX!";
}
else if(input.contactPhone.startsWith(("+89"))) // Перевіряємо на початок +89 
{
errorType=("Префікс +89 заборонений в ZOHO CRM!");
}
else if(input.contactPhone.startsWith(("+84"))) // Перевіряємо на початок +84 
{
errorType=("Префікс +84 заборонений в ZOHO CRM!"); // Зберігаємо помилку
}
else if(input.contactPhone.startsWith("7")) // Якщо починається з 7 без плюса
{
if(input.contactPhone.length() != 11) // але довжина не дорівнює 11 символів
{
errorType=("Довжина російського номера повинна бути дорівнює 11 символів!"); 
}
else
{
phoneType="RUSSIA"; // Телефон російський
}
}
else if(input.contactPhone.startsWith(("+"))) // Якщо є символ"+", але без цифри 7, то номер міжнародний
{
phoneType="INTERNATIONAL";
}
else
{
errorType="Номер телефону некоректний"; 
}

Перевіряємо на наявність помилок:

if(errorType != "") // Якщо змінна не порожня - помилки є
{
mapVariable.put("Phone error","Невірний формат телефону");
mapVariable.put("Phone","-");
sendmail // відправляємо повідомлення про помилку на email користувача
[
from:zoho.loginuserid 
to:zoho.loginuserid 
subject:"Phone format error | Неправильний формат телефону"
message:"Невірний формат телефону! См. інструкцію з CRM!<br>Phone format is not correct! Look through the CRM manual!<br>Error message for phone number <b>" + input.contactPhone + "</b> is: " + errorType + "!"
content type:HTML
]
updateAccount = zoho.crm.updateRecord("Contacts",input.contactId.toString(),mapVariable); // і вносимо в базу даних CRM
}

Якщо з номером все в порядку, то перевіряємо на наявність дублікатів:

else // Якщо на даному етапі помилки немає 
{
contactPhone=input.contactPhone.replaceAll("\D",""); // Видаляємо все не цифри
if(phoneType == "INTERNATIONAL")
{
contactPhone="+" + input.contactPhone;
}
mapVariable.put("Phone",input.contactPhone); 
prevRecord = zoho.crm.searchRecords("Contacts","(Phone|=|" + input.contactPhone + ")",1); // Перевіряємо на наявність номери у базі даних

if(prevRecord.size() > 0) // якщо існує номер
{
i=0;
for each account in prevRecord // перевіряємо належить номер поточного контакту
{
if((((account).get("CONTACTID")).toLong() != input.contactId) && (i == 0)) // якщо номер не належить поточним контакту
{
i=1;
mapVariable.put("Phone error","У контакті задвоен телефон!"); 
mapVariable.put("Phone","-");
sendmail // Висилаємо інформацію про те, що контакт з таким телефоном існує
[
from:zoho.loginuserid
to:zoho.loginuserid
subject:"Duplicate Phone | Задвоен телефон"
message:((((((("У контакті задвоен телефон<br>Phone in Contact(" + (account).get("CONTACTID")) + ") is duplicated<br>Phone ") + (account).get("Phone")) + "<br>Owner: <a href='https://crm.zoho.com/crm/ShowSetup.do?tab=usersPermi&subTab=viewUser&userId=") + (account).get("SMOWNERID")) + "'>") + (account).get("Contact Owner")) + "</a><br>Зв'яжіться з власником контакту"
content type:HTML
]
}
}
}
else
{
mapVariable.put("Phone error",""); 
}
updateAccount = zoho.crm.updateRecord("Contacts",input.contactId.toString(),mapVariable); // Оновлюємо дані контакту.
}

6. Після написання функції необхідно перевірити код. Натисніть Save and Execute Script бажаєте перевірити роботу скрипта ввівши значення аргументів у спливаючому вікні. Якщо помилок немає, ваш скрипт готовий до асоціюванню з правилом робочого процесу Workflow.



7. Натисніть Save для збереження скрипта.



2. Зв'язування функції з правилом робочого процесу Workflow Rules

Щоб пов'язати власну функцію з правилом робочого процесу зайдіть в Налаштування > Automation > Workflow Rules, далі натисніть Create Rule.

Виконайте наступні дії:

1. Виберіть необхідний модуль з розкривного списку (в нашому випадку це модуль Contacts), вкажіть назву і опис правила.



2. У розділі Rule Trigger виберіть пункт Create or Edit



3. У розділі Rule Criteria встановлюємо критерії
4. У розділі Actions виберіть Call Custom Function

  • Натискаючи +


  • На сторінці Configure Custom Function перейдіть за посиланням Customized Functions


  • Виберіть необхідну раніше створену функцію. Ми вибираємо функцію СontactsPhoneValidate
5. Натисніть Save

Тепер наша функція пов'язана з правилом робочого процесу Workflow, і при введенні неправильного формату телефону, або при дублюванні номери користувач отримує повідомлення про помилку.

Висновок

Ми побачили, як за допомогою мови Deluge створити в Zoho CRM функцію і як ця функція працює всередині системи. Створення функції на мові Deluge — не складна річ, яка дозволяє доопрацьовувати поведінку системи Zoho CRM у відповідності з вашими побажаннями і значно розширює можливості програми.

Про використання Deluge в іншому продукті компанії Zoho — Zoho Creator я розповім вже в наступній статті.

Джерело: Хабрахабр

0 коментарів

Тільки зареєстровані та авторизовані користувачі можуть залишати коментарі.