Збереження історії переходу між стадіями Business Process Flow або життєвого циклу

В PowerApps або Dynamics 365 є такий візуальний елемент, який має назву в оригіналі “Business Process Flow” (далі BPF), цей елемент, може бути створено до будь-якої таблиці існуючого рішення Dynamics 365 або таблиці в користувацькому додатку з типом model-driven.

Частий запит від користувачів, бачити тривалість перебування запису на тій чи іншій стадії, іноді фіксації історії (як довго ми переходили між стадіями та хто з користувачів ініціював перехід). В таблиці до якої ми привʼязуємо BPF не існує стандартних полів для задоволення таких вимог, відповідно нам треба шукати власні.

Я свідомо пропускаю процес створення основної таблиці та життєвого циклу для неї, почнемо одразу з вирішення питання запису історії.

В моєму випадку я працюю над кастомним додатком класу CRM систем, основна таблиця “Lead” та до неї привʼязаний BPF з назвою “Життєвий цикл ліда”.

Порядок дій

1. Нам потрібно створити таблицю для збереження даних про зміни в процесі, налаштувати подання (view) та калькульовані поля тривалості.

Cтворюємо таблицю з назвою Lead Process History (у вас може бути власна назва).
Додаємо необхідні поля для звʼязків.

Важливо! Не забудьте оновити існуючі ролі безпеки з правом створення та перегляду записів в новій таблиці!

Тривалість – описую у 2 варіантах, станом на момент написання статті ми можемо створити через калькульоване поле або поле з типом формула.
Оберіть один з варіантів.

У вас може виникнути проблема з прихованою таблицею Process Stage, для того щоб її обрати в полі з типом lookup, переключіться в класичний інтерфейс.

Виносимо необхідні поля на подання для відображення потім на вкладці форми Lead, я використовую стандартне подання Active Lead Process History.

2. Створити процес, який при зміні стадії запише дані в поля таблиці створеної на першому кроці.

Почнемо створення процесу або workflow: тип – real-time, entity – вкажіть таблицю вашого BPF (в моєму випадку Життєвий цикл ліда), важливо в полі Start when – треба обрати значення Before та обрати параметр Process changes.

В полі Select – необхідно обрати поля в яких ми очікуємо зміну в даних, які в свою чергу запустять виконання даного процесу, обираємо:
Active Stage
Status Reason

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

Після перевірки додаємо крок з типом Create Record, обираємо в якій таблиці ми хочемо створити запис, це має бути таблиця з нашого першого кроку та вказуємо дані в полях згідно зображення нижче.

Зберігаємо та активовуємо наш процес.

3. Створити процес, який при переходу на стадію, збереже дату та час початку активної стадії в полі основної таблиці, створити калькульоване поле тривалості знаходження на поточній стадії.

Почнемо зі створення поля в яке ми запишемо дату початку поточної стадії bpf, тип поля “дата та час”, нагадую, що створюємо це поле в основній таблиці.

Далі створюємо процес по аналогії з кроком 2 але з деякими відмінностями.

Важливо! Значення Start when в даному випадку має бути after – оскільки ми хочемо записати значення саме активного кроку, в полі Process changes обираємо поля як і в кроці 2 Active Stage, Status Reason.

В кроках ми маємо оновити значення в новоствореному полі основної таблиці Lead.

Не забуваємо Зберегти та Активувати процес.

Створюємо поле з типом ціле число, вказуємо, що воно буде калькульоване або поле з типом формула “Тривалість поточної стадії”, в якому нам потрібно буде розрахувати різницю між датою/часом початку активної стадії та датою/часом зараз або Now().

У випадку калькульованого поля пишемо в поле формули DiffInMinutes(час початку стадії, Now()) – ви отримаєте число в хвилинах для отримання даних в годинах змініть функцію на DiffInHours.

4. Налаштувати дизайн форм та поданнів для відображення всіх наших змін, наприклад винести на окрему вкладку форми основної таблиці, дані про історію змін, розташувати поля на всіх необхідних формах.

На формі основної таблиці виносимо поле “Тривалість поточної стадії” або додаємо його тільки до подання для отримання інформації без необхідності відкриття запису.

Історію переміщення по стадіям та тривалості додаємо на форму в окрему вкладу, як subgreed обовʼязково вказуючи “Show related records”

Сподіваюсь інформація буде корисною та допоможе в роботі з Dynamics/PowerApps.

P.S. Дякую за натхнення автору статті https://powerapps.ninja/bpf-automation-scenario-preserving-history-of-stage-duration/

Leave a comment