Import aus DAVINCI
DAVINCI ist eine Software zum Erstellen und Publizieren von Stundenplänen, Vertretungsplänen, Kursplänen und Prüfungsplänen in Schulen und an Universitäten. ENBREA kann seine Daten mit DAVINCI bidirektional synchronisieren.
Wie funktioniert der Import?¶
Der Workflow besteht grob aus zwei Schritten:
-
Die DAVINCI CONSOLE liest Daten direkt aus einer DAVINCI-Datei oder von einem DAVINCI-Server und generiert ECF-Dateien.
-
Das ECF Tool for ENBREA importiert die ECF-Dateien nach ENBREA.
Mit dem PowerShell-Modul PSEnbrea können beide Schritte mit einem einzigen Befehl ausgeführt werden.
Hinweis
Die DAVINCI CONSOLE ist nicht Teil des ENBREA-Projekts, sondern wird automatisch mit DAVINCI installiert. Das bedeutet, dass auf dem Rechner, von dem aus die enbrea.json ausgeführt wird, auch eine DAVINCI Installation vorhanden sein muss!
Installieren¶
-
Falls noch nicht geschehen, bitte auf Deinem Computer die .NET Core Laufzeitumgebung, PowerShell 7, das PowerShell-Modul PSEnbrea installieren und einen Zeitraum in ENBREA anlegen. Was genau hierfür zu tun ist, steht im Kapitel Voraussetzungen.
-
Im Windows-Explorer ein neues Verzeichnis anlegen
c:\enbrea
an (das Verzeichnis kann natürlich auch anders heißen). -
Bitte PowerShell 7 über das Windows-Menü starten:
Start > Windows Powershell > Windows Powershell
-
Mit folgendem Befehl in das soeben angelegte Verzeichnis wechseln:
cd c:\enbrea
-
Bitte nun folgenden PowerShell-Befehl eintippen:
Initialize-EnbreaImport enbrea.json
Es wird jetzt eine Konfigurationsdatei
enbrea.json
angelegt, die als Vorlage für die weitere Konfiguration dient. -
Bitte folgenden PowerShell-Befehl eintippen:
Install-EcfTools enbrea
Es wird das ECF Tool for ENBREA installiert.
Hinweis
Die DAVINCI CONSOLE ist nicht Teil des ENBREA-Projekts, sondern wird automatisch mit DAVINCI installiert. Soll die DAVINCI CONSOLE aktualisiert werden, muss ein DAVINCI Update eingespielt werden.
Konfigurieren¶
Die gesamte Konfiguration des Imports befindet sich in der Textdatei enbrea.json
. Diese Datei in einem Texteditor öffnen und die gewünschten Eigenschaften überschreiben.
Die folgenden Eigenschaften müssen angepasst werden. Sie konfigurieren den individuellen Zugang zu ENBREA:
Eigenschaft | Bedeutung |
---|---|
Enbrea.EcfImport.IdentityServiceUrl | URL zum ENBREA Identity Service |
Enbrea.EcfImport.IdentityUserName | ENBREA Benutzername |
Enbrea.EcfImport.IdentityPassword | ENBREA Kennwort |
Enbrea.EcfImport.SyncHubUrl | URL zum ENBREA School Service |
Enbrea.EcfImport.SchoolTermId | ID des ENBREA-Zeitraums, in den importiert werden soll. Die ID des Zeitraums ist auch in der Adressleiste des Browsers sichtbar, wenn man an der ENBREA-Instanz angemeldet ist. |
Die folgenden Eigenschaften müssen beim Abgleich mit einer lokalen DAVINCI-Datei überschrieben werden:
Eigenschaft | Bedeutung |
---|---|
daVinci.EcfExport.SourceProvider | Wert = File |
daVinci.EcfExport.SourceFileName | Vollständiger Dateiname der DAVINCI-Datei |
Die folgenden Eigenschaften müssen beim Abgleich mit einer DAVINCI-Datei, die auf einem DAVINCI-Server gehostet wird auf alle Fälle überschrieben werden:
Eigenschaft | Bedeutung |
---|---|
daVinci.EcfExport.SourceProvider | Wert = Server |
DaVinci.EcfExport.ServerName | Servername des DAVINCI-Servers im lokalen Netzwerk. |
DaVinci.EcfExport.ServerPort | Portnummer des DAVINCI-Servers im lokalen Netzwerk (Standard ist 8100). |
DaVinci.EcfExport.ServerUserName | Ein DAVINCI-Benutzername. Es empfiehlt sich einen Benutzer für diese Funktion anzulegen, er muss lediglich das Recht haben, sich an DAVINCI anmelden zu können. |
DaVinci.EcfExport.ServerPassword | Ein DAVINCI-Benutzerkennwort. |
DaVinci.EcfExport.ServerFileID | Die GUID der DAVINCI-Datei auf dem DAVINCI-Server. |
Alle anderen Eigenschaften sind schon vorkonfiguriert, können aber natürlich jederzeit überschrieben werden.
Hinweis
Einige Zeilen in der json Datei sind mit einem "-" versehen. Diese Zeilen sind auskommentiert. Je nachdem, ob nun mit einer lokalen DAVINCI Datei oder mit einer Datei auf dem DAVINCI Server gearbeitet wird, müssen die "-" entsprechend gesetzt oder gelöscht werden. Bitte dazu auch die nachfolgenden Beispiele anschauen, dort sind für beide Beispiele die benötigten Zeilen enthalten und das "-" ist jeweils entfernt.
Bitte beachten
Der Backslash (= umgedrehter Schrägstrich) in Dateipfaden muss in einer JSON-Datei stets gedoppelt werden, also \\ statt \.
Beispiel für eine lokale DAVINCI Datei¶
Das Ergebnis für den Abgleich mit einer lokalen DAVINCI-Datei könnte wie folgt aussehen:
{
"daVinci" : {
"EcfExport": {
"TargetFolderName": "davinci\\ecf-export",
"SourceProvider": "File",
"SourceFileName": "davinci\\beispiel.daVinci"
}
},
"Enbrea" : {
"EcfImport":
{
"IdentityServiceUrl" : "https://enbrea.beispiel.de/identity",
"IdentityUserName" : "importbenutzer",
"IdentityPassword" : "qwertz",
"SchoolServiceUrl" : "https://enbrea.beispiel.de/syncHub",
"SchoolTermId" : "9067eff1-6817-4e59-855c-9ace4e51f139",
"Files" : [
{ "Name" : "CourseCategories", "KeyHeaders":"Code" },
{ "Name" : "CourseFlags", "KeyHeaders":"Code" },
{ "Name" : "CourseTypes", "KeyHeaders":"Code" },
{ "Name" : "EducationalAreas", "KeyHeaders":"Code" },
{ "Name" : "EventTypes", "KeyHeaders":"Code" },
{ "Name" : "ExamTypes", "KeyHeaders":"Code" },
{ "Name" : "FormsOfTeaching", "KeyHeaders":"Code" },
{ "Name" : "LessonProfiles", "KeyHeaders":"Code" },
{ "Name" : "LevelOfQualifications", "KeyHeaders":"Code" },
{ "Name" : "ResourceCategories", "KeyHeaders":"Code" },
{ "Name" : "ResourceFlags", "KeyHeaders":"Code" },
{ "Name" : "RoomAbsenceReasons", "KeyHeaders":"Code" },
{ "Name" : "RoomTypes", "KeyHeaders":"Code" },
{ "Name" : "SchoolClassAbsenceReasons", "KeyHeaders":"Id" },
{ "Name" : "SchoolClassFlags", "KeyHeaders":"Code" },
{ "Name" : "SchoolClassLevels", "KeyHeaders":"Code" },
{ "Name" : "SchoolClassProfils", "KeyHeaders":"Code" },
{ "Name" : "SchoolForms", "KeyHeaders":"Code" },
{ "Name" : "SchoolOrganisations", "KeyHeaders":"Code" },
{ "Name" : "SchoolTypes", "KeyHeaders":"Code" },
{ "Name" : "SubjectFocuses", "KeyHeaders":"Code" },
{ "Name" : "SubjectTypes", "KeyHeaders":"Code" },
{ "Name" : "TeacherAbsenceReasons", "KeyHeaders":"Id" },
{ "Name" : "TeacherAbsenceReasonDifferentiations", "KeyHeaders":"Code" },
{ "Name" : "TeacherTypes", "KeyHeaders":"Code" },
{ "Name" : "TimeAccountEntryReasons", "KeyHeaders":"Code" },
{ "Name" : "TimeAccountEntryReportings", "KeyHeaders":"Code" },
{ "Name" : "TimeAccountEntryTypes", "KeyHeaders":"Code" },
{ "Name" : "VacationTypes", "KeyHeaders":"Code" },
{ "Name" : "VocationalField", "KeyHeaders":"Code" },
{ "Name" : "EducationalPrograms", "KeyHeaders":"Code" },
{ "Name" : "TimeFrames", "KeyHeaders":"Code" },
{ "Name" : "Departments", "KeyHeaders":"Code" },
{ "Name" : "Rooms", "KeyHeaders":"Code" },
{ "Name" : "RoomAbsences", "KeyHeaders":"Id" },
{ "Name" : "Subjects", "KeyHeaders":"Code" },
{ "Name" : "EducationalContents", "KeyHeaders":"Code" },
{ "Name" : "EducationalMaterials", "KeyHeaders":"Code" },
{ "Name" : "SubjectLearningField", "KeyHeaders":"Code" },
{ "Name" : "Teachers", "KeyHeaders":"Code" },
{ "Name" : "TeacherAbsences", "KeyHeaders":"Id" },
{ "Name" : "Students", "KeyHeaders":"LastName;FirstName;Birthdate" },
{ "Name" : "StudentAbsences", "KeyHeaders":"Id" },
{ "Name" : "StudentSubjects", "KeyHeaders":"Id" },
{ "Name" : "SchoolClasses", "KeyHeaders":"Code" },
{ "Name" : "SchoolClassAbsences", "KeyHeaders":"Id" },
{ "Name" : "Courses", "KeyHeaders":"Id", "DeleteStrategy" : "DeleteRemaining" },
{ "Name" : "Announcements", "KeyHeaders":"Id", "DeleteStrategy" : "DeleteRemaining" },
{ "Name" : "ScheduledLessons", "KeyHeaders":"Id", "DeleteStrategy" : "DeleteRemaining" },
{ "Name" : "SubstituteLessons", "KeyHeaders":"Id", "DeleteStrategy" : "DeleteRemaining" },
{ "Name" : "LessonGaps", "KeyHeaders":"Id", "DeleteStrategy" : "DeleteRemaining" },
{ "Name" : "Vacations", "KeyHeaders":"Id", "DeleteStrategy" : "DeleteRemaining" }
]
}
}
}
Beispiel für eine DAVINCI-Serverdatei¶
Das Ergebnis für den Abgleich mit einer DAVINCI-Datei, die auf einem DAVINCI-Server gehostet wird, könnte wie folgt aussehen:
{
"daVinci" : {
"EcfExport": {
"TargetFolderName": "davinci\\ecf-export",
"SourceProvider": "Server",
"ServerName" : "localhost",
"ServerPort" : "8100",
"ServerUserName" : "importbenutzer",
"ServerPassword" : "qwertz",
"ServerFileID" : "{c24f1a9d-692c-47aa-9046-db444b9f0c8e}"
}
},
"Enbrea" : {
"EcfImport":
{
"IdentityServiceUrl" : "https://enbrea.beispiel.de/identity",
"IdentityUserName" : "importbenutzer",
"IdentityPassword" : "qwertz",
"SchoolServiceUrl" : "https://enbrea.beispiel.de/syncHub",
"SchoolTermId" : "9067eff1-6817-4e59-855c-9ace4e51f139",
"Files" : [
{ "Name" : "CourseCategories", "KeyHeaders":"Code" },
{ "Name" : "CourseFlags", "KeyHeaders":"Code" },
{ "Name" : "CourseTypes", "KeyHeaders":"Code" },
{ "Name" : "EducationalAreas", "KeyHeaders":"Code" },
{ "Name" : "EventTypes", "KeyHeaders":"Code" },
{ "Name" : "ExamTypes", "KeyHeaders":"Code" },
{ "Name" : "FormsOfTeaching", "KeyHeaders":"Code" },
{ "Name" : "LessonProfiles", "KeyHeaders":"Code" },
{ "Name" : "LevelOfQualifications", "KeyHeaders":"Code" },
{ "Name" : "ResourceCategories", "KeyHeaders":"Code" },
{ "Name" : "ResourceFlags", "KeyHeaders":"Code" },
{ "Name" : "RoomAbsenceReasons", "KeyHeaders":"Code" },
{ "Name" : "RoomTypes", "KeyHeaders":"Code" },
{ "Name" : "SchoolClassAbsenceReasons", "KeyHeaders":"Id" },
{ "Name" : "SchoolClassFlags", "KeyHeaders":"Code" },
{ "Name" : "SchoolClassLevels", "KeyHeaders":"Code" },
{ "Name" : "SchoolClassProfils", "KeyHeaders":"Code" },
{ "Name" : "SchoolForms", "KeyHeaders":"Code" },
{ "Name" : "SchoolOrganisations", "KeyHeaders":"Code" },
{ "Name" : "SchoolTypes", "KeyHeaders":"Code" },
{ "Name" : "SubjectFocuses", "KeyHeaders":"Code" },
{ "Name" : "SubjectTypes", "KeyHeaders":"Code" },
{ "Name" : "TeacherAbsenceReasons", "KeyHeaders":"Id" },
{ "Name" : "TeacherAbsenceReasonDifferentiations", "KeyHeaders":"Code" },
{ "Name" : "TeacherTypes", "KeyHeaders":"Code" },
{ "Name" : "TimeAccountEntryReasons", "KeyHeaders":"Code" },
{ "Name" : "TimeAccountEntryReportings", "KeyHeaders":"Code" },
{ "Name" : "TimeAccountEntryTypes", "KeyHeaders":"Code" },
{ "Name" : "VacationTypes", "KeyHeaders":"Code" },
{ "Name" : "VocationalField", "KeyHeaders":"Code" },
{ "Name" : "EducationalPrograms", "KeyHeaders":"Code" },
{ "Name" : "TimeFrames", "KeyHeaders":"Code" },
{ "Name" : "Departments", "KeyHeaders":"Code" },
{ "Name" : "Rooms", "KeyHeaders":"Code" },
{ "Name" : "RoomAbsences", "KeyHeaders":"Id" },
{ "Name" : "Subjects", "KeyHeaders":"Code" },
{ "Name" : "EducationalContents", "KeyHeaders":"Code" },
{ "Name" : "EducationalMaterials", "KeyHeaders":"Code" },
{ "Name" : "SubjectLearningField", "KeyHeaders":"Code" },
{ "Name" : "Teachers", "KeyHeaders":"Code" },
{ "Name" : "TeacherAbsences", "KeyHeaders":"Id" },
{ "Name" : "Students", "KeyHeaders":"LastName;FirstName;Birthdate" },
{ "Name" : "StudentAbsences", "KeyHeaders":"Id" },
{ "Name" : "StudentSubjects", "KeyHeaders":"Id" }
{ "Name" : "SchoolClasses", "KeyHeaders":"Code" },
{ "Name" : "SchoolClassAbsences", "KeyHeaders":"Id" },
{ "Name" : "Courses", "KeyHeaders":"Id", "DeleteStrategy" : "DeleteRemaining" },
{ "Name" : "Announcements", "KeyHeaders":"Id", "DeleteStrategy" : "DeleteRemaining" },
{ "Name" : "ScheduledLessons", "KeyHeaders":"Id", "DeleteStrategy" : "DeleteRemaining" },
{ "Name" : "SubstituteLessons", "KeyHeaders":"Id", "DeleteStrategy" : "DeleteRemaining" },
{ "Name" : "LessonGaps", "KeyHeaders":"Id", "DeleteStrategy" : "DeleteRemaining" },
{ "Name" : "Vacations", "KeyHeaders":"Id", "DeleteStrategy" : "DeleteRemaining" }
]
}
}
}
Testen¶
-
Bitte PowerShell 7 über das Windows-Menü starten:
Start > Windows Powershell > Windows Powershell
-
Mit folgendem Befehl in unser ENBREA-Verzeichnis wechseln:
cd c:\enbrea
-
Folgenden PowerShell-Befehl eintippen:
Start-EnbreaImport davinci enbrea.json
Die Daten aus DAVINCI werden ins ECF-Format übersetzt und anschließend nach ENBREA übertragen.
Zeitrahmen dem Zeitraum zuordnen¶
Anschließend bitte an der Enbrea-Instanz anmelden und unter System > Zeiträume
dem Zeitraum den aktuellen Zeitrahmen zuweisen, in der Regel sollte das der Zeitrahmen Standard
sein.
Geänderter Stundenplan¶
Ändert sich der Stundenplan in Ihrer DAVINCI Datei innerhalb des Zeitraumes von ENBREA geben Sie den Zeitraum der Gültigkeit des DAVINCI Stundenplanes bitte in der DAVINCI Plandatei unter Plan > Eigenschaften > Zeitraum > Hauptzeitraum dieser Datei
an. Ab dem Startdatum werden die neuen Stundenplandaten nach ENBREA übertragen. Alle Termine vor dem Startdatum bleiben davon unberührt.
Automation¶
Die Synchronisation zwischen DAVINCI und ENBREA kann natürlich automatisiert werden. Tipps zur Automation per BATCH-Datei oder Windows-Aufgabenplanung sind im Kapitel Automation zu finden.