hdm-wim-devlab's Issues
Alle -> PubSub
Schreibt mal bitte alle auf, was ihr uns schickt.
GUI braucht bei jedem Dokumentenvorschlag den Ordner des Dokuments dazu
Dokumentation aufräumen und aufbauen
- README.md aufräumen
-
/docs
aufbauen -
/docs
Synchron mit tatsächlicher Implementierung von SharedLibs
[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();
})
SemRep => GUI (Format Dokumentenvorschläge)
Die Dokumente Vorschläge sollen in folgendem Format erfolgen:
Infos:
- name: Dokument1
- Prio: 1 (es gibt 0 für unwichtig und 1 für wichtig)
- DokuTyp: gdoc (textdokument in google Docs)
- Link: https://docs.google.com/document/d/1bkLCvEBX56OBrECe89SFxpaqhlfQfZtOUNHNxM2Rlmc/edit (Alle Links zu docs.google, also von Google Tools editierbar. Keine Word Dateien etc)
- Ordner: Mercedesprojekt (Wo liegt Das Dokument? )
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
Gui -> SemRep (Dokumentaufrufe)
Benötigt werden die von einem User aufgerufenen Dokumente in der nachfolgenden Struktur:
Attribute:
UserID=,
DokName=
[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.
[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
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 denConstants
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
[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
[Event] Pattern für Apache Flink implementieren
[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
Images für README
[email protected]
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)
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,
}
ML benötigt für den erneuten Lerndurchgang ein "All Sessions closed"-Event
Das Event sollte letztendlich nur sagen, dass alle Sessions beendet sind. Inhaltlich müssen keine besonderen Attribute beigefügt 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
SemRep -> ML
Zugriff auf PubSub
Entwicklungsumgebung auf Dockerbasis
Folgende Komponenten sollen als Container bereitgestellt werden, um die Entwicklung zu vereinfachen.
- Kafka mit Zookeeper
- Spark (Streaming)
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.
[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
[Event] Integration von PubSub und Apache Flink
Estimation: ?
Acceptance Criteria:
- Pattern können eingespielt und ausgeführt werden
- Instanz hört kontinuierlich auf eintreffende Events
- Events können veröffentlich werden
[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.
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
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=
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
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
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.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.