Hace unos dias estaba desarrollando unos servicios en
BPEL utilizando JDeveloper 11.1.1.5 para un ambiente SOA 11.1.1.5 en un sistema
operativo AIX.
Uno de las tablas
legadas en un AS400 en el cual el cliente necesitaba realizar
inserciones, recibia para dos campos distintos un mismo valor, es
decir, el mismo valor era enviado a dos campos de la tabla legada.
Se fabricó un servicio BPEL utilizando un DBAdapter. Se
utilizó la característidca "Pure SQL" con la que cuenta el DBAdapter en el que
ingresando una tarea SQL , el motor genera automáticamente el XSD del
"Insert". Se generó la siguiente sentencia:
Insert into tabla values (1,1, #parametro1, #parametro2, #parametro3, #parametro4, #parametro5,
#parametro6, #parametro7, #parametro8, #parametro9, #parametro10, #parametro11,
#parametro12, #parametro13, #parametro14, #parametro15, #parametro1)
Vean que el #parametro1
fué enviado dos veces.
El XSD fué generado exitosamente por JDeveloper. En lo
personal, pensé que el XSD se generaría con 15 parametros ya que el parametro1
es utilizado dos veces. Consideré que el motor de JDeveloper vería este
detalle. Sin embargo, mi sorpresa fué cuando el XSD generado por JDeveloper ¡¡tenía
dos campos con el mismo nombre (parametro1) y con el mismo tipo de dato
(integer)!!
Intenté utilizar el "segundo" #parametro1, en
un elemento ASSIGN y después en un elemento TRANSFORM, tal como se muestra en
la siguiente imagen:
Mi sorpresa fué
que el "segundo" #parametro1 ¡¡no podía ser utilizado!! Generaba el
siguiente error que se muestra en la imagen y después el mapeo era
redireccionado al "primer" #parametro1!.
Conceptualmente, el motor de BPEL en JDeveloper no
debería dejar generar dos campos del mismo nombre con el mismo tipo de dato en
el mismo XSD. Y tal como lo vimos,
aunque dos campos fuesen permitidos en el mismo XSD , el segundo, no puede ser
utilizado.
Entonces preguntó a mis estimados lectores:
¿Es este
comportamiento un Bug?


