Zusammenfassung

Der CommunityMirror stellt Informationsobjekte auf verschiedene Arten und Weisen dar.

Beim Start des CommunityMirror wird die Menge aller verfügbaren Informationsobjekte in Form eines DataSets aus dem über eine URL angegebenen CommunityMashup geladen - und regelmäßig aus dem CommunityMashup aktualisiert (Objekte vom Typ "InformationObject" aus dem CommunityMashup mit zusätzlichen Extension-Objekten - siehe dazu auch: CommunityMashup1).

Dieses DataSet stellt die Basis für die im FlowView dargestellten Graphen dar - d.h. bei der Darstellung von Graphen werden alle InformationObjects aus dem Mashup berücksichtigt.

Aus dem DataSet werden Informationsobjekte für die Darstellung im Flow und als Teaser ausgewählt. Die Auswahl erfolgt in der FlowView-Klasse und wird über die ein SelectionStrategy-Objekt festgelegt. Siehe hierzu die folgenden Abschnitte.

CommunityMirror-Klasse

Beim Start der CommunityMirror-Software wird noch vor Initialisierung von JavaFX die Verbindung zu einem CommunityMashup-Server hergestellt und der Datensatz von dort in ein Objekt der Klasse DataSet geladen - in der Funktion connectToCommunityMashup()

Konfigurationseinstellungen:

Informationsobjekte in Flow und als Teaser

In der FlowView-Klasse wird eine Auswahl und Priorisierung der InformationObjects im DataSet vorgenommen -  in der Funktion updateDataList() werden mit Hilfe der nachfolgend ausgeführten SelectionStrategy die darzustellenden InformationObjects aus dem DataSet ausgewählt und in zwei Map-Objekten gespeichert: 

Ergebnis:

Die Priorität (Integer:priority) ist dabei eine Zahl zwischen 0 und 255 - wobei eine höhere Zahl einer höheren (Anzeige-)Priorität entspricht.

Basierend auf den Prioritätsinformationen werden mit einem Scheduling-Algorithmus die jeweils als nächstes darzustellenden Objekte ausgewählt - TBD: Noch mehr Details dazu

Konfigurationseinstellungen:

SelectionStrategy-Klasse

Die FlowView-Klasse nutzt in updateDataList() ein Objekt mit dem Interface SelectionStrategy zur konkreten Auswahl und Priorisierung der Informationsobjekte.

public interface org.sociotech.cmf3.view.flow.data.SelectionStrategy {
  public void init(DataSet dataSet, Configuration configuration);
  public Map<InformationObject, Integer> getFlowObjects();
  public Map<InformationObject, Integer> getTeaserObjects();
}

Konfigurationseinstellungen:

Die Standardimplementierung des Interfaces lädt eine XML-Konfigurationsdatei, in der Selektionsregeln basierend auf den Attributen der Informationsobjekte spezifiziert werden können. Die Regeln werden nacheinander auf die Gesamtmenge der Informationsobjekte im DataSet angewendet und die resultierenden Objekte werden dann in die Liste der flowObjects oder teaserObjects eingefügt - mit der in der Regel genannten Priorität. Wenn es schon einen Eintrag aus einer früheren Regel gibt, dann wird die höhere Priorität gewählt.

Aufbau der Regeln:

<selectionrules>
<selectionrule id="" name=""> <!-- attributes used for logging -->
  <targets> <!-- specify one or two targets: flow, teaser -->
    <target value="flow" /> 
  </targets>
  <param name="PNAME" combination="and|or"> <!-- check a parameter of the InformationObject - combine check vs several values via AND or OR -->
    <value comparator="equal|notequal|substring|before|after|greaterorequal|greaterthan|lessorequal|lessthan|near">PVALUE</value>*
  </param>
  <priority value="0" /> <!-- priority can be Integer between 0 and 255 -->
</selectionrule>
...
</selectionrules>


Possible (selection) parameters are: ....
- type (person, organisation, content)
- name (includes alternative names)
- metatag
- tag
- start_date - aktuell: zahl von Millisekunden ... Check if current time is >= starttime(-parameter)
- end_date - aktuell: zahl von Millisekunden ... Check if current time is <= endtime(+parameter)
- image_count (number of images connected to InformationObject)
- org (name of organisation connected to InformationObject) - funktioniert auch mit Vergleichsoperator "NEAR"
- pers (name of person connected to InformationObject) - funktioniert auch mit Vergleichtsoperator "NEAR"
- created
- lastModified
- location (soweit dem Inhalt ein Ort zuordenbar ist ...)


Special values for DateTime attributes:
- TODAY
- TOMORROW
- NOW


Special values for Location attributes:
- HERE - location of CM screen

Konfigurationseinstellungen: