Обробка черг робіт
Під обробкою робочої черги мається на увазі управління списком робочих пунктів, які необхідно виконати в певному порядку. Цей список містить інформацію про кожен елемент, наприклад його назву, пріоритет, термін придатності, статус і фактичне значення, яке потрібно обробити.
Способи обробки робочих черг:
Обробка на основі потоку робочого столу Power Automate (PAD).
Обробка на основі хмарного потоку з підтримкою потоку робочого столу.
Використання Dataverse функцій для розробників (лише для розширених сценаріїв інтеграції):
Дізнайтеся більше про Dataverse pro-code tooling: Dataverse developer documentation.
Покрокові інструкції з обробки
Щоб продемонструвати деякі з доступних варіантів обробки, ось три різні сценарії обробки.
Обробка робочої черги на основі потоку робочого столу в Power Automate настільному комп’ютері (PAD)
Елементи черги обробних робіт та приклади оновлень
Першим кроком до використання дій робочої черги на Power Automate робочому столі є створення робочої черги в середовищі, в якому ви працюєте, і завантаження деяких елементів черги з даними, які будуть використані в подальшому. Елементи черги можуть бути завантажені в робочу чергу за допомогою потоку робочого столу, хмарного потоку або масово, як описано тут, який заповнює елементи черги. У цьому прикладі деякі елементи черги було додано вручну до робочої черги, щоб пояснити, як можна використовувати дії на Power Automate робочому столі.
Елементи робочої черги були створені, а поле значення містить текст у форматі JSON, який буде використовуватися в подальшому в потоці робочого столу.
Приклад потоку, який ми будемо використовувати для демонстрації використання дії в робочій черзі, імітує процес, який використовує елемент робочої черги з хмари, обробляє дані, включені в поле значення, і перетворює їх на користувацький об’єкт для подальшої обробки. Зауважте, що не обов’язково використовувати JSON або користувацькі об’єкти як значення для елементів робочої черги, але це може бути корисним методом для організації значень, які мають кілька властивостей і відповідають певній схемі.
- Дія Елементи черги робіт процесу використовується для визначення того, з якої робочої черги слід споживати елементи та обробляти їх у потоці робочого столу. Дію можна налаштувати на вибір робочої черги зі списку за допомогою стрілки випадаючого списку, передати змінну з іменем черги. Під час виконання ця дія працює шляхом введення першого (найстарішого) елемента з робочої черги у ваш ланцюжок, який містить статус «у черзі». Як тільки елемент черги починає обробку у вашому потоці, його статус автоматично змінюється на обробку.
Нотатка
Якщо ви використовуєте змінну для динамічного вибору робочої черги, використовуйте ідентифікатор робочої черги як вхідні дані. Ідентифікатор робочої черги доступний у розділі Додаткові відомості на сторінці відомостей про робочу чергу.
- Точка зупинки (червона точка) була встановлена натисканням поруч із дією 3 у ланцюжку, а потім пробігом через консоль PAD. Коли процес зупиняється в точці зупину, змінну WorkQueueItem можна відкрити подвійним клацанням заповненого значення під змінними Flow, і це показує всі властивості, пов’язані з оброблюваним елементом робочої черги.
Нотатка
Змінна WorkQueueItem показує інформацію про поточний елемент черги робіт, коли є елементи, що залишилися для обробки. Якщо елементів черги робіт для обробки більше немає, а дію завершено, відображається інформація про останній елемент черги робіт.
У дії 2 потоку я перетворив повернуте значення JSON, доступ до якого в цьому випадку здійснюється через %WorkQueueItem.Value%, у користувацький об’єкт. Причина цього полягає в тому, що він допомагає аналізувати JSON і використовувати властивості JSON нижче за течією у вашому потоці. У цьому гіпотетичному випадку інформація буде використана для внесення записів на фінансовий портал Farbrikam.
{ "InvoiceId": "I-1006", "InvoiceDate": "06/04/2023", "AccountName": "Fabrikam", "ContactEmail": "invoicing@fabrikam.com", "Amount": 1253.78, "Status": "Paid", "WorkQueueKey": "Vendor Invoices", "ComponentState": 0, "OverwriteTime": "1900-01-01T00:00:00" }
Наприклад, скажімо, існувала вимога вводити ідентифікатор рахунка-фактури в поле фінансової системи як частину процесу, де ви автоматизуєте інтерфейс веб-програми або програми для настільних комп’ютерів – ви можете викликати це значення за допомогою %JsonAsCustomObject.InvoiceId% , щоб заповнити текстове поле та натиснути кнопку.
Рухаючись далі, цей приклад містить деякі умовні оператори, як тільки він завершує обробку кроків і використовує дані з користувацького об’єкта в підпотоці Fabrikam Data Entry. Якщо процес виконується наскрізно без будь-яких винятків, пов’язаних із системою вводу, дія Оновити елемент робочої черги використовується для зміни стану елемента робочої черги на Оброблено , а поле результату обробки може використовуватися для введення деяких необов’язкових приміток. Якщо поле «Термін дії закінчується » залишається порожнім, новий елемент черги зберігає значення «Термін дії елементів» після значення, визначеного у властивостях черги робіт.
Нотатка
Якщо елементи робочої черги застрягли в стані обробки через те, що потік на робочому столі не завершується, використовуйте хмарний потік, щоб отримати та оновити елементи робочої черги.
Параметри обробки винятків можна налаштувати, натиснувши на помилку у вікні конфігурації дії елемента черги оновлення роботи. Для налаштування на вкладці «Додатково» доступні три варіанти. Елемент робочої черги не знайдено може виникнути, якщо елемент робочої черги видалено з черги вручну або за допомогою іншого систематичного процесу, перш ніж він завершить обробку в PAD. Елемент черги робіт на утриманні може виникнути, якщо автоматизований процес або хтось змінює статус елемента робочої черги, що обробляється, на призупинений на порталі потоку під час обробки елемента черги. Елемент черги не вдалося оновити роботу може виникнути, якщо елемент черги більше не існує в черзі або був переведений у стан утримання. Все вищесказане є крайніми випадками, які можуть виникнути - дізнайтеся більше про обробку помилок у потоках робочого столу тут.
Якщо під час обробки даних елемента черги робіт у систему введення даних було виявлено якусь проблему, то елементу також може бути присвоєно статус загального винятку, IT-винятку або бізнес-винятку. Ці статуси винятків можна використовувати, коли або якщо ваш автоматичний випадок використання відповідає критеріям, які можуть застосовуватися.
Припустимо, що при обробці елемента черги був виконаний сценарій 2. У цьому випадку елемент черги позначається як загальний виняток у вихідній черзі. Залежно від сценарію, ви можете вирішити змінити статус елементів черги, які не вдалося успішно обробити як один із альтернативних варіантів стану. Звідти ви можете вирішити, чи потрібне втручання людини, або побудувати наступний процес за допомогою логіки, необхідної для керування кожним статусом винятку.
Шаблон автоматичної спроби
Дія «Елементи робочої черги процесів» на робочому столі Power Automate містить розширену опцію для налаштування або заміни механізму автоматичного повторного повторення. Ця функція дозволяє вказати максимальну кількість автоматичних повторних спроб на один елемент робочої черги, що корисно для обробки IT-винятків, таких як тимчасові помилки мережі або тимчасова недоступність системи. Це дозволяє машині зберігати елемент і виконувати контрольовані повторні спроби без перетворення елемента в чергу, забезпечуючи більш ефективну та відмовостійкий обробку робочої черги.
Ви можете встановити та централізовано керувати максимальною кількістю повторних спроб під час запису в Dataverse робочій черзі. Це значення за замовчуванням застосовується до всіх потоків робочого столу, які обробляють цю чергу робіт за допомогою дії «Елементи черги робіт».
Щоб змінити стандартне значення на рівні черги у вашому потоці, перейдіть до розділу «Додатково» дії «Елементи черги робіт процесу» та перемкніть опцію «Замінити конфігурацію автоматичної повторної спроби робочої черги». Цей параметр дає змогу налаштувати максимальну кількість повторних спроб на більше або менше значення або навіть вимкнути механізм повторних спроб, встановивши максимальну кількість повторних спроб на 0.
Коли ви використовуєте дію Елемент робочої черги оновлення зі встановленим станом IT exception
і максимальною кількістю повторних спроб більше 0, система не відразу надсилає оновлення організатору робочої черги. Замість цього він повторює операцію, доки не досягне вказаної максимальної кількості повторних спроб. Єдине значення, що оновлюється в пункті черги роботи, - це retrycount
. Це значення збільшується з моменту другої спроби оновлення, доки не буде досягнуто максимальної кількості повторних спроб. Крім того, змінна елемента локальної робочої черги називається CurrentRetryCount
кроками з кожним повторним спробою. Ця змінна дозволяє реалізувати користувацьку логіку на основі її значення, якщо це необхідно.
Потік не запросить новий елемент, коли він повертається на початок дії «Елементи робочої черги процесу», якщо виконуються такі умови:
- Максимальна кількість повторних спроб не досягнута.
- Жодних інших оновлень, крім винятків з IT, не відбувається.
Коли досягається максимальна кількість повторних спроб, дія оновлення надсилає оновлення організатору, змінюючи статус елемента на IT Exception і включаючи всі надані примітки щодо обробки.
Приклади додавання та чергування елементів робочої черги з PAD
Елемент «Додати робочу чергу» дає змогу користувачам потоку робочого столу заповнювати елементи робочої черги в робочу чергу, налаштовану на порталі потоку. Пакетне створення елементів підтримується за допомогою дії Додати елементи черги робіт.
У цьому прикладі файл Excel у .csv щодня перетягується в каталог, і кожен рядок потрібно додати до робочої черги.
Перші кілька дій у цьому зразку процесу відображають папку, куди скидається щоденний файл Contoso Invoices.csv - коли процес запускається, він починається зі зчитування таблиці даних із файлу CSV. Змінна CSVTable містить дані, які були імпортовані та будуть оброблені до нових елементів черги.
Дії 3 і 4 генерують час, коли ми вибираємо нові елементи черги, термін дії яких закінчується після додавання в робочу чергу. Дія 3 фіксує поточні системні дані та час, а потім для цього прикладу до неї додається 7 днів за допомогою дії% Додати до datetime% . Виведені дані зберігаються в змінній під назвою ExpiryDatetime , яка буде використовуватися в дії Додати елемент черги робіт.
Дія 5 вводить цикл For , який використовується для перебору кожного рядка даних в імпортованому CSVTable - ця дія відображає рядок даних для поточного оброблюваного елемента.
Усі попередні дії в цьому прикладі потоку робочого столу тепер включено в налаштування значень для дії Додати елемент робочої черги.
Параметр робочої черги встановлюється на чергу, в яку ми хочемо додати нові елементи черги робіт - в даному випадку черга Demo PAD була обрана шляхом вибору її з випадаючого меню.
Параметр Priority залишений за замовчуванням,Normal , але варіанти для Low і High також необов'язкові. Елементи черги робіт з вищим пріоритетом обробляються першими, потім звичайними та останніми при змішуванні в ту саму робочу чергу.
Параметр Name було встановлено зі статичним префіксом разом із значенням змінної CurrentItem['ID'] , яка містить значення з клітинки ID рядка даних, що обробляється. Це необов'язково, але може бути корисним залежно від вашого випадку використання.
Використовуючи значення з рядка даних у змінній CurrentItem було введено параметр Input у форматі JSON. Зверніть увагу, що ім'я кожного заголовка було додано до змінної currentitem за допомогою позначення ['name of header']
Поле «Термін дії закінчується » заповнюється змінною datetime, до якої ми додали 7 днів у попередніх кроках. Якщо залишити порожнім, то елемент робочої черги, що додається, міститиме пункт Елементи, термін дії яких закінчується після значення, встановленого для черги робіт.
Обробка нотаток необов'язкова - використовуйте за необхідності.
Коли процес виконується, кожен рядок даних у імпортованому CSV створює елемент робочої черги, який містить стан «У черзі», що означає, що він доступний для обробки.
Це лише деякі з багатьох способів, за допомогою яких дії робочої черги можуть бути використані в PAD. Витратьте трохи часу, щоб дослідити та знайти креативні способи використання для включення робочих черг у свої Power Automate потоки!
Приклад елемента черги із затримкою
Елемент «Черга » з дією «Затримка » дозволяє користувачам потоку робочого столу ставити елементи в чергу та встановлювати період затримки, після якого елемент може бути знову випущений для обробки.
У цьому прикладі є робоча черга з елементами, термін дії яких закінчується через 24 години, але вони не можуть бути оброблені вчасно, оскільки ІТ-відділ виконує поточне рутинне технічне обслуговування системи, і елементи потрібно поставити в чергу. Технічне обслуговування буде завершено протягом ночі, тому ми продовжимо затримувати кожен елемент черги на 24 години, а потім встановимо їх термін дії через 24 години після періоду випуску.
Перші три дії цього прикладу процесу є діями з датою, часом. Дія "Отримати поточну дату й час" фіксує системну дату, час на момент виконання дії. Далі ми використали дію «Додати до datetime», щоб задовольнити дві вимоги, спочатку нам потрібно визначити час затримки, додавши 24 години до поточної дати, а потім нам потрібно додати 48 годин до поточної datetime як термін дії.
Далі в прикладі дія "Елементи черги роботи процесу" налаштовується так, щоб вона вказувала на завантажену чергу робіт, а "Елемент черги із затримкою" поміщається в цикл.
Значення, згенеровані для затримки та закінчення терміну дії, тепер можна передати в дію «Пункт черги із затримкою». Поле 'елемент робочої черги' заповнюється змінною, створеною циклом - це вказує, який елемент черги потрібно поставити в чергу. Далі ми підключили значення, створені за допомогою дій datetime для полів «затримка до» та «закінчення терміну дії». «Затримка до» є обов'язковою, але ви можете використовувати «закінчення терміну дії» та «результат обробки» на свій розсуд.
За допомогою цього простого процесу ви можете поставити всі доступні товари в чергу на певний час, а також встановити дату закінчення терміну дії та результат обробки.
Хмарний потік і обробка на основі з'єднувачів
Найпростіший спосіб поставити в чергу елемент робочої черги та обробити його полягає в наступному:
Перейдіть і Power Automate увійдіть за допомогою своїх облікових даних.
У меню ліворуч виберіть Мої ланцюжки.
На панелі інструментів виберіть + Новий потік , а потім виберіть Миттєвий хмарний потік.
Укажіть ім’я потоку, наприклад Мій перший потік робочої черги, а потім виберіть Запускати потік вручну.
Виберіть Створити.
Коли відкриється конструктор потоку, виберіть + Новий крок, а потім виберіть з’єднувач. Microsoft Dataverse
У списку дій виберіть Виконати зв’язану дію.
Параметр | Значення | Опис |
---|---|---|
Назва столу | Черги робіт | Назва таблиці черги робіт. |
Назва дії | У черзі | Дія, яка отримує наступний доступний предмет з черги. |
Ідентифікатор рядка | [Ідентифікатор робочої черги] | Ідентифікатор робочої черги (GUID) черги, з якої потрібно вийти в чергу. Ви можете отримати це значення, перейшовши на сторінку відомостей про робочу чергу та відкривши панель додаткових відомостей . |
просити | запит | FetchXML у рядковому форматі JSON, який ви хочете застосувати до ідентифікатора робочої черги. Приклад: { "query": "<fetch mapping=\"logical\" returntotalrecordcount=\"true\" page=\"1\" count=\"1\" no-lock=\"false\">\n<entity name=\"workqueueitem\">\n<filter type=\"and\">\n<condition attribute=\"workqueueid\" operator=\"eq\" value=\"38b14649-cb09-ee11-8f6e-00224804934a\"/>\n<condition attribute=\"statuscode\" operator=\"eq\" value=\"0\"/>\n</filter>\n</entity>\n</fetch>"} |
Нотатка
Зв’язана дія – це Dataverse дія, яка визначена на певному столі (у нашому прикладі черги робіт) і може бути виконана лише над записами цієї таблиці. Зв’язані дії використовуються платформою для виконання користувацької бізнес-логіки або операцій над певним записом.
- Ваш ланцюжок має виглядати так само, як зараз.
Виберіть «Зберегти», а потім «Перевірити ланцюжок».
На бічній панелі тестування виберіть Вручну, Тест, Запуск потоку , а потімГотово .
Якщо ланцюжок пройшов успішно, ви повинні отримати аналогічний результат (але з іншими ID).
- Далі скопіюйте весь JSON-контент з основного поля, а потім виберіть «Редагувати » у верхньому правому куті ланцюжка.
Порада
Після додавання в чергу елемента робочої черги використовуйте JSON-вміст елемента як приклад схеми для аналізу властивостей JSON елемента. Це дозволяє легко отримати доступ до будь-якої властивості елемента, повернутого оркестратором робочої черги, у подальших діях потоку.
- Додайте новий крок, вибравши+ Новий крок і знайдіть дію під назвою Parse JSON і виберіть його.
- Розташуйте мишу в полі «Контент » і виберіть властивість body з попередньої дії.
Далі виберіть «Створити зі зразка » та вставте раніше скопійований рядок JSON у діалогове вікно та виберіть «Готово».
Виберіть + Новий крок, а потім виберіть з’єднувач. Microsoft Dataverse
Зі списку дій виберіть Оновити рядок.
У полі Ім’я таблиці виберіть таблицю Елементи робочої черги та встановіть курсор у поле Ідентифікатор рядка.
У списку динамічного вмісту тепер відображатимуться всі поля, доступні в таблиці елементів черги робіт.
Виберіть Показати додаткові параметри , а потім встановіть для полів «Ідентифікатор рядка», «Результат обробки», «Статус» і «Причина статусу» на такі значення.
Поле | Значення | Докладні відомості |
---|---|---|
Ідентифікатор рядка | workqueueitemid | Це значення можна вибрати в діалоговому вікні динамічного списку вмісту. |
Результат обробки | Виріб пройшов успішну обробку. | |
Статус | Оброблено | |
Причина статусу | Оброблено |
Виберіть «Зберегти» та ще раз перевірте потік.
Якщо потік пройшов успішно, ви повинні отримати аналогічний результат, як показано нижче.
Тепер перейдіть на сторінку відомостей про робочу чергу та в розділі список елементів робочої черги виберіть Переглянути все.
Відфільтруйте поле «Статус», щоб відображати лише «Обробку» та «Оброблені елементи», щоб підтвердити, що наші дії з черги та оновлення працювали належним чином.
Вітаємо, ви щойно завершили свій перший сценарій обробки робочої черги!
Обробка на основі хмарного потоку з підтримкою потоку робочого столу
Для цього сценарію ми розширюємо попередній, додаючи також етап обробки потоку на робочому столі.
Поверніться назад і відредагуйте потік Моя перша робоча черга.
Додайте нову дію безпосередньо після дії Parse JSON і знайдіть з’єднувач Desktop flows і Run a flow built with Power Automate desktop.
У випадаючому меню потоку робочого столу виберіть і відредагуйте існуючий потік робочого столу або виберіть + Створити новий потік робочого столу та дотримуйтесь інструкцій на екрані, щоб створити потік робочого столу та запустити Power Automate його для настільного комп’ютера. Якщо ви новачок у потоках робочого столу, ви можете дізнатися більше тут.
Коли Power Automate відкриється конструктор для настільних комп’ютерів, створіть дві вхідні змінні під назвою WorkQueueItemValue і WorkQueueItemName , а потім додайте дві вихідні змінні під назвою ProcessingNotes і ProcessingStatus відповідно, кожна з яких повинна мати текст як тип даних.
Надайте значення за замовчуванням для змінної WorkQueueItem, щоб ви могли пізніше протестувати скрипт локально. Якщо ви дотримувалися інструкції з масового імпорту, у черзі рахунків-фактур постачальника повинні бути елементи робочої черги, значення яких у форматі JSON. Ось приклад одного з використовуваних значень.
{ "InvoiceId": "I-1006", "InvoiceDate": "06/04/2023", "AccountName": "Fabrikam", "ContactEmail": "invoicing@fabrikam.com", "Amount": 1253.78, "Status": "Paid", "WorkQueueKey": "Vendor Invoices", "ComponentState": 0, "OverwriteTime": "1900-01-01T00:00:00" }
Тепер збережіть потік.
На панелі дій відкрийте групу дій «Змінні » та двічі клацніть дію «Перетворити JSON на користувацький об’єкт », щоб додати її до полотна дизайну, яке відкриває вікно властивостей.
Виберіть піктограму змінної в полі JSON і виберіть змінну WorkQueueItemValue .
Перейменуйте отриману вихідну змінну з JsonAsCustomObject на VendorInvoice та виберіть Зберегти.
Далі додайте дію If з групи Conditionals та налаштуйте її властивості наступним чином:
Перший операнд Оператор Другий операнд %VendorInvoice[’Amount’]% Менше (<) 5000 Виберіть Зберегти.
Додайте іншу дію з групи Умови під назвою Else та додайте її між діями If і End .
Тепер додайте ще дві дії з групи Змінні під назвою Установити змінну і додайте їх до дій Якщо та Інше і встановіть змінні ProcessingNotes і ProcessingStatus на такі значення:
Змінна Значення %ProcessingNotes% Рахунок оброблено %ProcessingStatus% Оброблено Скопіюйте дві дії Set variable і вставте їх між діями Else і End і змініть їхні значення відповідно до цих:
Змінна Значення %ProcessingNotes% Виняток для бізнесу: сума рахунку-фактури перевищує $5000, що потребує схвалення менеджера. %ProcessingStatus% Виняток Ваш ланцюжок має виглядати так само, як зараз.
Збережіть потік і запустіть його, щоб підтвердити, що логіка потоку працює належним чином.
Поверніться до редагування моєї першої робочої черги.
Виберіть щойно створений (або відредагований) потік робочого столу зі списку, а потім виберіть Відвідуваний як його Режим запуску.
Заповніть параметри Work Queue Item Value та Work Queue Item Name , як показано тут:
Додайте дію Умова перед дією Оновити рядок .
Наведіть курсор миші на поле Виберіть значення та виберіть Статус обробки у діалоговому вікні списку динамічного вмісту.
Розташуйте мишу в іншому полі Виберіть значення та введіть Оброблено як текстове значення.
Перетягніть дію Оновити рядок у розділ Якщо так дій умови.
Відкрийте деталі дії Оновити рядок і замініть значення на такі:
У червоному полі Якщо ні додайте іншу дію Оновити рядок та виберіть Елементи робочої черги як Назву таблиці.
Далі виберіть workqueueitemid як Ідентифікатор рядка та відкрийте Показати розширені параметри розділ виберіть Примітки до обробки як значення Результати обробки .
Виберіть Помилка як Статус і Загальний виняток для Причина статусу.
Виберіть Зберегти і Тестувати , щоб перевірити загальну автоматизацію та спостерігати за результатами дії потоку робочого столу.
Щоб підтвердити, що елемент робочої черги оброблено, ви можете перейти на сторінку деталей робочої черги, вибрати Переглянути все в розділі елементів робочої черги та відфільтрувати елементи за статусом Оброблено .
Молодці! Ви щойно завершили розширений сценарій, який включав обробку гібридної робочої черги!