Microsoft Exchange-Kalender
Sie können einen Microsoft Exchange-Kalender in ConSol CM integrieren. Der Kalender wird im Web Client im Abschnitt Kalender der Vorgangs-, Kontakt- oder Ressourcenseite, oder auf dem Dashboard angezeigt. Die Benutzer können neue Termine erstellen und vorhandene Termine ansehen und bearbeiten.
Integrieren eines Microsoft Exchange-Kalenders
Führen Sie folgende Schritte durch, um einen Microsoft Exchange-Kalender zu integrieren:
- Entscheiden Sie, wo der Kalender dargestellt werden soll. Dies kann entweder in einem Objekt sein oder auf dem Dashboard:
- Aktivieren Sie auf der gewünschten Seite (Vorgang, Person, Firma oder Resource) in der Seitenanpassung den Abschnitt Kalender. Dazu müssen Sie das Attribut state in calendar von hidden auf expanded oder collapsed setzen.
- Fügen Sie dem Dashboard ein Kalender-Widget hinzu, indem Sie es in widgetsGrid zum Attribut layout hinzufügen.
- Schreiben Sie auf der Seite Skripte der Web Admin Suite ein Kalenderskript (Typ Kalenderintegration) und referenzieren Sie es in der Seitenanpassung, Attribut calendarInitializationScript von calendar, siehe Schreiben des Kalenderskripts.
- Wenn die Benutzer die Möglichkeit haben sollen, Termine zu erstellen oder bearbeiten, setzen Sie das Attribut editable von calendar auf true.
Schreiben des Kalenderskripts
Das Kalenderskript muss eine Map mit den Informationen für den Zugriff auf den Microsoft Exchange-Server zurückgeben. Folgende Parameter können im Skript verwendet werden:
-
name: String. Der Name zur Identifizierung der Quelle (noch keine Funktion)
-
color: String. Hintergrundfarbe für Termineinträge im HTML-Farbformat, z. B. red oder #D80000)
-
editable: Boolean. Gibt an, ob Termine erstellt, bearbeitet oder entfernt werden können. Wenn nicht gesetzt, wird der Wert aus der Seitenanpassung verwendet (standardmäßig false).
Zusätzlich braucht der aktuelle Benutzer Schreibrechte auf das Objekt, in dem der Kalender angezeigt wird, um Termine editieren zu können.
-
access.*: Properties für den Zugriff auf den Kalender:
-
access.type: String. Mögliche Werte EXCHANGE (Microsoft Exchange Server), RANDOM (zu Testzwecken zufällig generierte Termine)
Für EXCHANGE:
-
access.url: URL. Die URL der .asmx-Datei auf dem Exchange-Server. Diese Datei befindet sich normalerweise im Verzeichnis EWS (Exchange Web Services) und stellt den Exchange Access Web Service zur Verfügung.
-
access.username: String. Der Name des technischen Benutzers, mit dem die Anmeldung beim Exchange-Server durchgeführt wird.
-
access.password: String. Das Passwort des technischen Benutzers, mit dem die Anmeldung beim Exchange-Server durchgeführt wird.
-
access.domain: String. Die Windows-Domäne des Exchange-Servers. Der technische Benutzer muss ein Mitglied dieser Domäne sein.
-
access.impersonation: String. E-Mail-Konto eines Exchange-Kalenderbenutzers. Die Anmeldung beim Exchange-Server erfolgt mit dem technischen Benutzer. Danach wechselt der Benutzer mithilfe der Exchange-Serverfunktion Impersonation (Identitätswechsel) zu dem hier angegebenen individuellen Benutzer. Der Kalender des impersonalisierten Benutzers wird angezeigt. Wenn der Name des Benutzers in Exchange und ConSol CM identisch ist, können Sie über die Methode
workflowApi.getCurrentEngineer().getName()
oderengineerService.current.name
den Namen des aktuellen Benutzers an Exchange weitergeben.::: Voraussetzungen für die Impersonalisierung Die Funktion zum Wechseln der Identität kann nur von einem Konto verwendet werden, dem der Exchange-Administrator die Rolle ApplicationImpersonation erteilt hat. Stellen Sie beim Einrichten dieser Rolle sicher, dass alle Sicherheitsaspekte berücksichtigt werden. :::
Für RANDOM:
- access.calendar: Name der Kalenderdatei. Beim zufälligen Kalender werden die erzeugten Termine auf der Festplatte gespeichert. (Die Dateien werden automatisch entfernt, wenn der CM-Server angehalten wird.) Durch die Verwendung des gleichen Namens in der Konfiguration wird sichergestellt, dass der Benutzer den gleichen Satz an Terminen hat.)
-
-
Beispielskript:
return [
name: 'Exchange Source',
'access.type': 'EXCHANGE',
'access.url': 'https://exchange1.server.net/EWS/Exchange.asmx',
'access.username': 'exchange-user',
'access.password':'exchange-password',
'access.domain': 'SSO',
'access.impersonation':'somebody@sso.server.net',
'access.version': '2013'
]
Zusätzlich im Skript verfügbare Variablen:
- Vorgangsseite:
ticket
- Kontaktseite:
unit
- Ressourcenseite:
resource
Konfigurieren des Kalenders
Die Darstellung und das Verhalten des Kalenders kann in der Seitenanpassung angepasst werden. In calendar können Sie folgende Attribute setzen:
-
Ganztägiges Zeitfenster (
allDaySlot
): Boolean. Legt fest, ob das Zeitfenster Ganztägig oben im Kalender angezeigt werden soll. Der Standardwert ist True. -
Hintergrundfarbe der Termine (
appointmentBackgroundColor
): String. Legt die Hintergrundfarbe für alle Termine im Kalender fest. Sie können ein beliebiges CSS-Farbformat verwenden, z. B. #f00, #ff0000, rgb(255,0,0) oder red. -
Rahmenfarbe der Termine (
appointmentBorderColor
): String. Legt die Rahmenfarbe für alle Termine im Kalender fest. Sie können ein beliebiges CSS-Farbformat verwenden, z. B. #f00, #ff0000, rgb(255,0,0) oder red. -
Farbe für Termine (
appointmentColor
): String. Legt die Hintergrund- und Rahmenfarbe für alle Termine im Kalender fest. Sie können ein beliebiges CSS-Farbformat verwenden, z. B. #f00, #ff0000, rgb(255,0,0) oder red. -
Verschieben und Größenänderung von Terminen (
appointmentConstraint
): String. Beschränkt das Verschieben, Verlängern und Verkürzen von Terminen auf ein bestimmtes Zeitfenster. Mögliche Werte:- <Termin-ID>: Termine, die verschoben, verlängert oder verkürzt werden, müssen komplett innerhalb von mindestens einem der über die Termin-ID angegebenen Terminen liegen.
- businessHours: Termine, die verschoben, verlängert oder verkürzt werden, müssen komplett innerhalb der Geschäftszeiten liegen (standardmäßig Montag-Freitag 09:00-17:00), siehe Attribut Geschäftszeiten.
- <Startzeit>-<Endzeit>;<Wochentage>: Ein benutzerdefiniertes Zeitfenster im gleichen Format wie das Attribut businessHours. Die Wochentage sind optional. Beispiele: 10:00-18:00; 1,2,3,4 oder 10:00-18:00
-
Größenänderung von Terminen (
appointmentDurationEditable
): Boolean. Ermöglicht das Editieren der Termindauer über die Änderung der Größe. Der Standardwert ist True. -
Überlappende Termine (
appointmentOverlap
): Boolean. Legt fest, ob sich die Termine im Kalender nach dem Verschieben oder Verlängern überlappen dürfen. Der Standardwert ist True. -
Startdatum des Termins (
appointmentStartEditable
): Boolean. Ermöglicht es, die Startzeit eines Termins durch Verschieben zu verändern. Der Standardwert ist True. -
Textfarbe der Termine (
appointmentTextColor
): String. Legt die Textfarbe für alle Termine im Kalender fest. Sie können ein beliebiges CSS-Farbformat verwenden, z. B. #f00, #ff0000, rgb(255,0,0) oder red. -
Seitenverhältnis (
aspectRatio
): String. Legt das Verhältnis von Breite zu Höhe des Kalenders fest. Der Standardwert ist 1.35. -
Geschäftszeiten (
businessHours
): String. Hebt bestimmte Zeiträume im Kalender hervor.Format: <Startzeit>-<Endzeit>;<Wochentage> Beispiel: 10:00-18:00; 1,2,3,4 (von 10:00 bis 18:00, Montag bis Donnerstag)
-
Skript für Kalender-Events (
calendarEventHandlerScript
): String. Enthält den Namen des Skripts, das die Kalenderereignisse steuert. Neben den Standardvariablen des Kontextes, wieticket
, gibt es folgende zusätzliche Variablen:- eventType: enum (Werte: CREATE, UPDATE, DELETE)
- appointment: mit Termindaten (uid, subject, location usw.).
-
Kalenderskript (
calendarInitializationScript
): String. Enthält den Namen des Skripts, das die Kalenderkonfiguration erzeugt. Wenn der Wert leer ist oder das Skriptnull
zurückgibt, wird der Kalender nicht angezeigt. -
Inhaltshöhe (
contentHeight
): String. Gibt die Höhe des Inhaltsbereichs des Kalenders in Pixel an. Standardmäßig ist die Option nicht gesetzt und die Höhe des Kalenders wird anhand des Attributs Seitenverhältnis berechnet. -
Standarddauer ganztägige Termine (
defaultAllDayAppointmentDuration
): String. Die Standarddauer für ganztägige Termine, für die keine Endzeit angegeben ist. Der Standardwert ist 1 (ein Tag). -
Standarddatum (
defaultDate
): String. Die initialen Daten, die beim ersten Laden des Kalenders angezeigt werden. Möglich ist ein ISO8601-Datumsstring wie 2014-02-01. -
Standarddauer nicht ganztägige Termine (
defaultTimedAppointmentDuration
): String. Die Standarddauer für nicht ganztägige Termine, für die keine Endzeit angegeben ist. Wenn nicht gesetzt, wird der Standardwert 02:00:00 (2 Stunden) verwendet. Dieses Attribut wirkt sich auch auf die Standarddauer von Terminen bei der Terminerstellung aus. -
Standardansicht (
DefaultView
): String. Standardansicht des Kalenders. Mögliche Werte: month, basicWeek, basicDay, agendaWeek, agendaDay. Der Standardwert ist agendaWeek. Beispielansichten unter Verfügbare Ansichten. -
Bearbeitung aktivieren (
editable
): Boolean. Ob Termine erstellt, verschoben, verlängert und verkürzt werden können. Dieser Wert überschreibt die Quellkonfiguration. Der Standardwert ist False. -
Erster Tag der Woche (
firstDay
): String. Der Tag, an dem die Woche beginnt. (Sonntag=0, Montag=1, Dienstag=2 usw.). Wenn leer, wird der Wert aus der Sprachumgebung des Browsers verwendet. -
Termindauer erzwingen (
forceAppointmentDuration
): Boolean. Ein Flag, mit dem die Berechnung eines Terminendes erzwungen werden kann, wenn kein Ende angegeben wird. Der Standardwert ist False. -
Größe automatisch anpassen (
handleWindowResize
): Boolean. Ob die Größe des Kalenders automatisch angepasst werden soll, wenn der Benutzer die Größe des Browser-Fensters verändert. Der Standardwert ist True. -
Inhalt der Kopfzeile - Mitte (
headerCenter
): String. Definiert die Buttons und die Überschrift in der Mitte über dem Kalender. Details dazu finden Sie in der Beschreibung von Inhalt der Kopfzeile - linke Seite. Der Standardwert ist title. -
Inhalt der Kopfzeile - linke Seite (
headerLeft
): String. Definiert die Buttons und die Überschrift links über dem Kalender. Liste mit durch Kommas oder Leerzeichen getrennten Werten (durch Kommas getrennte Werte werden nebeneinander angezeigt). Der Standardwert ist prev,next today. Mögliche Werte:-
title: Text für den aktuellen Monat/Woche/Tag.
-
prev: Button, um im Kalender zum vorherigen Monat/Woche/Tag zu blättern.
-
next: Button, um im Kalender zum nächsten Monat/Woche/Tag zu blättern.
-
prevYear: Button, um im Kalender zum letzten Jahr zu blättern.
-
nextYear: Button, um im Kalender zum nächsten Jahr zu blättern.
-
today: Button, um im Kalender zum aktuellen Monat/Woche/Tag zu blättern.
-
<Name der Ansicht>: Button, mit dem eine der verfügbaren Ansichten des Kalenders geladen wird (eine Beschreibung der verfügbaren Ansichten finden Sie unter Standardansicht).
Die Kopfzeile wird nicht angezeigt, wenn alle drei header-Attribute leer sind.
-
-
Inhalt der Kopfzeile - rechte Seite (
headerRight
): String. Definiert die Buttons und die Überschrift rechts über dem Kalender. Details dazu finden Sie in der Beschreibung des Attributs Inhalt der Kopfzeile - linke Seite. Der Standardwert ist month,agendaWeek. -
Höhe (
height
): String. Gibt die Höhe des gesamten Kalenders (einschließlich Kopfzeile) in Pixel an. Standardmäßig ist die Option nicht gesetzt und die Höhe des Kalenders wird anhand des Attributs Seitenverhältnis berechnet. -
Ausgeblendete Tage (
hiddenDays
): String. Schließt bestimmte Wochentage aus der Anzeige aus. Durch Kommas getrennte Liste der Wochentagsindizes (Beispiel: 1,3,5). Jeder Index beginnt mit der Null (Sonntag=0) und umfasst die Werte 0 bis 6. -
Verzögerter Abruf (
lazyFetching
): Boolean. Legt fest, wann die Termine abgerufen werden sollen. Es ist sinnvoll, dieses Attribut auf False zu setzen, wenn am Kalender des Benutzers viele externe Änderungen vorgenommen werden. Der Standardwert ist True. -
Endzeit (
maxTime
): String. Legt die Endzeit fest, die (ausschließlich) angezeigt wird, auch wenn der Benutzer ganz nach unten gescrollt hat. Der Standardwert ist 24:00:00. -
Startzeit (
minTime
): String. Legt die Startzeit fest, die angezeigt wird, auch wenn der Benutzer ganz nach oben gescrollt hat. Der Standardwert ist 00:00:00. -
Schwelle für nächsten Tag (
nextDayThreshold
): String. Wenn die Endzeit eines Termins an einem anderen Tag liegt, muss der Termin mindestens bis zu dieser Zeit dauern, damit er an diesem Tag angezeigt wird. Der Standardwert ist 09:00:00 (09:00). Dies betrifft nur Termine, die nicht als ganztägige Termine konfiguriert sind, aber trotzdem den ganzen Tag ausfüllen. Ganztägige Felder kommen in den Kalenderansichten month, basicDay und basicWeek und in ganztägigen Zeitfenstern vor. -
Termine sichtbar (
readable
): Boolean. Legt fest, ob der Benutzer die Kalendereinträge sehen kann. Setzen Sie den Wert auf True, um die Kalendereinträge sichtbar zu machen, oder auf False, wenn der Benutzer die Kalendereinträge nicht sehen soll. Im letzteren Fall wird das Widget immer noch angezeigt. Nur verfügbar, wenn der Kalender als Kalender-Widget auf dem Dashboard angezeigt wird. -
Darstellung von links nach rechts (
rightToLeftMode
): Boolean. Zeigt den Kalender von rechts nach links an. Der Standardwert ist False. -
Initiales Scrolling (
scrollTime
): String. Legt fest, wie weit der scrollbare Bereich am Anfang heruntergescrollt wird. Der Standardwert ist 06:00:00 (6:00). -
Überlappende Anzeige (
slotAppointmentOverlap
): Boolean. Legt fest, ob Termine sich in der Kalenderansicht überlappen sollen. Der Standardwert ist True. -
Dauer der Zeitfenster (
slotDuration
): String. Das Intervall für die Anzeige von Zeitfenstern. Der Standardwert ist 00:30:00 (30 Minuten). -
Dauer zum Andocken (
snapDuration
): String. Das Zeitintervall, bei dem sich ein Termin beim Verschieben an das Zeitraster der Kalenderansicht anheftet. Diese Einstellung wirkt sich auch auf die Genauigkeit der Zeitauswahl aus. Der Standardwert ist Dauer der Zeitfenster. -
state: String. Der Sichtbarkeitsmodus dieses Bereichs, mögliche Werte sind expanded, collapsed, collapsed_and_preload, hidden. Der Standardwert ist expanded.
-
Kalenderwochen (
weekNumbers
): Boolean. Legt fest, ob die Nummer der Woche im Kalender angezeigt werden soll. Der Standardwert ist True. -
Wochenende (
weekends
): Boolean. Legt fest, ob die Spalten für den Samstag und Sonntag in der Kalenderansicht enthalten sein sollen. Der Standardwert ist True.
Siehe http://fullcalendar.io/docs für weitere Details.
Konfigurieren des Verhaltens nach Kalenderereignissen
Sie können das Verhalten nach folgenden Ereignissen im Skript, das im Attribut calendarEventHandlerScript von calendar referenziert ist, definieren:
- Erstellen eines Termins (Ereignistyp CREATE)
- Bearbeiten eines vorhandenen Termins (Ereignistyp UPDATE)
- Entfernen eines vorhandenen Termins (Ereignistyp DELETE)
Es sind folgende Variablen verfügbar:
-
ticket: Der aktuelle Vorgang (nur Kalender auf Vorgangsseiten)
-
unit: Der aktuelle Kontakt (nur Kalender auf Kontaktseiten)
-
resource: Die aktuelle Ressource (nur Kalender auf Ressourcenseiten)
-
eventType: Die Art des Events, mögliche Werte sind: CREATE, UPDATE oder DELETE.
-
appointment: Das Terminobjekt (Klasse
com.consol.cmweb.server.common.model.calendar.AppointmentVo
, die Verfügbarkeit der Eigenschaften hängt von Exchange-Servertyp und -version ab).Grundlegend:
- subject: String. Betreff des Termins.
- startDate: Datum. Startdatum und -zeit des Termins.
- endDate: Datum. Enddatum und -zeit des Termins.
- allDayEvent: Boolean. Definiert, ob ein Termin ein ganztägiges Ereignis ist, d. h. den ganzen Tag oder mehrere Tage lang dauert.
- location: String. Ort des Termins.
- meeting: Boolean. Ist true, wenn der Termin eine Besprechung (mit eingeladenen Teilnehmern) ist.
- cancelled: Boolean. Gibt an, ob der Termin als abgesagt markiert ist.
- recurring: Boolean. Gibt an, ob der Termin Teil einer Terminserie ist.
- busyStatus: Mögliche Werte sind FREE, TENTATIVE, BUSY, OUT_OF_OFFICE, WORKING_ELSEWHERE oder NONE.
- body: String. Inhalt des Termins. Das Format hängt von der Property bodyType ab.
- bodyType: Format des Termininhalts. Mögliche Werte sind TEXT, HTML oder NONE
Erweitert:
- uid: String. Eindeutige Identifikation eines Termins auf dem Exchange-Server.
- start: Startdatum und -zeit im joda-Format
- end: Enddatum und -zeit im joda-Format
- timeZone: Zeitzone des Termins im joda-Format (nötig, um ganztägige Termine in unterschiedlichen Zeitzonen korrekt anzuzeigen)