Erweiterte Programmierung


Die einfachste Form, um mehrere Referenzen zu anderen ACComponent-Instanzen zu speichern, ist eine Liste mit ACRef<>-Instanzen:

public List<ACRef<ACComponent>> MyRelations {get; set;}

[ACPropertyBindingSource(100, "Configuration", "en{'RefToComps'}de{'RefToComps'}", "", true, true)] public IACContainerTNet<List<ACRef<ACComponent>>> MyRelations { get; set; }

 

Oft ist es jedoch so, dass eine Instanz aus unterschiedlichen Aspekten mit anderen Instanzen in Beziehung steht. Zum Beispiel:

  • Physikalische Beziehungen (Wege).
  • Logische Beziehungen.
  • Funktionale Beziehungen.

Um diese in getrennten Listen speichern und an der Oberfläche präsentieren zu können, gibt es das Prinzip der Verbindungspunkte, das im folgenden Abschnitt näher erläutert wird.


Die Basis aller Verbindungspunkte ist das Interface IACPoint<T>.

Ein IACPoint dient zur abstrakten Beschreibung der Beziehungen zwischen beliebigen Objekten. Er wird Verbindungspunkt genannt, weil man in der Graphentheorie Objekte als Punkte und die Beziehungen als Linien darstellt. Mittels diesem abstrakten interface ist iPlus in der Lage jegliche Beziehungen zwischen Objekten grafisch darzustellen (z.B. Workflows, Visualisierungen, Routen...). Die Beziehungen werden in der Eigenschaft IEnumerable<T> ConnectionList gespeichert.

Das iPlus-Framework stellt eine Reihe von unterschiedlichen Implementierungen eines IACPoint<T> zur Verfügung. Die Wichtigsten Implementierungen werden in den nachfolgenden Abschnitten und Kapiteln erklärt:

Falls die zuvor aufgeführten Implementierungen für ihre Anwendungsfälle nicht ausreichen, können Sie selbst eine Klasse programmieren, die das IACPoint<T>-Interface implementiert.


Die Klasse PAPoint ist ein Verbindungspunkt, der physische Beziehungen zwischen Komponenten darstellt. Die physischen Beziehungen werden in der Entwicklungsumgebung konfiguriert und in der Datenbanktabelle ACClassPropertyRelation gespeichert. Die ACPostInit()-Methode liest die Tabelle ACClassPropertyRelation (where ConnectionTypeIndex ==Global.ConnectionTypes.ConnectionPhysical (11)) und erstellt Instanzen von PAEdge für jede Beziehung.

PAEdges werden in der ConnectionList gespeichert. Eine PAEdge-Instanz ist immer in zwei verschiedenen Verbindungslisten vorhanden. Eine in einem PAPoint, die eine Quelle darstellt, und eine in einem anderen PAPoint, die ein Ziel darstellt.

Mit dieser bidirektionalen Verbindung können Sie ein Netzwerk physischer Pfade definieren, in dem Sie nach Zielen in beide Richtungen suchen können. Diese Pfadfindungsalgorithmen werden in der Klasse ACRoutingService implementiert, die diese Art von Connectionpoints verwendet.

 

 

Im obigen Sourcecode sehen Sie, dass oberhalb der Deklaration des PAPoints die Attributklasse ACPropertyConnectionPoint verwendet wird. Diese ist notwendig, damit die iPlus-Runtime erkennen kann welche PAPoints in der Klasse defniert sind, damit die selben Verbindungspunkte samt ihren Beziehungen auch in der Proxy-Instanz angelegt werden können.