Date: Fri, 29 Mar 2024 16:02:18 +0100 (CET)
Message-ID: <1128970317.196.1711724538959@unibw-confluence-pub.va.smhss.de>
Subject: Exported From Confluence
MIME-Version: 1.0
Content-Type: multipart/related;
boundary="----=_Part_195_477172547.1711724538959"
------=_Part_195_477172547.1711724538959
Content-Type: text/html; charset=UTF-8
Content-Transfer-Encoding: quoted-printable
Content-Location: file:///C:/exported.html
Auf dieser Seite:
Auf eigenen Unterseiten:
Architekturbasis<=
/h1>
Java
JDK11 oder h=C3=B6her (wir versuchen aber von Anfang an alles auf die ne=
ueren Konzepte - insbes. Modularisierung - anzupassen).
=C3=9Cber MashupConnector wird DataSet geladen (in Klasse org.soziotech.=
cmf3.CommunityMirror)
In den View-Klassen werden dann =C3=BCber das DataSet-Objekt Information=
Object-Objekte geladen (konkret Objekte der Klassen Person, Organisation un=
d Content); zus=C3=A4tzlich wird in den View-Klassen (konfigurierbar) ein D=
ataSetChangeObserver instantiiert (TBD: Wie bekommen VisualItems von =C3=84=
nderungen mit?)
Zu kl=C3=A4ren/dokumentieren:
- Wie genau werden Medienobjekte (insbes. Images) aus dem Mashup geladen =
/ gecached etc. - Hier gibt es vermutlich noch das ein oder andere Speicher=
leck
Siehe hierzu auch CommunityMash=
up
Grafik/Touch: =
JavaFX
JavaFX 11 - https://openjfx.io
Siehe auch Jav=
aFX f=C3=BCr CMF 3.0
Sonstige Bibl=
iotheken
Apache commons-configuration2
- Zur Konfiguration des CommunityMirror - wie bisher
- Konfigurationsdateien
- Defaults in mehreren Dateien unter resources/META-INF/configuration
- =C3=9Cberschreiben durch eine Datei, deren Name beim Start angegeben wi=
rd (normalerweise unter resources, aber auch anderswo)
- =C3=9Cberschreiben durch Umgebungsvariablen (Eclipse Run Configuration,=
-D beim direkten Start)
SLF4J und Logback
- nur noch f=C3=BCr Debug-Logging
- das Event-Logging f=C3=BCr Evaluation und Dashboards wird =C3=BCber ein=
eigenes Evaluationsframework abgewickelt (siehe dazu separater Punkt unten=
)
Eigentliches CMF=
h1>
Allgemeines
- Views - Vollbildschirmdarstellungen von visuellen Objekten und Interakt=
ionsm=C3=B6glichkeiten
- beinhalten
- Objekte (VisualItems), die Informationspartikel aus CommunityMashup dar=
stellen
- Objekte (VisualComponents oder davon vererbt) ohne Verbindung zum Mashu=
p
- liest Konfiguration und generiert passende Objekte daraus (Nicht-Inform=
ations-Objekte aber bei Bedarf auch Informationsobjekte)
- holt Informationspartikel vom Mashup und generiert Objekte daraus - kon=
figurierbar (neu)
- Objekte sind organisiert in mehreren Gruppen von VisualComponents (orga=
nisiert in VisualGroups) - von denen jeweils eine Gruppe die andere =C3=BCb=
erdeckt (Vordergrund/Hintergrund-Beziehung) - innerhalb einer VisualGroup g=
ibt es keine klar definierten Vordergrund/Hintergrund-Beziehungen
- Erst mal nur FlowView (wie bisher) - Sp=C3=A4ter weitere Views, zwische=
n denen umgeschaltet werden kann
- VisualItems
- sozusagen "VisualInformationObjects" - Visualisierung gekoppelt an ein =
InformationObjekt aus dem CommunityMashup
- Klassen f=C3=BCr Person, Organisation, Content und Unterkategorien von =
Content - konkret erst mal: EventItem, PictureItem, LongMessageItem (BlogPo=
st, News), ShortMessageItem (Microblog)
- in Bewegung (Animation - eigentlich nur gleichm=C3=A4=C3=9Fige Bewegung=
in verschiedene Richtungen), an fester Position
- verschiebbar, nicht verschiebbar
- vergr=C3=B6=C3=9Ferbar, nicht vergr=C3=B6=C3=9Ferbar
- Darstellungsmodi: inMicro (normal, in FlowView), inDetail (Detailansich=
t), inTeaser ("Plakat")
- Definition =C3=BCber FXML und CSS
- VisualComponents
- in Bewegung, an fester Position
- VisualItems sind von VisualComponents abgeleitet
- Drawing wird =C3=BCber eigene Klasse realisiert, hier auch User/Interac=
tion-Logging-Methoden und Interaktion
- Definition von Aktionen, die bei Klick/Touch ausgel=C3=B6st werden (=C3=
=96ffnen anderer Objekte, Schlie=C3=9Fen des aktuellen Objektes, ...)
- Beispiele: Wetteraussichten, Busabfahrtszeiten, Speiseplan, Video-Fenst=
er in andere R=C3=A4ume, Buttons, ....
- Generell
- CommunityInteractionFramework - wird gestrichen - Event-Handling direkt=
in VisualComponents - basierend auf JavaFX/TUIOFX-Events
- Explizite Ber=C3=BCcksichtigung Distributed Display Environment (DDE), =
also mehrere an unterschiedlichen Orten aufgestellte Displays mit ggf. iden=
tischer Datenbasis
- Filterung von zu ladenden/priorisierenden InformationObjects konfigurie=
rbar (To-be-Specified)
- Remote Management Schnittstelle (z.B. aktueller Screendump etc) - f=C3=
=BCr Management-Cockpits / Dashboards
- Laufender Export von Log-Daten f=C3=BCr Management / Evaluation (Benutz=
er/Interaktions-Logging)
- =C3=BCber Interface
- Abspeicherung in Log-Datei m=C3=B6glich
- direkte Abspeicherung in zentrale Datenbank m=C3=B6glich
- "Sensoren" in View, VisualInformationObjects, VisualComponents
- jedes Objekt/Component hat dazu eindeutige (konfigurierbare) ID
- rudiment=C3=A4res Auswertungstool enthalten; zus=C3=A4tzliche Nutzung /=
Auswertung der Daten in Dashboard / Cockpit-Implementierungen
- Distrubuted Logging Unterst=C3=BCtzung (zentralisiertes Logging mehrere=
r Deployments mit verschiedenen Gro=C3=9Fbildschirmen sowie ggf. unterschie=
dlichen Mashup-Datens=C3=A4tzen)
- Framing: M=C3=B6glichkeit zur (teilautomatisierte) Definition von "Inte=
raktionsslots" inkl. Kommentarfunktion, z.B. InfoPartikel wird angezeigt, N=
utzer bleibt davor stehen, interagiert aber nicht, Offline-Erfassung des Gr=
undes durch Ex-Post-Befragung und Eintrag in Kommentarfeld durch "Beobachte=
r".
- Einbindung Kinect als weiterem "Sensor" f=C3=BCr datenschutztechnisch u=
nbedenkliches teilanonymisiertes Nutzertracking; TBD: Library daf=C3=BCr, v=
gl. auch Kinect-Logging nach Jan Sc=
hwarzer oder anderer Ansatz, z.B. http://www.tutego.de/blog/javainsel/2015/=
04/xbox-360-kinect-unter-java-ansprechen/
- mehr Details auf separater Architektur/Konzeptseite: Logging-/Evaluationsframework=
li>
Noch unklar
- Graph ... was nehmen wir zum Browsen ... eventuell bisher genutzte=
s Framework weiterverwenden / oder woanders entwickeltes / gepflegtes Frame=
work (2D-Physik-Engine ...) nutzen
Dokumentation
Package/K=
lassen-Struktur
- org.sociotech.cmf3.
- CommunityMirror.java - Basisklasse
- .view.*
- .components.* - VisualComponents
- VisualComponent.java
- VisualItem.java
- .view.flow.
- FlowView.java
- .components
- .context - ContextManager und andere Komponenten zur Verwaltung von Inf=
ormation zur lokalen Instanz des CM
- .configuration
- .logging - User/Interaction-Logging
- .remote - Remote Management Funktionalit=C3=A4t
Ableitungsstruktur der zentralen VisualComponent und VisualItem-Klassen:=
Wie und wo werden VisualComponent-Objekte erzeugt:
- FlowView.onInit()
- - javafx.scene.Group-Objekte f=C3=BCr die verschiedenen Ebenen
- - addStickyVisualComponents() - Objekte nach Konfiguration, erzeug=
t/eingef=C3=BCgt =C3=BCber addVisualComponentToView(classname, posX, p=
osY, scaleX, scaleY, layer, aname);
Handhabung der Interaktion:
- "ganz normal" mit JavaFX-Mitteln - d.h. es k=C3=B6nnten mit den Funktio=
nen von JavaFX.scene.Node wie z.B. setOnTouchMoved Event-Handler regis=
triert werden
- Einfacher:
- VisualComponent.makeTouchable
- VisualComponent.makeDragable
- dadurch Registrierung von Event-Handlern, die dann Methoden handleMouse=
Event(), handleTouchEvent() in der Klasse aufrufen (k=C3=B6nnen =C3=BCberla=
den werden)
Programmstart
Ablauf beim Programmstart
- org.sociotech.cmf3.CommunityMirror.main()
- - doStaticInitialization()
- =E2=80=94 loadConfiguration()
- -- Initialize RemoteManager (if mirror.remote.enable =3D tru=
e)
- - Application.launch(args); =E2=80=94 damit wird JavaFX gestartet =
und es geht weiter mit
- org.sociotech.cmf3.CommunityMirror.start()
- - connectToCommunityMashup()
- - manageScreenSetup()
- - createMainView()
- =E2=80=94 new main view class: org.sociotech.cmf3.view.TestView
- =E2=80=94 view.init() -> onInit() in der View-Klasse
FlowView
Alles weitere erfolgt ereignisbasiert =E2=80=A6
In der Basisklasse CommunityMirror wird Mittels eines JavaFX TimelineBuilder=
s ein JavaFX Timeline-Objekte erzeugt und dann .play() darauf aufgerufen. D=
ie handle()-Funktion ruft dann auf allen Controller-Objekten und View-Objek=
ten die Funktion update() auf, welche wiederum die Funktion onUpdate() aufr=
uft.
Ben=C3=B6tigte Bibl=
iotheken
.. sind im Eclipse-Projekt (mit allen Abh=C3=A4ngigkeiten) direkt enthal=
ten.
Folgende Bibliotheken werden ben=C3=B6tigt: (und sind im modulepath enth=
alten und in module-info.java angegeben)
- commons-configuration2 2.4
- commons-logging 1.2
- commons-beanutils
- commons-text-1.6.jar
- commons-lang3-3.8.1.jar
- logback-core 1.3.0
- logback-classic 1.3.0
- slf4j-api 1.8.0-beta4
- json-20160810
CommunityMashup ...
F=C3=BCr das CommunityMashup werden folgende drei Bibliotheken ben=C3=B6=
tigt: (ebenso im modulepath enthalten)
- org.sociotech.communitymashup.core.jar
- org.sociotech.communitymashup.data.DataObservers.jar
- org.sociotech.communitymashup.framework.CommunityMashupApplicationFrame=
work.jar
Ausserdem werden von diesen Bibliotheken (teilweise erst zur Laufzeit) w=
eitere Klassen / Bibliotheken nachgeladen (diese sind gr=C3=B6=C3=9Ftenteil=
s im classpath enthalten):
- httpclient-4.2.2
- httpcore-4.2.2
- org.eclipse.emf.common-2.9.2
- org.eclipse.emf.ecore-2.9.2
- org.eclipse.emf.ecore.xmi-2.9.1
- Common-1.0.0
- Lpg.runtime.java-2.0.17
- Org.eclipse.core.contenttype-3.7.300
- Org.eclipse.core.jobs-3.10.300
- Org.eclipse.core.runtime-3.15.200
- Org.eclipse.emf.query-1.2.100
- Org.eclipse.equinox.app-1.4.100
- Org.eclipse.equinox.common-3.10.300
- Org.eclipse.equinox.preferences-3.7.300
- Org.eclipse.equinox.registry-3.8.300
- Org.eclipse.ocl-3.2.1
- Org.eclipse.ocl.ecore-3.2.=C3=9F
- Org.eclipse.osgi-3.13.300
Todos
- Testen von TouchEvents auf geeigneter Hardware
- StickyComponents wieder einbauen (Weather, Bus)
- Bei Sticky Components noch mehr auf FXML bauen
- VisualItems: FXML-Rendering weiter machen
- SelectionStrategyDefault weiter implementieren (aktuell wird nur nach m=
etatag selektiert)
- Laden VisualItems basierend auf Context (Location etc.) - Regeln in Kon=
figuration einstellbar
- Log-Framework/Factory etc erstellen um Log-Meldungen an konfigurierbare=
Quelle abzusetzen
- M=C3=B6glichkeit zum Anmelden/Abmelden von Benutzern =C3=BCber Remote-S=
chnittstelle einbauen; Benutzer dann als Teil des Kontextes verf=C3=BCgbar<=
/li>
- Build-Prozess: Kl=C3=A4ren, wie man mit JDK 11 und JavaFX 11 in Eclipse=
ein "Fat-JAR" erzeugen kann - also ein JAR, das alles enth=C3=A4lt, was ma=
n zum Starten der CommunityMirror-App braucht - insbesondere die JavaFX-Bib=
liotheken/Modul - siehe z.B. http://rimdiary.com/javaf=
x-on-jdk-11/ f=C3=BCr einige Hinweise, wie das gehen k=C3=B6nnte .=
..
- Check in wie weit JavaFX Multi-Touch und Multi-Displays (neue Hardware)=
unterst=C3=BCtzt; dabei insbesondere: wie funktioniert Screen-=C3=BCbergre=
ifendes Multi-User-Multi-Touch bei einem Gro=C3=9Fbildschirm bestehend aus =
einer Display-Matrix (mehrere Einzeldisplays)
- Check 2D-Physik-Engines f=C3=BCr JavaFX, z.B. Phys2D vgl. =
dazu u.a. auch https://books.google.de/books?id=3DD0Ml8=
WugPm8C&lpg=3DPA114&ots=3DBiHa9fhaCX&dq=3DPhys2D%20javafx&h=
l=3Dde&pg=3DPA114#v=3Donepage&q=3DPhys2D%20javafx&f=3Dfalse=
- Check Behandlung von Image-Objekten in Mashup und das Durchreichen zu J=
avaFX
- Check Logging-Framework f=C3=BCr Java, ggf. SL4J + Logging-Server?=
Vgl. z.B. https://stackify.com/slf4j-java/ oder https://tech.europace.de/eine-migr=
ation-auf-slf4j-und-logback-lohnt-sich/
------=_Part_195_477172547.1711724538959--