Komunikacja
Orkiestrator komunikuje się z agentami za pomocą określonych struktur json
Każda wiadomość to jeden obiekt JSON o stałym zestawie 11 pól. Koperta jest wspólna dla wszystkich typów; zmienia się tylko zawartość `payload`. Zawartość jest standardowa dla wszystkich kroków i całej komunikacji, różnica jest w paylodz-ie
Ogólna struktura wiadomości
Wartości są przykładowe
{
"msg_id": "numer wiadomości",
"corr_id": "numer wiadomości powiązanej",
"type": "request | dispatch | response | event",
"from": "nadawca wiadomości",
"to": "odbiorca wiadomości",
"action": "akcje do wykonania",
"status": "blocked | in_progress | done | failed | needs_user",
"requires_user_ack": true,
"user_message": "Tekst zmiany, szczegóły komunikatu.",
"payload": { },
"timestamp": "<data i godzina>"
}
Opis pól:
- msg_id - identyfikator wiadomości składa się z przedrostka określającego skąd pochodzi np orc - orkiestrator, potem jest liczba 001 itd..
- `orc-NNN` — wiadomości orkiestratora (`orc-014`, `orc-022`),
- `e2-k1-007` — etap 2, krok refaktoru 1, numer kolejny
- `e1s1-i2-done` / `e1s2-i2-done` — etap1.step1 / step2, iteracja 2, `step.done`.
- corr_id - identyfiaktor korelacji, czyli na którą wiadomość odpowiada,
- type - typ wiadomości (stosowane request i event):
- request - etap/krok -> orkiestrator - etap czegoś potrzebuje
- dispatch - orkiestrator -> krok - polecenie z orkiestratora
- response - etap/krok -> orkiestrator - odpowiedz na dispatch
- event - etap/krok -> orkiestrator - polecenie np stage.start, step.stop
- from - nadawca
- to - odbiorca
- action - etap/krok -> orkiestrator:
- test.update - istniejący test wymaga aktualizacji
- test.add - trzeba dodać nowy test
- test.remove - usunąć test
- test.mock.enable - włącz obsługę mockow,
- test.mock.add - trzeba dodać mock/stub
- user.input - potrzebna infromacja od użytkownika,
- user.approval - plan gotowy,
- stage.done - etap zakończony, orkiestrator sprawdza bramę
- step.done - krok zakończony
- stage.aborted - użytkownik przerwał
- error.critical - sytuacja blokująca
- status - stan nadawcy w chwili wysłania
- blocekd - nadawca stoi i czeka na obsłużenie requestu
- in_progress - praca trwa
- done - zkończenie z powodzeniem
- failed - wykonanie nie powiodło się
- neeed_user - do zakończenie potrzebna ingerencja użytkownika
- requires_user_ack - czy pokazać użytkownikowi
- true -
- false
- user_message - tekst dla użytkownika - nie może być pusty gdy user_ack = true,
- payload - treść merytoryczna, wartość zależy od action
- timestamp - znacznik czasu dla wiadomości
Brak komentarzy:
Prześlij komentarz