Cómo configurar la opción Write back en OBIEE 11g

Por Edelweiss Kammermann
Publicado en Febrero 2014

La opción de Write Back le permite al usuario actualizar datos desde OBIEE a la base de datos. Por supuesto que esta característica no es recomendable para que sea accesible a todos los usuarios en forma irrestricta, pero hay casos en que es realmente muy útil. Un par de ejemplos de uso puede ser cuando se quiere actualizar código que es sólo de OBIEE (no se encuentra en ninguna otra fuente de datos) o también como truco para crear escenarios de “what-if”.

La configuración requiere de varios pasos los que incluye modificar el repositorio y archivos de configuración de OBIEE, crear templates y configurar los permisos en OBIEE y en los campos dentro de los Análisis.

En el Repositorio:

1) En la Capa Física, seleccionar la tabla que se quiere actualizar y en la ventana de propiedades ir al tab General, y desmarcar la opción “Cacheable”, ya que la idea es que el usuario vea inmediatamente los cambios que realiza.

2) En la Capa de Negocio, abrir la ventana de propiedades de cada una de las columnas lógicas que se van a poder actualizar; ir al tab General y marcar la checkbox “Writeable”

3) En la Capa de Presentación hay que darle permisos de escritura a cada una de las columnas de Presentación a los roles correspondientes que van a poder realizar esta tarea.

4) En el menú principal del Repositorio, ir a la opción Manage y luego Identity, para darle permiso a los roles pertinentes de Execute Direct Database

En Archivos de Configuración:

5) Hay que agregar al archivo instanceconfig.xml que se encuentra en el directorio \instances\instance1\config\OracleBIPresentationServicesComponent\coreapplication_obips1, el elemento LightWriteback para que se habilite la opción de Write Back. Este elemento tiene que estar dentro de los tags de ServerInstance.

<serverinstance>
        <lightwriteback>true</lightwriteback>
    </serverinstance>

Crear el template para Write Back:

6) El template de Write Back es un archivo xml que le dice a OBIEE como insertar o hacer update de los campos que queremos y cuáles son los valores que tiene que asociar entre los campos que se ven en el Análisis y los campos de la tabla. Este archivo xml se puede llamar de cualquier manera y tiene que estar ubicado en el directorio: instances/instance/bifoundation/OracleBIPresentationServicesComponent/coreapplication_obipsn/analyticsRes/customMessages. En el caso que la carpeta customMessages no exista hay que crearla. Un ejemplo de template es:

<!--?xml version="1.0" encoding="utf-8" ?-->
<webmessagetables xmlns:sawm="com.siebel.analytics.web/message/v1">
<webmessagetable lang="en-us" system="WriteBack" table="Messages">
   <webmessage name="UpdateCountryName">
      <xml>
         <writeback connectionpool="Conn Pool HR">
          <update> UPDATE Countries SET country_name='@2' WHERE country_id='@1' </update>
         </writeback>
      </xml>
   </webmessage>
</webmessagetable>
</webmessagetables>

En este ejemplo el nombre del template es UpdateCountryName. Este nombre lo tenemos que usar luego en OBIEE al crear nuestro Análisis. Los valores @1,@2 representan los campos dentro de la consulta en el Análisis que se encuentran en la 1er y 2da posición. También se puede obtener el id del campo, una vez que se tiene realizada la consulta en OBIEE, yendo al tab de Advanced y viendo que número representa a que campo. En el ejemplo que sigue vemos que el campo Country Name tiene el ID c8d5a34b00800c06c. Para usar esta nomenclatura en vez de @1 usaríamos @{c8d5a34b00800c06c}

Luego de esto reiniciamos los servicios de OBIEE desde la consola del sistema operativo o desde la consola de Enterprise Manager.

Permisos en OBIEE:

7) En la parte de Administración de OBIEE, en Manage Privileges, tenemos que dar permisos a los roles correspondientes para que los usuarios que tengan dichos roles puedan utilizar esta característica.

Creando el Análisis:

8) Al crear el Análisis, seleccionamos las columnas y para cada una de las que queremos que se puedan escribir, hay que habilitar la opción Write Back

9) Luego hay que ir al tab de Resultados, ir a editar la vista Tabla y seleccionar las propiedades de la tabla, donde tenemos que colocar el nombre del template (en nuestro ejemplo: UpdateCountryName):

La pantalla anterior tiene varias opciones, la primera es usar Toggle Table Mode, que hace que primero se vea como tabla y después como pantalla para modificar. Si desmarcamos esta opción vemos la pantalla con los campos listos a modificarse, cómo se muestra en la segunda imagen después de ésta. Otras opciones son poder personalizar el nombre de los botones que aparecen así como decidir en donde queremos que se ubiquen dichos botones.

Luego de salvar nuestra consulta, la pantalla de resultados nos queda de la siguiente manera:

Cuando apretamos el botón Update podemos modificar el contenido del campo que queremos modificar, en este caso Country_Name.

Actualizamos el campo con el valor que queremos, por ejemplo cambiamos el valor Japan por Japon, apretamos el botón Apply, y luego Done (o sólo el botón Done si hago una modificación sola) y quedan los cambios registrados.

Como se ve, la configuración de write back en OBIEE no es extremadamente compleja pero requiere determinado orden en los varios pasos a seguir y en la documentación está bastante dispersa esta información. Igualmente y cómo sucede en toda configuración pueden darse errores. Una lista de los errores más frecuentes y sus causas posibles es la siguiente:

1) La checkbox de Write Back en las columnas del Análisis no permite habilitarse. Esto sucede cuando en el repositorio no le dimos a ese usuario o rol los permisos de write correspondientes.

2) Cuando seleccionamos las propiedades de la tabla en el Análisis no deja marcar la checkbox de Enable Write Back. Esto es porque no se habilitó primero la checkbox de Write Back para cada una de las columnas del Análisis.

3) El o los botones de Update, Apply, etc., no aparecen. Esto es porque en la Administración de OBIEE, en Gestionar Privilegios, no se le dio el privilegio Write Back to Database (Anotar en Base de Datos) a Authenticated User.

4) Al apretar el botón Apply una vez que hicimos el cambio aparece un error como se muestra a continuación ( dependiendo si tienen seteado el lenguaje en Inglés o Español):

Esto sucede porque no encuentra el archivo .xml que contiene el template. Revisar que efectivamente el archivo esté en el directorio instances/instance/bifoundation/OracleBIPresentationServicesComponent/coreapplication_obipsn/analyticsRes/customMessages y que efectivamente la extensión del archivo sea .xml También puede pasar que el nombre que se haya puesto en el Análisis en el nombre del template no sea el mismo que está definido en el xml.

5) Al apretar el botón Apply aparece un error del estilo:

Esto sucede porque la consulta tiene algún error que puede ser de tipo de dato o de estructura. En el caso de tipo de dato, si el dato a actualizar, insertar o comparar en un where es de tipo varchar2 o char tiene que ponerse entre comillas simples. Ejemplo= set country_name=’@2’. En el caso de error de estructura revisar la sentencia udpdate o insert.

Escrito por Edelweiss Kammermann. Experta en BI y BPM con más de 17 años de experiencia en consultoria y gerenciamiento de proyectos en tecnología Oracle. Ha trabajado en proyectos en distintos paises de Latino América, especialmente en Uruguay, Bolivia, Panama y Honduras. Edelweiss es oradora frecuente en conferencias internaciones y es co-fundadora y vice presidente del Grupo de Usuarios de Oracle Uruguay (UYOOUG)