# data[].attributes.body
Controller läuft im Loop und iteriert über alle knowledgeSources die aktiv sind und führt diese aus.

Bei Blackboard-Pattern ist der Controller der Decision-Maker. Er entscheidet welche knowledgeSource ausgeführt wird und in welcher Reihenfolge

Jede KnowledgeSource ist dafür verantwortlich zu deklarieren ob es für das aktuelle Problem zur verüfgung steht

# data[].attributes.body
Registrierung einer Klasse aus dem EventBus aufheben:

# data[].attributes.body
Wir können ein Ereignis abonnieren, indem wir unsere EventListener-Klasse im EventBus registrieren:

# data[].attributes.body
Google Guava library:
Wir erstellen eine Listener-Klasse mit Handler-Methoden zum Empfangen bestimmter Ereignisse. Wir kommentieren die Handler-Methoden mit @Subscribe. Die Methode akzeptiert als Argument ein Objekt des gleichen Typs wie das veröffentlichte Ereignis:

# data[].attributes.body
public Controller(Blackboard board)
{
    blackboard = board;

    theRadar = new Radar();
    KnowledgeSources.Add(theRadar);
    KnowledgeSources.Add(new SignalProcessor(DateTime.Now.Millisecond));
    KnowledgeSources.Add(new ImageRecognition());
    KnowledgeSources.Add(new PlaneIdentification());
    KnowledgeSources.Add(new WarMachine());

    OrderKnowledgeBases();

    foreach (var ks in OrderedKnowledgeSources)
        ks.Configure(blackboard);

    controlLoopTimer = new DispatcherTimer { Interval = TimeSpan.FromSeconds(1) };
    controlLoopTimer.Tick += new EventHandler(tick);
    controlLoopTimer.IsEnabled = true;
}

# data[].attributes.body
Je nach Komfortgrad der Implementierung dauert der Zugriff auf ein Datum länger

Für gereifte Domänen sind geschlossene Lösungsansätze sinvoller

# data[].attributes.body
Einheitlicher Mechanismus für den Zugriff auf zentrale Daten

Fehlerhafte Zugriffe auf die Daten sind einfach zu erkennen

Keine direkten, unkontrollierten Zugriffe auf die Daten

Änderungen sind einfacher durchzuführen

# data[].attributes.body
Interpretation von Sensordaten

Design und Layout

Prozesskontrolle

Planung und Ablaufsteuerung

# data[].attributes.body
Ansammlung unabhängiger Programme, jedes spezialisiert auf ein Teilproblem = Wissensquelle

Gemeinsame Nutzung und Arbeit auf einer Datenstruktur = Blackboard

Beiträge auf dem Brett heißen Hypothesen

# data[].attributes.body
Probleme, für die keine deterministischen Lösungsstrategien existieren

schwach strukturierte und wenig ausgereifte Domänen

Wenn viele Komponenten eines Programmes Zugriff auf die gleichen Daten brauchen, aber nicht in direktem Kontakt stehen

# data[].attributes.body
Vergleichbar mit einer Funkübertragung: Ein Sendemast überträgt ein Funksignal, das von Empfängern empfangen wird, sobald sie die richtige Frequenz eingestellt haben.

# data[].attributes.body
Datensatz in einer Datenbank wird geändert, diese Änderungen wird als Ereignis geworfen. Die betroffenen Stellen bekommen dies mit und passen dementsprechend beispielsweise die Lieferadresse eines Kunden an.

# data[].attributes.body
Grundlage einer ereignisgesteuerten Kommunikation ist ein auf Veröffentlichung und Abonnements basierendes Modell: Ein Sender überträgt eine Nachricht, die von einem oder mehreren Empfängern empfangen wird und an dieser Stelle verarbeitet wird. Diese geben jedoch keine direkte Antwort an den Sender zurück.

# data[].attributes.body
Wissensbasiertes System

Kommt aus der AI Community

Das Wissen mehrerer Subsysteme wird zusammengefasst, Teillösungen und Kontrolldaten zu erstellen

Zentrale Austauschplattform für gemeinsame Daten, wodurch eine einheitliche Datenablage realisierbar ist