Connector für Microsoft Exchange in Prozessen

Allgemeines
Groovy

Wie Sie eine Verbindung zu Microsoft Exchange in Intrexx konfigurieren, erfahren Sie hier.
Informationen zu Microsoft Exchange Daten in Intrexx Applikationen finden Sie hier.

Allgemeines

Der Zugriff auf die Objekte des 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 Timerereignissen

Im Falle von Timer-Ereignissen gibt es keinen interaktiven Benutzer. In diesem Fall kann über einen komfortablen Dialog ein vordefinierter Benutzer ausgewählt werden, in dessen Benutzerkontext des 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 Portfä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 Exchange Server sind alle Termine stets auf dem aktuellen Stand.

Hat der Prozessmanager die gewählte Datengruppe als Verbindung zum Exchange-Server erkannt, kann in diesem Dialog 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 Datenquellenkonfiguration ausgewählt werden können. Im unteren Bereich tragen Sie die gewünschten Verbindungsdaten zum 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 (zusätzliche Benutzer). Klicken Sie auf Systemwert bearbeiten, um den Systemwert in einem weiteren Dialog zu definieren.

Darüber hin aus können natürlich über die Aktionen des Prozessmanagers 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.

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}")