Integre redes sociales en BPM, Parte 1: Recolecte datos de Twitter

Use el motor de procesamiento y la infraestructura de conector de Bonita para integrar aplicaciones externas.

Gracias a la flexibilidad de las herramientas para la administración de procesos de negocios (BPM, sigla en inglés), es posible integrar redes sociales a los procesos de negocios de una compañía, con muy poca codificación. Este artículo en dos partes muestra cómo una aplicación construida con Bonita Open Solution — una herramienta para BPM de fuente abierta — recolecta, muestra en pantalla y utiliza datos de sitios de redes sociales. La Parte 1 muestra cómo configurar la aplicación para conectarse al servicio web Twitter y para permitir a los usuarios efectuar una búsqueda de datos relevantes por palabra clave. En la Parte 2, verá cómo la aplicación hace interfaz con un sistema de administración de relaciones con el cliente (CRM, sigla en inglés).

Bilal Siddiqui , Freelance consultant

Bilal Siddiqui es ingeniero electrónico, consultor en XML, promotor de tecnología y un autor técnico publicado con frecuencia. E s el fundador de XML4Java.com, una compañía enfocada en simplificar los e-business. Después de graduarse en 1995 de la Universidad de Ingeniería y Tecnología de Lahore, Bilal comenzó a diseñar soluciones de software para sistemas de control industrial. Luego, pasó a XML y herramientas de procesamiento integradas basadas en web y en WAP, a soluciones de análisis del lado del servidor y a aplicaciones de servicio. Desde el 2006, se ha concentrado exclusivamente en herramientas y soluciones de fuente abierta basadas en Java y en XML. Es un fuerte defensor de las herramientas de fuente abierta; no sólo diseña soluciones basadas en estas sino que también capacita a personal de software y TI en universidades de Lahore en el uso de tecnologías de fuente abierta. Bilal es el autor de JasperReports 3.6 Development Cookbook (Packt Publishing, 2010).



29-08-2011 (Primera publicación 10-05-2011)

IBM y BPM

IBM ha estado activa por bastante tiempo en el área de procesamiento de negocios, ofreciendo un sólido conjunto de herramientas comerciales para modelar, simular, ejecutar, adaptar, supervisar y optimizar sus procesos de negocios. En abril IBM anunció el Business Process Manager V7.5, una actualización sustancial de su plataforma RPM integral. Se espera que esté disponible para junio del 2011. Mientras tanto, manténgase informado(a) sobre las actividades BPM de IBM en developerWorks.

En respuesta al creciente valor de negocios de los sitios de redes sociales como Twitter y Facebook, las empresas desean formas rápidas y fáciles para integrar las redes sociales a sus procesos de negocios. Un enfoque eficiente es utilizar herramientas BPM, que están altamente capacitadas para integrar aplicaciones y datos externos a los flujos de trabajo de negocios.

Este artículo en dos partes muestra cómo utilizar Bonita, una herramienta de fuente abierta para BPM, para construir una aplicación de búsqueda en medios sociales, para una compañía hipotética. La aplicación consiste en un proceso de negocios que se integra sin problemas con aplicaciones externas. Esta permite a los usuarios hacer búsquedas por palabras clave para recolectar datos relacionados con los negocios, de un sitio de red social, y luego agregar algo de esos datos a un sistema CRM con sólo hacer clic en un botón. La Parte 1 describe la interfaz de usuario y la arquitectura de la aplicación, y luego muestra los pasos para configurar Bonita para que capte y muestre datos de Twitter en un proceso de negocios. La Parte 2 completa la aplicación al integrarla con el sistema CRM de la compañía.

Ejercicio: BPM IBM en acción

El BPM IBM proporciona visibilidad de procesos y control de punta a punta, los cuales son críticos para que las organizaciones sobrevivan y se destaquen en el entorno actual de los negocios que cambia constantemente. Use el ejercicio IBM BPM in action para modelar y ejecutar procesos de negocios en un entorno visual y libre de código.

El código fuente para la aplicación de este artículo está disponible para descargar. Para seguir los pasos prácticos del artículo, descargue e instale Bonita y Twitter4J antes de proceder (vea en Recursos los enlaces para descargas). Para desarrollar la aplicación, utilicé Bonita versión 5.4 y Twitter4J versión 2.1.12.

Visión General de la Aplicación

Toda la aplicación está desarrollada como un proceso de negocios mediante la configuración de proceso Bonita. Una IU simple permite a los usuarios buscar datos de valor de negocios en Twitter y mostrar mensajes (tweets) que cumplan con los criterios de búsqueda. El usuario selecciona un tweet de interés de los resultados y capta el perfil del usuario de Twitter que lo publicó. La aplicación de búsqueda también permite al usuario de la aplicación agregar a ese usuario de Twitter como contacto potencial en SugarCRM, un sistema de CRM de fuente abierta.

Interfaz de usuario

La IU de la aplicación de búsqueda consiste en tres formularios simples que he desarrollado utilizando el diseñador de formularios de Bonita. El primer formulario presenta dos componentes de IU: un recuadro de texto Search Keyword y un botón Search como se muestra en la Figura 1:

Figura 1. Formulario de Búsqueda de Tweets
Formulario de Búsqueda de Tweets

El diseñador de formularios de Bonita es bastante potente, ofrece componentes gráficos para el diseño de formularios y le permite vincular acciones de usuario con otros formularios o actividades en backend, mediante pantallas de configuración. Por ejemplo, Bonita le permite configurar el botón Search de la Figura 1 para que se vincule a las actividades de búsqueda backend que busca tweets relevantes.

Después de que el usuario ingresa una palabra clave de búsqueda y hace clic en el botón Search , el control se transfiere al motor de procesamiento de negocios de Bonita. El motor funciona en segundo plano para captar los tweets que contengan la palabra clave de búsqueda. Bonita muestra los mensajes que encuentra en un segundo formulario de IU, como se muestra en la Figura 2:

Figura 2. Formulario mostrando los mensajes de Twitter
Formulario mostrando los mensajes de Twitter

El usuario puede seleccionar cualquier mensaje y hacer clic en el botón View Profile . El control es transferido nuevamente al motor de procesos Bonita, que trabaja en segundo plano para capturar datos de perfil del usuario de Twitter que envió ese tweet. El perfil del usuario Twitter se muestra en un tercer formulario IU como se muestra en la Figura 3:

Figura 3. Formulario de Perfil de Usuario
Formulario de Perfil de Usuario

Los usuarios pueden hacer clic en el botón Add to CRM del tercer formulario IU para agregar al usuario de Twitter a sus contactos de negocios en SugarCRM. El motor de procesos Bonita se vincula sin problemas con SugarCRM para que esto sea posible.

Arquitectura de aplicación

Las herramientas de BPM como Bonita cuentan con la flexibilidad para integrarse con una variedad de aplicaciones. La flexibilidad de Bonita proviene de su motor de procesos y de su infraestructura de conector. Describiré la arquitectura de la aplicación para mostrar cómo el motor de procesos y la infraestructura de conector trabajan con otros componentes. La Figura 4 presenta un diagrama de la arquitectura:

Figura 4. Arquitectura de la aplicación de búsqueda
Arquitectura de la aplicación de búsqueda

Es posible ver en la Figura 4 que la aplicación de búsqueda consiste en varios componentes principales:

  • Interfaz de usuario
  • Variables de proceso
  • Motor de procesos Bonita
  • Infraestructura de conector Bonita
  • Twitter4J
  • API SugarCRM

Ya cubrí la IU, así que trataré los demás cuadros que aparecen en la Figura 4:

  • Variables de proceso: Bonita proporciona variables de proceso para contener los datos de aplicación. Hay variables de nivel de aplicación disponibles y también temporales locales. Bonita proporciona una GUI para configurar las variables de acuerdo a la lógica de negocios de la aplicación y a la evaluación lógica y las expresiones lógicas basadas en variables de proceso.
  • Motor de procesos Bonita: El motor de procesos Bonita coordina todas las actividades que ocurren entre los diferentes componentes de aplicación. Al comienzo, el motor de procesos identifica el formulario de IU que se mostrará al usuario de la aplicación. Después de que el usuario ingresa las palabras clave para la búsqueda, el motor de procesos controla el flujo de la aplicación y permite a las variables de proceso capturar la entrada del usuario. Podría decirse que el motor de procesos administra el ciclo de vida de los procesos de acuerdo a la lógica de negocios, durante toda la ejecución de la aplicación.
  • Infraestructura de conector Bonita: La infraestructura de conector es el mecanismo de extensibilidad Bonita para integración con aplicaciones externas. Usted utiliza la infraestructura para construir conectores personalizados. Puede ver que el recuadro de infraestructura de conector en la Figura 4 contiene tres conectores — TwitterSearchConnector, TwitterUserProfileConnector y SugarCRMAddContactConnector — todos construidos utilizando la infraestructura de conector. Cada conector efectúa una tarea en particular. Por ejemplo, elTwitterSearchConnector actúa como motor de búsqueda para mensajes de interés en Twitter.
  • Twitter4J: El recuadro Twitter4J se conecta al servicio web Twitter a través de Internet, lo cual permite a las aplicaciones del cliente (como la aplicación de búsqueda) interactuar con el sitio web Twitter. Twitter4J es una API Java de fuente abierta que hace más fácil trabajar con el servicio web Twitter (vea Recursos). ElTwitterSearchConnector empaqueta al Twitter4J dentro de la infraestructura de conector Bonita para permitir que Bonita comience a trabajar con el servicio web Twitter. (Usted aprenderá cómo hacer esto en la sección Implementando la clase TwitterSearchConnector de este artículo).
  • API SugarCRM: Hablaré sobre este componente en la Parte 2.

Luego describiré cómo funcionan juntos los componentes de la aplicación de búsqueda.

Secuencia de interacción de componentes

La Figura 5 muestra la secuencia de eventos que sucede cuando un usuario de negocios utiliza la aplicación de búsqueda para interactuar con el servicio web Twitter:

Figura 5. Secuencia de eventos de la aplicación de búsqueda
Secuencia de eventos de la aplicación de búsqueda
  1. El usuario ingresa una palabra clave para búsqueda en el primer formulario de la IU (Figura 1) y hace clic en el botón Search .
  2. El motor de procesos Bonita recibe la palabra clave de búsqueda y la almacena en una variable de procesamiento.
  3. El motor de procesos Bonita invoca al TwitterSearchConnector.
  4. El TwitterSearchConnector utiliza a Twitter4J para autenticarse con el servicio web Twitter y le envía una consulta de búsqueda que contiene la palabra clave de búsqueda.
  5. El servicio web Twitter recibe la consulta de búsqueda, efectúa la operación efectiva de búsqueda sobre Twitter y retorna los mensajes relevantes al TwitterSearchConnector.
  6. El TwitterSearchConnector recibe los resultados de búsqueda y los pasa al motor de procesos Bonita.
  7. El motor de procesos Bonita llena una variable de procesos con los resultados de búsqueda. Luego identifica la siguiente tarea de la secuencia y pasa el control al formulario de resultados de búsqueda (Figura 2).
  8. La IU de resultados de búsqueda captura la respuesta de la variable de proceso y muestra los mensajes al usuario.

La secuencia de búsqueda puede continuar de forma similar desde el segundo formulario de IU (Figura 2) hacia el formulario de perfil de usuario (Figura 3). Si un usuario selecciona alguno de los tweets mostrados en el segundo formulario y hace clic en el botón View Profile , el motor de procesos llama a TwitterUserProfileConnector, el cual captura el perfil del usuario que publicó dicho tweet. De manera similar, si el usuario decide añadir la información de contacto de ese usuario de Twitter a SugarCRM (haciendo clic en el botón Add to CRM ), el motor de procesos llama al conector SugarCRM, que a su vez agrega la información de contacto al sistema CRM.

De esta secuencia de eventos es posible ver que el motor de procesos Bonita juega un papel central en la coordinación de todas las actividades de la aplicación de búsqueda. Por lo tanto, el desarrollo de la aplicación en Bonita consiste en decirle al motor de procesos Bonita lo que debe hacer en cada paso. Esto se conoce como configuración de un proceso empresarial en Bonita. El resto de este artículo describe cómo comenzar a configurar la aplicación de búsqueda.


Configurando la aplicación de búsqueda

Las tareas de configuración de aplicación que usted completará son:

  1. Crear una cuenta en Twitter.
  2. Registrar la aplicación con el servicio web Twitter y obtener credenciales de seguridad para autenticación.
  3. Diseñar y configurar el TwitterSearchConnector.
  4. Configurar los componentes restantes de la aplicación en Bonita (terminando en la Parte 2).

El primer paso, crear una cuenta en Twitter, es incluso más sencillo que crear una cuenta de correo. La aplicación de búsqueda actuará como cliente del servicio web Twitter. Para el propósito de este artículo he creado una cuanta en Twitter llamada searchMessages. Si usted desea efectuar los pasos de configuración usted mismo(a), vaya a https://twitter.com/signup y cree su propia cuenta.

Registro de la aplicación en Twitter y obtención de credenciales de seguridad

Al registrar la aplicación con el servicio web Twitter, usted obtiene dos tipos de claves:

  • Una clave de consumidor y un secreto de consumidor que representa la aplicación del cliente: La aplicación de búsqueda utilizará este par de claves para acceder al servicio web Twitter usando la cuanta que usted creó.
  • Un token de acceso y un secreto de token de acceso: El token de acceso junto con el secreto, se utilizarán para firmar las solicitudes que envíe la aplicación de búsqueda al servicio web Twitter.

El mecanismo de seguridad detrás de los dos pares de claves es llamado protocolo Open Authentication (OAuth) (vea Recursos). o es necesario que se preocupe por cómo funciona OAuth, porque Twitter4J lo maneja tras bastidores. ElTwitterSearchConnector usa clases Twitter4J.

Inicie sesión en el sitio web Twitter (http://www.twitter.com) usando la cuenta que creó recientemente. Digitehttps://dev.twitter.com/apps/new en la barra de direcciones de su navegador. Usted verá la página Register an Application , como se muestra en la Figura 6:

Figura 6. Registro de una página de aplicación en Twitter
Registro de una página de aplicación en Twitter

Complete la página de la siguiente forma:

  1. IngreseBonita search client en el recuadro de texto etiquetado Application Name.
  2. Escriba una descripción breve (como Cliente que busca datos en Twitter en el campo Description .
  3. Ingrese el URL de su aplicación en el campo Application Website .
  4. Seleccione el botón Client en la opción Application Type. Esto significa que su aplicación de búsqueda actuará como un cliente de servicio web.
  5. Seleccione el botón Read-only en la opción Default Access Type (porque la aplicación simplemente necesita buscar datos en Twitter, no enviar mensajes Twitter).

Deje los campos Organization y Callback URL en blanco y envíe el formulario completado. Usted verá la página Bonita search client Settings que le estará proporcionando credenciales de seguridad, como se muestra en la Figura 7:

Figura 7. Página Settings del cliente de búsqueda Bonita en Twitter
Página Settings del cliente de búsqueda Bonita en Twitter

Tome nota de la clave de consumidor y del secreto de consumidor, pues los necesitará más adelante.

Para obtener el segundo par de claves (token de acceso y secreto de token de acceso), haga clic en el botón My Access Token marcado con un círculo rojo en laFigura 7. Luego se mostrarán el token de acceso y su secreto en otra página Twitter, llamada Bonita search client Access Token Requisition, como se muestra en la Figura 8:

Figura 8. Página Bonita search client Access Token Requisition en Twitter
Página Bonita search client Access Token Requisition en Twitter

Anote el token de acceso y el secreto del token de acceso.

Ahora que tiene los dos pares de claves, el siguiente paso es diseñar y configurar el TwitterSearchConnector.

Diseño y configuración del TwitterSearchConnector

La implementación de un conector en Bonita es principalmente una tarea de configuración, que incluye algunos pasos:

  1. Suministro de información descriptiva.
  2. Configuración de parámetros de entrada y salida para el conector.
  3. Genere una plantilla de código Java para su conector. Bonita utiliza Eclipse Modeling Framework (EMF) y Graphical Modeling Framework (GMF) (vea Recursos) para generar una plantilla de conector. La plantilla contiene todo el código Java requerido por la infraestructura de conector de Bonita, permitiéndole a usted enfocarse en la lógica empresarial de su conector. El único momento en que usted necesitará escribir código Java para la aplicación es cuando utilice Twitter4J.

Bonita ofrece asistentes gráficos para casi cualquier paso de la configuración.

Ejecute Bonita. La Figura 9 muestra la página de bienvenida:

Figura 9. Página de bienvenida Bonita
Página de bienvenida Bonita

Seleccione Connector > New connector en el menú de la página de bienvenida. (encerré en un círculo rojo el elemento de menú Connector en la Figura 9.) Aparecerá un asistente de creación de Conector, como se muestra en la Figura 10:

Figura 10. Asistente de creación de Conector
Asistente de creación de Conector

En la Figura 10 es posible ver que el asistente de creación de Conector está dividido en las porciones superior e inferior. La porción superior recolecta información descriptiva sobre el conector (ID de Conector, Descripción, Categoría y Nombre de la clase Java que representará al conector). La porción inferior consiste en dos widgets gráficos estilo tabla (Pages y Outputs), que le permiten definir parámetros de entrada y de salida.

IngreseTwitterSearchConnector en el campo de texto Connector Id y Search tweets en el campo de texto Description. Luego seleccione Social de la lista Category. El campo de categoría ayuda a Bonita a categorizar sus conectores. Es posible ver que Bonita utiliza automáticamente el campo Connector Id para llenar el campo Class Name, que es el nombre de la clase Java para este conector.

Haga clic en el botón Browse contiguo al campo Package para seleccionar el paquete de su elección para su clase TwitterSearchConnector . Usted también puede especificar un ícono para su conector, paso que no estoy efectuando en este artículo. Esto termina la información descriptiva.

Después de haber proporcionado la información descriptiva, el asistente de la Figura 10 se ve como en la Figura 11:

Figura 11. Asistente para creación de Conector mostrando información descriptiva sobre el TwitterSearchConnector
Asistente para creación de Conector mostrando información descriptiva sobre el TwitterSearchConnector

Ahora usted definirá los parámetros de entrada para el TwitterSearchConnector.

Configuración de los parámetros de entrada para el TwitterSearchConnector

Use la tabla Pages de la porción inferior del asistente de creación de Conector, para configurar los parámetros de entrada del TwitterSearchConnector. Note que Bonita debe pasar los parámetros de entrada al TwitterSearchConnector. El asistente de creación de Conector le permite agrupar parámetros de entrada como páginas. Esto quiere decir que mientras esté configurando un proceso de negocios, puede pasar parámetros de entrada desde una página. Esta página se le mostrará cuando agregue este conector al proceso empresarial de búsqueda en la Parte 2.

SuTwitterSearchConnector necesita los dos pares de claves (clave de consumidor, secreto de consumidor, token de acceso y secreto de token de acceso) y la palabra clave de búsqueda ingresada en el primer formulario IU (Figura 1). De manera que usted debe definir cinco parámetros de entrada para suTwitterSearchConnector: las cuatro credenciales de seguridad, que se fijan cuando usted añade elTwitterSearchConnector al proceso empresarial de búsqueda; y la palabra clave de búsqueda, que es dinámica — es decir, el usuario la suministra cada vez que efectúa una búsqueda.

Haga clic en el botón Create (encerrado en un círculo rojo en la Figura 11) que está a la derecha de la tabla Pages. Esto abre una nueva página que contiene los campos para configurar los parámetros de entrada para el TwitterSearchConnector, como se muestra en la Figura 12:

Figura 12. Página para configurar los parámetros de entrada
Página para configurar los parámetros de entrada

En la Figura 12 es posible ver que que la página de parámetros de entrada contiene tres campos: Page Id, Page Title, y Description. Para su página de parámetros de entrada, simplemente ingreseTwitterSearchConnectorInputParametersPage en el campo Page Id y luego escriba Twitter Search Connector Input Parameters Page en los campos Page Title y Description.

Debajo de los tres campos podrá observar una tabla Widgets que requiere que usted complete cuatro campos para cada uno de sus parámetros de entrada. Field name es el nombre del parámetro, Mandatory especifica si el parámetro es obligatorio u opcional, Widget especifica cuál componente visual está asociado con este parámetro de entrada, y el campo Data type especifica el tipo de datos de la variable asociada con este parámetro.

Ahora usted configurará los cuatro campos para cada uno de los cinco parámetros de entrada. Haga clic en el botón Create , encerrado en un círculo rojo en la Figura 12. Aparecerá una fila en la tabla Widgets, en la que es posible ingresarconsumerKey como nombre de campo, Mandatory en la columna Mandatory, Passworden la columna Widget yText como el valor en la columna Data type. Use estos mismos valores para todos los cinco parámetros de entrada, como se muestra en la Figura 13:

Figura 13. Página completada de configuración de parámetros de entrada
Página completada de configuración de parámetros de entrada

Haga clic en el botón OK de la parte de abajo de la página. Bonita guardará las configuraciones de los parámetros de entrada y le llevará de nuevo al asistente de creación de Conector anterior de la Figura 10.

Configurando los parámetros de salida

Usted sólo necesita definir un parámetro de salida llamadosearchResults, para su TwitterSearchConnector. Haga clic en el botón Create (encerrado en un círculo azul en la Figura 11) que está al lado de la tabla de salida. En la tabla de salida aparecerá una nueva fila. Podrá ver que necesita proporcionar los datos sólo para dos columnas para los parámetros de salida. IngresesearchResults en la columna Field name. En la columna Data type, seleccione List de la lista desplegable. El asistente de creación de Conector, que contiene ahora todos los datos de configuración que usted ha suministrado para los parámetros de entrada y de salida, debe verse como en la Figura 14:

Figura 14. Asistente de creación de Conector conteniendo los datos de configuración para los parámetros de entrada y de salida
Asistente de creación de Conector conteniendo los datos de configuración para los parámetros de entrada y de salida

Haga clic en el botón Finish del asistente de creación de Conector. Bonita genera inmediatamente todo el código para los parámetros de entrada y salida de la clase TwitterSearchConnector y muestra el código en un editor, como se muestra en la Figura 15:

Figura 15. Código de plantilla de la clase TwitterSearchConnector
Código de plantilla de la clase TwitterSearchConnector

Bonita guarda el código que se generó automáticamente para la claseTwitterSearchConnector en la carpeta X:\BOS-5.4\studio\workspace\local_default_My Extensions\src-connectors\org\bonitasoft\connectors\twitter de su instalación Bonita. (El código para descarga de este artículo incluyeTwitterSearchConnector.java para conveniencia suya). A continuación usted aprenderá lo que necesita hacer con este código.

Implementando la clase TwitterSearchConnector

El Listado 1 muestra la claseTwitterSearchConnector :

Listado 1. ClaseTwitterSearchConnector generada por Bonita
public class TwitterSearchConnector extends ProcessConnector {

    private String consumerKey;
    private String accessToken;
    private String accessTokenSecret;
    private String consumerSecret;
    private String searchKeyword;

    @Override
    protected void executeConnector() throws Exception {
        // TODO Auto-generated method stub
    }

    @Override
    protected List<ConnectorError> validateValues() {
        // TODO Auto-generated method stub
        return null;
    }

    public void setConsumerKey(String consumerKey) {
        this.consumerKey = consumerKey;
    }

    public void setAccessToken(String accessToken) {
        this.accessToken = accessToken;
    }

    public void setSearchKeyword(String searchKeyword) {
        this.searchKeyword = searchKeyword;
    }

    public void setAccessTokenSecret(String accessTokenSecret) {
        this.accessTokenSecret = accessTokenSecret;
    }


    public void setConsumerSecret(String consumerSecret) {
        this.consumerSecret = consumerSecret;
    }

    public List getSearchResults() {
        // TODO Add return value for the output here
        return null;
    }
}

Como es posible ver en el Listado 1, TwitterSearchConnectorextiende la claseProcessConnector, la cual es parte de la infraestructura de conector. ProcessConnector proporciona la funcionalidad para administrar múltiples instancias de un conector que se esté ejecutando en hilos de ejecución separados, dentro del motor de procesos Bonita.

La claseProcessConnector extiende a su vez Connector, que es la clase base de la infraestructura del conector. Esta proporciona funcionalidad para manejar tareas comunes como validación de entradas y manejo de excepciones.

Si observa las variables a nivel de clase del Listado 1, notará que Bonita ha declarado cinco variables como correspondientes a los cinco parámetros de entrada que usted configuró en la sección Configuración de los parámetros de entrada para el TwitterSearchConnector.

Usted también configuró una variable de salida en la sección Configurando los parámetros de salida, pero Bonita no ha declarado ninguna variable de salida en la claseTwitterSearchConnector. Por ello, usted debe agregar manualmente una sexta variable llamadasearchResults, para almacenar la salida del conector, como se muestra en el Listado 2:

Listado 2. Variables de nivel de clase para la clase TwitterSearchConnector
//Class level variables
    private String consumerKey;
    private String accessToken;
    private String accessTokenSecret;
    private String consumerSecret;
    private String searchKeyword;

//Manually added output variable
private List<Tweet> searchResults;

Ahora observe los métodos setter y getter del Listado 1. Allí puede observar un método setter para cada uno de los cinco parámetros de entrada(setConsumerKey(), setConsumerToken(), setAccessToken(), setAccessTokenSecret() y setSearchString()). Note también que la clase sólo tiene un método getter, llamado getSearchResults(). Este corresponde a la variable de salida searchResults. Sin embargo, el métodogetSearchResults() retornanull en el Listado 1, así que usted debe editarlo manualmente como se muestra en el Listado 3, para retornar la variable de salidasearchResults en lugar de null:

Listado 3. Método getSearchResults() editado manualmente.
//Manually edited form of the getSearchResults()
public List<Tweet> getSearchResults() {
   return searchResults;
}

Observe ahora el método executeConnector() del Listado 1. Usted necesita completar este método vacío con la lógica empresarial de TwitterSearchConnector. La siguiente sección describe cómo implementar la lógica utilizando Twitter4J.

Implementando el métodoexecuteConnector().

El métodoexecuteConnector() de la infraestructura de conector Bonita le permite implementar la lógica de negocios de su conector. El motor de procesos Bonita llamará al método executeConnector() cada vez que TwitterSearchConnector sea invocado. El Listado 4 muestra el método executeConnector():

Listado 4. Método executeConnector().
protected void executeConnector() throws Exception {
   //Step1:
   Twitter twitter = new TwitterFactory().getInstance();

   //Step2:
   twitter.setOAuthConsumer(consumerKey, consumerSecret);
   twitter.setOAuthAccessToken(new AccessToken(accessToken, accessTokenSecret));
   
   //Step3:
   twitter4j.Query query = new twitter4j.Query(searchKeyword);
   twitter4j.QueryResult queryResult = null;
   
   //Step4:
   try
   {
      queryResult = twitter.search(query);
      searchResults = queryResult.getTweets();
   }
   catch (TwitterException e) {
      System.out.println ("Twitter follow a user exception");
      e.printStackTrace();
   }
}

El métodoexecuteConnector() utiliza Twitter4J para implementar su lógica de negocios. El métodoexecuteConnector() es simple, y consta de cuatro pasos:

  1. Crea una instancia de la claseTwitter con la ayuda de la clase de fábrica llamada TwitterFactory. La claseTwitter le permite usar muchos métodos útiles de Twitter4J.
  2. Llama a los métodossetOAuthConsumer() ysetOAuthAccessToken() de la claseTwitter, pasando los datos de autenticación (consumerKey, consumerSecret, accessToken y accessTokenSecret) junto con el llamado de método. Twitter4J maneja la autenticación internamente.
  3. Crear una instancia de los objetos Query y QueryResult. El objetoQuery empaqueta la palabra clave de búsqueda y el objetoQueryResult empaqueta los resultados de búsqueda.
  4. Llame al método de búsqueda de classe de elTwitter que toma el Query como parámetro y retorna los resultados de búsqueda empaquetados dentro del objeto QueryResult. Luego extrae los mensajes del objetoQueryResult llamado a su método getTweets(), y almacena los mensajes en la variable searchResults.

Probando la claseTwitterSearchConnector de forma autónoma

He incluido un métodomain() en la claseTwitterSearchConnector para que usted pueda probar la funcionalidad de la clase en modo autónomo sin necesidad de ejecutar Bonita. El Listado 5 muestra el método main() :

Listado 5. Métodomain() de la claseTwitterSearchConnector
public static void main(String args[]) {
   //Step1: Instantiate
   TwitterSearchConnector twitterSearchConnector = 
      new TwitterSearchConnector();

   //Step2: Provide security information
   twitterSearchConnector.setConsumerKey(args[0]);
   twitterSearchConnector.setConsumerSecret(args[1]);
   twitterSearchConnector.setAccessToken(args[2]);
   twitterSearchConnector.setAccessTokenSecret(args[3]);
   twitterSearchConnector.setSearchKeyword(args[4]);

   //Step3: Search Twitter
   try 
   {
       twitterSearchConnector.executeConnector();
   }catch (java.lang.Exception e){
      e.printStackTrace();
   }
   List <Tweet> tweets = twitterSearchConnector.getSearchResults();

   //Step4: Print Twitter messages
   for (int i=0; i<tweets.size(); i++)
   {
      System.out.println ("User Name: ["+tweets.get(i).getFromUser()+"]");
      System.out.println ("Message ["+tweets.get(i).getText() +"/r/n");
   }
}//main

El métodomain() :

  1. Crea una instancia de la clase TwitterSearchConnector.
  2. Proporciona toda la seguridad y datos de palabra clave de búsqueda para la claseTwitterSearchConnector.
  3. Llama al método executeConnector().
  4. Imprime los resultados de búsqueda en la consola de salida.

Es posible usar los archivos SearchTweetsCompile.bat y SearchTweetsRun.bat suministrados en el código fuente para descarga de este artículo para compilar y ejecutar la claseTwitterSearchConnector como aplicación autónoma. Los dos pares de claves están programados en el archivo SearchTweetsRun.bat.

La claseTwitterSearchConnector usa las bibliotecas Bonita así como Twitter4J, de manera que Bonita-client-5.4.jar de la descarga de Bonita y twitter-core-2.1.12.jar de Twitter4J necesitan estar en su ruta de acceso de clase.

La Figura 16 muestra mi consola de salida después de que ejecuté el archivo SearchTweetsRun.bat:

Figura 16. Contenido de la consola de salida en modo autónomo
Contenido de la consola de salida en modo autónomo

La consola muestra el nombre de usuario y el contenido del mensaje, para cada tweet localizado por una búsqueda para la palabra clave CRM.


Parte 1 empaquetado

He hablado sobre la arquitectura de la aplicación de búsqueda, mostrando cómo el motor de procesamiento de Bonita y su infraestructura de conector pueden cooperar entre sí para integrar datos de redes sociales a un proceso empresarial. Usted ha visto cómo configurarTwitterSearchConnector y también cómo comprobar la claseTwitterSearchConnector en modo autónomo. En la Parte 2, mostraré cómo completar la aplicación mediante la configuración de los conectores restantes para capturar perfiles de usuario de Twitter e integrarlos a SugarCRM. Luego la aplicación mostrará de una forma comprehensiva cómo integrar un proceso de negocios que se esté ejecutando dentro de Bonita con una variedad de aplicaciones externas.


Descargar

DescripciónNombretamaño
Source code for this article's examplej-sb1.zip7KB

Recursos

Aprender

Obtener los productos y tecnologías

Comentar

Comentarios

developerWorks: Ingrese

Los campos obligatorios están marcados con un asterisco (*).


¿Necesita un IBM ID?
¿Olvidó su IBM ID?


¿Olvidó su Password?
Cambie su Password

Al hacer clic en Enviar, usted está de acuerdo con los términos y condiciones de developerWorks.

 


La primera vez que inicie sesión en developerWorks, se creará un perfil para usted. La información en su propio perfil (nombre, país/región y nombre de la empresa) se muestra al público y acompañará a cualquier contenido que publique, a menos que opte por la opción de ocultar el nombre de su empresa. Puede actualizar su cuenta de IBM en cualquier momento.

Toda la información enviada es segura.

Elija su nombre para mostrar



La primera vez que inicia sesión en developerWorks se crea un perfil para usted, teniendo que elegir un nombre para mostrar en el mismo. Este nombre acompañará el contenido que usted publique en developerWorks.

Por favor elija un nombre de 3 - 31 caracteres. Su nombre de usuario debe ser único en la comunidad developerWorks y debe ser distinto a su dirección de email por motivos de privacidad.

Los campos obligatorios están marcados con un asterisco (*).

(Por favor elija un nombre de 3 - 31 caracteres.)

Al hacer clic en Enviar, usted está de acuerdo con los términos y condiciones de developerWorks.

 


Toda la información enviada es segura.


static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=90
Zone=tecnologia Java
ArticleID=751960
ArticleTitle=Integre redes sociales en BPM, Parte 1: Recolecte datos de Twitter
publish-date=08292011