lunes, 31 de mayo de 2010

Tip: Excepción BAM-00404 Authentication failed. User is marked inactive


Hace unos días surgió la necesidad de importar los usuarios de un Active Directory (AD) hacia el Security Provider de Weblogic. Actividad que resulto relativamente fácil.
El problema surgió cuando traté de iniciar sesión como administrador en Oracle BAM, ya que me enviaba la excepción BAM-00404 Authentication failed. User is marked inactive. La solución es sencilla, pero ay ciertos aspectos de weblogic que hay que considerar:
  1. La ventana de generalidades del realm "my realm" muestra solamente 1000 usuarios (sin importar si los muestras 10, 100 o 1000 por pantalla) de modo que el resto de usuario quedan "ocultos", aunque de primera instancia da la impresión de que fueron sobreescritos, es suficiente con hacer una busqueda del usuario para darnos cuenta que sigue ahí.
  2. Cosa curiosa fue descrubrir que la única herramienta para la que quedó "inactivo" mi usuario administrador fue para BAM, a pesar de tratarse de exactamente el mismo usuario para el resto de consolas (EM, SOA). Y al probar los demas usuarios con otros roles para BAM, resulta que también quedarón inactivos, lo que me hizó pensar que este problema es solamente para BAM.

Para resolver este problema fue suficiente con crear un nuevo usuario administrador para BAM (también funciona si eliminas el actual usuario administrador y lo vuelves a crear con el mismo nombre. Yo no hice eso, ya que mi usuario administrador era común entre el resto de herramientas y en las demás estaba funcionandco correctamente). Hay que asignar este usuario recien creado a los grupos Administrators y OracleSystemUser. Y por último en el Enterprise Manager debemos asignar este usuario al rol de Administrator. No es necesario reiniciar los servidores, con guardar y activar los cambios basta.

A partir de ese momento puedes iniciar sesión en BAM con los provilegios de administrador usando el nuevo usuario y contraseña.

WaLeX

jueves, 20 de mayo de 2010

Como crear correlaciones en Oracle BPEL 11g

Recientemente realicé un proceso en Oracle BPEL, que después de enviar un archivo a ODI, necesitaba una respuesta por parte de ODI sobre el mismo archivo, pero debía estar seguro de que la respuesta de ODI correspondía a el archivo que BPEL le envió, para resolver esto, utilicé una correlación entre el nombre del archivo creado/enviado y el nombre del archivo de la confirmación enviada por ODI.

Asumimos que ya se esta trabajando sobre un proceso BPEL sincrono:
Primero se crea un File Adapter que tenga como respuesta el nombre del archivo creado, en mi caso, en un servidor sobre una carpeta que será leida por ODI. Para lograr esto, puedes leer la entrada "Modificar el File Adapter de BPEL para regresar el nombre del archivo creado".

Una vez hecho esto, hay que crear una correlación en la actividad Invoke del File Adapter, dando click sobre la pestaña "Correlations" y en el icono Create... Le damos un nombre a la correlación, y damos click en el Botón Add, para agregar una nueva Propiedad (Property Alias), que será justamente el campo o variable que queremos comparar con la entrada esperada de ODI, es decir el nombre del Archivo. Para esto seleccionamos dicho campo y en la parte de abajo de la ventana damos click en crear propiedad (el signo +) y después en OK.



Presionamos Ok, en las siguientes dos ventanas para regresar a la de configuración del Invoke, ahora podemos ver creada la nueva correlación, para finalizar la primera mitad, en la columna Initiate debemso cambiar el default "No" por un "Yes", para que la correlación se inicie en este punto.



miércoles, 12 de mayo de 2010

Modificar el File Adapter de BPEL para regresar el nombre del archivo creado

En ocasiones, cuando utilizamos el File Adapter en BPEL para escribir un archivo, surge la necesidad de obtener el nombre del dicho archivo. Por default, el File Adapter de Oracle BPEL que se genera utilizando JDeveloper, no genera ninguna variable de salida.

Para obtener esta funcionalidad del adaptador, es necesario modificar manualmente el archivo WSDL correspondiente al File Adapter para que pueda regresar los datos del archivo que se ha creado.

Como comentaba, la operación Write WSDL es de un solo sentido:




Lo que vamos a hacer es modificar el archivo WSDL correspondiente al adaptador para hacerlo de dos sentidos. Además, se debe importar el esquema "fileread.xsd". Necesitamos copiar este archivo desde aquí a la carpeta xsd de nuestro composite.

El contenido de fileread.xsd es:




Y para terminar, las modificaciones a realizar al WSDL estan resaltadas en rojo:




Aquí puedes descargar un ejemplo del resultado final del WSDL.


El Invoke en BPEL debe lucir como sigue:





WaLeX

Fuente | Java Oracle Blog