Connector für Microsoft Exchange in Prozessen

Modul Prozesse

1. Allgemeines

Der Zugriff auf die Objekte des Microsoft Exchange-Servers kann über Prozesse realisiert werden. Dabei werden folgende Szenarien unterschieden:

Einsatz als interaktiver Benutzer

Ein Prozess wird durch ein beliebiges auslösendes Datensatz-Ereignis angestoßen und löst dann die entsprechenden Aktionen aus. In diesem Fall kann der Prozess ausschließlich auf das Postfach des aktuell angemeldeten Benutzers zugreifen.

Einsatz mit Timer-Ereignissen

Im Falle von Timer-Ereignissen gibt es keinen interaktiven Benutzer. In diesem Fall kann ein vordefinierter Benutzer in einem Dialog ausgewählt werden, in dessen Benutzerkontext des Microsoft Exchange-Servers die gewünschten weiteren Workflow-Aktionen durchgeführt werden. Verfügt dieser Benutzer über entsprechende Berechtigungen an freigegebenen Postfächern, können auch in diesen Postfächern entsprechende Aktionen ausgeführt werden. Solche Aktionen könnten das Anlegen einer Aufgabe oder eines Termins sein. So können z. B. Mitarbeiter auf diesem Weg direkt aus einem Kundenmanagement-System heraus mit Aufgaben oder Terminen für Kundenbesuche, Wiedervorlagen etc. versehen werden. Durch den Echtzeit-Zugriff auf den Microsoft Exchange-Server sind alle Termine stets auf dem aktuellen Stand.



Hat der Prozess die gewählte Datengruppe als Verbindung zum Microsoft Exchange-Server erkannt, kann hier ein Benutzer definiert werden, in dessen Kontext die Abfragen durchgeführt werden. Mit der Option "Anmeldung als statischer Benutzer" wird der Link "Benutzer auswählen" aktiviert. Ein Klick auf diesen Link öffnet einen Dialog, in dem bereits angelegte und Exchange-Benutzern zugeordnete Benutzer aus der Datenquellen-Konfiguration ausgewählt werden können. Im unteren Bereich tragen Sie die gewünschten Verbindungsdaten zum Microsoft Exchange-Server ein. Bei der Option "Benutzer aus Systemwert" muss der Systemwert eine Benutzer-GUID beinhalten. Dabei ist zu beachten, dass eine gültige Benutzerzuordnung in der Exchange-Konfiguration vorhanden sein muss. Darüber hin aus können natürlich über die Prozess-Aktionen Termine angelegt, Aufgaben erstellt und E-Mails erzeugt werden. Über die Benutzerwechsel-Aktion kann der Benutzer während des Prozessablaufs gewechselt werden. Ist sowohl innerhalb der Datengruppe als auch dem Prozess ein statischer Benutzer zugeordnet, hat der Benutzer der Datengruppe Priorität.

Ein Benutzer, der einen Prozess mit Benutzerwechsel-Aktion veröffentlicht, muss ausreichend berechtigt sein. In der Regel bekommt der Benutzer ausreichende Berechtigung aus der Zugehörigkeit zur Benutzergruppe Adminstratoren.

2. Groovy

In der Bibliothek stehen eine Reihe an Klassen und Methoden über die Kategorie "Exchange" zur Verfügung, die im Groovy-Umfeld verwendet werden können. Hier einige Beispiele in Kurzform:

E-Mail lokal abspeichern

import de.uplanet.lucy.server.businesslogic.exchange.util.ExchangeUtils
				
def strMessageId   = g_request.get('qs_id')
def msgUtil        = ExchangeUtils.getMessageUtil()
def strHref        = msgUtil.getHrefById(strMessageId)
def mailboxUtil    = ExchangeUtils.getMailboxUtil()
def strMailBoxName = mailboxUtil.getUserAccount(g_session?.user?.guid).exchangeMailbox
def strMailName    = strMessageId[strMessageId.lastIndexOf("-") + 1..-1]
def mail           = new File("C:/${strMailName}.eml")
				
msgUtil.saveMessageAsEML(strMailBoxName, strHref, mail)

E-Mail per FileUCHelper in Intrexx Datengruppe speichern


import de.uplanet.lucy.server.businesslogic.exchange.util.ExchangeUtils
import de.uplanet.lucy.server.businesslogic.util.FileUCHelper

def conn = g_dbConnections.systemConnection

def strMailBoxName = "ExTest.2"
def strMessageId   = g_request.get('qs_id')
def msgUtil        = ExchangeUtils.getMessageUtil()
def strHref        = msgUtil.getHrefById(strMessageId)

def strMailName = strMessageId[strMessageId.lastIndexOf("-") + 1..-1]
def mail 	    = new File(g_dirWorkflowTmp, "${strMailName}.eml")

msgUtil.saveMessageAsEML(strMailBoxName, strHref, mail)

def iMaxLid = g_dbQuery.executeAndGetScalarValue(conn, "SELECT MAX(LID) FROM XDATAGROUP445CAD5D", 0)

g_dbQuery.executeUpdate(conn,
"INSERT INTO XDATAGROUP445CAD5D (LID) VALUES (?)")
{
	setInt(1, iMaxLid + 1)
}

FileUCHelper.moveFileToIntrexx(g_context, mail, "353CB9686F4FF3CAC9FD8894AAC7C9611BA58625", iMaxLid + 1, "${strMailName}.eml", false)

Neuen Ordner anlegen

import de.uplanet.lucy.server.businesslogic.exchange.util.ExchangeUtils

def mailboxUtil         = ExchangeUtils.getMailboxUtil()
def strParentFolderName = g_request.get("qs_parentFolder")
def strNewFolderName    = g_request.get("qs_newFolder")

mailboxUtil.createFolder(strNewFolderName, strParentFolderName , "urn:content-classes:mailfolder")

Bestehenden Ordner umbenennen

import de.uplanet.lucy.server.businesslogic.exchange.util.ExchangeUtils

def mailboxUtil      = ExchangeUtils.getMailboxUtil()
def strOldFolderName = g_request.get("qs_oldFolder")
def strNewFolderName = g_request.get("qs_editFolder")

mailboxUtil.updateFolderName("${strOldFolderName}", "${strNewFolderName}")

3. Weitere Informationen

Installation
Verbindung einrichten
Microsoft Exchange-Daten in Applikationen einbinden