<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:blogger='http://schemas.google.com/blogger/2008' xmlns:georss='http://www.georss.org/georss' xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-8445877885055660465</id><updated>2024-10-07T00:01:35.121-05:00</updated><category term="bpm"/><category term="studio"/><category term="bam"/><category term="bpel"/><category term="bus"/><category term="chart"/><category term="dashboard"/><category term="formularios"/><category term="soa"/><title type='text'>OD Tech - Colombia</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://od-tech.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8445877885055660465/posts/default?redirect=false'/><link rel='alternate' type='text/html' href='http://od-tech.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>John J. Bocachica</name><uri>http://www.blogger.com/profile/05173460945632553184</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://bp2.blogger.com/_hpD3dFwMIwA/R9bYn9MbUPI/AAAAAAAAA_s/4nygb2QlOak/S220/boca+linchtestein+.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>16</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-8445877885055660465.post-6313422308171259593</id><published>2009-03-04T20:47:00.001-05:00</published><updated>2009-03-04T20:47:17.015-05:00</updated><title type='text'>Reglas de negocio dinámicas en BPM Studio</title><content type='html'>&lt;p align=&quot;justify&quot;&gt;Una regla de negocio dinámica permite evaluar una o más condiciones para tomar una decisión de manera automática en el proceso.&lt;/p&gt;  &lt;p align=&quot;justify&quot;&gt;Para crear una nueva regla de negocio debemos primero crear una variable que aplique a todo el proyecto, para esto vamos a la pestaña de variables de proyecto y hacemos click en el botón de +, el cual nos permite agregar las variables. En este ejemplo vamos a crear las variables edad del cliente y monto del producto seleccionado, por cada variable debemos tener su nombre, tipo de dato y el indicador de negocio (Cuando la variable es un atributo y no un número es una dimensión).&lt;/p&gt;  &lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEinYC19Dj0X0tAgh8ikKch0Fruggvp-msC3AVUudLA7K4xs-_NKf2l5mBSBeBpDWXum1SvdG5a88wuWdogZgm2MF8NEW9xJVt2noabksYlekPNRzTfXNmu2VNFYLc5xRm4SsH3O21ubY12A/s1600-h/image%5B7%5D.png&quot;&gt;&lt;img title=&quot;image&quot; style=&quot;border-right: 0px; border-top: 0px; display: inline; border-left: 0px; border-bottom: 0px&quot; height=&quot;149&quot; alt=&quot;image&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi94Ht53QLUC3PzoVVamYjsb8hjiUcvmTq0aw1t3Qx6tQuPZQ97UBIiVGmR6NAM2ud0k5GPt36YWPJpVgc3ufybCW28RyIP9IqCOYu4qek3jiP17GkbgqCjCqr5Anh4sAhOBC0_mw-NJmqS/?imgmax=800&quot; width=&quot;244&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p align=&quot;justify&quot;&gt;Ahora vamos a inicializar las variables del proceso, es importante que las variables del proyecto que acabamos de crear queden inicializadas con algún valor. Para esto hacemos doble click en la actividad Begin y vamos agregando las variables con su respectivo argumento.&lt;/p&gt;  &lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh4lAIZczTK-KjO8J-wjno5ayg2gs5MijYgVH_zxq6qv4gauTnBqzokcgu79Oz73Yr9grN1k1Sfco0oYOLeajEFk6D0o_Sqr3crF59d_tKKznltJsok8AsxIExqWHS89FE8L2-Gpx9qBBi7/s1600-h/image%5B39%5D.png&quot;&gt;&lt;img title=&quot;image&quot; style=&quot;border-right: 0px; border-top: 0px; display: inline; border-left: 0px; border-bottom: 0px&quot; height=&quot;153&quot; alt=&quot;image&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhVJFFcan_hyphenhyphenG7mUTDrnP7QS2wXpnnVNWKtT9AP2zcZmIrsON3fsX8JUPyVwl0LDS2HzfLe6zyK7FeiPnyhyNKUA542BUDbiUXAck9viprpYpDgo6_3vQxjnqF6cyUM3F1-a8lrX9vxOPcu/?imgmax=800&quot; width=&quot;244&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p align=&quot;justify&quot;&gt;En el proceso tenemos dos actividades automáticas que se encargan de asignarle un valor a la validación del crédito (de aprobación o rechazo) según la decisión que se tome por la regla de negocio que vamos a crear. Esta regla de negocio se ejecuta en el momento en el que el cliente hace submit a su solicitud de crédito, para poder hacer esto vamos a crear una transición de regla de negocio desde la actividad de Begin hasta la actividad que se encarga de setear la variable de validación, esto lo hacemos dando click derecho sobre la actividad de Begin y seleccionando “Add business rule transition” y luego arrastrando la flecha hacia la actividad que debería realizarse en caso de que la regla sea respetada, para este ejemplo la regla va hacia la actividad “setearValidacionAprobar”. Le ponemos de nombre a la transicion “DatosValidados”, hacemos click en el tab properties, damos click en New y a la&amp;#160; regla le ponemos el nombre de “Validacion Datos Basicos”&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgbRdTN48Wz-ZSPcw3DGK2Z9UWyujNNbRexOUM1Gj3CaV6aGJ6P27FgBTmCBaLCuP7ori7_i7Ry9lRxM-ZpKnoGh95egVAnQPFfqWtOrH4xVoO7bJ2-LU55bcUmQoVHVblq6ssXoqmGNtov/s1600-h/image%5B18%5D.png&quot;&gt;&lt;img title=&quot;image&quot; style=&quot;border-right: 0px; border-top: 0px; display: inline; border-left: 0px; border-bottom: 0px&quot; height=&quot;244&quot; alt=&quot;image&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjy3sHwwCso9XuSeo8zguK5kcjlzH17KmfBrUIzrDEBvPss21UPcJ9KPSF1Pz26AP-TjFjvpOnr8qBmcguWt2i6zfLSMH-BTC8Ep73PqzIso84zw27Cy-1UdXVMR5P6bwQCMS3ZhllHeT2H/?imgmax=800&quot; width=&quot;201&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p align=&quot;justify&quot;&gt;Ahora debemos darle la lógica de funcionamiento a esa regla. Hacemos click en el botón de Business Rule &lt;/p&gt;  &lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiGDDJUVu2E4EAQFSdkrXg-rvdM5iebd5pY7psKqrAi96KjJXqLRB6nSerhTU02W2Vd639FHqmb7i-xq1pReKOfzbYRvXkT81DXR5rqjNYdv3GcEzY08eME2_TIF7QpGu9Cue8GC7mbYWaH/s1600-h/image%5B21%5D.png&quot;&gt;&lt;img title=&quot;image&quot; style=&quot;border-right: 0px; border-top: 0px; display: inline; border-left: 0px; border-bottom: 0px&quot; height=&quot;159&quot; alt=&quot;image&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiJRhDVl4w1WGVVfRA2oBG270iVcBnfN75qYxSKAsuH54KAw-7hkpdr6JkUeIbcd3qbQQzneEld6BZ5ahNPT1mDh-hABtjUoODejpob4wM2HSF28-D5F60TOAl5jFF_R2pewC1gSkooFkY4/?imgmax=800&quot; width=&quot;235&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p align=&quot;justify&quot;&gt;Doble click sobre la regla que acabamos de crear y luego click en Add, aquí es donde podemos ingresar las reglas con que queremos que funcione la regla&lt;/p&gt;  &lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhhEajxLPXQZOMJhIKYl88YX7w1XLDnRNeXv1g15wOK8TJekAtOEgkc7b1nwZLzKXhthv0VkQwXFzX7pCTA64HxL8R495fMNy9AEquCeBC6MsksiB2FkGkYpd7rOT9QYxgLx8if3SfNgVEo/s1600-h/image%5B32%5D.png&quot;&gt;&lt;img title=&quot;image&quot; style=&quot;border-right: 0px; border-top: 0px; display: inline; border-left: 0px; border-bottom: 0px&quot; height=&quot;158&quot; alt=&quot;image&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj1iqpOQSh0PvruXo_SK5HttEnekMDWVE9xLaEuxRvQd9O1xesGswiSSFTyste9yKlXQH_7ns4P7rkcyJOV8TA1enPRzyWCeLKqad_7mapIG52C_Dwjn3Acf417HMGlsPQS80UJSzLtjKnD/?imgmax=800&quot; width=&quot;244&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Y ahora, gracias a nuestra regla, tenemos como filtro inicial para la aprobación del producto solicitado que el cliente tenga más de 25 años.&lt;/p&gt;  </content><link rel='replies' type='application/atom+xml' href='http://od-tech.blogspot.com/feeds/6313422308171259593/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/8445877885055660465/6313422308171259593' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8445877885055660465/posts/default/6313422308171259593'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8445877885055660465/posts/default/6313422308171259593'/><link rel='alternate' type='text/html' href='http://od-tech.blogspot.com/2009/03/reglas-de-negocio-dinamicas-en-bpm.html' title='Reglas de negocio dinámicas en BPM Studio'/><author><name>nad</name><uri>http://www.blogger.com/profile/15575210485038047991</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi94Ht53QLUC3PzoVVamYjsb8hjiUcvmTq0aw1t3Qx6tQuPZQ97UBIiVGmR6NAM2ud0k5GPt36YWPJpVgc3ufybCW28RyIP9IqCOYu4qek3jiP17GkbgqCjCqr5Anh4sAhOBC0_mw-NJmqS/s72-c?imgmax=800" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8445877885055660465.post-5243299921125460953</id><published>2009-03-04T19:12:00.002-05:00</published><updated>2009-03-06T18:31:22.179-05:00</updated><title type='text'>Simulaciones en BPM Studio</title><content type='html'>&lt;p align=&quot;justify&quot;&gt;Luego de tener el proceso funcionando, es necesario ver cómo se comporta para poder detectar problemas ocasionados por un cuello de botella o cualquier otro problema en el runtime. BPM permite hacer simulaciones sobre el comportamiento de los procesos que nos ayudan a optimizar los procesos desarrollados.&lt;/p&gt;  &lt;p align=&quot;justify&quot;&gt;Lo primero que haremos es cambiarnos al modo de “analista de negocios” el cual nos permite tener un mejor manejo del BPM para los fines de simulación.&lt;/p&gt;  &lt;p align=&quot;justify&quot;&gt;Ahora vamos a crear un modelo de simulación, el cual se basa en las actividades del proceso y en donde podemos definir la duración, los recursos, el costo, el manejo de información en cola y las excepciones que pueden ocurrir en cada actividad. Para hacer esto seleccionamos el proceso a simular, click derecho y seleccionar “New Process Simulation Model”.&lt;/p&gt;  &lt;p&gt;&lt;img title=&quot;image&quot; style=&quot;border: 0px none ; display: block; float: none; margin-left: auto; margin-right: auto;&quot; alt=&quot;image&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgvj-AdR2SHmgM7wGLXrXdUwqkHQl-riPefawOdv6InLpsLkZpXO5vHNOmCrGqcB5I5Ro4LbjG6P3i-ctFysW64Xeo_Yn5FAzKO2r4pv3_96u89-p7JR4McEG53G0eSGA55v_cOPQ2kwUZ9/?imgmax=800&quot; width=&quot;240&quot; border=&quot;0&quot; height=&quot;144&quot; /&gt;&lt;/p&gt;  &lt;p align=&quot;justify&quot;&gt;Para este ejemplo vamos a simular 100 instancias del proceso con un tipo de distribución normal (podemos seleccionar constante, uniforme, exponencial o real de acuerdo al comportamiento que queramos en la simulación). Aquí estamos introduciendo los datos de prueba, pero podríamos alimentar este modelo de datos reales luego de tener el proceso corriendo, para lograr lo que se llama &lt;em&gt;close loop simulation.&lt;/em&gt;&lt;/p&gt;  &lt;p align=&quot;justify&quot;&gt;Damos click derecho en Simulations y seleccionamos “New Simulation”, es aquí donde le asignamos a la simulación un modelo de simulación, los recursos que van a participar y sus características dentro del proceso (nombre, costo, eficiencia, capacidad, disponibilidad).&lt;/p&gt;  &lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhwrbPTPfbjmqrQkPWlYqej4ySMhTDwJAgL1AWw3dmCsFb1U1wSV25nMm_JFkM2JLw_i6XnsocggN5VkQAuCIScOBbm0kRrzh2w-pabAIQD39FBLzCE3qt62WkjpU-qxxSjxcgj_Qck0NPV/s1600-h/image%5B7%5D.png&quot;&gt;&lt;img title=&quot;image&quot; style=&quot;border: 0px none ; display: block; float: none; margin-left: auto; margin-right: auto;&quot; alt=&quot;image&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiRrRnBLxDYMZy6iNfZYJp1-EraNFwOv7K-BLASQyRrA4HTP0wdbcahJAJDrINyRr_DX3IuBdFrqh26MBzHIdh7uvYKo0IhrPiucvBK39HogdyvOx7T48zTb4HPn-pUE16Ot-zTtPbMQ57H/?imgmax=800&quot; width=&quot;240&quot; border=&quot;0&quot; height=&quot;143&quot; /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p align=&quot;justify&quot;&gt;Y ahora a correr la simulación, para esto hacemos click en Window-&amp;gt;Show View-&amp;gt;Simulation y luego click en el botón de play&lt;/p&gt;  &lt;p&gt;&lt;img title=&quot;image&quot; style=&quot;border: 0px none ; display: block; float: none; margin-left: auto; margin-right: auto;&quot; alt=&quot;image&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjzwjUxXiRST6c-ixZE_MA3AWUwQqnMGqdNzOnIC2sHnvEH5ZZRKur2o0LuSAuA1HMeWbFJWzT5xHo0EMsd6gt8LjsyGHjwT7ctiOpYGbFbbqMDbqtADj0HVoBdhRynUWTyAJl075p7M_lb/?imgmax=800&quot; width=&quot;240&quot; border=&quot;0&quot; height=&quot;144&quot; /&gt;&lt;/p&gt;  &lt;p align=&quot;justify&quot;&gt;Durante la simulación podemos modificar la cantidad de recursos disponibles por actividad con los botones de + y – que hay al lado de las actividades. Para poder ver el resultado final, hacemos fast forward  y empezamos a analizar la información.&lt;/p&gt;  &lt;p align=&quot;justify&quot;&gt;Los resultados de la simulación los podemos mapear por actividades, recursos, categorias e indicadores, los indicadores pueden ser el costo, el tiempo o el comportamiento de las instancias. También podemos seleccionar el tipo de gráfico que queremos que nos muestre los resultados (barras, tablas, etc) y al final poder generar un reporte que nos ayude a mejorar el proceso.&lt;/p&gt;  &lt;p align=&quot;center&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh4P5SHl-91Q7GzxZh12QGzJkIWb6x5EyWNeK_QfnmcKwdKGsn0JHETArjGzEt0PDnRBoTimLdf_5ja43tFLNerYSOGMmaCLfXj1lEMd0eTA79GMqGeoOVijjrE4AfsdQTU9KkEzzxD2Sz8/s1600-h/image%5B27%5D.png&quot;&gt;&lt;img title=&quot;image&quot; style=&quot;border: 0px none ; display: inline; margin-left: 0px; margin-right: 0px;&quot; alt=&quot;image&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjQIH0fs104HlNMHnR5Pp-UStNW1bI_OnwK2xOut-R0cwnlGQ8L5dKJvBnoFZXTxHkPWSoBToxn_rgWvQumiSwR95kES118VQ85OhnFIuhcmjWfZbiWUFixLtw-7kpmBKCpY6jpXeTkn-zG/?imgmax=800&quot; width=&quot;240&quot; align=&quot;left&quot; border=&quot;0&quot; height=&quot;144&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh5h9JsMNQUg6-vZXTKK3Wu9xwY4L1noPYAAVT5LSkSNeSy4g0OcetZCodWprOLd0G0zL0UOqmjCdUe7AXxe-ugBQhtc-XLEJbnTi6jqNUJ6bcnLKuUvF24RVBPFMNDfduNZi2_k9GKaRo0/s1600-h/image%5B26%5D.png&quot;&gt;&lt;img title=&quot;image&quot; style=&quot;border: 0px none ; display: inline;&quot; alt=&quot;image&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiZkJRjp-GDcXJsTpqz8GYDSt2P3t8Fft4-7ZsCaY9ZZTwvW619vzVb5KR7yGDqFALYFhd3oL-opoCP1NC7CwEneBEs-86TZksadnFlf3Zzj4WMnxHxTaRlnMGq3g0AcbCUZR-bH59FI9eg/?imgmax=800&quot; width=&quot;244&quot; border=&quot;0&quot; height=&quot;150&quot; /&gt;&lt;/a&gt;&lt;/p&gt;</content><link rel='replies' type='application/atom+xml' href='http://od-tech.blogspot.com/feeds/5243299921125460953/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/8445877885055660465/5243299921125460953' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8445877885055660465/posts/default/5243299921125460953'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8445877885055660465/posts/default/5243299921125460953'/><link rel='alternate' type='text/html' href='http://od-tech.blogspot.com/2009/03/simulaciones-en-bpa-studio.html' title='Simulaciones en BPM Studio'/><author><name>nad</name><uri>http://www.blogger.com/profile/15575210485038047991</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgvj-AdR2SHmgM7wGLXrXdUwqkHQl-riPefawOdv6InLpsLkZpXO5vHNOmCrGqcB5I5Ro4LbjG6P3i-ctFysW64Xeo_Yn5FAzKO2r4pv3_96u89-p7JR4McEG53G0eSGA55v_cOPQ2kwUZ9/s72-c?imgmax=800" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8445877885055660465.post-3976096085613289853</id><published>2009-02-27T17:21:00.000-05:00</published><updated>2009-03-05T00:53:18.132-05:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="bpm"/><category scheme="http://www.blogger.com/atom/ns#" term="formularios"/><category scheme="http://www.blogger.com/atom/ns#" term="studio"/><title type='text'>Construcción de formularios en BPM Studio</title><content type='html'>&lt;p align=&quot;justify&quot;&gt;Las actividades de los procesos de negocio pueden tener distintos tipos de comportamientos e implementaciones.&amp;#160; Cuando estas son implementadas a través de interacción humana, es posible definir interfaces de usuario para la ejecución de las mismas.&lt;/p&gt;  &lt;p align=&quot;justify&quot;&gt;En este aspecto existen dos alternativas: una, construir formularios dentro de la herramienta o, dos, apoyarse en tecnologías de presentación Web como JSP / JSF.&amp;#160; Para el ejemplo particular vamos a ver cómo construir formularios utilizando el BPM Studio.&amp;#160; En otra ocasión, explicaremos la creación de formularios con JSP / JSF.&lt;/p&gt;  &lt;p align=&quot;justify&quot;&gt;Todo proceso de negocio contiene unidades de información conocidas como objetos de negocio, las cuales representan los datos que van a ser operados a lo largo del proceso.&amp;#160; Para ello debemos crear un objeto de negocio en el catálogo de elementos de BPM Studio.&lt;/p&gt;  &lt;p align=&quot;justify&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEipZxY8-giQN7DEmnB4zqrEXsil1EMiw3PxY0WmU2U6eiySPwHleNUiQ-pLwLDVhpNCO_be5BDMiwj2tUsChwW0Yeegtswcnq82JZv3Mre38SgWiq3L7uq8PCmLR1hia_pLJqnIlRICgAA/s1600-h/image%5B2%5D.png&quot;&gt;&lt;img title=&quot;image&quot; style=&quot;border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px&quot; height=&quot;166&quot; alt=&quot;image&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhXTr7VHCa6gIhLsGEQuexWq0F0Ex60PzVF_sLdsnA7SbQE6BFebsuxLAoLmKgwnm9UNGibB0txt1q8FoDZXds9SA-woLxfS47pohH5cVY2sFW0m9z8-PxhsheUZFiWpbXTBEOx7iXiSk0/?imgmax=800&quot; width=&quot;244&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p align=&quot;justify&quot;&gt;Una vez creado el objeto de negocio, el paso siguiente es crear los atributos que lo componen.&lt;/p&gt;  &lt;p align=&quot;justify&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhEjzwcryMXPRcDlIlp9WW9Uj9isgJjkEZKfvNvisGqa60WBjGZT-qjIbo4Znshgc4OLde0EA5nQUYly6Ig7cJT9xCUAKKSXakXPBj7PeoRYDh2_WgkJHbJTGehl0TFjUHJjtZ63MIi6j4/s1600-h/image%5B5%5D.png&quot;&gt;&lt;img title=&quot;image&quot; style=&quot;border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px&quot; height=&quot;223&quot; alt=&quot;image&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjRVqeSqtYCy3F0WJxTL8UPeYYsmu9xJoPV2JDehdQh5wJr_AW8Fnr877Ep1aQpUL-C7D9gGdXKXU2FQwUZyzxTMWzEYQ7iPvi4bnThNREXl94ED6DehVdy5lqdWrIKcPG3JTWk-yJQz-o/?imgmax=800&quot; width=&quot;244&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p align=&quot;justify&quot;&gt;Finalizada la creación de atributos, es posible continuar con la creación del formulario.&amp;#160; Para ello se hace clic derecho sobre el objeto de negocio, se selecciona la opción Nuevo y luego Presentación.&amp;#160; Esto inicia el wizard de creación del formulario.&lt;/p&gt;  &lt;p align=&quot;justify&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgTyMdjc7ve-wSBQTDa40vvrKUENNCRvohjsapuLkLEp8z9zDNpQ-1YXy6vS7DAinOqMMTr-KLy2v2ABZfrwxNrJtdQH7ibypLNwU0tFQKEsVGMrZluyxm3ASs0b9zWv-_mDcyrN7MA8uk/s1600-h/image%5B8%5D.png&quot;&gt;&lt;img title=&quot;image&quot; style=&quot;border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px&quot; height=&quot;228&quot; alt=&quot;image&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhHvCPH2XZEu3rC5kTJBBty2oKtRjABDZI221xu0ygDT_rzihdBqkyKwCW8GS1nw5mZo51urcBNX3RU7iH9pHnzwiJgH5_76ZGRwqdffQusBog3mao2cfYDR5_7nzmPUu9B1AL2OnyhDAQ/?imgmax=800&quot; width=&quot;244&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p align=&quot;justify&quot;&gt;En el wizard se establece el nombre del formulario, se deja seleccionada la opción de creación de presentación a partir de objeto BPM y luego se seleccionan los atributos que harán parte del formulario, los cuales corresponden a los atributos del objeto de negocio que creamos anteriormente.&lt;/p&gt;  &lt;p align=&quot;justify&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgdYfcPJN2AM-QTdsu5oXs173Z9qXMIa_wJSubx3YE3X0tZ0jweZmOXXYrvlCkPHVSkqL3Fl4y-djtePv5ru1ivpNhpYtly7qjIRQbHH-nkF5Nh7VTNiz0oJJdPb318_LRudiQQIzbF70U/s1600-h/image%5B11%5D.png&quot;&gt;&lt;img title=&quot;image&quot; style=&quot;border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px&quot; height=&quot;244&quot; alt=&quot;image&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEixp0ZF6sLoa2brag_cXMBZwkmVsAETfJIf2_1xXcOUGbaWIDtg_6-z8f1lFNzQLBtolZxc7av-L9UcK082hg1nCSAQGUwU7onK7HgTwV054eo4d0SX9kGFYVp1k9RVR8s_Jo6XEGSZTIs/?imgmax=800&quot; width=&quot;240&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p align=&quot;justify&quot;&gt;Una vez finalizado el wizard, aparece el formulario con un diseño predeterminado con los campos de acuerdo a los atributos seleccionados.&amp;#160; Aquí se puede editar los campos, cambiar el tipo (texto, lista desplegable, lista de selección, fecha).&lt;/p&gt;  &lt;p align=&quot;justify&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiVNbr_s3O3x4ogcU15D2K8HDJbc96UXRbKF1XSwDcKWt3pIgNukTruNk_yEDG-qAWTseKS4MyXd1i00MJN0-TxjX2mUsqcNre1nlHw8ppW7iDq9KPTamlxmqIW339dI4A4n8eVApkqHHk/s1600-h/image%5B14%5D.png&quot;&gt;&lt;img title=&quot;image&quot; style=&quot;border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px&quot; height=&quot;176&quot; alt=&quot;image&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhDNQFFI4Q8wsFDjSNH5NtvHIiEfgrIE1RkJ2YhXDRN2-AnN3CIdBx-daFtrGYi0383IujeLusUaEma6TJkcn1zHcQg0CUUWxof_VZTCrCae6LR77-v3xOMowKVw4SRD1agxxSprg0qNrQ/?imgmax=800&quot; width=&quot;244&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p align=&quot;justify&quot;&gt;El paso posterior es asociar estos formularios al proceso a través de la creación de flujos de pantalla, donde se define el mapeo de datos de entrada y salida, y se asocian los eventos a los botones del formulario creado.&lt;/p&gt;  &lt;p align=&quot;justify&quot;&gt;Para crear un flujo de pantalla, se debe seleccionar como implantación de una actividad la opción Flujo de Pantalla, y realizar su creación.&amp;#160; En la actividad de flujo de pantalla, se selecciona como tipo de implantación Llamada interactiva de BPM Object y en la opción Usar presentación de BPM Object se selecciona de la lista el formulario que creamos anteriormente.&lt;/p&gt;  &lt;p align=&quot;justify&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiYS-KrshsUz9A66GtMo2YGzzdV4JNX1a8rsIXro-uVre3MeVXCMBKQe4fhaGVQfw7Q5T96XaFr2BsBiVPs2RfVBNwAi5B3Kj9t0f_gWq7K8AdBU6JqC-LiieaPsGutf_mP3DHEEEcAsaA/s1600-h/image%5B17%5D.png&quot;&gt;&lt;img title=&quot;image&quot; style=&quot;border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px&quot; height=&quot;244&quot; alt=&quot;image&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgPeSZjS2chTO6xKQfUXKEMTftu13cI4AVHMsc2lXwVhvhqpn8rD8pOghYejriQZUhtB628ffLeaPc1ebvfnCQt-5WnB7VP_-n8zc6O-YjDSoMR3SDd1gbRqcTGu-D99-cFkUxixQ9oKMQ/?imgmax=800&quot; width=&quot;239&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p align=&quot;justify&quot;&gt;Además se crea el mapeo de datos haciendo clic en la opción Asignaciones de argumentos.&amp;#160; Allí se relaciona para el argumento de salida (out) las variables de instancia action con valor selectedButton == &amp;quot;submit&amp;quot; ? OK : CANCEL y result con valor selectedButton.&lt;/p&gt;  &lt;p align=&quot;justify&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhZZp791EW2zZuVobMTTRKtiJWAI8AHFQ-5CSV-lm-PsJLZsmpIVZDgiXcTeDlN-povv-blLnPfBBss0cOzoo2MGv3c1M6k4K_bZET1YHvjyv7pINgK1eqZN5Z-ElIW0G7tNkZlYL1FHhE/s1600-h/image20.png&quot;&gt;&lt;img title=&quot;image&quot; style=&quot;border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px&quot; height=&quot;150&quot; alt=&quot;image&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgfKFP2NkvndYf6vBW1rx9RDNkHUZ7IIphAYcrHi4FnZSuL1BuWIoRuK4YJ5t5Kpqh8Kbc_Q1xD5v5PypOGUretPrNMPIrstVu4XyI1p5GfVW3kiv-kVDF34yr2iMGmuMR_ILc2U0CbB6g/?imgmax=800&quot; width=&quot;244&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p align=&quot;justify&quot;&gt;Aceptando la creación de estas actividades, quedaría listo el formulario y su utilización en el flujo de pantalla descrito.&amp;#160; Esto quiere decir que se puede reutilizar el formulario en distintos flujos de pantalla.&lt;/p&gt;  </content><link rel='replies' type='application/atom+xml' href='http://od-tech.blogspot.com/feeds/3976096085613289853/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/8445877885055660465/3976096085613289853' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8445877885055660465/posts/default/3976096085613289853'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8445877885055660465/posts/default/3976096085613289853'/><link rel='alternate' type='text/html' href='http://od-tech.blogspot.com/2009/02/construccion-de-formularios-en-bpm.html' title='Construcción de formularios en BPM Studio'/><author><name>Mario R.</name><uri>http://www.blogger.com/profile/06617604687886652908</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhXTr7VHCa6gIhLsGEQuexWq0F0Ex60PzVF_sLdsnA7SbQE6BFebsuxLAoLmKgwnm9UNGibB0txt1q8FoDZXds9SA-woLxfS47pohH5cVY2sFW0m9z8-PxhsheUZFiWpbXTBEOx7iXiSk0/s72-c?imgmax=800" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8445877885055660465.post-1513395238881661123</id><published>2009-02-27T00:56:00.000-05:00</published><updated>2009-03-05T01:16:43.824-05:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="bpel"/><category scheme="http://www.blogger.com/atom/ns#" term="bpm"/><category scheme="http://www.blogger.com/atom/ns#" term="bus"/><category scheme="http://www.blogger.com/atom/ns#" term="soa"/><title type='text'>Invocar un proceso BPEL desde BPM usando el BUS</title><content type='html'>&lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Automatización de procesos de negocio no es lo mismo que sistematización.&amp;#160; Este último es utilizar un software que permita modelar, ejecutar y monitorear procesos de negocio donde se involucra interacción humana, es decir, los roles asocian participantes que van a interactuar en las actividades del proceso.&lt;/p&gt;  &lt;p align=&quot;justify&quot;&gt;Automatizar es reemplazar dichos participantes por sistemas de información o reglas de negocio, utilizando para ello la definición de servicios de acuerdo a lineamientos de SOA (Service Oriented Architecture).&amp;#160; BPEL es un estándar que busca la automatización de procesos de negocio a través de la orquestación de servicios.&lt;/p&gt;  &lt;p align=&quot;justify&quot;&gt;Teniendo en cuenta lo anterior, un proceso de negocio podría involucrar actividades humanas y actividades automatizadas, las cuales podrían estar modeladas en un proceso BPEL.&amp;#160; Este es el caso que se pretende explicar, donde un proceso de negocio BPM tiene una actividad automática, que a su vez es un proceso de negocio completo en BPEL, pero que es visto como un servicio publicado en el BUS.&lt;/p&gt;  &lt;p align=&quot;justify&quot;&gt;En&amp;#160; BPM Studio debemos tener un proceso de negocio, y en el swimlane de actividades automáticas (rol por defecto) se debe colocar una actividad automática (en este caso sería la actividad Validación) que representa el subproceso en BPEL.&lt;/p&gt;  &lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi3QNy44mdgfrOUrmT-ZZsYtApY7zWD76bey5qkgQU-ujbHJ33gA9OGDHerVXipCYlSsnoWraXhDjUbrnP-Lr7rrPsAoIfkcmOAae0YMjlLQ0_q6qxW1HsfOYz43KwNaUzpfSUqFbxb3fw/s1600-h/image2.png&quot;&gt;&lt;img title=&quot;image&quot; style=&quot;border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px&quot; height=&quot;244&quot; alt=&quot;image&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhpfDlVs_y9ajWZaQFvjwspKHbCcwDjf82nmQI8KOD-yTDgivJUrfwS-FLVp8dNA7296YbXbk-9-sk53jVsocA1A66mLcgPovh221pB4rYJUCnOLejooEcjo-ZxZKs_TBGsDQiUlBiS5nc/?imgmax=800&quot; width=&quot;237&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p align=&quot;justify&quot;&gt;En BPEL tendríamos el proceso con las actividades automatizadas, pero no detallaremos este caso.&amp;#160; Simplemente se debe tener definido el proceso y funcionando correctamente.&amp;#160; En este caso, el proceso en BPEL es sincrónico.&lt;/p&gt;  &lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEizKS1e1KQ8W9ZXemuGA2WZEE0zrY3P2bAKAtBzk2AOqUIM6rJdQA7aygJBO4qCJmJsGIr2MFCD7Ud6qtfQaSYCEkfnn4UBO2hMf2F3PswHw1B0gIn3kODbBdvDoRkBIUoxG-E7bqrEN8A/s1600-h/image5.png&quot;&gt;&lt;img title=&quot;image&quot; style=&quot;border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px&quot; height=&quot;162&quot; alt=&quot;image&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEixKQZGbfQ41v6nUbRNy7aMWx5jw4O10mXkVRGLVpx8qj2N9pyUh1VLM0Y9_FMyOseXxuPkaw4bl-YOtDV0_skKfLjN43VoVuQ4g4QFIoa9Z6B_IUJkdhXkpJxBPdDecbfGybcnV97otfU/?imgmax=800&quot; width=&quot;244&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p align=&quot;justify&quot;&gt;En el BUS es necesario crear el Proxy Service y Business Service para el proceso de negocio de BPEL.&amp;#160; Para ello se crea primero el recurso WSDL del proceso y luego cada uno de los servicios (proxy y business).&lt;/p&gt;  &lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhwOirEdaFeLZUA_mpnlbysFD0oTgW4s_J_2aykMeEPe2xhQ2xeIQWxb5cEBT02bgsyS4mRWyh3THp_T_KZO6eSsvf-VI9GWacNjr10-zIXc-VFKpIefNFxa7fIc61w73dKSsGdVctTGHs/s1600-h/image8.png&quot;&gt;&lt;img title=&quot;image&quot; style=&quot;border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px&quot; height=&quot;140&quot; alt=&quot;image&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgSI8niz_iXqvAum74jBWh6c40UlSG0T_P7g707UjEUm2BU_SKP7aLbpTGfyg9Gwc9ki1ISHDCFmFkEIfZj13499kGzY99_nDYyD1pFQWibs5tjYu6X2pAWKjFsngC9G0JteOep9k-nezM/?imgmax=800&quot; width=&quot;244&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p align=&quot;justify&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgDSo5JicO40NRbE_NYo14plyrnUE-mpoHFqPcsuJhFR641dUQSGF8799oHIBn7hSUzwlkhoFOWjuUhnBawDY-4L2D_0ih87RadFpC717QB8JHdMsw0kU4pvQN9Tb19dcf8sURkwChRTFo/s1600-h/image11.png&quot;&gt;&lt;img title=&quot;image&quot; style=&quot;border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px&quot; height=&quot;143&quot; alt=&quot;image&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhfW-qbxsdZdqoFxxkCe5bceUOuuuimB1GqbrEvddbYVdvOCU8unjb6VigU-gopNbRbM9ytm4yJ454Rj5nmCdeACwH9d6sakp1upFU0SiWS98rBrP7QyoT9T_sq6B25xoW4hMnJQr63iAk/?imgmax=800&quot; width=&quot;244&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p align=&quot;justify&quot;&gt;En el BUS se puede probar la invocación del proceso de BPEL a través de las opciones de testing, y así validar que desde el BUS existe interoperabilidad con el proceso.&amp;#160; Finalizado esta parte, que es como la creación normal de cualquier servicio en el BUS, se prosigue con la invocación de este en BPM Studio.&amp;#160; En el catálogo de elementos se selecciona el módulo donde se quiera importar el objeto de negocio de BPEL, se selecciona la opción Catalogar componente –&amp;gt; Oracle Service Bus.&lt;/p&gt;  &lt;p align=&quot;justify&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg3Cvv2Iljz_Nb9-XlBjV_Lxu6PUu-xMu7gltjHuR5lW44mdWri03uSFZDRuYArwtWexlKDZi3iPQopobfBzBgDAGWSe35btOSydbIbF7JJyZx4kDm0s1l82JJuvChfaM5koz8AwSv4A20/s1600-h/image14.png&quot;&gt;&lt;img title=&quot;image&quot; style=&quot;border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px&quot; height=&quot;206&quot; alt=&quot;image&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj-4buVhmKzwD-_zeyAQM026TvaXdKJ7pLriS_zTLlZx-sbv62hRPkPh3WJF7T3md16-4dX2364BEEsqckFB00oLbNTmPRxrZojtnbKV4pL7eNffTRmW6ydGp3Qx57tjSsyJ2BNiH4sTUA/?imgmax=800&quot; width=&quot;244&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p align=&quot;justify&quot;&gt;Allí se selecciona una configuración de servidor o se crea una nueva, la cual corresponde al lugar donde se encuentra en ejecución el BUS.&amp;#160; Dentro de esta se selecciona el componente relacionado con el servicio que encapsula al proceso de negocio de BPEL.&lt;/p&gt;  &lt;p align=&quot;justify&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiRBRNaYSaoSDBhyQKtNC4e_5UR4Rk3ckDhbVZczfi8wDK7mwCHYkNWgdeVrLHWMiz5clQfrHlwcbQFyW2VsP0LYDDrlLiEK6-iJDsZ46xmc7Gh-soIdPjZzMzxKPBQJL1aulkUk-u9IBM/s1600-h/image17.png&quot;&gt;&lt;img title=&quot;image&quot; style=&quot;border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px&quot; height=&quot;244&quot; alt=&quot;image&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhr7f1IuVUoj3GNfT3B51FJ4RILuzmilZFmV-HQ0V4T_mMvz9VJIBivUf5rHFXOIkBiJeUM4UAotjAjYUV-WIS_fPWx_xnKhgG1nY8y6IqGl3AT1S5Q2qw2TFQjNaHP5Q-vYDgZ0OTEpOA/?imgmax=800&quot; width=&quot;197&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p align=&quot;justify&quot;&gt; Esto crea la representación del objeto de negocio operado por el servicio, con los atributos correspondientes.&lt;/p&gt;  &lt;p align=&quot;justify&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEifHTKjbF9NvMx-vqnxi1fgCu9JHZ8hoGEllnvWZnnf9xk1Mn4pd58tY6iKMrcJpLoUdPH1IO6kQHGUWVsAx6j0peiT4X3M5buu0ad2o1bHBc8wxHYLQlqMBknbiDbG4l-K2Q8M34KVHD0/s1600-h/image20.png&quot;&gt;&lt;img title=&quot;image&quot; style=&quot;border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px&quot; height=&quot;108&quot; alt=&quot;image&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjwfu4hqEHYDe2wrdBmkyoyVBBGIWTMns5DaPbx1sINZKNSy8XhZAkuvt-iT3vy7Iu66w6OmkJ-FeZwxTOK2JkJ2vGBxYvVTikIrH89nLfawdsgYJEYgUusrYAgykMo2URprCzqyMs-Wn8/?imgmax=800&quot; width=&quot;244&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p align=&quot;justify&quot;&gt;El siguiente paso es relacionar este componente en la actividad automática del proceso.&amp;#160; Para ello se selecciona la actividad para definir como tipo de implantación Componente.&amp;#160; En el nombre de componente se busca el correspondiente al elemento creado en el catálogo.&lt;/p&gt;  &lt;p align=&quot;justify&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh6uce8pKBeGBbhP8dH5zufam2e8AkFiZoz-PA1EGBL9X0b_D2KlvXIZpOIPh8iJuAp8icxFXxGO-4ozTj5XmNozlGKrCTwgREshKpN0Eqh98aQauyXVRyEljhGzGubM1qhA3tNZT_Bl8M/s1600-h/image26.png&quot;&gt;&lt;img title=&quot;image&quot; style=&quot;border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px&quot; height=&quot;244&quot; alt=&quot;image&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiYICyy-IzIbdbANr4ePIRssDSmCCrPTlSujt0CSHZLnv3Hz76RnvBiPC56Ye4PYeyr2Tl3wAC3psSADd7JHBFQRHSYadEy8wPpusPTiqRS5f4dXhSQDp08t5aUUSf50GUNdT32-LUi8bU/?imgmax=800&quot; width=&quot;239&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p align=&quot;justify&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh0r0zJ5SMZ88JjZPS9AkpS9EGnSJbyOrXq77Hfck7qdegukBzjFwXI7NkDjS1rLWqLiOrAfarLnf_ZhmPoQPPE_8d0aSrKIVbMqJp6a3BORMQFO5Emlq1Vs_Zktp1Sx3dFdc7OA_xkgK4/s1600-h/image23.png&quot;&gt;&lt;img title=&quot;image&quot; style=&quot;border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px&quot; height=&quot;244&quot; alt=&quot;image&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgsCUvPHDMby1MwKg4XRwWtHmhsAcrR92RzyHeCZUGoD4h1C-JWulZ0yP2bSdkIwyC3SWGBJ5cQmWC3C-W1k0v_eXN7ELyYoifeJ2C47Tbq9URXs0LK4caoWyOSGFpOHcZTtXLJWmhLzGU/?imgmax=800&quot; width=&quot;196&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p align=&quot;justify&quot;&gt;En nombre del método, se selecciona la operación de invocación del proceso en BPEL (si el proceso es sincrónico la operación será process).&amp;#160; Después se define la asignación de argumentos donde se configura como entrada la variable payload con el valor de la variable de instancia que representa los datos a enviar al servicio, y como salida la variable de instancia con el valor del resultado del servicio (proceso en BPEL).&lt;/p&gt;  &lt;p align=&quot;justify&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEinAc3cIK0EZ4byzn71BoRfvCjvgNKNOMsrcqjwglQ2JhrQX3Wi03OGUmLRWIGOSqWwFWDWH0XK44KMSHCUahNxhyphenhyphenkmMdznB0fvdKbDO_Dhd2K6omcC0EIE1iRO_-vzlpCGvvNcDO20W0E/s1600-h/image29.png&quot;&gt;&lt;img title=&quot;image&quot; style=&quot;border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px&quot; height=&quot;151&quot; alt=&quot;image&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEic8ynILvQjoVzUMJMgqel9drd2sHtJ8x2Ae3XESD-JZofDkSvcBG7u5YG2ImctIqAEHuiDkCIWF5D8x63grYSb_a8W1LR22crU9J_fjAZNlL5aCoJpePF4fq2U5gGBmH_HFy9Ae9F7Je4/?imgmax=800&quot; width=&quot;244&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p align=&quot;justify&quot;&gt;Una vez realizado esto, lo único pendiente sería establecer actividades para manejar la información obtenida por la actividad y vincularla con el proceso actual.&amp;#160; El modelo de invocación del proceso en BPEL en BPM se vería similar a&amp;#160; la siguiente figura.&lt;/p&gt;  &lt;p align=&quot;justify&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgh48iERehDtEEI04No9paRldPt2xnbDBPi-38Kx8xQ1KBqrixwKG6nvEVsz9H_mwWDlGhz0b31I8PNvWf-42ByFhJKGDPpvME9mT_2Xs8oC_oALNAkARZ2sSxDyAaXkEUI8Qi5goteV7o/s1600-h/image32.png&quot;&gt;&lt;img title=&quot;image&quot; style=&quot;border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px&quot; height=&quot;109&quot; alt=&quot;image&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgPbDg-VHLXEslu_Xri_KWmbdRpxWYRbAXN3i217zxkt0vfrJs3CmYg0JdU-sIUNWKBjtQfwR09u0K5WVXcfToUGVyrNvdFzNfUt84241_lASBUhph-WjlAwZj8jKHTgjlefCVMBAGwtkU/?imgmax=800&quot; width=&quot;244&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p align=&quot;justify&quot;&gt;Con esto estaría listo el proceso en BPM invocando un proceso en BPEL a través de la publicación de un servicio en el BUS que lo representa.&lt;/p&gt;  </content><link rel='replies' type='application/atom+xml' href='http://od-tech.blogspot.com/feeds/1513395238881661123/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/8445877885055660465/1513395238881661123' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8445877885055660465/posts/default/1513395238881661123'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8445877885055660465/posts/default/1513395238881661123'/><link rel='alternate' type='text/html' href='http://od-tech.blogspot.com/2009/02/invocar-un-proceso-bpel-desde-bpm.html' title='Invocar un proceso BPEL desde BPM usando el BUS'/><author><name>Mario R.</name><uri>http://www.blogger.com/profile/06617604687886652908</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhpfDlVs_y9ajWZaQFvjwspKHbCcwDjf82nmQI8KOD-yTDgivJUrfwS-FLVp8dNA7296YbXbk-9-sk53jVsocA1A66mLcgPovh221pB4rYJUCnOLejooEcjo-ZxZKs_TBGsDQiUlBiS5nc/s72-c?imgmax=800" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8445877885055660465.post-3494499337334778062</id><published>2009-02-26T18:15:00.000-05:00</published><updated>2009-03-03T18:40:38.827-05:00</updated><title type='text'>Registrar un web service en OSB</title><content type='html'>&lt;p&gt;En este art&amp;#237;culo hacemos un breve ejercicio para revisar la facilidad de registro de un servicio web en el Oracle Service Bus (aka ALSB).&lt;/p&gt;  &lt;p&gt;Primero vamos a crear un servicio web sencillo a partir de una clase java, usando jdeveloper 10g. &lt;/p&gt;  &lt;p&gt;Partimos de una clase sencilla con un m&amp;#233;todo p&amp;#250;blico que retorna la calificaci&amp;#243;n de una ciudadano en una central de riesgo.&lt;/p&gt;  &lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEioS3datFo7U6qkgzJNs6ATNSgrqTxK1TyvmB9kBpBUKNVGWR0zvKM4i4gft4ptDU39cb1dZ7wnCLxQeL-1XisA992TG4x_VetX6-TRQk4lu7h3DwcGROY5nL0fmOykOnBXLNTVSAc-Cgqw/&quot;&gt;&lt;img style=&quot;border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px&quot; height=&quot;166&quot; alt=&quot;image&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEib9TVNGTeRij8HYDPi-NemBZ7VBG560C8ee12MOxER0kE08TMrx4Ck2SO8-rqUHIaORb7yxfQN5TjpLQqlqEs0tziIAF8mnTcdejsAab47UfhQMgMyBcnMpv5bMeTYDcc9l5Ou30WmZj5d/&quot; width=&quot;406&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;A partir de ella creamos un servicio web a trav&amp;#233;s del wizard de Java Web Service. Ahora lo desplegamos y realizamos una prueba para verificar su respuesta exitosa.&lt;/p&gt;  &lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhe9Z4h5BUR9Fhp9ZFzhI9q6DtEg9SEO7s_fawaDCy5Ng9ktfzI8Ov2aoMpiAmuHPq_CVl5hyphenhyphensA5awQRSV51XXocK1oDdEe98VyPzX2EK8i1QfTzcwnnYICgLdfR3bqXEDqImAty2WyYCgu/&quot;&gt;&lt;img style=&quot;border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px&quot; height=&quot;177&quot; alt=&quot;image&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiL6EdKKZltZnqjyMEkmak1vFfNx_ySr3JWeNIeEbk5qBZd5g-vBB8CDq9QZsZQl3uOW8Ab67KNe62ILlUeDNykZ_DIpDm4K3-CHZ6-DNLI5p9towt4q4sgFGIzqOKt3Z5EEzbnDmbmEZ2G/&quot; width=&quot;425&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;El servicio nos responde sin problemas, ahora vamos a registrarlo en el bus.&amp;#160; Para ello vamos a entrar a la consola de administraci&amp;#243;n, y nos dirigimos a la secci&amp;#243;n de Project Explorer.&lt;/p&gt;  &lt;p&gt;Al&amp;#237; creamos un proyecto llamado BancoEjemplo, en el cual creamos algunas carpetas para organizar los contenidos: &lt;u&gt;&lt;em&gt;recursos &lt;/em&gt;&lt;/u&gt;donde estaremos registrando el wsdl del servicio, &lt;em&gt;&lt;u&gt;servicios&lt;/u&gt;&lt;/em&gt; donde estaremos guardando los business services del proyecto y &lt;em&gt;&lt;u&gt;proxy&lt;/u&gt;&lt;/em&gt; donde definiremos los proxy services.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjsNG-7Tcv1qcG7D4emDIlz6IDd_YoKIKu3lEzfKPlwFhOHkO5UEO-ErGqxcOx0lRms9DF88l7k3P18Qrcdfm_Xp3w-TlZgvlf_pvH5TDcAZBO5WOxi_25sZOVjydrRVHxYruodOERq3oOO/&quot;&gt;&lt;img style=&quot;border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px&quot; height=&quot;189&quot; alt=&quot;image&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg6Au0z6KDOcSnwbt_auPFHnL6X5DIPaJWCQxFU8eYGxo_tJIXkjKnfNiSqTnHC6xQPkdm8lQtoszpcSyKgb3JYYLaTDTT-4X8B64MwjUNQVAQSDJ5uPjC8n4UWAueV5dUMOsMtdLg608Xm/&quot; width=&quot;208&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Para registrar el wsdl debemos iniciar una sesi&amp;#243;n, lo que nos permitir&amp;#225; deshacer cambios si cometemos algun error de configuraci&amp;#243;n.&amp;#160; Luego iniciamos el wizard de creaci&amp;#243;n de recurso escogiendo de la lista el tipo WSDL.&lt;/p&gt;  &lt;p&gt;Con esto registrado en nuestra carpeta de recursos, vamos a la carpeta de servicios a crear el business service correspondiente. All&amp;#237; seleccionamos del combo de tipo la opci&amp;#243;n Service-&amp;gt;Business Service, diligenciamos el formulario y marcamos la opci&amp;#243;n de WSDL Web Service que nos permite explorar nuestros recursos WSDL registrados, seleccionamos nuestro wsdl y seguimos el wizard hasta su final.&lt;/p&gt;  &lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh2qmS7TDbNRwH8qxlCxnD0vjwi0vBNCqMIB8ub66nxlofl9rlRAjXJ_hKhmLFXmUpEjobAU2PshHdETmXGgTxoOM3-FEUQ8H6-8ChJFVsFtwBj_pIMWfDxJpNfB3t3QHo2DpQnBjQ5odj3/&quot;&gt;&lt;img style=&quot;border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px&quot; height=&quot;350&quot; alt=&quot;image&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjvEryBgd86JsMUTbMfkL0uWZpRB_x5ShdaqkPacVmyWubf4_KqsMC-6h4FjlC9bPVsLBMID2IyuBwSK77KIEiY7NIagGUzBjzYF50ojphANjv0kp-rBgA1v3C4glp0lmp5oD2oYTPTaHPM/&quot; width=&quot;432&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Ahora vayamos a la carpeta Proxy para registrar un Proxy Service a partir del Business Service reci&amp;#233;n creado. &lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh0PVhuh2s6t2Gjq3z831k490qUluCUFPP91-saMtEdCg6orPz71uwYE6kbtp1LSNwZ_EBRFXgD5jXbDCceSXp9OZf4cfYxV4si8aA3epygThLLb8Vz88jj0FsCvpVB-XgQJdzc4f6tFkxE/&quot;&gt;&lt;img style=&quot;border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px&quot; height=&quot;323&quot; alt=&quot;image&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjeWaljKCfO8tS3ZhqmmuHorAPdA3QR3Ur6deE5oAag_0-42ixRWTb3ORRswQ7dzAT8m4qSIPCN4LgHo0ykmcbgEnV1c37rPZN3eADoq8tm0_abk5Xw2Xc5a5TbT4jg30OO_BhVhQBNLoZY/&quot; width=&quot;451&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Al crear el Proxy service podemos aprovechar las capacidades de procesamiento del mensaje, que provee el OSB, pare este ejemplo no incluiremos ninguna acci&amp;#243;n en el pipeline del proxy service. &lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg2lchhOcpqvOkWkS4Fngbr_sYQuXFSbKrvIZ0aIDqGjnIF2fn34kmD95Iyx6PbFu7J5lB_X683HJR4NmlitTMdXHpGBLjA97v1-jC3vB_T6mp4fv1ciyibK9MJjBY9qFtB0djCBfX5Uh4F/&quot;&gt;&lt;img style=&quot;border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px&quot; height=&quot;368&quot; alt=&quot;image&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjQmuKWH4LTqTrcoRjcMfnRPdDQcKVQMeGnVKbyorpM7_FTIsX2oqlO7Gz7-v6W5oIOs04IlinJCxOPDAkQtmUydD7GveRieRCjU1yqJK11bUtHJWLjWyoNnCmfAniY032jmeJnhBnkknDv/&quot; width=&quot;450&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Ahora vamos a la consola de prueba del proxy service, y verificamos el estado del servicio.&lt;/p&gt;  &lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhanbsPs8IeNpJqGGcDNFvkAvuDme_Rw9CnIMUgGBnwveRqwEjHKH_hCfmEn822YwYZLbltA7NhISD-EaU08Sd5LoZE7YmbAm_ArhIr3d09NOVOVhE8Kd7mUo_0Z0MxuAiaeC8HwbwcerP5/&quot;&gt;&lt;img style=&quot;border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px&quot; height=&quot;178&quot; alt=&quot;image&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhgo2DAPO_6XwzboI-Hq4iNULd8OyMkaA5Ers7M8WGzI9UH7G4qhYnUKqRbzUQuM2ttTgepwlHC5w5UN_7ZvYKtStBZVUpUqIIU31jyaiztkZzZkYcb5RbkjM4SymK9yJAmj1oZgolgb9F4/&quot; width=&quot;449&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Con esto terminamos de registrar en el bus un web service, mostrando con unos simples pasos c&amp;#243;mo podemos brindarle flexibilidad a la infraestructura con base en un producto poderoso como OSB.&lt;/p&gt;  &lt;p&gt;Saludos.&lt;/p&gt;  </content><link rel='replies' type='application/atom+xml' href='http://od-tech.blogspot.com/feeds/3494499337334778062/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/8445877885055660465/3494499337334778062' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8445877885055660465/posts/default/3494499337334778062'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8445877885055660465/posts/default/3494499337334778062'/><link rel='alternate' type='text/html' href='http://od-tech.blogspot.com/2009/02/registrar-un-web-service-en-osb.html' title='Registrar un web service en OSB'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEib9TVNGTeRij8HYDPi-NemBZ7VBG560C8ee12MOxER0kE08TMrx4Ck2SO8-rqUHIaORb7yxfQN5TjpLQqlqEs0tziIAF8mnTcdejsAab47UfhQMgMyBcnMpv5bMeTYDcc9l5Ou30WmZj5d/s72-c" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8445877885055660465.post-6575165904146843038</id><published>2009-02-26T10:56:00.001-05:00</published><updated>2009-02-26T10:56:40.987-05:00</updated><title type='text'>Como cambiar Oracle BI de puerto</title><content type='html'>&lt;p&gt;Hace pocos dias un cliente me envio la siguiente duda.&lt;/p&gt;  &lt;p&gt;&lt;font face=&quot;v&quot;&gt;1.&lt;/font&gt;&lt;font face=&quot;v&quot;&gt; &lt;strong&gt;Resulta que ya hice la migración y el servidor de reportes me quedo apuntando al puerto 9704, como puedo cambiar ese puerto al 80??? Estuve consultando mucho y no encontré.&lt;/strong&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;font face=&quot;v&quot;&gt;Les agradezco su pronta ayuda con el proceso de migración relámpago.&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Gracias&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Me di a la tarea de documentar el proceso para futuras referencias.&lt;/p&gt;  &lt;p&gt;&lt;a href=&quot;http://lh6.ggpht.com/_hpD3dFwMIwA/Saa7kKh7QSI/AAAAAAAADGQ/InZvQhUmmcQ/s1600-h/image%5B7%5D.png&quot;&gt;&lt;img title=&quot;image&quot; style=&quot;border-right: 0px; border-top: 0px; display: inline; border-left: 0px; border-bottom: 0px&quot; height=&quot;357&quot; alt=&quot;image&quot; src=&quot;http://lh6.ggpht.com/_hpD3dFwMIwA/Saa7lGk_qYI/AAAAAAAADGU/TSF6CZeFZrA/image_thumb%5B3%5D.png?imgmax=800&quot; width=&quot;433&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Abre el siguiente archivo &lt;/p&gt;  &lt;p&gt;%SAROOTDIR%\oc4j_bi\j2ee\home\config\default-web-site.xml&lt;/p&gt;  &lt;p&gt;&lt;a href=&quot;http://lh3.ggpht.com/_hpD3dFwMIwA/Saa7l9H9D6I/AAAAAAAADGY/l7YUo0iOKv8/s1600-h/image%5B11%5D.png&quot;&gt;&lt;img title=&quot;image&quot; style=&quot;border-right: 0px; border-top: 0px; display: inline; border-left: 0px; border-bottom: 0px&quot; height=&quot;322&quot; alt=&quot;image&quot; src=&quot;http://lh3.ggpht.com/_hpD3dFwMIwA/Saa7mk32xMI/AAAAAAAADGc/dIkReT6U1T8/image_thumb%5B5%5D.png?imgmax=800&quot; width=&quot;452&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Cambia el numero 9704 (Puerto por defecto) por el puerto que desees utilizar en tu servidor de BI.&lt;/p&gt;  &lt;p&gt;Para este caso usaremos &lt;strong&gt;port=&amp;quot;7777&amp;quot;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Guarda los cambios realizados al archivo.&lt;/p&gt;  &lt;p&gt;Se debe detener el OC4J despues de esta operacion.&lt;/p&gt;  &lt;p&gt;&lt;a href=&quot;http://lh3.ggpht.com/_hpD3dFwMIwA/Saa7oD3kkII/AAAAAAAADGg/9ee05-MvbbE/s1600-h/image%5B17%5D.png&quot;&gt;&lt;img title=&quot;image&quot; style=&quot;border-right: 0px; border-top: 0px; display: inline; border-left: 0px; border-bottom: 0px&quot; height=&quot;44&quot; alt=&quot;image&quot; src=&quot;http://lh4.ggpht.com/_hpD3dFwMIwA/Saa7olCb56I/AAAAAAAADGk/GEOIUAqchQY/image_thumb%5B7%5D.png?imgmax=800&quot; width=&quot;105&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Ahora lo iniciamos nuevamente.&lt;/p&gt;  &lt;p&gt;&lt;a href=&quot;http://lh5.ggpht.com/_hpD3dFwMIwA/Saa7qUtdr7I/AAAAAAAADGo/4Eaf8kA9paA/s1600-h/image%5B20%5D.png&quot;&gt;&lt;img title=&quot;image&quot; style=&quot;border-right: 0px; border-top: 0px; display: inline; border-left: 0px; border-bottom: 0px&quot; height=&quot;47&quot; alt=&quot;image&quot; src=&quot;http://lh4.ggpht.com/_hpD3dFwMIwA/Saa7rBq92ZI/AAAAAAAADGs/4mejPYiJZ-s/image_thumb%5B8%5D.png?imgmax=800&quot; width=&quot;113&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Probamos nuevamente y vamos a nuestro servidor pero ahora sobre el puerto 7777 que fue el puerto elegido.&lt;/p&gt;  &lt;p&gt;&lt;a href=&quot;http://lh6.ggpht.com/_hpD3dFwMIwA/Saa7rw7Iv3I/AAAAAAAADGw/1IBZuggxCB8/s1600-h/image%5B25%5D.png&quot;&gt;&lt;img title=&quot;image&quot; style=&quot;border-right: 0px; border-top: 0px; display: inline; border-left: 0px; border-bottom: 0px&quot; height=&quot;201&quot; alt=&quot;image&quot; src=&quot;http://lh3.ggpht.com/_hpD3dFwMIwA/Saa7t96t8JI/AAAAAAAADG0/JCOPE0G3wUs/image_thumb%5B15%5D.png?imgmax=800&quot; width=&quot;642&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Espero que les haya sido de utilidad.&lt;/p&gt;  &lt;p&gt;Hasta la proxima.&lt;/p&gt;  </content><link rel='replies' type='application/atom+xml' href='http://od-tech.blogspot.com/feeds/6575165904146843038/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/8445877885055660465/6575165904146843038' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8445877885055660465/posts/default/6575165904146843038'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8445877885055660465/posts/default/6575165904146843038'/><link rel='alternate' type='text/html' href='http://od-tech.blogspot.com/2009/02/como-cambiar-oracle-bi-de-puerto.html' title='Como cambiar Oracle BI de puerto'/><author><name>John J. Bocachica</name><uri>http://www.blogger.com/profile/05173460945632553184</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://bp2.blogger.com/_hpD3dFwMIwA/R9bYn9MbUPI/AAAAAAAAA_s/4nygb2QlOak/S220/boca+linchtestein+.jpg'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://lh6.ggpht.com/_hpD3dFwMIwA/Saa7lGk_qYI/AAAAAAAADGU/TSF6CZeFZrA/s72-c/image_thumb%5B3%5D.png?imgmax=800" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8445877885055660465.post-4312495148903919619</id><published>2009-02-24T10:48:00.000-05:00</published><updated>2009-03-05T10:44:50.808-05:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="bam"/><category scheme="http://www.blogger.com/atom/ns#" term="bpm"/><category scheme="http://www.blogger.com/atom/ns#" term="chart"/><category scheme="http://www.blogger.com/atom/ns#" term="dashboard"/><category scheme="http://www.blogger.com/atom/ns#" term="studio"/><title type='text'>Hacer un dashboard en BPM Studio</title><content type='html'>&lt;p&gt;En esta oportunidad quisimos hacer un peque&amp;#241;o ejercicio para mostrar la facilidad que BPM Studio ofrece para construir tableros de control sobre datos del negocio, no sobre datos de cargas de trabajo o rendimiendo de los procesos.&lt;/p&gt;  &lt;p&gt;Voy a crear un sencillo proceso de ejemplo de 1 tarea, en el cual vamos a dar una respuesta sobre una solicitud.&lt;/p&gt;  &lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhJ1GnAgWB5YPzJPzDQCOLsTqNpXmyTELs8cGH998ODZlw-ZCBixf3SjnAkSdfc2JyHx_FVUtl0YPy7TQctgp3LSNkVKd_2nV_b34RIvZ3RSznR0cgzRT8x9BKgr827WScUW_VPXP3v7xCx/&quot;&gt;&lt;img style=&quot;border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px&quot; height=&quot;198&quot; alt=&quot;image&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjHWQYSBfSE76fOjNMr7FFxDK7ktuAdJZG0FPwQZFW1W8h06xetB6IWXPUFoilC45HK9NKoRoXh0-HMtG16lvCb9rkusXRqUXIRdkCMq0bA44GsegUsapYoTxJinTMI4RrvNmGrWmlEJwod/&quot; width=&quot;342&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;En el proceso vamos a manejar los datos ficticios de una solicitud de un producto Financiero, as&amp;#237; que construimos el siguiente BPMObject:&lt;/p&gt;  &lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhXBotLGhWju5Npgs8nBFWapV1mABXBuAHmaRcB-kGwKRBBDqJU9URBvlXg9twJXquzYJwGTqJUpJGdktJAn3bVHIDUCPTbegWtDgMjP_NTPGRwL-aHM7XaRp41WjKc1le2xhkXgEKIk4Ej/&quot;&gt;&lt;img style=&quot;border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px&quot; height=&quot;141&quot; alt=&quot;image&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjKscq_r_UZXFmUMkulMQvBC_fKn4XdZ_iyfzp5KMHsKJrCBC_gSJhlJO6F8XtiXzbxu2ncFCSofjeWYT-7gcwc4TiF5JJixtVJ0BinK_pMgmZFN41mWR_qkxaecXnJD7aG06WJ3qb5o81R/&quot; width=&quot;381&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Creamos unas listas est&amp;#225;ticas para los campos producto y sexo.&lt;/p&gt;  &lt;p&gt;Ahora creamos una variable de instancia en la que se registrar&amp;#225;n los datos de la solicitud.&lt;/p&gt;  &lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhoONVVPpv6-TdB5mndH01zUW0p4YcCClWAbP40afvwwgJsP93GymLldH6dr-IZEhXn1Qcf08tUlFFQyzb9ZEoPBHFlsbBGmW-spppyLWetaZZPAf54fyRhBMK-RR1_-mbi5_m6sb4pIjJq/&quot;&gt;&lt;img style=&quot;border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px&quot; height=&quot;116&quot; alt=&quot;image&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh-e3fpe_XSlUxKG5JXHgh7YLhbZVAkL4nn8kWMzPo3O2kFhnbLkIma6Q8eUh_3BndJcWWTnL-NAxsNgvyazMgVufJMFPxG9qN016RvPOsiaq7EVVufOd_bIh4_P_2x3qFIUmAV4AmP73RH/&quot; width=&quot;244&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Y vamos a definir qu&amp;#233; variables podremos usar para construir nuestro dashboard, para ello creamos algunas variables de Proyecto identificando si ser&amp;#225;n Dimensiones o Medidas (s&amp;#237;, como en un modelo de BI).&lt;/p&gt;  &lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh9CPpoK_Y49CtoNpOJTD_Fj5Q2RLCMKzNzhhOJl68DIu9cLhgPnK3anvq_Hmktm0QDWCAG3ZlmnOcPTtDT0Xju_L7cjZWXKKXiOP6UPZ2uBy2KpZxbC7TZTsu7A3eH2y6X4aoqd31TI6r6/&quot;&gt;&lt;img style=&quot;border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px&quot; height=&quot;204&quot; alt=&quot;image&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhmGGi7meZdamYFSwk_oK5TILKwEzqFDRuwYp5TFVmKZMcxkn7YMxORigwqVa-8EaSX-UTYoZwQ1hJLiedF-PvW_kth0P9ISLYHsfxLT65pszbCl31QzHLMYOpj20k9W8lyr86kvgF1Z5Fg/&quot; width=&quot;267&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Construimos los screenflows para la actividad global de inicio del proceso y para la actividad intermedia.&amp;#160; No debemos olvidar hacer el mapeo correspondiente para asignar el valor adecuado a nuestras variables de Proyecto, si no lo hacemos nuestro proceso funsionar&amp;#225; sin problemas pero cuando queramos crear un dashboard o visualizar estos datos en la bandeja de entrada de las tareas en el workspace, no tendremos datos para mostrar.&lt;/p&gt;  &lt;p&gt;Probemos el proceso:&lt;/p&gt;  &lt;p&gt;Entramos como el cliente y sometemos una solicitud.&lt;/p&gt;  &lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEicgrF7ugNgKVp82hKXfKtotl4OzvRVUK6zyxaC_vCOmfFoTX_sQqEm3pfzE0zCnDC9q-GM1fBvJazT6AApgdQViBWlaVj_BiTYJyCFJgDya2UePOA7rO-cq_uXTZhGaG5nVViqMBjXCY71/&quot;&gt;&lt;img style=&quot;border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px&quot; height=&quot;244&quot; alt=&quot;image&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEia9IrtW_irVFMzHEEy3vZaS57_H5d_JanJZWzocwijwMr62GDAnNyw36k3aogvrGgv9yX83cn844vtkeG7vVbXlRW7Hg_2zWH9iqZc0VQtJGklHqpecGVLlvu6PR3br8YQtosFph7TM6kN/&quot; width=&quot;243&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Entramos al workspace como el analista y revisamos los datos de la solicitud.&lt;/p&gt;  &lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh3kJlJ4MXjIB86_E1pFo78zkm1PY1rxMu-e3FkXXpafi7ltmtYIU3RcyEueksheTrmW64Q_zZHfMd_CFvf-ksHn8rPrWKsS06TnZvkWSu86TVCU8CfXTNnirgU7_SHp2OzMhCGY9Ab2yaQ/&quot;&gt;&lt;img style=&quot;border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px&quot; height=&quot;247&quot; alt=&quot;image&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiR8_Hr3umk20D1FycYEaclshK0dtWtuhYjZnaaxL-a5hq3G396l5sBCCGIAQHYUZCfdU-EzXXLGyvSUu0htOCCXdigA3Mp9JiP1rFnd9uIB9Maleqmzk9D7d-u9ZiVIpLsFK4NO5gx-wFa/&quot; width=&quot;396&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Cre&amp;#233; un grupo de solicitudes de prueba para tener m&amp;#225;s datos a analizar.&amp;#160; Ahora s&amp;#237; construyamos un dashboard.&amp;#160; Para ello nos situamos sobre el m&amp;#243;dulo adecuado en el cat&amp;#225;logo, y creamos un nuevo BAM Dashboard.&lt;/p&gt;  &lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjkncp0oVOFazaTr5fiL8yemLpjTqtd4XxiQzh7qHRXw4fhi8trsTd9QTQ6x4F7yjEvqX9QZbKr18k6VBlykCvOAw5NG27JeGt6L3jIa-zN-R7fjVfAhkZQnbD_J2LpeiDI1McQ14Chs7_l/&quot;&gt;&lt;img style=&quot;border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px&quot; height=&quot;276&quot; alt=&quot;image&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjkEVfCCZ2mTxzumEJeJpaZdJisjHR5VxsnM7nLmJJwOsXS3qiIeCjccf_QUVKwrdNNSO0kMR8duy8b0u36AOSFiAROMAVPc5dwf1vBQqX95p2XKz_Rqb414_1iUHZQJ-Zwkdbe3m0M1Von/&quot; width=&quot;402&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Ahora comenzamos a definir cada indicador, el primero nos mostrar&amp;#225; el monto de las solicitudes&amp;#160; clasificado por producto.&lt;/p&gt;  &lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgMgkRR8iRrohal4isiAavhao_gvmi_J3-CVwq-6lm0krhrh1wCTheIXWYklMpos-P-n_koYDSsqz7kucNH5LyvxKtZRyRS2vKzN5YZz7baemuYR4-GsGz8vQMccWSV0CF2B5TjQl4FKKlK/&quot;&gt;&lt;img style=&quot;border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px&quot; height=&quot;349&quot; alt=&quot;image&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg6L0e8VD4JPsX8Pc7eeOzqIL7LburUwCMcHuBSctZFnzdgHfuQwXzo553gIfjvAPgskfx9-06xTwrMW8Axd1yy4Ko1WqxdKdqVKFaD0b0CpzTtzjrwIOPyqb2zPYGzZssxUtus0plyz7b9/&quot; width=&quot;400&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Como vamos a mostrar una medida (monto) de negocio que queremos sumarizar, vamos a elegir en el Data Type Activity Workload, y seleccionamos &amp;quot;All Activities&amp;quot;, luego definimos qu&amp;#233; dimensiones queremos mostrar y qu&amp;#233; operaci&amp;#243;n realizaremos sobre la medida al hacer roll up.&lt;/p&gt;  &lt;p&gt;Podemos detallar tipo de gr&amp;#225;fico, t&amp;#237;tulo, colores, bordes, etc.. entrando al tab adecuado.&lt;/p&gt;  &lt;p&gt;Creamos un par de dashboards m&amp;#225;s para analizar el comportamiento de las solicitudes y terminamos nuestra creaci&amp;#243;n, al finalizar el wizard se ha creado un&amp;#160; objeto nuevo en el cat&amp;#225;logo representando el dashboard.&lt;/p&gt;  &lt;p&gt;Ahora debemos hacer disponible el dashboard al usuario analista, para ello arrastramos una caja de Global Interactive al lane del analista y editamos las propiedades del main task.&lt;/p&gt;  &lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjJAWUgaW2QYqbVSZ0NEA8vbzx7Q3qh0-dmWOgl7M4R-PsV66srIGir_sFfWYwv4B2neXno_p3mnsC66dedzqvukUVrH56OssA8WCfDRwJXr1TGppYD-FtKeCGdh5n3uGsbz6Gr6o6Qhs01/&quot;&gt;&lt;img style=&quot;border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px&quot; height=&quot;230&quot; alt=&quot;image&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjULsvjGbwPS4l92NDRxsm6JlIdAxdOqvrod2rOjH3wgDiPKiRAsVBN4-VaF8iFybUkjYCO8Mb85zIhXMpzmd0lDen5XnshucKEg6WwbT5yy8IOBmK3y-UXHnxRAgHp-1ZPGTjoffcHJxHb/&quot; width=&quot;330&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjgKyjbzsSRnAl1MV28cugAYdP3bKKUlhGseMWZrY9ibuD4OQE-xA2NyoB0Lf7J1NYhGRVh4XXb5Pxjem5wGm2Q3cOWM55YH-TvdT3icfbEZ1ZMF4F-jydyn04NmoSIxp_JjtY0fX9N1AOR/&quot;&gt;&lt;img style=&quot;border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px&quot; height=&quot;395&quot; alt=&quot;image&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiIravUT1CAOHEX1dvgk1YpgzxLH07zdNaxWsva-Y5EVLTNEYJb33s3kiefaRlAwHy2sm2jQm_gaaPBlX5jLk1Egn4SbDOOPshNcL1TpBobl6XOdwHFWd0Fiqgz9dU_C-EVNYEfrjAY8_bk/&quot; width=&quot;389&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;En las propiedades definimos que queremos visualizar un dashboard, seleccionamos verlo en una ventana nueva y el objeto BPM que representa el dashboard, con su presentaci&amp;#243;n.&lt;/p&gt;  &lt;p&gt;Ahora vamos a desplegarlo, no olvidemos entrar a las propiedades del motor (clic derecho sobre el proyecto y seleccionar &amp;quot;Engine Preferences&amp;quot;), en el tab BAM activamos la opci&amp;#243;n de habilitar BAM detallando los tiempos de expiraci&amp;#243;n y frecuencia de actualizaci&amp;#243;n.&lt;/p&gt;  &lt;p&gt;Subimos el motor y entramos al workspace con el rol de analista para ver los dashboards.&lt;/p&gt;  &lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjd8on_I8llfds65s_iMkRJDmhIy5UWJkB66spitnU1Ik_OiFCmkTqqUloSAHsZtpWIB6Cb6xFcyyrcCizpzQmxYpHBC1VbJV_Yjk_TZvpUHiqXZ86KM-VRYFakCc1KTcm0XBOeSdcbHKl2/&quot;&gt;&lt;img style=&quot;border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px&quot; height=&quot;292&quot; alt=&quot;image&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiPpjO7GCymxNBaBXrlZB8zNl4RHUDVH2u5ya9iXqqFck5Ft7nuZIgXN7esMuzyFyVDXO0puKs4LNoIA8lN0WBMNMqRg4c8XvLcBXKy5RkZJqE5cfyfWC3yKE934lGtCFeUNak1f5Wnn8Gb/&quot; width=&quot;463&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Con esto terminamos un peque&amp;#241;o ejemplo de c&amp;#243;mo BPM nos facilita la creaci&amp;#243;n de indicadores de negocio basado en datos manejados en los procesos de negocio. &lt;/p&gt;  &lt;p&gt;Hasta la pr&amp;#243;xima.&lt;/p&gt;  </content><link rel='replies' type='application/atom+xml' href='http://od-tech.blogspot.com/feeds/4312495148903919619/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/8445877885055660465/4312495148903919619' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8445877885055660465/posts/default/4312495148903919619'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8445877885055660465/posts/default/4312495148903919619'/><link rel='alternate' type='text/html' href='http://od-tech.blogspot.com/2009/02/hacer-un-dashboard-en-bpm-studio.html' title='Hacer un dashboard en BPM Studio'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjHWQYSBfSE76fOjNMr7FFxDK7ktuAdJZG0FPwQZFW1W8h06xetB6IWXPUFoilC45HK9NKoRoXh0-HMtG16lvCb9rkusXRqUXIRdkCMq0bA44GsegUsapYoTxJinTMI4RrvNmGrWmlEJwod/s72-c" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8445877885055660465.post-8460874350691989443</id><published>2009-02-18T15:10:00.003-05:00</published><updated>2009-02-18T15:10:58.475-05:00</updated><title type='text'>Aportando contenido en UCM a través de Web Services</title><content type='html'>Tuve la oportunidad de hacer una prueba sencilla de interacci&amp;#243;n con UCM en la cual se pudiera aportar un documento a trav&amp;#233;s de una aplicaci&amp;#243;n externa. En este ejercicio us&amp;#233; Jdeveloper para construir una interfaz web que permitiera capturar algunos datos b&amp;#225;sicos acerca del documento y del contribuidor del contenido, y a trav&amp;#233;s de web services llevar esos metadatos y el documento como tal a UCM de tal forma que entrara en un flujo preestablecido al coincidir los metadatos.   &lt;br /&gt;  &lt;br /&gt;Partimos del hecho de tener instalado UCM en la m&amp;#225;quina, para comenzar debemos verificar que el servidor web est&amp;#233; corriendo (deber&amp;#237;amos ver la siguiente p&amp;#225;gina):   &lt;br /&gt;  &lt;div&gt;   &lt;div&gt;     &lt;div&gt;       &lt;div&gt;         &lt;div&gt;           &lt;div&gt;             &lt;div&gt;               &lt;div&gt;                 &lt;div&gt;&lt;img id=&quot;BLOGGER_PHOTO_ID_5235722489644352194&quot; style=&quot;display: block; margin: 0px auto 10px; cursor: hand; text-align: center&quot; alt=&quot;&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjKUjP_IMDztmMvtJl_U_jWSs2x8GqLv-ztLlTigOdUVQ85WKG4TOzDm0dtBilkzy9TMBER3MK1NjdkIz46gzGZNjX3fLHfiw-86y9GB3Is4k4fx0BzZcSQu-pRPkWG1gWtv3I7skiv2rA/s320/1.gif&quot; border=&quot;0&quot; /&gt; &lt;/div&gt;                  &lt;div&gt;Si es as&amp;#237;, debemos verificar que el proceso del Content Server tambi&amp;#233;n se encuentre arriba, si hacemos clic en Login dentro de la p&amp;#225;gina de Inicio de UCM y nos aparece algo como esto:&lt;/div&gt;               &lt;/div&gt;                &lt;div&gt;                 &lt;div&gt;&lt;/div&gt;                  &lt;div&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjXPKHb_cfEa5mJqEbX4DnIRGVQbnekoFbxva0ivob5jEzZ6ou2SBdA7fiRuRwZJHFchMUbD9kmBwrDydNypYJFXr1ejFRxxGjxz15ZdOJ0DY8zj4dqMZelrGbeI5CaAIi7Zxz1NmF2O68/s1600-h/2.gif&quot;&gt;&lt;img id=&quot;BLOGGER_PHOTO_ID_5235734733668333586&quot; style=&quot;float: left; margin: 0px 10px 10px 0px; width: 279px; cursor: hand; height: 163px&quot; height=&quot;214&quot; alt=&quot;&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjXPKHb_cfEa5mJqEbX4DnIRGVQbnekoFbxva0ivob5jEzZ6ou2SBdA7fiRuRwZJHFchMUbD9kmBwrDydNypYJFXr1ejFRxxGjxz15ZdOJ0DY8zj4dqMZelrGbeI5CaAIi7Zxz1NmF2O68/s320/2.gif&quot; width=&quot;299&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;&lt;/div&gt;                  &lt;div&gt;Se debe a que nuestro proceso est&amp;#225; detenido debemos entrar a la consola de administraci&amp;#243;n del proceso de Content Server haciendo clic donde nos indica la p&amp;#225;gina de error e ingresar con los datos del administrador.&lt;/div&gt;                  &lt;div&gt;                   &lt;br /&gt;&lt;/div&gt;                  &lt;div&gt;&lt;/div&gt;                  &lt;div&gt;                   &lt;br /&gt;&lt;/div&gt;                  &lt;div&gt;Ac&amp;#225; simplemente debemos levantar el proceso haciendo clic en el &amp;#237;cono de &amp;#8220;Play&amp;#8221;.&lt;/div&gt;                  &lt;div&gt;                   &lt;br /&gt;                    &lt;br /&gt;&lt;/div&gt;                  &lt;div&gt;&lt;/div&gt;                  &lt;div&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiIZvfLzLRkCC3azTptDfu49zq2WfXeylMZB1wAQeTOGOj51cBoeE95J-3HNGViECUa1HVYhdle1K4eY-4t00CMLdk-jRoYIucqiXvBC_DfV2PIsUnkOjWkr866CCh0CIGaJ4PTd5UGuWQ/s1600-h/3.gif&quot;&gt;&lt;img id=&quot;BLOGGER_PHOTO_ID_5235723674825565090&quot; style=&quot;cursor: hand&quot; alt=&quot;&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiIZvfLzLRkCC3azTptDfu49zq2WfXeylMZB1wAQeTOGOj51cBoeE95J-3HNGViECUa1HVYhdle1K4eY-4t00CMLdk-jRoYIucqiXvBC_DfV2PIsUnkOjWkr866CCh0CIGaJ4PTd5UGuWQ/s320/3.gif&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg2WE7jC6etfY3OMlxO8xxW7RX5CbbZTE5ECxqOcuGyRU7XFq2H77SYiXFGoYnBUAMaReHqNZruOhWAriSs9mFf8CCCfV7Ou8AmXCu42kUx7Q20ybcxIKaQhFKqIyOHCFGU9tADFWCy87k/s1600-h/4.gif&quot;&gt;&lt;img id=&quot;BLOGGER_PHOTO_ID_5235723991034099474&quot; style=&quot;cursor: hand&quot; alt=&quot;&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg2WE7jC6etfY3OMlxO8xxW7RX5CbbZTE5ECxqOcuGyRU7XFq2H77SYiXFGoYnBUAMaReHqNZruOhWAriSs9mFf8CCCfV7Ou8AmXCu42kUx7Q20ybcxIKaQhFKqIyOHCFGU9tADFWCy87k/s320/4.gif&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;                     &lt;br /&gt;Una vez arriba nuestro servidor ya podremos entrar a la consola del UCM y estamos listos para empezar. Antes de comenzar a interactuar con el servidor de UCM debemos realizar algunos pasos previos para crear nuestra metadata en el servidor, y configurar el flujo de trabajo que usaremos en el ejercicio.&lt;/div&gt;                  &lt;div&gt;&lt;/div&gt;                  &lt;div&gt;Para crear los metadatos propios que usaremos en el ejemplo debemos usar el applet del Configuration Manager, lo podemos encontrar siguiendo el men&amp;#250; inicio o a trav&amp;#233;s de la consola web de UCM conectados como usuarios administradores, ingresando a la opci&amp;#243;n Administration --&amp;gt; Admin Applets:&lt;/div&gt;                  &lt;p align=&quot;center&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhBsq1Kw0jduhNIYGgOKxzmRCRzl6H1wpAEKR-jgpDmIfPuNqJEnFCBot5EBCZXl8CxKDBqbyP1GqqlLCz904ZGs34BX4B_mw_ZbHYFR6PMxLa3Z6mrnwulF-Zi-wwq9JYF1wQJr-PkEJM/s1600-h/5.gif&quot;&gt;&lt;img id=&quot;BLOGGER_PHOTO_ID_5235724546161448242&quot; style=&quot;cursor: hand&quot; alt=&quot;&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhBsq1Kw0jduhNIYGgOKxzmRCRzl6H1wpAEKR-jgpDmIfPuNqJEnFCBot5EBCZXl8CxKDBqbyP1GqqlLCz904ZGs34BX4B_mw_ZbHYFR6PMxLa3Z6mrnwulF-Zi-wwq9JYF1wQJr-PkEJM/s320/5.gif&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;&lt;/p&gt;                  &lt;p align=&quot;center&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhkx4_ZJ29g4QZ0aAKTSqagSbkx-E4GmuTEP2a9ybiNIV46mtYrWLF0blOTuS-2V9WQXtRMqAK5LjhpCaIF_K_dO2QOsuBvfq-1JEKnZCILyvFf_W8g-Q7yunQ7zoDTmwJcundS4OM1EXk/s1600-h/6.gif&quot;&gt;&lt;img id=&quot;BLOGGER_PHOTO_ID_5235726654378698802&quot; style=&quot;cursor: hand&quot; alt=&quot;&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhkx4_ZJ29g4QZ0aAKTSqagSbkx-E4GmuTEP2a9ybiNIV46mtYrWLF0blOTuS-2V9WQXtRMqAK5LjhpCaIF_K_dO2QOsuBvfq-1JEKnZCILyvFf_W8g-Q7yunQ7zoDTmwJcundS4OM1EXk/s320/6.gif&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;&lt;/p&gt;                  &lt;div&gt;En el applet del Configuration Manager, nos situamos en el tab de Information Fields y creamos los siguientes campos: p_cedula, p_nombre, p_email y p_tipo, con las caracter&amp;#237;sticas siguientes: &lt;/div&gt;                  &lt;div&gt;                   &lt;br /&gt;&lt;/div&gt;                  &lt;p align=&quot;center&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh3jJpm4h1jQHgN39qd7iOvYcLNTRnZ2TkQk5PLueaGYUbP5cKBVg5Jss1cegEdZ8hvX1dFT6mQaGSASydUidqN9dVBzEITAObVYp36ndRrL1IHtEK98RQ76p1pLdOcziTZbLfn-1_AsZc/s1600-h/7.gif&quot;&gt;&lt;img id=&quot;BLOGGER_PHOTO_ID_5235726064473856226&quot; style=&quot;cursor: hand&quot; alt=&quot;&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh3jJpm4h1jQHgN39qd7iOvYcLNTRnZ2TkQk5PLueaGYUbP5cKBVg5Jss1cegEdZ8hvX1dFT6mQaGSASydUidqN9dVBzEITAObVYp36ndRrL1IHtEK98RQ76p1pLdOcziTZbLfn-1_AsZc/s320/7.gif&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;&lt;/p&gt;                  &lt;div&gt;Estos son los metadatos que vamos a recibir junto con el contenido del archivo a trav&amp;#233;s de la invocaci&amp;#243;n por Web Service.                    &lt;br /&gt;                    &lt;br /&gt;Con estos datos ya estamos listos para construir nuestro Workflow de aprobaci&amp;#243;n. Para ello debemos usar el Applet de Workflow Admin. &lt;/div&gt;                  &lt;div&gt;                   &lt;br /&gt;&lt;/div&gt;                  &lt;p align=&quot;center&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiT7Ke_eeGlBZBMpRyxD3R7Yw_J5TfzZDVSjcgIPCYb2fqw9EzkbGWxYcU7tMvl8LqiH6-kKHMHD8tbjsTTGbAqtDXLmXGKerhW400vRJSEhGmTNxiILGEgf8Lt5oaic-LW2XZydxxLGX8/s1600-h/8.gif&quot;&gt;&lt;img id=&quot;BLOGGER_PHOTO_ID_5235728244861328434&quot; style=&quot;cursor: hand&quot; alt=&quot;&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiT7Ke_eeGlBZBMpRyxD3R7Yw_J5TfzZDVSjcgIPCYb2fqw9EzkbGWxYcU7tMvl8LqiH6-kKHMHD8tbjsTTGbAqtDXLmXGKerhW400vRJSEhGmTNxiILGEgf8Lt5oaic-LW2XZydxxLGX8/s320/8.gif&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;&lt;/p&gt;                  &lt;div&gt;All&amp;#237; iremos al tab de Criteria ya que crearemos un flujo de trabajo que ser&amp;#225; disparado al coincidir metadatos del archivo aportado. Hacemos clic en el bot&amp;#243;n Add y llenamos algunos datos b&amp;#225;sicos de nuestro flujo:&lt;/div&gt;                  &lt;div&gt;                   &lt;br /&gt;&lt;/div&gt;                  &lt;p align=&quot;center&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhXwUfYW7mhQEH14BNj5_72wQ9dhfFrUhiscicyV62i0nq3mnMbCVCkm2RlvAgW0tPNJ29RCKTs3hr03zhh2Xhd_7MfjTurthI4PtYTFS5_VEn2kENT4Hlff73ptNoWH1kUTbf5Yqyp5OA/s1600-h/9.gif&quot;&gt;&lt;img id=&quot;BLOGGER_PHOTO_ID_5235728662486991314&quot; style=&quot;cursor: hand&quot; alt=&quot;&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhXwUfYW7mhQEH14BNj5_72wQ9dhfFrUhiscicyV62i0nq3mnMbCVCkm2RlvAgW0tPNJ29RCKTs3hr03zhh2Xhd_7MfjTurthI4PtYTFS5_VEn2kENT4Hlff73ptNoWH1kUTbf5Yqyp5OA/s320/9.gif&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;&lt;/p&gt;                  &lt;div&gt;Con esto definimos que nuestro flujo de aprobaci&amp;#243;n se disparar&amp;#225; para todos aquellos documentos que tengan el valor PRUEBA para el metadato p_tipo. Es importante recordar ac&amp;#225; que los campos creados por el usuario (en nuestro caso p_tipo, etc..) en realidad tienen un nombre interno que consta del prefijo x m&amp;#225;s el nombre que le dimos al crearlo; UCM lo guarda con ese nombre para distinguir los campos creados por el usuario (x de extendidos) de los metadatos que ya vienen con la herramienta. Este dato es importante porque luego tendremos que llamarlos con su prefijo para poder llenarles un valor desde la invocaci&amp;#243;n del Web Service.                    &lt;br /&gt;                    &lt;br /&gt;Una vez creado el flujo, comenzamos a crearle los diferentes pasos. Nuestro flujo va a ser muy sencillo, solo tendr&amp;#225; tres pasos: NotificarCiudadano, VerificarExpediente y NotificarCiudadanoReleased. Tanto el primero como el &amp;#250;ltimo son solo pasos de notificaci&amp;#243;n, en el cual enviaremos un correo a la persona que aport&amp;#243; el contenido, en el primer paso para comunicarle que ya fue recibido y en el segundo caso para contarle que su documento fue aceptado. Para poder hacer referencia al Autor Original del contenido debemos crear un token, para ello debemos ir al submen&amp;#250; Tokens que se encuentra dentro del men&amp;#250; Options del Applet de Workflow Admin.                     &lt;br /&gt;                    &lt;br /&gt;&lt;/div&gt;                  &lt;p align=&quot;center&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgPmB4W8DtVW4q8gvVFQub3fGJBR6tVO_q0LM1JfhU_V3tOX0YxsN9-mY6hUi69AHzWHOxm5oVZc3AAH3OT3aTYzLHwrR6-mopK1mkt4QCmv0zayoc5ixPkXmWbaroFe_LF49z9srH3zVg/s1600-h/token.gif&quot;&gt;&lt;img id=&quot;BLOGGER_PHOTO_ID_5235729190646343154&quot; style=&quot;cursor: hand&quot; alt=&quot;&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgPmB4W8DtVW4q8gvVFQub3fGJBR6tVO_q0LM1JfhU_V3tOX0YxsN9-mY6hUi69AHzWHOxm5oVZc3AAH3OT3aTYzLHwrR6-mopK1mkt4QCmv0zayoc5ixPkXmWbaroFe_LF49z9srH3zVg/s320/token.gif&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;&lt;/p&gt;                  &lt;div&gt;All&amp;#237; creamos un nuevo token llamado originalAuthor que contenga el c&amp;#243;digo de scripting que aparece en la imagen. Con este paso ya estamos en la capacidad de referir al autor original del contenido sin importar el paso del proceso de aprobaci&amp;#243;n en el que estemos.                    &lt;br /&gt;                    &lt;br /&gt;Configuremos el primer paso del proceso: NotificarCiudadano, refiriendo que la persona a notificar es el autor del documento.&lt;/div&gt;                  &lt;p align=&quot;center&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhYpQXfApQvdgR94Jm7HLnsW47m-ePdg40QkKTZs1jNBfqMT7319RyAk4y6ImpofPmmPLtp62UynHXWpC-lpIM7xhXHUiNZcLP103-E9u4Me0EfbsYnSVqmtb-dP3uMg-LQPI_qGqsDBio/s1600-h/10.gif&quot;&gt;&lt;img id=&quot;BLOGGER_PHOTO_ID_5235729192346908738&quot; style=&quot;cursor: hand&quot; alt=&quot;&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhYpQXfApQvdgR94Jm7HLnsW47m-ePdg40QkKTZs1jNBfqMT7319RyAk4y6ImpofPmmPLtp62UynHXWpC-lpIM7xhXHUiNZcLP103-E9u4Me0EfbsYnSVqmtb-dP3uMg-LQPI_qGqsDBio/s320/10.gif&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;&lt;/p&gt;                  &lt;div&gt;Pasamos al tab de Exit Conditions para configurar que no esperemos revisi&amp;#243;n, ya que esto es solo un paso de notificaci&amp;#243;n.&lt;/div&gt;                  &lt;p align=&quot;center&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgwaqxtLm_dLRRDIikp8usuZZ0-Y0DorpseNqUt_qhxyggHtk7CtWFZ0MfQoV0FAN61IJ7NowM-tzXSRTiroKNyadW3Vd_ufuVTPUfpSs2i_aIQ8kbDc2IjvZHg2v0VTGhN8d1Nb0YZbZo/s1600-h/10a.gif&quot;&gt;&lt;img id=&quot;BLOGGER_PHOTO_ID_5235729197188277746&quot; style=&quot;cursor: hand&quot; alt=&quot;&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgwaqxtLm_dLRRDIikp8usuZZ0-Y0DorpseNqUt_qhxyggHtk7CtWFZ0MfQoV0FAN61IJ7NowM-tzXSRTiroKNyadW3Vd_ufuVTPUfpSs2i_aIQ8kbDc2IjvZHg2v0VTGhN8d1Nb0YZbZo/s320/10a.gif&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;&lt;/p&gt;                  &lt;div&gt;Al siguiente paso: RevisarExpediente, si vamos a configurarle un usuario espec&amp;#237;fico:&lt;/div&gt;                  &lt;p align=&quot;center&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiDT9D5gTcaTqPUnX93WrhzySgQTOyrKr2I_lnahkQvOpdQz9ljtuBIym9xSVlRkndtvL3nF8vQ73HFAvJb_jpmwBx8CaZQW8f8VKJbJHoGHObOvEsWObBNI5tdP3bM_5adjvAy17TFvWg/s1600-h/11.gif&quot;&gt;&lt;img id=&quot;BLOGGER_PHOTO_ID_5235730413622558482&quot; style=&quot;cursor: hand&quot; alt=&quot;&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiDT9D5gTcaTqPUnX93WrhzySgQTOyrKr2I_lnahkQvOpdQz9ljtuBIym9xSVlRkndtvL3nF8vQ73HFAvJb_jpmwBx8CaZQW8f8VKJbJHoGHObOvEsWObBNI5tdP3bM_5adjvAy17TFvWg/s320/11.gif&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;&lt;/p&gt;                  &lt;div&gt;Y as&amp;#237; estaremos definiendo que debemos esperar al menos una revisi&amp;#243;n para continuar el flujo.&lt;/div&gt;                  &lt;p align=&quot;center&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiP0bHMmMwVSX6dmV5QP-bAJWwWAvu_nEwl7418adpFQmK67r3UQIAYBjBRwte_5KtkydERsOIKSa4RxmPmJdzXYcKVzDjAM79ZVcN3QewG6J-U4cisn9gbwl6NEVxNdmPk1-pT0-1WKnw/s1600-h/11a.gif&quot;&gt;&lt;img id=&quot;BLOGGER_PHOTO_ID_5235730423314369474&quot; style=&quot;cursor: hand&quot; alt=&quot;&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiP0bHMmMwVSX6dmV5QP-bAJWwWAvu_nEwl7418adpFQmK67r3UQIAYBjBRwte_5KtkydERsOIKSa4RxmPmJdzXYcKVzDjAM79ZVcN3QewG6J-U4cisn9gbwl6NEVxNdmPk1-pT0-1WKnw/s320/11a.gif&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;&lt;/p&gt;                  &lt;div&gt;Y en el tercer paso NotficarCiudadanoReleased repetimos los pasos que llevamos a cabo para la primera etapa de nuestro workflow.                    &lt;br /&gt;                    &lt;br /&gt;No olvidar habilitar el workflow, haciendo clic en el bot&amp;#243;n Enable al tener seleccionado el flujo de aprobaci&amp;#243;n. Con esto ya estamos listos para construir nuestro cliente externo. Pero antes vamos a realizar un paso previo en la consola de UCM. Debido a que vamos a permitir que un usuario en general adicione contenido (aunque no sea lo que har&amp;#237;amos en producci&amp;#243;n), vamos a habilitar que un usuario se registre autom&amp;#225;ticamente si es la primera vez que adiciona contenido.                     &lt;br /&gt;                    &lt;br /&gt;Entramos a la consola de UCM y vamos al Men&amp;#250; Administration&amp;#224;Soap Wsdls para revisar aquellos servicios de UCM que est&amp;#225;n habilitados a trav&amp;#233;s de Web Services. Ac&amp;#225; vemos que aparece el servicio de hacer CheckIn un documento, pero no el de registrar un usuario.&lt;/div&gt;                  &lt;div&gt;                   &lt;br /&gt;&lt;/div&gt;                 &lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgffQT2GqCq5xFV2qwwJNk20tJ0ESPVoYN864acEgCGuj1L8FVUD258mOlinvoc74fgsQmRuMeHPGAWhq5xWTSuBAEg9sqbfuW-eLt0Huu7JFlfq2B_LXcNVA9fj-owyiQ7tZAgbt4oTz4/s1600-h/12.gif&quot;&gt;&lt;/a&gt;                  &lt;p align=&quot;center&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi_btgCil36BOtv_6nixMX9ygy_FWU1-srlmy_QVmPujbPlaSXUyRWTWti4ym6t5N9tPdzQIgdCxOJKhC_NPOrICs1lqQLtE2tJiJvCUi5MtDaJQOJSwIk5XzmCGObiz2QJoFzuvP6CYnA/s1600-h/13.gif&quot;&gt;&lt;img id=&quot;BLOGGER_PHOTO_ID_5235731545611742898&quot; style=&quot;cursor: hand&quot; alt=&quot;&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi_btgCil36BOtv_6nixMX9ygy_FWU1-srlmy_QVmPujbPlaSXUyRWTWti4ym6t5N9tPdzQIgdCxOJKhC_NPOrICs1lqQLtE2tJiJvCUi5MtDaJQOJSwIk5XzmCGObiz2QJoFzuvP6CYnA/s320/13.gif&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;&lt;/p&gt;                  &lt;div&gt;Aqu&amp;#237; seleccionamos la Opci&amp;#243;n de crear un servicio, le llenamos sus datos b&amp;#225;sicos.&lt;/div&gt;                  &lt;p align=&quot;center&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg6vDi3dKjzfGVaw9UcK_4JmwGhRANC2r5tTjmsAhc6cpOWl-wfMdlKtVT7B4pr6Dfrpkesn2cuUbCiSvwsCTQsz5AEpgowBRnTumxDP57i6WYiZiH6_7sqwRm7Nk8nJVrbBJCUg4KbtbA/s1600-h/13a.gif&quot;&gt;&lt;img id=&quot;BLOGGER_PHOTO_ID_5235731548873569986&quot; style=&quot;cursor: hand&quot; alt=&quot;&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg6vDi3dKjzfGVaw9UcK_4JmwGhRANC2r5tTjmsAhc6cpOWl-wfMdlKtVT7B4pr6Dfrpkesn2cuUbCiSvwsCTQsz5AEpgowBRnTumxDP57i6WYiZiH6_7sqwRm7Nk8nJVrbBJCUg4KbtbA/s320/13a.gif&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;&lt;/p&gt;                  &lt;div&gt;Luego seleccionamos la opci&amp;#243;n de A&amp;#241;adir un Servicio.&lt;/div&gt;                  &lt;p align=&quot;center&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjTA0eCz1BM1PdHVQVSo7QtTU4SpTcwyoueh8Gz1N7hcM1u8WFFTMOipCRMY_4MvGmJEZxFaY6QEsvcJTAbq7j76t1RCU-IkNpFVgut8BVlKC7OTk62YttxpPor1WG-U_9mOLHya6G1LtE/s1600-h/13b.gif&quot;&gt;&lt;img id=&quot;BLOGGER_PHOTO_ID_5235731550381212642&quot; style=&quot;cursor: hand&quot; alt=&quot;&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjTA0eCz1BM1PdHVQVSo7QtTU4SpTcwyoueh8Gz1N7hcM1u8WFFTMOipCRMY_4MvGmJEZxFaY6QEsvcJTAbq7j76t1RCU-IkNpFVgut8BVlKC7OTk62YttxpPor1WG-U_9mOLHya6G1LtE/s320/13b.gif&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;&lt;/p&gt;                  &lt;div&gt;El cual puede tener el nombre que queramos darle, pero el atributo de IdcService si debe corresponder al de un servicio definido en la documentaci&amp;#243;n del producto. Le a&amp;#241;adimos los par&amp;#225;metros descritos en la documentaci&amp;#243;n para este servicio del UCM y con esto ya tenemos expuesta como servicio web la funcionalidad de Registrar un usuario en UCM.                    &lt;br /&gt;                    &lt;br /&gt;Nuestro servicio ya nos debe salir en la lista de wsdls del UCM, nuestro ejemplo se llama prueba y debe mostrarnos el wsdl al seleccionarlo.&lt;/div&gt;                  &lt;div&gt;                   &lt;br /&gt;&lt;/div&gt;                  &lt;p align=&quot;center&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhFsQjm8ey2uHhoHSDHvhpap1n4QRstT03o-9puMK0TcYQiBl0nHHBztqjNK8XSmEtGsc4IbnxumJw-PbKpAfSA9q1OtNdfX_Y4ANQoEWOj-urLcFGif1a8IsaGQmjRNQJEJwoYQKZxVtc/s1600-h/13c.gif&quot;&gt;&lt;img id=&quot;BLOGGER_PHOTO_ID_5235731550100420130&quot; style=&quot;cursor: hand&quot; alt=&quot;&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhFsQjm8ey2uHhoHSDHvhpap1n4QRstT03o-9puMK0TcYQiBl0nHHBztqjNK8XSmEtGsc4IbnxumJw-PbKpAfSA9q1OtNdfX_Y4ANQoEWOj-urLcFGif1a8IsaGQmjRNQJEJwoYQKZxVtc/s320/13c.gif&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;&lt;/p&gt;                  &lt;div&gt;Con esto ya lo &amp;#250;nico que nos queda es contruir la aplicaci&amp;#243;n web que capturar&amp;#225; los datos e invocar&amp;#225; el servicio. Ac&amp;#225; vamos a Jdeveloper y creamos una aplicaci&amp;#243;n siguiendo el template de Web Application.                    &lt;br /&gt;                    &lt;br /&gt;Nuestra aplicaci&amp;#243;n es la m&amp;#225;s simple posible, s&amp;#243;lo tenemos un jsp que se llama a s&amp;#237; mismo sea que hubo fallo o &amp;#233;xito en la operaci&amp;#243;n contra UCM.                     &lt;br /&gt;&lt;/div&gt;                  &lt;p align=&quot;center&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiWqOl3324Rug1AaBUMJ7rcNbKTMkDtFDwYLHqBF1qiAFkdi8FI5DkXrgO3z6jJBjZrX9rAnzzLLV517IBmxL50GWGzkYX1tZ9hs5szKeI52n_NlSYQZzSidwR9WC_xM7g5rgBHKvh_tpw/s1600-h/14.gif&quot;&gt;&lt;img id=&quot;BLOGGER_PHOTO_ID_5235731553155981266&quot; style=&quot;cursor: hand&quot; alt=&quot;&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiWqOl3324Rug1AaBUMJ7rcNbKTMkDtFDwYLHqBF1qiAFkdi8FI5DkXrgO3z6jJBjZrX9rAnzzLLV517IBmxL50GWGzkYX1tZ9hs5szKeI52n_NlSYQZzSidwR9WC_xM7g5rgBHKvh_tpw/s320/14.gif&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;&lt;/p&gt;                  &lt;div&gt;Para acceder a los servicios Web podemos usar los asistentes de Jdeveloper para construir un Web Service proxy que nos facilite la interacci&amp;#243;n con cada uno de los servicios. Este asistente nos construye una serie de clases Java que esconden la complejidad de invocaci&amp;#243;n del webservice como si fuera un simple llamado a un m&amp;#233;todo Java, tambi&amp;#233;n nos crea un Cliente java que usa dicho proxy para simplificarnos m&amp;#225;s el trabajo.                    &lt;br /&gt;                    &lt;br /&gt;A este c&amp;#243;digo que genera el asistente del Web Service Proxy solo nos faltar&amp;#237;a a&amp;#241;adirle los datos de conexi&amp;#243;n al web service, incluyendo los tokens de seguridad. Para ello configuramos los stubs, ac&amp;#225; podemos dejarlo tan flexible como queramos al leer las propiedades de conexi&amp;#243;n al WS desde un properties. Para este ejercicio r&amp;#225;pido quem&amp;#233; dicho c&amp;#243;digo en el Stub.                     &lt;br /&gt;                    &lt;br /&gt;&lt;span style=&quot;font-family: courier new&quot;&gt;public CheckInSoap_Stub(HandlerChain handlerChain) {                      &lt;br /&gt;super(handlerChain);                       &lt;br /&gt;_setProperty(USERNAME_PROPERTY, &amp;quot;sysadmin&amp;quot;);                       &lt;br /&gt;_setProperty(PASSWORD_PROPERTY, &amp;quot;idc&amp;quot;);                       &lt;br /&gt;_setProperty(ENDPOINT_ADDRESS_PROPERTY, &amp;quot;http://RST-ACT3CT2/idc/idcplg&amp;quot;);                       &lt;br /&gt;setSoapVersion(SOAPVersion.SOAP_11);                       &lt;br /&gt;setServiceName( new QName(&amp;quot;http://www.stellent.com/CheckIn/&amp;quot;,&amp;quot;CheckIn&amp;quot;));                       &lt;br /&gt;setPortName( new QName(&amp;quot;http://www.stellent.com/CheckIn/&amp;quot;,&amp;quot;CheckInSoap&amp;quot;));                       &lt;br /&gt;setupConfig(&amp;quot;proxy/runtime/CheckInSoap_Stub.xml&amp;quot;);                       &lt;br /&gt;}                       &lt;br /&gt;&lt;/span&gt;                    &lt;br /&gt;No ser&amp;#237;a m&amp;#225;s por hacer en la capa de servicios de negocio. Ahora construimos el cuerpo de nuestro Jsp, con un formulario sencillo.                     &lt;br /&gt;&lt;/div&gt;                  &lt;p align=&quot;center&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEghzjZscXnjZgNXo2dJfOMvb5YlkauxnsG1TUqgzPEXi2uqqZavkhn6PSXel17ERP9wl2v9-3pb6FPM199cb6Cfh7zBpV5NV0RYUgE4XQ6D_-WidMnn5UMXuOabH5zq2DJVuDah3JR5kz8/s1600-h/14a.gif&quot;&gt;&lt;img id=&quot;BLOGGER_PHOTO_ID_5235732867136845954&quot; style=&quot;cursor: hand&quot; alt=&quot;&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEghzjZscXnjZgNXo2dJfOMvb5YlkauxnsG1TUqgzPEXi2uqqZavkhn6PSXel17ERP9wl2v9-3pb6FPM199cb6Cfh7zBpV5NV0RYUgE4XQ6D_-WidMnn5UMXuOabH5zq2DJVuDah3JR5kz8/s320/14a.gif&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;&lt;/p&gt;                  &lt;div&gt;Ac&amp;#225; capturaremos los metadatos a enviar al UCM y al oprimir el bot&amp;#243;n enviar invocamos un m&amp;#233;todo del backing bean que realiza una sencilla validaci&amp;#243;n de los campos y luego registra al usuario, para despu&amp;#233;s aportar el documento.                    &lt;br /&gt;                    &lt;br /&gt;El Bot&amp;#243;n Enviar invoca al m&amp;#233;todo validar() del backing bean:                     &lt;br /&gt;                    &lt;br /&gt;&lt;span style=&quot;font-family: times new roman&quot;&gt;&lt;span style=&quot;font-family: courier new&quot;&gt;public String validar() {                        &lt;br /&gt;System.out.println(&amp;quot;Entrando al m&#39;etodo validar&amp;quot;);                         &lt;br /&gt;String next = &amp;quot;success&amp;quot;;                         &lt;br /&gt;try{                         &lt;br /&gt;                        &lt;br /&gt;if (archivo == null archivo.getValue() == null)                         &lt;br /&gt;throw new Exception(&amp;quot;Debe seleccionar un archivo&amp;quot;);                         &lt;br /&gt;if (nombre == null nombre.getValue() == null)                         &lt;br /&gt;throw new Exception(&amp;quot;Debe digitar su nombre&amp;quot;);                         &lt;br /&gt;if (cc == null cc == null)                         &lt;br /&gt;throw new Exception(&amp;quot;Debe digitar su documento de identidad&amp;quot;);                         &lt;br /&gt;                        &lt;br /&gt;registerUser();                         &lt;br /&gt;                        &lt;br /&gt;String result = checkInFile();                         &lt;br /&gt;                        &lt;br /&gt;FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(&amp;quot;El expediente fue enviado con exito. Detalle [&amp;quot;+ result + &amp;quot;]&amp;quot;));                         &lt;br /&gt;}                         &lt;br /&gt;catch(Exception e){                         &lt;br /&gt;next = &amp;quot;failure&amp;quot;;                         &lt;br /&gt;FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_FATAL,e.getMessage(),null));                         &lt;br /&gt;e.printStackTrace();                         &lt;br /&gt;}                         &lt;br /&gt;return next;                         &lt;br /&gt;}&lt;/span&gt;                       &lt;br /&gt;&lt;/span&gt;                    &lt;br /&gt;Despues de la validaci&amp;#243;n se invoca el m&amp;#233;todo registerUser() que hace la invocaci&amp;#243;n a nuestro servicio prueba usando el cliente que nos cre&amp;#243; el asistente.                     &lt;br /&gt;                    &lt;br /&gt;&lt;span style=&quot;font-family: courier new&quot;&gt;private void registerUser() throws Exception {                      &lt;br /&gt;PruebaSoapClient port = new PruebaSoapClient();                       &lt;br /&gt;System.out.println(&amp;quot;Llamando a : &amp;quot; + port.getEndpoint());                       &lt;br /&gt;String dName, dFullName, dPassword,dEmail;                       &lt;br /&gt;IdcPropertyList extraProps = null;                       &lt;br /&gt;                      &lt;br /&gt;dFullName = (String)nombre.getValue();                       &lt;br /&gt;dName = (String)cc.getValue();                       &lt;br /&gt;dPassword = dName;                       &lt;br /&gt;dEmail = (String)email.getValue();                       &lt;br /&gt;                      &lt;br /&gt;port.prueba(dName, dFullName, dPassword, dEmail, extraProps);                       &lt;br /&gt;}&lt;/span&gt;                     &lt;br /&gt;                    &lt;br /&gt;                    &lt;br /&gt;Y posteriormente haremos el checkIn del archivo, enviando adem&amp;#225;s del contenido la metadata capturada (Atenci&amp;#243;n: Usando los nombres de los campos asignados por UCM, es decir x + nombreCampo).                     &lt;br /&gt;                    &lt;br /&gt;&lt;span style=&quot;font-family: courier new&quot;&gt;private String checkInFile() throws IOException, Exception                      &lt;br /&gt;{                       &lt;br /&gt;UploadedFile theFile = (UploadedFile) archivo.getValue();                       &lt;br /&gt;//Establecer conexion con el UCM y enviar los datos seteando el p_tipo = PRUEBA                       &lt;br /&gt;CheckInSoapClient port = new CheckInSoapClient();                       &lt;br /&gt;System.out.println(&amp;quot;Llamando a : &amp;quot; + port.getEndpoint());                       &lt;br /&gt;String dDocName=null, dDocTitle=null, dDocType=null, dDocAuthor=null, dSecurityGroup=null, dDocAccount=null;                       &lt;br /&gt;IdcFile file = new IdcFile();                       &lt;br /&gt;IdcPropertyList customDocMetaData = new IdcPropertyList(), extraProps= new IdcPropertyList();                       &lt;br /&gt;                      &lt;br /&gt;// dDocName = &amp;quot;ImagenDocumento&amp;quot;;                       &lt;br /&gt;dDocTitle = &amp;quot;Expediente de &amp;quot;+((String)nombre.getValue());                       &lt;br /&gt;dDocType = &amp;quot;ADHR&amp;quot;;                       &lt;br /&gt;dDocAuthor = (String)cc.getValue();//&amp;quot;sysadmin&amp;quot;;                       &lt;br /&gt;dSecurityGroup = &amp;quot;PUBLIC&amp;quot;;                       &lt;br /&gt;dDocAccount = null;//&amp;quot;sysadmin&amp;quot;;                       &lt;br /&gt;                      &lt;br /&gt;file.setFileName(theFile.getFilename());                       &lt;br /&gt;byte[] contenido = getContenido(theFile.getInputStream());                       &lt;br /&gt;//file.setFileContent(uuencode(contenido, 0, contenido.length ));                       &lt;br /&gt;file.setFileContent(contenido);                       &lt;br /&gt;                      &lt;br /&gt;IdcProperty[] propiedades = new IdcProperty[4];                       &lt;br /&gt;IdcProperty prop = new IdcProperty();                       &lt;br /&gt;prop.setName(&amp;quot;xp_nombre&amp;quot;);                       &lt;br /&gt;prop.setValue((String)nombre.getValue());                       &lt;br /&gt;propiedades[0] = prop;                       &lt;br /&gt;prop = new IdcProperty();                       &lt;br /&gt;prop.setName(&amp;quot;xp_tipo&amp;quot;);                       &lt;br /&gt;prop.setValue(&amp;quot;PRUEBA&amp;quot;);                       &lt;br /&gt;propiedades[1] = prop;                       &lt;br /&gt;prop = new IdcProperty();                       &lt;br /&gt;prop.setName(&amp;quot;xp_cedula&amp;quot;);                       &lt;br /&gt;prop.setValue((String)cc.getValue());                       &lt;br /&gt;propiedades[2] = prop;                       &lt;br /&gt;prop = new IdcProperty();                       &lt;br /&gt;prop.setName(&amp;quot;xp_email&amp;quot;);                       &lt;br /&gt;prop.setValue((String)email.getValue());                       &lt;br /&gt;propiedades[3] = prop;                       &lt;br /&gt;                      &lt;br /&gt;customDocMetaData.setProperty(propiedades);                       &lt;br /&gt;extraProps = customDocMetaData;                       &lt;br /&gt;String result = port.checkInUniversal(dDocName, dDocTitle, dDocType, dDocAuthor, dSecurityGroup, dDocAccount, customDocMetaData, file, null, extraProps).getStatusInfo().getStatusMessage();                       &lt;br /&gt;return result;                       &lt;br /&gt;}                       &lt;br /&gt;&lt;/span&gt;                    &lt;br /&gt;Usamos estos m&amp;#233;todos auxiliaries para manipular el contenido del archive como lo require el UCM .                     &lt;br /&gt;                    &lt;br /&gt;                    &lt;br /&gt;&lt;span style=&quot;font-family: courier new&quot;&gt;private byte[] getContenido(InputStream is) throws Exception{                      &lt;br /&gt;                      &lt;br /&gt;return copyToByteArray(is);                       &lt;br /&gt;}                       &lt;br /&gt;                      &lt;br /&gt;/**                       &lt;br /&gt;* Copy the contents of the given InputStream into a new byte array.                       &lt;br /&gt;* @param in the stream to copy from                       &lt;br /&gt;* @return the new byte array that has been copied to                       &lt;br /&gt;* @throws IOException in case of I/O errors                       &lt;br /&gt;*/                       &lt;br /&gt;public static byte[] copyToByteArray(InputStream in) throws IOException {                       &lt;br /&gt;ByteArrayOutputStream out = new ByteArrayOutputStream();                       &lt;br /&gt;copy(in, out);                       &lt;br /&gt;return out.toByteArray();                       &lt;br /&gt;}                       &lt;br /&gt;                      &lt;br /&gt;/**                       &lt;br /&gt;* Copy the contents of the given Reader to the given Writer.                       &lt;br /&gt;* Closes both when done.                       &lt;br /&gt;* @param in the Reader to copy from                       &lt;br /&gt;* @param out the Writer to copy to                       &lt;br /&gt;* @throws IOException in case of I/O errors                       &lt;br /&gt;*/                       &lt;br /&gt;public static void copy(InputStream in, OutputStream out) throws IOException {                       &lt;br /&gt;try {                       &lt;br /&gt;byte[] buffer = new byte[BLOCK_SIZE];                       &lt;br /&gt;int nrOfBytes = -1;                       &lt;br /&gt;while ((nrOfBytes = in.read(buffer)) != -1) {                       &lt;br /&gt;out.write(buffer, 0, nrOfBytes);                       &lt;br /&gt;}                       &lt;br /&gt;out.flush();                       &lt;br /&gt;}                       &lt;br /&gt;                      &lt;br /&gt;finally {                       &lt;br /&gt;try {                       &lt;br /&gt;in.close();                       &lt;br /&gt;}                       &lt;br /&gt;catch (IOException ex) {                       &lt;br /&gt;System.out.println(&amp;quot;Could not close Reader&amp;quot;);                       &lt;br /&gt;}                       &lt;br /&gt;try {                       &lt;br /&gt;out.close();                       &lt;br /&gt;}                       &lt;br /&gt;catch (IOException ex) {                       &lt;br /&gt;System.out.println(&amp;quot;Could not close Writer&amp;quot;);                       &lt;br /&gt;}                       &lt;br /&gt;}                       &lt;br /&gt;}                       &lt;br /&gt;&lt;/span&gt;                    &lt;br /&gt;                    &lt;br /&gt;Con esto ya tenemos todo listo solo debemos correr nuestra aplicaci&amp;#243;n cliente y obtendremos un escenario b&amp;#225;sico de interacci&amp;#243;n con UCM a trav&amp;#233;s de servicios Web. Ac&amp;#225; anexo un viewlet con un escenario de uso, enfocado al tema de ventanilla &amp;#250;nica de una entidad gubernamental.                     &lt;br /&gt;                    &lt;br /&gt;                    &lt;br /&gt;                    &lt;br /&gt;                    &lt;br /&gt;&lt;embed src=&quot;http://www.youtube.com/v/meT62nMcjX0&quot; width=&quot;425&quot; height=&quot;350&quot; type=&quot;application/x-shockwave-flash&quot; /&gt;                     &lt;br /&gt;&lt;/div&gt;                  &lt;div&gt;                   &lt;br /&gt;&lt;/div&gt;                  &lt;div&gt;&lt;/div&gt;                  &lt;div&gt;                   &lt;br /&gt;&lt;/div&gt;                  &lt;div&gt;&lt;/div&gt;               &lt;/div&gt;             &lt;/div&gt;           &lt;/div&gt;         &lt;/div&gt;       &lt;/div&gt;     &lt;/div&gt;   &lt;/div&gt; &lt;/div&gt;  </content><link rel='replies' type='application/atom+xml' href='http://od-tech.blogspot.com/feeds/8460874350691989443/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/8445877885055660465/8460874350691989443' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8445877885055660465/posts/default/8460874350691989443'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8445877885055660465/posts/default/8460874350691989443'/><link rel='alternate' type='text/html' href='http://od-tech.blogspot.com/2009/02/aportando-contenido-en-ucm-traves-de.html' title='Aportando contenido en UCM a través de Web Services'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjKUjP_IMDztmMvtJl_U_jWSs2x8GqLv-ztLlTigOdUVQ85WKG4TOzDm0dtBilkzy9TMBER3MK1NjdkIz46gzGZNjX3fLHfiw-86y9GB3Is4k4fx0BzZcSQu-pRPkWG1gWtv3I7skiv2rA/s72-c/1.gif" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8445877885055660465.post-7740621494895345424</id><published>2009-02-18T15:10:00.001-05:00</published><updated>2009-02-18T15:10:24.866-05:00</updated><title type='text'>Pasando parámetros a Application Express (APEX)</title><content type='html'>Este es un tip corto, estuvimos con &lt;a href=&quot;http://www.srjboca.blogspot.com/&quot;&gt;John Bocachica &lt;/a&gt;trabajando en una aplicaci&amp;#243;n en APEX en la cual se requer&amp;#237;a recibir a trav&amp;#233;s de la url algunos par&amp;#225;metros que llenaran unos campos de un formulario web.   &lt;br /&gt;  &lt;br /&gt;Lo primero que se nos vino a la mente fue usar un paso de par&amp;#225;metros por el m&amp;#233;todo GET est&amp;#225;ndar (es decir url?param_name=param_value&amp;amp;param2_name=param2_value), pero APEX de hecho utiliza un solo par&amp;#225;metro y si le a&amp;#241;adimos otro nos arroja error http 404.   &lt;br /&gt;  &lt;br /&gt;As&amp;#237; que luego de consultar en varios sitios y en la documentaci&amp;#243;n de la herramienta llegamos a la soluci&amp;#243;n que documento en este post.   &lt;br /&gt;Para reproducirlo simplemente creamos una aplicaci&amp;#243;n en APEX, con una p&amp;#225;gina sencilla que tenga, por ejemplo, un formulario de dos campos: un textField y un dropdownList, a los que nombraremos en tiempo de edici&amp;#243;n P1_CAMPO y P1_LIST respectivamente como se muestra en la figura.   &lt;br /&gt;  &lt;br /&gt;  &lt;p align=&quot;center&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi-xusKL3qOCyqXRW8QVGbvkFx4nve6g7EnyfF3vg5Em_OYZo_xmQ8xkavDi7p_YVGCDjAIDVaH8VzWPqBCLhEeWP2nBg1CWNmRr2Qv1bbm6AEur-F2etFdVj5E5E6PfQ85ImNMcrL5viE/s1600-h/1.JPG&quot;&gt;&lt;img id=&quot;BLOGGER_PHOTO_ID_5240084668497944514&quot; style=&quot;cursor: hand&quot; alt=&quot;&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi-xusKL3qOCyqXRW8QVGbvkFx4nve6g7EnyfF3vg5Em_OYZo_xmQ8xkavDi7p_YVGCDjAIDVaH8VzWPqBCLhEeWP2nBg1CWNmRr2Qv1bbm6AEur-F2etFdVj5E5E6PfQ85ImNMcrL5viE/s320/1.JPG&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;br /&gt;Veamos este formulario en ejecuci&amp;#243;n:   &lt;br /&gt;  &lt;br /&gt;  &lt;br /&gt;  &lt;p align=&quot;center&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgyK_dY9Gfh5aB_Z39l7OagLFXaTmLBw-LwcTGFOKZE3FqHsGLg8Lh9xSuNnsSl6Vib03y_mm3d7YTFlhDigLxVhqmcBs1j8d5wO1HHeG8TqOr9o-mlJAQkpT16sADyzoYheItIADfQmDM/s1600-h/2.JPG&quot;&gt;&lt;img id=&quot;BLOGGER_PHOTO_ID_5240084669994605826&quot; style=&quot;cursor: hand&quot; alt=&quot;&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgyK_dY9Gfh5aB_Z39l7OagLFXaTmLBw-LwcTGFOKZE3FqHsGLg8Lh9xSuNnsSl6Vib03y_mm3d7YTFlhDigLxVhqmcBs1j8d5wO1HHeG8TqOr9o-mlJAQkpT16sADyzoYheItIADfQmDM/s320/2.JPG&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;&lt;/p&gt; Y detallemos la URL de la p&amp;#225;gina: &lt;a href=&quot;http://apex.oracle.com/pls/otn/f?p=54139:1:3712345573379044&quot;&gt;http://apex.oracle.com/pls/otn/f?p=54139:1:3712345573379044&lt;/a&gt;:::::   &lt;br /&gt;  &lt;br /&gt;El &amp;#250;nico par&amp;#225;metro que acepta APEX es este llamado p y entonces c&amp;#243;mo le pasamos m&amp;#225;s par&amp;#225;metros? El secreto est&amp;#225; en esos :::: al final del valor del par&amp;#225;metro p ..   &lt;br /&gt;  &lt;br /&gt;Veamos lo que significa cada campo:   &lt;br /&gt;  &lt;br /&gt;f?p=1:2:3:4:5:6:7:8   &lt;br /&gt;  &lt;br /&gt;1. Id de la aplicaci&amp;#243;n a acceder   &lt;br /&gt;2. Id de la p&amp;#225;gina a desplegar   &lt;br /&gt;3. Id de la sesi&amp;#243;n del usuario (ac&amp;#225; podemos usar por ejemplo &amp;quot;0&amp;quot; y se cambiar&amp;#225; autom&amp;#225;ticamente por una sesi&amp;#243;n interna de APEX, o podemos inclusive usar una variable como &amp;amp;APP_SESSION.)   &lt;br /&gt;4. Aun no s&amp;#233; para qu&amp;#233; se usa (cuando encuentre el dato les cuento...o si lo saben me cuentan ;) )   &lt;br /&gt;5. Indicador que muestra o esconde la informaci&amp;#243;n de debug de APEX (valores: YES o NO)   &lt;br /&gt;6. Id de la p&amp;#225;gina cuyo cach&amp;#233; de valores de los &amp;#237;tems ser&amp;#225; reseteado (si se deja vac&amp;#237;o no resetea el cach&amp;#233; de ninguna p&amp;#225;gina)   &lt;br /&gt;7. Array separado por comas con los nombres de los par&amp;#225;metros cuyos valores queremos actualizar de la p&amp;#225;gina.   &lt;br /&gt;8. Array separado por comas con los valores de los par&amp;#225;metros a actualizar. El orden debe coincidir como declaramos los campos a actualizar.   &lt;br /&gt;Con esta info recopilada simplemente reescribimos nuestra URL para pasar valores a nuestros dos campos as&amp;#237;:   &lt;br /&gt;  &lt;br /&gt;&lt;a href=&quot;http://apex.oracle.com/pls/otn/f?p=54139:1:0::NO::P1_CAMPO,P1_LISTA:Pedro,3&quot;&gt;http://apex.oracle.com/pls/otn/f?p=54139:1:0::NO::P1_CAMPO,P1_LISTA:Pedro,3&lt;/a&gt;   &lt;br /&gt;  &lt;br /&gt;  &lt;br /&gt;  &lt;br /&gt;  &lt;p align=&quot;center&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhy5rjYpUov24pln-LUVkXjO-m8SC-CHMLmdJQ5kxD8JVSWCcU-MjW71-nhHNd_hLO6XO2jfqfYBPf28eRBBVf8zKa3f04C07nHbyJ38VmIBhKXCQTkFGuZUiafkWRzhIBmy1U06KoDMDM/s1600-h/3.JPG&quot;&gt;&lt;img id=&quot;BLOGGER_PHOTO_ID_5240084673240648050&quot; style=&quot;cursor: hand&quot; alt=&quot;&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhy5rjYpUov24pln-LUVkXjO-m8SC-CHMLmdJQ5kxD8JVSWCcU-MjW71-nhHNd_hLO6XO2jfqfYBPf28eRBBVf8zKa3f04C07nHbyJ38VmIBhKXCQTkFGuZUiafkWRzhIBmy1U06KoDMDM/s320/3.JPG&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;&lt;/p&gt; Con esto termina este post espero les sea de utilidad, saludos.   &lt;br /&gt;  &lt;br /&gt;  &lt;br /&gt;  &lt;br /&gt;  &lt;br /&gt;  &lt;br /&gt;  &lt;br /&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEicQ5Y54BgRmP23XPj-ff0QCS_TtwIZiyc60cHHbI14UHTbzXd4iud8b9JsP0qIlslT0-QeUF2RKG-c10o7BcrQk6xdKDEMfpeXbNVDXzpn5dtOR9E72ukc04C8TTV85jy9-L008kF6hqk/s1600-h/2.JPG&quot;&gt;&lt;/a&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEikAgkAdWhmE-xLz7LVWLfr0mpPP1nMjnF2J3fvClF48jIbwl9tceP97daXxVgSx_jnvO4obuWwawmm6n0RQAjHSDWtGYM2D8qaZB8bvh3wONAGwVnlmYrD-GbKoZYRWDRm48Q9TtqDork/s1600-h/1.JPG&quot;&gt;&lt;/a&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjyoj4Vkkn77SrzMLhePqmgNwGuVFjeLR6fWA9ToLCzernUYNRpwpIinizx3jAUOzS8Pl_tsbB1P-Z84sMDLMiDkv8tAggFb339Tyoe6cKTQ-RXS7WndgAtf-fDWJMfvrWq-YZ_nxuiQBY/s1600-h/3.JPG&quot;&gt;&lt;/a&gt;  </content><link rel='replies' type='application/atom+xml' href='http://od-tech.blogspot.com/feeds/7740621494895345424/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/8445877885055660465/7740621494895345424' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8445877885055660465/posts/default/7740621494895345424'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8445877885055660465/posts/default/7740621494895345424'/><link rel='alternate' type='text/html' href='http://od-tech.blogspot.com/2009/02/pasando-parametros-application-express.html' title='Pasando parámetros a Application Express (APEX)'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi-xusKL3qOCyqXRW8QVGbvkFx4nve6g7EnyfF3vg5Em_OYZo_xmQ8xkavDi7p_YVGCDjAIDVaH8VzWPqBCLhEeWP2nBg1CWNmRr2Qv1bbm6AEur-F2etFdVj5E5E6PfQ85ImNMcrL5viE/s72-c/1.JPG" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8445877885055660465.post-4848223864527044190</id><published>2009-02-18T15:09:00.001-05:00</published><updated>2009-02-18T15:09:04.091-05:00</updated><title type='text'>Usar un gráfico personalizado en BI Publisher</title><content type='html'>&lt;p&gt;En este post les comparto una soluci&amp;#243;n que encontr&amp;#233; cuando intentaba colocar un gr&amp;#225;fico en un reporte de BI publisher pero la estructura de los datos no me permit&amp;#237;a usar f&amp;#225;cilmente el wizard que este nos brinda.&lt;/p&gt;  &lt;p&gt;La estructura de mi dataSet, que export&amp;#233; de BI Publisher e import&amp;#233; en mi Word, es plana, es decir no hay estructuras anidadas. Y necesitaba comparar gr&amp;#225;ficamente algunos datos que representaban un registro de la muestra, contra otros datos que representaban el promedio del grupo al que pertenec&amp;#237;a el registro, pero todos estos datos ven&amp;#237;an en el mismo nivel del dataSet.&lt;/p&gt;  &lt;p&gt;Esta es una parte de la estructura del dataSet:&lt;/p&gt;  &lt;p&gt;&lt;span style=&quot;font-size: 78%&quot;&gt;&lt;em&gt;&amp;lt;ROWSET&amp;gt;        &lt;br /&gt;&amp;lt;ROW&amp;gt;         &lt;br /&gt;&amp;lt;ID&amp;gt;348&amp;lt;/ID&amp;gt;         &lt;br /&gt;&amp;lt;CLIENTE&amp;gt;Oracle Direct&amp;lt;/CLIENTE&amp;gt;         &lt;br /&gt;&amp;lt;TODAY&amp;gt;02/12/2008&amp;lt;/TODAY&amp;gt;         &lt;br /&gt;&amp;lt;SECTOR&amp;gt;Tecnolog&amp;#195;&amp;#173;a&amp;lt;/SECTOR&amp;gt;         &lt;br /&gt;&amp;lt;NUMEMP&amp;gt;220&amp;lt;/NUMEMP&amp;gt;         &lt;br /&gt;&amp;lt;FACTURACION&amp;gt;999999&amp;lt;/FACTURACION&amp;gt;         &lt;br /&gt;&amp;lt;CONTACTO&amp;gt;Carlos Sarmiento&amp;lt;/CONTACTO&amp;gt;         &lt;br /&gt;&amp;lt;FECHA&amp;gt;2008-08-01T00:00:00.000-05:00&amp;lt;/FECHA&amp;gt;         &lt;br /&gt;&amp;lt;PAIS&amp;gt;Colombia&amp;lt;/PAIS&amp;gt;         &lt;br /&gt;&amp;lt;CREATEDBY&amp;gt;Pedro Gomez&amp;lt;/CREATEDBY&amp;gt;         &lt;br /&gt;&amp;lt;MUESTRA&amp;gt;16 empresas del sector, entre 200 y 300 empleados&amp;lt;/MUESTRA&amp;gt;         &lt;br /&gt;&amp;lt;HA&amp;gt;4&amp;lt;/HA&amp;gt;         &lt;br /&gt;&amp;lt;DR&amp;gt;6&amp;lt;/DR&amp;gt;         &lt;br /&gt;&amp;lt;PORTAL&amp;gt;6&amp;lt;/PORTAL&amp;gt;         &lt;br /&gt;&amp;lt;CONTENT&amp;gt;4&amp;lt;/CONTENT&amp;gt;         &lt;br /&gt;&amp;lt;BI&amp;gt;8&amp;lt;/BI&amp;gt;         &lt;br /&gt;&amp;lt;EMAIL&amp;gt;5&amp;lt;/EMAIL&amp;gt;         &lt;br /&gt;&amp;lt;SOA&amp;gt;6&amp;lt;/SOA&amp;gt;         &lt;br /&gt;&amp;lt;SECURITY&amp;gt;6&amp;lt;/SECURITY&amp;gt;         &lt;br /&gt;&amp;lt;MANAGEABILITY&amp;gt;9&amp;lt;/MANAGEABILITY&amp;gt;         &lt;br /&gt;&amp;lt;OBSOLESCENCE&amp;gt;7&amp;lt;/OBSOLESCENCE&amp;gt;         &lt;br /&gt;&amp;lt;COUNT_R2.ID_&amp;gt;16&amp;lt;/COUNT_R2.ID_&amp;gt;         &lt;br /&gt;&amp;lt;DIFFHA&amp;gt;1&amp;lt;/DIFFHA&amp;gt;         &lt;br /&gt;&amp;lt;DIFFDR&amp;gt;2.6&amp;lt;/DIFFDR&amp;gt;         &lt;br /&gt;&amp;lt;DIFFPORTAL&amp;gt;1.9&amp;lt;/DIFFPORTAL&amp;gt;         &lt;br /&gt;&amp;lt;DIFFCONTENT&amp;gt;.7&amp;lt;/DIFFCONTENT&amp;gt;         &lt;br /&gt;&amp;lt;DIFFBI&amp;gt;5.1&amp;lt;/DIFFBI&amp;gt;         &lt;br /&gt;&amp;lt;DIFFEMAIL&amp;gt;.5&amp;lt;/DIFFEMAIL&amp;gt;         &lt;br /&gt;&amp;lt;DIFFSOA&amp;gt;2.9&amp;lt;/DIFFSOA&amp;gt;         &lt;br /&gt;&amp;lt;DIFFSEC&amp;gt;2.1&amp;lt;/DIFFSEC&amp;gt;         &lt;br /&gt;&amp;lt;DIFFMAN&amp;gt;5.1&amp;lt;/DIFFMAN&amp;gt;         &lt;br /&gt;&amp;lt;DIFFOBS&amp;gt;1.4&amp;lt;/DIFFOBS&amp;gt;         &lt;br /&gt;&amp;lt;AVGHA&amp;gt;3&amp;lt;/AVGHA&amp;gt;         &lt;br /&gt;&amp;lt;AVGDR&amp;gt;3.375&amp;lt;/AVGDR&amp;gt;         &lt;br /&gt;&amp;lt;AVGPORTAL&amp;gt;4.063&amp;lt;/AVGPORTAL&amp;gt;         &lt;br /&gt;&amp;lt;AVGCONTENT&amp;gt;3.313&amp;lt;/AVGCONTENT&amp;gt;         &lt;br /&gt;&amp;lt;AVGBI&amp;gt;2.875&amp;lt;/AVGBI&amp;gt;         &lt;br /&gt;&amp;lt;AVGEMAIL&amp;gt;4.5&amp;lt;/AVGEMAIL&amp;gt;         &lt;br /&gt;&amp;lt;AVGSOA&amp;gt;3.063&amp;lt;/AVGSOA&amp;gt;         &lt;br /&gt;&amp;lt;AVGSEC&amp;gt;3.867&amp;lt;/AVGSEC&amp;gt;         &lt;br /&gt;&amp;lt;AVGMAN&amp;gt;3.867&amp;lt;/AVGMAN&amp;gt;         &lt;br /&gt;&amp;lt;AVGOBS&amp;gt;5.6&amp;lt;/AVGOBS&amp;gt;         &lt;br /&gt;&amp;lt;/ROW&amp;gt;         &lt;br /&gt;&amp;lt;/ROWSET&amp;gt;&lt;/em&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;Por cada fila del RowSet se expedir&amp;#237;a un documento con la comparaci&amp;#243;n del registro(las columnas HA, DR, PORTAL, CONTENT, BI, etc.) contra el promedio del grupo (AVGHA, AVGDR, AVGPORTAL, AVGCONTENT, AVGBI, etc..), pero al usar el wizard de inserci&amp;#243;n de gr&amp;#225;fico no nos es posible expresar ese requerimiento, ya que maneja valores y series lo cual no puedo hacer corresponder a mi estructura de datos plana.&lt;/p&gt;  &lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgFwqX6D9IGn_-TuYN_Tmenpbk85PmmJj_uJimE-_3FY8UhSbeDr2v7TuGb6TcYFs3GVxxdtM1-v6Fh_vHVZncLvvqV7XACdd5EmF4GTyiKeSizOe2_jfLDbagdCBBJGB-JNa0gbrEnIKHr/&quot;&gt;&lt;img style=&quot;border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px&quot; height=&quot;250&quot; alt=&quot;image&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiLKkTIm8nnTObp5J3j41rWA-XwOrJ4jwsPpD8RWzbNDdyq9nMKvL2SpoTPoCT6J6gXkXqCCWVmxisYQNiUKKiBAyFlQjvUNV6g9RhprtX-iwr7ELqJqibn29KxdKqDhvCjyl22iQu17Pz1/&quot; width=&quot;386&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;As&amp;#237; que requerimos modificar a mano los valores a mostrar en nuestra gr&amp;#225;fica. Esto lo hacemos as&amp;#237;:&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;Insertamos una imagen cualquiera en el sitio que queremos desplegar la gr&amp;#225;fica personalizada. &lt;/li&gt;    &lt;li&gt;Ajustamos el tama&amp;#241;o de dicha imagen ya que este ser&amp;#225; el tama&amp;#241;o total de nuestra gr&amp;#225;fica. &lt;/li&gt;    &lt;li&gt;Hacemos clic derecho sobre la imagen y vamos a la opci&amp;#243;n de formateo de la imagen (Format Image) &lt;/li&gt;    &lt;li&gt;All&amp;#237; nos vamos al tab de texto alternativo (Alt Text) &lt;/li&gt;    &lt;li&gt;Aqu&amp;#237; podemos colocar y modificar a nuestro antojo la estructura xml que representa la gr&amp;#225;fica que queramos situar. En mi caso: &lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;&lt;em&gt;&lt;span style=&quot;font-size: 78%&quot;&gt;chart:        &lt;br /&gt;&amp;lt;Graph graphType=&amp;quot;RADAR_LINE&amp;quot; depthAngle=&amp;quot;150&amp;quot; depthRadius=&amp;quot;8&amp;quot; pieDepth=&amp;quot;130&amp;quot; pieTilt=&amp;quot;120&amp;quot; seriesEffect=&amp;quot;SE_AUTO_GRADIENT&amp;quot;&amp;gt;         &lt;br /&gt;&amp;lt;Title text=&amp;quot;Comparacion con la media&amp;quot; visible=&amp;quot;true&amp;quot; horizontalAlignment=&amp;quot;CENTER&amp;quot;/&amp;gt;         &lt;br /&gt;&amp;lt;LocalGridData colCount=&amp;quot;10&amp;quot; rowCount=&amp;quot;2&amp;quot;&amp;gt;         &lt;br /&gt;&amp;lt;RowLabels&amp;gt;         &lt;br /&gt;&amp;lt;Label&amp;gt;&amp;lt;xsl:value-of select=&amp;quot;//CLIENTE&amp;quot;/&amp;gt;&amp;lt;/Label&amp;gt;         &lt;br /&gt;&amp;lt;Label&amp;gt;Empresas del sector&amp;lt;/Label&amp;gt;         &lt;br /&gt;&amp;lt;/RowLabels&amp;gt;         &lt;br /&gt;&amp;lt;ColLabels&amp;gt;         &lt;br /&gt;&amp;lt;Label&amp;gt;Alta disponibilidad&amp;lt;/Label&amp;gt;         &lt;br /&gt;&amp;lt;Label&amp;gt;Continuidad de Negocio&amp;lt;/Label&amp;gt;         &lt;br /&gt;&amp;lt;Label&amp;gt;Intranet / Extranet / Portales&amp;lt;/Label&amp;gt;         &lt;br /&gt;&amp;lt;Label&amp;gt;Gesti&amp;#243;n de Contenido&amp;lt;/Label&amp;gt;         &lt;br /&gt;&amp;lt;Label&amp;gt;Inteligencia de Negocio&amp;lt;/Label&amp;gt;         &lt;br /&gt;&amp;lt;Label&amp;gt;Email y Colaboraci&amp;#243;n&amp;lt;/Label&amp;gt;         &lt;br /&gt;&amp;lt;Label&amp;gt;Integraci&amp;#243;n y SOA&amp;lt;/Label&amp;gt;         &lt;br /&gt;&amp;lt;Label&amp;gt;Seguridad&amp;lt;/Label&amp;gt;         &lt;br /&gt;&amp;lt;Label&amp;gt;Manejabilidad&amp;lt;/Label&amp;gt;         &lt;br /&gt;&amp;lt;Label&amp;gt;Adecuaci&amp;#243;n Tecnol&amp;#243;gica&amp;lt;/Label&amp;gt;         &lt;br /&gt;&amp;lt;/ColLabels&amp;gt;         &lt;br /&gt;&amp;lt;DataValues&amp;gt;         &lt;br /&gt;&amp;lt;RowData&amp;gt;         &lt;br /&gt;&amp;lt;Cell&amp;gt;&amp;lt;xsl:value-of select=&amp;quot;//HA&amp;quot;/&amp;gt;&amp;lt;/Cell&amp;gt;         &lt;br /&gt;&amp;lt;Cell&amp;gt;&amp;lt;xsl:value-of select=&amp;quot;//DR&amp;quot;/&amp;gt;&amp;lt;/Cell&amp;gt;         &lt;br /&gt;&amp;lt;Cell&amp;gt;&amp;lt;xsl:value-of select=&amp;quot;//PORTAL&amp;quot;/&amp;gt;&amp;lt;/Cell&amp;gt;         &lt;br /&gt;&amp;lt;Cell&amp;gt;&amp;lt;xsl:value-of select=&amp;quot;//CONTENT&amp;quot;/&amp;gt;&amp;lt;/Cell&amp;gt;         &lt;br /&gt;&amp;lt;Cell&amp;gt;&amp;lt;xsl:value-of select=&amp;quot;//BI&amp;quot;/&amp;gt;&amp;lt;/Cell&amp;gt;         &lt;br /&gt;&amp;lt;Cell&amp;gt;&amp;lt;xsl:value-of select=&amp;quot;//EMAIL&amp;quot;/&amp;gt;&amp;lt;/Cell&amp;gt;         &lt;br /&gt;&amp;lt;Cell&amp;gt;&amp;lt;xsl:value-of select=&amp;quot;//SOA&amp;quot;/&amp;gt;&amp;lt;/Cell&amp;gt;         &lt;br /&gt;&amp;lt;Cell&amp;gt;&amp;lt;xsl:value-of select=&amp;quot;//SECURITY&amp;quot;/&amp;gt;&amp;lt;/Cell&amp;gt;         &lt;br /&gt;&amp;lt;Cell&amp;gt;&amp;lt;xsl:value-of select=&amp;quot;//MANAGEABILITY&amp;quot;/&amp;gt;&amp;lt;/Cell&amp;gt;         &lt;br /&gt;&amp;lt;Cell&amp;gt;&amp;lt;xsl:value-of select=&amp;quot;//OBSOLESCENCE&amp;quot;/&amp;gt;&amp;lt;/Cell&amp;gt;         &lt;br /&gt;&amp;lt;/RowData&amp;gt;         &lt;br /&gt;&amp;lt;RowData&amp;gt;         &lt;br /&gt;&amp;lt;Cell&amp;gt;&amp;lt;xsl:value-of select=&amp;quot;//AVGHA&amp;quot;/&amp;gt;&amp;lt;/Cell&amp;gt;         &lt;br /&gt;&amp;lt;Cell&amp;gt;&amp;lt;xsl:value-of select=&amp;quot;//AVGDR&amp;quot;/&amp;gt;&amp;lt;/Cell&amp;gt;         &lt;br /&gt;&amp;lt;Cell&amp;gt;&amp;lt;xsl:value-of select=&amp;quot;//AVGPORTAL&amp;quot;/&amp;gt;&amp;lt;/Cell&amp;gt;         &lt;br /&gt;&amp;lt;Cell&amp;gt;&amp;lt;xsl:value-of select=&amp;quot;//AVGCONTENT&amp;quot;/&amp;gt;&amp;lt;/Cell&amp;gt;         &lt;br /&gt;&amp;lt;Cell&amp;gt;&amp;lt;xsl:value-of select=&amp;quot;//AVGBI&amp;quot;/&amp;gt;&amp;lt;/Cell&amp;gt;         &lt;br /&gt;&amp;lt;Cell&amp;gt;&amp;lt;xsl:value-of select=&amp;quot;//AVGEMAIL&amp;quot;/&amp;gt;&amp;lt;/Cell&amp;gt;         &lt;br /&gt;&amp;lt;Cell&amp;gt;&amp;lt;xsl:value-of select=&amp;quot;//AVGSOA&amp;quot;/&amp;gt;&amp;lt;/Cell&amp;gt;         &lt;br /&gt;&amp;lt;Cell&amp;gt;&amp;lt;xsl:value-of select=&amp;quot;//AVGSEC&amp;quot;/&amp;gt;&amp;lt;/Cell&amp;gt;         &lt;br /&gt;&amp;lt;Cell&amp;gt;&amp;lt;xsl:value-of select=&amp;quot;//AVGMAN&amp;quot;/&amp;gt;&amp;lt;/Cell&amp;gt;         &lt;br /&gt;&amp;lt;Cell&amp;gt;&amp;lt;xsl:value-of select=&amp;quot;//AVGOBS&amp;quot;/&amp;gt;&amp;lt;/Cell&amp;gt;         &lt;br /&gt;&amp;lt;/RowData&amp;gt;         &lt;br /&gt;&amp;lt;/DataValues&amp;gt;         &lt;br /&gt;&amp;lt;/LocalGridData&amp;gt;         &lt;br /&gt;&amp;lt;/Graph&amp;gt;&lt;/span&gt;&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;Como vemos este c&amp;#243;digo acepta la sintaxis xsl para extraer de la estructura de datos los valores necesarios y configurar f&amp;#225;cilmente las series, las etiquetas, y los respectivos valores de cada una de las series.&lt;/p&gt;  &lt;p&gt;El resultado final quedar&amp;#237;a as&amp;#237;:&lt;/p&gt;  &lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgC96npEvNRBoDQR4bGD9FJBomfmIXvJYDWa53jz0_b0Lxk-DR_HVqVNUx7rm01He5N4itqgDyTRqSconlf76abnleaWPvhWyJd6xmh5wANr2rI1uz-b8_5k-b6O9rUWOcm1pmULcuRJ8Lm/&quot;&gt;&lt;img style=&quot;border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px&quot; height=&quot;251&quot; alt=&quot;image&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhPKCj7QkDJ-xJNY4yMBivDKK2CQNHoDHbLMO8803-jZekzNgl3fkWm7lZnrze6FzP0j9iiuj7PmsA6Vxu7eVLKiGQRWtex08fMzH2z37bftUsSR8LzKj2J-_bVu0LqLqi_wa4qkZRkQh_2/&quot; width=&quot;388&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;De esta forma podr&amp;#237;amos manipular cualquier gr&amp;#225;fico dentro de un reporte de BI Publisher para personalizarlo segun nuestros requerimientos. Saludos.&lt;/p&gt;  </content><link rel='replies' type='application/atom+xml' href='http://od-tech.blogspot.com/feeds/4848223864527044190/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/8445877885055660465/4848223864527044190' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8445877885055660465/posts/default/4848223864527044190'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8445877885055660465/posts/default/4848223864527044190'/><link rel='alternate' type='text/html' href='http://od-tech.blogspot.com/2009/02/usar-un-grafico-personalizado-en-bi.html' title='Usar un gráfico personalizado en BI Publisher'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiLKkTIm8nnTObp5J3j41rWA-XwOrJ4jwsPpD8RWzbNDdyq9nMKvL2SpoTPoCT6J6gXkXqCCWVmxisYQNiUKKiBAyFlQjvUNV6g9RhprtX-iwr7ELqJqibn29KxdKqDhvCjyl22iQu17Pz1/s72-c" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8445877885055660465.post-5482189304300552698</id><published>2009-02-18T15:07:00.001-05:00</published><updated>2009-02-18T15:07:50.722-05:00</updated><title type='text'>Carga de archivo plano csv con OWB en Windows</title><content type='html'>&lt;p&gt;En este post compartimos una soluci&amp;#243;n a un problema que surge al intentar cargar archivos planos con Oracle Warehouse Builder usando external table.&lt;/p&gt;  &lt;p&gt;Si intentamos cargar un archivo simple con el formato:&lt;/p&gt;  &lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg0BYuP3aOh56Xb4dhz8hdrvYjeJSR4OCa1uVbCISwriW4t6vj40oyXy7I-wjtgl7rd3w7ztOlMF8EPgngDx871NB_MynubjfkyFl5wvdwtYDvdKyFAy06lanBwJpiCjNZKZPtdIcd8qdet/&quot;&gt;&lt;img style=&quot;border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px&quot; height=&quot;127&quot; alt=&quot;image&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiQ_ObGWTEAgl8X5MgluyR-OdXsgCrFPaulxog7RfTWQ479xTPXmlkqwUZyXyU161Qd8KBwyyFlfsX41hsZhYaRfbfZM2ezsgb5XDYIab9WaTqbX1dFfFfbEJVoYdI8uuqFG_ZE2pXb7jVI/&quot; width=&quot;244&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;No encontramos problema al hacer sampling del archivo en OWB, el wizard nos reconoce sin problema las tres columnas.&lt;/p&gt;  &lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjRUi9Pb_Xnrh1wDSD6clijDUtWfLjDCfjb_EfUyc9RolbG3D_69iFUkovMSUNem_xOfurRgmBGEFOTG4SuHExNtPIDUSAQAMPKh3TblkITLF29gqety0Vajp91FWM3kgbVugFMqRFomtgy/&quot;&gt;&lt;img style=&quot;border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px&quot; height=&quot;258&quot; alt=&quot;image&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEirF7HnmYI-ec2MEs41S4cWkHZ75DGdnsotEZyiIHXe6Yg1cFX3zQ4y4-jFtXqyM6VcneG1AYhZe3KZUGHWHCp4ns-AiFncNqX3R7h3asqCL2a9t2xAFw3mSJKxweNPbHU9ITDRo8Mzry_3/&quot; width=&quot;321&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Luego creamos el external table sobre el archivo importado, tambi&amp;#233;n sin problema.&amp;#160; Configuramos los archivos de Log para que sepamos qu&amp;#233; sucede cuando SQL Loader hace la carga del archivo.&lt;/p&gt;  &lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjVtlqO-rVrHs2b2fTKQjWNaEtnXKlPzrAP7x07IH4ViSWUHOARbWG1MxmQBBYCouGFY5ZPojqQy2RJmdUw-vJdCl7hoIm7pBwagNVTAxS4SZZr6DFoudzHQxh_EUU9pvO8aLuoXBDu_4Ii/&quot;&gt;&lt;img style=&quot;border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px&quot; height=&quot;120&quot; alt=&quot;image&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgw6Nv8pp5RbkHf7VCtTs4JDHeq-HkEJ8imzKjOMH7SsmU6T77ynOQFtnmUhEGEwW1YY57Al0reG4KPXhC5U70ImSWGPfXSelUxWbN85wHAYgHaCdPrEEIVHxUU0FmLlQ1W22yW-AqIF4Lx/&quot; width=&quot;244&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Al hacer deploy de la external table, ya deber&amp;#237;amos poder hacer un query sobre la tabla externa para visualizar los datos que contiene el archivo y efectivamente lo podemos hacer.&lt;/p&gt;  &lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhnez1g0TQKFt9yC2PKg67Hk5hfjpX1RuOctWH60eIEXWWiBachUhBnLlDO6twGF7sIaP866xP0hYmffRZDWE_-jAK9ozShWUyb0NJjET4tktT-efv45GevCdhC2JGJyju4VRBrpZOpot3c/&quot;&gt;&lt;img style=&quot;border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px&quot; height=&quot;75&quot; alt=&quot;image&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhnFfCqWRs-OQV4DWZ1SCU5Toif8lJHFpLJ4eTNkSlAAnrmsGTTiKFpIxga2fKEvqNXZ7gEQw0d3o_xSwcvzCN0UlNOsh0wt3g71W0KkjEYc6h6wTcCNGlbCeunSadtdUpg9PVxJurnmXUT/&quot; width=&quot;244&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Ahora hagamos un cambio que generalmente nos sucede en ambientes reales, y es que tengamos la &amp;#250;ltima columna vac&amp;#237;a.&lt;/p&gt;  &lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgALKVMLGi1ztT_oWUhYvXchYXYLb4PXdrlr_slkHFHeGQJVkqwoLwUWqeZEJrJeYO3GWhYj9T20xnYS6M7GjkKzPJzc_ifQhr9pNPtvdONXZcIGgdTyw6N6SA7AW4or3B6o6kkRrszy7tZ/&quot;&gt;&lt;img style=&quot;border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px&quot; height=&quot;128&quot; alt=&quot;image&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjhyRq6ubM_WtbjVth-rs3O9c3yOYWOdRFOtjtgEfF6jzAcqKup3DVVCtfYXio505UmQ9GYN5tT-Vz0GgPuERyZQR9i0SZp2UmybX5O_AmrV2LxRKcPcnhxeX2iGFy_kQm6YEQShV2qJjIw/&quot; width=&quot;244&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Salvamos el archivo y volvemos a hacer el query sobre la tabla externa y vemos que nos arroja un resultado diferente.&lt;/p&gt;  &lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg6tx1tjTl1jrH1VwvXHkfvbPVLgqyF8Nu2050MrmNTyfggrpMfRYQI_ehLrItM57PEaMcTIqr7zfq9LKW-7_9UmKK8rRHjINGz7IB2X5Mf9Xr3TymVgpc7jCvXUbP6coSTr3oecxy2fvh0/&quot;&gt;&lt;img style=&quot;border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px&quot; height=&quot;77&quot; alt=&quot;image&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhQLHfbXO_sTW7spWk8wrkQS26ehFYNICy6aF5gJqB3f2T4ZU0MZke8OrvAHqDIfsYW-u_HMg3Kh1nTNAAX7EzRri0Jpu4j7k1XiSxI9mZhKjm3FGWyx2sVcz2SAPA5oRfqmkYmVNGGH_P-/&quot; width=&quot;244&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Revisamos el log de la tabla externa y vemos el mensaje:&lt;/p&gt;  &lt;p&gt;&lt;em&gt;KUP-04021: field formatting error for field COLUMNA3      &lt;br /&gt;KUP-04023: field start is after end of record       &lt;br /&gt;KUP-04101: record 2 rejected in file E:\pruebas\prueba1.csv       &lt;br /&gt;KUP-04021: field formatting error for field COLUMNA3       &lt;br /&gt;KUP-04023: field start is after end of record       &lt;br /&gt;KUP-04101: record 3 rejected in file E:\pruebas\prueba1.csv&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;Probamos varias soluciones temporales que funcionaron como colocar un separador de columna al final del archivo, colocar una columna no vac&amp;#237;a al final del archivo, entre otras.&lt;/p&gt;  &lt;p&gt;Sin embargo la soluci&amp;#243;n afortunadamente es mucho m&amp;#225;s sencilla y es marcar el check de &amp;quot;Load Nulls when Missing Values&amp;quot; en la ventana de configuraci&amp;#243;n del external table.&lt;/p&gt;  &lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjgus71im9lR0tA2-mgMFK46pmWD07KN99-3IZufpfx4IgVzEn19iYlTibEfH-dvasi-HxxQCtI6DqrItaRTnBTv5ZOVzE98KUVeLaV_6q8ngtmwqs02CpMvdPgDGz6qGvnxei1Wj1wRuiy/&quot;&gt;&lt;img style=&quot;border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px&quot; height=&quot;327&quot; alt=&quot;image&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh39lDobhf43gmeRzRANqFQNrMllbHIDMTO5gFs6vy3-kDqUoepdHSIvIKoZ3JWLHL8N3RgjJFPOhUGeR9L-ic5h_OSGZp8UvXPm2dqq78LgiA4Pr-lkFPerOhE2jSodeVj3irjvf-f6yM4/&quot; width=&quot;354&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Con este cambio, reemplazamos la external table y ejecutamos el mismo query y ya est&amp;#225;:&lt;/p&gt;  &lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgDCUjFAMwa8VQ-ca6XdnsRQ64kK__wIcXCc3lc4iI9Nodcw8At9XrawF10XwX83HSEPcXSVq5UIhdfX85Ppi09-GxsAL_IKyOHMR03iv3xaDQ-zHqen30zQqGbKNq_8HVjKHgvmTq3BT4y/&quot;&gt;&lt;img style=&quot;border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px&quot; height=&quot;72&quot; alt=&quot;image&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgh0qT2Zq2EQaT_iWl3poYDMxV9GqjQzZMIZRN2ULl9uewOCXbzgDQ8a1NrGGn-qJcuKCFSf72yzVEayARSOeAzPxD1JTCsCEJsVfRnKd-110E1V2T8_vPXsZfUzyg2n6bFUu_Zhx3SJENi/&quot; width=&quot;244&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Nos trae todos los registros aunque la &amp;#250;ltima columna venga vac&amp;#237;a.&lt;/p&gt;  &lt;p&gt;Saludos.&lt;/p&gt;  &lt;p&gt;Nota: Post aportado en conjunto por Pedro G&amp;#243;mez y Dar&amp;#237;o Valderrama, sales consultants de Oracle Direct.&lt;/p&gt;  </content><link rel='replies' type='application/atom+xml' href='http://od-tech.blogspot.com/feeds/5482189304300552698/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/8445877885055660465/5482189304300552698' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8445877885055660465/posts/default/5482189304300552698'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8445877885055660465/posts/default/5482189304300552698'/><link rel='alternate' type='text/html' href='http://od-tech.blogspot.com/2009/02/carga-de-archivo-plano-csv-con-owb-en.html' title='Carga de archivo plano csv con OWB en Windows'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiQ_ObGWTEAgl8X5MgluyR-OdXsgCrFPaulxog7RfTWQ479xTPXmlkqwUZyXyU161Qd8KBwyyFlfsX41hsZhYaRfbfZM2ezsgb5XDYIab9WaTqbX1dFfFfbEJVoYdI8uuqFG_ZE2pXb7jVI/s72-c" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8445877885055660465.post-4929097193364347557</id><published>2008-12-10T11:50:00.001-05:00</published><updated>2008-12-10T11:50:36.157-05:00</updated><title type='text'>Haciendo un workflow en BPEL</title><content type='html'>&lt;p&gt;Notas sobre el documento:&lt;/p&gt;  &lt;p&gt;· La demo se hizo usando la vmware End2End SOA Order Booking v3.1&lt;/p&gt;  &lt;p&gt;· El proyecto lo puedes descargar de aquí&lt;/p&gt;  &lt;h4&gt;El proceso&lt;/h4&gt;  &lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjBSLJJ8oZg7PQjY1c6ezBQ4PSEC_wibjNUz75d3iPPjZqMyiFRMNtAVIpw66sdqcZtztxrxUBOfm7463CW3IX7bWku4LXvyVjbPKnBrfsGQU8wG6O7-wr7KMMBI4u5VzwT9R3Rotfa_5tX/s1600-h/clip_image003%5B3%5D.gif&quot;&gt;&lt;img title=&quot;clip_image003&quot; style=&quot;border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px&quot; height=&quot;91&quot; alt=&quot;clip_image003&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgSm7GW6NQ6e-FhUM0q3p4X1yi85wyBHpX7XK_zNsvISCMFZOjesBMCOJOYKOx8fcZK6_a-JnII2fYlqJo0I6xi9NSRF-BV3LFPSbt0tHO24JdGNJISIfp7K9jpQgrGFF9FSCt7INzTFuWa/?imgmax=800&quot; width=&quot;244&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;em&gt;Elementos del proceso&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;· Roles: Solicitante, Gerente&lt;/p&gt;  &lt;p&gt;· Payload (Unidad de información): idSolicitud, Nombres, Dirección, fecha de nacimiento, teléfono, usuario&lt;/p&gt;  &lt;h4&gt;Hagámoslo en BPEL!&lt;/h4&gt;  &lt;p&gt;1. Crear una nueva aplicación en BPEL –todo el desarrollo de este ejemplo lo hacemos usando Oracel JDeveloper 10.1.3.3.0-&lt;/p&gt;  &lt;p&gt;· File-New-General-Applications&lt;/p&gt;  &lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiAPpphyXEHUBDGpUhxmv3KPH9yGvWmhfbfoGYl4S_wQryka9UuNkCpBQgmC3nygI8JlEdjHYYsr9Lsb5F8FVpn7ARe3jupQMoeKL5uQUqUYpP26UqcioBiXk-lO828zVzDiQOPTSL-D3xj/s1600-h/clip_image005%5B3%5D.jpg&quot;&gt;&lt;img title=&quot;clip_image005&quot; style=&quot;border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px&quot; height=&quot;176&quot; alt=&quot;clip_image005&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjKYRAefXLIN1nxRAFkb_tJq04jb2woLaewNeIiV7j92leC-1YbokTL_4Dev8rK43Dd2QphGfkKwsRdIgZGp1BcAtvK00470x465RVcSd4YkHjdFNA87XRVs4gR9MSp_e073m8lNSF6LLJX/?imgmax=800&quot; width=&quot;244&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;· Click derecho sobre la nueva aplicación-New Project-General-Projects-BPEL (el proceso que creamos es asincrónico)&lt;/p&gt;  &lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiyf3ae-krrxfNfexO8JJkc-OXnH9Bds6iLRrnmkzxcseBevhul-lMjExdVTVzw3xSwfmRzkJSEc-h-HtdKSdPOCv1pNBsiid-QyBeZDFpX_F3PsdlIyZ0C_rQc7gOtxg1K1DhrLqhnRwQZ/s1600-h/clip_image007%5B3%5D.jpg&quot;&gt;&lt;img title=&quot;clip_image007&quot; style=&quot;border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px&quot; height=&quot;176&quot; alt=&quot;clip_image007&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiv8TTNrWFvXyltjxQ39KthgOJePQwhLSpyDUNQ4zCNO2q2Y0CdxcB1jCttfqDaVEbFjTYQhu4JAyg9Guko4l_DZE_XHekcNGpIQE6REXhHqeXP_UOC4kLNQWLlMXsDzA5V7jA4HQq7esFB/?imgmax=800&quot; width=&quot;244&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;2. Creamos el payload&lt;/p&gt;  &lt;p&gt;· Dentro de la carpeta Integration Content, click en Schemas y seleccionar el RegistroSolicitud.xsd&lt;/p&gt;  &lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhTSFJzfruLq6lgcyJT5Ee3tCH7SE7r8VlZ3BteJ8u21P6X_lbcAKKPlklyDxPf81PcGBRFXV5UUf-3O0sE364-sZdb7FakfEX-XVXiFymHBVe3yfLG_OhQ2CmpOlw140Zypym8bmaREntj/s1600-h/clip_image009%5B3%5D.jpg&quot;&gt;&lt;img title=&quot;clip_image009&quot; style=&quot;border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px&quot; height=&quot;223&quot; alt=&quot;clip_image009&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgElQ6aAp3MKLTVOXvlK3ZhoBOSQ6dqkRh1ZPptttZAj75bz275AfxiJv9hmC-Ynsh7pVB7bgvdzRR1Mktsdc24_as_Rp69u_CKRxtdAGlQtyD8UKTnb2tvrOACJ7JjoH9SwLOY6zsC4Y-A/?imgmax=800&quot; width=&quot;244&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;3. Crear las actividades principales que conforman el flujo (Durante los siguientes pasos vamos a revisar estas actividades y complementarlas según la funcionalidad que estamos buscando dentro del flujo). Dentro de estas tareas principales identificamos 3 importantes:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;· Registrar la solicitud en la base de datos: Invoke&lt;/p&gt; &lt;/blockquote&gt;  &lt;blockquote&gt;   &lt;p&gt;· El gerente revisa la solicitud: Human Task&lt;/p&gt; &lt;/blockquote&gt;  &lt;blockquote&gt;   &lt;p&gt;· La revisión puede ser para aprobar, rechazar o mandar a corregir: Switch&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgq8j8eicaPlkeVTKiPLQNEVW5joK2mmzSSbFa79sPUlUMXnLwL-ut-8R9nATaistgKQ2CLYbd4tLzO_msDwvDMdGsJus6T2QpAZLvNt128FD9qhfGCdPM88D1Wz10OEy56U4gKC_2ehH-g/s1600-h/clip_image011%5B3%5D.jpg&quot;&gt;&lt;img title=&quot;clip_image011&quot; style=&quot;border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px&quot; height=&quot;182&quot; alt=&quot;clip_image011&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhZD3K4jx_ubojj4kv4HULrzxWy309roAV_Xsnvyp5azKP2KRw257krfvlOgwEqsn13lq-9BpC4YHt3mO-wGGHtOLzoA6JQtfil1nO3nU_WHkvfMdmvmX6pZf9kpZYsJJit9iN-ZsDNOsTP/?imgmax=800&quot; width=&quot;244&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;blockquote&gt;   &lt;table cellspacing=&quot;0&quot; cellpadding=&quot;2&quot; width=&quot;382&quot; border=&quot;0&quot;&gt;&lt;tbody&gt;       &lt;tr&gt;         &lt;td valign=&quot;top&quot; width=&quot;142&quot;&gt;Outcomes&lt;/td&gt;          &lt;td valign=&quot;top&quot; width=&quot;238&quot;&gt;rechazar, aprobar, corregir&lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td valign=&quot;top&quot; width=&quot;149&quot;&gt;Parameters&lt;/td&gt;          &lt;td valign=&quot;top&quot; width=&quot;244&quot;&gt;Element-RegistroSolicitud.xsd-RegistroSolicitudProcessRequest&lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td valign=&quot;top&quot; width=&quot;150&quot;&gt;Assignment&lt;/td&gt;          &lt;td valign=&quot;top&quot; width=&quot;247&quot;&gt;Label: Gerente            &lt;br /&gt;By expression-dynamic user xpath: Functions-Identity Service Functions- getManager(/task:task/task:payload/ns0:RegistroSolicitudProcessRequest/ns0:usuario)&lt;/td&gt;       &lt;/tr&gt;     &lt;/tbody&gt;&lt;/table&gt;    &lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhLpEPlFVmit8CZQGKmu8dTcRfA6KDuVvtopMVl1b9Z_tFaifhLSRHK6ZdX5ovbjG3yVl_GbD-F_7JapwzKOSFlWmgwVQPspKe9Bikiz_rMTrKmwu-1QIemAk0c2KpzwcwUGBUMPWHWlcOS/s1600-h/clip_image013%5B3%5D.jpg&quot;&gt;&lt;img title=&quot;clip_image013&quot; style=&quot;border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px&quot; height=&quot;191&quot; alt=&quot;clip_image013&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjlaqRfk0Hxs8Wtd1dbM6MngrsLYdFRhxOSeBkT3maj39BwTeIBowVbU0Olc_mlimm1L_00hffPE3kGqvWMtMxz1q1HlZSkOqsa0h5Y4NXEbPdF_Ed33vD4v_xn7Lb5rJ1I5N7_3z3aunIU/?imgmax=800&quot; width=&quot;244&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;4. Ahora necesitamos complementar el flujo que hicimos implementando los servicios necesarios para que la conexión a la base de datos funcione&lt;/p&gt;  &lt;p&gt;· Obtener el ID de la solicitud en la base de datos: invoke a un servicio en la DB&lt;/p&gt;  &lt;p&gt;· Seleccionar Database Adapter&lt;/p&gt;  &lt;p&gt;· Execute Custom SQL: select tform100_seq.nextval id_solicitud from dual&lt;/p&gt;  &lt;p&gt;· Conectar el invoke con el servicio&lt;/p&gt;  &lt;p&gt;· Registrar la solicitud en la base de datos: Para esto necesitamos copiar los datos que vamos a insertar (assign) y crear un servicio que inserte los datos en la DB (invoke), esto se debe hacer cada vez que el solicitante cree una nueva solicitud o la corrija, es por esto que necesitamos crear una variable booleana que nos permita controlar el registro en la base de datos.&lt;/p&gt;  &lt;p&gt;· Crear una variable global booleana que controle el registro en la DB&lt;/p&gt;  &lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgn9ENG41gHtmgltmB4VT-JRRU4cEDrN9qwKt50TILhycn96Lig-Y2JIvOY_3sCGbPN39nHjqm7Rtnb8fQgFd9tXLiu218eT-S21uVKqIAcyKO6DWR3zAxEaOcWAhV0K6sYkHKIgv_GDQJx/s1600-h/clip_image015%5B3%5D.jpg&quot;&gt;&lt;img title=&quot;clip_image015&quot; style=&quot;border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px&quot; height=&quot;244&quot; alt=&quot;clip_image015&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEijm_LoAfRbo-1DY5t-rlrjdCLwH0AEFTY8UHnFCAbDKdovSTRJPcOPbDIQgP9X3TWZJAmJIEMw4jmqfLS-2iq-f3ttu8d3PRq50XVYxg-PgJMZYW4a1adQOsRzmvq3ufzdJE3teShZj7SB/?imgmax=800&quot; width=&quot;240&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;· Crear un assign que inicialice la variable booleana a true y el id de la solicitud que viene del output del invoke obtenerIdSolicitud con el input del payload&lt;/p&gt;  &lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiTagCwueiVXIllcpygNv72tZMHlElLfuEXamlQxa8v3YyoafjwAn58zVQE2AMCw6757PfM35jbTmFUI_WgPIOO49_aHLEKYXn1LlMQKoyAd6h-Kvu8bSuMx9petV5uaJUIdCeqgKG3cOBU/s1600-h/clip_image017%5B3%5D.jpg&quot;&gt;&lt;img title=&quot;clip_image017&quot; style=&quot;border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px&quot; height=&quot;195&quot; alt=&quot;clip_image017&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjY8G3aGCAsLJV3iBzNzPPoHeyLBb0K5GD1zlBmw_mm3GrPvRdzuqr3t_9fA-s1FfMLeuhgoOffUeq82q0WO1AKo5SJ4dhQ33BBZeZIwMQdESV4SnMNAE6ZWW_x3_50BrKJWCq5toEvKdv9/?imgmax=800&quot; width=&quot;244&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;· Crear un while que encapsule el proceso de registrar solicitud a la DB cada vez que el boolean este en true, dentro de este while se haría:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;o Un invoke a la DB que permita insertar o hacer update de datos en la tabla donde guardamos la información de la solicitud (todo lo que va a la DB es lo que queda guardado en el input del assign que se hará a continuación)&lt;/p&gt; &lt;/blockquote&gt;  &lt;blockquote&gt;   &lt;p&gt;o Un assign donde se copian los datos a insertar: id, usuario, nombres, estado, fecha. La fecha la conseguimos en expression-dateFunctions-currentDateTime&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjfVBUWrP4J9Vn8gLkSxNhRfGpUhPhXef7WbgbxUl4WRCrzfFpzsyfxGp1X50jcvp3O_NBmjhPyWrzhYrDkrfeM9aX84HRYUYYk2ghB47YMxl80pUlg_WePFwRR0Eau3rr_6wXu4exfFimA/s1600-h/clip_image019%5B3%5D.jpg&quot;&gt;&lt;img title=&quot;clip_image019&quot; style=&quot;border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px&quot; height=&quot;216&quot; alt=&quot;clip_image019&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg2o_oW1cGHeYmaElcxHCiNRt26EmIT63XnZ-KIAD8fNvVd_n8l83dS-w7rCHkvp-KrWuKJgFxw_9jo_bBp2t0P6eNdioqgJBbj8HPaAxax2eZLMZFV63JB6YQgNUfcdpYAz0TZFQOZM7A2/?imgmax=800&quot; width=&quot;244&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;· Crear un assign que al finalizar el registro en la DB actualice el boolean a false&lt;/p&gt;  &lt;p&gt;5. Ahora trabajaremos cada una de las opciones que puede tomar el gerente: la de rechazar, la de aprobar y la de corregir. En este paso haremos la de rechazar:&lt;/p&gt;  &lt;p&gt;· Crear un servicio a la DB que actualice el estado (un update)&lt;/p&gt;  &lt;p&gt;· Crear un assign en donde este el input del servicio al cual le asignemos el id de la solicitud y el nuevo estado&lt;/p&gt;  &lt;p&gt;· Crear una actividad Email&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;· To: DeprecatedIDService-getUserProperty(usuario, mail)&lt;/p&gt; &lt;/blockquote&gt;  &lt;blockquote&gt;   &lt;p&gt;· Body:Solicitud rechazada&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;6. Aprobar&lt;/p&gt;  &lt;p&gt;· Crear un servicio a la DB que actualice el estado (un update)&lt;/p&gt;  &lt;p&gt;· Crear un assign en donde este el input del servicio al cual le asignemos el id de la solicitud, el nuevo estado&lt;/p&gt;  &lt;p&gt;· Crear un servicio a la DB que ingrese el cobro con la información de la solicitud: id, importe, fecha de aprobación&lt;/p&gt;  &lt;p&gt;· Crear el assign para que el input del servicio tenga los datos necesarios&lt;/p&gt;  &lt;p&gt;7. Corregir&lt;/p&gt;  &lt;p&gt;· Crear un servicio a la DB que actualice el estado (un update)&lt;/p&gt;  &lt;p&gt;· Crear un assign en donde este el input del servicio al cual le asignemos el id de la solicitud, el nuevo estado&lt;/p&gt;  &lt;p&gt;· Crear un human task para la corrección de la solicitud&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;· Outcomes: Finalizar&lt;/p&gt; &lt;/blockquote&gt;  &lt;blockquote&gt;   &lt;p&gt;· Parameters: RegistroSolicitud.xsd&lt;/p&gt; &lt;/blockquote&gt;  &lt;blockquote&gt;   &lt;p&gt;·Assignement: /task:task/task:payload/ns0:RegistroSolicitudProcessRequest/ns0:usuario&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;· Crear un assign para poner el booleano en true y el payload del human task de RegistroSolicitud en el inputVariable&lt;/p&gt;  &lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhrYDdNj-Fd34t1nkZc6Nyu1eTs3P5sTsetVcqw-gwGdFlh3W3ICta885vFebwTtvWEJuAY8Zz-NZj4Ya3fvSc1O3KcNfUMeBzsjjDa_oSvtpCdqZbPwPJGRPPCIvqgRQ9RrHJJesXAljkO/s1600-h/clip_image021%5B3%5D.jpg&quot;&gt;&lt;img title=&quot;clip_image021&quot; style=&quot;border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px&quot; height=&quot;244&quot; alt=&quot;clip_image021&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg93G1LhH1cLHRpTB-XfUh8YQncTR10tdHwZRwMblmzA_UjCWcujeeotbUOAeJMJb3_3-DSpNUSspwO53MjUjYe7vD3rMxnymz0aHfsWnj17uTcBmm1pUqbiqSMvSRfWnvR5AEjD8oTwf2r/?imgmax=800&quot; width=&quot;235&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;&lt;/p&gt;  </content><link rel='replies' type='application/atom+xml' href='http://od-tech.blogspot.com/feeds/4929097193364347557/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/8445877885055660465/4929097193364347557' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8445877885055660465/posts/default/4929097193364347557'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8445877885055660465/posts/default/4929097193364347557'/><link rel='alternate' type='text/html' href='http://od-tech.blogspot.com/2008/12/haciendo-un-workflow-en-bpel_10.html' title='Haciendo un workflow en BPEL'/><author><name>nad</name><uri>http://www.blogger.com/profile/15575210485038047991</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgSm7GW6NQ6e-FhUM0q3p4X1yi85wyBHpX7XK_zNsvISCMFZOjesBMCOJOYKOx8fcZK6_a-JnII2fYlqJo0I6xi9NSRF-BV3LFPSbt0tHO24JdGNJISIfp7K9jpQgrGFF9FSCt7INzTFuWa/s72-c?imgmax=800" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8445877885055660465.post-297245171910717978</id><published>2008-12-05T18:04:00.003-05:00</published><updated>2008-12-10T09:09:46.411-05:00</updated><title type='text'>Entendiendo la arquitectura de UCM</title><content type='html'>&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgudC4WKklzvEubJnVK14w0WPPQzQDQUN_oF-ZxfBeFTp5fitqI2GTl1TqZtyaEbVOGdAd1JI3oR7gxSB_Aw5-Sl5dg-KjtpD49NAIiFHezkv2dXGQhz5pYxohFBCmfVSKgvXYeP21vxrry/s1600-h/arquitectura.JPG&quot;&gt;&lt;img style=&quot;margin: 0pt 0pt 10px 10px; float: right; cursor: pointer; width: 148px; height: 200px;&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgudC4WKklzvEubJnVK14w0WPPQzQDQUN_oF-ZxfBeFTp5fitqI2GTl1TqZtyaEbVOGdAd1JI3oR7gxSB_Aw5-Sl5dg-KjtpD49NAIiFHezkv2dXGQhz5pYxohFBCmfVSKgvXYeP21vxrry/s200/arquitectura.JPG&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5278162041903768498&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;Un deployment típico de UCM está compuesto de los siguientes componentes:&lt;br /&gt;&lt;span xmlns=&quot;&quot;&gt;&lt;ul&gt;&lt;li&gt;Content Server&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Web Server&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Database&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Search Index&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Repositorio de contenido nativo (Vault)&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Repositorio de contenido web (Web Layout)&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;h2&gt;Content Server&lt;br /&gt;&lt;/h2&gt;&lt;p style=&quot;text-align: justify;&quot;&gt;El content server es el componente core de UCM. En pocas palabras, es una aplicación Java que corre en el background y administra todas las tareas de gestión de contenido. El content server tiene un repositorio en donde almacena el contenido en su formato nativo y en su formato web y otro en donde guarda los metadatos.&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;text-align: justify;&quot;&gt;&lt;/p&gt;&lt;h2&gt;Web Server&lt;br /&gt;&lt;/h2&gt;&lt;p&gt;&lt;/p&gt;&lt;p style=&quot;text-align: justify;&quot;&gt;El web server es la interfaz entre el content server y nosotros los usuarios, de esta manera, cada vez que el web server recibe un request desde un browser, el le envía los comandos apropiados al content server para que éste los procese y envíe devuelta el resultado al web server para que lo muestre en el browser. Todo este proceso está acompañado de un filtro de seguridad que por cada request verifica que se tengan los permisos adecuados, lo cual asegura que uno sólo puede ver la información a la que le dieron permiso.&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;text-align: justify;&quot;&gt;&lt;/p&gt;&lt;h2&gt;Database&lt;br /&gt;&lt;/h2&gt;&lt;p&gt;&lt;/p&gt;&lt;p style=&quot;text-align: justify;&quot;&gt;Los metadatos (la información de la información –titulo, autor, fecha de check in, revisiones, etc- algo así como la ficha bibliográfica de los libros en una biblioteca) son guardados en una base de datos relacional y son usados para describir, encontrar y acceder al contenido de una manera más sencilla. La base de datos también almacena los perfiles de usuarios, la información de suscripciones y los datos históricos.&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;text-align: justify;&quot;&gt;&lt;/p&gt;&lt;h2&gt;Search Index&lt;br /&gt;&lt;/h2&gt;&lt;p&gt;&lt;/p&gt;&lt;p style=&quot;text-align: justify;&quot;&gt;UCM soporta diferentes motores de búsqueda, entre ellos –y el recomendado :D- es el Oracle Text, el cual viene en la base de datos y permite hacer búsquedas full-text sobre todo el contenido administrado en el content server.&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;text-align: justify;&quot;&gt;&lt;/p&gt;&lt;h2&gt;Repositorio de contenido nativo –Vault-&lt;br /&gt;&lt;/h2&gt;&lt;p&gt;&lt;/p&gt;&lt;p style=&quot;text-align: justify;&quot;&gt;Vault es el repositorio a donde van todos los archivos chequeados en su formato nativo, esto nos permite poder acceder al archivo original en cualquier momento y reutilizarlo –por ejemplo cuando quiero hacer cambios y generar una nueva versión de un documento-&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;text-align: justify;&quot;&gt;&lt;/p&gt;&lt;h2&gt;Repositorio de contenido web –Weblayout-&lt;br /&gt;&lt;/h2&gt;&lt;p&gt;&lt;/p&gt;&lt;p style=&quot;text-align: justify;&quot;&gt;El weblayout es el repositorio a donde van todos los formatos ´web-viewable&#39; de los archivos chequeados –por ejemplo PDF-&lt;br /&gt;&lt;/p&gt;&lt;/span&gt;</content><link rel='replies' type='application/atom+xml' href='http://od-tech.blogspot.com/feeds/297245171910717978/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/8445877885055660465/297245171910717978' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8445877885055660465/posts/default/297245171910717978'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8445877885055660465/posts/default/297245171910717978'/><link rel='alternate' type='text/html' href='http://od-tech.blogspot.com/2008/12/entendiendo-la-arquitectura-de-ucm.html' title='Entendiendo la arquitectura de UCM'/><author><name>nad</name><uri>http://www.blogger.com/profile/15575210485038047991</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgudC4WKklzvEubJnVK14w0WPPQzQDQUN_oF-ZxfBeFTp5fitqI2GTl1TqZtyaEbVOGdAd1JI3oR7gxSB_Aw5-Sl5dg-KjtpD49NAIiFHezkv2dXGQhz5pYxohFBCmfVSKgvXYeP21vxrry/s72-c/arquitectura.JPG" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8445877885055660465.post-462931785645572052</id><published>2008-12-03T08:35:00.001-05:00</published><updated>2008-12-03T08:35:50.150-05:00</updated><title type='text'>Oracle Business Intelligence y LDAP</title><content type='html'>&lt;p&gt;Hace no mucho tiempo tuve la necesidad de integrar mi servidor LDAP con mi servidor de Oracle BI, en esta ocasion estoy usando Apache Directory Services (&lt;a href=&quot;http://directory.apache.org/apacheds/1.5/&quot;&gt;Descargar&lt;/a&gt;) y para la interfaz usaremos Apache Directory Studio (&lt;a href=&quot;http://directory.apache.org/studio/index.html&quot;&gt;Descargar&lt;/a&gt;)&lt;/p&gt;  &lt;p&gt;Un paso a paso simple de como hacerlo.&lt;/p&gt;  &lt;p&gt;1. Vamos a Oracle BI Administration Tool&lt;/p&gt;  &lt;p&gt;2. Clic en Manage –&amp;gt; Security&lt;/p&gt;  &lt;p&gt;&lt;a href=&quot;http://lh5.ggpht.com/_hpD3dFwMIwA/STaKo8THbbI/AAAAAAAADBM/dasLyTqHAmE/s1600-h/image133.png&quot;&gt;&lt;img title=&quot;image&quot; style=&quot;border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px&quot; height=&quot;329&quot; alt=&quot;image&quot; src=&quot;http://lh4.ggpht.com/_hpD3dFwMIwA/STaKqRtEPaI/AAAAAAAADBQ/z6X9AUmW8EE/image_thumb228.png?imgmax=800&quot; width=&quot;449&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;3. En el Security Manager, clic en LDAP Servers&lt;/p&gt;  &lt;p&gt;&lt;a href=&quot;http://lh5.ggpht.com/_hpD3dFwMIwA/STaKroaslXI/AAAAAAAADBU/8sGHtQG0I8M/s1600-h/image28.png&quot;&gt;&lt;img title=&quot;image&quot; style=&quot;border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px&quot; height=&quot;169&quot; alt=&quot;image&quot; src=&quot;http://lh3.ggpht.com/_hpD3dFwMIwA/STaKsahjErI/AAAAAAAADBY/n86HbyhDsdQ/image_thumb40.png?imgmax=800&quot; width=&quot;244&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;4. En el marco derecho, clic derecho –&amp;gt; New LDAP Server…&lt;/p&gt;  &lt;p&gt;&lt;a href=&quot;http://lh3.ggpht.com/_hpD3dFwMIwA/STaKtBWgdFI/AAAAAAAADBc/m8gETZ2Th9o/s1600-h/image12.png&quot;&gt;&lt;img title=&quot;image&quot; style=&quot;border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px&quot; height=&quot;132&quot; alt=&quot;image&quot; src=&quot;http://lh5.ggpht.com/_hpD3dFwMIwA/STaKt0ir_lI/AAAAAAAADBg/ub1IVAwnEkk/image_thumb17.png?imgmax=800&quot; width=&quot;244&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;5. Debes tener lista la siguiente informacion:&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;&lt;strong&gt;Hostname&lt;/strong&gt;: Este es el nombre del servidor donde esta instalado el LDAP &lt;/li&gt;    &lt;li&gt;&lt;strong&gt;Port Number&lt;/strong&gt;: Este es el puerto por el cual esta escuchando el servidor LDAP &lt;/li&gt;    &lt;li&gt;&lt;strong&gt;Base DN&lt;/strong&gt;: Este es el punto de entrada para la autenticacion, por ejemplo si queremos extraer los usuarios de la unidad organizacional principal, deberemos usar ou=system. &lt;/li&gt;    &lt;li&gt;&lt;strong&gt;Bind DN&lt;/strong&gt;:Esta es la ruta de autenticacion para el directorio LDAP, por defecto para Apache DS es &lt;em&gt;uid=admin,ou=system&lt;/em&gt;; sin embargo si tienes otra configuracion, esta debera ser colocada aqui. &lt;/li&gt;    &lt;li&gt;&lt;strong&gt;Bind Password: &lt;/strong&gt;Este es el password del usuario administrador de LDAP, por defecto es &lt;em&gt;secret&lt;/em&gt; &lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;&lt;a href=&quot;http://lh5.ggpht.com/_hpD3dFwMIwA/STaKuj_8YwI/AAAAAAAADBk/wuVNOVQVow4/s1600-h/image36.png&quot;&gt;&lt;img title=&quot;image&quot; style=&quot;border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px&quot; height=&quot;473&quot; alt=&quot;image&quot; src=&quot;http://lh5.ggpht.com/_hpD3dFwMIwA/STaKwJTCJeI/AAAAAAAADBo/IgltcWaL3N0/image_thumb53.png?imgmax=800&quot; width=&quot;432&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;6. Si tu servidor usa SSL debemos ir a la pestaña Advanced y seleccionar SSL&lt;/p&gt;  &lt;p&gt;&lt;a href=&quot;http://lh6.ggpht.com/_hpD3dFwMIwA/STaKxApXHyI/AAAAAAAADBs/ulIhv4jyu7s/s1600-h/image42.png&quot;&gt;&lt;img title=&quot;image&quot; style=&quot;border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px&quot; height=&quot;435&quot; alt=&quot;image&quot; src=&quot;http://lh4.ggpht.com/_hpD3dFwMIwA/STaKyPPtd4I/AAAAAAAADBw/NLmjEnCmLss/image_thumb67.png?imgmax=800&quot; width=&quot;385&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;7. Damos clic en OK&lt;/p&gt;  &lt;p&gt;8. Cerramos la ventana Security Manager&lt;/p&gt;  &lt;p&gt;9. Damos clic en Manage –&amp;gt; Variables y abrimos el Variable Manager&lt;/p&gt;  &lt;p&gt;&lt;a href=&quot;http://lh5.ggpht.com/_hpD3dFwMIwA/STaKy7QXTGI/AAAAAAAADB0/Vo8KgG0L9zg/s1600-h/image58.png&quot;&gt;&lt;img title=&quot;image&quot; style=&quot;border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px&quot; height=&quot;364&quot; alt=&quot;image&quot; src=&quot;http://lh6.ggpht.com/_hpD3dFwMIwA/STaKzylAZmI/AAAAAAAADB4/F3qfEHNv41U/image_thumb95.png?imgmax=800&quot; width=&quot;498&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;10. Debemos crear una variable de inicializacion que nos permita identificar la persona que esta autenticada.&lt;/p&gt;  &lt;p&gt;Action –&amp;gt; New –&amp;gt; Session –&amp;gt; Initialization Block…&lt;/p&gt;  &lt;p&gt;&lt;a href=&quot;http://lh5.ggpht.com/_hpD3dFwMIwA/STaK0jQ4ODI/AAAAAAAADB8/0tV77xRWNhg/s1600-h/image63.png&quot;&gt;&lt;img title=&quot;image&quot; style=&quot;border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px&quot; height=&quot;330&quot; alt=&quot;image&quot; src=&quot;http://lh6.ggpht.com/_hpD3dFwMIwA/STaK1694D3I/AAAAAAAADCA/6BZdjzCLGy8/image_thumb104.png?imgmax=800&quot; width=&quot;465&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;11. Damos un Nombre a nuestro Initialization Block, para este caso usare ibUsuario (Initialization Block Usuario)&lt;/p&gt;  &lt;p&gt;&lt;a href=&quot;http://lh6.ggpht.com/_hpD3dFwMIwA/STaK2xIAxVI/AAAAAAAADCE/fk3ZIIilQAg/s1600-h/image68.png&quot;&gt;&lt;img title=&quot;image&quot; style=&quot;border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px&quot; height=&quot;322&quot; alt=&quot;image&quot; src=&quot;http://lh3.ggpht.com/_hpD3dFwMIwA/STaK3_ZdyqI/AAAAAAAADCI/k5_TiOf45I0/image_thumb110.png?imgmax=800&quot; width=&quot;364&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;12. Damos clic en Edit Data Source y usamos como fuente el directorio LDAP al que nos acabamos de conectar.&lt;/p&gt;  &lt;p&gt;Para esto damos cli en Data Source Type (LDAP) –&amp;gt; Browse y nos conectamos al servidor elegido&lt;/p&gt;  &lt;p&gt;&lt;a href=&quot;http://lh3.ggpht.com/_hpD3dFwMIwA/STaK4nsWolI/AAAAAAAADCM/nOeIQJe6f0Q/s1600-h/image74.png&quot;&gt;&lt;img title=&quot;image&quot; style=&quot;border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px&quot; height=&quot;296&quot; alt=&quot;image&quot; src=&quot;http://lh4.ggpht.com/_hpD3dFwMIwA/STaK5pDPQsI/AAAAAAAADCQ/rmmDxtPINDs/image_thumb122.png?imgmax=800&quot; width=&quot;416&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Damos clic en OK&lt;/p&gt;  &lt;p&gt;&lt;a href=&quot;http://lh3.ggpht.com/_hpD3dFwMIwA/STaK6SI7xJI/AAAAAAAADCU/7Dr1pmNigkQ/s1600-h/image82.png&quot;&gt;&lt;img title=&quot;image&quot; style=&quot;border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px&quot; height=&quot;296&quot; alt=&quot;image&quot; src=&quot;http://lh4.ggpht.com/_hpD3dFwMIwA/STaK7l0LmsI/AAAAAAAADCY/pwdDFHBn0a4/image_thumb133.png?imgmax=800&quot; width=&quot;409&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Damos clic en OK&lt;/p&gt;  &lt;p&gt;13. Ahora en la ventana principal del Inicialization Block, seleccionamos la variable destino, para esto damos clic en Edit Data Target&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;a href=&quot;http://lh4.ggpht.com/_hpD3dFwMIwA/STaK8dagCUI/AAAAAAAADCc/ziBTTeEvMvg/s1600-h/image87.png&quot;&gt;&lt;img title=&quot;image&quot; style=&quot;border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px&quot; height=&quot;319&quot; alt=&quot;image&quot; src=&quot;http://lh4.ggpht.com/_hpD3dFwMIwA/STaK9tkvXeI/AAAAAAAADCg/d0waVCeXysc/image_thumb142.png?imgmax=800&quot; width=&quot;351&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;14. Damos clic en New, esta variable debera llamarse USER, ya que usaremos una variable reservada del sistema&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;a href=&quot;http://lh6.ggpht.com/_hpD3dFwMIwA/STaK-feWzfI/AAAAAAAADCk/KXLs8fCDuIc/s1600-h/image93.png&quot;&gt;&lt;img title=&quot;image&quot; style=&quot;border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px&quot; height=&quot;72&quot; alt=&quot;image&quot; src=&quot;http://lh4.ggpht.com/_hpD3dFwMIwA/STaK_e3cT8I/AAAAAAAADCo/PpX2Eyh2jMs/image_thumb151.png?imgmax=800&quot; width=&quot;364&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Noten como una vez usamos el Nombre USER, el titulo de el formulario cambia.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;a href=&quot;http://lh4.ggpht.com/_hpD3dFwMIwA/STaLAFJlV_I/AAAAAAAADCs/KVEoe2IO13U/s1600-h/image99.png&quot;&gt;&lt;img title=&quot;image&quot; style=&quot;border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px&quot; height=&quot;74&quot; alt=&quot;image&quot; src=&quot;http://lh3.ggpht.com/_hpD3dFwMIwA/STaLA5b95HI/AAAAAAAADCw/McDZWNCxR9s/image_thumb160.png?imgmax=800&quot; width=&quot;380&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Damos clic en OK &lt;/p&gt;  &lt;p&gt;15. En la columna LDAP variable, debemos colocar uid o el nombre que nuestro directorio LDAP utilize como identificacion del usuario; esta variable la podemos encontrar en la pestana de Advanced en la configuracion de nuestro servidor LDAP.&lt;/p&gt;  &lt;p&gt;&lt;a href=&quot;http://lh4.ggpht.com/_hpD3dFwMIwA/STaLBpbj1YI/AAAAAAAADC0/rgqMjPKJ0s4/s1600-h/image105.png&quot;&gt;&lt;img title=&quot;image&quot; style=&quot;border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px&quot; height=&quot;309&quot; alt=&quot;image&quot; src=&quot;http://lh4.ggpht.com/_hpD3dFwMIwA/STaLCgBXy5I/AAAAAAAADC4/fTGq_dv3yoc/image_thumb173.png?imgmax=800&quot; width=&quot;339&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Damos clic en OK&lt;/p&gt;  &lt;p&gt;16. Seleccionamos la caja Required for authentication&lt;/p&gt;  &lt;p&gt;&lt;a href=&quot;http://lh5.ggpht.com/_hpD3dFwMIwA/STaLDmZw6NI/AAAAAAAADC8/iWAYC6pwUYc/s1600-h/image111.png&quot;&gt;&lt;img title=&quot;image&quot; style=&quot;border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px&quot; height=&quot;413&quot; alt=&quot;image&quot; src=&quot;http://lh5.ggpht.com/_hpD3dFwMIwA/STaLEvpUxeI/AAAAAAAADDA/I4PUzIdrFqY/image_thumb183.png?imgmax=800&quot; width=&quot;341&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;17. Damos clic en Test… y usamos un nombre de usuario y contrasena de nuestro directorio LDAP&lt;/p&gt;  &lt;p&gt;&lt;a href=&quot;http://lh6.ggpht.com/_hpD3dFwMIwA/STaLFGZzrmI/AAAAAAAADDE/K_LAcjgDmwc/s1600-h/image115.png&quot;&gt;&lt;img title=&quot;image&quot; style=&quot;border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px&quot; height=&quot;152&quot; alt=&quot;image&quot; src=&quot;http://lh5.ggpht.com/_hpD3dFwMIwA/STaLGDVGENI/AAAAAAAADDI/m9XHUcYdV3Q/image_thumb190.png?imgmax=800&quot; width=&quot;244&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Damos clic en OK y debera aparecer la siguiente ventana&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;a href=&quot;http://lh3.ggpht.com/_hpD3dFwMIwA/STaLGj-OGUI/AAAAAAAADDM/5T928NqvHN0/s1600-h/image120.png&quot;&gt;&lt;img title=&quot;image&quot; style=&quot;border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px&quot; height=&quot;234&quot; alt=&quot;image&quot; src=&quot;http://lh3.ggpht.com/_hpD3dFwMIwA/STaLHgb6zGI/AAAAAAAADDQ/Ybo_CybJ5Qc/image_thumb197.png?imgmax=800&quot; width=&quot;382&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Damos clic en Close, y en la siguiente ventana en OK&lt;/p&gt;  &lt;p&gt;&lt;a href=&quot;http://lh4.ggpht.com/_hpD3dFwMIwA/STaLJLf1b9I/AAAAAAAADDU/cPb5jdOZrZU/s1600-h/image126.png&quot;&gt;&lt;img title=&quot;image&quot; style=&quot;border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px&quot; height=&quot;162&quot; alt=&quot;image&quot; src=&quot;http://lh4.ggpht.com/_hpD3dFwMIwA/STaLKPKByqI/AAAAAAAADDY/FemB2g-YmaU/image_thumb206.png?imgmax=800&quot; width=&quot;440&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;18. Ahora probamos en nuestra interfaz web&lt;/p&gt;  &lt;p&gt;&lt;a href=&quot;http://lh5.ggpht.com/_hpD3dFwMIwA/STaLLWv1v_I/AAAAAAAADDc/-o2NxPK8EUM/s1600-h/image132.png&quot;&gt;&lt;img title=&quot;image&quot; style=&quot;border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px&quot; height=&quot;395&quot; alt=&quot;image&quot; src=&quot;http://lh6.ggpht.com/_hpD3dFwMIwA/STaLM2QMeFI/AAAAAAAADDg/gRw00_Nb_LU/image_thumb221.png?imgmax=800&quot; width=&quot;432&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Listo, ya tenemos integrado nuestro Oracle Business Intelligence con nuestro directorio LDAP.&lt;/p&gt;  </content><link rel='replies' type='application/atom+xml' href='http://od-tech.blogspot.com/feeds/462931785645572052/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/8445877885055660465/462931785645572052' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8445877885055660465/posts/default/462931785645572052'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8445877885055660465/posts/default/462931785645572052'/><link rel='alternate' type='text/html' href='http://od-tech.blogspot.com/2008/12/oracle-business-intelligence-y-ldap.html' title='Oracle Business Intelligence y LDAP'/><author><name>John J. Bocachica</name><uri>http://www.blogger.com/profile/05173460945632553184</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://bp2.blogger.com/_hpD3dFwMIwA/R9bYn9MbUPI/AAAAAAAAA_s/4nygb2QlOak/S220/boca+linchtestein+.jpg'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://lh4.ggpht.com/_hpD3dFwMIwA/STaKqRtEPaI/AAAAAAAADBQ/z6X9AUmW8EE/s72-c/image_thumb228.png?imgmax=800" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8445877885055660465.post-675721379179720633</id><published>2008-12-02T17:40:00.001-05:00</published><updated>2008-12-02T17:40:15.672-05:00</updated><title type='text'>Integrando fuentes con Oracle Business Intelligence</title><content type='html'>&lt;p&gt;Quiza una de las preguntas mas comunes al trabajar con el front-end de una solucion de inteligencia de negocios, es el saber como integrar varias fuentes de informacion sin necesidad de pasar por la ETL, bien, durante este post veremos como integrar 2 fuentes basicas, integraremos Oracle Database con un archivo separado por comas (CSV), cabe anotar que este proceso funciona exactamente igual para cualquier tipo de fuente, si por ejemplo quieres integrar una fuente Oracle con una fuente Microsoft (Access, SQL Server), el proceso es exactamente el mismo.&lt;/p&gt;  &lt;p&gt;Fuentes&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;CSV&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;img style=&quot;border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px&quot; height=&quot;217&quot; alt=&quot;image&quot; src=&quot;http://lh3.ggpht.com/_hpD3dFwMIwA/STW5AG9VFbI/AAAAAAAAC_0/6Fb2eHIwhM0/image17.png?imgmax=800&quot; width=&quot;349&quot; align=&quot;right&quot; border=&quot;0&quot; /&gt;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Oracle database&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;img style=&quot;border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px&quot; height=&quot;401&quot; alt=&quot;image&quot; src=&quot;http://lh6.ggpht.com/_hpD3dFwMIwA/STW5A0MlwnI/AAAAAAAAC_4/P54_ebCbnic/image25.png?imgmax=800&quot; width=&quot;335&quot; align=&quot;right&quot; border=&quot;0&quot; /&gt;&amp;#160; &lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Desde el Oracle BI Administrator, primero vamos a crear las conexiones.&lt;/p&gt;  &lt;p&gt;Para el caso del archivo CSV debemos tener previamente creada una conexion ODBC tipica que apunte al archivo que creamos.&lt;/p&gt;  &lt;p&gt;&lt;a href=&quot;http://lh4.ggpht.com/_hpD3dFwMIwA/STW5Bi5URdI/AAAAAAAAC_8/hhrDEcCjYrA/s1600-h/image33.png&quot;&gt;&lt;img style=&quot;border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px&quot; height=&quot;273&quot; alt=&quot;image&quot; src=&quot;http://lh5.ggpht.com/_hpD3dFwMIwA/STW5CzZgReI/AAAAAAAADAA/IBJzPcNawOE/image_thumb14.png?imgmax=800&quot; width=&quot;401&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&lt;a href=&quot;http://lh3.ggpht.com/_hpD3dFwMIwA/STW5D0M-95I/AAAAAAAADAE/zQWmpdm4E1g/s1600-h/image40.png&quot;&gt;&lt;img style=&quot;border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px&quot; height=&quot;246&quot; alt=&quot;image&quot; src=&quot;http://lh4.ggpht.com/_hpD3dFwMIwA/STW5FExWv8I/AAAAAAAADAI/nv85kwiQfT4/image_thumb19.png?imgmax=800&quot; width=&quot;880&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Realizamos exactamente lo mismo con la base de datos Oracle&lt;/p&gt;  &lt;p&gt;&amp;#160; &lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;a href=&quot;http://lh4.ggpht.com/_hpD3dFwMIwA/STW5GNlmXUI/AAAAAAAADAM/GcVzdkKG27c/s1600-h/image50.png&quot;&gt;&lt;img style=&quot;border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px&quot; height=&quot;278&quot; alt=&quot;image&quot; src=&quot;http://lh3.ggpht.com/_hpD3dFwMIwA/STW5G_A2htI/AAAAAAAADAQ/UekreeiekC0/image_thumb27.png?imgmax=800&quot; width=&quot;325&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;&lt;a href=&quot;http://lh5.ggpht.com/_hpD3dFwMIwA/STW5HtVdfQI/AAAAAAAADAU/snReypm-OEc/s1600-h/image55.png&quot;&gt;&lt;img style=&quot;border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px&quot; height=&quot;285&quot; alt=&quot;image&quot; src=&quot;http://lh3.ggpht.com/_hpD3dFwMIwA/STW5IltX4kI/AAAAAAAADAY/xPOhWfBvT7U/image_thumb30.png?imgmax=800&quot; width=&quot;421&quot; align=&quot;right&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Verificamos tener las 2 conexiones fisicas a las diferentes fuentes de informacion&lt;/p&gt;  &lt;p&gt;&lt;a href=&quot;http://lh4.ggpht.com/_hpD3dFwMIwA/STW5JaR9nJI/AAAAAAAADAc/Z4SVaLPRk-c/s1600-h/image58.png&quot;&gt;&lt;img style=&quot;border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px&quot; height=&quot;236&quot; alt=&quot;image&quot; src=&quot;http://lh5.ggpht.com/_hpD3dFwMIwA/STW5KHGLDUI/AAAAAAAADAg/hm14zsdynzc/image_thumb31.png?imgmax=800&quot; width=&quot;244&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Debemos crear ahora en la capa de negocio un nuevo modelo, alli agregaremos las 2 tablas, solamente debemos hacer drag and drop desde el modelo fisico hacia el modelo de negocio.&lt;/p&gt;  &lt;p&gt;&lt;a href=&quot;http://lh5.ggpht.com/_hpD3dFwMIwA/STW5KzQgeRI/AAAAAAAADAk/u5yzuJ6lcas/s1600-h/image72.png&quot;&gt;&lt;img style=&quot;border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px&quot; height=&quot;189&quot; alt=&quot;image&quot; src=&quot;http://lh5.ggpht.com/_hpD3dFwMIwA/STW5Lqx1FZI/AAAAAAAADAo/ilki_7J74Ho/image_thumb37.png?imgmax=800&quot; width=&quot;244&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Ahora debemos dar clic derecho en el modelo de negocio y editar el diagrama de negocio (Business Model Diagram); crear un join entre Clientes.csv y VENTAS (1:n)&lt;/p&gt;  &lt;p&gt;&lt;a href=&quot;http://lh4.ggpht.com/_hpD3dFwMIwA/STW5MWvtV5I/AAAAAAAADAs/SJAO6qqopZI/s1600-h/image64.png&quot;&gt;&lt;img style=&quot;border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px&quot; height=&quot;120&quot; alt=&quot;image&quot; src=&quot;http://lh3.ggpht.com/_hpD3dFwMIwA/STW5NH3l8tI/AAAAAAAADAw/Y9SRdA65lLc/image_thumb33.png?imgmax=800&quot; width=&quot;244&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Una vez tenemos el diagrama listo, ya estamos preparados para ir a la capa de presentacion, solamente debemos tomar el modelo de negocio y arrastrarlo hacia la capa de presentacion.&lt;/p&gt;  &lt;p&gt;&lt;a href=&quot;http://lh4.ggpht.com/_hpD3dFwMIwA/STW5Oe7JaoI/AAAAAAAADA0/qU0dDGtH6wk/s1600-h/image76.png&quot;&gt;&lt;img style=&quot;border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px&quot; height=&quot;238&quot; alt=&quot;image&quot; src=&quot;http://lh3.ggpht.com/_hpD3dFwMIwA/STW5PzJ6pcI/AAAAAAAADA4/bWf-H8XnWOk/image_thumb39.png?imgmax=800&quot; width=&quot;695&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Ahora podemos probar nuestras fuentes integradas.&lt;/p&gt;  &lt;p&gt;Aunque en este punto ya podemos utilizar la capa de presentacion, es importante tener en cuenta que debemos crear las agregaciones y las dimensiones, este proceso se realiza de la forma tipica, como si tuviesemos una sola fuente de informacion.&lt;/p&gt;  &lt;p&gt;&lt;a href=&quot;http://lh4.ggpht.com/_hpD3dFwMIwA/STW5QwHXWFI/AAAAAAAADA8/yKEGe3O6utc/s1600-h/image86.png&quot;&gt;&lt;img style=&quot;border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px&quot; height=&quot;280&quot; alt=&quot;image&quot; src=&quot;http://lh3.ggpht.com/_hpD3dFwMIwA/STW5Rl0_0sI/AAAAAAAADBA/3h26yzo4MdE/image_thumb45.png?imgmax=800&quot; width=&quot;710&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Y aqui el resultado final&lt;/p&gt;  &lt;p&gt;&lt;a href=&quot;http://lh5.ggpht.com/_hpD3dFwMIwA/STW5SV5CL8I/AAAAAAAADBE/AF10pr-3fME/s1600-h/image90.png&quot;&gt;&lt;img style=&quot;border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px&quot; height=&quot;266&quot; alt=&quot;image&quot; src=&quot;http://lh6.ggpht.com/_hpD3dFwMIwA/STW5TYX_bjI/AAAAAAAADBI/QXlRethP6OM/image_thumb47.png?imgmax=800&quot; width=&quot;386&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;De una forma facil y sencilla integramos 2 fuentes de informacion.&lt;/p&gt;  </content><link rel='replies' type='application/atom+xml' href='http://od-tech.blogspot.com/feeds/675721379179720633/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/8445877885055660465/675721379179720633' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8445877885055660465/posts/default/675721379179720633'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8445877885055660465/posts/default/675721379179720633'/><link rel='alternate' type='text/html' href='http://od-tech.blogspot.com/2008/12/integrando-fuentes-con-oracle-business.html' title='Integrando fuentes con Oracle Business Intelligence'/><author><name>John J. Bocachica</name><uri>http://www.blogger.com/profile/05173460945632553184</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://bp2.blogger.com/_hpD3dFwMIwA/R9bYn9MbUPI/AAAAAAAAA_s/4nygb2QlOak/S220/boca+linchtestein+.jpg'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://lh3.ggpht.com/_hpD3dFwMIwA/STW5AG9VFbI/AAAAAAAAC_0/6Fb2eHIwhM0/s72-c/image17.png?imgmax=800" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8445877885055660465.post-8646767655306794715</id><published>2008-12-02T17:37:00.003-05:00</published><updated>2008-12-02T17:37:56.959-05:00</updated><title type='text'>Instalación de Oracle BI Enterprise Edition Plus en Linux Unbreakable</title><content type='html'>&lt;p&gt;&lt;/p&gt;  &lt;p&gt;Al iniciar este proceso tuve varios tropiezos que me gustaria compartir con ustedes, aunque en realidad el proceso de instalacion de Oracle Business Intelligence Enterprise Edition Plus en Linux es simple, si hay ciertos pasos que se deben tener muy en cuenta al momento de instalar el producto, aqui realizaremos una instalacion basica en donde podremos usar Answers, Dashboards, Publisher y demas.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Lo primero&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Tengan en cuenta que es requerido el tener el &lt;a href=&quot;http://developers.sun.com/downloads/&quot; target=&quot;_blank&quot;&gt;JDK 1.5 o superior, para este caso descarge el 1.6&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Instalacion del JDK&lt;/strong&gt;&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;Cree una carpeta llamada Java en /usr/ &lt;/li&gt;    &lt;li&gt;en la terminal copie      &lt;ol&gt;       &lt;li&gt;$ cp jdk-6u6-linux-i586.bin /usr/java &lt;/li&gt;        &lt;li&gt;$ cd /usr/java &lt;/li&gt;        &lt;li&gt;$ ./jdk-6u6-linux-i586.bin &lt;/li&gt;        &lt;li&gt;&lt;em&gt;Lea el contrato, aceptelo o rechazelo a discrecion&lt;/em&gt; &lt;/li&gt;        &lt;li&gt;&lt;em&gt;El proceso de instalacion sera automatico y tomara unos 3 minutos aprox&lt;/em&gt; &lt;/li&gt;        &lt;li&gt;$ echo $JAVA_HOME &lt;/li&gt;        &lt;li&gt;&amp;#160; &lt;/li&gt;        &lt;li&gt;$ export JAVA_HOME=jdk1.6.0_06 &lt;/li&gt;        &lt;li&gt;$ PATH=$JAVA_HOME/bin:$PATH &lt;/li&gt;     &lt;/ol&gt;   &lt;/li&gt;    &lt;li&gt;Instalacion Completa! &lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;&lt;strong&gt;Instalacion de OBIEE+&lt;/strong&gt;&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;Para este proceso se requieren aproximadamente 2GB de espacio en disco, &lt;strong&gt;verifique que cuente con esta capacidad.&lt;/strong&gt; &lt;/li&gt;    &lt;li&gt;Vaya a la carpeta en donde se encuentran los instaladores &lt;/li&gt;    &lt;li&gt;Descomprimalos &lt;/li&gt;    &lt;li&gt;$ cpio -idmv &amp;lt; biee_linux_x86_redhat_101330_disk1.cpio &lt;/li&gt;    &lt;li&gt;$ cd /RH_Linux/Server/Oracle_Business_Intelligence &lt;/li&gt;    &lt;li&gt;$ ./setup.sh &lt;/li&gt;    &lt;li&gt;El proceso de instalacion lanzara una pantalla, todo el proceso completo se puede ver en detalle en el siguiente video. &lt;/li&gt; &lt;/ol&gt;  &lt;div class=&quot;wlWriterEditableSmartContent&quot; id=&quot;scid:5737277B-5D6D-4f48-ABFC-DD9C333F4C5D:00696371-1683-4e09-9b28-5c100c31921f&quot; style=&quot;padding-right: 0px; display: inline; padding-left: 0px; float: none; padding-bottom: 0px; margin: 0px; padding-top: 0px&quot;&gt;&lt;div id=&quot;146429a0-1aa8-40a2-9f19-26542426a935&quot; style=&quot;margin: 0px; padding: 0px; display: inline;&quot;&gt;&lt;div&gt;&lt;a href=&quot;http://www.youtube.com/watch?v=c3By83P9OBE&amp;amp;hl=en&quot; target=&quot;_new&quot;&gt;&lt;img src=&quot;http://lh3.ggpht.com/_hpD3dFwMIwA/STW4w4qWA3I/AAAAAAAAC_w/VMpV1jbwTZo/video7a0df21ae13e%5B3%5D.jpg?imgmax=800&quot; style=&quot;border-style: none&quot; galleryimg=&quot;no&quot; onload=&quot;var downlevelDiv = document.getElementById(&#39;146429a0-1aa8-40a2-9f19-26542426a935&#39;); downlevelDiv.innerHTML = &amp;quot;&amp;lt;div&amp;gt;&amp;lt;object width=\&amp;quot;340\&amp;quot; height=\&amp;quot;280\&amp;quot;&amp;gt;&amp;lt;param name=\&amp;quot;movie\&amp;quot; value=\&amp;quot;http://www.youtube.com/v/c3By83P9OBE&amp;amp;hl=en\&amp;quot;&amp;gt;&amp;lt;\/param&amp;gt;&amp;lt;param name=\&amp;quot;wmode\&amp;quot; value=\&amp;quot;transparent\&amp;quot;&amp;gt;&amp;lt;\/param&amp;gt;&amp;lt;embed src=\&amp;quot;http://www.youtube.com/v/c3By83P9OBE&amp;amp;hl=en\&amp;quot; type=\&amp;quot;application/x-shockwave-flash\&amp;quot; wmode=\&amp;quot;transparent\&amp;quot; width=\&amp;quot;340\&amp;quot; height=\&amp;quot;280\&amp;quot;&amp;gt;&amp;lt;\/embed&amp;gt;&amp;lt;\/object&amp;gt;&amp;lt;\/div&amp;gt;&amp;quot;;&quot; alt=&quot;&quot;&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style=&quot;clear:both;font-size:.8em;&quot;&gt;Video de Instalacion&lt;/div&gt;&lt;/div&gt;  &lt;ol&gt;John J Bocachica&lt;/ol&gt;  </content><link rel='replies' type='application/atom+xml' href='http://od-tech.blogspot.com/feeds/8646767655306794715/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/8445877885055660465/8646767655306794715' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8445877885055660465/posts/default/8646767655306794715'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8445877885055660465/posts/default/8646767655306794715'/><link rel='alternate' type='text/html' href='http://od-tech.blogspot.com/2008/12/instalacin-de-oracle-bi-enterprise.html' title='Instalación de Oracle BI Enterprise Edition Plus en Linux Unbreakable'/><author><name>John J. Bocachica</name><uri>http://www.blogger.com/profile/05173460945632553184</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://bp2.blogger.com/_hpD3dFwMIwA/R9bYn9MbUPI/AAAAAAAAA_s/4nygb2QlOak/S220/boca+linchtestein+.jpg'/></author><thr:total>0</thr:total></entry></feed>