Використання FetchXML у Power Automate для Розширеного Пошуку Даних

Power Automate стає все більш важливим інструментом для автоматизації процесів у бізнес-середовищі. Для отримання точних та складних даних з бази даних Dataverse в Power Apps чи Dynamics 365- FetchXML надає величезні можливості. У цій статті я розповім, як можна використовувати FetchXML у кроках Power Automate для створення запитів з більшою гнучкістю та контролем.

Що таке FetchXML?

FetchXML — це запит на мові XML, який використовується для пошуку та отримання даних з Dataverse. Це потужний інструмент, який дозволяє будувати запити з фільтрами, сортуванням полів.

Чому саме FetchXML у Power Automate?

Power Automate дозволяє створювати автоматизовані потоки з використанням різних джерел даних, включаючи Dataverse. Однак вбудовані можливості пошуку даних можуть бути обмежені у певних сценаріях. FetchXML надає гнучкість у випадках, коли необхідно здійснити складний пошук або обробку даних, як-от:

  • Використання умовного фільтра або сортування.
  • Робота з полями з пов’язаних сутностей чи таблиць.
  • Побудова складних вкладених запитів.

Як використовувати FetchXML у Power Automate?

  1. Створення FetchXML Запиту: Для створення FetchXML запиту можна скористатися вбудованим конструктором запитів у Dynamics 365 чи Power Apps, тобто від вас не потрібно “кодити”.
    Наприклад, перейдіть до розділу Advanced Find “Додатковий пошук” у вашій системі та побудуйте необхідний запит. Після аналізу результату, якщо дані коректні, експортуйте цей запит як FetchXML, завантажиться файл та ви зможете скопіювати код запиту відкривши файл в додатку Блокнот чи просто відредагуйте фільтр в поданні вашої цільової таблиці.

Приклад

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

    Перейдемо в список записів нашої таблиці Project Tasks та натиснемо кнопку Edit Filters

    Далі нам треба сформувати фільтр який нам необхідний.

    В моєму випадку, я хочу отримати всі завдання, які в назві містять слово “milestone” та тривалість яких дорівнює 0 та мене цікавлять не всі завдання, а саме в конкретному проекті (далі покажу навіщо нам включати проект у фільтр) та відсоток завершення яких не дорівнює 1 (це тому, що насправді в базі даних відсоток завершення записується як десяткове число 45% = 0,45)

    Після налаштування фільтру, перевіряємо результат і якщо все ок, натискаємо ще раз Edit Filters та тиснемо Download FetchXML.

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

    <fetch version="1.0" output-format="xml-platform" mapping="logical" savedqueryid="10349fc7-72f7-ec11-bb3d-0022489b2a9e" no-lock="false" distinct="true"><entity name="msdyn_projecttask"><attribute name="statecode"/><attribute name="msdyn_projecttaskid"/><attribute name="msdyn_subject"/><attribute name="msdyn_project"/><attribute name="msdyn_progress"/><attribute name="msdyn_duration"/><filter type="and"><condition attribute="msdyn_duration" operator="eq" value="0"/><condition attribute="msdyn_subject" operator="like" value="%milestone%"/><condition attribute="msdyn_project" operator="eq" value="{e7ef6406-8609-4e12-b0ee-e22f6217e1fa}" uiname="Blog Article Project" uitype="msdyn_project"/><condition attribute="msdyn_progress" operator="ne" value="1"/></filter></entity></fetch>

    Я виділив в коді запиту параметри, які ми з вами можемо змінити динамічно – наприклад з попереднього кроку у флоу.

    2. Інтеграція FetchXML у крок Power Automate: Для використання FetchXML у Power Automate вам потрібно додати дію “List Records” (Список записів) у вашому потоці, обрати таблицю та вставити ваш FetchXML запит у відповідне поле.

    Давайте побудуємо наш з вами флоу!

    Почати треба з тригера, я хочу показати, як ми можемо динамічно підставити ID проекту з попереднього кроку.

    Мій тригер це заповнення поля Опис (Description) в таблиці Проекти, в полі Select columns- я вказую по якому полю треба відслідковувати зміни, щоб флоу не спрацював по змінам в інших полях та у Filter rows я вказую, що йому не треба запускатись в разі якщо в полі дані видалено ( технічно це теж зміна даних в полі).

    Наступним кроком, додамо пошук необхідних нам завдань в кроці List Rows в параметрі Fetch XML Query вставимо попередньо збережений код із файлу та додамо ще один крок Compose для запису результатів виконання кроку List Rows ( в історії запуску може бути код відповіді 200 без доступу до даних).

    Як ви можете помітити, в тексті запиту я видалив ID проекту, тому що нам потрібно отримувати дані динамічно, відповідно до проекту в якому заповнено поле Опис, тому я додав динамічний параметр з попереднього кроку.
    Ви можете замінити будь-які параметри запиту (тривалість, відсоток завершення ітд) на динамічні чи зробити розгалудження по різним статичним кейсам.

    Подивимось на результат виконання

    В моєму випадку він знайшов одне завдання, відповідно до критеріїв, що співпадає з моїм фільтром в поданні інтерфейсу.

    3. Обробка результатів запиту: Після отримання результатів, їх можна обробити за допомогою подальших дій у Power Automate, таких як фільтрація, обробка даних або створення звітів чи відправка повідомлення в Outlook чи Teams.

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

    Поради та Практичні Кроки

    • Тестуйте ваш FetchXML запит у середовищі Dataverse перед тим, як інтегрувати його у Power Automate.
    • Перевіряйте продуктивність запиту на великих об’ємах даних. Занадто складні запити можуть уповільнити процеси.
    • Документація по List Rows від Microsoft, є окремий розділ по використанню FetchXML.

    Висновок

    Використання FetchXML у Power Automate дозволяє розширити можливості автоматизації та пошуку даних, забезпечуючи гнучкість і точність. Це ідеальний інструмент для складних сценаріїв, коли вбудовані методи виявляються недостатніми. Спробуйте інтегрувати FetchXML у ваші робочі процеси і ви побачите, наскільки цей інструмент може покращити вашу роботу з даними.


    Leave a comment