Статуси повідомлень
Кожне новое повідомлення у сервісі Edibox отримує статус NEW. При стандартному отриманні повідомлень сервіс надсилає усі наявні повідомлення: і нові, і вже оброблені раніше. Використання статусу може допомогти зорієнтуватися, які повідомлення вже були оброблені раніше.
Статус може змінювати тільки отримувач. Якщо відправник спробує змінити статус, то у відповідь отримає помилку. |
Статус | Опис |
---|---|
NEW |
Усі нові повідомлення отримують цей статус. |
PROCESSING |
Повідомлення обробляється отримувачем; "в процесі", "в обробці". |
PROCESSED |
Отримувач обробив повідомлення. |
INVALID |
Можна позначити некоректне з точки зору отримувача повідомлення, яке отримувач не обробляв взагалі. |
INTERNAL_STATUS_1 INTERNAL_STATUS_2 INTERNAL_STATUS_3 |
Нестандартні статуси для внутрішнього використання сторонами. Можуть мати будь-яке значення в залежності від домовленостей. |
Статус повідомлення змінювати не обов’язково, хоча і рекомендується: так легше відрізняти нові повідомлення від уже оброблених. |
Приклади використання статусів
Статус зазвичай використовується для можливості відрізняти нові повідомлення від вже оброблених, щоб уникнути повторної обробки старих повідомлень.
Зміна статусу також може допомогти у ситуаціях, коли отримувач бажає відобразити процес обробки повідомлення.
Отримання тільки нових повідомлень
При отриманні повідомлень можна використовувати параметр status=new
і таким чином отримати усі нові повідомлення.
Після обробки отриманих повідомлень та створення відповідних документів у своїй обліковій системі отримувач може виконати поновлення статусів уже отриманих повідомлень, використавши статус PROCESSED.
І тоді наступний запит на отримання повідомлень з параметром status=new
верне тільки нові повідомлення, які ще не були оброблені. Це може бути зручно у випадку, якщо немає впевненості, що, наприклад, попереднього дня від постачальників не надійшло ніяких повідомлень після завершення робочого дня, або є побоювання, що одне й те ж саме повідомлення може бути оброблене декілька разів.
Також, як наслідок, можна отримати тільки повідомлення, які вже було оброблено: для цього слід використати параметр status=processed
.
Відображення процесу
Наприклад, опрацювання замовлення отримувачем може зайняти тривалий час. У такому випадку відправнику необхідно розуміти, що замовлення вже взяте в роботу. Отримувач, зі свого боку, може хотіти розрізняти повідомлення, які знаходяться в обробці від тих, що вже оброблені.
В цьому випадку буде зручно додатково використати статус PROCESSING.
На початку обробки повідомлення отримувачем йому виставляється статус PROCESSING. Тоді відправник буде розуміти, що відбувається з його повідомленнями.
Після завершення на повідомлення встановлюється статус PROCESSED.
Отримати повідомлення на етапі обробки можна буде параметром status=processing
.
Нестандартні статуси
Статуси типу INTERNAL_STATUS_1 не несуть ніякого особливого значення. Немає жодних обмежень чи застережень щодо використання цих статусів. Відправник та отримувач можуть домовитися між собою про їх інтерпретацію.
Наприклад, у бізнес-процесах отримувача може бути присутній етап погодження замовлення, який може розтягнутися у часі.
В такому разі сторони можуть домовитися між собою, що статус INTERNAL_STATUS_1 якраз і означає цей етап погодження. А далі, в залежності від домовленостей, отримувач може назначити статус PROCESSING або PROCESSED.
Також ці нестандартні статуси зручно використовувати під час тестування та впровадження роботи з Edibox. При тестуванні варто пам’ятати, що повідомлення можна надсилати самому собі.
Наприклад, всім тестовим повідомленням можна назначати статус INTERNAL_STATUS_3. Такий статус гарантує, що механізми, які обробляють тільки нові (new) повідомлення, не отримають тестових повідомлень.