Giter VIP home page Giter VIP logo

hdm-wim-devlab's Introduction

hdm-wim-devlab

Hinweis: Bei diesem Projekt handelt es sich um ein Forschungsprojekt der Hochschule der Medien, Stuttgart.

Schnellzugriffe

Spielregeln

  • Jede Gruppe hat ein eigenes Verzeichnis.
  • Jede Gruppe stellt einen oder mehrere Microservices bereit. Jede Gruppe ist damit selbst für die eigene Systemumgebung verantwortlich.
  • Entwickelt wird eine Event Driven Architecture. Die Kommunikation findet über Messages bzw. Events statt.
  • Diese Events werden mittels Google PubSub übermittelt.

Google PubSub

Für die Kommunikation zwischen den Modulen wird Google PubSub genutzt. Über PubSub werden Messages versendet. Wir sprechend jedoch häufiger von Events. Betrachtet die Messages als eine Art Kapsel für ein Event bzw. Synonym zueinander.

  • Zugriff auf die PubSub, also Funktionen für das Senden & Empfangen kann über diesen GitHub Issue beantragt werden (Google Account benötigt).
  • Die verfügbaren Topics (Kommunikationskanäle) werden über die sharedLib bereitgestellt. Näheres zur Verwendung findet Ihr in der Dokumentation. Werden zusätzliche Topics benötigt, können diese über einen neuen Issue angefragt werden.
  • Als Teil der sharedLib werden Euch Klassen zur Verfügung gestellt, um Events empfangen und senden (publish & pull) zu können. Falls darüber hinaus weitere Informationen benötigt werden, kann die ausführliche offizielle Dokumentation von Google PubSub genutzt werden. Die Dokumentation der SDK findet sich hier (Package: com.google.cloud.pubsub.spi.v1). Idealerweise werden Events jedoch nicht über Pull periodisch abgefragt, sondern werden von einem PubSub-Server via Push an den Empfänger gesendet (Jede Gruppe hat dazu einen individuellen Workshop erhalten).

Grundlegende Kommunikation

  • Publish Workflow Publish Workflow

  • Subscribe Workflow Subscribe Workflow

  • AppEngine: PaaS. Publisher und Subscriber werden automatisch erstellt (wird durch Event-Gruppe zur Verfügung gestellt), Publisher kreieren eine PubSubMessage und versenden diese über PubSub im angegebenen Topic.

  • PubSub: verteilt PubSubMessages durch die Topics.

  • Publish: Eine Message wird in das eingetragene Topic veröffentlicht.

  • Subscribe: Mehrere PubSubMessages werden aus dem eingetragenen Topic als Stream übertragen.

Bitte die Vorgaben für die Klassen aus der SharedLib einhalten!

Topics können in den Issues beantragt werden!

hdm-wim-devlab's People

Contributors

akristjan avatar bjoernzimmermann avatar christianschn avatar dimadondl avatar florianmarkblessing avatar grasniqi avatar incim avatar itsben avatar ivan-kurtovic avatar lboehler avatar mateos-alliaj avatar nilsbch avatar purii avatar stzimpas avatar wendelinherrmann avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

hdm-wim-devlab's Issues

[EVENT] Attribute aller Events festlegen

Hallo CEP

bitte ergänzt für alle aufgeführten Events die Attribute durch Edit. Die Schreibweise ist erstmal unwichtig, wir normieren die Attribute in der Konstantenklasse. Falls Events fehlen, bitte um direkte Rückmeldung. Ein Liste aller Events inkl. Aufbau ist hier einzusehen.

UserContextEvent

erstellt durch CEP; die Nutzerinformationen lassen auf einen Projekt-Kontext schließen; published in Topic: Constants.PubSub.Topic.INSIGHTS

Attribute

  • userIds: Array(String)
  • userNames: Array(String)
  • projectId: String
  • constants.AttributeKey.EVENT_SOURCE: Constants.PubSub.EventSource.EVENT
  • constants.AttributeKey.EVENT_TYPE: Constants.PubSub.EventType.USER_CONTEXT

DocumentContextEvent

erstellt durch CEP; die Dokumentinformationen lassen auf einen Projekt-Kontext schließen; published in Topic: Constants.PubSub.Topic.INSIGHTS

Attribute

  • documentIds: Array(String)
  • documentNames: Array(String)
  • projectId: String
  • constants.AttributeKey.EVENT_SOURCE: Constants.PubSub.EventSource.EVENT
  • constants.AttributeKey.EVENT_TYPE: Constants.PubSub.EventType.DOCUMENT_CONTEXT

DocumentRelevantEvent

erstellt durch CEP; ein Nutzer hat ein bestimmtes Dokument angeklickt; die SR kann die Verbindung höher gewichten; published in Topic: Constants.PubSub.Topic.INSIGHTS

Attribute

  • userId: String
  • documentId: String
  • constants.AttributeKey.EVENT_SOURCE: Constants.PubSub.EventSource.EVENT
  • constants.AttributeKey.EVENT_TYPE: Constants.PubSub.EventType.DOCUMENT_RELEVANT

DocumentHighlyRelevantEvent

erstellt durch CEP; ein Nutzer hat ein bestimmtes Dokument mehrfach angeklickt; die SR kann die Verbindung höher gewichten; published in Topic: Constants.PubSub.Topic.INSIGHTS

Attribute

  • userId: String
  • documentId: String
  • constants.AttributeKey.EVENT_SOURCE: Constants.PubSub.EventSource.EVENT
  • constants.AttributeKey.EVENT_TYPE: Constants.PubSub.EventType.DOCUMENT_HIGHLY_RELEVANT

SessionEndEvent

erstellt durch CEP; es ist kein User mehr in der Session vorhanden; published in Topic: Constants.PubSub.Topic.SESSIONINSIGHTS

Attribute

  • sessionId: String
  • constants.AttributeKey.EVENT_SOURCE: Constants.PubSub.EventSource.EVENT
  • constants.AttributeKey.EVENT_TYPE: Constants.PubSub.EventType.SESSION_END

UserInactiveEvent

erstellt durch CEP; ein User ist inaktiv (passiver Logout); published in Topic: Constants.PubSub.Topic.SESSIONINSIGHTS

  • userId: String
  • constants.AttributeKey.EVENT_SOURCE: Constants.PubSub.EventSource.EVENT
  • constants.AttributeKey.EVENT_TYPE: Constants.PubSub.EventType.USER_INACTIVE

[Event] SharedLib vereinfachen und Helper-Klassen hervorheben

Die SharedLib soll folgende Funktionen bieten:

## Pseudocode
    import SubscriptionHelper from SharedLib
    import PublishHelper from SharedLib    
    import Event from SharedLib

    # Modulteams sollen Message / Event auf Basis der geteilten Klasse erstellen können
    Event event = new Event();
    event.setData({...})
    # Publish to PubSub
    PublishHelper.publish(topicId, event);

    # Events abfragen
    # message kommt direkt von pubSub
    SubscriptionHelper.subscribe(message => {
        # Eventklasse übernimmt Mapping von message "json" auf entsprechende Attribute
        Event event = new Event(message);
        # Mit Event arbeiten...
        event.getData();
        event.getAttributes();
    })

SpeechTokenizer -> SemRep

1.) RichToken:
Im 1. Schritt benötigen wir von den SpeechTokenizern den folgenden Input:

"793dnj";	  // sessionID
"2"; 		  // userID
"Videokonferenz";  // context
"milestone";	 // 1. keyword
("XY";	        // n. keyword)

Reihenfolge: 1. SessionID, 2. userID, 3. context = "Videokonferenz", 4. keyword, (n. keyword)
Context soll "Videokonferenz" lauten. Dieser wird im Anschluss an den von SemRep erstellten RichToken von der Event-Gruppe weiter verfeinert. Keywords können beliebig viele angegeben werden.

[GUI] Attribute aller Events festlegen

Hallo GUI

bitte ergänzt für alle aufgeführten Events die Attribute durch Edit. Die Schreibweise ist erstmal unwichtig, wir normieren die Attribute in der Konstantenklasse. Falls Events fehlen, bitte um direkte Rückmeldung. Eine Liste aller Events inkl. Aufbau ist hier einzusehen.

UserLoginEvent

erstellt durch GUI; ein User hat sich eingeloggt; published in Topic: Constants.PubSub.Topic.SESSIONINSIGHTS

Attribute

  • userId: String
  • constants.AttributeKey.EVENT_SOURCE: Constants.PubSub.EventSource.USER_INTERFACE
  • constants.AttributeKey.EVENT_TYPE: Constants.PubSub.EventType.USER_LOGIN

SessionStartEvent

erstellt durch GUI; ein User startet eine neue Session; published in Topic: Constants.PubSub.Topic.SESSIONINSIGHTS

Attribute

  • sessionId: String
  • constants.AttributeKey.EVENT_SOURCE: Constants.PubSub.EventSource.USER_INTERFACE
  • constants.AttributeKey.EVENT_TYPE: Constants.PubSub.EventType.SESSION_START

UserJoinedSessionEvent

erstellt durch GUI; ein User hat sich an einer Session angemeldet; published in Topic: Constants.PubSub.Topic.SESSIONINSIGHTS

  • userId: String
  • sessionId: String
  • constants.AttributeKey.EVENT_SOURCE: Constants.PubSub.EventSource.USER_INTERFACE
  • constants.AttributeKey.EVENT_TYPE: Constants.PubSub.EventType.USER_JOINED_SESSION

UserStartEvent

erstellt durch GUI; ein User startet die Vorschlagsfunktion; published in Topic: Constants.PubSub.Topic.SESSIONINSIGHTS

  • userId: String
  • sessionId: String
  • constants.AttributeKey.EVENT_SOURCE: Constants.PubSub.EventSource.USER_INTERFACE
  • constants.AttributeKey.EVENT_TYPE: Constants.PubSub.EventType.USER_START

StayAliveEvent

Attribute

erstellt durch GUI; Ping-Event zur Aktivitätsprüfung; published in Topic: Constants.PubSub.Topic.SESSIONINSIGHTS

  • userId: String
  • constants.AttributeKey.EVENT_SOURCE: Constants.PubSub.EventSource.USER_INTERFACE
  • constants.AttributeKey.EVENT_TYPE: Constants.PubSub.EventType.STAYALIVE

UserLeftSessionEvent

erstellt durch GUI; ein User hat sich von einer Session abgemeldet; published in Topic: Constants.PubSub.Topic.SESSIONINSIGHTS

  • userId: String
  • sessionId: String
  • constants.AttributeKey.EVENT_SOURCE: Constants.PubSub.EventSource.USER_INTERFACE
  • constants.AttributeKey.EVENT_TYPE: Constants.PubSub.EventType.USER_LEFT_SESSION

FeedbackEvent

erstellt durch GUI; ein Dokument wurde dem Nutzer angezeigt; published in Topic: Constants.PubSub.Topic.FEEDBACK_GUI

Attribute

  • userId: String
  • documentId: String
  • constants.AttributeKey.EVENT_SOURCE: Constants.PubSub.EventSource.USER_INTERFACE
  • constants.AttributeKey.EVENT_TYPE: Constants.PubSub.EventType.FEEDBACK

SuccessfullFeedbackEvent

erstellt durch GUI; ein Dokument wurde vom Nutzer angeklickt; published in Topic: Constants.PubSub.Topic.FEEDBACK_GUI

Attribute

  • userId: String
  • documentId: String
  • constants.AttributeKey.EVENT_SOURCE: Constants.PubSub.EventSource.USER_INTERFACE
  • constants.AttributeKey.EVENT_TYPE: Constants.PubSub.EventType.SUCCESSFULL_FEEDBACK

[SPEECH] Attribute aller Events festlegen

Hallo Speech Tokenizer

bitte ergänzt für alle aufgeführten Events die Attribute durch Edit. Die Schreibweise ist erstmal unwichtig, wir normieren die Attribute in der Konstantenklasse. Falls Events fehlen, bitte um direkte Rückmeldung. Eine Liste aller Events inkl. Aufbau ist hier einzusehen.

TokenEvent

erstellt durch ST; beinhaltet den Token; published in Topic: Constants.PubSub.Topic.TOKEN

  • sessionId: String
  • userId: String
  • timestamp: Int
  • contexts: Array
  • tokens: Array
  • constants.AttributeKey.EVENT_SOURCE: Constants.PubSub.EventSource.SPEECH_TOKENIZATION
  • constants.AttributeKey.EVENT_TYPE: Constants.PubSub.EventType.TOKEN

Message Generator zum Testen

Wir brauchen nen Generator der Messages generiert und diese dann unter den verschiedenen Topics veröffentlicht.

{
  "data": string,
  "attributes": {
    string: string,
    ...
  },
  "messageId": string,
  "publishTime": string,
}

source

[ALLE] Userinformationen, die das System benötigt

Aktueller Status ist, dass neben den Google Informationen
Vorname, Nachname, Email, ID
die Zusatzinformationen
Unternehmen, Abteilung, Aktuelles Projekt und Projektrolle
abgefragt.

Wenn weitere Informationen benötigt werden sollten hier rein.

Gui -> SemRep (neue Usereinträge)

UserInformationEvent

SemRep stell für Gui eine Abfrage-Methode bereit.
Eingabeparameter:

userID 

1.) User bereits in Ontologie:

Rückgabe:

UserID=, Vorname=Lisa, Nachname=, 
Mail=, Projekt=, Projektrolle=, Abteilung=

*UserID=, Vorname=Lisa, Nachname=, Mail= -> von Google Credential
**Projekt=, Projektrolle=, Abteilung= -> Formular

2.) User muss neu in die Ontologie eingetragen werden:

a) User nicht in Ontologie:
Rückgabe:

UserID=userID, Vorname=null, Nachname=null, 
Mail=null, Projekt=null, Projektrolle=null, Abteilung=null

b) neu anlegen in Ontologie:
Rückgabe:

UserID=, Vorname=Lisa, Nachname=, 
Mail=, Projekt=, Projektrolle=, Abteilung=

[Alle] Topics festlegen

Da wir der Kommunikation zwischen den Gruppen über PubSub immer näher kommen, müssen wir die Topics festlegen. D.h. Wer an welche Topic publisht und wer welche Topic empfängt.

Bisher laufen alle Gruppen auf topic-1 zum testen.

Implementierung PubSub:

  • SemRep
    • Senden
    • Empfangen
  • Speech
    • Senden
    • Empfangen
  • GUI
    • Senden
    • Empfangen
  • CEP
    • Senden
    • Empfangen
  • ML
    • Senden
    • Empfangen

Event -> SemRep

Kontext:
1.) SemRep erhält den folgenden Input von SpeechTokenizer:
input[0] = "793dnj"; // sessionID
input[1] = "2"; // userID
input[2] = "Videokonferenz"; // context
input[3] = "milestone"; // keyword
(input[n] = "XY"; // keyword)

2.) Daraufhin erstellt SemRep den folgenden RichToken:
SessionID: 793dnj
TimeStamp: 2017-06-07 16:00:51.03
Person: Person=Kristjan_Alliaj, ID=2, Klasse=Externer_Mitarbeiter, NamedIndividual, Vorname=Kristjan, Nachname=Alliaj, Mail=[email protected], Person_arbeitet_an_Projekt=HighNet, Person_hat_Projektrolle=Entwickler, Person_gehoert_zu_Abteilung=IT, Person_hat_Dokument_verfasst=Aufgabenliste-HighNet, Person_ruft_Dokument_auf=KickOff-HighNet, Aufgabenliste-HighNet, Person_favorisiert_Dokument=KickOff-HighNet
Dokument_0: Dokument_3=Projektplanung-HighNet, Klasse=Dokument, NamedIndividual, Dok_Name=Projektplanung, Dok_ID=1gnH6sv3VqGEveSSf0SoS7dJqWaUyUnZm6-QrdiH7vCM, Dok_URL=https://docs.google.com/document/d/1gnH6sv3VqGEveSSf0SoS7dJqWaUyUnZm6-QrdiH7vCM/edit, Dok_Erstelldatum=2017-04-12T17:33:00, Dok_Updatedatum=2017-04-29T14:05:00, Dok_Version=1.1, Dok_Typ=Google Docs, Dokument_verfasst_von_Person=Mateos_Alliaj, Haruki_Murakami, Lisa_Meier, Kristjan_Alliaj, Björn_Zimmermann, Ivan_Kurtovic, Donald_Trump, Dokument_gehoert_zu_Phase=SpezifikationUndPlanung, Dokument_hat_Dokumentenkategorie=Textdokumente, Planungen, Praesentationen, Tabellen, Dokument_gehoert_zu_Projekt=HighNet, Big_Data_Diagnosis, BlackWater, Dokument_favorisiert_von_Person=Lisa_Meier, Mateos_Alliaj, Donald_Trump, Kristjan_Alliaj, Björn_Zimmermann, Haruki_Murakami, Ivan_Kurtovic, Dok_Keywords=planning, project_plan, project_planning, milestone, Big_Data, kickoff-HighNet, kickoff, to-do_list, list, tasks, costs, cost_planning, listing, report, finances, financial_report, Kontext=HighNet_project, Big_Data_Diagnosis_project, BlackWater_project
Projekt: ProjektID=1, ProjektName=HighNet, Projekt_gehoert_zu_Unternehmen=Star_Cars, Projekt_gehoert_zu_Abteilung=Research_and_Development, Projekt_hat_Projektmitglied=Mateos_Alliaj, Projekt_hat_Dokument=Meilensteine-HighNet

3.) Event identifiziert den Kontext und stellt diesen in der folgenden Struktur als Token bereit:
input[0] = "793dnj"; // sessionID
input[1] = "2"; // userID
input[2] = "HighNet_project"; // context
input[3] = "milestone"; // keyword
(input[n] = "XY"; // keyword)
Im Input Array wird der vorher "Videokonferenz" Kontext aktualisiert. Hierfür wird das Attribut "Dokument_gehoert_zu_Projekt" (im obigen Beispiel = HighNet) aus dem RichToken herangezogen. Alle Dokument-Objekte werden betrachtet und das häufigste Projekt dann ausgewählt. Dem identifizierten Projekt (HighNet) wird aber noch der Zusatz "_project" angefügt. So erhalten wir den Kontext "HighNet_project". Also immer: identifiziertes Project + "_project"

4.) Event liefert ein Array zurück mit der Angabe, welche Dokumente den Identifizierten Kontext haben:
input[0] = "793dnj"; // sessionID
input[1] = "HighNet_project"; // context
input[2] = "1gnH6sv3VqGEveSSf0SoS7dJqWaUyUnZm6-QrdiH7vCM"; // Dok_ID
(input[n] = "XY"; // Dok_ID)

[MACHINE LEARNING] Attribute aller Events festlegen

Hallo Machine Learning

bitte ergänzt für alle aufgeführten Events die Attribute durch Edit. Die Schreibweise ist erstmal unwichtig, wir normieren die Attribute in der Konstantenklasse. Falls Events fehlen, bitte um direkte Rückmeldung. Eine Liste aller Events inkl. Aufbau ist hier einzusehen.

LearnEvent

erstellt durch ML; Kontext zwischen Personen oder Dokumenten zu Projekten; published in Topic: Constants.PubSub.Topic.INSIGHTS

Attribute

  • userId: String
  • documentId: String
  • projectId: String
  • documentAffiliation: Boolean (true)
  • constants.AttributeKey.EVENT_SOURCE: Constants.PubSub.EventSource.MACHINE_LEARNING
  • constants.AttributeKey.EVENT_TYPE: Constants.PubSub.EventType.LEARN

SemRep => GUI (Format Dokumentenvorschläge)

Die Dokumente Vorschläge sollen in folgendem Format erfolgen:

Infos:

Das Format der Einzelnen Vorschläge sollte folgendermaßen aussehen:

 
{"name":"Dokument1","prio":1,"DokuTyp":"gdoc","link":"https://docs.google.com/document/d/1bkLCvEBX56OBrECe89SFxpaqhlfQfZtOUNHNxM2Rlmc/edit","folder":"Mercedesprojekt"}
 
{"name":"Dokument2","prio":0,"DokuTyp":"gsheet","link":"https://docs.google.com/document/d/1bkLCvEBX56OBrECe89SFxpaqhlfQfZtOUNHNxM2Rlmc/edit","folder":"Mercedesprojekt"}

Insgesamt sollten die einzelnen Vorschlags-JSONs in ein großes JSON verpackt werden.

nach folgendem Beispiel (die Zahl hinter sug wird hochgezählt):

var broadcast = function() {
 
 var infoJSON = JSON.stringify({ "name":"Dokument1", "prio":1, "DokuTyp":"gdoc", "link": "https://docs.google.com/document/d/1bkLCvEBX56OBrECe89SFxpaqhlfQfZtOUNHNxM2Rlmc/edit", "folder": "Mercedesprojekt" } );
   var infoJSON2 = JSON.stringify({ "name":"Dokument2", "prio":0, "DokuTyp":"gsheet", "link": "https://docs.google.com/document/d/1bkLCvEBX56OBrECe89SFxpaqhlfQfZtOUNHNxM2Rlmc/edit", "folder": "Mercedesprojekt" } );
 var json = JSON.stringify({
   sug1: infoJSON, sug2: infoJSON2
 });
 
 

Am Anfang werden alle relevanten Dokumente initial an die GUI geschickt. Sich später ändernde Prioritäten erfolgen durch ein erneutes Senden einzelner Vorschläge an die GUI

REST für [GUI]

Weil die Frage aufkam wie ihr über REST ein Event publishen könnt:

(5) veröffentlichen von Events mit Hilfe der REST Schnittstelle.

Endpointurl: https://hdm-wim-devlab.appspot.com/publish

ParameterName ParameterValue
topic string
payload string
attributes string

Beispiel:
https://hdm-wim-devlab.appspot.com/publishtopic=topic-1&payload=blubb_1&attributes=%7B%22EventType%22%3A%22insight%22%2C%22EventSource%22%3A%22user-interface%22%7D

Value des attributes Parameters ist ein url codierter json string : {"EventType":"insight","EventSource":"user-interface"} => %7B%22EventType%22%3A%22insight%22%2C%22EventSource%22%3A%22user-interface%22%7D

Hinweis: Es findet keine Prüfung statt, ob die topic existiert. Diese bitte den Constants entnehmen.

An dem Publishendpoint wird sich eher nichts ändern, allerdings arbeite ich gerade dran mit Hilfe von Push Events zu empfangen. Werde dann in dem Issue immer ein Update schreiben und die doku aktualisieren

Events: SemRep

Hallo Semantic Representation

bitte ergänzt für alle aufgeführten Events die Attribute durch Edit. Die Schreibweise ist erstmal unwichtig, wir normieren die Attribute in der Konstantenklasse. Falls Events fehlen, bitte um direkte Rückmeldung. Eine Liste aller Events inkl. Aufbau ist hier einzusehen.

DepartmentInformationEvent

erstellt durch SR; Detailinformationen über die Abteilung; published in Topic: Constants.PubSub.Topic.INFORMATION

Attribute (siehe Kommentar)

  • sessionId: String
  • tokenId: String
  • ...
  • constants.AttributeKey.EVENT_SOURCE: Constants.PubSub.EventSource.SEMANTIC_REPRESENTATION
  • constants.AttributeKey.EVENT_TYPE: Constants.PubSub.EventType.DEPARTMENT_INFO

DocumentInformationEvent

erstellt durch SR; Detailinformationen zu den gefundenen Dokumenten; published in Topic: Constants.PubSub.Topic.INFORMATION

Attribute (siehe Kommentar)

  • constants.AttributeKey.EVENT_SOURCE: Constants.PubSub.EventSource.SEMANTIC_REPRESENTATION
  • constants.AttributeKey.EVENT_TYPE: Constants.PubSub.EventType.DOCUMENT_INFO

OfferEvent

erstellt durch SR; Dokumentenvorschläge zur Anzeige; published in Topic: Constants.PubSub.Topic.OFFERS

Attribute

  • userId: String
  • documentId: String
  • constants.AttributeKey.EVENT_SOURCE: Constants.PubSub.EventSource.SEMANTIC_REPRESENTATION
  • constants.AttributeKey.EVENT_TYPE: Constants.PubSub.EventType.OFFER

UserInformationEvent

erstellt durch SR; Detailinformationen über den User, wird bspw. beim Login ausgelöst; published in Topic: Constants.PubSub.Topic.INFORMATION

Attribute (siehe Kommentar)

  • sessionId: String
  • tokenId: String
  • ...
  • constants.AttributeKey.EVENT_SOURCE: Constants.PubSub.EventSource.SEMANTIC_REPRESENTATION
  • constants.AttributeKey.EVENT_TYPE: Constants.PubSub.EventType.USER_INFO

UserNonExistentEvent

erstellt durch SR; ein User ist noch nicht in der Datenbank vorhanden, Event für die GUI zur Abfrage der Daten; published in Topic: Constants.PubSub.Topic.INFORMATION

Attribute

  • sessionId: String
  • ...
  • constants.AttributeKey.EVENT_SOURCE: Constants.PubSub.EventSource.SEMANTIC_REPRESENTATION
  • constants.AttributeKey.EVENT_TYPE: Constants.PubSub.EventType.USER_INFO

ProjectInformationEvent

erstellt durch SR; Detailinformationen über die Projekte; published in Topic: Constants.PubSub.Topic.INFORMATION

Attribute (siehe Kommentar)

  • sessionId: String
  • tokenId: String
  • ...
  • constants.AttributeKey.EVENT_SOURCE: Constants.PubSub.EventSource.SEMANTIC_REPRESENTATION
  • constants.AttributeKey.EVENT_TYPE: Constants.PubSub.EventType.PROJECT_INFO

[Alle] Komplexe Events identifizieren

  • Dokument vermutlich relevant Event(Dokument angeboten) + Event(Dokument geklickt)
  • Kontext identifizieren Auch auf Basis von angeklickten Dokumenten (Semrep: Dokument gehört zu folgendem Projekt/Kontext --> Mehrere Vorschlage zu einem Projekt --> Event: Kontext ist "HighNet")
  • Kontext identifizieren auf Basis von Person (Verfasste Dokumente, Hat aufgerufen, Favorisiert, Projekt) arbeitet an --> Macht ML (@LepiorzDaniel @bjoernZimmermann)
  • Kontext / Aktualität identifizieren auf Basis des Erstelldaten vorgeschlagener Dokumente (--> GUI kann Button anbieten "neues Dokument anlegen")
  • Kontext identifizieren auf Basis der meist genutzten Keywords
    --> Definition "Kontext" ("es geht gerade um Videokonferenz", "es geht gerade um Projekt HighNet",..)
  • DocumentHighlyRelevantEvent User klickt binnen weniger Sekunden mehrfach auf denselben Vorschlag

  • Favoriten des Users identifizieren auf Basis der Feedbacks (User ruft gerne auf...) --> Aufgabe ML
  • Sessionende / Gesprächsende identifizieren (Abgleich mit angemeldeten Usern)
  • Passiven Logout identifizieren (GUI sendet Ping Event in definiertem Intervall)
  • Passiver Logout + !Sessionende + Aktiver Login (GUI kann Wiedereinstieg anbieten)
  • Aktuelle Teilnehmer wird ausgelöst nach jedem Login / Logout

  • Google Calender identifizieren, um Vorschlagsevent zu generieren (Tokens werden in einem einzelnen Event gesendet: "appointment", "next meeting") --> Aufgabe Speech (Nutzer spricht von Google Calendar) -> GUI zeigt auf dieser Basis Link an
  • Google Drive identifizieren, um Vorschlagsevent zu generieren --> Aufgabe Semantische Repräsentation (@bjoernZimmermann @mateos-alliaj)

--
Komplexes Event: Identifizierung von Pattern beim auftreten von Events.

An alle: Bitte ergänzen, welche komplexen Events für Eure Gruppe relevant sein kann. Einfach kommentieren. Ich aktualisiere dann die Liste.

[Alle] Topics definieren

Wir sollten gemeinsam entscheiden, welche Topics benötigen. Topics sind unsere Kommunikationskanäle über die später Events ausgetauscht werden.

Beispiele:

  • FeedbackGui
  • Insights
  • Offers
    ....

Die aktuelle Liste könnt Ihr in der README.md nachlesen.

ProtocolEvent wird benötigt

Hi CEP,

wir benötigen noch einen Event, damit wir den Link zum DriveDoc (Protokoll) veröffentlichen können.

Danke

LG
ST

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.