BW3-Core/information/router.html

361 lines
15 KiB
HTML

<!DOCTYPE html>
<html lang="en" data-bs-theme="light">
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="author" content="Bastian Schroll & BW3 Dev team">
<link rel="shortcut icon" href="../img/favicon.ico">
<title>Routing Mechanismus - BOSWatch3 Core</title>
<link href="../css/bootstrap.min.css" rel="stylesheet">
<link href="../css/fontawesome.min.css" rel="stylesheet">
<link href="../css/brands.min.css" rel="stylesheet">
<link href="../css/solid.min.css" rel="stylesheet">
<link href="../css/v4-font-face.min.css" rel="stylesheet">
<link href="../css/base.css" rel="stylesheet">
<link id="hljs-light" rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.8.0/styles/github.min.css" >
<link id="hljs-dark" rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.8.0/styles/github-dark.min.css" disabled>
<script src="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.8.0/highlight.min.js"></script>
<script>hljs.highlightAll();</script>
</head>
<body>
<div class="navbar fixed-top navbar-expand-lg navbar-dark bg-primary">
<div class="container">
<a class="navbar-brand" href="..">BOSWatch3 Core</a>
<!-- Expander button -->
<button type="button" class="navbar-toggler" data-bs-toggle="collapse" data-bs-target="#navbar-collapse" aria-controls="navbar-collapse" aria-expanded="false" aria-label="Toggle navigation">
<span class="navbar-toggler-icon"></span>
</button>
<!-- Expanded navigation -->
<div id="navbar-collapse" class="navbar-collapse collapse">
<!-- Main navigation -->
<ul class="nav navbar-nav">
<li class="nav-item dropdown">
<a href="#" class="nav-link dropdown-toggle" role="button" data-bs-toggle="dropdown" aria-expanded="false">Quick Start</a>
<ul class="dropdown-menu">
<li>
<a href="../tbd.html" class="dropdown-item">Installation</a>
</li>
<li>
<a href="../config.html" class="dropdown-item">Konfiguration</a>
</li>
</ul>
</li>
<li class="nav-item dropdown">
<a href="#" class="nav-link dropdown-toggle active" aria-current="page" role="button" data-bs-toggle="dropdown" aria-expanded="false">Informationen</a>
<ul class="dropdown-menu">
<li>
<a href="serverclient.html" class="dropdown-item">Server/Cient Prinzip</a>
</li>
<li>
<a href="broadcast.html" class="dropdown-item">Broadcast Service</a>
</li>
<li>
<a href="router.html" class="dropdown-item active" aria-current="page">Routing Mechanismus</a>
</li>
<li>
<a href="../changelog.html" class="dropdown-item">Changelog</a>
</li>
</ul>
</li>
<li class="nav-item dropdown">
<a href="#" class="nav-link dropdown-toggle" role="button" data-bs-toggle="dropdown" aria-expanded="false">Module</a>
<ul class="dropdown-menu">
<li>
<a href="../modul/descriptor.html" class="dropdown-item">Descriptor</a>
</li>
<li>
<a href="../modul/geocoding.html" class="dropdown-item">Geocoding</a>
</li>
<li>
<a href="../modul/mode_filter.html" class="dropdown-item">Mode Filter</a>
</li>
<li>
<a href="../modul/regex_filter.html" class="dropdown-item">Regex Filter</a>
</li>
<li>
<a href="../modul/double_filter.html" class="dropdown-item">Double Filter</a>
</li>
</ul>
</li>
<li class="nav-item dropdown">
<a href="#" class="nav-link dropdown-toggle" role="button" data-bs-toggle="dropdown" aria-expanded="false">Plugins</a>
<ul class="dropdown-menu">
<li>
<a href="../plugin/http.html" class="dropdown-item">Http</a>
</li>
<li>
<a href="../plugin/telegram.html" class="dropdown-item">Telegram</a>
</li>
<li>
<a href="../plugin/divera.html" class="dropdown-item">Divera</a>
</li>
<li>
<a href="../plugin/mysql.html" class="dropdown-item">MySQL</a>
</li>
</ul>
</li>
<li class="nav-item dropdown">
<a href="#" class="nav-link dropdown-toggle" role="button" data-bs-toggle="dropdown" aria-expanded="false">Entwickler</a>
<ul class="dropdown-menu">
<li>
<a href="../develop/ModulPlugin.html" class="dropdown-item">Eigenes Modul/Plugin schreiben</a>
</li>
<li>
<a href="../develop/packet.html" class="dropdown-item">BOSWatch Alarmpaket Format</a>
</li>
<li>
<a href="../api/html/index.html" class="dropdown-item">BW3 Quellcode Dokumentation</a>
</li>
</ul>
</li>
</ul>
<ul class="nav navbar-nav ms-md-auto">
<li class="nav-item">
<a href="#" class="nav-link" data-bs-toggle="modal" data-bs-target="#mkdocs_search_modal">
<i class="fa fa-search"></i> Search
</a>
</li>
<li class="nav-item">
<a rel="prev" href="broadcast.html" class="nav-link">
<i class="fa fa-arrow-left"></i> Previous
</a>
</li>
<li class="nav-item">
<a rel="next" href="../changelog.html" class="nav-link">
Next <i class="fa fa-arrow-right"></i>
</a>
</li>
<li class="nav-item">
<a href="https://github.com/BOSWatch/BW3-Core/edit/develop/docu/docs/information/router.md" class="nav-link"><i class="fa-brands fa-github"></i> Edit on GitHub</a>
</li>
</ul>
</div>
</div>
</div>
<div class="container">
<div class="row">
<div class="col-md-3"><div class="navbar-expand-md bs-sidebar hidden-print affix" role="complementary">
<div class="navbar-header">
<button type="button" class="navbar-toggler collapsed" data-bs-toggle="collapse" data-bs-target="#toc-collapse" title="Table of Contents">
<span class="fa fa-angle-down"></span>
</button>
</div>
<div id="toc-collapse" class="navbar-collapse collapse card bg-body-tertiary">
<ul class="nav flex-column">
<li class="nav-item" data-bs-level="1"><a href="#routing-mechanismus" class="nav-link">Routing Mechanismus</a>
<ul class="nav flex-column">
<li class="nav-item" data-bs-level="2"><a href="#ablauf" class="nav-link">Ablauf</a>
<ul class="nav flex-column">
</ul>
</li>
<li class="nav-item" data-bs-level="2"><a href="#konfiguration" class="nav-link">Konfiguration</a>
<ul class="nav flex-column">
</ul>
</li>
</ul>
</li>
</ul>
</div>
</div></div>
<div class="col-md-9" role="main">
<h1 id="routing-mechanismus"><center>Routing Mechanismus</center></h1>
<p>BOSWatch 3 hat einen Routing Mechanismus integriert. Mit diesem ist es auf einfache Weise möglich, den Verlauf von Alarmpaketen zu steuern.</p>
<hr />
<h2 id="ablauf">Ablauf</h2>
<p>Nachfolgender Ablauf soll am Beispiel eines Alarms mit einem Pocsag Paket erklärt werden.</p>
<center>![](../img/router.png)</center>
<ul>
<li>BOSWatch startet alle Router, welche in der config als <code>alarmRouter</code> konfiguriert worden sind (in diesem Fall nur <code>Router1</code>)</li>
<li>Der Router <code>Router1</code> beginnt seine Ausführung und arbeitet die einzelnen Routenpunkte sequentiell ab<ul>
<li>Das Modul <code>descriptor</code> wird aufgerufen und fügt ggf. Beschreibungen zum Paket hinzu</li>
<li>Das Modul <code>doubleFilter</code> wird aufgerufen und blockiert doppelte Alarme<br />
(hier würde die Ausführung dieses Routers und damit des kompletten Alarmprozesses stoppen wenn der Alarm als doppelter erkannt würde)</li>
<li>Der Router <code>Router2</code> wir nun aufgerufen (bis zur Rückkehr aus <code>Router2</code> ist der Router <code>Router1</code> angehalten)</li>
</ul>
</li>
<li>Der Router <code>Router2</code> beginnt seine Ausführung und arbeitet die einzelnen Routenpunkte sequentiell ab<ul>
<li>Das Modul <code>modeFilter</code> wird aufgerufen und stoppt den Router da es sich nicht um ein FMS Paket handelt</li>
<li>Es wird zur Ausführung von <code>Router1</code> zurückgekehrt</li>
</ul>
</li>
<li>Der Router <code>Router3</code> beginnt seine Ausführung und arbeitet die einzelnen Routenpunkte sequentiell ab<ul>
<li>Das Modul <code>modeFilter</code> wird aufgerufen und leitet das Paket weiter da es sich um ein Pocsag Paket handelt</li>
<li>Das Plugin <code>Telegram</code> wird aufgerufen</li>
<li>Das Plugin <code>MySQL</code> wird augerufen</li>
<li>Es wird zur Ausführung von <code>Router1</code> zurückgekehrt</li>
</ul>
</li>
<li>Der Router <code>Router1</code> setzt seine Ausführung fort<ul>
<li>Das Modul <code>modeFilter</code> wird aufgerufen und stoppt den Router da es sich nicht um ein ZVEI Paket handelt</li>
</ul>
</li>
</ul>
<p>Jetzt sind alle Routenpunkte abgearbeitet und die Alarmierung damit abgeschlossen.</p>
<hr />
<h2 id="konfiguration">Konfiguration</h2>
<p>Nachfolgend ist die Router Konfiguration des BW3-Servers für das obige Beispiel zu finden:</p>
<pre><code class="language-yaml">alarmRouter:
- Router1
router:
- name: Router1
route:
- type: module
res: descriptor
config:
[...]
- type: module
res: filter.doubleFilter
config:
[...]
- type: router
res: Router2
- type: router
res: Router3
- type: module
res: filter.modeFilter
config:
allowed:
- zvei
- type: plugin
res: sms
config:
[...]
- name: Router2
route:
- type: module
res: filter.modeFilter
config:
allowed:
- fms
- type: plugin
res: mysql
config:
[...]
- name: Router3
route:
- type: module
res: filter.modeFilter
config:
allowed:
- pocsag
- type: plugin
res: telegram
config:
[...]
- type: plugin
res: mysql
config:
[...]
</code></pre></div>
</div>
</div>
<footer class="col-md-12">
<hr>
<p>Documentation built with <a href="https://www.mkdocs.org/">MkDocs</a>.</p>
</footer>
<script src="../js/bootstrap.bundle.min.js"></script>
<script>
var base_url = "..",
shortcuts = {"help": 191, "next": 78, "previous": 80, "search": 83};
</script>
<script src="../js/base.js"></script>
<script src="../search/main.js"></script>
<div class="modal" id="mkdocs_search_modal" tabindex="-1" role="dialog" aria-labelledby="searchModalLabel" aria-hidden="true">
<div class="modal-dialog modal-lg">
<div class="modal-content">
<div class="modal-header">
<h4 class="modal-title" id="searchModalLabel">Search</h4>
<button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button>
</div>
<div class="modal-body">
<p>From here you can search these documents. Enter your search terms below.</p>
<form>
<div class="form-group">
<input type="search" class="form-control" placeholder="Search..." id="mkdocs-search-query" title="Type search term here">
</div>
</form>
<div id="mkdocs-search-results" data-no-results-text="No results found"></div>
</div>
<div class="modal-footer">
</div>
</div>
</div>
</div><div class="modal" id="mkdocs_keyboard_modal" tabindex="-1" role="dialog" aria-labelledby="keyboardModalLabel" aria-hidden="true">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<h4 class="modal-title" id="keyboardModalLabel">Keyboard Shortcuts</h4>
<button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button>
</div>
<div class="modal-body">
<table class="table">
<thead>
<tr>
<th style="width: 20%;">Keys</th>
<th>Action</th>
</tr>
</thead>
<tbody>
<tr>
<td class="help shortcut"><kbd>?</kbd></td>
<td>Open this help</td>
</tr>
<tr>
<td class="next shortcut"><kbd>n</kbd></td>
<td>Next page</td>
</tr>
<tr>
<td class="prev shortcut"><kbd>p</kbd></td>
<td>Previous page</td>
</tr>
<tr>
<td class="search shortcut"><kbd>s</kbd></td>
<td>Search</td>
</tr>
</tbody>
</table>
</div>
<div class="modal-footer">
</div>
</div>
</div>
</div>
</body>
</html>