Obtener datos de Microsoft Exchange Server en Java

En la industria del software, muchos programas requieren información que necesita obtener de algún tipo de software comercial previamente existente. En otras palabras, probablemente se encontrará con la necesidad de integrarse con software de Microsoft, Salesforce, SAP y otros gigantes del software. Y, aunque pueda parecer intimidante, ¡tú puedes hacerlo! Déjame enseñarte como.

Necesidad de integración con Microsoft Exchange Server

La forma más común de integrarse con todo tipo de software es usar su API. Las grandes empresas de software los proporcionan exactamente para hacer posible la integración. 
Usemos Microsoft Exchange como ejemplo. Las diferentes operaciones que puede realizar utilizando la API de Exchange en Java son: 

  1. Leer correos electrónicos.
  2. Enviar correos electrónicos.
  3. Obtener información de las citas en un calendario.
  4. Insertar una nueva cita.
  5. Editar una cita existente.
  6. Obtener información de la lista de tareas.
  7. Insertar una nueva tarea.
  8. Editar una tarea existente.
  9. Leer desde una carpeta pública.
  10. Escribir en una carpeta pública.

¿Cómo integrar con Microsoft Exchange Server?

La forma más tradicional de integrarse con Exchange desde Java solía ser Exchange Web Services (EWS)

  1. EWS SDK es una API basada en SOAP .
  2. Se lanzó como parte de Microsoft Exchange 2007.
  3. No es fácil de usar, pero el verdadero problema es que, en julio de 2018, Microsoft declaró que ya no haría ninguna actualización de funciones.

Gráfico de Microsoft

Además, desde el 13 de octubre de 2020 en adelante, Microsoft espera que todos los que usen Exchange Web Services para la integración de Office 365 cambien a Microsoft Graph. Además, el 13 de octubre de 2020, dejará de ser compatible con la autenticación básica en los servicios web de Exchange (EWS). 

Microsoft quiere que todo se traslade a OAuth y Microsoft Graph . Microsoft Graph se lanzó en 2015 con Office 365. Delega las llamadas a varios servicios en la nube de Office 365 a través de un único punto final. Dentro de , tienes dos opciones: 

  1. Conexión de datos de Microsoft Graph.
  2. API de gráficos de Microsoft.

Microsoft es preciso sobre lo que puede y no puede hacer con su API, por lo que es mejor verificarlo de antemano. Debe consultar la conexión de datos de Microsoft Graph si (y solo si) desea trabajar con Big data o necesita un consentimiento granular. Si ese no es el caso, desea la API normal, que es la opción más común. 

Actualmente existen dos versiones de la API REST de Microsoft Graph : la versión 1.0 y la versión beta . Puede verificar la versión beta , pero para cualquier desarrollo serio, debe, naturalmente, mantener la versión de producción 1.0. Para esa versión, asegúrese de leer la documentación y aprender el SDK de Java

Formas de conectarse a una API

Hay dos formas en las que podemos conectarnos a una API: 

  1. API de gráficos de Microsoft.
  2. Plataforma de Integración.

API de Microsoft

Cuando llegue a la parte de usar realmente la API, debe comenzar por obtener:

  1. Cuenta de Microsoft: Puede ser una cuenta de empresa o de escuela. Para obtener una ID de aplicación.
  2. Registre su aplicación: Registre su aplicación usando:
    • El portal de registro de aplicaciones de Microsoft.
    • El portal de administración de Azure Active Directory.
  3. ID de aplicación: una vez que se haya registrado, se creará una ID de aplicación para su aplicación y se mostrará en la página de propiedades de su nueva aplicación.

Debe usar el portal de administración de Azure Active Directory para aplicaciones de clase empresarial.
NOTA: Microsoft Graph cambia todo el tiempo. Eche un vistazo al registro de cambios para tener una idea de los cambios que ya han ocurrido (desde diciembre de 2015). Si desea trabajar con él, asegúrese de verificar cuál es la versión de producción actual de la API.

Plataforma de integración

  1. Puede pensar en la plataforma de integración como una capa delgada que puede colocar entre usted y la API.
  2. Usted escribe su código para la plataforma de integración, que es *mucho* más simple.
  3. Luego está la integración del trabajo de la plataforma para traducir y “hablar” con la API. A diferencia de la API, debe pagar para usar una plataforma de integración, pero generalmente puede comenzar con una prueba gratuita.
  4. Ejemplo: Plataforma Connect Bridge

Connect Bridge Platform: lo bueno de esta plataforma de integración específica es que garantiza la compatibilidad hacia adelante y hacia atrás. Esto significa que construye su código Java con Connect Bridge, y luego los administradores pueden actualizar a una nueva versión de Exchange, Microsoft puede lanzar nuevas versiones de la API. Y no tendrás que preocuparte por nada de eso. 

Cómo funciona la plataforma de integración

  1. Connect Bridge traduce declaraciones SQL en llamadas API.
  2. Lo que pones en tu código es SQL estándar. Escribe las declaraciones normales SELECCIONAR, ACTUALIZAR, INSERTAR y ELIMINAR.
  3. Funciona como si estuviera obteniendo datos hacia y desde una base de datos relacional utilizando JDBC.
  4. Incluso puede utilizar procedimientos almacenados.

Nota: Todo es solo una capa de abstracción. Está accediendo a la API, de hecho, no a la base de datos de Microsoft Exchange.

Problemas con la plataforma de integración

El problema con algunas plataformas de integración es que solo funcionan en un entorno específico, pero en el caso particular de Connect Bridge, eso no es un problema porque puede ejecutarlo en:

  • Una plataforma SaaS construida por Azure.
  • En las instalaciones/autohospedado (en sus propias máquinas virtuales o servidores en la nube).

Implementación

En esta sección, veremos cómo podemos usar Connect Bridge Management Studio para integrar nuestra aplicación a la API.

Acercarse

Suponiendo que las instancias de Exchange y SharePoint ya existen, estos son los pasos de preparación que debe seguir:

1. Tenga a mano la información de inicio de sesión de su sistema de destino (en este caso, Exchange y SharePoint).

2. Instale el puente de conexión.

3. Ejecute Connect Bridge Management Studio.

  • Agregue una cuenta para SharePoint (Cuentas – Agregar cuenta). Para agregar la cuenta, debe seleccionar el conector CBSharePointConnector y usar las credenciales del punto 1.
  • Agregar una cuenta para Exchange (Cuentas – Agregar cuenta). Para agregar la cuenta, debe seleccionar el conector MGEXPlugin2010 y usar las credenciales del punto 1.
  • Para cada cuenta, asegúrese de probar la conexión para asegurarse de que todo esté bien con las credenciales y los parámetros que utilizó.

4. Abra la opción Nueva consulta y luego el Navegador de conexiones. Busque el conector de Exchange y expándalo hasta que vea DefaultConnection. Haga clic con el botón derecho en DefaultConnection y elija la opción Obtener string de conexión. Lo necesitará para pasarlo al script, así que copie la string de conexión JDBC .

5. Abra la opción Nueva consulta y luego el Navegador de conexiones. Busque el conector de SharePoint y expándalo hasta que vea DefaultConnection. Haga clic con el botón derecho en DefaultConnection y elija la opción Obtener string de conexión. Lo necesitará para pasarlo al script, así que copie la string de conexión JDBC.

Ejemplo: en el siguiente ejemplo, hemos discutido un código Java para integrar Microsoft Exchange y SharePoint.

Java

// Java Program to demonstrate
// integration of Exchange and
// SharePoint
  
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.Statement;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
  
class Program {
  
    public static void main(String[] args)
        throws SQLException, ClassNotFoundException
    {
  
        Class.forName("com.cnsconnect.mgw.jdbc.MgDriver");
  
        // STEP 1:Create a JDBC connection
        // for each target server you get
        // the data for the connection string
        // from Connect Bridge
        String exchangeConnectionString
            = "jdbc:MgDriver:IMPL=CORBA;ENC=UTF8;"
              + "HOST=123.456.789.000;PORT=8087;"
              + "UID=demouser;PWD='password';"
              + "ACC=accountExchange;";
        String sharepointConnectionString
            = "jdbc:MgDriver : IMPL = CORBA; ENC = UTF8;"
              + "HOST = 123.456.789.000; PORT = 8087;"
              + "UID=demouser; PWD = 'password';"
              + "ACC = accountSharePoint;";
        Connection exchangeConn
            = DriverManager.getConnection(
                exchangeConnectionString);
        Connection sharepointConn
            = DriverManager.getConnection(
                sharepointConnectionString);
        Statement exchangeSt
            = exchangeConn.createStatement();
        System.out.println("Connecting to Exchange...");
  
        // STEP 2: Provide an appropriate
        // object  like a ResultSet +
        // STEP 3: Fill the object with data
        // from the source server
        ResultSet exchangeRs = exchangeSt.executeQuery(
            "SELECT * FROM [Appointment]");
  
        // Create a new statement for
        // inserting PreparedStatement
        // using JDBC
        sharepointSt = sharepointConn.prepareStatement(
            "INSERT INTO [Calendar] "
            + "([Title],[Description], [Location],"
            + "[StartTime], [EndTime]) "
            + "VALUES ( ?, ?, ?, ?, ?)");
  
        // STEP 4: Manipulate the data or
        // apply a workflow rule (or both)
        // in this sample: check if the
        // appointment is private,
        // if not, insert it into SharePoint
        while (exchangeRs.next()) {
            Boolean isPrivate
                = exchangeRs.getBoolean("IsPrivate");
            if (isPrivate != null & amp; & isPrivate) {
                System.out.println(
                    "Skipping '"
                    + exchangeRs.getString("Subject")
                    + "'");
                continue;
            }
  
            // Fill these parameters with values
            // for the SharePoint account
            sharepointSt.setString(
                1, exchangeRs.getString("Subject"));
            sharepointSt.setString(
                2, exchangeRs.getString("Body"));
            sharepointSt.setString(
                3, exchangeRs.getString("Location"));
            sharepointSt.setTimestamp(
                4, exchangeRs.getTimestamp("StartDate"));
            sharepointSt.setTimestamp(
                5, exchangeRs.getTimestamp("EndDate"));
  
            System.out.println(
                "Inserting '"
                + exchangeRs.getString("Subject") + "'");
  
            // STEP 5: Insert data into
            // the target server
            sharepointSt.execute();
        }
  
        // STEP 6: Clean up and
        // lose the connections
        exchangeRs.close();
        exchangeSt.close();
        sharepointSt.close();
        exchangeConn.close();
        sharepointConn.close();
    }
}

Producción:

Publicación traducida automáticamente

Artículo escrito por ana2 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *