From 63caf5b97bd2781b5d3ddf7bf3e86bea41d49678 Mon Sep 17 00:00:00 2001 From: Petzys <87223648+Petzys@users.noreply.github.com> Date: Wed, 20 Mar 2024 10:50:50 +0100 Subject: [PATCH] Docs(architectural pattern): Added rule-based system diagram --- docs/patterns/rule_based.png | Bin 0 -> 24546 bytes docs/patterns/rule_based.puml | 34 ++++++++++++++++++++++++++++++++++ 2 files changed, 34 insertions(+) create mode 100644 docs/patterns/rule_based.png create mode 100644 docs/patterns/rule_based.puml diff --git a/docs/patterns/rule_based.png b/docs/patterns/rule_based.png new file mode 100644 index 0000000000000000000000000000000000000000..7ff31010c4ca8eec9ca1e8d1a3adcfec75328206 GIT binary patch literal 24546 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 IE: Current state +IE --> KB: Validate action and state +KB --> IE: Validated / Error +IE --> WM: Update state +IE --> UI: Return state +UI --> IE: Request state + +note right of WM + Working Memory +end note + +note right of IE + Inference Engine +end note + +note right of KB + Knowledge Base +end note + +note right of UI + User Interface +end note + +@enduml