Статуси повідомлень

Кожне новое повідомлення у сервісі Edibox отримує статус NEW. При стандартному отриманні повідомлень сервіс надсилає усі наявні повідомлення: і нові, і вже оброблені раніше. Використання статусу може допомогти зорієнтуватися, які повідомлення вже були оброблені раніше.

Статус може змінювати тільки отримувач. Якщо відправник спробує змінити статус, то у відповідь отримає помилку.

Таб. 1. Перелік доступних статусів:
Статус Опис

NEW

Усі нові повідомлення отримують цей статус.

PROCESSING

Повідомлення обробляється отримувачем; "в процесі", "в обробці".

PROCESSED

Отримувач обробив повідомлення.

INVALID

Можна позначити некоректне з точки зору отримувача повідомлення, яке отримувач не обробляв взагалі.

INTERNAL_STATUS_1 INTERNAL_STATUS_2 INTERNAL_STATUS_3

Нестандартні статуси для внутрішнього використання сторонами. Можуть мати будь-яке значення в залежності від домовленостей.

Статус повідомлення змінювати не обов’язково, хоча і рекомендується: так легше відрізняти нові повідомлення від уже оброблених.

Приклади використання статусів

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

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

Отримання тільки нових повідомлень

При отриманні повідомлень можна використовувати параметр status=new і таким чином отримати усі нові повідомлення.

Після обробки отриманих повідомлень та створення відповідних документів у своїй обліковій системі отримувач може виконати поновлення статусів уже отриманих повідомлень, використавши статус PROCESSED.

Послідовність для фіксування факту оброблення
Рис. 1. Послідовність для фіксування факту оброблення

І тоді наступний запит на отримання повідомлень з параметром status=new верне тільки нові повідомлення, які ще не були оброблені. Це може бути зручно у випадку, якщо немає впевненості, що, наприклад, попереднього дня від постачальників не надійшло ніяких повідомлень після завершення робочого дня, або є побоювання, що одне й те ж саме повідомлення може бути оброблене декілька разів.

Також, як наслідок, можна отримати тільки повідомлення, які вже було оброблено: для цього слід використати параметр status=processed.

Відображення процесу

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

В цьому випадку буде зручно додатково використати статус PROCESSING.

Послідовність для відображення етапу "в обробці"
Рис. 2. Послідовність для відображення етапу "в обробці"

На початку обробки повідомлення отримувачем йому виставляється статус PROCESSING. Тоді відправник буде розуміти, що відбувається з його повідомленнями.

Після завершення на повідомлення встановлюється статус PROCESSED.

Отримати повідомлення на етапі обробки можна буде параметром status=processing.

Нестандартні статуси

Статуси типу INTERNAL_STATUS_1 не несуть ніякого особливого значення. Немає жодних обмежень чи застережень щодо використання цих статусів. Відправник та отримувач можуть домовитися між собою про їх інтерпретацію.

Наприклад, у бізнес-процесах отримувача може бути присутній етап погодження замовлення, який може розтягнутися у часі.

В такому разі сторони можуть домовитися між собою, що статус INTERNAL_STATUS_1 якраз і означає цей етап погодження. А далі, в залежності від домовленостей, отримувач може назначити статус PROCESSING або PROCESSED.

Процес зміни статусів повідомлення
Рис. 3. Процес зміни статусів повідомлення

Також ці нестандартні статуси зручно використовувати під час тестування та впровадження роботи з Edibox. При тестуванні варто пам’ятати, що повідомлення можна надсилати самому собі.

Наприклад, всім тестовим повідомленням можна назначати статус INTERNAL_STATUS_3. Такий статус гарантує, що механізми, які обробляють тільки нові (new) повідомлення, не отримають тестових повідомлень.