Introducción a IBM Cognos Mashup Service

Desarrollo rápido de aplicaciones para contenido de informes Cognos BI

IBM® Cognos® Mashup Service (CMS) le permite extraer fácilmente contenido de informes Cognos Business Intelligence e integrarlo a aplicaciones como Google Maps, Google Earth, widgets de escritorio de Yahoo, Adobe Flex, IBM Lotus Notes y otros motores de Flash o creación de gráficos de terceros. Este artículo realiza una introducción a CMS e incluye varios ejemplos que muestran lo que puede lograr usando este nuevo servicio web.

Cynthia D. Sleigh, Senior Software Developer, IBM

Author Photo: Cynthia SleighCynthia Sleigh es miembro senior del equipo IBM Cognos SDK and Diagnostic. Se especializa en Cognos Mashup Services y Cognos Software Development Kit.



Iman Johari, Software Developer, IBM  

Iman Johari photoIman Johari es miembro del equipo IBM Cognos SDK and Diagnostic. Se especializa en Cognos Mashup Services, Cognos Software Development Kit y herramientas de diagnóstico.



29-07-2011

Introducción

Cognos Mashup Service (CMS) es un nuevo servicio web incluido en el IBM Cognos Software Development Kit. Este artículo realiza una introducción a CMS y explica sus dos diferentes interfaces: REST y SOAP. El artículo le muestra todo lo que puede lograr con CMS proporcionándole código de muestra y destacando algunas de las muestras que vienen instaladas con Cognos Mashup Service. Para aprovechar al máximo este artículo, debe contar con conocimientos básicos de IBM Cognos 8 Business Intelligence (BI) y comprender las nociones básicas de lenguajes de programación y tecnologías web.

Requisitos previos del sistema

Para poder ejecutar los ejemplos incluidos en este artículo, necesitará tener instalado:

  • IBM Cognos 8.4.1 BI
  • IBM Cognos 8.4.1 Software Development Kit

¿Qué puedo lograr con CMS?

IBM Cognos Mashup Service le proporciona una forma de integrar informes Cognos con otras aplicaciones. Puede usar cualquiera de las siguientes plataformas para lograr esta integración:

  • Transferencia de Estado Representacional (Representational State Transfer o REST). Esta interfaz usa solicitudes HTTP básicas.
  • Protocolo simple de acceso a objetos (Simple Object Access Protocol o SOAP). Esta interfaz puede usarse para accede a la API CMS programáticamente.

El ejemplo a continuación muestra una integración CMS completa. La Figura 1 es un fragmento de un informe IBM Cognos 8.4.1 Report Studio de muestra. El informe contiene datos de ingresos de ventas de una empresa ficticia. Los datos están desglosados en base a la ubicación geográfica de las sucursales de la empresa. La Figura 2 muestra el resultado al integrar el informe con un mapa de Google Earth. Las cifras de ventas de cada sucursal se superponen en el mapa en base a la ubicación de la sucursal. Esto se logra usando la API Google Maps junto con la interfaz CMS REST.

Nota: Este artículo es un recorrido introductorio a CMS y no cubre los aspectos específicos del uso de la API Google Maps.

Figura 1. Resultados de informe IBM Cognos de muestra en formato HTML
Resultados de informe IBM Cognos de muestra en formato HTML
Figura 2. Resultados de informe IBM Cognos superpuestos en Google Earth usando IBM Cognos Mashup Service
Resultados de informe IBM Cognos superpuestos en Google Earth usando IBM Cognos Mashup Service

¿En qué se diferencia CMS de Cognos Software Development Kit (SDK)?

La Tabla 1 compara Cognos SDK con CMS.

Tabla 1. Cognos SDK comparado con CMS
SDKCMS
Autoría de informesSoporta autoríaNo soporta autoría
Lenguajes de programaciónJava®, .NET Languages, VBJava, .Net Languages, interfaz REST
Formatos de salidaCSV, HTML, fragmento HTML, MHT, PDF, XLS simple, hoja de cálculo ML, XHTML, XLS, XLWA, XMLLDX, XML, HTML, fragmento HTML, JSON
Nota: LDX son las siglas de Layout Data XML. Se trata de un formato nuevo.
Principal funcionalidadCasi todas las funciones de Cognos Connection y además automatización de operacionesEjecutar y obtener los datos de salida de informes y habilitar el acceso a elementos de salida de informes al mayor nivel de granularidad posible
AutenticaciónSí – a través de SDK o su propio servicio de autenticación, en REST también puede usar los datos de inicio de sesión de Cognos 8.
APIJava: archivos Jar disponibles en la carpeta sdk, Microsoft® .Net: archivos .dll disponibles en la carpeta sdk Uso de archivos WSDL para consumir la funcionalidad disponible a través de servicios web

Uso de CMS

Los ejemplos de esta sección muestran cómo usar las interfaces REST y SOAP para extraer diferentes componentes de un informe Cognos.

Interfaz REST

La URL genérica para una solicitud REST es:

http://webservername:portnumber/cognos8/cgi-bin/cognos.cgi/rds/resource_type/source_type/source_id?option1=val1&option2=val2...

La Tabla 2 muestra los principales componentes estructurales de la API REST.

Tabla 2. Principales componentes estructurales de la API REST
Tipos de recursosTipos de fuentesOpciones
autor/logonconversationIDasync
auth/logoffpathburstID
atomreportburstKey
promptPagesearchPathcontextId
reportDatadirection

Para obtener más información, incluso sobre opciones adicionales, consulte la Guía del desarrollador de Mashup Services (ver la sección de Recursos para saber dónde encontrar esta guía).

Ejemplo REST 1:

Este primer ejemplo de API REST muestra cómo poner a disposición todos los gráficos en un informe que contiene una combinación de lista y gráficos. El ejemplo devuelve todos los gráficos del informe en formato Layout Data XML (LDX).

Para construir la URL de ejemplo se usaron los siguientes parámetros:

  • Tipo de recurso: reportData
  • Tipo de fuente: report
  • ID de recurso: ID de almacenamiento de informe; por ejemplo, iE0CDFEF149F8408F96F1C27DCFFA6BCB
  • Opciones: fmt=layoutDataXML, xpath=//chart

La URL en sí se ve de la siguiente manera:

http://localhost/c841/cgi-bin/cognos.cgi/rds/reportData/report/iE0CDFEF149F8408F96F1C27DCFFA6BCB?fmt=layoutDataXML&xpath=//chart

El Listado 1 muestra el LDX resultante.

Listado 1. LDX resultante de la llamada REST de muestra
<filterResultSet
                xmlns="http://www.ibm.com/xmlns/prod/cognos/layoutData/200904">
                <filterResult>
                <filterType>XPATH</filterType>
                <filterValue>//chart</filterValue>
                <reportElement> <chart> <palette>
                <paletteItem> <pattern>
                <type>ePatternSolid</type> <fgColor>
                <red>51</red>
                <green>51</green> . . . </reportElement>
                </filterResult> </filterResultSet>

Ejemplo REST 2:

Este ejemplo accede a datos del mismo informe usado en el primer ejemplo. Devuelve un único gráfico del informe en formato de fragmento HTML.

Para construir la URL de ejemplo se usaron los siguientes parámetros:

  • Tipo de recurso: reportData
  • Tipo de fuente: report
  • ID de recurso: ID de almacenamiento de informe; por ejemplo, iE0CDFEF149F8408F96F1C27DCFFA6BCB
  • Opciones: fmt=HTMLFragment, selection=Chart1

La URL en sí se ve de la siguiente manera:

http://localhost/c841/cgi-bin/cognos.cgi/rds/reportData/report/iE0CDFEF149F8408F96F1C27DCFFA6BCB?fmt=HTMLFragment&selection=Chart1

La Figura 3 muestra el gráfico resultante generado a partir del fragmento HTML devuelto.

Figura 3. Gráfico generado con IBM Cognos Mashup Service
Gráfico generado con IBM Cognos Mashup Service

Antes de poder realizar esta operación, el usuario debe autenticarse en IBM Cognos 8. Un método de autenticación es usar el método de inicio de sesión del servicio de autenticación de CMS descripto en la Guía del desarrollador de Mashup Services (ver la sección de Recursospara saber dónde encontrar la guía).

Ejemplo REST 3:

Este ejemplo muestra cómo ejecutar un informe en formato HTML que devuelve un máximo de tres filas de datos en cada página.

Para construir la URL de ejemplo se usaron los siguientes parámetros:

  • Tipo de recurso: reportData
  • Tipo de fuente: report
  • ID de recurso: ID de almacenamiento de informe; por ejemplo, i6243D3E1A36A4E0FAF9D90652C171FC2
  • Opciones: fmt=HTML, selection=List1, rowLimit=3

La URL propiamente dicha se visualiza de la siguiente manera:

http://localhost/c841/cgi-bin/cognos.cgi/rds/reportData/report/i6243D3E1A36A4E0FAF9D90652C171FC2?fmt=HTML&selection=List1&rowLimit=3

La Figura 4 muestra la tabla resultante generada a partir de la HTML devuelta.

Figura 4. Datos de salida limitados en formato HTML usando IBM Cognos Mashup Service
Datos de salida limitados en formato HTML usando IBM Cognos Mashup Service

Interfaz SOAP

La Tabla 3 muestra algunos de los métodos genéricos de la interfaz API SOAP.

Tabla 3. Métodos SOAP
MétodoDescripción
drillUse este método secundario para la obtención de detalles ascendente/descendente en una sesión de informe existente.
getOutputUse este método para recuperar los datos de salida de un informe.
getPromptAnswersUse este método luego de una solicitud getPromptPage para recuperar las respuestas asociadas con un página de aviso.
getPromptContentUse este método para recuperar el contenido de un informe.
getReportDataUse este método para recuperar el contenido de un informe en un formato específico.

Para obtener más información, incluso sobre opciones adicionales, consulte la Guía del desarrollador de Mashup Services (ver la sección de Recursos para saber dónde encontrar la guía).

Ejemplo SOAP usando una API Java:

Este ejemplo muestra cómo extraer una lista que accede a todos los elementos de información de un informe que incluye una lista y un gráfico.

Código Java de muestra
ReportDataServicePortProxy proxy = new ReportDataServicePortProxy();
  //The endpoint will be the gateway URL for your server
  proxy.setEndpoint(url);
  
  ReportDataServicePort mashupService = proxy.getReportDataServicePort();
  
  GetReportDataRequest request = new GetReportDataRequest();
  //This sets the cm searchPath as the source of the report, you 
  //could alternatively use the storeId
  request.setSourceID("/content/folder[@name='Samples']/folder[@name='Models']
  /package[@name='GO Data Warehouse (analysis)']/folder[@name='Query Studio
  Report Samples']/query[@name='Returns by Product Type']");
  
  //This identifies that the sourceID refers to a CM search path
  request.setSourceType(SourceTypeEnum.searchPath);
  //This creates an object id filter to only return the List1 element, 
  OBJECT_ID is the type of filter that
  //filters based on element id.
  Filter[] filters = {new Filter("List1", FilterTypeEnum.OBJECT_ID, null)};
  request.setFilters(filters);
  
  GetOutputResponse response = mashupService.getReportData(request);
  GetOutputRequest outputRequest = new GetOutputRequest();
  
  /*
  * This loop is necessary when running asynchronously
  */
  while(response.getSession().getStatus() == SessionTypeStatus.working)
  {
  outputRequest.setSession(response.getSession());
  response = mashupService.getOutput(outputRequest);
  }
  
  /*
  * This block of code goes through the list contents and outputs them to the console
  */
  ListFrame list1 = response.getOutput().getLDXOutput()
  .getFilterResultSet().getFilterResult()[0]
  .getReportElement()[0].getLst();
  Row[] rows = list1.getGroup().getRow();
  
  System.out.println();
  System.out.print("Product type");
  int spaceOfCell=25-("Product type".length());
  for (int n=0;n<spaceOfCell;n++)
    {	System.out.print(" ");}
    
    System.out.print("Base product");
    spaceOfCell=35-("Base product".length());
    for (int n=0;n<spaceOfCell;n++)
    {	System.out.print(" ");}
    
    System.out.print("Lost revenue");
    spaceOfCell=20-("Lost revenue".length());
    for (int n=0;n<spaceOfCell;n++)
      {	System.out.print(" ");}
      
      System.out.println();
      System.out.println();
      
      for(int i = 0; i < rows.length; i++)
      {
      Cell[] cells = rows[i].getCell();
      
      System.out.print(cells[0].getItem(0).getTxt().getFmtVal());
      spaceOfCell=25-(cells[0].getItem(0).getTxt().getFmtVal().length());
      for(int j=0;j<spaceOfCell;j++)
        {   System.out.print(" ");}
        
        System.out.print(cells[1].getItem(0).getTxt().getFmtVal());
        spaceOfCell=35-cells[1].getItem(0).getTxt().getFmtVal().length();
        for(int j=0;j<spaceOfCell;j++)
        {  	System.out.print(" ");}
        
        System.out.print(cells[5].getItem(0).getTxt().getFmtVal());
        spaceOfCell=20-cells[5].getItem(0).getTxt().getFmtVal().length();
        for(int j=0;j<spaceOfCell;j++)
          {   System.out.print(" ");}
          
          System.out.println();
          }

La Figura 5 muestra un ejemplo de cómo se verían los datos de salida generados por el anterior código de muestra:

Figura 5. Resultados del ejemplo Java
Resultados del ejemplo Java

Aplicaciones de muestra

Actualmente, CMS incluye una gran variedad de muestras. Las muestras se instalan de manera predeterminada como parte de IBM Cognos Software Development Kit.

Las muestras REST están escritas en HTML y JavaScript. Estas muestras pueden ejecutarse desde un servidor web y están instaladas en el siguiente directorio:

<c8_install>/webcontent/samples/sdk/cms

Las muestras de API SOAP están escritas en C# y Java. Estas muestras están instaladas en el siguiente directorio:

<c8_install>/sdk/cms

Para obtener más información acerca de las muestras, consulte la Guía del desarrollador de Mashup Services (ver la sección de Recursos para saber dónde encontrar la guía).

La Figura 6 muestra una captura de pantalla del menú principal de las muestras JavaScript para darle una idea de lo que contiene cada una. Las muestras no deben considerarse aplicaciones de usuario final ya que se diseñaron a sólo fin de ejemplificar lo que se puede lograr con CMS.

Figura 6. Programas de muestra
Programas de muestra

Resumen

Gracias por su interés en este artículo introductorio de IBM Cognos Mashup Services. El propósito de este artículo fue brindarle una idea de lo que puede lograr con CMS y de cómo realizar algunas tareas básicas usando dos interfaces diferentes.

Recursos

Aprender

  • La Guía del desarrollador de Mashup Services viene incluida en la instalación del software IBM Cognos. Luego de instalar Cognos, encontrará la versión en inglés de la guía en el directorio:
    IBM Cognos installation \webcontent\documentation\en\dg_cms.pdf
  • "IBM Cognos Mashup Service Product description and demo"
  • "IBM Cognos SDK Validation Tool" (developerWorks, Agosto de 2008), proporciona información acerca de la herramienta de validación Cognos SDK, la cual puede usarse para ejecutar una verificación de validación completa de todos los informes del Almacén de Contenidos.

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=Information mgmt
ArticleID=964606
ArticleTitle=Introducción a IBM Cognos Mashup Service
publish-date=07292011