Informatica (Versión 10.0.0)
Guía del usuario de Data Transformation
Informatica Guía del usuario de Data Transformation Versión 10.0.0 Junio 2015 Copyright (c) 1993-2016 Informatica LLC. Todos los derechos reservados. Este software y esta documentación contienen información privada de Informatica LLC y se facilitan bajo un acuerdo de licencia que incluye restricciones sobre el uso y la divulgación y también están protegidos por leyes de copyright. Está prohibida la ingeniería inversa del software. Ninguna parte de este documento puede ser reproducida o transmitida de cualquier forma o manera (electrónica, fotocopia, grabación o mediante otros métodos) sin el consentimiento previo de Informatica LLC. Este Software puede estar protegido por Patentes de los Estados Unidos y/o patentes internacionales y otras patentes pendientes. El uso, la duplicación o la divulgación del software por parte del gobierno de los Estados Unidos están sujetos a las restricciones puntualizadas en el acuerdo de licencia de software vigente y según se establece en la reglamentación DFARS 227.7202-1(a) y 227.7702-3(a) (1995), DFARS 252.227-7013©(1)(ii) (OCT 1988), FAR 12.212(a) (1995), FAR 52.227-19 o FAR 52.227-14 (ALT III), según proceda. La información contenida en este producto o documentación está sujeta a cambios sin previo aviso. Si encuentra algún problema en este producto o documentación, infórmenos por escrito. Informatica, Informatica Platform, Informatica Data Services, PowerCenter, PowerCenterRT, PowerCenter Connect, PowerCenter Data Analyzer, PowerExchange, PowerMart, Metadata Manager, Informatica Data Quality, Informatica Data Explorer, Informatica B2B Data Transformation, Informatica B2B Data Exchange Informatica On Demand, Informatica Identity Resolution, Informatica Application Information Lifecycle Management, Informatica Complex Event Processing, Ultra Messaging e Informatica Master Data Management son marcas comerciales o marcas comerciales registradas de Informatica LLC en Estados Unidos y en las jurisdicciones de todo el mundo. Los demás nombres de productos y empresas pueden ser nombres o marcas comerciales de sus respectivos titulares. Hay fragmentos de este software y/o documentación que están sujetos a copyright perteneciente a terceros, incluido, entre otros: Copyright DataDirect Technologies. Todos los derechos reservados. Copyright © Sun Microsystems. Todos los derechos reservados. Copyright © RSA Security Inc. Todos los derechos reservados. Copyright © Ordinal Technology Corp. Todos los derechos reservados.Copyright © Aandacht c.v. Todos los derechos reservados. Copyright Genivia, Inc. Todos los derechos reservados. Copyright Isomorphic Software. Todos los derechos reservados. Copyright © Meta Integration Technology, Inc. Todos los derechos reservados. Copyright © Intalio. Todos los derechos reservados. Copyright © Oracle. Todos los derechos reservados. Copyright © Adobe Systems Incorporated. Todos los derechos reservados. Copyright © DataArt, Inc. Todos los derechos reservados. Copyright © ComponentSource. Todos los derechos reservados. Copyright © Microsoft Corporation. Todos los derechos reservados. Copyright © Rogue Wave Software, Inc. Todos los derechos reservados. Copyright © Teradata Corporation. Todos los derechos reservados. Copyright © Yahoo! Inc. Todos los derechos reservados. Copyright © Glyph & Cog, LLC. Todos los derechos reservados. Copyright © Thinkmap, Inc. Todos los derechos reservados. Copyright © Clearpace Software Limited. Todos los derechos reservados. Copyright © Information Builders, Inc. Todos los derechos reservados. Copyright © OSS Nokalva, Inc. Todos los derechos reservados. Copyright Edifecs, Inc. Todos los derechos reservados. Copyright Cleo Communications, Inc. Todos los derechos reservados. Copyright © International Organization for Standardization 1986. Todos los derechos reservados. Copyright © ejtechnologies GmbH. Todos los derechos reservados. Copyright © Jaspersoft Corporation. Todos los derechos reservados. Copyright © International Business Machines Corporation. Todos los derechos reservados. Copyright © yWorks GmbH. Todos los derechos reservados. Copyright © Lucent Technologies. Todos los derechos reservados. Copyright © University of Toronto. Todos los derechos reservados. Copyright © Daniel Veillard. Todos los derechos reservados. Copyright © Unicode, Inc. Copyright IBM Corp. Todos los derechos reservados. Copyright © MicroQuill Software Publishing, Inc. Todos los derechos reservados. Copyright © PassMark Software Pty Ltd. Todos los derechos reservados. Copyright © LogiXML, Inc. Todos los derechos reservados. Copyright © 2003-2010 Lorenzi Davide. Todos los derechos reservados. Copyright © Red Hat, Inc. Todos los derechos reservados. Copyright © The Board of Trustees of the Leland Stanford Junior University. Todos los derechos reservados. Copyright © EMC Corporation. Todos los derechos reservados. Copyright © Flexera Software. Todos los derechos reservados. Copyright © Jinfonet Software. Todos los derechos reservados. Copyright © Apple Inc. Todos los derechos reservados. Copyright © Telerik Inc. Todos los derechos reservados. Copyright © BEA Systems. Todos los derechos reservados. Copyright © PDFlib GmbH. Todos los derechos reservados. Copyright © Orientation in Objects GmbH. Todos los derechos reservados. Copyright © Tanuki Software, Ltd. Todos los derechos reservados. Copyright © Ricebridge. Todos los derechos reservados. Copyright © Sencha, Inc. Todos los derechos reservados. Copyright © Scalable Systems, Inc. Todos los derechos reservados. Copyright © jQWidgets. Todos los derechos reservados. Copyright © Tableau Software, Inc. Todos los derechos reservados. Copyright © MaxMind, Inc. Todos los derechos reservados. Copyright © TMate Software s.r.o. Todos los derechos reservados. Copyright © MapR Technologies Inc. Todos los derechos reservados. Copyright © Amazon Corporate LLC. Todos los derechos reservados. Este producto incluye software desarrollado por la Apache Software Foundation (http://www.apache.org/) y/u otro software protegido por varias versiones de la licencia Apache License ("Licencia"). Puede obtener una copia de estas licencias en http://www.apache.org/licenses/. A menos que las leyes aplicables lo requieran o se haya acordado por escrito, el software distribuido bajo estas licencias se distribuye "TAL CUAL", SIN GARANTÍAS NI CONDICIONES DE NINGÚN TIPO, ya sea expresas o implícitas. Consulte las licencias del idioma específico para conocer los permisos y las limitaciones que rigen según las licencias. Este producto incluye software desarrollado por Mozilla (http://www.mozilla.org/), copyright del software de The JBoss Group, LLC, todos los derechos reservados; copyright del software © 1999-2006 de Bruno Lowagie y Paulo Soares y otro software protegido con licencia por el acuerdo GNU Lesser General Public License Agreement, que se puede encontrar en la dirección http:// www.gnu.org/licenses/lgpl.html. Los materiales se facilitan gratuitamente por parte de Informatica, "tal cual", sin garantía de ningún tipo, ya sea expresa o implícita, incluidas, entre otras, las garantías implícitas de adecuación para un propósito determinado y de validez para el comercio. El producto incluye software ACE(TM) y TAO(TM) con copyright de Douglas C. Schmidt y su grupo de investigación de la Washington University, University of California, Irvine y Vanderbilt University, Copyright (©) 1993-2006, todos los derechos reservados. Este producto incluye software desarrollado por el OpenSSL Project para uso en el OpenSSL Toolkit (copyright The OpenSSL Project. Todos los derechos reservados) y la redistribución de este software está sujeta a los términos especificados en http://www.openssl.org y http://www.openssl.org/source/license.html. Este producto incluye software Curl con Copyright 1996-2013, Daniel Stenberg, . Todos los derechos reservados. Los permisos y las limitaciones relativos a este software están sujetos a los términos disponibles en la dirección http://curl.haxx.se/docs/copyright.html. La autorización para utilizar, copiar, modificar y distribuir este software para cualquier propósito con o sin tasas se concede por el presente, siempre que el aviso de copyright anterior y este aviso de permiso aparezcan en todas las copias. El producto incluye copyright de software 2001-2005 (©) MetaStuff, Ltd. Todos los derechos reservados. Los permisos y las limitaciones relativos a este software están sujetos a los términos disponibles en la dirección http://www.dom4j.org/license.html. El producto incluye copyright de software © 2004-2007, The Dojo Foundation. Todos los derechos reservados. Los permisos y las limitaciones relativos a este software están sujetos a los términos disponibles en la dirección http://dojotoolkit.org/license. Este producto incluye software ICU con copyright de International Business Machines Corporation y otros. Todos los derechos reservados. Los permisos y las limitaciones relativos a este software están sujetos a los términos disponibles en la dirección http://source.icu-project.org/repos/icu/icu/trunk/license.html. Este producto incluye copyright de software © 1996-2006 Per Bothner. Todos los derechos reservados. Su derecho a utilizar estos materiales está establecido en la licencia que puede encontrarse en la dirección http://www.gnu.org/software/kawa/Software-License.html. Este producto incluye software OSSP UUID con Copyright © 2002 Ralf S. Engelschall, Copyright © 2002 The OSSP Project Copyright © 2002 Cable & Wireless Deutschland. Los permisos y las limitaciones relativas a este software están sujetos a los términos disponibles en la dirección http://www.opensource.org/licenses/mitlicense.php. Este producto incluye software desarrollado por Boost (http://www.boost.org/) o protegido por la licencia de software de Boost. Los permisos y las limitaciones relativos a este software están sujetos a los términos disponibles en la dirección http://www.boost.org/LICENSE_1_0.txt.
Este producto incluye copyright de software © 1997-2007 University of Cambridge. Los permisos y las limitaciones relativos a este software están sujetos a los términos disponibles en la dirección http://www.pcre.org/license.txt. Este producto incluye copyright de software © 2007 The Eclipse Foundation. Todos los derechos reservados. Los permisos y las limitaciones relativos a este software están sujetos a los términos especificados en http://www.eclipse.org/org/documents/epl-v10.php y http://www.eclipse.org/org/documents/edl-v10.php. Este producto incluye software protegido por licencia según los términos que aparecen en http://www.tcl.tk/software/tcltk/license.html, http://www.bosrup.com/web/ overlib/?License, http://www.stlport.org/doc/ license.html, http://asm.ow2.org/license.html, http://www.cryptix.org/LICENSE.TXT, http://hsqldb.org/web/hsqlLicense.html, http://httpunit.sourceforge.net/doc/ license.html, http://jung.sourceforge.net/license.txt, http://www.gzip.org/zlib/zlib_license.html, http://www.openldap.org/software/ release/license.html, http://www.libssh2.org, http://slf4j.org/license.html, http://www.sente.ch/software/OpenSourceLicense.html, http://fusesource.com/downloads/ license-agreements/fuse-message-broker-v-5-3- license-agreement, http://antlr.org/license.html, http://aopalliance.sourceforge.net/, http://www.bouncycastle.org/ licence.html, http://www.jgraph.com/jgraphdownload.html, http://www.jcraft.com/jsch/LICENSE.txt, http://jotm.objectweb.org/bsd_license.html, http://www.w3.org/ Consortium/Legal/2002/copyright-software-20021231, http://www.slf4j.org/license.html, http://nanoxml.sourceforge.net/orig/copyright.html, http://www.json.org/ license.html, http://forge.ow2.org/projects/javaservice/, http://www.postgresql.org/about/licence.html, http://www.sqlite.org/copyright.html, http://www.tcl.tk/software/tcltk/ license.html, http://www.jaxen.org/faq.html, http://www.jdom.org/docs/faq.html, http://www.slf4j.org/license.html, http://www.iodbc.org/dataspace/iodbc/wiki/iODBC/ License, http://www.keplerproject.org/md5/license.html, http://www.toedter.com/en/jcalendar/license.html, http://www.edankert.com/bounce/index.html, http://www.netsnmp.org/about/license.html, http://www.openmdx.org/#FAQ, http://www.php.net/license/3_01.txt, http://srp.stanford.edu/license.txt, http://www.schneier.com/ blowfish.html, http://www.jmock.org/license.html, http://xsom.java.net, http://benalman.com/about/license/, https://github.com/CreateJS/EaselJS/blob/master/src/easeljs/ display/Bitmap.js, http://www.h2database.com/html/license.html#summary, http://jsoncpp.sourceforge.net/LICENSE, http://jdbc.postgresql.org/license.html, http:// protobuf.googlecode.com/svn/trunk/src/google/protobuf/descriptor.proto, https://github.com/rantav/hector/blob/master/LICENSE, http://web.mit.edu/Kerberos/krb5current/doc/mitK5license.html, http://jibx.sourceforge.net/jibx-license.html, https://github.com/lyokato/libgeohash/blob/master/LICENSE, https://github.com/hjiang/jsonxx/ blob/master/LICENSE, https://code.google.com/p/lz4/, https://github.com/jedisct1/libsodium/blob/master/LICENSE, http://one-jar.sourceforge.net/index.php? page=documents&file=license, https://github.com/EsotericSoftware/kryo/blob/master/license.txt, http://www.scala-lang.org/license.html, https://github.com/tinkerpop/ blueprints/blob/master/LICENSE.txt y http://gee.cs.oswego.edu/dl/classes/EDU/oswego/cs/dl/util/concurrent/intro.html. Este producto incluye software desarrollado por la Academic Free License (http://www.opensource.org/licenses/afl-3.0.php), la Common Development and Distribution License (http://www.opensource.org/licenses/cddl1.php), la Common Public License (http://www.opensource.org/licenses/cpl1.0.php), la Sun Binary Code License Agreement Supplemental License Terms, la BSD License (http://www.opensource.org/licenses/bsd-license.php), la nueva BSD License (http://opensource.org/licenses/ BSD-3-Clause), la MIT License (http://www.opensource.org/licenses/mit-license.php), la Artistic License (http://www.opensource.org/licenses/artistic-license-1.0) y la Initial Developer’s Public License Version 1.0 (http://www.firebirdsql.org/en/initial-developer-s-public-license-version-1-0/). Este producto incluye copyright de software © 2003-2006 Joe WaInes, 2006-2007 XStream Committers. Todos los derechos reservados. Los permisos y las limitaciones relativos a este software están sujetos a los términos disponibles en la dirección http://xstream.codehaus.org/license.html. Este producto incluye software desarrollado por Indiana University Extreme! Lab. Para obtener más información, visite http://www.extreme.indiana.edu/. Este producto incluye software Copyright © 2013 Frank Balluffi y Markus Moeller. Todos los derechos reservados. Los permisos y las limitaciones relativas a este software están sujetos a los términos de la licencia MIT. Consulte las patentes en https://www.informatica.com/legal/patents.html. EXENCIÓN DE RESPONSABILIDAD: Informatica LLC proporciona esta documentación "tal cual" sin garantía de ningún tipo, ya sea expresa o implícita, incluidas, entre otras, las garantías implícitas de no incumplimiento, de adecuación para un propósito determinado y de validez para el comercio. Informatica LLC no garantiza que este software o esta documentación estén libres de errores. La información proporcionada en este software o en esta documentación puede contener imprecisiones técnicas o errores tipográficos. La información de este software y esta documentación está sujeta a cambios en cualquier momento sin previo aviso. AVISOS Este producto de Informatica (el “Software”) incluye ciertos controladores (los “Controladores DataDirect”) de DataDirect Technologies, una empresa operativa de Progress Software Corporation (“DataDirect”) que están sujetos a los términos y condiciones siguientes: 1. LOS CONTROLADORES DATADIRECT SE PROPORCIONAN "TAL CUAL" SIN GARANTÍA DE NINGÚN TIPO, YA SEA EXPRESA O IMPLÍCITA, INCLUIDAS, ENTRE OTRAS, LAS GARANTÍAS IMPLÍCITAS DE NO INCUMPLIMIENTO, DE ADECUACIÓN PARA UN PROPÓSITO DETERMINADO Y DE VALIDEZ PARA EL COMERCIO. 2. EN NINGÚN CASO DATADIRECT NI SUS PROVEEDORES DE TERCEROS SERÁN RESPONSABLES ANTE EL USUARIO FINAL POR NINGÚN DAÑO DIRECTO, INDIRECTO, FORTUITO, ESPECIAL, CONSECUENTE, NI DE NINGÚN OTRO TIPO, RESULTANTE DEL USO DE LOS CONTROLADORES ODBC, INDEPENDIENTEMENTE DE SI SE HA AVISADO O NO DE LOS POSIBLES DAÑOS POR ADELANTADO. ESTAS LIMITACIONES SE APLICAN A TODAS LAS DEMANDAS JUDICIALES, INCLUIDAS, ENTRE OTRAS, AQUELLAS POR INCUMPLIMIENTO DE CONTRATO, INCUMPLIMIENTO DE LA GARANTÍA, NEGLIGENCIA, RESPONSABILIDAD ESTRICTA, TERGIVERSACIÓN Y OTROS AGRAVIOS. Número de parte: DT-DPT-10000-0001
Tabla de contenido Prefacio . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19 Documentación de Informatica . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19 Portal de atención al cliente (My Support) de Informatica. . . . . . . . . . . . . . . . . . . . . . . . . 19 Documentación de Informatica . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19 Matrices de disponibilidad de productos de Informatica. . . . . . . . . . . . . . . . . . . . . . . . . . 19 Sitio web de Informatica . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20 Biblioteca de asistencia de Informatica . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20 Base de conocimiento de Informatica. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20 Canal de YouTube de atención al cliente de Informatica . . . . . . . . . . . . . . . . . . . . . . . . . 20 Catálogo de soluciones de Informatica. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20 Informatica Velocity. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20 Servicio internacional de atención al cliente de Informatica. . . . . . . . . . . . . . . . . . . . . . . . 21
Capítulo 1: Introducción a Data Transformation. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22 Resumen de Data Transformation. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22 Arquitectura del proceso de Data Transformation. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23 Componentes de Data Transformation. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
Capítulo 2: Transformación del Procesador de datos. . . . . . . . . . . . . . . . . . . . . . . . . . 25 Resumen de la transformación del Procesador de datos. . . . . . . . . . . . . . . . . . . . . . . . . . . . 25 Vistas de la transformación del Procesador de datos. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26 Puertos de la transformación del Procesador de datos. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27 Puertos de entrada de la transformación del Procesador de datos. . . . . . . . . . . . . . . . . . . 27 Puertos de salida de la transformación del Procesador de datos. . . . . . . . . . . . . . . . . . . . 28 Puertos de transferencia. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29 Componente de inicio. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29 Referencias. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30 Configuración de la transformación del Procesador de datos. . . . . . . . . . . . . . . . . . . . . . . . . . 31 Codificación de caracteres. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31 Reglas y directrices de codificación de caracteres. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33 Configuración de salida. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33 Configuración de procesamiento. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35 Configuración de XMap. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35 Configuración de salida XML. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36 Eventos. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37 Tipos de evento. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37 Vista Eventos del procesador de datos. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38 Registros. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38 Registro de eventos en tiempo de diseño. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39 Registro de eventos de tiempo de ejecución. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
4Tabla de contenido
Visualizar un registro de eventos en la vista Eventos del Procesador de datos. . . . . . . . . . . 40 Registro de usuario. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40 Desarrollo de la transformación del Procesador de datos. . . . . . . . . . . . . . . . . . . . . . . . . . . . 41 Crear la transformación del Procesador de datos. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41 Seleccionar los objetos de esquema . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42 Crear objetos en una transformación del Procesador de datos en blanco. . . . . . . . . . . . . . . 42 Crear los puertos. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45 Probar la transformación. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45 Importación y exportación de la transformación del Procesador de datos. . . . . . . . . . . . . . . . . . 45 Exportar la transformación del Procesador de datos como un servicio. . . . . . . . . . . . . . . . . 46 Importar un servicio de Data Transformation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46 Exportación de una asignación con una transformación del Procesador de datos a PowerCenter. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47
Capítulo 3: Formatos de entrada y de salida del asistente . . . . . . . . . . . . . . . . . . . . . 48 Resumen de los formatos de entrada y salida del asistente. . . . . . . . . . . . . . . . . . . . . . . . . . . 48 Biblioteca ASN.1. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49 Especificación del protocolo ASN.1. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49 Estructura del mensaje de entrada de ASN.1. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50 Instalación de la biblioteca ASN.1. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50 Creación de una transformación de biblioteca ASN.1. . . . . . . . . . . . . . . . . . . . . . . . . . . . 51 Instalación de la utilidad ASN-1Step. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53 Transmisión por secuencias ASN.1. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53 Procesador de documentos AsnToXml. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54 Transformadores de ASN.1. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56 BCDSwapToString. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56 BCDToString. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57 HexSequenceToDecimal. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57 HexToDecimal. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57 Swap. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58 Avro. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58 Entrada de Avro y lector de archivos complejos. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59 Compresión de datos Avro con el códec Snappy. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59 Configurar una transformación con entrada de Avro. . . . . . . . . . . . . . . . . . . . . . . . . . . . 60 Configurar una transformación con salida de Avro. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62 Biblioteca de procesamiento de COBOL. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63 Creación de una transformación de COBOL. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63 Definiciones de datos de COBOL. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63 Procedimientos de prueba. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64 Editar una transformación de COBOL. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65 JSON. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65 Esquemas JSON. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66 Muestra de esquema JSON. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66
Tabla de contenido 5
Crear una transformación con JSON. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67 Parquet. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68 Crear una transformación con entrada o salida de Parquet. . . . . . . . . . . . . . . . . . . . . . . . 68 Configurar el lector de archivos complejos para la entrada de Parquet. . . . . . . . . . . . . . . . 69 XML. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69 Crear una transformación que transforma XML. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70
Capítulo 4: Entrada y salida relacional . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71 Resumen de entrada y salida relacionales. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71 Entrada relacional. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71 Configuración de puertos de entrada relacionales. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72 Directrices para vincular puertos de entrada. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73 Definir puertos relacionales de entrada con la vista Resumen. . . . . . . . . . . . . . . . . . . . . . 73 Puertos Clustering_Key. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74 Entrada relacional normalizada . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75 Entrada relacional pivotada. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76 Entrada relacional desnormalizada. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76 Asignación de puertos relacionales a nodos jerárquicos. . . . . . . . . . . . . . . . . . . . . . . . . . 77 Salida relacional. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78 Configuración del puerto de salida relacional. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78 Definir puertos relacionales de entrada con la vista Resumen. . . . . . . . . . . . . . . . . . . . . . 79 Salida relacional normalizada. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80 Salida relacional pivotada. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80 Salida relacional desnormalizada. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81
Capítulo 5: XMap. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82 Resumen de XMap. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82 Esquemas de XMap. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83 Instrucciones de asignación. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84 Tipos de instrucción de asignación. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84 Instrucciones Asignar. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86 Instrucciones de grupo. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87 Instrucciones de grupo de repetición. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89 Instrucciones de enrutador. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 90 Instrucciones de opción. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92 Instrucciones predeterminadas. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94 Ejecutar instrucciones de XMap. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95 Instrucción RunMapplet. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96 Instrucción MappletInput. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97 Instrucción MappletOutput. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 98 Crear un XMap. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99 Usar la malla del editor de XMap. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100 Crear instrucciones de asignación. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100
6Tabla de contenido
Interfaz de malla de instrucciones de asignación. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100 Expresiones de XPath. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101 Predicados. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102 Editor de expresiones XPath. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 106 Funciones del Procesador de datos. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 107 Ejemplo de expresiones de XPath. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108 Crear una expresión. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 109 Variables de XMap. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 109 Crear una variable en el editor de XMap. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 109 Ejemplo de XMap. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 109 Ejemplo de esquema de entrada XML. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 110 Ejemplo de esquema de salida XML. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111 Datos de entrada XML. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111 Jerarquías XML de entrada y salida. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112 Instrucciones de asignación en el ejemplo. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113 Ejemplo de instrucciones de grupo. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 114
Capítulo 6: Bibliotecas. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 116 Resumen de bibliotecas. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 116 Estructura de la biblioteca. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 117 Propiedades de elemento. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 117 Administración de la biblioteca. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 117 Editar las bibliotecas con el editor de la biblioteca. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 118 Añadir un elemento con el editor de la biblioteca. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 119 Editar las propiedades de elemento con el editor de la biblioteca. . . . . . . . . . . . . . . . . . . 119 Probar una biblioteca. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 119 Generar los objetos de la biblioteca. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 120 Descartar los objetos de la biblioteca. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 120 Editar las bibliotecas con el editor de IntelliScript. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 120
Capítulo 7: Objeto de esquema. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 121 Resumen de objetos de esquema. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 121 Vista Resumen de objetos de esquema. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 121 Archivos de esquema. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 122 Vista Esquema de objeto de esquema. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 122 Propiedades para el espacio de nombres. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123 Propiedades de elemento. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123 Propiedades de tipo simple. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 125 Propiedades de tipo complejo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 125 Propiedades del atributo. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 126 Vista avanzada de un objeto de esquema. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 127 Cómo importar un objeto de esquema.. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 128 Actualizaciones de esquema. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 128
Tabla de contenido 7
Sincronización de esquema. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 129 Ediciones de archivos de esquema. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 129
Capítulo 8: Interfaz de la línea de comandos. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 132 Resumen de la interfaz de línea de comandos. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 132 CM_console. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 132
Capítulo 9: Scripts. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 135 Resumen de scripts. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 135 Componentes de script. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 136 Tipos de componente. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 136 Nombres de componente. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 137 Añadir un componente global. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 137 Añadir un componente local. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 138 Propiedades de componente de script. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 138 Propiedades simples. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 138 Propiedades avanzadas. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 138 Valores de propiedades de componente. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 139 Componentes de inicio de script. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 140 Configuración del componente de inicio con el editor de IntelliScript. . . . . . . . . . . . . . . . . 140 Orígenes de ejemplo. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 140 Resaltado de origen de ejemplo. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 141 Cómo configurar un origen de ejemplo en el editor de IntelliScript. . . . . . . . . . . . . . . . . . . 141 Cómo visualizar un origen de ejemplo. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 141 Editor de IntelliScript. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 142 Scripts de ejemplo. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 142 Importar un script de ejemplo. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 144
Capítulo 10: Analizadores. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 145 Resumen de analizadores. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 145 Analizadores independientes de plataforma. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 145 Marcadores de nueva línea. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 145 Rutas de acceso de archivos. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 145 Referencia de componentes de analizador. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 146 Analizador. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 146
Capítulo 11: Puertos de script. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 149 Resumen de puertos de script. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 149 Referencia de componentes de puerto de script. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 149 AdditionalInputPort. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 149 AdditionalOutputPort. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 151 DocList. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 154 FileSearch. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 155
8Tabla de contenido
InputPort. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 155 LocalFile. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 155 OutputPort. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 156 Texto. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 156 URL. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 157
Capítulo 12: Procesadores de documentos. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 158 Resumen de procesadores de documentos. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 158 Definir un procesador de documentos. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 158 Visualización de la salida del procesador de documentos. . . . . . . . . . . . . . . . . . . . . . . . 159 Referencia de componentes de procesador de documentos. . . . . . . . . . . . . . . . . . . . . . . . . 159 AFPToXML. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 159 AsnToXml. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 159 ExcelToDataXml. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 160 ExcelToXml. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 160 ExcelToXml_03_07_10. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 162 ExpandFrameSet. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 162 ExternalJavaPreProcessor. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 162 ExternalPreProcessor. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 162 HIPAAValidator. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 162 PdfFormToXml_1_00. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 163 PdfToTxt_3_02. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 163 PdfToTxt_4. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 164 PowerpointToTextML. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 165 ProcessByTransformers. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 165 ProcessorPipeline. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 165 RtfToTextML. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 165 WordToXml. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 165 XmlToDocument_372. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 166 XmlToExcel. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 166 XmlToXlsx. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 167 Esquema XML TextML. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 168 Editor de configuración de la tablas PdfToTxt_4. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 168 Opciones del editor. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 169 Ejemplo de conversión de PDF. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 170
Capítulo 13: Formatos. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 172 Resumen de formatos. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 172 Propiedades de formato estándar. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 173 Referencia de componentes de formato. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 173 BinaryFormat. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 174 CustomFormat. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 175 HtmlFormat. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 176
Tabla de contenido 9
RtfFormat. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 177 TextFormat. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 177 XmlFormat. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 178 Referencia de componentes de delimitadores. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 179 CommaDelimited. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 180 Delimitador. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 181 DelimiterHierarchy. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 181 EnclosingDelimiters. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 182 HL7. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 182 Positional. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 182 PostScript. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 183 RTF. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 183 SGML. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 183 SpaceDelimited. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 183 TabDelimited. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 184 Referencia de componentes de preprocesador de formatos. . . . . . . . . . . . . . . . . . . . . . . . . . 184 HtmlProcessor. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 185 RtfProcessor. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 185
Capítulo 14: Contenedores de datos. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 186 Resumen de contenedores de datos. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 186 Esquemas XML. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 186 Codificación de esquema. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 187 Archivos de esquema incluidos. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 187 Espacios de nombres. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 187 Contenido combinado. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 187 Características del esquema incompatibles. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 187 Precisión de datos numéricos. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 188 Cómo utilizar un esquema para asignar anclajes. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 189 Representación de IntelliScript de contenedores de datos. . . . . . . . . . . . . . . . . . . . . . . . 189 Asignar contenido combinado. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 189 Asignar tipos de XSI. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 190 Generar un XML válido. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 190 Función de esquemas en el análisis. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 190 Función de esquemas en la serialización y la asignación. . . . . . . . . . . . . . . . . . . . . . . . 191 Variables. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 192 Cómo crear una variable definida por el usuario. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 192 Variables del sistema. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 192 Asignar anclajes a variables. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 195 Cómo utilizar variables en acciones. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 195 Inicializar variables en tiempo de ejecución. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 195 Referencia de componentes de variable. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 195 Variable. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 196
10Tabla de contenido
Contenedores de datos de varias ocurrencias. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 196 Atributos. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 197 Indexar. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 197 Destruir las ocurrencias. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 197
Capítulo 15: Anclajes. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 199 Resumen de anclajes. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 199 Anclajes Marker y Content. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 199 Otros tipos de anclaje. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 199 Cómo los anclajes y los delimitadores funcionan juntos. . . . . . . . . . . . . . . . . . . . . . . . . 200 Asignar anclajes de contenido a contenedores de datos. . . . . . . . . . . . . . . . . . . . . . . . . . . . 200 Asignar a variables. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 201 Asignar a contenedores de datos de varias ocurrencias. . . . . . . . . . . . . . . . . . . . . . . . . 201 Asignar a elementos de contenido combinado. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 201 Definir anclajes. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 201 Dónde definir anclajes. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 202 Secuencia de anclajes. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 202 Cómo añadir un anclaje Marker o Content. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 202 Cómo definir un anclaje. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 203 Propiedades de anclaje estándar. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 203 Cómo un analizador busca anclajes. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 204 Fases de búsqueda. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 205 Ámbito de búsqueda y criterios de búsqueda. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 205 Ajustar la fase de búsqueda. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 206 Ajustar el ámbito de búsqueda. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 206 Ajustar los criterios de búsqueda. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 208 Cómo utilizar los tipos de datos para reducir los criterios de búsqueda. . . . . . . . . . . . . . . 209 Anclajes que contienen anclajes anidados. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 210 Referencia de componentes de anclaje. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 211 Alternatives. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 211 Content. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 213 DelimitedSections. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 217 EmbeddedParser. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 220 EnclosedGroup. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 222 ExtractRecord. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 224 FindReplaceAnchor. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 225 Group. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 228 Marker. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 231 RepeatingGroup. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 233 StructureDefinition. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 238 Referencia de componentes de Searcher. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 242 AttributeSearch. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 242 LearnByExample. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 243
Tabla de contenido 11
NewlineSearch. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 244 OffsetSearch. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 244 PatternSearch. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 244 SegmentSearch. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 245 TextSearch. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 245 TypeSearch. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 246 Referencia de subcomponentes de anclaje. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 247 AllStructure. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 247 AllStructureLocal. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 247 ChoiceStructure. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 248 ChoiceStructureLocal. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 249 Conectar. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 250 EmbeddedStructure. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 250 RecordStructure. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 251 RecordStructureLocal. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 252 SequenceStructure. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 253 SequenceStructureLocal. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 253
Capítulo 16: Transformadores. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 255 Resumen de transformadores. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 255 Cómo definir transformadores. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 255 Cómo utilizar transformadores en anclajes. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 255 Secuencias de transformadores. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 256 Transformadores predeterminados. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 256 Cómo utilizar transformadores como procesadores de documentos. . . . . . . . . . . . . . . . . . 256 Cómo utilizar transformadores en anclajes de serialización. . . . . . . . . . . . . . . . . . . . . . . 257 Cómo utilizar transformadores en acciones. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 257 Propiedades del transformador estándar. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 257 Referencia de componentes de transformador. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 258 AbsURL. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 258 AddEmptyTagsTransformer. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 258 AddString. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 259 Base64Decode. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 260 Base64Encode. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 260 BidiConvert. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 261 CDATADecode. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 261 CDATAEncode. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 262 ChangeCase. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 263 CreateGuid. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 263 CreateUUID. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 263 DateFormatICU. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 264 Dos96HebToAscii. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 267 DynamicTable. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 267
12Tabla de contenido
EbcdicToAscii. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 267 EDIFACTValidation. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 267 EncodeAsUrl. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 268 Codificador. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 269 ExternalTransformer. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 269 FormatNumber. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 270 FromFloat. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 271 FromInteger. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 272 FromPackDecimal. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 273 FromSignedDecimal. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 273 hebrewBidi. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 274 HebrewDosToWindows. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 274 HebrewEBCDICOldCodeToWindows. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 274 hebUniToAscii. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 274 hebUtf8ToAscii. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 274 HtmlEntitiesToASCII. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 274 HtmlProcessor. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 275 InjectFP. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 275 InjectString. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 276 InlineTable. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 277 JavaTransformer. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 277 LookupTransformer. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 278 NormalizeClosingTags. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 280 RegularExpression. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 280 RemoveMarginSpace. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 282 RemoveRtfFormatting. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 283 RemoveTags. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 283 Sustituir. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 284 Resize. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 284 ReverseTransformer. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 285 RtfProcessor. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 286 RtfToASCII. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 286 SubString. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 286 ToFloat. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 287 ToInteger. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 287 ToPackDecimal. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 288 TransformationStartTime. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 289 TransformByParser. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 290 TransformByProcessor. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 291 TransformByService. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 291 TransformerPipeline. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 292 XMLLookupTable. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 293
Tabla de contenido 13
XSLTTransformer. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 293
Capítulo 17: Acciones. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 295 Resumen de acciones. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 295 Cómo funcionan las acciones. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 295 Comparación entre las acciones y los transformadores. . . . . . . . . . . . . . . . . . . . . . . . . 296 Definir acciones. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 296 Propiedades de acción estándar. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 297 Referencia de componentes de acción. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 297 AddEventAction. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 297 AggregateValues. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 298 AppendListItems. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 300 AppendValues. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 302 CalculateValue. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 303 CombineValues. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 305 CreateList. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 307 CustomLog. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 308 DateAddICU. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 308 DateDiffICU. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 309 DownloadFileToDataHolder. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 310 DumpValues. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 311 EnsureCondition. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 312 ExcludeItems. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 316 Asignar. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 316 Notificar. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 318 ResetVisitedPages. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 319 RunMapper. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 320 RunMapplet. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 321 RunParser. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 322 RunSerializer. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 324 RunXMap. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 325 SetValue. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 326 Sort. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 327 ValidateValue. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 328 WriteValue. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 329 XSLTMap. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 331 Referencia de subcomponentes de acción. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 332 OutputDataHolder. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 332 OutputFile. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 333 ResultFile. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 333 StandardErrorLog. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 333
14Tabla de contenido
Capítulo 18: Serializadores. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 334 Resumen de serializadores. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 334 Cómo crear un serializador invirtiendo un analizador. . . . . . . . . . . . . . . . . . . . . . . . . . . 334 Cómo controlar la forma de funcionar del comando Crear serializador. . . . . . . . . . . . . . . . 335 Solución de problemas de un serializador generado automáticamente. . . . . . . . . . . . . . . . 336 Cómo crear un serializador editando el script. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 337 Cómo crear un serializador dentro de una acción RunSerializer. . . . . . . . . . . . . . . . . . . . 338 anclajes de serialización. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 338 Ejemplo de anclajes de serialización. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 338 Secuencia de anclajes de serialización. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 339 Propiedades de serializador estándar. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 339 Referencia de componentes de Serializador. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 340 Serializador. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 340 Referencia de componentes de anclaje de serialización. . . . . . . . . . . . . . . . . . . . . . . . . . . . 341 AlternativeSerializers. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 341 ContentSerializer. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 343 DelimitedSectionsSerializer. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 344 EmbeddedSerializer. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 346 GroupSerializer. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 348 RepeatingGroupSerializer. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 348 StringSerializer. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 351
Capítulo 19: Asignadores. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 352 Crear un asignador. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 352 Componentes anidados dentro de un asignador. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 352 Ejemplo de asignador. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 353 XML de origen. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 353 Salida XML. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 353 Configuración del asignador. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 354 Propiedades de un asignador estándar. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 354 Referencia de componentes de asignador. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 355 Asignador. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 355 Referencia de componentes de anclaje de asignador. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 357 AlternativeMappings. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 357 EmbeddedMapper. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 358 GroupMapping. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 359 RepeatingGroupMapping. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 360
Capítulo 20: Localizadores, claves e indexación. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 363 Resumen de localizadores, claves e indexación. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 363 Ejemplo de localizadores. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 364 Entrada y salida. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 364
Tabla de contenido 15
Solución incorrecta. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 365 Solución correcta. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 365 Ejemplo de indexación por clave. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 366 Entrada. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 366 Salida. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 366 Esquema del enfoque de transformación. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 367 Configuración del asignador. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 367 Uso de la indexación. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 368 Propiedades source y target. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 369 Propiedad source. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 369 Propiedad target. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 373 Propiedades estándar de localizador y clave. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 375 Referencia de componentes de localizador y clave. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 375 Clave. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 375 Localizador. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 377 LocatorByKey. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 378 LocatorByOccurrence. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 379
Capítulo 21: Transmisiones por secuencias. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 380 Resumen de transmisiones por secuencias. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 380 Transmisiones por secuencias de texto. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 381 Segmentos. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 381 Segmentos simples. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 381 Segmentos complejos. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 381 Ejemplo. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 382 Concatenación de encabezados. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 382 Salida de una transmisión por secuencias. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 383 Cómo utilizar marcadores y variables en transmisiones por secuencias. . . . . . . . . . . . . . . 384 Cómo crear una transmisión por secuencias. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 384 Transmisiones por secuencias XML. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 386 Propiedades de transmisión por secuencias estándar. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 388 Referencia de componentes de Transmisión por secuencias. . . . . . . . . . . . . . . . . . . . . . . . . 389 ComplexSegment. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 389 ComplexXmlSegment. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 389 MarkerStreamer. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 390 SimpleSegment. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 392 SimpleXmlSegment. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 393 Transmisión por secuencias. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 394 StreamerVariable. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 395 XmlSegment. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 396 XmlStreamer. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 397 Referencia de subcomponentes de Transmisión por secuencias. . . . . . . . . . . . . . . . . . . . . . . 398 AddHeaderModifier. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 398
16Tabla de contenido
AddStringModifier. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 399 DoNothingModifier. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 400 WellFormedModifier. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 400 WriteSegment. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 401
Capítulo 22: Validadores, notificaciones y control de errores. . . . . . . . . . . . . . . . . 403 Resumen de validadores, notificadores y control de errores. . . . . . . . . . . . . . . . . . . . . . . . . 403 Control de errores. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 404 Utilizar la propiedad optional para el control de errores. . . . . . . . . . . . . . . . . . . . . . . . . 404 Cómo escribir un mensaje de error en el registro de usuario. . . . . . . . . . . . . . . . . . . . . . 405 Validadores. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 407 Propiedades estándar de los validadores. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 408 Referencia de componentes de validador. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 408 AlternativeValidators. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 409 EDIFACTValidation. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 410 Enumeration. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 411 LengthEquals. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 412 MaxLength. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 413 MaxNumber. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 414 MinLength. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 415 MinNumber. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 416 NumberEquals. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 417 ValidateByExpression. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 418 ValidateByPattern. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 419 ValidateByTransformer. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 420 ValidateByType. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 421 ValidateDate. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 422 ValidatorPipeline. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 423 Notificaciones. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 424 Referencia de componentes de notificación. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 425 Notificación. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 425 NotificationGroup. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 426 NotificationHandler. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 426 NotifyFailure. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 427
Capítulo 23: Reglas de validación. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 429 Resumen de reglas de validación. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 429 Referencia de elementos Reglas de validación. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 430 Atributos del elemento Aserción. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 430 Atributos del elemento Lista. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 431 Atributos del elemento Búsqueda. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 431 Atributos del elemento Regla. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 432 Atributos del elemento Seguimiento. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 432
Tabla de contenido 17
Atributos del elemento Variable. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 433 Editor de XPath. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 433 Extensiones XPath. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 433 Editar las reglas de validación en un editor externo. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 436 Crear un objeto Reglas de validación. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 436 Importar un servicio de Data Transformation con reglas de validación. . . . . . . . . . . . . . . . . . . 437
Capítulo 24: Componentes de script personalizado. . . . . . . . . . . . . . . . . . . . . . . . . . . 438 Resumen de los componentes de script personalizado. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 438 Ejemplo de componente personalizado. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 438 Propiedades de componente personalizado. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 439 Desarrollar un componente personalizado en Java. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 440 Ejemplo de interfaz de Java. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 440 Componentes de Java personalizados de ejemplo. . . . . . . . . . . . . . . . . . . . . . . . . . . . 441 Desarrollar un componente personalizado en C o C++. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 441 Limitación de longitud del valor de propiedad C/C++. . . . . . . . . . . . . . . . . . . . . . . . . . . 442 Ejemplo de interfaz C/C++. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 442 Componentes C/C++ personalizados de ejemplo. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 443 Configurar un componente personalizado. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 443 Scripts de ejemplo que contienen componentes personalizados. . . . . . . . . . . . . . . . . . . . 445
Índice. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 446
18Tabla de contenido
Prefacio La Guía del usuario de Data Transformation se ha escrito para desarrolladores, analistas y otros usuarios que son responsables del diseño y la implementación de transformaciones. El libro explica cómo diseñar, configure, probar e implementar transformaciones. Contiene secciones de referencia detalladas que documentan los componentes de transformación y sus propiedades. En este manual se asume que tiene conocimientos básicos sobre cómo utilizar Informatica Developer. También se asume que conoce XML, los esquemas y las técnicas de programación básicas.
Documentación de Informatica Portal de atención al cliente (My Support) de Informatica Como cliente de Informatica, puede acceder al portal de atención al cliente de Informatica en http://mysupport.informatica.com. El sitio contiene información sobre productos, información del grupo de usuarios, boletines de noticias, acceso al sistema de administración de casos de atención al cliente de Informatica (ATLAS), la biblioteca de asistencia de Informatica, la base de conocimiento de Informatica, la documentación de productos de Informatica y acceso a la comunidad de usuarios de Informatica.
Documentación de Informatica El equipo de Documentación de Informatica se esfuerza al máximo para crear documentación precisa y útil. Si le surgen preguntas o tiene comentarios o ideas relacionadas con esta documentación, póngase en contacto con el equipo de Documentación de Informatica enviando un correo electrónico a
[email protected]. Sus opiniones servirán para mejorar nuestra documentación. Por favor, indíquenos si podemos ponernos en contacto con usted en relación a sus comentarios. El equipo de Documentación actualiza la documentación según sea necesario. Para obtener la documentación más reciente de su producto, visite la Documentación de Productos en la dirección http://mysupport.informatica.com.
Matrices de disponibilidad de productos de Informatica Las matrices de disponibilidad de producto (PAM, Product Availability Matrixes) indican las versiones de sistemas operativos, bases de datos y otros tipos de orígenes de datos y destinos admitidos por una versión de un producto. Puede acceder a las PAM en el portal de atención al cliente de Informatica en https://mysupport.informatica.com/community/my-support/product-availability-matrices.
19
Sitio web de Informatica Puede acceder al sitio web corporativo de Informatica a través de la dirección http://www.informatica.com. El sitio contiene información sobre Informatica, su historia, los próximos eventos y las oficinas de ventas. Asimismo, puede encontrar información sobre productos y socios. El área de servicio del sitio incluye información importante sobre soporte técnico, formación y cursos, así como servicios de implementación.
Biblioteca de asistencia de Informatica Como cliente de Informatica, puede acceder a la Biblioteca de asistencia de Informatica a través de la dirección http://mysupport.informatica.com. La Biblioteca de asistencia es una recopilación de documentos que le ayudarán a contar con más datos sobre los productos y las prestaciones de Informatica. Incluye artículos y demostraciones interactivas que ofrecen soluciones a problemas comunes, comparan prestaciones y conductas y le guían en la realización de tareas específicas del día a día.
Base de conocimiento de Informatica Como cliente de Informatica, puede acceder a la Base de conocimiento de Informatica a través de la dirección http://mysupport.informatica.com. Utilice la Base de conocimiento para buscar soluciones documentadas a problemas técnicos conocidos relacionados con los productos de Informatica. Asimismo, puede encontrar respuestas a las preguntas más frecuentes, libros blancos técnicos y sugerencias técnicas. Si le surgen preguntas o tiene comentarios o ideas relacionadas con la Base de conocimiento de Informatica, póngase en contacto con el equipo de la Base de conocimiento de Informatica enviando un correo electrónico a
[email protected].
Canal de YouTube de atención al cliente de Informatica Puede acceder al canal de YouTube de atención al cliente de Informatica en http://www.youtube.com/user/INFASupport. El canal de YouTube del Soporte de Informatica incluye vídeos acerca de soluciones que le guiarán en la realización de tareas específicas. Si tiene alguna pregunta, comentarios o ideas acerca del canal de YouTube de atención al cliente de Informatica, póngase en contacto con el equipo de atención al cliente en YouTube de enviando un mensaje de correo electrónico a
[email protected] o un tweet a @INFASupport.
Catálogo de soluciones de Informatica Informatica Marketplace es un forum donde los desarrolladores y asociados pueden compartir soluciones que aumentan, amplían o mejoran las implementaciones de integración de datos. Al aprovechar cualquiera de los cientos de soluciones disponibles en el Marketplace, puede mejorar la productividad y acelerar el tiempo de implementación en los proyectos. Puede acceder al Catálogo de soluciones de Informatica en http://www.informaticamarketplace.com.
Informatica Velocity Puede acceder a Informatica Velocity en http://mysupport.informatica.com. Con un desarrollo que parte de la experiencia real de cientos de proyectos de administración de datos, Informatica Velocity representa el conocimiento conjunto de nuestros asesores, lo cuales han trabajado con organizaciones de todo el mundo para planificar, desarrollar, implementar y mantener con éxito soluciones de administración de datos. Si tiene alguna pregunta, comentario o idea acerca de Informatica Velocity, póngase en contacto con los Servicios Profesionales de Informatica en
[email protected].
20Prefacio
Servicio internacional de atención al cliente de Informatica Puede ponerse en contacto con nuestro Centro de atención al cliente llamando por teléfono o a través del Soporte en línea. El Soporte en línea requiere un nombre de usuario y una contraseña. Puede solicitar un nombre de usuario y una contraseña en la dirección http://mysupport.informatica.com. Los números de teléfono del servicio internacional de atención al cliente de Informatica están disponibles en el sitio web de Informatica en http://www.informatica.com/us/services-and-training/support-services/global-support-centers/.
Prólogo
21
CAPÍTULO 1
Introducción a Data Transformation Este capítulo incluye los siguientes temas: •
Resumen de Data Transformation, 22
•
Arquitectura del proceso de Data Transformation, 23
•
Componentes de Data Transformation, 24
Resumen de Data Transformation Data Transformation es una aplicación que procesa los archivos complejos, tales como formatos de mensajería, páginas HTML y documentos PDF. Data Transformation también transforma formatos tales como ACORD, HIPAA, HL7, EDI-X12, EDIFACT, AFP y SWIFT. Data Transformation se instala de forma predeterminada al instalar Informatica Developer (la Herramienta del desarrollador). Puede definir una transformación del Procesador de datos para transformar los archivos complejos en una asignación. Cuando ejecute una asignación con la transformación del Procesador de datos, el servicio de Integración de datos llama al Motor de Data Transformation para que procese los datos. La aplicación Data Transformation tiene los siguientes elementos: Transformación del Procesador de datos Una transformación que procesa archivos complejos en una asignación. Defina objeto Script de Data Transformation, XMap, Biblioteca o Reglas de validación en la Herramienta del desarrollador para procesar los datos. Puede incluir la transformación en un perfil de asignación, servicio web o servicio de datos SQL. Servicio de Data Transformation Un conjunto de objetos de Data Transformation que puede exportar desde la transformación del Procesador de datos y ejecutar independiente. Exporte un servicio a un repositorio de Data Transformation y ejecute el servicio desde allí. Repositorio de Data Transformation Un directorio que almacena servicios ejecutables que se exportan desde una transformación del Procesador de datos. El nombre del directorio de repositorio es ServiceDB. Motor del Procesador de datos Un procesador que ejecuta objetos en la transformación del Procesador de datos o los servicios que crea en Developer tool.
22
Arquitectura del proceso de Data Transformation Debe instalar Data Transformation para poder configurar y ejecutar una transformación del Procesador de datos en la Herramienta del desarrollador. La transformación del Procesador de datos puede contener varios scripts u objetos de XMap para transformar archivos complejos. El motor de Data Transformation ejecuta scripts, bibliotecas o XMaps para transformar los datos. Puede utilizar una transformación del Procesador de datos en un servicio de datos, un servicio web o un perfil. La siguiente figura muestra los componentes en la aplicación Data Transformation y los componentes que se utilizan para crear la misma funcionalidad en la Herramienta del desarrollador:
1.
Cree una transformación del Procesador de datos en la Herramienta del desarrollador. Guarde la transformación en el repositorio de modelos.
2.
Exporte la transformación del procesador datos como un servicio de Data Transformation. Exporte el servicio al repositorio de Data Transformation. Puede ejecutar el servicio desde el repositorio.
3.
Puede implementar una aplicación que contiene una transformación del Procesador de datos para un servicio de integración de datos.
Arquitectura del proceso de Data Transformation
23
4.
El servicio de integración de datos ejecuta la aplicación y llama al motor del Procesador de datos para procesar la lógica de transformación.
5.
El motor del Procesador de datos también ejecuta los servicios del repositorio de Data Transformation.
Componentes de Data Transformation Cuando se define un servicio de Data Transformation o una transformación del Procesador de datos, se pueden combinar varios componentes para transformar los datos. Data Transformation tiene los siguientes tipos de componentes que transforman datos: Biblioteca Transforme una entrada de tipo de mensaje de industria en otros formatos. Asignador Convierte un documento de origen XML en otro documento XML. Analizador Convierte documentos de origen a XML. La entrada puede tener cualquier formato. La salida de un analizador es XML. Serializador Convierte un archivo XML en otro documento. La salida puede tener cualquier formato. Transmisión por secuencias Divide documentos de entrada de gran tamaño, tales como secuencias de datos de varios gigabytes, en segmentos. La transmisión por secuencias divide documentos que tienen varios mensajes o registros. Transformador Modifica los datos en cualquier formato. Añade, quita, convierte o modifica texto. Utilice Transformadores con un analizador, un Asignador o un Serializador. También puede ejecutar un transformador como componente autónomo. XMap Convierte un documento de origen XML en otro documento XML. XMap tiene la misma funcionalidad como Asignador, pero se puede utilizar una malla en Developer tool para definir la asignación.
24
Capítulo 1: Introducción a Data Transformation
CAPÍTULO 2
Transformación del Procesador de datos Este capítulo incluye los siguientes temas: •
Resumen de la transformación del Procesador de datos, 25
•
Vistas de la transformación del Procesador de datos, 26
•
Puertos de la transformación del Procesador de datos, 27
•
Componente de inicio, 29
•
Referencias, 30
•
Configuración de la transformación del Procesador de datos, 31
•
Eventos, 37
•
Registros, 38
•
Desarrollo de la transformación del Procesador de datos, 41
•
Importación y exportación de la transformación del Procesador de datos, 45
Resumen de la transformación del Procesador de datos La transformación del Procesador de datos procesa formatos de archivo sin estructura y semiestructurados en una asignación. Configure la transformación para procesar formatos de mensajería, páginas HTML, XML, JSON y documentos PDF. También puede convertir formatos estructurados como ACORD, HIPAA, HL7, EDI-X12, EDIFACT, AFP y SWIFT. Una asignación utiliza una transformación del Procesador de datos para cambiar documentos de un formato a otro. La transformación del Procesador de datos procesa archivos de cualquier formato en una asignación. Al crear una transformación del Procesador de datos, puede definir componentes que convierten los datos. Una transformación del Procesador de datos puede contener varios componentes para procesar los datos. Cada componente puede contener otros componentes. Por ejemplo, puede recibir facturas del cliente en archivos de Microsoft Word. Puede configurar una transformación del Procesador de datos para analizar los datos de cada archivo de Word. Extraiga los datos de clientes a una tabla Clientes. Extraiga información de pedidos a una tabla Pedidos. Al crear una transformación del Procesador de datos, define un XMap, script o biblioteca. Un XMap convierte un archivo jerárquico de entrada en un archivo jerárquico de salida de otra estructura. Una biblioteca
25
convierte un tipo de mensajería de industria en un documento XML con una estructura de jerarquías, o un formato XML en un formato estándar de la industria. Un script puede analizar documentos de origen a formato jerárquico, convertir el formato jerárquico en otros formatos de archivo o asignar un documento jerárquico a otro formato jerárquico. Defina los scripts en el editor de IntelliScript de transformación del Procesador de datos. Puede definir los siguientes tipos de scripts: •
Analizador. Convierte documentos de origen a XML. La salida de un analizador siempre es XML. La entrada puede tener cualquier formato, como texto, HTML, Word, PDF o HL7.
•
Serializador. Convierte un archivo XML en un documento de salida de cualquier formato. La salida de un serializador puede tener cualquier formato, como documento de texto, documento HTML o PDF.
•
Asignador. Convierte un documento de origen XML en otra estructura o esquema XML. Puede convertir los mismos documentos XML como en un XMap.
•
Transformador. Modifica los datos a cualquier formato. Añade, quita, convierte o modifica texto. Utilice Transformadores con un analizador, un Asignador o un Serializador. También puede ejecutar un transformador como componente autónomo.
•
Transmisión por secuencias. Divide documentos de entrada de gran tamaño, como secuencias de datos de varios gigabytes, en segmentos. La transmisión por secuencias procesa los documentos que contienen varios mensajes o registros, como archivos HIPAA o EDI.
Vistas de la transformación del Procesador de datos La transformación del Procesador de datos tiene varias vistas a las que puede acceder al configurar la transformación y ejecutarla en la Herramienta del desarrollador. Algunas de las vistas de la transformación del Procesador de datos no aparecen en la Herramienta del desarrollador de forma predeterminada. Para cambiar las vistas para la transformación, haga clic en Ventana > Mostrar vista > Otro > Informatica. Seleccione las vistas que desee ver. La transformación del Procesador de datos tiene las siguientes vistas fijas: Vista Resumen Configure los puertos y defina el componente de inicio. Vista de referencias Añada o elimine esquemas desde la transformación. Vista de configuración Configure la configuración de transformación para la codificación, el control de salida y la generación de XML. Vista Objetos Añada, cambie o elimine objetos de script, biblioteca o XMap desde la transformación. También puede acceder a las siguientes vistas para la transformación del Procesador de datos: Vista del Procesador de datos de origen hexadecimal Muestra un documento de entrada en formato hexadecimal.
26
Capítulo 2: Transformación del Procesador de datos
Vista Eventos del procesador de datos Muestra información sobre los eventos que ocurren cuando ejecuta la transformación en la Herramienta del desarrollador. Muestra la inicialización, la ejecución y los eventos de resumen. Vista de ayuda de script Muestra la ayuda dependiente del contexto para el editor de scripts. Vista del Visor de datos Vea los datos de entrada de ejemplo, ejecute la transformación y vea resultados de salida.
Puertos de la transformación del Procesador de datos Defina los puertos de transformación del Procesador de datos en la vista Resumen de la transformación. Una transformación del Procesador de datos puede leer entradas desde un archivo, un búfer o un búfer de transmisión desde un lector de archivos complejos. Puede utilizar un lector de archivos sin formato como un búfer para leer todo un archivo de una vez. También puede leer un archivo de entrada desde una base de datos. Los puertos de salida que puede crear dependen de si desea devolver una cadena, archivos complejos o filas de datos relacionales desde la transformación.
Puertos de entrada de la transformación del Procesador de datos Cuando se crea una transformación del Procesador de datos, la Herramienta del desarrollador crea un puerto de entrada predeterminado. Cuando se define un puerto de entrada adicional en un componente de inicio de script, la Herramienta del desarrollador crea un puerto de entrada adicional en la transformación. El tipo de entrada determina el tipo de datos que el servicio de integración de datos pasa a la transformación del Procesador de datos. El tipo de entrada determina si la entrada está formada por datos o si es la ruta de acceso de un archivo de origen. Configure uno de los siguientes tipos de entrada: Búfer La transformación del Procesador de datos recibe filas de datos de origen en el puerto Entrada. Utilice el tipo de entrada de búfer cuando configure la transformación para recibir datos desde un archivo sin formato o desde un transformaton de Informatica. Archivo La transformación del Procesador de datos recibe la ruta de acceso al archivo de origen en el puerto Entrada. El componente de inicio del Procesador de datos abre el archivo de origen. Utilice el tipo de entrada de archivo para analizar archivos binarios como los de Microsoft Excel o Microsoft Word. También puede utilizar el tipo de entrada de archivo para archivos de gran tamaño que puede requerir un lote de memoria del sistema para el proceso con un puerto de entrada de búfer. Parámetro de servicio La transformación del Procesador de datos recibe valores para aplicarlos a variables en los puertos de parámetros de servicio. Cuando se seleccionan las variables para recibir datos de entrada, la Herramienta del desarrollador crea un puerto de parámetros de servicio para cada variable.
Puertos de la transformación del Procesador de datos
27
Output_Filename Cuando se configura el puerto de salida predeterminado para devolver un nombre de archivo en lugar de datos sin formato, la Herramienta del desarrollador crea un puerto Output_Filename. Puede pasar un nombre de archivo al puerto Output_Filename desde una asignación. Cuando se define un puerto de entrada, puede definir la ubicación del archivo de entrada de ejemplo para el puerto. Un archivo de entrada de ejemplo es un pequeño ejemplo del archivo de entrada. Haga referencia a un archivo de entrada de ejemplo al crear scripts. También puede utilizar el archivo de entrada de ejemplo cuando pruebe la transformación en la vista Visor de datos. Defina el archivo de entrada de ejemplo en el campo Ubicación de entrada.
Puertos de parámetros de servicio Puede crear puertos de entrada que reciben valores de variables. Las variables pueden contener cualquier tipo de datos como una cadena, una fecha o un número. Una variable también puede contener una ubicación de un documento de origen. Se puede hacer referencia a las variables de un componente del Procesador de datos. Cuando se crea un puerto de entrada para una variable, la Herramienta del desarrollador muestra una lista de variables entre las que puede elegir.
Crear puertos de parámetros de servicio Puede crear puertos de entrada que reciben valores de variables. También puede quitar los puertos que se crean a partir de variables. 1.
Abra la vista Resumen de la transformación del Procesador de datos.
2.
Haga clic en Elegir. La Herramienta del desarrollador muestra una lista de las variables y indica que ya tiene puertos variables.
3.
Seleccione una o más variables. La Herramienta del desarrollador crea un puerto de entrada de búfer para cada variable que seleccione. No se puede modificar el puerto.
4.
Para eliminar un puerto que se crea a partir de una variable, deshabilite la selección de la lista de variable. Cuando deshabilite la selección, la Herramienta del desarrollador elimina el puerto de entrada.
Puertos de salida de la transformación del Procesador de datos La transformación del Procesador de datos tiene un puerto de salida de forma predeterminada. Si se definen los puertos de salida adicionales en un script, la Herramienta del desarrollador añade los puertos a la transformación del Procesador de datos. Puede crear grupos de puertos si configura la transformación para devolver datos relacionales. También puede crear puertos de parámetros de servicio y puertos de transferencia.
Puerto de salida predeterminado La transformación del Procesador de datos tiene un puerto de salida de forma predeterminada. Cuando crea una salida relacional, puede definir grupos de puertos de salida relacionados en lugar del puerto de salida predeterminado. Cuando se define un puerto de salida adicional en un componente de script, la Herramienta del desarrollador añade un puerto de salida adicional para la transformación. Configure uno de los siguientes tipos de salida para un puerto de salida predeterminado:
28
Capítulo 2: Transformación del Procesador de datos
Búfer La transformación del Procesador de datos devuelve XML a través del puerto Salida. Elija el tipo de archivo de búfer cuando analice documentos o cuando asigne XML a otros documentos XML en la transformación del Procesador de datos. Archivo El servicio de integración de datos devuelve un nombre de archivo de salida en el puerto de salida para cada instancia de origen o de fila. El componente de transformación del Procesador de datos escribe el archivo de salida en lugar de devolver datos mediante los puertos de salida de transformación del Procesador de datos. Cuando seleccione un puerto de salida Archivo, la Herramienta del desarrollador crea un puerto de entrada Output_Filename. Puede pasar un nombre de archivo al puerto de nombre de archivo Salida. La transformación del Procesador de datos crea el archivo de salida con un nombre que recibe en este puerto. Si el nombre del archivo de salida está vacío, el servicio de integración de datos devuelve un error de fila. Cuando se produce un error, el servicio de integración de datos escribe un valor nulo en el puerto de salida y devuelve un error de fila. Elija el tipo de salida Archivo al transformar XML a un archivo de datos binarios como un archivo PDF o un archivo de Microsoft Excel.
Puertos de transferencia Puede configurar puertos de transferencia para cualquier transformación del Procesador de datos. Los puertos de transferencia son puertos de entrada y salida que reciben datos de entrada y devuelven los mismos datos a una asignación sin modificarlos. Puede configurar puertos de transferencia en una instancia de transformación del Procesador de datos que esté en una asignación. Para añadir un puerto de transferencia, arrastre un puerto desde otra transformación en la asignación. También puede añadir puertos en la ficha Puertos de la vista Propiedades. Haga clic en Nuevo para añadir un puerto de transferencia. Nota: Cuando añada puertos de transferencia a una transformación del Procesador de datos con entrada relacional y salida jerárquica, añada los puertos al grupo raíz de la estructura relacional. Las transformaciones del Procesador de datos pueden incluir puertos de transferencia con tipos de datos personalizados.
Componente de inicio Un componente de inicio define el componente que inicia el proceso en la transformación del Procesador de datos. Configure el componente de inicio en la vista Resumen. Una transformación del Procesador de datos puede contener varios componentes para procesar los datos. Cada componente puede contener otros componentes. Se debe identificar qué componente es el punto de entrada para la transformación.
Componente de inicio
29
Cuando configure el componente de inicio en una transformación del Procesador de datos, puede elegir un componente XMap, de biblioteca o de script como el componente de inicio. En términos de scripts, puede seleccionar uno de los siguientes tipos de componentes: •
Analizador. Convierte documentos de origen a XML. La entrada puede tener cualquier formato, como texto, HTML, Word, PDF o HL7.
•
Asignador. Convierte un documento de origen XML en otra estructura o esquema XML.
•
Serializador. Convierte un archivo XML en un documento de salida de cualquier formato.
•
Transmisión por secuencias. Divide documentos de entrada de gran tamaño, como secuencias de datos de varios gigabytes, en segmentos.
•
Transformador. Modifica los datos a cualquier formato. Añade, quita, convierte o modifica texto. Utilice Transformadores con un analizador, un Asignador o un Serializador. También puede ejecutar un transformador como componente autónomo.
Nota: Si el componente de inicio no es un XMap o una biblioteca, también puede configurar el componente de inicio en un script en lugar de en la vista Resumen.
Referencias Puede definir las referencias de la transformación, como las referencias a esquemas o mapplets, seleccionando un esquema o un mapplet para que funcionen como referencia. Algunas transformaciones del Procesador de datos requieren un esquema jerárquico para definir la jerarquía de las entradas o salidas de los componentes relevantes en la transformación. Para utilizar el esquema en la transformación, debe definir una referencia al esquema para la transformación. También puede utilizar una acción especializada llamada RunMapplet para invocar un mapplet desde una transformación del Procesador de datos. Para llamar a un mapplet, primero debe definir una referencia al mapplet para la transformación. Puede definir las referencias de la transformación, como las referencias a esquemas o mapplets, en la vista Referencias de la transformación.
Referencias a esquemas La transformación del Procesador de datos hace referencia a objetos de esquema en el repositorio de modelos. Los objetos de esquema pueden existir en el repositorio antes de crear la transformación. También puede importar esquemas desde la vista Referencias de la transformación. La codificación de esquemas debe coincidir con la codificación de entradas para los objetos Serializador o Asignador. La codificación de esquemas debe coincidir con la codificación de salidas para los objetos Analizador o Asignador. Configure la codificación de trabajo en la vista de transformación Configuración. Un esquema puede hacer referencia a esquemas adicionales. La Herramienta del desarrollador muestra el espacio de nombres y el prefijo para cada esquema al que hace referencia la transformación del Procesador de datos. Cuando se hace referencia a varios esquemas con espacios de nombres vacíos, la transformación no es válida.
Referencias a mapplets Puede llamar a un mapplet desde una transformación del Procesador de datos con la acción RunMapplet. Antes de añadir la acción RunMapplet a un componente de transformación del Procesador de datos, primero debe definir una referencia al mapplet que desee llamar.
30
Capítulo 2: Transformación del Procesador de datos
Configuración de la transformación del Procesador de datos Configure las páginas de códigos, las opciones de procesamiento de XML y la configuración de registro en la vista Configuración de la transformación del procesador de datos.
Codificación de caracteres Una codificación de caracteres es una asignación de los caracteres de un idioma o grupo de idiomas con el código hexadecimal. Cuando se diseña un script, debe definir la codificación de documentos de entrada y la codificación de documentos de salida. Defina la codificación de trabajo para definir cómo el editor de IntelliScript muestra caracteres y cómo la transformación del Procesador de datos procesa los caracteres.
Codificación de trabajo La codificación de trabajo es la página de códigos para los datos en la memoria y la página de códigos para los datos que aparecen en la interfaz de usuario y los archivos de trabajo. Debe seleccionar una codificación de trabajo que sea compatible con la codificación de los esquemas a los que se hace referencia en la transformación del Procesador de datos. La siguiente tabla muestra la configuración de codificación del trabajo: Valor
Descripción
Utilizar la página de códigos predeterminada del Procesador de datos
Utiliza la codificación predeterminada de la transformación del Procesador de datos.
Otras
Seleccione la codificación de la lista.
Codificación de caracteres especiales XML
Determina la representación de caracteres especiales XML. Puede seleccionar Ninguno o XML. - Ninguno. Dejar como & < > " ' Las referencias de entidad para caracteres especiales XML se interpretan como texto. Por ejemplo, el carácter > aparece como
> El valor predeterminado es Ninguno. - XML. Convertir a & < > " ' Las referencias de entidad para caracteres especiales XML se interpretan como caracteres normales. Por ejemplo, > aparece como el siguiente carácter:
>
Codificación de entrada La codificación de entrada determina cómo los datos de caracteres se codifican en documentos de entrada. Puede configurar la codificación para puertos de entrada adicionales en un script.
Configuración de la transformación del Procesador de datos
31
La siguiente tabla describe la configuración de codificación en el área Entrada: Valor
Descripción
Utilizar la codificación especificada en documento de entrada
Utilice la página de códigos que el documento de origen define, tal como el atributo de codificación de un documento XML.
Utilizar codificación de trabajo
Utilice la misma codificación que la codificación de trabajo.
Otras
Seleccione la codificación de entrada de una lista desplegable.
Codificación de caracteres especiales XML
Determina la representación de caracteres especiales XML. Puede seleccionar Ninguno o XML.
Si el documento de origen no tiene una especificación de codificación, la transformación del Procesador de datos utiliza la configuración de la codificación de la vista Configuración.
- Ninguno. Dejar como & < > " ' Las referencias de entidad para los caracteres especiales XML se interpretan como texto, por ejemplo, el carácter > aparece como
> El valor predeterminado es Ninguno. - XML. Convertir a & < > " ' Las referencias de entidad para caracteres especiales XML se interpretan como caracteres normales. Por ejemplo, > aparece como el siguiente carácter:
> Orden de bytes
Describe cómo aparecen los caracteres multibyte en el documento de entrada. Puede seleccionar las opciones siguientes: - Little-endian. El byte menos significativo aparece primero. Predeterminado. - Big-endian. El byte más significativo aparece primero. - No hay conversión binaria.
Codificación de salida La codificación de salida determina cómo los datos de caracteres se codifican en el documento de salida principal.. La siguiente tabla describe la configuración de codificación en el área Salida:
32
Valor
Descripción
Utilizar codificación de trabajo
La codificación de salida es la misma que la codificación de trabajo.
Otras
El usuario selecciona la codificación de salida de la lista.
Capítulo 2: Transformación del Procesador de datos
Valor
Descripción
Codificación de caracteres especiales XML
Determina la representación de caracteres especiales XML. Puede seleccionar Ninguno o XML. - Ninguno. Dejar como & < > " ' Las referencias de entidad para los caracteres especiales XML se interpretan como texto, por ejemplo, el carácter > aparece como
> Predeterminado. - XML. Convertir a & < > " ' Las referencias de entidad para caracteres especiales XML se interpretan como caracteres normales. Por ejemplo, > aparece como el siguiente carácter:
> Igual que la codificación de entrada
La codificación de salida es la misma que la codificación de entrada.
Orden de bytes
Describe cómo aparecen los caracteres multibyte en el documento de entrada. Puede seleccionar las opciones siguientes: - Little-endian. El byte menos significativo aparece primero. Predeterminado. - Big-endian. El byte más significativo aparece primero. - No hay conversión binaria.
Reglas y directrices de codificación de caracteres Utilice las siguientes reglas y directrices cuando configure codificaciones: •
Para aumentar el rendimiento, establezca la misma codificación que utilice el documento de salida.
•
Establezca la codificación de entrada que utilice el documento de entrada.
•
Establezca la codificación de salida que utilice el documento de salida.
•
Para los idiomas que utilicen caracteres de varios bytes, establezca la codificación en UTF-8. Para la codificación de entrada y salida, puede utilizar una codificación Unicode como UTF-8 o una página de codificación de bytes dobles, como Big5 o Shift_JIS.
Configuración de salida Configurar la configuración de control de salida para controlar si la transformación del Procesador de datos crea registros de eventos y guarda documentos de salida. Puede controlar los tipos de mensajes que la transformación Procesador de datos escribe en el registro de eventos de tiempo de diseño. Si desea guardar los documentos de entrada analizados con los registros de eventos, puede ver el contexto donde se produjo el error en la vista Event.
Configuración de la transformación del Procesador de datos
33
La siguiente tabla describe la configuración en el área Eventos de tiempo de diseño: Valor
Descripción
Registrar eventos en tiempo de diseño
Determina si desea crear un registro de eventos de tiempo de diseño. De forma predeterminada, la transformación del Procesador de datos registra notificaciones, advertencias y fallos en el registro de eventos de tiempo de diseño. Se pueden excluir los siguientes tipos de eventos: - Notificaciones - Avisos - Fallos
Guardar documentos analizados
Determina si la transformación del Procesador de datos guarda un documento de entrada analizado. Puede seleccionar las opciones siguientes: - always. - Nunca - En fallo
El valor predeterminado es always. La siguiente tabla describe la configuración en el área Eventos de tiempo de ejecución: Valor
Descripción
Eventos de registro en tiempo de ejecución
Determina si se ha creado un evento de registro cuando se ejecuta la transformación de una asignación. - Never. - En fallo
El valor predeterminado es Never. La siguiente tabla describe los ajustes del área Salida:
34
Valor
Descripción
Deshabilitar salida automática
Determina si la transformación Procesador de datos escribe la salida en el archivo de salida estándar. Deshabilite la salida estándar en las siguientes situaciones:
Deshabilitar compresión de valor
Determina si la transformación Procesador de datos utiliza la compresión del valor para optimizar el uso de memoria.
- Si pasa la salida de un analizador a la entrada de otro componente antes de que la transformación cree un archivo de salida. - Si utiliza una acción WriteValue para escribir los datos directamente en la salida desde un script en lugar de pasarlos a través de los puertos de salida.
Importante: no deshabilite la compresión del valor excepto si Atención al cliente de Informatica Global le indica que puede deshabilitarlo.
Capítulo 2: Transformación del Procesador de datos
Configuración de procesamiento La configuración de procesamiento define cómo procesa la transformación Procesador de datos un elemento sin un tipo de datos definido. La configuración afecta a los scripts. La configuración no afecta a los elementos que procesa un XMap. La siguiente tabla describe la configuración de procesamiento que afecta al procesamiento XML en los scripts: Valor
Descripción
Tratar como xs:string
La transformación del Procesador de datos trata un elemento sin tipo como una cadena. En el cuadro de diálogo Elegir XPath, el elemento o atributo aparece como un único nodo.
Tratar como xs:anyType
La transformación Procesador de datos trata un elemento sin tipo como anyType. En el cuadro de diálogo Elegir XPath, el elemento o atributo aparece como un árbol de nodos. Un nodo es de tipo xs:string y todos los tipos de datos complejos con nombre aparecen como nodos de árbol.
La siguiente tabla describe una configuración de procesamiento que influye en el procesamiento de transmisión por secuencias: Valor
Descripción
Tamaño de fragmento
Esta configuración define la cantidad de datos que la transmisión por secuencias lee cada vez desde una secuencia de archivos de entrada. La transformación del Procesador de datos aplica esta configuración a una transmisión por secuencias con un archivo de entrada.
La siguiente tabla describe una configuración de procesamiento que afecta al procesamiento de transformación de jerárquico a relacional: Valor
Descripción
Normalizar entrada de XML
Esta configuración determina si la transformación del Procesador de datos normaliza la entrada XML. De forma predeterminada, la transformación lleva a cabo la normalización para la entrada XML. En algunos casos, puede optar por omitir la normalización automática para aumentar el rendimiento.
Configuración de XMap La configuración de XMap define cómo procesa la transformación del Procesador de datos los elementos de entrada de XMap que no se transforman en elementos de salida. Los elementos no leídos se transfieren a un puerto dedicado llamado XMap_Unread_Input_Values. La configuración se aplica solo cuando se selecciona el XMap como componente de inicio. La configuración no afecta a los elementos que el XMap procesa. Para transferir elementos de XMap no leídos a un puerto dedicado, habilite el ajuste Escriba los elementos no leídos en un puerto de salida adicional.
Configuración de la transformación del Procesador de datos
35
Configuración de salida XML La configuración de generación XML define las características de los documentos XML de salida. La siguiente tabla describe la configuración de generación XML en el área de Título de esquema: Valor
Descripción
Ubicación del esquema
Define el schemaLocation para el elemento raíz del documento de salida principal.
No hay ubicación de esquema de espacio de nombres
Define el atributo xsi:noNamespaceSchemaLocation del elemento raíz del documento de salida principal.
Configure los ajustes del modo de salida XML para determinar cómo la transformación del Procesador de datos maneja los elementos o los atributos que faltan en el documento XML de entrada. La siguiente tabla describe la configuración de generación XML en el área de Modo de salida XML: Valor
Descripción
Tal cual
No se añaden ni se quitan elementos vacíos. Esta propiedad está habilitada de manera predeterminada.
Completo
Todos los elementos necesarios y opcionales definidos en el esquema de salida se escriben en la salida. Los elementos sin contenido se escriben como elementos vacíos.
Compacto
Quita elementos vacíos de la salida. Si Añadir para elementos está habilitado, la transformación del Procesador de datos quita solamente los elementos opcionales. Si Añadir para elementos está deshabilitado, la transformación del Procesador de datos quita todos los elementos vacíos. Puede que la salida XML no sea válida.
La siguiente tabla describe la configuración de generación XML en el área de Valores predeterminados para nodos requeridos: Valor
Descripción
Añadir para elementos
Cuando el esquema de salida define un valor predeterminado para un elemento necesario, la salida incluye el elemento con un valor predeterminado. Esta propiedad está habilitada de manera predeterminada.
Añadir para atributos
Cuando el esquema de salida define un valor predeterminado para un atributo necesario, la salida incluye el atributo con su valor predeterminado. Esta propiedad está habilitada de manera predeterminada.
Validar valores agregados
Determina si la transformación del Procesador de datos valida los elementos vacíos que se han añadido por la salida del modo Completo. El valor predeterminado es deshabilitada. Si Validar valores agregados está habilitado y el esquema no admite elementos vacíos, la salida XML podría no ser válida.
36
Capítulo 2: Transformación del Procesador de datos
La siguiente tabla describe la configuración de generación XML en el área de Instrucciones de proceso: Valor
Descripción
Añadir instrucciones de procesamiento XML
Define la codificación de caracteres y la versión XML del documento de salida. El valor predeterminado es seleccionado.
Versión XML
Define la versión XML. La configuración de la versión XML tiene las siguientes opciones: - 1.0 - 1.1
El valor predeterminado es 1.0. Codificación
Define la codificación de caracteres que se ha especificado en la instrucción de proceso. La configuración de Codificación tiene las siguientes opciones: - Igual que la codificación de salida. La codificación de salida de las instrucciones de proceso es la misma que para la codificación de salida definida en la configuración de la transformación del Procesador de datos. - Personalizada. Define la codificación de salida en la instrucción de proceso. El usuario escribe el valor en el campo.
Añadir instrucciones de procesamiento personalizadas
Añade otras instrucciones de proceso para el documento de salida. Introduzca la instrucción de proceso tal como aparece en el documento de salida. El valor predeterminado es Deshabilitado.
La siguiente tabla describe la configuración de generación XML en el área de Raíz XML: Valor
Descripción
Añadir elemento raíz XML
Añade un elemento raíz para el documento de salida. Utilice esta opción cuando el documento de salida contenga más de una ocurrencia del elemento raíz definida en el esquema de salida. El valor predeterminado es Deshabilitado.
Nombre de elemento raíz
Define un nombre del elemento raíz para añadirlo al documento de salida.
Eventos Un evento es un registro de un paso de procesamiento de un componente en la transformación del Procesador de datos. En un script o biblioteca, cada anclaje, acción o transformador genera un evento. En un XMap, cada instrucción de asignación genera un evento. Puede ver los eventos en la vista Eventos del procesador de datos.
Tipos de evento La transformación del Procesador de datos escribe eventos en los archivos de registro. Cada evento tiene un tipo de evento que indica si el evento se ha realizado correctamente, el evento ha generado un error o si el evento se ha ejecutado con errores. Un componente puede generar uno o más eventos. El componente puede pasar o generar un error según si los eventos tienen éxito o generan un error. Si un evento falla, un componente genera un error.
Eventos
37
La siguiente tabla describe los tipos de eventos que la transformación del Procesador de datos genera: Tipo de evento
Descripción
Notificación
Operación normal.
Advertencia
La transformación del Procesador de datos se ha ejecutado, pero se ha producido una condición inesperada. Por ejemplo, la transformación del Procesador de datos ha escrito datos para el mismo elemento varias veces. Cada vez que el elemento se sobrescribe, la transformación del Procesador de datos genera una advertencia.
Anomalía
La transformación del Procesador de datos se ha ejecutado, pero un componente ha generado un error. Por ejemplo, un elemento de entrada necesario estaba vacío.
Error opcional
La transformación del Procesador de datos se ha ejecutado, pero un componente opcional ha generado un error. Por ejemplo, un anclaje opcional faltaba en el documento de origen.
Error fatal
La transformación del Procesador de datos ha generado un error debido a un problema grave. Por ejemplo, el documento de entrada no existe.
Vista Eventos del procesador de datos La vista Eventos del procesador de datos muestra eventos cuando se ejecuta una transformación del Procesador de datos desde la Herramienta del desarrollador. La vista Eventos del procesador de datos tiene un panel Navegación y un panel Detalles. El panel de navegación contiene un árbol de navegación. El árbol de navegación enumera los componentes que la transformación ha ejecutado en orden cronológico. Cada nodo tiene un icono que representa el evento más importante debajo de él en el árbol. Cuando seleccione un nodo en el panel Navegación, aparecen eventos en el panel Detalles. El árbol de navegación contiene los siguientes nodos de nivel superior: •
Inicialización del servicio. Describe los archivos y las variables que la transformación del Procesador de datos inicializa.
•
Ejecución. Enumera los componentes que ha ejecutado el script, la biblioteca o XMap.
•
Resumen. Muestra las estadísticas sobre el procesamiento.
Cuando se ejecuta un XMap, cada nombre de nodo del panel de navegación tiene un número entre corchetes, tal como [5]. Para identificar la instrucción que ha generado los eventos para el nodo, haga clic con el botón derecho en la malla de instrucciones y seleccione Ir al número de fila. Introduzca el número de nodo. Cuando ejecute un script y haga doble clic en un evento en el panel Navegación o en el panel Detalles, el editor de scripts resaltará el componente de script que ha generado el evento. El panel Entrada de la vista Visor de datos resalta la parte del documento de origen de ejemplo que ha generado el evento.
Registros Un registro contiene un registro de la transformación del Procesador de datos. La transformación del Procesador de datos escribe eventos en los registros. La transformación del Procesador de datos crea los siguientes tipos de registros:
38
Capítulo 2: Transformación del Procesador de datos
Registro de eventos en tiempo de diseño El registro de eventos de tiempo de diseño contiene los eventos que ocurren cuando se ejecuta la transformación del Procesador de datos en la vista Visor de datos . Ver el registro en tiempo de diseño en la vista Eventos. Registro de eventos de tiempo de ejecución El registro de eventos de tiempo de ejecución contiene los eventos que ocurren cuando se ejecuta la transformación del Procesador de datos en una asignación. Puede ver el registro de eventos de tiempo de ejecución en un editor de texto o puede arrastrar un evento de tiempo de ejecución en la vista Eventos de la transformación del Procesador de datos. Registro de usuario El registro de usuario contiene eventos que se configuran para los componentes en un script. La transformación del Procesador de datos escribe en el registro de usuarios cuando se ejecuta desde la vista Visor de datos y cuando se ejecuta en una asignación. Puede ver el registro de usuario en un editor de texto.
Registro de eventos en tiempo de diseño El registro de eventos de tiempo de diseño contiene los eventos generados cuando se ejecuta la transformación del Procesador de datos desde el Visor de datos en la Herramienta del desarrollador. Cuando se ejecuta una transformación del Procesador de datos desde la vista Visor de datos, el registro de eventos de tiempo de diseño aparece en la vista Eventos del procesador de datos. De forma predeterminada, el registro de eventos de tiempo de diseño contiene notificaciones, advertencias y errores. En la configuración de transformación, puede configurar la transformación del Procesador de datos para excluir uno o más tipos de eventos del registro. Cuando se guardan los documentos de entrada con el registro, puede hacer clic en un evento en la vista Eventos del procesador de datos para encontrar la ubicación en el documento de entrada que ha generado el evento. Cuando configure la configuración de la transformación del Procesador de datos, puede elegir guardar los archivos de entrada para cada ejecución o solo en caso de error. El registro de eventos de tiempo de diseño se llama events.cme. Puede encontrar el registro de eventos de tiempo de diseño de la última ejecución de la transformación del Procesador de datos en el directorio siguiente: C:\\clients\DT\CMReports\Init\events.cme La transformación del Procesador de datos sobrescribe el registro de eventos de tiempo de diseño cada vez que se ejecuta la transformación en el Visor de datos. Cambie el nombre del registro de eventos de tiempo de diseño si desea verlo después de una posterior ejecución de la transformación, o si desea comparar los registros de distintas ejecuciones. Cuando se cierra la Herramienta del desarrollador, el desarrollador no guarda ningún archivo en el
Registro de eventos de tiempo de ejecución El registro de eventos en tiempo de ejecución registra los eventos que ocurren cuando se ejecuta la transformación del Procesador de datos en una asignación. Si la transformación del Procesador de datos finaliza la ejecución sin fallos, no escribe un registro de eventos. Si hay errores en la ejecución, la transformación del Procesador de datos se ejecuta por segunda vez y escribe un registro de eventos durante la segunda ejecución. El registro de eventos en tiempo de ejecución se llama events.cme.
Registros
39
En un equipo Windows, el registro de eventos en tiempo de ejecución se encuentra en el directorio siguiente: C:\clients\DT\CMReports\Tmp\ En un equipo UNIX o Linux, el registro de eventos en tiempo de ejecución se encuentra en el directorio siguiente: /root//clients/DT/CMReports/Tmp En un equipo UNIX o Linux, puede encontrar el registro de eventos en tiempo de ejecución para un usuario que no sea raíz en el directorio siguiente: /home/[UserName]//DT/CMReports/Tmp Utilice el editor de configuración para cambiar la ubicación del registro de eventos en tiempo de ejecución.
Visualizar un registro de eventos en la vista Eventos del Procesador de datos Utilice la vista Eventos del procesador de datos para ver un registro de eventos de tiempo de diseño o un registro de eventos de tiempo de ejecución. Abra el explorador de Windows y, a continuación, busque el archivo de registro de eventos que desee visualizar. Arrastre el registro desde el explorador de Windows a la vista Eventos del procesador de datos. Haga clic con el botón derecho en la vista Eventos del procesador de datos y, a continuación, seleccione Buscar para buscar el registro. Nota: Para volver a cargar el último registro de eventos de tiempo de diseño, haga clic con el botón derecho en la vista Eventos del procesador de datos y, a continuación, seleccione Volver a cargar los eventos del proyecto.
Registro de usuario El registro de usuario contiene mensajes personalizados que se configuran con fallos de componentes de un script. La transformación del Procesador de datos escribe mensajes en el registro de usuario cuando se ejecuta un script desde la vista del Visor de datos y cuando se ejecuta en una asignación. Cuando un componente del script tiene la propiedad on_fail, puede configurarlo para que escriba un mensaje en el registro de usuario si genera un error. En el script, configure la propiedad on_fail con uno de los siguientes valores: •
LogInfo
•
LogWarning
•
LogError
Cada ejecución del script genera un nuevo registro de usuario. El nombre del archivo de registro de usuario contiene el nombre de la transformación con un GUID único: _.log Por ejemplo, CalculateValue_Aa93a9d14-a01f-442a-b9cb-c9ba5541b538.log En un equipo Windows, puede encontrar el registro de usuario en el directorio siguiente: c:\Users\[UserName]\AppData\Roaming\Informatica\DataTransformation\UserLogs En un equipo Linux o UNIX, puede encontrar el registro de usuario para el usuario raíz en el directorio siguiente: //DataTransformation/UserLogs
40
Capítulo 2: Transformación del Procesador de datos
En un equipo Linux o UNIX, puede encontrar el registro de usuario para un usuario que no sea raíz en el directorio siguiente: home//DataTransformation/UserLogs
Desarrollo de la transformación del Procesador de datos Utilice el asistente para nueva transformación para generar automáticamente una transformación del Procesador de datos o para crear una transformación del Procesador de datos en blanco y configurarla más adelante. Si crea una transformación del Procesador de datos en blanco, debe seleccionar un objeto Script, XMap, Biblioteca o Reglas de validación para crearlo en la transformación. Un script puede analizar documentos de origen a formato jerárquico, convertir el formato jerárquico en otros formatos de archivo o asignar un documento jerárquico a otro formato jerárquico. Un XMap convierte un archivo jerárquico de entrada en un archivo jerárquico de salida de otra estructura. Una biblioteca convierte un tipo de mensajería de industria en un documento XML con una estructura de jerarquías, o un formato XML en un formato estándar de la industria. Seleccione los esquemas que definan las jerarquías de entrada o salida. 1.
Cree la transformación en Developer tool.
2.
Para una transformación del Procesador de datos en blanco, lleve a cabo los siguientes pasos adicionales: a.
Añada referencias de esquema que definan las jerarquías XML de entrada o salida.
b.
Cree un objeto Script, XMap, Biblioteca o Reglas de validación.
3.
Configure los puertos de entrada y salida.
4.
Pruebe la transformación.
Crear la transformación del Procesador de datos Cree una transformación del Procesador de datos en Developer tool. Si crea una transformación del Procesador de datos en blanco, debe crear a continuación un objeto Script, XMap, Biblioteca o Reglas de validación para crearlo en la transformación. También puede utilizar el asistente para nueva transformación para generar automáticamente una transformación del Procesador de datos. 1.
En Developer tool, haga clic en Archivo > Nuevo > Transformación.
2.
Seleccione la transformación del Procesador de datos y haga clic en Siguiente.
3.
Introduzca un nombre para la transformación y busque la ubicación en el repositorio de modelos donde colocar la transformación.
4.
Seleccione si desea crear la transformación del Procesador de datos mediante un asistente o crear una transformación del Procesador de datos en blanco.
5.
Si ha seleccionado crear una transformación del Procesador de datos en blanco, haga clic en Finalizar. Developer tool crea la transformación vacía en el repositorio. La vista Resumen aparece en Developer tool.
6.
Si ha seleccionado crear una transformación del Procesador de datos con un asistente, realice los pasos siguientes: a.
Haga clic en Siguiente.
Desarrollo de la transformación del Procesador de datos
41
b.
Seleccione un formato de entrada.
c.
Seleccione un esquema, un cuaderno, un archivo de ejemplo o un archivo de especificación si es necesario para determinados formatos de entrada, como COBOL, JSON o ASN.1.
d.
Seleccione un formato de salida.
e.
Seleccione un esquema, un cuaderno, un archivo de ejemplo o un archivo de especificación si es necesario para el formato de salida.
f.
Haga clic en Finalizar. El asistente crea la transformación en el repositorio.
La transformación puede contener un analizador, un serializador, un asignador o un objeto con componentes comunes. Si ha seleccionado un esquema, un cuaderno, un archivo de ejemplo o un archivo de especificación, el asistente también crea un esquema en el repositorio que es equivalente a la jerarquía del archivo.
Seleccionar los objetos de esquema Seleccione los objetos de esquema que definen las jerarquías de entrada o de salida para cada componente de XMap o de script que vaya a crear. Puede añadir referencias de esquema en la vista Referencias o puede añadir las referencias de esquema al crear objetos de Script o XMap. El objeto de esquema debe estar en el repositorio de modelos antes de que pueda hacer referencia a él en un Script o XMap. 1.
En la vista Referencias de la transformación del Procesador de datos, haga clic en Añadir.
2.
Si el objeto de esquema existe en el repositorio de modelos, busque y seleccione el esquema.
3.
Si el esquema no existe en el repositorio de modelos, haga clic en Crear un nuevo objeto de esquema e importe un objeto de esquema desde un archivo .xsd.
4.
Haga clic en Finalizar para añadir la referencia de esquema a la transformación del Procesador de datos.
Crear objetos en una transformación del Procesador de datos en blanco Cree un objeto Script, Biblioteca, XMap o Reglas de validación en la vista Objetos de la transformación del Procesador de datos. Después de crear el objeto, puede abrirlo desde la vista Objetos para configurarlo.
Crear un script Cree un objeto de script y defina el tipo de componente de script que va a crear. Opcionalmente, puede definir una referencia de esquema y un archivo de origen de ejemplo.
42
1.
En la vista Objetos de la transformación del Procesador de datos, haga clic en Nuevo.
2.
Especifique un nombre para el script y haga clic en Siguiente.
3.
Elija crear un Analizador o un Serializador. Seleccione Otro para crear un componente de asignador, de transformador o de transmisión por secuencias.
4.
Especifique un nombre para el componente.
5.
Si el componente es el primer componente para procesar datos en la transformación, habilite Establecer como componente de inicio.
6.
Haga clic en Siguiente si desea especificar una referencia de esquema para este script. Haga clic en Finalizar si no desea especificar la referencia de esquema.
Capítulo 2: Transformación del Procesador de datos
7.
Si elige crear una referencia de esquema, seleccione Agregar referencia al objeto de esquema y busque el objeto de esquema en el repositorio de modelos. Haga clic en Crear un nuevo objeto de esquema para crear el objeto de esquema en el repositorio de modelos.
8.
Haga clic en Siguiente para especificar una referencia de origen de ejemplo o para especificar un texto de ejemplo. Haga clic en Finalizar si no desea definir un origen de ejemplo. Utilice un origen de ejemplo para definir datos de ejemplo y para probar el script.
9.
Si elige seleccionar un origen de ejemplo, seleccione Archivo y busque el archivo de ejemplo. También puede introducir texto de ejemplo en el área Texto. Developer tool utiliza el texto para probar un script.
10.
Haga clic en Finalizar. La vista Script aparece en el editor de Developer tool.
Crear un XMap Cree un XMap en la vista Objetos de Data Transformation. Cuando se crea un XMap, debe tener un esquema que describa la entrada y la salida de documentos jerárquicos. Seleccione el elemento del esquema que sea el elemento raíz para la jerarquía de entrada. 1.
En la vista Objetos de la transformación del Procesador de datos, haga clic en Nuevo.
2.
Seleccione XMap y haga clic en Siguiente.
3.
Especifique un nombre para el XMap.
4.
Si el componente XMap es el primer componente para procesar datos en la transformación, habilite Establecer como componente de inicio. Haga clic en Siguiente.
5.
Si elige crear una referencia de esquema, seleccione Agregar referencia al objeto de esquema y busque el objeto de esquema en el repositorio de modelos. Para importar un nuevo objeto de esquema, haga clic en Crear un nuevo objeto de esquema.
6.
Si tiene un archivo jerárquico de ejemplo que puede usar para probarlo con XMap, busque y seleccione el archivo en el sistema de archivos. Puede cambiar el archivo jerárquico de ejemplo.
7.
Elija la raíz de la jerarquía de entrada. En el cuadro de diálogo Selección del elemento raíz, seleccione el elemento en el esquema que sea el elemento raíz del archivo jerárquico de entrada. Puede buscar un elemento en el esquema. Puede utilizar búsqueda de patrones. Introduzca * para que coincida con cualquier número de caracteres en la cadena. Intro ?para que coincide con un solo carácter.
8.
Haga clic en Finalizar. La Herramienta del desarrollador crea una vista para cada XMap que cree. Haga clic en la vista para configurar la asignación.
Desarrollo de la transformación del Procesador de datos
43
Crear una biblioteca Cree un objeto de biblioteca en la vista Objetos de Data Transformation. Seleccione el tipo de mensaje, el componente y el nombre. También puede definir un archivo de origen de tipo de mensaje de muestra que puede utilizar para probar el objeto de la biblioteca. Antes de crear una biblioteca en la transformación del Procesador de datos, instale el paquete de software de la biblioteca en su equipo. 1.
En la vista Objetos de la transformación del Procesador de datos, haga clic en Nuevo.
2.
Seleccione la biblioteca y haga clic en Siguiente.
3.
Busque el tipo de mensaje para seleccionarlo.
4.
Elija crear un analizador o un serializador. Cree un analizador si la entrada del objeto de la biblioteca es un tipo de mensaje y la salida es XML. Cree un serializador si la entrada del objeto de la biblioteca es XML y la salida es un tipo de mensaje.
5.
Si la biblioteca es el primer componente para procesar datos en la transformación del Procesador de datos, habilite Establecer como componente de inicio. Haga clic en Siguiente.
6.
Si tiene un archivo de origen de tipo de mensaje de ejemplo que puede usar para probarlo con la biblioteca, busque y seleccione el archivo en el sistema de archivos. Puede cambiar el archivo de ejemplo.
7.
Haga clic en Finalizar. La herramienta del desarrollador crea una vista para cada tipo de mensaje que cree. Haga clic en la vista para acceder a la asignación.
Crear reglas de validación Cree un objeto Reglas de validación en la vista Objetos de la transformación del Procesador de datos. 1.
En la vista Objetos de la transformación del Procesador de datos, haga clic en Nuevo.
2.
Seleccione Reglas de validación y haga clic en Siguiente.
3.
Especifique un nombre para las Reglas de validación.
4.
Si tiene un archivo XML de ejemplo que puede usar para probarlo con las Reglas de validación, busque y seleccione el archivo en el sistema de archivos. Puede cambiar el archivo XML de ejemplo.
5.
Haga clic en Finalizar. La Herramienta del desarrollador crea un objeto Reglas de validación y lo abre en el editor de Reglas de validación.
Cómo añadir un origen de ejemplo Seleccione el origen de ejemplo para probar el script, XMap, la biblioteca o las reglas de validación que vaya a crear. Puede añadir un origen de ejemplo al crear un script, XMap, una biblioteca o reglas de validación. Una vez seleccionado, el origen de ejemplo se añade al repositorio de modelos. Debido a las limitaciones del repositorio de modelos, el tamaño del archivo de origen de ejemplo está limitado a 5 MB. Puede cambiar el origen de ejemplo.
44
Capítulo 2: Transformación del Procesador de datos
Crear los puertos Configure los puertos de entrada y salida en la vista Resumen. Cuando configure puertos de entrada o de salida adicionales en un script, Developer tool añade puertos de entrada y de salida adicionales a la transformación de manera predeterminada. No puede añadir puertos de entrada en la vista Resumen. 1.
Si desea que se devuelvan filas de datos de salida en lugar de XML, habilite Salida relacional. Al habilitar la salida relacional, Developer tool elimina el puerto de salida predeterminado.
2.
Seleccione el tipo de datos, el tipo de puerto, la precisión y la escala del puerto de entrada.
3.
Si no define los puertos de salida relacional, defina el tipo de datos, el tipo de puerto, la precisión y la escala del puerto de salida.
4.
Si un Script tiene puertos de entrada adicionales, puede definir la ubicación del archivo de entrada de ejemplo para los puertos. Haga clic en el botón Abrir del campo Ubicación de entrada para buscar el archivo.
5.
Si ha habilitado la salida relacional, haga clic en Salida de asignación para crear los puertos de salida.
6.
En la vista Puertos, asigne nodos desde la zona de Salida jerárquica a los campos de la zona Puertos relacionales.
Probar la transformación Pruebe la transformación del Procesador de datos en la vista Visor de datos. Antes de probar la transformación, compruebe que ha definido el componente de inicio. Puede definir el componente de inicio en un script o puede seleccionar el componente de inicio en la pestaña Resumen . También debe haber elegido un archivo de entrada de ejemplo con el que probarlo. 1.
Abra la vista Visor de datos.
2.
Haga clic en Ejecutar. La Herramienta del desarrollador valida la transformación. Si no hay errores, la Herramienta del desarrollador muestra el archivo de ejemplo en la zona de Entrada. Los resultados de salida aparecen en el panel de Salida.
3.
Haga clic en Mostrar eventos para mostrar la vista Eventos del procesador de datos.
4.
Haga doble clic en un evento de la vista Eventos del procesador de datos para depurar los eventos del editor del script.
5.
Haga clic en Sincronizar con el editor para cambiar el archivo de entrada cuando pruebe varios componentes, cada uno con un archivo de entrada de ejemplo diferente. Si modifica el contenido del archivo de ejemplo en el sistema de archivos, los cambios aparecen en la zona de Entrada.
Importación y exportación de la transformación del Procesador de datos Puede exportar una transformación del Procesador de datos como servicio y ejecutarla desde un repositorio de Data Transformation. También puede importar un servicio de Data Transformation a la Herramienta del
Importación y exportación de la transformación del Procesador de datos
45
desarrollador. Cuando se importa un servicio de Data Transformation, la Herramienta del desarrollador crea una transformación del Procesador de datos desde el servicio. Nota: Cuando se importa un servicio de Data Transformation al repositorio de modelos, la Developer Tool importa los esquemas asociados con el repositorio. Si modifica el esquema en el repositorio, a veces los cambios no aparecen en las referencias del esquema de transformación. Puede cerrar y abra la conexión del repositorio de modelos, o bien cerrar y abrir la Herramienta del desarrollador para que los cambios en el esquema aparezcan en la transformación.
Exportar la transformación del Procesador de datos como un servicio Puede exportar la transformación del Procesador de datos como un servicio de Data Transformation. Exporte el servicio al repositorio del sistema de archivos de la máquina donde quiera ejecutar el servicio. Puede ejecutar el servicio con PowerCenter, aplicaciones definidas por el usuario o el comando CM_console de Data Transformation. 1.
En la vista Explorador de objetos, haga clic con el botón derecho en la transformación del Procesador de datos que desea exportar y seleccione Exportar. A continuación, aparece el cuadro de diálogo Exportar.
2.
Seleccione Informatica > Exportar transformación del Procesador de datos y haga clic en Siguiente. Aparece la página Seleccionar.
3.
Haga clic en Siguiente. Aparece la página Seleccione el nombre de servicio y la carpeta de destino.
4.
5.
Elija una carpeta de destino: •
Para exportar el servicio en el equipo que aloja la Herramienta del desarrollador, haga clic en Carpeta de servicio.
•
Para implementar el servicio en otro equipo, haga clic en Carpeta. Busque en el directorio \ServiceDB del equipo donde desee implementar el servicio.
Haga clic en Finalizar.
Importar un servicio de Data Transformation Puede importar un servicio de Data Transformation desde el repositorio del sistema de archivos del equipo donde ha guardado el servicio. Importe un archivo .cmw del servicio de Data Transformation en el repositorio de modelos para crear una transformación del Procesador de datos. La Herramienta del desarrollador importa la transformación, los esquemas y los datos de ejemplo con el archivo .cmw. 1.
Haga clic en Archivo > Importar. Aparece el cuadro de diálogo Importar.
2.
Seleccione Informatica Importar servicio de Data Transformation y haga clic en Siguiente. Aparece la página Importar servicio de Data Transformation.
3.
Busque el archivo .cmw del servicio que desee importar. La Herramienta del desarrollador denomina la transformación según el nombre de archivo del servicio. Puede cambiar el nombre.
4.
46
Busque una ubicación en el repositorio donde desee guardar la transformación y, a continuación, haga clic en Finalizar.
Capítulo 2: Transformación del Procesador de datos
La Herramienta del desarrollador importa la transformación, los esquemas y los datos de ejemplo con el archivo .cmw. 5.
Si desea editar la transformación, haga doble clic en la transformación en la vista Explorador de objetos.
Exportación de una asignación con una transformación del Procesador de datos a PowerCenter Cuando exporta una asignación con una transformación del Procesador de datos a PowerCenter, podrá exportar los objetos a un archivo local y, a continuación, importar la asignación en PowerCenter. También es posible exportar la asignación directamente al repositorio de PowerCenter. 1.
En la vista Explorador de objetos, seleccione la asignación que desea exportar. Haga clic con el botón derecho y seleccione Exportar. A continuación, aparece el cuadro de diálogo Exportar.
2.
Seleccione Informatica > PowerCenter.
3.
Haga clic en Siguiente. A continuación, aparece el cuadro de diálogo Exportar a PowerCenter.
4.
Seleccione el proyecto.
5.
Seleccione la versión de PowerCenter.
6.
Elija la ubicación para la exportación, un archivo de importación XML a PowerCenter o un repositorio de PowerCenter.
7.
Especifique las opciones de exportación.
8.
Haga clic en Siguiente. La Herramienta del desarrollador le pide que seleccione los objetos para exportarlos.
9.
Seleccione los objetos para exportar y haga clic en Finalizar. La Herramienta del desarrollador exporta los objetos a la ubicación seleccionada. Si ha exportado la asignación a una ubicación, la Herramienta del desarrollador también exporta las transformaciones del Procesador de datos de la asignación, como servicios, a una carpeta en la ubicación que haya especificado.
10.
Si ha exportado la asignación a un repositorio de PowerCenter, los servicios se exportan a la siguiente ruta de acceso del directorio: %temp%\DTServiceExport2PC\ La función de exportación crea una carpeta independiente para cada servicio con el siguiente nombre: Si la transformación incluye la asignación relacional, se creará una carpeta para la asignación relacional a jerárquica y otra carpeta independiente para la asignación jerárquica a relacional.
11.
Copie la carpeta o carpetas con los servicios de transformación del Procesador de datos desde la ubicación local donde ha exportado hasta la carpeta ServiceDB de PowerCenter.
12.
Si ha exportado la asignación a un archivo XML de importación de PowerCenter, importe la asignación en PowerCenter. Para obtener más información sobre cómo importar un objeto en PowerCenter, consulte la Guía del repositorio de PowerCenter 9.6.0.
Importación y exportación de la transformación del Procesador de datos
47
CAPÍTULO 3
Formatos de entrada y de salida del asistente Este capítulo incluye los siguientes temas: •
Resumen de los formatos de entrada y salida del asistente, 48
•
Biblioteca ASN.1, 49
•
Avro, 58
•
Biblioteca de procesamiento de COBOL, 63
•
JSON, 65
•
Parquet, 68
•
XML, 69
Resumen de los formatos de entrada y salida del asistente Puede utilizar un asistente para crear una transformación del Procesador de datos generada automáticamente con formatos de entrada y salida tales como COBOL, XML, ASN.1, relacionales o JSON. También puede usar el asistente para transformar los formatos definidos por el usuario. Cree una transformación del Procesador de datos y seleccione los formatos de entrada y salida mediante el asistente de transformación del Procesador de datos. Selecciónelos a partir de formatos existentes o cree formatos definidos por el usuario. Para formatos determinados, como ASN.1, XML, JSON o COBOL, añada un esquema, archivo de especificación, un archivo de ejemplo o un cuaderno que defina la estructura esperada para la entrada o la salida. El asistente crea una transformación con los objetos relevantes de script, de XMap o de biblioteca que sirvan como plantillas para transformar el formato de entrada en el formato de salida. La transformación del Procesador de datos crea una solución de transformación según los formatos seleccionados y el archivo de especificaciones, el archivo de ejemplo o el cuaderno. Es posible que la transformación no sea completa, pero contiene componentes que puede conectar y personalizar para completar la definición de la transformación.
48
Biblioteca ASN.1 La biblioteca ASN.1 procesa los datos que cumplen con el estándar Abstract Syntax Notation One (ASN.1). Las organizaciones ISO e ITU-T mantienen el estándar ASN.1, un estándar que se usa en el sector de las telecomunicaciones. El estándar utiliza una sintaxis de especificación de protocolos que representa datos en las estructuras compactas, en formatos binarios o de texto. Utilice el asistente para crear una transformación del Procesador de datos que analice las especificaciones del protocolo ASN.1. La Herramienta del desarrollador crea los siguientes objetos: •
Un esquema XML utilizado para representar los datos ASN.1.
•
Un analizador, un serializador y un asignador que contienen un procesador de documentos AsnToXml. Los datos de entrada del procesador cumplen con la especificación del protocolo. La salida representa los mismos datos en XML.
La transformación contiene objetos que debe configurar para procesar datos de origen de ASN.1. La versión actual de la biblioteca ASN.1 procesa la entrada con codificación ASN.1 BER. La biblioteca incluye una copia de la utilidad OSS Nokalva ASN-1Step. Utilice la utilidad para editar archivos de ASN.1. Puede acceder a los servicios de la biblioteca ASN.1 mediante las API de C/C++ o de .NET. Nota: Las transformaciones de la biblioteca ASN.1 no validan su entrada. Si la entrada no es válida, las transformaciones podrían producir errores o generar una salida inesperada.
Especificación del protocolo ASN.1 Cuando cree una transformación del Procesador de datos para la biblioteca ASN.1, seleccione una especificación del protocolo ASN.1 para la transformación. La especificación define la estructura de entrada esperada. Una especificación del protocolo ASN.1 es un esquema para una estructura de datos ASN.1. La especificación es un archivo de texto con una extensión *.asn. La especificación del protocolo define la estructura esperada de los datos de entrada. Las siguientes líneas de una especificación de protocolo definen una estructura de datos anidada: MobileTerminatedCall ::= [APPLICATION 10] SEQUENCE { basicCallInformation MtBasicCallInformation locationInformation LocationInformation equipmentInformation EquipmentInformation basicServiceUsedList BasicServiceUsedList supplServiceUsedList SupplServiceUsedList camelServiceUsed CamelServiceUsed valueAddedServiceUsedList ValueAddedServiceUsedList dualServiceRequested DualServiceCode operatorSpecInformation OperatorSpecInfoList }
OPTIONAL, OPTIONAL, OPTIONAL, OPTIONAL, OPTIONAL, OPTIONAL, OPTIONAL, OPTIONAL, OPTIONAL
... ChargeableSubscriber ::= CHOICE { simChargeableSubscriber SimChargeableSubscriber, minChargeableSubscriber MinChargeableSubscriber } ... SimChargeableSubscriber ::= [APPLICATION 199] SEQUENCE { imsi Imsi OPTIONAL,
Biblioteca ASN.1
49
}
msisdn
Msisdn OPTIONAL
Toda la estructura es una unidad de datos del protocolo (PDU). Una sola especificación del protocolo puede definir varios PDU. Una especificación del protocolo define varios tipos de estructuras de datos con varios elementos de nivel superior.
Estructura del mensaje de entrada de ASN.1 La entrada de ASN.1 tiene formato binario. El asistente crea una transformación para ASN.1 que incluye el procesador de documentos AsnToXml . El procesador de documentos muestra la entrada en una representación XML. Un origen de ASN.1 suele contener varios mensajes. Cada mensaje es una estructura de datos que cumple con la especificación del protocolo. El origen puede contener cadenas de separador entre los mensajes y no puede haber una cadena de encabezado antes del primer mensaje. Los datos tienen formato binario. El siguiente ejemplo contiene datos con codificación BER:
El procesador de documentos AsnToXml convierte los datos en codificación ASN.1 XER, que es una representación XML. Cuando el asistente de Transformación del Procesador de datos crea una transformación para ASN.1, incluye el procesador de documentos AsnToXml en la transformación. El siguiente ejemplo contiene el XML generado por el procesador de documentos AsnToXml: 45404200 85290469 La jerarquía XML se corresponde con estructura del mensaje de entrada.
Instalación de la biblioteca ASN.1 Para crear las transformaciones que procesen datos ASN.1, instale la biblioteca en el entorno de desarrollo. Para ejecutar las transformaciones como servicios, instale la biblioteca en el entorno de producción. 1.
Para cada entorno de desarrollo, realice las siguientes acciones: a.
50
Ejecute la utilidad hostinf.
Capítulo 3: Formatos de entrada y de salida del asistente
Aparece el siguiente mensaje: HOST = "/" b. 2.
Copie la línea que contiene el nombre de host y el código.
Envíe un correo electrónico al Servicio internacional de atención al cliente de Informatica. Incluya la siguiente información: •
El tipo de equipo para cada entorno de producción
•
El nombre de host y el código para cada entorno de desarrollo
El Servicio internacional de atención al cliente de Informatica le envía los archivos de licencia ossinfo. 3.
4.
El paso que debe tomar para instalar la biblioteca ASN.1 depende del entorno. La siguiente tabla describe las acciones que hay que realizar para cada entorno: Entorno
Acciones
Desarrollo
1. Cierre Developer tool. 2. Copie el archivo de instalación en el directorio de instalación de Data Transformation y después descomprímalo.
Producción
1. Copie el archivo de instalación en el directorio de instalación de Data Transformation. 2. En un equipo Windows, descomprima el archivo zip de instalación. En un equipo Linux o UNIX, descomprima el archivo tar de instalación.
Para cada equipo, guarde el archivo de licencia ossinfo asociado en el directorio de instalación de Data Transformation. Por ejemplo, si ha instalado Data Transformation en la ubicación predeterminada de una plataforma Windows, guarde el archivo ossinfo en el siguiente directorio: C:\Informatica\\DataTransformation
Desinstalación de la biblioteca ASN.1 En una plataforma Windows, desinstale la biblioteca ASN.1 antes de desinstalar Data Transformation. En una plataforma UNIX o Linux, el orden de la desinstalación no es importante. Si desinstala Data Transformation antes que la biblioteca ASN.1 en Windows, la desinstalación no quita completamente la biblioteca. Para eliminar completamente la biblioteca, siga estos pasos: 1.
Reinicie Windows.
2.
En el Explorador de Windows, elimine el directorio de instalación de Data Transformation.
3.
Elimine el siguiente directorio: C:\Program Files\Common Files\InstallShield\Universal\common\Gen1
Actualización de la biblioteca ASN.1 Antes de instalar una nueva versión de la biblioteca ASN.1, debe desinstalar la versión anterior.
Creación de una transformación de biblioteca ASN.1 Para crear una transformación del Procesador de datos para la entrada de ASN.1, utilice el asistente de transformación del Procesador de datos. El asistente crea la transformación en el repositorio de modelos con
Biblioteca ASN.1
51
un analizador, un serializador, un asignador y un objeto con componentes comunes. Utilice el editor de IntelliScript para editar estos componentes. 1.
Cree la transformación con el asistente de transformación del Procesador de datos. Añada una especificación ASN.1. que defina la estructura de entrada esperada.
2.
Utilice el editor de IntelliScript para editar y personalizar el analizador, el serializador y el asignador creados por el asistente.
Paso 1. Creación de una transformación de biblioteca ASN.1 con el asistente Cree una transformación del Procesador de datos con entrada de ASN.1. El asistente de transformación del Procesador de datos crea la transformación con los componentes que transforman la entrada de ASN.1 en XML. 1.
En la Herramienta del desarrollador, haga clic en Archivo > Nuevo > Transformación.
2.
Seleccione la transformación del Procesador de datos y haga clic en Siguiente.
3.
Introduzca un nombre para la transformación y busque la ubicación en el repositorio de modelos donde colocar la transformación.
4.
Seleccione Crear un procesador de datos mediante un asistente y haga clic en Siguiente.
5.
Seleccione ASN.1 como formato de entrada y haga clic en Siguiente.
6.
Seleccione un archivo de definición de ASN.1. Haga clic en Siguiente. Normalmente, los archivos tiene la extensión *.asn.
7.
Seleccione un formato de salida y haga clic en Siguiente.
8.
Haga clic en Finalizar. El asistente crea la transformación en el repositorio de modelos con un analizador, un serializador, un asignador y un objeto con componentes comunes. El analizador, el serializador y el asignador están configurados con un procesador de documentos AsnToXml que convierte la entrada en XML. El asistente también crea un esquema XML en el repositorio que es equivalente a la especificación del protocolo.
Paso 2. Editar la transformación de la biblioteca ASN.1 El asistente crea una transformación de la biblioteca ASN.1 en el repositorio de modelos con un analizador, un serializador y un asignador, y un objeto con los componentes de común. Debe editar los componentes de transformación para añadir un origen de ejemplo, anclajes y acciones. El analizador, el serializador y el asignador están configurados con un procesador de documentos AsnToXml que convierte la entrada en XML. El procesador de documentos AsnToXml convierte los datos de entrada en codificación ASN.1 XER, que es una representación XML. 1.
En la vista Objetos, haga doble clic en el analizador, el serializador o el asignador para abrirlo en el editor de IntelliScript. La transformación contiene solamente el procesador de documentos AsnToXml. No contiene un origen de ejemplo, anclajes ni acciones.
2.
Configure las propiedades del procesador AsnToXml según sea necesario. Las propiedades se describen en la siguiente sección.
3.
Añada un origen de ejemplo en el analizador, el serializador o el asignador. El origen de ejemplo debe contener uno o más mensajes que cumplan con la especificación del protocolo. En la versión actual, el ejemplo debe tener la codificación BER (un archivo *.ber ).
4.
52
Muestre el origen de ejemplo.
Capítulo 3: Formatos de entrada y de salida del asistente
Aparece como una representación XML de los datos de entrada. 5.
En la línea contains, añada componentes como anclajes y acciones que procesen el XML y generen la salida.
Instalación de la utilidad ASN-1Step Utilice el entorno de desarrollo de ASN-1Step para editar y validar archivos de ASN.1. Puede instalar ASN-1Step en un equipo Windows. Puede utilizar ASN-1Step para editar especificaciones del protocolo y datos de origen ASN.1. 1.
Ejecute el archivo de configuración de ASN.1Step. El archivo de configuración tiene un nombre como asnstep_winVVV.exe, donde VVV es un número de versión.
2.
En la línea de comandos, seleccione la opción para especificar la ubicación de ossinfo manualmente.
3.
Vaya al directorio de instalación de Data Transformation donde ha almacenado el archivo de licencia ossinfo.
4.
Siga las instrucciones en pantalla para completar la instalación. Para obtener más información sobre el uso de ASN-1Step, consulte la ayuda en línea incluida en la utilidad.
Transmisión por secuencias ASN.1 Un componente AsnStreamer convierte y divide un documento ASN.1 de múltiples mensajes y gran tamaño en mensajes ASN.1. AsnStreamer puede pasar cada mensaje a la transformación apropiada.
Propiedades de transmisión por secuencias ASN.1 El componente AsnStreamer divide y convierte un documento ASN.1 con múltiples mensajes y gran tamaño en mensajes ASN.1. Cada mensaje ASN.1 se convierte en XML. AsnStreamer debe estar definido en el nivel global del script y debe ser el componente de inicio de la transformación. La siguiente tabla describe las propiedades del componente AsnStreamer: Propiedad
Descripción
asn_file
Define un archivo de especificación ASN.1.
count
Define el número máximo de mensajes ASN.1 convertidos que pasan a la transformación.
encoding
Define la codificación ASN.1.
Biblioteca ASN.1
53
Propiedad
Descripción
header
Define un encabezado para excluir del archivo ASN.1. La propiedad header tiene las siguientes opciones: - NewlineSearch. El encabezado es una nueva línea. - OffsetSearch. Definir el encabezado según el número de caracteres desde el principio del archivo. - PatternSearch. Definir el encabezado con una expresión regular. - TextSearch. Definir el encabezado mediante una cadena explícita o una cadena que se recupera dinámicamente desde el documento de origen.
max_lookup_size
Define la cantidad máxima de datos nuevos, en kilobytes, que AsnStreamer busca para cada nuevo segmento. Para un rendimiento óptimo, configure esta propiedad como dos veces el tamaño máximo posible del segmento. Cuando una aplicación active un servicio de AsnStreamer implementado mediante una API, debe configurar el parámetro de tamaño de fragmento con un valor menor que max_lookup_size. El valor predeterminado es 10000.
no_constraints
Determina si se procesa el archivo ASN con restricciones. La propiedad no_constraints tiene las siguientes opciones: - true. Procesar el archivo ASN sin restricciones. - false. Procesar el archivo ASN con restricciones.
El valor predeterminado es false. run_component
Define una transformación que procesa el segmento. Puede seleccionar una de las siguientes opciones: - El nombre de un analizador, un serializador o un asignador que está configurado en el nivel global del script. - Un componente Asignador o Serializador. Configure el asignador o el serializador dentro del segmento. - Un componente WriteSegment que copia el segmento en la salida.
pdu_type
Define el tipo de PDU. Utilice esta propiedad para aclarar una ambigüedad.
separator
Define el texto que se va a ignorar entre registros. La propiedad separator tiene las siguientes opciones: - NewlineSearch. El separador es una nueva línea. - OffsetSearch. Definir el separador mediante el número de caracteres desde el final del registro anterior. - PatternSearch. Definir el separador con una expresión regular. - TextSearch. Definir el separador mediante una cadena explícita o una cadena que se recupera dinámicamente desde el documento de origen.
xml_root
Define un elemento raíz XML que contiene los mensajes ASN.1 convertidos.
Procesador de documentos AsnToXml El procesador de documentos AsnToXml convierte datos ASN.1 en XML. El formato de entrada del procesador debe ser el formato de codificación BER definido por el estándar ASN. 1. El XML de salida es idéntico a la codificación ASN.1 XER. Nota: Este procesador está disponible al instalar la biblioteca ASN.1 de Data Transformation.
54
Capítulo 3: Formatos de entrada y de salida del asistente
La siguiente tabla describe las propiedades del procesador de documentos AsnToXml: Propiedad
Descripción
asn_file
Define un archivo de especificación ASN.1.
encabezado
Define un encabezado para excluir del archivo ASN.1. La propiedad header tiene las siguientes opciones: - NewlineSearch. El encabezado es una nueva línea. - OffsetSearch. Definir el encabezado según el número de caracteres desde el principio del archivo. - PatternSearch. Definir el encabezado con una expresión regular. - TextSearch. Definir el encabezado mediante una cadena explícita o una cadena que se recupera dinámicamente desde el documento de origen.
no_constraints
Determina si se procesa el archivo ASN con restricciones. La propiedad no_constraints tiene las siguientes opciones: - true. Procesar el archivo ASN sin restricciones. - false. Procesar el archivo ASN con restricciones.
El valor predeterminado es false. pdu_type
Define el tipo de PDU. Utilice esta propiedad para aclarar una ambigüedad.
process_first_message
Determina si se procesa el archivo CDR entero. La propiedad process_first_message tiene las siguientes opciones: - true. Procesar solo el primer registro. - false. Procesar el archivo CDR entero.
El valor predeterminado es false. separator
Define el texto que se va a ignorar entre registros. La propiedad separator tiene las siguientes opciones: - NewlineSearch. El separador es una nueva línea. - OffsetSearch. Definir el separador mediante el número de caracteres desde el final del registro anterior. - PatternSearch. Definir el separador con una expresión regular. - TextSearch. Definir el separador mediante una cadena explícita o una cadena que se recupera dinámicamente desde el documento de origen.
Ejemplo En un archivo ASN.1 BER, hay un encabezado antes que el primer mensaje y separadores entre los mensajes siguientes. El encabezado y los separadores son secuencias aleatorias de bytes hexadecimales 00 y FF de cualquier longitud. Por ejemplo, un encabezado o un separador podría tener el siguiente formato: 00 00 FF 00 FF FF FF 00 FF 00 La siguiente configuración permite que el procesador AsnToXml busque el encabezado y los separadores. Las propiedades header y separator utilizan expresiones regulares para definir el patrón. pre_processor = AsnToXml asn_file = SGSN-CDR-def-v2009A.asn header = PatternSearch pattern = "[\x00|\xFF]+" separator = PatternSearch pattern = "[\x00|\xFF]+" El procesador omite los encabezados y los separadores y procesa los mensajes entre ellos.
Biblioteca ASN.1
55
Transformadores de ASN.1 Los transformadores modifican la salida de otros componentes. Puede utilizar transformadores en scripts dentro de componentes como anclajes, anclajes de serialización y acciones. Puede utilizar los transformadores como procesadores de documentos. La siguiente tabla describe las propiedades generales del transformador de ASN.1: Propiedad
Descripción
disabled
Determina si la transformación omite el componente y todos sus componentes secundarios. Especifique una de las siguientes opciones: - Activado. La transformación omite el componente. - Desactivado. La transformación aplica el componente.
Utilice esta propiedad para probar, depurar y realizar modificaciones menores en un proyecto sin eliminar el componente existente. El valor predeterminado es Desactivado. name
Una etiqueta descriptiva para el componente. Esta etiqueta aparece en el archivo events.cme y en la vista Eventos. Utilice la propiedad name para identificar qué componente ha causado el evento.
optional
Determina si un error del componente hace que el componente primario tenga errores. Especifique una de las siguientes opciones: - Activado. El error del componente no afecta al componente primario. - Desactivado. Si el componente tiene un error, también lo tiene el componente primario.
El valor predeterminado es Desactivado. remark
Un comentario definido por el usuario que describe el objetivo o la acción del componente.
Visualización de las propiedades avanzadas De manera predeterminada, las propiedades avanzadas están ocultas en el panel de scripts del editor de IntelliScript. u
Para ver las propiedades avanzadas de un componente específico, en el editor de IntelliScript presione la tecla de flecha derecha o haga clic en la flecha derecha doble que hay a la derecha del componente.
BCDSwapToString El transformador BCDSwapToString transforma la entrada decimal de código binario empaquetado en una cadena. El transformador intercambia los nibbles de cada byte, trunca la entrada del primer byte que contiene FF y convierte el resultado en una cadena decimal.
Ejemplo Proporciona una entrada binaria que es equivalente a la siguiente entrada en un transformador BCDSwapToString: 35 54 FF 54 54 El transformador intercambia los nibbles de cada byte. Cuando el transformador alcance el byte FF, el transformador detiene el procesamiento de la entrada y la salida queda truncada. El transformador ofrece la siguiente salida: 5345
56
Capítulo 3: Formatos de entrada y de salida del asistente
BCDToString El transformador BCDToString convierte la entrada decimal de código binario empaquetado en una cadena. Un número decimal de código binario es un número codificado de modo que cada nibble represente un dígito decimal. Un nibble equivale a medio byte. La salida tiene formato little endian, donde el orden de los bytes está invertido de modo que el último byte de la entrada es el primer byte de la salida.
Ejemplo Proporciona una entrada binaria que es equivalente a la siguiente entrada en un transformador BCDToString: 52 54 98 El transformador toma la entrada e invierte el orden de los bytes en la salida. El transformador ofrece la siguiente salida de cadena: 985452
HexSequenceToDecimal El transformador HexSequenceToDecimal convierte un número par de caracteres que representan una serie de números hexadecimales en un número decimal.
Ejemplo Proporciona la siguiente entrada hexadecimal al transformador HexSequenceToDecimal: 10170A El transformador convierte cada byte de entrada de hexadecimal a decimal y ofrece la siguiente salida: 162310
HexToDecimal El transformador HexToDecimal convierte un número par de caracteres que representan una serie de números hexadecimales en una serie de números decimales. La siguiente tabla describe una propiedad adicionales del transformador HexSequenceToDecimal: Propiedad
Descripción
endian
Determina la forma en que la transformación almacena los datos en la memoria. La propiedad endian tiene las siguientes opciones: - big_endian. La transformación almacena el byte más significativo en la dirección más pequeña. Los bytes están en el mismo orden que la entrada. - little_endian. La transformación almacena el byte menos significativo en la dirección más pequeña. Los bytes están en orden inverso al de la entrada. Esta es la configuración predeterminada.
Ejemplo Proporciona la siguiente entrada hexadecimal al transformador HexToDecimal: 1017 El transformador convierte el número de entrada completo de hexadecimal a decimal. De manera predeterminada, el transformador genera una transformación little-endian. Las transformaciones little-endian invierten el orden de los bytes.
Biblioteca ASN.1
57
El transformador ofrece la siguiente salida: 5904
Swap El transformador Swap toma la entrada hexadecimal en bytes e intercambia los nibbles pares e impares en cada byte. Un nibble equivale a medio byte.
Ejemplo Proporciona la siguiente entrada hexadecimal al transformador Swap: 000102 El transformador intercambia los nibbles en cada byte y después proporciona la siguiente salida hexadecimal: 001020
Avro Utilice el asistente para crear una transformación con entrada o salida de Avro. Al crear una transformación del Procesador de datos para transformar el formato Avro, seleccione un esquema Avro o un archivo de ejemplo que defina la estructura prevista de los datos Avro. El asistente crea componentes que transforman el formato Avro a otros formatos, o de otros formatos a formato Avro. Entre estos componentes se incluyen una asignación relacional a jerárquica, una asignación jerárquica a relacional y un XMap. Después de que el asistente cree la transformación, puede configurar más ajustes de la transformación para determinar la lógica de asignación. Apache Avro es un sistema de serialización en formatos de datos binarios o de otro tipo. Es posible que los datos Avro no se encuentren en un formato que sea directamente legible por humanos. Para obtener más información sobre Avro, consulte http://avro.apache.org/ Nota: Utilice el formato Avro de código binario para crear una transformación con entrada o salida de Avro. No se procesará la entrada o salida de Avro en otros formatos. Una transformación que lee la entrada o salida de Avro se basa en un esquema. Cuando la transformación lee o escribe datos Avro, la transformación utiliza el esquema para interpretar la jerarquía. Al seleccionar un archivo de ejemplo para definir la jerarquía de Avro, el asistente también guarda el primer registro en el archivo como un archivo de prueba independiente. Puede utilizar este archivo para probar la transformación. Para buscar el archivo, en el panel Puertos de la vista Resumen, compruebe el archivo de ruta indicado en el campo Ubicación de entrada. Cuando se crea una transformación del Procesador de datos que transforma el formato Avro a formato jerárquico o viceversa, el asistente crea un componente XMap en la transformación. El editor de XMap muestra los nodos del esquema jerárquico y los nodos del esquema de Avro. Utilice el editor de XMap para vincular los nodos y definir la lógica de transformación. Para obtener más información sobre el objeto y el editor de XMap, consulte “Resumen de XMap” en la página 82. Cuando se crea una transformación que transforma el formato Avro a formato relacional o viceversa, el asistente crea una asignación relacional. El panel Puertos de la vista Resumen muestra los nodos del esquema jerárquico de Avro y los puertos relacionales. Utilice el panel Puertos para vincular los elementos de la jerarquía con los grupos y puertos relacionales. Para obtener más información sobre la transformación de datos relacionales, consulte “Resumen de entrada y salida relacionales” en la página 71.
58
Capítulo 3: Formatos de entrada y de salida del asistente
Después de crear una transformación del Procesador de datos para entrada de Avro, añádala a una asignación con un lector de archivos complejos. El lector de archivos complejos transfiere la entrada de Avro a la transformación. Para una transformación del Procesador de datos con salida de Avro, puede añadir un escritor de archivos complejos a la asignación para recibir la salida de la transformación.
Entrada de Avro y lector de archivos complejos Para que la transformación del Procesador de datos transforme la entrada de Avro, la transformación recibe la entrada de datos desde un objeto del lector de archivos complejos. Después de crear y configurar la transformación, se añade la transformación a una asignación y se conecta el puerto de entrada al puerto de salida del lector de archivos complejos. El lector de archivos complejos proporciona la entrada a un componente de transmisión por secuencias que el asistente de transformación del Procesador de datos crea como parte de la transformación. Si la transformación transforma la entrada de Avro a un formato personalizado o relacional, no es necesario cambiar la configuración de transmisión por secuencias. Para especificar un formato de salida personalizado, seleccione Otro como formato de salida en el asistente. Si la transformación transforma el formato de la entrada de Avro a JSON, XML o Avro, el asistente crea un XMap para asignar el formato de salida. Debe identificar el XMap con la transmisión por secuencias, para que la transformación procese los datos correctamente. También debe configurar el lector de archivos complejos para procesar la entrada de Avro. El puerto de salida para el lector de archivos complejos debe estar establecido en formato binario. De forma similar, el puerto de entrada para la transformación del Procesador de datos debe estar establecido como entrada binaria.
Compresión de datos Avro con el códec Snappy Puede utilizar datos Avro comprimidos con el lector de archivos complejos. Si utiliza el códec Snappy para comprimir datos Avro, debe actualizar el archivo .jar del códec Snappy antes de probar o ejecutar la transformación. Para utilizar el códec Snappy, reemplace el archivo .jar Snappy predeterminado en la instalación del servidor de Informatica y en el entorno de Hadoop por la versión actualizada. El archivo snappy-java-1.0.4.1.jar actualizado está disponible en el siguiente vínculo: http://mvnrepository.com/artifact/org.xerial.snappy/snappy-java/1.1.0.1
Actualización del códec Snappy para habilitar la compresión de datos de Avro Para habilitar la compresión de datos de Avro con el códec Snappy, reemplace el archivo .jar de Snappy predeterminado por la versión actualizada. 1.
En el equipo donde esté instalado el servidor de Informatica, reemplace el archivo snappyjava-1.0.4.1.jar en la instalación del servidor por el archivo snappy-java-1.1.0.1.jar. Reemplace el archivo .jar en la siguiente ruta: \services\shared\hadoop \\lib
2.
En los equipos donde esté instalado y se ejecute Hadoop, reemplace el archivo snappyjava-1.0.4.1.jar por el archivo snappy-java-1.1.0.1.jar. Reemplace el archivo .jar en la siguiente ruta: \services\shared\hadoop\\lib
Avro
59
Configurar una transformación con entrada de Avro Para crear una transformación del Procesador de datos para la entrada de Avro, utilice el asistente de transformación del Procesador de datos. El asistente crea la transformación en el repositorio de modelos con los componentes que necesita para transformar la entrada de Avro. Utilice el editor de IntelliScript para editar la transmisión por secuencias y el editor de XMap para editar un XMap si se incluyen en la transformación. Añada la transformación a una asignación con un lector de archivos complejos. 1.
Cree la transformación del Procesador de datos con el asistente para nueva transformación. Añada un esquema Avro o un archivo de ejemplo que defina la estructura de entrada esperada.
2.
Si la transformación tiene XML, JSON u otro formato estructurado como salida, utilice el editor de XMap para editar el XMap de la transformación.
3.
Utilice el editor de IntelliScript para editar y personalizar la transmisión por secuencias de la transformación. Si la transformación tiene XML, JSON u otra salida de formato estructurado, edite la transmisión por secuencias para identificar el XMap de la transformación.
4.
Añada la transformación del Procesador de datos a una asignación con un lector de archivos complejos. La transformación debe estar establecida como entrada binaria, la configuración predeterminada para la entrada de Avro. Configure el lector de archivos complejos para procesar Avro. La configuración de salida permanece establecida como binaria, la configuración predeterminada. Vincule el puerto de salida del lector de archivos complejos al puerto de entrada de la transformación del Procesador de datos para proporcionar la entrada de Avro a la transformación.
Paso 1. Crear una transformación que transforma Avro Cree una transformación del Procesador de datos con entrada de Avro, salida de Avro o ambas. 1.
En la Herramienta del desarrollador, haga clic en Archivo > Nuevo > Transformación.
2.
Seleccione la transformación del Procesador de datos y haga clic en Siguiente.
3.
Introduzca un nombre para la transformación y busque la ubicación en el repositorio de modelos donde colocar la transformación.
4.
Seleccione Crear un procesador de datos mediante un asistente y haga clic en Siguiente.
5.
Seleccione Avro u otro formato de entrada y haga clic en Siguiente.
6.
Si ha seleccionado Avro como formato de entrada, busque un archivo de esquema .xsd o un archivo de muestra de Avro para seleccionarlo. Haga clic en Siguiente. Developer añade un archivo de esquema .xsd que representa la jerarquía de Avro en el repositorio de modelos. Si selecciona un archivo de ejemplo, Developer crea un archivo de prueba a partir del primer registro del archivo de ejemplo. Puede utilizar este archivo para probar la transformación. Para buscar el archivo, en el panel Puertos de la vista Resumen, compruebe el archivo de ruta indicado en el campo Ubicación de entrada.
7.
Seleccione Avro u otro formato de salida y haga clic en Siguiente.
8.
Si selecciona Avro como formato de salida, busque un esquema relacionado o un archivo de muestra de Avro para seleccionarlo. Haga clic en Siguiente.
9.
Haga clic en Finalizar. Developer Tool crea la transformación en el repositorio con los componentes relevantes, tales como un XMap para transformar la jerarquía de Avro en otro formato de jerarquía. La vista Resumen aparece en la Herramienta del desarrollador.
10.
60
Para editar los componentes de la transformación, en la vista Objetos, haga doble clic en el componente de transformación para abrirlo en el editor correspondiente.
Capítulo 3: Formatos de entrada y de salida del asistente
Paso 2. Editar el XMap Para configurar un objeto de XMap de transformación del Procesador de datos, añada instrucciones de asignación. 1.
Para abrir el editor de XMap, en Objetos de la transformación del Procesador de datos, haga clic en el objeto de XMap.
2.
Para crear una instrucción de asignación Asignar, Grupo o Grupo de repetición, en el editor de XMap arrastre desde un nodo del esquema jerárquico de entrada a un nodo del esquema jerárquico de salida. El editor de XMap crea un vínculo de asignación entre los nodos. La instrucción de asignación aparece en la malla. El editor de XMap completa automáticamente los campos de la instrucción de asignación.
3.
Para crear la lógica condicional en la malla, añada una instrucción de asignación de enrutador como se indica a continuación: a.
En la instrucción de asignación de enrutador, cree instrucciones de asignación de opción. Arrastre y suelte nodos de esquema de entrada y salida en los campos de las instrucciones de opción en la malla.
b.
En la instrucción de asignación de enrutador, cree una instrucción de asignación predeterminada para especificar qué ocurre si no se aplica ninguna de instrucción de asignación de opción.
c.
En las instrucciones de asignación de opción, cree instrucciones de asignación Asignar para especificar las condiciones para asignar el nodo de entrada al nodo de salida.
4.
Para proporcionar un contexto común para un grupo de instrucciones, añada una instrucción de asignación de grupo. Anide instrucciones de asignación Asignar bajo la instrucción de asignación de grupo.
5.
Para llamar a otro objeto de XMap, añada una instrucción de ejecución de XMap.
6.
Para cambiar el contexto y la lógica de una instrucción de asignación, edite las propiedades de la instrucción de asignación como se indica a continuación: a.
Disminuya el nivel de las instrucciones a secundarias o auméntelo a principales.
b.
Cree expresiones de XPath para cambiar el contexto o añada predicados con el editor de XPath.
Paso 3. Configurar la transmisión por secuencias Si la transformación tiene una salida XML, JSON u otro formato estructurado seleccionado como salida, el asistente crea un componente de transmisión por secuencias y un objeto de XMap en el asistente. Edite la transmisión por secuencias para identificar el XMap en la transformación. 1.
En la vista Objetos, haga doble clic en la transmisión por secuencias, un objeto del script, para abrirla en el editor de IntelliScript.
2.
Para configurar la transmisión por secuencias para que identifique el XMap en la transformación, realice los pasos siguientes: a.
Para configurar el elemento necesario, expanda el elemento contains en el editor de IntelliScript. Haga doble clic sobre las flechas derechas dobles >> junto al elemento.
b.
Expanda el elemento repeating_segment. Haga doble clic sobre las flechas derechas dobles >> junto al elemento.
c.
En el elemento run_component, seleccione el objeto de XMap relevante de la lista de componentes.
3.
Para configurar la transmisión por secuencias para que lea datos desde ubicaciones del documento de origen y escriba los datos en XML, haga clic con el botón derecho en
4.
Para configurar más ajustes de la transmisión por secuencias, en el elemento Streamer, anide los componentes ComplexSegment y SimpleSegment correspondientes a la estructura de origen.
Avro
61
5.
Para cada SimpleSegment, defina el marcador de apertura y el marcador de cierre si es necesario. Defina la transformación que procesa el segmento.
Paso 4. Configurar el lector de archivos complejos Añada una transformación del Procesador de datos que transforme Avro en una asignación con un lector de archivos complejos. Configure el lector de archivos complejos para procesar la entrada de Avro. 1.
En el editor de asignaciones, cree un objeto del lector de archivos complejos.
2.
Para configurar el escritor de archivos complejos, realice los pasos siguientes: a.
En la ficha Avanzadas de la vista Propiedades, seleccione la propiedad Formato de archivo y elija Formato de entrada.
b.
En la ficha Avanzadas, seleccione la propiedad Formato de entrada y, a continuación, escriba com.informatica.avro.AvroToXML.
3.
Añada la transformación del Procesador de datos a la asignación. El puerto de entrada de la transformación debe permanecer establecido como entrada binaria, la configuración predeterminada para la entrada de Avro.
4.
Vincule el puerto de salida del lector de archivos complejos al puerto de entrada de la transformación del Procesador de datos. El puerto de salida del lector de archivos complejos debe permanecer establecido en salida binaria.
Configurar una transformación con salida de Avro Para crear una transformación del Procesador de datos para la salida de Avro, utilice el asistente de transformación del Procesador de datos. El asistente crea la transformación en el repositorio de modelos con los componentes que necesita para transformar la salida de Avro. Utilice el editor de XMap para editar el XMap, si se incluye. Añada la transformación a una asignación con un escritor de archivos complejos. 1.
Cree la transformación del Procesador de datos con el asistente para nueva transformación. Añada un esquema Avro o un archivo de ejemplo que defina la estructura de salida esperada.
2.
Si la transformación tiene XML, JSON u otro formato estructurado como entrada, utilice el editor de XMap para editar y personalizar el XMap que el asistente haya creado en la transformación.
3.
Para definir la configuración de salida para la transformación del Procesador de datos, en el panel Control de salida de la vista Configuración, seleccione la opción de salida relevante en el área Modo de colección del puerto de salida binario. Nota: Para configurar la salida para enviar un registro cada vez con el esquema, seleccione la opción Fila de salida para cada fila. Para recopilar todos los registros con el esquema en una secuencia de salida, seleccione la opción Recopilar las filas de entrada en una sola salida.
4.
Añada una transformación del Procesador de datos a una asignación. La transformación permanece definida como salida binaria, la configuración predeterminada para la salida de Avro.
5.
Cree y vincule un escritor de archivos complejos con la transformación del Procesador de datos de la asignación para recibir la salida de Avro desde la transformación. Nota: La configuración de entrada permanece establecida como binaria, la configuración predeterminada. El escritor de archivos complejos no admite la compresión para salida de Avro.
62
Capítulo 3: Formatos de entrada y de salida del asistente
Biblioteca de procesamiento de COBOL La biblioteca de COBOL transforma datos COBOL EBCDIC en XML y viceversa. Cuando utilice el asistente para crear una transformación con entrada o salida de COBOL, seleccione un cuaderno COBOL para definir la estructura esperada de los datos de entrada o salida. Cuando se crea una transformación del Procesador de datos con entrada o salida de COBOL con el asistente, Developer añade los siguientes objetos a la transformación: •
Un objeto de esquema que define una representación XML de la estructura de datos COBOL.
•
Para la entrada de COBOL, Developer añade un analizador que transforma los datos de entrada de la definición de datos de COBOL EBCDIC en XML.
•
Para la salida de COBOL, Developer añade un serializador que transforma XML en COBOL.
Nota: Puede crear una transformación del Procesador de datos que utilice la entrada o la salida de COBOL, pero no las dos.
Creación de una transformación de COBOL Utilice el asistente de transformación del Procesador de datos para crear una transformación del Procesador de datos con entrada o salida de COBOL. 1.
En la Herramienta del desarrollador, haga clic en Archivo > Nuevo > Transformación.
2.
Seleccione la transformación del Procesador de datos y haga clic en Siguiente.
3.
Introduzca un nombre para la transformación y busque la ubicación en el repositorio de modelos donde colocar la transformación.
4.
Seleccione Crear un procesador de datos mediante un asistente y haga clic en Siguiente.
5.
Seleccione un formato de entrada y haga clic en Siguiente.
6.
Si selecciona COBOL como formato de entrada, busque un cuaderno COBOL para seleccionarlo. Haga clic en Siguiente. Los archivos de especificaciones de cuadernos generalmente tienen la extensión *.txt. Developer añade un archivo de esquema XSD que representa el cuaderno en el repositorio de modelos.
7.
Seleccione un formato de salida y haga clic en Siguiente.
8.
Si selecciona COBOL como formato de salida, busque un cuaderno COBOL para seleccionarlo. Haga clic en Siguiente. Si ha seleccionado COBOL como formato de entrada, no tiene la opción de seleccionar COBOL como formato de salida.
9.
Haga clic en Finalizar. La Herramienta del desarrollador crea la transformación en el repositorio. La vista Resumen aparece en la Herramienta del desarrollador.
10.
En la vista Objetos, haga doble clic en el analizador para abrirlo en el editor de IntelliScript.
Definiciones de datos de COBOL El cuaderno de COBOL que se utiliza para crear una transformación del Procesador de datos pueden contener definiciones de datos de cualquier complejidad. El cuaderno y la entrada de COBOL debe cumplir con las reglas de definición de datos descritas en esta sección.
Biblioteca de procesamiento de COBOL
63
Definiciones de datos compatibles La importación de COBOL es compatible con las definiciones de datos de cualquier complejidad. Por ejemplo, las definiciones de datos pueden usar los tipos de datos empaquetados decimales (COMP-3), binarios (COMP-1, COMP-2 o COMP-4) y punto decimal lógico (99v99). Pueden contener características como las cláusulas REDEFINES, OCCURS y OCCURS DEPENDING ON.
Reglas de definición de datos Una definición de datos de COBOL debe cumplir las siguientes reglas: •
No de be haber más de 72 caracteres para cada línea y no puede haber texto después de la columna 72
•
La primera línea debe ser una observación, con un * en la columna 7, o debe empezar con un número de nivel
•
El primer número de nivel debe estar en la columna 1 u 8.
Definiciones de datos incompatibles El transformación del Procesador de datos no admite las siguientes definiciones de datos de COBOL: •
Los números nivel especiales son 66, 77 y 88
•
Cláusulas USAGE a nivel de grupo
•
Cláusulas INDEXED BY
•
POINTER y PROCEDURE-POINTER
Procedimientos de prueba Cuando se prueba el analizador de COBOL, se transforman datos de COBOL de muestra en XML y se comprueba la salida. Después de probar el analizador, puede ejecutar el serializador de COBOL en la salida del analizador.
Probar un analizador de COBOL Para probar el analizador de COBOL, necesita un archivo de entrada que contenga datos de COBOL de muestra. La estructura de datos debe cumplir con la definición de datos que se haya importado. El analizador transforma los datos de COBOL de muestra en XML y comprueba la salida. 1.
En la vista Objeto, haga doble clic en el analizador de COBOL. El analizador aparece en el panel de scripts del editor de IntelliScript.
2.
Haga clic con el botón derecho en el nombre del analizador y, a continuación, haga clic en Establecer como componente de inicio.
3.
Expanda el árbol de IntelliScript y después edite la propiedad example_source del analizador. Cambie su valor de Text a LocalFile. El asistente configura el analizador de COBOL de forma que no requiera un documento de origen de ejemplo. Al finalizar la prueba, puede quitar el origen de ejemplo. El origen de ejemplo no tiene efecto en la transformación en tiempo de ejecución.
64
4.
Para asignar un archivo de ejemplo, expanda el componente LocalFile haciendo clic en las flechas dobles derechas >>. Haga doble clic en la propiedad file_name y busque el archivo de entrada que contiene los datos de COBOL de muestra.
5.
En la vista Visor de datos, en el panel Entrada, puede examinar el archivo de ejemplo. Si no se muestra el documento, haga clic con el botón derecho en el nombre del analizador en IntelliScript y haga clic en Abrir origen de ejemplo.
Capítulo 3: Formatos de entrada y de salida del asistente
6.
Haga clic en Ejecutar > Ejecutar visor de datos para probar el analizador.
7.
En la vista Visor de datos, en el panel Salida, examine la salida del analizador.
8.
Para confirmar que el analizador se ha ejecutado sin errores, en la vista Visor de datos, en el panel Salida, haga clic en el botón Mostrar eventos. Examine el registro de ejecución en la vista Eventos del procesador de datos.
Probar un serializador de COBOL Después de probar un analizador de COBOL, puede ejecutar el serializador de COBOL en la salida del analizador. 1.
En el explorador de Data Transformation, haga doble clic en el archivo de script TGP del serializador. El serializador aparece en el panel de scripts del editor de IntelliScript.
2.
Haga clic con el botón derecho en el nombre del serializador y, a continuación, haga clic en Establecer como componente de inicio.
3.
Haga clic enEjecutar > Ejecutar para activar el serializador. En la línea de comandos, busque el archivo Results\output.xml que se generó cuando ejecutó el analizador.
4.
Examine el registro de ejecución en la vista Eventos. Confirme que el serializador se ha ejecutado sin errores.
5.
Para ver la salida del serializador, haga doble clic en el archivo Results\output.xml en el explorador de Data Transformation. La visualización debe ser igual que la entrada original en la que ha ejecutado el analizador.
Editar una transformación de COBOL Puede editar una transformación de COBOL que haya generado con el asistente de transformación del Procesador de datos. Si lo hace, cree una documentación de la edición. La documentación podría ser fundamental si más adelante revisa la definición de datos de COBOL, vuelve a importarla en una nueva transformación y necesita volver a realizar la misma edición.
JSON Cuando cree una transformación del Procesador de datos con entrada o salida de JSON, seleccione un esquema JSON o un archivo de muestra para la transformación. El esquema o el archivo de muestra definen la estructura de la jerarquía de datos de entrada o salida. JSON (JavaScript Object Notation) es un formato de intercambio de datos jerárquico similar a XML. El formato JSON se suele utilizar para trasmitir datos estructurados a través de una conexión de red. Un asignador o serializador utiliza un documento de entrada o un esquema de entrada de JSON de la misma forma que el documento de entrada y el esquema de entrada XML para definir la jerarquía de datos de entrada esperada. Un analizador utiliza un documento de salida o un esquema de salida de JSON para definir la jerarquía de datos de salida esperada. Cuando se utiliza el asistente de transformación del Procesador de datos para crear una transformación con entrada o salida de JSON, la transformación puede contener un analizador, un asignador, un transformador o un serializador asociado a la jerarquía de JSON. El esquema JSON se convierte en un archivo .xsd que
JSON
65
define la estructura jerárquica del archivo JSON. Puede utilizar este esquema .xsd con cualquier documento JSON que tenga el mismo formato jerárquico.
Esquemas JSON Cuando cree una transformación del Procesador de datos con el asistente, puede utilizar un origen de ejemplo o un esquema JSON para definir la jerarquía de entrada o salida de JSON. El asistente de transformación del Procesador de datos genera un esquema XML en el repositorio de modelos que especifica la estructura de JSON que usan los componentes de la transformación. La transformación contiene un transformador asociado con el esquema y puede contener otros componentes, según la entrada o salida que se haya seleccionado en el asistente. Los scripts usan esquemas para definir las estructuras jerárquicas de entrada y salida. Los esquemas de entrada JSON deben cumplir con JSON Schema Internet Draft, publicado por Internet Engineering Task Force. Para obtener más información sobre la sintaxis del esquema JSON, consulte los siguientes sitios web: •
Introducción a JSON: http://www.json.org
•
Convertir un documento JSON en un esquema JSON: http://jsonschema.net
Muestra de esquema JSON El siguiente ejemplo es una muestra de esquema JSON: {"type":"object", "$schema": "http://json-schema.org/draft-03/schema", "id": "#", "required":false, "properties":{ "OrgId": { "type":"string", "id": "OrgId", "required":false }, "metrics": { "type":"array", "id": "metrics", "required":false, "items": { "type":"object", "id": "0", "required":false, "properties":{ "name": { "type":"string", "id": "name", "required":false }, "valueTrend": { "type":"array", "id": "valueTrend", "required":false, "items": { "type":"object", "id": "0", "required":false, "properties":{ "date": { "type":"string", "id": "date", "required":false }, "val": {
66
Capítulo 3: Formatos de entrada y de salida del asistente
}
}
}
}
}
}
}
}
}
"type":"string", "id": "val", "required":false
El esquema define los elementos y atributos que pueden aparecer en un documento JSON. El esquema utiliza la sintaxis JSON para especificar la jerarquía y la secuencia de elementos, si los elementos son obligatorios o necesarios, el tipo de elemento y los valores posibles. El esquema de ejemplo anterior define el siguiente documento de entrada de JSON: {"OrgId": "ORG000000000001", "metrics": [ { "name": "COL1", "valueTrend": [ { "date": "2011-11-01", "val": "122.456" }, { "date": "2011-11-02", "val": "215.1" } ] }, { "name": "COL2", "valueTrend": [ { "date": "2011-11-01", "val": "122.456" }, { "date": "2011-11-02", "val": "215.1" } ] } ] } Si realiza un seguimiento mediante el esquema, podrá determinar la relación entre los elementos del esquema y el documento de entrada. La jerarquía del esquema contiene el objeto metrics que anida la matriz valueTrend. La matriz contiene los campos date y valque son del tipo de datos string.
Crear una transformación con JSON Cree una transformación del procesador de datos con entrada o salida de JSON. 1.
En la Herramienta del desarrollador, haga clic en Archivo > Nuevo > Transformación.
2.
Seleccione la transformación del Procesador de datos y haga clic en Siguiente.
3.
Introduzca un nombre para la transformación y busque la ubicación en el repositorio de modelos donde colocar la transformación.
4.
Seleccione Crear un procesador de datos mediante un asistente y haga clic en Siguiente.
JSON
67
5.
Seleccione un formato de entrada y haga clic en Siguiente.
6.
Si selecciona JSON como formato de entrada, busque un esquema JSON o un archivo de muestra de JSON para seleccionarlo. Haga clic en Siguiente. Normalmente, los archivos JSON tienen la extensión *.json . Developer añade un archivo de esquema XSD que representa la jerarquía de JSON en el repositorio de modelos.
7.
Seleccione un formato de salida y haga clic en Siguiente.
8.
Si selecciona JSON como formato de salida, busque un esquema JSON o un archivo de muestra de JSON para seleccionarlo. Haga clic en Siguiente. Si ha seleccionado JSON como formato de entrada, no tendrá la opción de seleccionar JSON como formato de salida.
9.
Haga clic en Finalizar. La Herramienta del desarrollador crea la transformación en el repositorio. La vista Resumen aparece en la Herramienta del desarrollador.
10.
En la vista Objetos, haga doble clic en el componente de la transformación para abrirlo en el editor de IntelliScript.
Parquet Utilice el asistente para crear una transformación con entrada o salida de Parquet. Al crear una transformación del Procesador de datos para transformar el formato Parquet, seleccione un esquema Parquet o un archivo de ejemplo que defina la estructura prevista de los datos Parquet. El asistente crea componentes que transforman el formato Parquet a otros formatos, o de otros formatos a formato Parquet. Después de que el asistente cree la transformación, puede configurar más ajustes de la transformación para determinar la lógica de asignación. Apache Parquet es un formato de almacenamiento en columnas que se puede procesar en un entorno de Hadoop. Parquet se implementa para tratar con estructuras complejas de datos anidados y utiliza un algoritmo para destruir y ensamblar registros. Para obtener más información sobre Parquet, consulte http://parquet.incubator.apache.org/documentation/latest//. Una transformación que lee la entrada o salida de Parquet se basa en un esquema. Cuando la transformación lee o escribe datos Parquet, la transformación utiliza el esquema para interpretar la jerarquía. Después de crear una transformación del Procesador de datos para entrada de Parquet, añádala a una asignación con un lector de archivos complejos. El lector de archivos complejos transfiere la entrada de Parquet a la transformación. Para una transformación del Procesador de datos con salida de Parquet, puede añadir un escritor de archivos complejos a la asignación para recibir la salida de la transformación.
Crear una transformación con entrada o salida de Parquet Cree una transformación del Procesador de datos con entrada o salida de Parquet.
68
1.
En la Herramienta del desarrollador, haga clic en Archivo > Nuevo > Transformación.
2.
Seleccione la transformación del Procesador de datos y haga clic en Siguiente.
3.
Introduzca un nombre para la transformación y busque la ubicación en el repositorio de modelos donde colocar la transformación.
4.
Seleccione Crear un procesador de datos mediante un asistente y haga clic en Siguiente.
Capítulo 3: Formatos de entrada y de salida del asistente
5.
Seleccione un formato de entrada y haga clic en Siguiente.
6.
Si selecciona Parquet como formato de entrada, busque un esquema Parquet o un archivo de muestra de Parquet para seleccionarlo. Haga clic en Siguiente. La Herramienta del desarrollador añade un archivo de objeto de esquema que representa la jerarquía de Parquet para el repositorio de modelos.
7.
Seleccione un formato de salida y haga clic en Siguiente.
8.
Si selecciona Parquet como formato de salida, busque un esquema Parquet o un archivo de muestra de Parquet para seleccionarlo. Haga clic en Siguiente. Si ha seleccionado Parquet como formato de entrada, no tendrá la opción de seleccionar Parquet como formato de salida.
9.
Haga clic en Finalizar. La Herramienta del desarrollador crea la transformación en el repositorio. La vista Resumen aparece en la Herramienta del desarrollador.
10.
En la vista Objetos, haga doble clic en el componente de la transformación para abrirlo en el editor de IntelliScript. Para configurar el componente de transformación, añada instrucciones de asignación.
Configurar el lector de archivos complejos para la entrada de Parquet Después de crear una transformación del Procesador de datos que convierta la entrada de Parquet, añada la transformación a una asignación con un lector de archivos complejos. Configure el lector de archivos complejos para procesar la entrada de Parquet. 1.
En el editor de asignaciones, cree un objeto del lector de archivos complejos.
2.
Para configurar el escritor de archivos complejos, realice los pasos siguientes: a.
En la ficha Avanzadas de la vista Propiedades, seleccione la propiedad Formato de archivo y elija Formato de entrada.
b.
En la ficha Avanzadas, seleccione la propiedad Formato de entrada y, a continuación, escriba com.informatica.parquet.ParquetToXML.
3.
Añada la transformación del Procesador de datos a la asignación. El puerto de entrada de la transformación debe permanecer establecido como entrada binaria, la configuración predeterminada para la entrada de Parquet.
4.
Vincule el puerto de salida del lector de archivos complejos al puerto de entrada de la transformación del Procesador de datos. El puerto de salida del lector de archivos complejos debe permanecer establecido en salida binaria.
XML Utilice el asistente para crear una transformación con entrada o salida de XML. Al crear una transformación del Procesador de datos con entrada o salida de XML, seleccione un esquema .xsd o archivo XML de ejemplo para la transformación. El esquema o el archivo de muestra definen la estructura de la jerarquía de
XML
69
datos de entrada o salida. Si selecciona un archivo de ejemplo, el asistente crea un esquema desde la jerarquía de datos del archivo de ejemplo. El asistente crea una transformación del Procesador de datos que puede contener un analizador, asignador, XMap o serializador asociado con la jerarquía XML. Un asignador, XMap o serializador utiliza un esquema de entrada para definir la jerarquía de datos de entrada esperada. Un XMap, asignador o analizador utiliza un esquema de salida para definir la jerarquía de datos de salida esperada. Para obtener más información sobre la sintaxis de esquema, consulte http://www.w3.org. El asistente crea los componentes básicos o la asignación relacional que necesita la transformación en función de los tipos de entrada y salida. La transformación puede ser completa o puede servir como punto de partida para configurar más ajustes. Si la transformación tiene entrada y salida estructuradas, el asistente puede crear un XMap que se configure para transformar de una jerarquía a otra. Utilice el editor de XMap para vincular los nodos de jerarquía de esquema de entrada y salida y definir la lógica de transformación. Para obtener más información sobre el objeto y el editor de XMap, consulte “Resumen de XMap” en la página 82. Si la transformación tiene entrada o salida relacionales que desee transformar en datos estructurados o a partir de datos estructurados, el asistente crea una asignación relacional. El panel Puertos de la vista Resumen muestra los nodos del esquema jerárquico y los puertos relacionales. Utilice el panel Puertos para vincular los elementos de la jerarquía con los grupos y puertos relacionales. Para obtener más información sobre la transformación de datos relacionales, consulte “Resumen de entrada y salida relacionales” en la página 71.
Crear una transformación que transforma XML Cree una transformación del Procesador de datos con entrada XML, salida XML o ambas. 1.
En la Herramienta del desarrollador, haga clic en Archivo > Nuevo > Transformación.
2.
Seleccione la transformación del Procesador de datos y haga clic en Siguiente.
3.
Introduzca un nombre para la transformación y busque la ubicación en el repositorio de modelos donde colocar la transformación.
4.
Seleccione Crear un procesador de datos mediante un asistente y haga clic en Siguiente.
5.
Seleccione XML u otro formato de entrada y haga clic en Siguiente.
6.
Si selecciona XML como formato de entrada, busque un esquema o un archivo XML de muestra para seleccionarlo. Haga clic en Siguiente. Developer añade un archivo de esquema .xsd que representa la jerarquía de en el repositorio de modelos.
7.
Seleccione XML u otro formato de salida y haga clic en Siguiente.
8.
Si selecciona XML como formato de salida, busque un esquema o un archivo XML de muestrapara seleccionarlo. Haga clic en Siguiente.
9.
Haga clic en Finalizar. La Herramienta del desarrollador crea la transformación en el repositorio. La vista Resumen aparece en la Herramienta del desarrollador.
10.
70
Para editar un componente específico de la transformación, en la vista Objetos, haga doble clic en el componente de transformación para abrirlo en el editor de IntelliScript.
Capítulo 3: Formatos de entrada y de salida del asistente
CAPÍTULO 4
Entrada y salida relacional Este capítulo incluye los siguientes temas: •
Resumen de entrada y salida relacionales, 71
•
Entrada relacional, 71
•
Salida relacional, 78
Resumen de entrada y salida relacionales Una transformación del Procesador de datos puede leer la entrada de la base de datos relacional desde puertos de entrada y transformarlos en otros formatos. Una transformación puede realizar la salida de filas de datos relacionales en puertos de salida. Puede definir la asignación con puertos de transformación del Procesador de datos en la vista Resumen de la transformación. O bien, puede utilizar el asistente de transformación del Procesador de datos para asignar datos relacionales automáticamente. Puede transformar datos relacionales en datos jerárquicos. Para transformar grupos de entrada en datos jerárquicos, asigne nodos del grupo de puertos relacionales a puertos jerárquicos. Puede pasar los datos de los puertos de salida jerárquicos a otra transformación en la asignación. Puede devolver la salida relacional desde la transformación del Procesador de datos. Si un componente devuelve datos relacionales, cree grupos de puertos de salida mediante la asignación de nodos desde la salida jerárquica a los grupos de puertos relacionales. Puede pasar los datos de los puertos de salida relacionales a otra transformación de una asignación.
Entrada relacional Una transformación del Procesador de datos puede convertir la entrada relacional en una salida jerárquica. Una base de datos relacional es una base de datos que tiene un conjunto de tablas de datos organizados según un modelo de datos relacionales. Las tablas pueden tener relaciones adicionales entre sí. En el modelo relacional, cada esquema de la tabla identifica una columna llamada clave principal para identificar cada fila de forma exclusiva. Puede identificar la relación entre cada fila de la tabla y una fila de otra tabla con una clave externa. Una clave externa es una columna de una tabla que apunta a la clave principal de otra tabla. Para convertir datos de puertos relacionales en datos jerárquicos, debe definir la estructura de la asignación en función de un esquema jerárquico. Puede importar un esquema en el repositorio de modelos. Tras importar el esquema, puede ver los componentes del mismo en la Herramienta del desarrollador. Si el
71
esquema jerárquico tiene varios elementos que puede ser un elemento raíz, elija un nodo para que sea el elemento raíz. En el panel Puertos de la vista Resumen puede asignar los puertos entrada relacional a los nodos del esquema. En el lado izquierdo del panel se encuentra el área Entrada de transformación y en el lado derecho está el área Entrada de servicio. Cuando se arrastra un nodo desde un nodo de Entrada de servicio hacia un puerto de Entrada de transformación, se asigna desde un nodo de esquema a un nodo de entrada relacional. La Herramienta del desarrollador crea los puertos de entrada para asignar los datos. Puede definir grupos y puertos, y asignar nodos de los puertos de entrada a los puertos de salida. Una transformación del Procesador de datos con la entrada relacional puede contener puertos de transferencia. Puede añadir puertos de transferencia al grupo raíz de la estructura relacional.
Configuración de puertos de entrada relacionales Para asignar puertos de entrada relacionales a la salida jerárquica, seleccione un esquema para definir la salida. También debe definir los puertos de entrada relacionales. En el panel Puertos, cree y defina grupos de puertos y asigne los nodos de los nodos jerárquicos a los puertos. Para definir una asignación de entrada, seleccione el Modo del procesador de datos como Asignación de entrada o Servicio y asignación de entrada. La asignación utiliza un esquema para definir la salida. Si el esquema de salida tiene más de un elemento que pueda ser un elemento raíz, puede elegir un nodo del esquema para que sea el elemento raíz. Para definir un nodo como raíz, haga clic en Seleccionar jerarquía. La Herramienta del desarrollador solo muestra los nodos desde el nivel raíz y debajo del nivel raíz en el área Salida de transformación. Haga clic en Mostrar como jerarquía para mostrar los nodos de salida en una jerarquía. Cada grupo secundario aparece debajo del grupo primario. Cree y defina puertos de entrada relacionales mediante uno de los siguientes métodos: Arrastrar nodos a los puertos Arrastre nodos desde el área Salida de transformación al área Entrada de transformación. Si arrastra un nodo a un grupo, la herramienta Desarrollador añade un puerto al grupo. De lo contrario, crea un grupo con el puerto comprendido en él. Crear manualmente los puertos Para crear un puerto, seleccione un campo vacío en el área Entrada de transformación y haga clic en Nuevo > Campo. Si no selecciona un campo dentro de un grupo, la herramienta Desarrollador crea un grupo y añade el puerto al grupo. Crear los puertos automáticamente Haga clic en Asignación automática. Developer Tool crea grupos de entrada y añade los puertos a los grupos en función de la jerarquía de salida. Cuando arrastre nodos al área Entrada de transformación, Developer Tool actualiza el campo de ubicación con la ubicación del nodo en la jerarquía. Si crea manualmente los puertos, debe asignar un nodo al puerto. Haga clic en la columna Ubicación y seleccione un nodo de la lista. Cuando se arrastra un nodo de ocurrencia múltiple a un grupo que contiene el elemento primario, puede configurar el número de ocurrencias de elemento secundario que se van a incluir. También puede reemplazar el grupo primario con el grupo secundario de ocurrencia múltiple en la salida de transformación. Para crear un grupo relacional, arrastre un nodo de salida a una columna vacía en el área Entrada de transformación. Si arrastra un nodo secundario de ocurrencia múltiple a una columna de entrada vacía, la
72
Capítulo 4: Entrada y salida relacional
Herramienta del desarrollador le pedirá que relacione el grupo con otros grupos. Cuando se selecciona un grupo, la Herramienta del desarrollador crea claves para relacionar los grupos. También puede crear un nuevo grupo relacional haciendo clic en Nuevo > Grupo en el área Entrada de transformación. Especifique un nombre para el grupo. Configure grupos relacionados de puertos de entrada en el área Entrada de transformación. Cuando la Herramienta del desarrollador le insta a relacionar grupos de salida, añade las claves a los grupos. También puede añadir puertos manualmente para representar claves. Para ver las líneas que conectan los puertos con los nodos jerárquicos, haga clic en Mostrar líneas. Seleccione para ver todas las líneas de conexión o las líneas de los puertos seleccionados.
Directrices para vincular puertos de entrada Al utilizar el asistente para nueva transformación para generar automáticamente una transformación del Procesador de datos, Developer Tool crea puertos relacionales en función de la jerarquía del esquema .xsd y, a continuación, vincula los puertos relacionales a los nodos jerárquicos. Tenga en cuenta las siguientes reglas y directrices cuando vincule puertos de entrada relacionales con nodos de salida jerárquicos: •
Puede vincular un puerto relacional de entrada con un nodo en la jerarquía. Puede vincular desde un elemento de un nodo jerárquico con varios grupos relacionales en la entrada.
•
Vincule una clave principal desde el elemento o atributo relevantes en la jerarquía con un grupo relacional en la entrada. La clave principal identifica cada fila en las tablas relacionales.
•
Vincule una clave externa desde el elemento o atributo relevantes en la jerarquía con un grupo relacional en la entrada. Una clave externa en la entrada relacional es una columna en una tabla que apunta a la clave principal de otra tabla.
•
El puerto relacional de entrada y el nodo jerárquico deben tener tipos de datos compatibles.
•
Las claves pueden ser de tipo de cadena o de entero.
Definir puertos relacionales de entrada con la vista Resumen Para transformar datos relacionales en datos jerárquicos en la transformación del Procesador de datos, asigne nodos del grupo de puertos relacionales a los nodos jerárquicos. Utilice la vista Resumen para vincular puertos relacionales con puertos jerárquicos. Para transformar la entrada relacional en salida jerárquica, habilite la entrada relacional desde la vista Resumen. La Herramienta del desarrollador quita el puerto de entrada predeterminado de la vista. Seleccione Asignación de entrada. El panel Puertos aparece en la vista Resumen.
Entrada relacional
73
La siguiente imagen muestra el panel Puertos:
A la izquierda del panel Puertos está el área Salida de transformación, que contiene los nodos del esquema jerárquico. A la derecha está el área Entrada de transformación, que contiene los grupos y los elementos relacionales. Puede crear puertos en el área Entrada de transformación y vincular elementos relacionales con los nodos del esquema. También puede arrastrar el puntero desde un nodo del esquema hacia un campo vacío del área Entrada de transformación para crear un puerto. Cuando conecte un puerto relacional con un nodo de esquema, la Herramienta del desarrollador muestra un vínculo entre ellos.
Puertos Clustering_Key Al crear una transformación del Procesador de datos relacional a jerárquica con varios grupos en el entorno de Hive, habilite la partición de datos de entrada para asegurarse de que los datos para cada fila se procesan correctamente. El sistema de integración de datos crea particiones de las filas de entrada de acuerdo con un puerto que funciona como una clave de partición llamada Clustering_Key. Para crear particiones de datos de entrada para una transformación del Procesador de datos de una asignación, seleccione la transformación en la asignación y, en la ficha Avanzadas de la vista Propiedades, seleccione la opción de habilitar la partición. Al habilitar la partición, Developer crea un puerto Clustering_Key en la transformación del Procesador de datos para cada grupo de entrada. Cada grupo de entrada debe utilizar la misma clave externa al grupo raíz de entrada para facilitar la partición. Para ordenar los datos en función de una clave, conecte el puerto de entrada relacional de clave externa seleccionado de cada objeto de datos con el puerto Clustering_Key relevante de la transformación del Procesador de datos. El servicio de integración de datos utiliza Clustering_Key para crear una partición de los datos y procesarlos. Debe utilizar la misma clave en todos los grupos de entrada relacional. Si es necesario, puede utilizar una transformación de combinación para añadir la clave a un grupo de entrada relacional que no tenga esa clave.
74
Capítulo 4: Entrada y salida relacional
La siguiente imagen muestra una asignación con la clave externa Company_ID en los grupos de entrada relacionales vinculados a los puertos Clustering_Key en la transformación del Procesador de datos:
Entrada relacional normalizada Cuando normalice los datos de entrada relacionales en la salida jerárquica, los valores de los datos no se repiten en el grupo jerárquico. Se crea una relación exclusiva entre los niveles de jerarquía de los datos de salida jerárquicos y los grupos de entrada de puertos.
Ejemplo de entrada relacional normalizada Desea transformar la entrada relacional con un grupo que contiene los detalles de directores de varias empresas para separar las jerarquías XML. En la entrada, cada registro de director contiene los detalles de la empresa. En la salida, una jerarquía XML contiene los detalles de empresas y otra jerarquía XML contiene detalles de los directores. En la entrada relacional, los elementos Company_ID y Company_Name se repiten para cada director de la compañía: Company_ID 100 100 100
Company_Name Percy Accounting Percy Accounting Percy Accounting
Manager_ID 76500 46501 86509
Manager_Name Cindy Jacques Tom Jorry Delilah Smith
Si define la salida XML para que contenga un nivel de jerarquía principal de empresas y un nivel de jerarquía secundario de directores, podría utilizar los siguientes grupos de jerarquía: Companies Company_Key Company_ID
Entrada relacional
75
Company_Name Managers Company_Key Manager_ID Manager_Name El elemento Company_Key relaciona la jerarquía de directores con la jerarquía de empresas.
Entrada relacional pivotada Puede incluir un número específico de elementos de ocurrencia múltiple en un grupo de salida. Para pivotar elementos de ocurrencia múltiple, asigne el elemento de puerto de ocurrencia múltiple a nodos de salida específicos.
Ejemplo de entrada relacional pivotada Desea transformar la entrada relacional que contiene una tabla de números de teléfono en una jerarquía XML con elementos distintos para los diferentes tipos de números de teléfono. En la entrada relacional, el elemento Telephone_type define el tipo de número de teléfono indicados para cada persona: Telephone_Number 9173327437 9174562342 8484526471 7023847265 9174596725
Telephone_Type Móvil Móvil Domicilio Trabajo Móvil
Last_Name Sandrine Race Race Smith Smith
First_Name Jacques Tom Tom Delilah Delilah
En la jerarquía XML de salida de teléfonos, los distintos tipos de números de teléfono del grupo primario tienen elementos distintos: Telephones Telephone_Number Last_Name First_Name Work_Telephone Mobile_Telephone Home_Telephone
Entrada relacional desnormalizada Puede desnormalizar una salida jerárquica para la entrada relacional. Cuando se desnormalizan los datos de entrada, los valores de elemento del grupo primario se repiten para cada elemento secundario. Para desnormalizar datos de entrada, asigne nodos de un grupo de puertos a un nivel de jerarquía secundario. Todos los elementos se repiten en el nivel de jerarquía secundario.
Ejemplo de entrada relacional desnormalizada Desea transformar la entrada relacional con distintos grupos para los detalles de los directores y los detalles de las empresas en una jerarquía JSON que contenga detalles tanto de los directores como de las empresas.
76
Capítulo 4: Entrada y salida relacional
El elemento Company_Name no aparece en el grupo con los detalles de los directores. El elemento Company_ID es la clave externa del primer grupo relacional. Company_ID 100 100 100
Manager_ID 56673 23501 44509
Manager_Name Kathy Jason Jackie Lyons Bob Terrence
El segundo grupo relacional contiene los detalles de las empresas. Company_ID 100 102 410
Company_Name Percy Accounting Sandy Auto Sales Movers Inc.
El elemento Managers de la salida de JSON contiene tanto el elemento Company_ID como el elemento Company_Name: Managers Company_ID Company_Name Manager_ID Manager_Name Los elementos Company_ID y Company_Name se repiten por cada director del departamento.
Asignación de puertos relacionales a nodos jerárquicos En el panel Puertos, defina grupos de puertos y asigne los nodos desde el esquema jerárquico a los puertos. 1.
Para añadir un esquema, en la vista Referencias, haga clic en Añadir. Busque y seleccione un esquema.
2.
Para crear una asignación de entrada, en la vista Resumen, en el área General, seleccione Asignación de entrada para el modo del Procesador de datos.
3.
En el área Puertos seleccione Asignación de entrada.
4.
Seleccione un nodo como raíz.
5.
Para definir automáticamente una asignación, haga clic en Asignación automática. Para definir manualmente una asignación, puede definir una clave principal para el grupo de entrada raíz y después definir grupos y puertos.
6.
Para añadir un grupo o un puerto de entrada al área Entrada de transformación, utilice uno de los siguientes métodos:
7.
•
Arrastre un nodo de grupo jerárquico o un nodo secundario del área Salida de transformación a una columna vacía en el área Entrada de transformación. Si el nodo es un nodo de grupo, la Herramienta del desarrollador agrega un grupo sin puertos.
•
Para añadir un grupo relacional, seleccione una fila y haga clic con el botón derecho para seleccionar Nuevo > Grupo.
•
Para añadir un puerto relacional, haga clic con el botón derecho para seleccionar Nuevo > Campo.
Para asignar nodos como clave principal, utilice uno de los siguientes métodos: •
Seleccione dos o más nodos de la jerarquía y arrástrelos a una clave en el área Entrada de transformación.
•
Haga clic en la columna Ubicación de una clave en el área Salida de transformación y, a continuación, seleccione el puerto de entrada relacional en el área Entrada de transformación.
Entrada relacional
77
8.
Para borrar la configuración de nodos jerárquica para las ubicaciones de puertos, utilice uno de los siguientes métodos: •
Seleccione uno o varios nodos en el área Salida de transformación, haga clic con el botón derecho y seleccione Borrar.
•
Seleccione una o más líneas que conecten los puertos de entrada relacional con los nodos jerárquicos en el área Salida de transformación, haga clic con el botón derecho y seleccione Eliminar.
Salida relacional Cuando configure la salida relacional, puede configurar un grupo de salida independiente para cada nodo de entrada de varias ocurrencias. También puede crear grupos que contengan datos desnormalizados. Puede pivotar elementos de varias ocurrencias y limitar el número de ocurrencias en un grupo de salida.
Configuración del puerto de salida relacional Para transformar la entrada jerárquica en una salida relacional, seleccione un esquema para definir los datos jerárquicos. También debe definir los puertos de salida relacionales. En el panel Puertos, defina grupos de puertos y asigne los nodos desde el esquema jerárquico a los puertos. Para definir una asignación de entrada o salida, seleccione el Modo del procesador de datos como Asignación de salida o Servicio y asignación de salida. La asignación utiliza un esquema para definir la entrada jerárquica. Si el esquema tiene más de un elemento que puede ser un elemento raíz, elija un nodo para que sea el elemento raíz. Para definir un nodo como raíz, haga clic en Seleccionar jerarquía. La Herramienta del desarrollador solo muestra los nodos desde el nivel raíz y debajo del nivel raíz en el área Entrada de transformación. Haga clic en Mostrar como jerarquía para mostrar los puertos de salida de la jerarquía. Cada grupo secundario aparece debajo del grupo primario. Cree puertos con uno de los siguientes métodos: Arrastrar nodos a los puertos Arrastre nodos desde el área Entrada de transformación al área Salida de transformación. Si arrastra un nodo a un grupo, la herramienta Desarrollador añade un puerto al grupo. De lo contrario, crea un grupo con el puerto comprendido en él. Crear manualmente los puertos Para crear un puerto, seleccione un campo vacío en el área Salida de transformación y haga clic en Nuevo > Campo. Si no selecciona un campo dentro de un grupo, la herramienta Desarrollador crea un grupo y añade el puerto al grupo. Cuando arrastre nodos al área Salida de transformación, Developer Tool actualiza el campo de ubicación con la ubicación del nodo en la jerarquía Si crea manualmente los puertos, debe asignar un nodo al puerto. Haga clic en la columna Ubicación y seleccione un nodo de la lista. Cuando se arrastra un nodo de ocurrencia múltiple a un grupo que contiene el elemento primario, puede configurar el número de ocurrencias de elemento secundario que se van a incluir. También puede reemplazar el grupo primario con el grupo secundario de ocurrencia múltiple en la salida de transformación.
78
Capítulo 4: Entrada y salida relacional
Para crear un grupo, arrastre un nodo a una columna vacía en el área Salida de transformación. Si arrastra un nodo secundario de ocurrencia múltiple a una columna de entrada o de salida vacía, la Herramienta del desarrollador le pedirá que relacione el grupo con otros grupos de salida. Cuando se selecciona un grupo, la Herramienta del desarrollador crea claves para relacionar los grupos. También puede crear un grupo nuevo haciendo clic en Nuevo > Grupo. Especifique un nombre para el grupo. Configure grupos relacionados de puertos de salida en el área Salida de transformación. Cuando la Herramienta del desarrollador le insta a relacionar grupos de salida, añade las claves a los grupos. También puede añadir puertos manualmente para representar claves. Para ver las líneas que conectan los puertos con los nodos jerárquicos, haga clic en Mostrar líneas. Seleccione para ver todas las líneas de conexión o solo las líneas de los puertos seleccionados.
Definir puertos relacionales de entrada con la vista Resumen Para convertir datos jerárquicos en la salida relacional en la transformación del Procesador de datos, vincule nodos jerárquicos a puertos relacionales. Utilice la vista Resumen para vincular puertos relacionales con puertos jerárquicos. Puede crear grupos de puertos de salida vinculando nodos de la salida jerárquica con grupos de puertos. Para devolver grupos de puertos relacionales, habilite la salida relacional desde la vista Resumen. La herramienta Desarrollador elimina el puerto de salida predeterminado en la vista. Seleccione Asignación de salida. El panel Puertos aparece en el panel Resumen. La siguiente imagen muestra el panel Puertos:
El área Entrada de transformación, que muestra el esquema de salida, está a la izquierda. El área Salida de transformación, que muestra los puertos de salida relacionales, está a la derecha. Defina los puertos de salida relacional en el área Salida de transformación y vincule nodos del esquema con los puertos. También puede arrastrar el puntero desde un nodo del esquema hacia un campo vacío del área Salida de transformación para crear un puerto. Cuando se arrastra un nodo desde el esquema de salida hacia un puerto, la Herramienta del desarrollador muestra un vínculo entre ellos.
Salida relacional
79
Salida relacional normalizada Cuando se crean datos de salida normalizados, los valores de los datos no se repiten en un grupo de salida. Se crea una relación exclusiva entre los niveles de jerarquía de los datos jerárquicos de entrada y los grupos de salida de puertos.
Ejemplo de salida relacional normalizada Desea transformar una jerarquía JSON que define los detalles de departamentos y empleados en la salida relacional con grupos distintos para los detalles de departamentos y empleados. La entrada de JSON contiene una jerarquía de personal con elementos que contienen detalles de empleados y departamentos. Staff Department_ID Department_Name Employee_ID Employee_Name Puede crear los siguientes grupos de puertos relacionales: Department_Key 100 100 100 Department_Key 100 102 410
Employee_ID 2673 1501 4309 Department_ID 1982 3297 8276
Employee_Name Jason Stuart Lila Rose Sarah Jacobs Department_Name Contabilidad Ventas Logística
Department_Key es una clave generada que relaciona el grupo Empleados con un grupo Departamento en la salida.
Salida relacional pivotada Puede incluir un número específico de elementos de ocurrencia múltiple en un grupo de salida. Para pivotar elementos de ocurrencia múltiple, asigne el elemento secundario de ocurrencia múltiple al grupo primario de los puertos de salida. La Herramienta del desarrollador le insta a definir el número de elementos secundarios que incluir en el primario.
Ejemplo de salida relacional pivotada Desea transformar una jerarquía XML que contiene los detalles de empleados con varios ID en un grupo de salida relacional con elementos de salida distintos para los ID de empleados. El siguiente ejemplo muestra dos instancias de Employee_ID en el grupo de salida relacional Departamentos: Departments Department_ID Department_Name Employee_ID1 Employee_ID2
80
Capítulo 4: Entrada y salida relacional
Salida relacional desnormalizada Se puede desnormalizar una salida relacional. Cuando se desnormalizan los datos de salida, los valores de elemento del grupo primario se repiten para cada elemento secundario. Para desnormalizar datos de salida, vincule nodos del nivel de jerarquía primario con el grupo secundario de los puertos de salida.
Ejemplo de salida relacional desnormalizada Desea transformar una jerarquía XML con distintos grupos para los detalles de los empleados y los detalles de los departamentos en un grupo relacional que contenga detalles tanto de los empleados como de los departamentos. Las jerarquías XML separan los detalles de los departamentos de los detalles de los empleados: Department Department_ID Department_Name Employees Department_ID Employee_ID Employee_Name El siguiente ejemplo muestra Department_ID y Department_Name en el grupo de salida Empleados: Department_ID 100 100 100
Department_Name Contabilidad Contabilidad Contabilidad
Employee_ID 56500 56501 56509
Employee_Name Kathy Jones Tom Lyons Bob Smith
Los elementos Department_ID y Department_Name se repiten para cada empleado del departamento.
Salida relacional
81
CAPÍTULO 5
XMap Este capítulo incluye los siguientes temas: •
Resumen de XMap, 82
•
Esquemas de XMap, 83
•
Instrucciones de asignación, 84
•
Expresiones de XPath, 101
•
Variables de XMap, 109
•
Ejemplo de XMap, 109
Resumen de XMap Un XMap es un objeto de transformación del Procesador de datos que cambia un documento de entrada jerárquico en otro documento jerárquico por una estructura de jerarquía diferente. Un XMap utiliza esquemas de entrada y salida para definir la jerarquía de documentos de entrada y salida esperada. Utilice el editor de XMap para definir y administrar las instrucciones de asignación. El editor de XMap contiene la jerarquía de esquema de entrada y la jerarquía de esquema de salida. Las instrucciones de asignación vinculan elementos de esquema de entrada con elementos de esquema de salida. Un XMap puede transformar cualquier documento jerárquico de entrada cuyos elementos coincidan con la jerarquía de esquema de entrada en un documento de salida con la jerarquía del esquema de salida. Por ejemplo, un XMap puede transformar facturas de clientes en una lista de pedidos de clientes filtrada por meses. La entrada es un documento JSON que contiene una jerarquía de elementos de clientes. La salida es un documento XML que contiene una jerarquía de elementos de meses. El documento XML de salida agrupa los pedidos de clientes por mes e incluye información de contacto y cantidades totales de pedidos.
82
La siguiente imagen muestra el editor de XMap.
1. El editor de XMap contiene esquemas jerárquicos de entrada y salida. Arrastre y suelte entre los elementos de esquema para crear instrucciones de asignación. 2. La malla del editor de XMap muestra instrucciones de asignación. Utilice la malla para administrar y editar las instrucciones de asignación.
Un XMap utiliza las instrucciones de asignación para definir cómo transformar un elemento de esquema de entrada en un elemento de esquema de salida. Puede arrastrar desde un nodo del esquema de entrada a un nodo del esquema de salida para crear un vínculo. Los vínculos que cree son instrucciones de asignación. El editor de XMap muestra la instrucción de asignación en la malla. Puede editar las instrucciones de asignación en la malla. Puede definir condiciones para transformar y filtrar los datos con distintos tipos de instrucciones de asignación y expresiones de XPath. XPath es un lenguaje de consulta utilizado para seleccionar nodos en un documento jerárquico y realizar cálculos. Puede utilizar expresiones de XPath para definir el contexto para una instrucción de asignación. También puede añadir varias operaciones aritméticas a una instrucción de asignación con expresiones de XPath.
Esquemas de XMap Un XMap requiere esquemas jerárquicos que definen las jerarquías jerárquicas de entrada y salida. Un XMap utiliza esquemas jerárquicos de entrada y salida para determinar qué tipo de datos se espera en el documento de origen de entrada y en el documento de salida. Puede vincular nodos de esquema de entrada y salida para crear instrucciones de asignación. Un elemento de esquema es el bloque de construcción básico de una instrucción de asignación. Cuando se define una instrucción de asignación, puede que desee usar una serie de elementos de esquema de entrada en la instrucción o añadir una variable. Puede cambiar la raíz de entrada y salida, añadir variables y personalizar la vista del esquema, pero no se puede editar el esquema. Puede utilizar las siguientes opciones para administrar los esquemas y buscar elementos: Personalizar vista Cambia la forma en que el esquema aparece para poder buscar rápidamente elementos relevantes. Puede buscar una secuencia de nodos, todos los nodos o una selección de nodos. Ver estos nodos para conocer la lógica del esquema. Esta vista no afecta a la asignación.
Esquemas de XMap
83
Buscar Busca elementos en el esquema. Puede buscar en los esquemas de entrada y salida por separado. Variables Define las variables para almacenar los datos. Puede asignar nodos a las variables y variables a los nodos. También puede asignar variables a variables. Cuando se crea una variable, esta aparece al final de ambos esquemas. Seleccionar la raíz de entrada o salida Cambia el elemento raíz en el esquema de entrada o salida. Puede cambiar el elemento raíz para hacer referencia a otra parte del esquema. Seleccionar el origen de ejemplo Define el archivo de origen de ejemplo. Utilice un origen de ejemplo para probar la transformación y para probar las expresiones XPath.
Instrucciones de asignación Una instrucción de asignación determina cómo asignar datos desde el documento jerárquico de entrada al documento jerárquico de salida. Cuando se arrastra un nodo desde el esquema de entrada al esquema de salida, el editor de XMap crea instrucciones de asignación en la malla. Puede utilizar la malla para crear instrucciones de asignación detalladas o simples. Puede arrastrar elementos desde los esquemas de entrada o salida a campos de la malla para incluirlos en instrucciones de asignación. Puede comprobar el elemento al que hace referencia una instrucción de asignación. Al hacer clic en una instrucción de asignación en la malla, el editor de XMap resalta los nodos de los esquemas. Añada expresiones de XPath para determinar el contexto o añadir cálculos a una instrucción de asignación. Cuando una expresión de XPath identifica el contexto para una instrucción de asignación, la transformación del Procesador de datos ejecuta la instrucción de asignación para cada ocurrencia del elemento de entrada o expresión del documento de entrada. Anide instrucciones de asignación para que dependan de otras instrucciones de asignación. Una instrucción de asignación puede ser principal para un grupo de instrucciones secundarias. Cada vez que la transformación del Procesador de datos ejecuta la instrucción principal, también ejecuta las instrucciones secundarias. Las instrucciones secundarias aparecen indexadas desde el primario en el editor de XMap.
Tipos de instrucción de asignación Los tipos de instrucciones de asignación definen la lógica de asignación de XMap. Defina el tipo de instrucción de asignación según si desea asignar un valor de entrada simple a un valor de salida, repetir un elemento o realizar la asignación en base a una condición. Cree una instrucción arrastrando un elemento de esquema de entrada a un elemento de esquema de salida o añadiendo una instrucción de asignación a la malla. Cuando se crea una instrucción, la transformación del Procesador de datos identifica un tipo de instrucción de asignación según si el elemento es un elemento simple, un elemento complejo o un elemento que se repite. El tipo de instrucción de asignación básico es una instrucción Asignar, que asigna un valor de entrada simple a un valor de salida simple. Otras instrucciones de asignación identifican condiciones o alternativas para asignar la lógica de asignación o agrupar un conjunto de instrucciones lógicas.
84
Capítulo 5: XMap
Puede definir los siguientes tipos de instrucciones de asignación en la malla: Asignar Asigna un elemento de entrada simple a un elemento de salida simple. Una instrucción Asignar es el bloque de construcción básico del XMap. Grupo Un grupo lógico de instrucciones. En la instrucción de grupo se anidan otros tipos de instrucciones de asignación. Grupo de repetición Una instrucción de grupo que la transformación del Procesador de datos ejecuta cada vez que el elemento de entrada aparece en el documento de entrada. El grupo de repetición contiene instrucciones Asignar que se repiten. El grupo de repetición identifica el elemento utilizado para repetir el grupo. Enrutador Contiene un grupo de instrucciones de opción y selecciona solo la instrucción de opción cuyos criterios de condición coinciden con la entrada. Si no se aplica ninguna de las opciones, se realiza una acción predeterminada si hay una instrucción predeterminada. Si no se aplica ninguna de las opciones y no hay ninguna instrucción predeterminada, el enrutador genera un error. Opción Bajo la instrucción de enrutador se anidan una o varias instrucciones de opción. La instrucción de opción es similar a una instrucción de grupo y contiene un grupo lógico de instrucciones. La instrucción de opción define una condición para asignar el elemento de entrada al elemento de salida. Predeterminada Una instrucción predeterminada se puede anidar en la instrucción de enrutador. La instrucción predeterminada se ejecuta cuando no se aplica ninguna de las instrucciones de opción. Si todas las instrucciones de opción generan un error y no hay ninguna instrucción predeterminada, el enrutador genera un error. Ejecutar XMap Llama a otro objeto de XMap en la transformación del Procesador de datos. RunMapplet Llama a un mapplet de la transformación del Procesador de datos. MappletInput En la instrucción RunMapplet se pueden anidar una o varias instrucciones MappletInput. Los valores se asignan a los puertos de entrada del mapplet en el mismo orden en el que aparecen en las instrucciones MappletInput. MappletOutput En la instrucción RunMapplet se pueden anidar una o varias instrucciones MappletOutput. Los valores de los puertos de salida del mapplet se asignan a la instrucción MappletOutput en el mismo orden en el que aparecen en los puertos del mapplet. Las instrucciones de asignación contienen campos que puede configurar para personalizar la instrucción. Puede configurar la entrada, salida y una condición para asignar un elemento de entrada a un elemento de salida. Configure si desea omitir una instrucción de asignación cuando genere un error o no haya ninguna entrada. Configure si la transformación del Procesador de datos añade un nuevo elemento de salida o coincide con un elemento existente con un valor de una instrucción de asignación.
Instrucciones de asignación
85
Instrucciones Asignar Una instrucción Asignar es el bloque de construcción básico de un objeto de XMap y asigna un valor de entrada simple a un valor de salida simple. La entrada debe ser un valor único o un valor constante. Debe definir la entrada y salida en una instrucción Asignar. Al arrastrar y soltar un elemento entre un nodo de esquema de entrada simple que no se repite y un nodo de esquema de salida simple que no se repite, se crea automáticamente una instrucción Asignar. Una instrucción de grupo, de grupo de repetición, de opción o predeterminada puede contener una o varias instrucciones secundarias Asignar.
Propiedades de instrucción Asignar Una instrucción Asignar contiene propiedades que puede configurar para personalizar la instrucción. Puede configurar la entrada, salida y una condición para asignar un elemento de entrada a un elemento de salida. Una instrucción Asignar tiene las siguientes propiedades: Condición Opcional. Una expresión de XPath que define una condición para la asignación del elemento. Una condición es similar a una expresión de predicado en la columna Entrada. Si define una expresión de XPath de entrada y una expresión de XPath de condición para la misma instrucción de asignación, la transformación del Procesador de datos aplica la XPath de condición al resultado de la XPath de entrada. Predeterminado Opcional. El valor predeterminado que se usa cuando falta un elemento en la entrada. Por ejemplo, puede definir un valor predeterminado para inicializar un contador. Entrada Obligatorio. Una expresión de XPath que define el elemento de entrada. La expresión puede dar como resultado un nodo o valor. Modo Obligatorio. Determina si la transformación del Procesador de datos añade un elemento de salida o hace coincidir un elemento existente con un valor de una instrucción de asignación. Especifique una de las siguientes opciones: •
Añadir. Crea un elemento en el documento jerárquico de salida. Si el elemento no es de ocurrencia múltiple y existen los mismos valores en la salida, la instrucción de asignación genera un error.
•
Coincidir. La instrucción espera encontrar una coincidencia para el elemento en los elementos de salida. La instrucción genera un error si el elemento no existe en el documento jerárquico de salida.
•
Coincidir o añadir. Si existe un elemento coincidente en el documento jerárquico de salida, la transformación del Procesador de datos no añade un elemento de salida. Si el elemento no existe en el documento jerárquico de salida, la transformación crea un elemento de salida.
Nombre Opcional. Un nombre para la instrucción. Puede cambiar el nombre en cualquier momento. El nombre identifica las instrucciones para que pueda encontrarlas en la malla de asignación o en un registro de eventos. Los nombres de las instrucciones no tienen que ser únicos.
86
Capítulo 5: XMap
En fallo Obligatorio. Determina la acción que se realiza si la instrucción genera un error. Especifique una de las siguientes opciones: •
Omitir. Si la instrucción falla, se omite la instrucción.
•
Propagar. Si la instrucción falla, se obliga a que la instrucción principal también genere un error.
Salida Obligatorio. Una expresión de XPath que define el valor del elemento en la jerarquía de salida según los resultados de la expresión de XPath de entrada. Omitir la entrada que falta Opcional. Determina si omitir la instrucción si no hay ninguna coincidencia para el valor de entrada. Especifique una de las siguientes opciones: •
Habilitada. Si el elemento no está en el documento jerárquico de entrada, la transformación del Procesador de datos omite la instrucción sin mostrar errores.
•
Deshabilitadas. La instrucción genera un error cuando el elemento no está en el documento jerárquico de entrada.
Tipo de instrucción Obligatorio. Identifica la instrucción como una instrucción Asignar.
Instrucciones de grupo Una instrucción de grupo contiene un grupo lógico de instrucciones. Una instrucción de grupo principal contiene instrucciones secundarias. Las instrucciones secundarias se anidan bajo la instrucción de grupo en la malla del editor de XMap. Puede utilizar una instrucción de grupo para proporcionar un contexto o condición comunes para éxito o error a un grupo de instrucciones. Puede utilizar una instrucción de asignación de grupo si desea que todo un conjunto de instrucciones se complete con éxito o genere errores. Puede utilizar una instrucción de asignación de grupo para agrupar un conjunto de instrucciones para organizar y simplificar una malla de XMap. Cuando se vincula un elemento complejo de ocurrencia individual con un elemento complejo de ocurrencia individual o múltiple, el editor de XMap crea una instrucción de grupo. El valor Max. Occurs de un elemento de ocurrencia individual es 1.
Ejemplo de instrucción de grupo Desea realizar una asignación de un documento jerárquico de entrada con datos de empleado administrador a un documento jerárquico de salida con datos de trabajador. Solo hay un administrador, por lo que el elemento de empleado de entrada es de ocurrencia individual. Se utiliza una instrucción de asignación de grupo cuando un elemento es complejo y es de ocurrencia individual. El esquema tiene un elemento Employee que es de ocurrencia individual. Employee tiene los elementos secundarios FirstName y LastName: Employee FirstName LastName Cree una instrucción de asignación de grupo y configure Employee como entrada. Cada instrucción de asignación que se incluya en el grupo se encuentra en el contexto de Employee. En la siguiente ilustración, la instrucción 1 es la instrucción de grupo:
Instrucciones de asignación
87
La columna Entrada para la instrucción de grupo muestra que la entrada es el elemento principal de FirstName y LastName. La instrucción 2 y la instrucción 3 son instrucciones secundarias de la instrucción 1. El elemento secundario instrucciones aparece sangrado desde la instrucción principal. Para cada elemento de empleado de entrada, asigne el elemento FirstName y LastName para la salida.
Propiedades de la instrucción de grupo La instrucción de grupo contiene propiedades que puede configurar para personalizar la instrucción. Puede configurar la entrada, salida y una condición para asignar un elemento de entrada a un elemento de salida. La instrucción de grupo tiene las siguientes propiedades: Condición Opcional. Una expresión de XPath que define la condición de entrada para la instrucción de grupo y todas sus instrucciones secundarias. Una condición es similar a una expresión de predicado en la columna Entrada. Si define una expresión de XPath de entrada y una expresión de XPath de condición para la misma instrucción de asignación, la transformación del Procesador de datos aplica la XPath de condición al resultado de la XPath de entrada. Entrada Opcional. Una expresión de XPath que da como resultado cero o un elemento o valor. Si se deja vacía, la instrucción utiliza el contexto actual. Si la expresión da como resultado más de un valor, se utiliza el primero. Modo Obligatorio. Determina si la transformación del Procesador de datos añade un elemento de salida o hace coincidir un elemento existente con un valor de una instrucción de asignación. Especifique una de las siguientes opciones: •
Añadir. Crea un elemento en el documento jerárquico de salida. Si el elemento no es de ocurrencia múltiple y existen los mismos valores en la salida, la instrucción de asignación genera un error.
•
Coincidir. La instrucción espera encontrar una coincidencia para el elemento en los elementos de salida. La instrucción genera un error si el elemento no existe en el documento jerárquico de salida.
•
Coincidir o añadir. Si existe un elemento coincidente en el documento jerárquico de salida, la transformación del Procesador de datos no añade un elemento de salida. Si el elemento no existe en el documento jerárquico de salida, la transformación crea un elemento de salida.
Nombre Opcional. Un nombre para la instrucción. Puede cambiar el nombre en cualquier momento. El nombre identifica las instrucciones para que pueda encontrarlas en la malla de asignación o en un registro de eventos. Los nombres de las instrucciones no tienen que ser únicos. En fallo Opcional. Determina la acción que se realiza si la instrucción genera un error. Especifique una de las siguientes opciones:
88
•
Omitir. Si la instrucción falla, se omite la instrucción.
•
Propagar. Si la instrucción falla, se obliga a que la instrucción principal también genere un error.
Capítulo 5: XMap
Salida Opcional. Una expresión de XPath que define el valor del elemento en la jerarquía de salida según los resultados de la expresión de XPath de entrada. Si se deja vacía, la instrucción utiliza el contexto actual. Omitir la entrada que falta Opcional. Determina si omitir la instrucción si no hay ninguna coincidencia para el valor de entrada. Especifique una de las siguientes opciones: •
Habilitada. Si el elemento no está en el documento jerárquico de entrada, la transformación del Procesador de datos omite la instrucción sin mostrar errores.
•
Deshabilitadas. La instrucción genera un error cuando el elemento no está en el documento jerárquico de entrada.
Tipo de instrucción Obligatorio. Identifica la instrucción como una instrucción de grupo.
Instrucciones de grupo de repetición Una instrucción de grupo de repetición es una instrucción de grupo que puede aparecer varias veces. La entrada es una expresión XPath que puede evaluarse en una secuencia de elementos o valores. La transformación del Procesador de datos lleva a cabo la instrucción de grupo de repetición para cada elemento o el valor que es resultado de la expresión de XPath de entrada. Cuando se vincula un elemento de esquema de entrada de repetición y un elemento de esquema de salida de repetición, el editor de XMap crea una instrucción de grupo de repetición en la malla. Un elemento se repite si el valor max Occurs del elemento es superior a 1.
Ejemplo de instrucción de grupo de repetición Un esquema de entrada tiene la siguiente jerarquía: Employees Employee (Unbounded) LastName FirstName Cuando se arrastra Empleado a un elemento de salida en el editor de XMap, la herramienta del desarrollador crea una instrucción de asignación de grupo de repetición de forma predeterminada. Un grupo de repetición puede contener instrucciones de asignación para devolver LastName y FirstName para cada empleado del documento jerárquico de entrada.
Propiedades de la instrucción de grupo de repetición La instrucción de grupo de repetición contiene propiedades que puede configurar para personalizar la instrucción. Puede configurar la entrada, salida y una condición para asignar un elemento de entrada a un elemento de salida. La instrucción de grupo de repetición tiene las siguientes propiedades: Condición Opcional. Una expresión de XPath que define una condición para la asignación del elemento. Una condición es similar a una expresión de predicado en la columna Entrada. Si define una expresión de XPath de entrada y una expresión de XPath de condición para la misma instrucción de asignación, la transformación del Procesador de datos aplica la XPath de condición al resultado de la XPath de entrada.
Instrucciones de asignación
89
Entrada Obligatorio. Una expresión de XPath que evalúa una secuencia de nodos o valores. Modo Obligatorio. Determina si la transformación del Procesador de datos añade un elemento de salida o hace coincidir un elemento existente con un valor de una instrucción de asignación. Especifique una de las siguientes opciones: •
Añadir. Crea un elemento en el documento jerárquico de salida. Si el elemento no es de ocurrencia múltiple y existen los mismos valores en la salida, la instrucción de asignación genera un error.
•
Coincidir. La instrucción espera encontrar una coincidencia para el elemento en los elementos de salida. La instrucción genera un error si el elemento no existe en el documento jerárquico de salida.
•
Coincidir o añadir. Si existe un elemento coincidente en el documento jerárquico de salida, la transformación del Procesador de datos no añade un elemento de salida. Si el elemento no existe en el documento jerárquico de salida, la transformación crea un elemento de salida.
Nombre Opcional. Un nombre para la instrucción. Puede cambiar el nombre en cualquier momento. El nombre identifica las instrucciones para que pueda encontrarlas en la malla de asignación o en un registro de eventos. Los nombres de las instrucciones no tienen que ser únicos. En fallo Opcional. Determina la acción que se realiza si la instrucción genera un error. Especifique una de las siguientes opciones: •
Omitir iteración. Si una instrucción anidada en el grupo de repetición genera un error y su propiedad En fallo está establecida en Propagar, se omitirá la iteración actual del grupo de repetición.
•
Propagar. Si la instrucción falla, se obliga a que la instrucción principal también genere un error.
Salida Opcional. Una expresión de XPath que define el valor del nodo en la jerarquía de salida según los resultados de la expresión de XPath de entrada. Omitir la entrada que falta Opcional. Determina si omitir la instrucción si no hay ninguna coincidencia para el valor de entrada. Especifique una de las siguientes opciones: •
Habilitada. Si el elemento no está en el documento jerárquico de entrada, la transformación del Procesador de datos omite la instrucción sin mostrar errores.
•
Deshabilitadas. La instrucción genera un error cuando el elemento no está en el documento jerárquico de entrada.
Tipo de instrucción Obligatorio. Identifica la instrucción como una instrucción de grupo de repetición.
Instrucciones de enrutador Una instrucción de enrutador proporciona alternativas para la lógica de asignación basadas en condiciones del documento de entrada. La instrucción de enrutador contiene una o más instrucciones de opción y puede contener una instrucción predeterminada. Cuando la transformación del Procesador de datos realiza una instrucción de enrutador, comprueba cada opción anidada debajo de la instrucción de enrutador.
90
Capítulo 5: XMap
Se ejecutará la primera instrucción de opción que coincida. La opción de la instrucción puede contener una o más instrucciones secundarias de cualquier tipo. Si no hay ninguna instrucción de opción que coincida, se ejecutará la instrucción predeterminada. Si no hay ninguna instrucción predeterminada, la instrucción de enrutador genera un error. Puede configurar varias instrucciones Opción en el mismo grupo de enrutadores. La transformación Procesador de datos lleva a cabo la primera instrucción Opción que acepta. La transformación del Procesador de datos no ejecuta ninguna instrucción de opción por debajo de ella en el grupo. Cuando la transformación del Procesador de datos no acepta una instrucción Opción, comprueba la siguiente instrucción Opción. Cuando la transformación no acepta ninguna instrucción de opción y no hay ninguna instrucción predeterminada, la instrucción de enrutador genera un error. Si la instrucción de opción tiene una condición que es verdadera, pero las instrucciones de asignación dentro de ella fallan y propagan el fallo, el enrutador falla. Puede configurar la asignación para omitir el enrutador si este falla. Si un enrutador no contiene ninguna instrucción de opción, pero sí contiene una instrucción predeterminada, la instrucción predeterminada siempre se ejecutará.
Ejemplo de instrucción de enrutador Un XMap contiene un grupo de repetición en el contexto de Empleado. La primera instrucción secundario del grupo es una instrucción de Enrutador. La instrucción de enrutador tiene una instrucción de opción. La instrucción de opción contiene una condición que comprueba si el valor de Función es igual al valor de Manager. Si la función es igual a Manager, la instrucción de opción se cumple. La asignación evalúa la instrucción Ejecutar XMap anidada bajo la instrucción de opción. La transformación Procesador de datos llama al XMap EmployeeToWorker para asignar elementos a Manager. Si la Función no es igual a Manager, la instrucción predeterminada es verdadera. La asignación evalúa la siguiente instrucción para la opción predeterminada. La instrucción de asignación predeterminada llama al XMap EmployeeToWorker XMap para asignar los elementos a Worker. La siguiente figura muestra la instrucción de Enrutador con una instrucción Opción y una instrucción predeterminada:
Propiedades de instrucción de enrutador La instrucción de enrutador contiene propiedades que puede configurar para personalizar la instrucción. Puede configurar la entrada, salida y una condición para asignar un elemento de entrada a un elemento de salida. La instrucción de enrutador tiene las siguientes propiedades: Condición Opcional. Una expresión de XPath que define una condición para la asignación del elemento. Una condición es similar a una expresión de predicado en la columna Entrada. Si define una expresión de XPath de entrada y una expresión de XPath de condición para la misma instrucción de asignación, la transformación del Procesador de datos aplica la XPath de condición al resultado de la XPath de entrada.
Instrucciones de asignación
91
Predeterminado Obligatorio. El valor predeterminado que se usa cuando falta un elemento en la entrada. Por ejemplo, puede definir un valor predeterminado para inicializar un contador. Entrada Obligatorio. Una expresión XPath que evalúa una secuencia de nodos o valores. Modo Obligatorio. Determina si la transformación del Procesador de datos añade un elemento de salida o hace coincidir un elemento existente con un valor de una instrucción de asignación. Especifique una de las siguientes opciones: •
Añadir. Crea un elemento en el documento jerárquico de salida. Si el elemento no es de ocurrencia múltiple y existen los mismos valores en la salida, la instrucción de asignación genera un error.
•
Coincidir. La instrucción espera encontrar una coincidencia para el elemento en los elementos de salida. La instrucción genera un error si el elemento no existe en el documento jerárquico de salida.
•
Coincidir o añadir. Si existe un elemento coincidente en el documento jerárquico de salida, la transformación del Procesador de datos no añade un elemento de salida. Si el elemento no existe en el documento jerárquico de salida, la transformación crea un elemento de salida.
Nombre Opcional. Un nombre para la instrucción. Puede cambiar el nombre en cualquier momento. El nombre identifica las instrucciones para que pueda encontrarlas en la malla de asignación o en un registro de eventos. Los nombres de las instrucciones no tienen que ser únicos. En fallo Opcional. Determina la acción que se realiza si la instrucción genera un error. Especifique una de las siguientes opciones: •
Omitir. Si la instrucción falla, se omite la instrucción.
•
Propagar. Si la instrucción falla, se obliga a que la instrucción principal también genere un error.
Salida Obligatorio. Una expresión de XPath que define el valor del elemento en la jerarquía de salida según los resultados de la expresión de XPath de entrada. El campo Salida proporciona el contexto para las instrucciones secundarias. Tipo de instrucción Obligatorio. Identifica la instrucción como una instrucción de enrutador.
Instrucciones de opción La instrucción de opción que proporciona la condición para asignar el nodo de entrada al nodo de salida. Una instrucción Opción debe estar anidada debajo de una instrucción Enrutador. La instrucción de enrutador debe tener una expresión de XPath de entrada o una expresión de XPath de condición. También es posible que la instrucción de opción incluya una expresión de XPath de entrada o una expresión de XPath de condición. La transformación del Procesador de datos acepta una instrucción de opción cuando los resultados de la expresión de campo de entrada y una expresión de campo de condición se evalúan en un único nodo. Si no define una expresión de campo de entrada, la transformación del Procesador de datos acepta la instrucción de opción cuando la expresión del campo de condición es verdadera.
92
Capítulo 5: XMap
La instrucción de opción puede contener una o varias instrucciones secundarias de cualquier tipo, incluidos Asignar, Grupo, Grupo de repetición, Ejecutar XMap y otras instrucciones de Enrutador. Por ejemplo, una instrucción de opción puede contener la siguiente condición: EmployeeID="100" Cuando EmployeeID es 100, la condición es verdadera. La instrucción secundaria en la malla define la instrucción de asignación que hay que evaluar cuando la condición es verdadera.
Propiedades de la instrucción de opción La instrucción de opción contiene propiedades que puede configurar para personalizar la instrucción. Puede configurar la entrada, salida y una condición para asignar un elemento de entrada a un elemento de salida. La instrucción de opción tiene las siguientes propiedades: Condición Obligatoria si no se define la entrada. Una expresión de XPath que define una condición para la asignación del elemento. Una condición es similar a una expresión de predicado en la columna Entrada. La transformación del Procesador de datos aplica el XPath de condición al resultado del XPath de entrada. Entrada Obligatoria si no se define la condición. Una expresión de XPath que define el elemento de entrada. La expresión puede dar como resultado un nodo o valor. Modo Opcional. Determina si la transformación del Procesador de datos añade un elemento de salida o hace coincidir un elemento existente con un valor de una instrucción de asignación. Especifique una de las siguientes opciones: •
Añadir. Crea un elemento en el documento jerárquico de salida. Si el elemento no es de ocurrencia múltiple y existen los mismos valores en la salida, la instrucción de asignación genera un error.
•
Coincidir. La instrucción espera encontrar una coincidencia para el elemento en los elementos de salida. La instrucción genera un error si el elemento no existe en el documento jerárquico de salida.
•
Coincidir o añadir. Si existe un elemento coincidente en el documento jerárquico de salida, la transformación del Procesador de datos no añade un elemento de salida. Si el elemento no existe en el documento jerárquico de salida, la transformación crea un elemento de salida.
Nombre Opcional. Un nombre para la instrucción. Puede cambiar el nombre en cualquier momento. El nombre identifica las instrucciones para que pueda encontrarlas en la malla de asignación o en un registro de eventos. Los nombres de las instrucciones no tienen que ser únicos. En fallo Opcional. Determina la acción que se realiza si la instrucción genera un error. Especifique una de las siguientes opciones: •
Omitir. Si la instrucción falla, se omite la instrucción.
•
Propagar. Si la instrucción falla, se obliga a que la instrucción principal también genere un error.
Salida Opcional. Una expresión de XPath que define el valor del elemento en la jerarquía de salida según los resultados de la expresión de XPath de entrada.
Instrucciones de asignación
93
Tipo de instrucción Obligatorio. Identifica la instrucción como una instrucción de opción.
Instrucciones predeterminadas Una instrucción predeterminada es una instrucción secundaria de la instrucción de enrutador. La instrucción de enrutador contiene una o más instrucciones de opción y puede contener una instrucción predeterminada. La transformación del Procesador de datos ejecuta la instrucción predeterminada cuando no se aplica ninguna de las instrucciones de opción. En un grupo de instrucciones de enrutador solo puede definir una instrucción predeterminada. La instrucción predeterminada debe ser la última instrucción del grupo de instrucciones de enrutador. La instrucción predeterminada no puede tener expresiones de XPath de entrada o condición.
Propiedades de la instrucción predeterminada La instrucción predeterminada contiene propiedades que puede configurar para personalizar la instrucción. Puede configurar el valor predeterminado si falta un elemento de entrada. La instrucción predeterminada tiene las siguientes propiedades: Predeterminado Obligatorio. El valor predeterminado que se usa cuando falta un elemento en la entrada. Por ejemplo, puede definir un valor predeterminado para inicializar un contador. Modo Opcional. Determina si la transformación del Procesador de datos añade un elemento de salida o hace coincidir un elemento existente con un valor de una instrucción de asignación. Especifique una de las siguientes opciones: •
Añadir. Crea un elemento en el documento jerárquico de salida. Si el elemento no es de ocurrencia múltiple y existen los mismos valores en la salida, la instrucción de asignación genera un error.
•
Coincidir. La instrucción espera encontrar una coincidencia para el elemento en los elementos de salida. La instrucción genera un error si el elemento no existe en el documento jerárquico de salida.
•
Coincidir o añadir. Si existe un elemento coincidente en el documento jerárquico de salida, la transformación del Procesador de datos no añade un elemento de salida. Si el elemento no existe en el documento jerárquico de salida, la transformación crea un elemento de salida.
Nombre Opcional. Un nombre para la instrucción. Puede cambiar el nombre en cualquier momento. El nombre identifica las instrucciones para que pueda encontrarlas en la malla de asignación o en un registro de eventos. Los nombres de las instrucciones no tienen que ser únicos. Salida Opcional. Una expresión de XPath que define el valor del nodo en la jerarquía de salida según los resultados de la expresión de XPath de entrada. Tipo de instrucción Obligatorio. Identifica la instrucción como una instrucción predeterminada.
94
Capítulo 5: XMap
Ejecutar instrucciones de XMap Una instrucción Ejecutar XMap llama a otro XMap. Cuando se crea una instrucción de asignación Ejecutar XMap, la herramienta Desarrollador muestra los objetos XMap en la transformación. Seleccione el XMap que desea llamar. La herramienta Desarrollador crea una instrucción de asignación con el nombre XMap en el campo Tipo de instrucción. Los elementos raíz de entrada y salida en el XMap llamado deben ser del mismo tipo que los valores de entrada y salida que se le están pasando desde el XMap de llamada. Se puede llamar a un XMap para realizar la lógica de asignación que se repite.
Propiedades de instrucción Ejecutar XMap La instrucción Ejecutar XMap contiene propiedades que puede configurar para personalizar la instrucción. Puede configurar la entrada, salida y una condición para asignar un elemento de entrada a un elemento de salida. La instrucción Ejecutar XMap tiene las siguientes propiedades: Condición Opcional. Una expresión de XPath que define una condición para la asignación del elemento. Una condición es similar a una expresión de predicado en la columna Entrada. Si define una expresión de XPath de entrada y una expresión de XPath de condición para la misma instrucción de asignación, la transformación del Procesador de datos aplica la XPath de condición al resultado de la XPath de entrada. Entrada Opcional. Una expresión de XPath que evalúa una secuencia de nodos o valores. El tipo de instrucción de asignación determina cómo usa la transformación del Procesador de datos los nodos o valores en la asignación. Modo Obligatorio. Determina si la transformación del Procesador de datos añade un elemento de salida o hace coincidir un elemento existente con un valor de una instrucción de asignación. Especifique una de las siguientes opciones: •
Añadir. Crea un elemento en el documento jerárquico de salida. Si el elemento no es de ocurrencia múltiple y existen los mismos valores en la salida, la instrucción de asignación genera un error.
•
Coincidir. La instrucción espera encontrar una coincidencia para el elemento en los elementos de salida. La instrucción genera un error si el elemento no existe en el documento jerárquico de salida.
•
Coincidir o añadir. Si existe un elemento coincidente en el documento jerárquico de salida, la transformación del Procesador de datos no añade un elemento de salida. Si el elemento no existe en el documento jerárquico de salida, la transformación crea un elemento de salida.
Nombre Opcional. Un nombre para la instrucción. Puede cambiar el nombre en cualquier momento. El nombre identifica las instrucciones para que pueda encontrarlas en la malla de asignación o en un registro de eventos. Los nombres de las instrucciones no tienen que ser únicos. En fallo Obligatorio. Determina la acción que se realiza si la instrucción genera un error. Especifique una de las siguientes opciones: •
Omitir. Si la instrucción falla, se omite la instrucción.
•
Propagar. Si la instrucción falla, se obliga a que la instrucción principal también genere un error.
Instrucciones de asignación
95
Salida Opcional. Una expresión de XPath que define el valor del nodo en la jerarquía de salida según los resultados de la expresión de XPath de entrada. Omitir la entrada que falta Obligatorio. Determina si omitir la instrucción si no hay ninguna coincidencia para el valor de entrada. Especifique una de las siguientes opciones: •
Habilitada. Si el elemento no está en el documento jerárquico de entrada, la transformación del Procesador de datos omite la instrucción sin mostrar errores.
•
Deshabilitadas. La instrucción genera un error cuando el elemento no está en el documento jerárquico de entrada.
Tipo de instrucción Obligatorio. Identifica la instrucción como una instrucción Ejecutar XMap.
Instrucción RunMapplet Una instrucción RunMapplet llama a un mapplet. Cuando crea una instrucción de asignación RunMapplet, Developer tool enumera los objetos de referencia del mapplet asociados a la transformación. Seleccione el mapplet al que desea llamar. Developer tool crea una instrucción XMap con el nombre del mapplet en el campo Tipo de instrucción. Los puertos de entrada y salida en el mapplet al que se llama deben ser del mismo tipo que los valores transferidos al mapplet desde el XMap que realiza la llamada. Puede llamar a un mapplet para realizar tareas como el enmascaramiento de datos, la calidad de datos, la búsqueda de datos y otras actividades normalmente relacionadas con la transformación de datos relacionales, sin necesidad de convertir los datos a formato relacional y luego otra vez a formato jerárquico. Nota: La acción RunMapplet solo puede utilizarse para invocar mapplets pasivos.
Propiedades de la instrucción RunMapplet La instrucción RunMapplet contiene propiedades que puede configurar para personalizar la instrucción. Puede configurar la entrada, la salida y una condición para ejecutar la instrucción RunMapplet. La instrucción RunMapplet puede contener las instrucciones MappletInput y MappletOutput. La instrucción RunMapplet tiene las siguientes propiedades: Condición Opcional. Una expresión de XPath que define una condición para ejecutar la instrucción RunMapplet. Una condición es similar a una expresión de predicado en la columna Entrada. Si define una expresión de XPath de entrada y una expresión de XPath de condición para la misma instrucción de asignación, la transformación del Procesador de datos aplica la XPath de condición al resultado de la XPath de entrada. Entrada Opcional. Una expresión de XPath que evalúa una secuencia de nodos o valores. El tipo de instrucción de asignación determina cómo usa la transformación del Procesador de datos los nodos o valores en la asignación.
96
Capítulo 5: XMap
Modo Obligatorio. Determina si la transformación del Procesador de datos añade un elemento de salida o hace coincidir un elemento existente con un valor de una instrucción de asignación. Especifique una de las siguientes opciones: •
Añadir. Crea un elemento en el documento jerárquico de salida. Si el elemento no es de ocurrencia múltiple y existen los mismos valores en la salida, la instrucción de asignación genera un error.
•
Coincidencia. La instrucción espera encontrar una coincidencia para el elemento en los elementos de salida. La instrucción genera un error si el elemento no existe en el documento jerárquico de salida.
•
Coincidir o añadir. Si existe un elemento coincidente en el documento jerárquico de salida, la transformación del Procesador de datos no añade un elemento de salida. Si el elemento no existe en el documento jerárquico de salida, la transformación crea un elemento de salida.
Nombre Opcional. Un nombre para la instrucción. Puede cambiar el nombre en cualquier momento. El nombre identifica las instrucciones para que pueda encontrarlas en la malla de asignación o en un registro de eventos. Los nombres de las instrucciones no tienen que ser únicos. En fallo Opcional. Determina la acción que se realiza si la instrucción genera un error. Especifique una de las siguientes opciones: •
Omitir. Si la instrucción falla, se omite la instrucción.
•
Propagar. Si la instrucción falla, se obliga a que la instrucción principal también genere un error.
Salida Obligatorio. Una expresión de XPath que define el valor del nodo en la jerarquía de salida según los resultados de la expresión de XPath de entrada. Omitir la entrada que falta Opcional. Determina si omitir la instrucción si no hay ninguna coincidencia para el valor de entrada. Especifique una de las siguientes opciones: •
Habilitada. Si el elemento no está en el documento jerárquico de entrada, la transformación del Procesador de datos omite la instrucción sin mostrar errores.
•
Deshabilitadas. La instrucción genera un error cuando el elemento no está en el documento jerárquico de entrada.
Tipo de instrucción Obligatorio. Identifica la instrucción como una instrucción RunMapplet. El campo identifica el nombre del mapplet al que se hace referencia.
Instrucción MappletInput La instrucción MappletInput contiene propiedades que puede configurar para personalizar la instrucción. Puede configurar la entrada para asignar un elemento de entrada al puerto de entrada del mapplet. En la instrucción RunMapplet se pueden anidar una o varias instrucciones MappletInput. La instrucción MappletInput se ejecuta para proporcionar un valor que se transfiere a la entrada del mapplet. Los valores de la instrucción RunMapplet se transfieren a los puertos del mapplet en el mismo orden en el que aparecen en la instrucción RunMapplet. Si una instrucción se omite, se transfiere un valor nulo al puerto de entrada del mapplet.
Instrucciones de asignación
97
Una instrucción MappletInput transfiere un único valor. Cuando RunMapplet se ejecuta, los valores de las instrucciones MappletInput anidadas se recopilan y se transfieren al mapplet en el mismo orden que las instrucciones MappletInput.
Propiedades de la instrucción MappletInput La instrucción MappletInput contiene propiedades que puede configurar para personalizar la instrucción. La instrucción RunMapplet tiene las siguientes propiedades: Predeterminada Opcional. El valor predeterminado que se usa cuando falta un elemento en la entrada de puerto del mapplet. Entrada Obligatorio. Una expresión de XPath que evalúa una secuencia de nodos o valores. Los valores se transfieren a los puertos de entrada del mapplet. Nombre Opcional. Un nombre para la instrucción. Puede cambiar el nombre en cualquier momento. El nombre identifica las instrucciones para que pueda encontrarlas en la malla de asignación o en un registro de eventos. Los nombres de las instrucciones no tienen que ser únicos. Omitir la entrada que falta Opcional. Determina si omitir la instrucción si no hay ninguna coincidencia de puerto de entrada del mapplet para el valor de entrada. Especifique una de las siguientes opciones: •
Habilitada. Si el elemento no está en el documento jerárquico de entrada, la transformación del Procesador de datos omite la instrucción sin mostrar errores.
•
Deshabilitadas. La instrucción genera un error cuando el elemento no está en el documento jerárquico de entrada.
Instrucción MappletOutput La instrucción MappletOutput se ejecuta para obtener un valor que se ha transferido desde la salida del mapplet. Los valores se transfieren desde los puertos del mapplet a los puertos de salida de RunMapplet en el mismo orden en el que aparecen en la instrucción RunMapplet. En la instrucción RunMapplet se pueden anidar una o varias instrucciones MappletOutput. Una instrucción MappletOutput obtiene un único valor. Cuando RunMapplet se ejecuta, los valores del mapplet se recopilan para las instrucciones MappletOutput anidadas en el mismo orden que las instrucciones MappletOutput.
Propiedades de la instrucción MappletOutput La instrucción MappletOutput contiene propiedades que puede configurar para personalizar la instrucción. La instrucción RunMapplet tiene las siguientes propiedades: Predeterminada Opcional. El valor predeterminado que se usará al probar la transformación del Procesador de datos sin una entrada de asignación real. El valor predeterminado no se utiliza cuando hay una entrada de asignación.
98
Capítulo 5: XMap
Modo Opcional. Determina si la transformación añade un elemento de salida o hace coincidir un elemento existente con un valor de una instrucción de asignación. Especifique una de las siguientes opciones: •
Añadir. Crea un elemento en el documento jerárquico de salida. Si el elemento no es de ocurrencia múltiple y existen los mismos valores en la salida, la instrucción de asignación genera un error.
•
Coincidencia. La instrucción espera encontrar una coincidencia para el elemento en los elementos de salida. La instrucción genera un error si el elemento no existe en el documento jerárquico de salida.
•
Coincidir o añadir. Si existe un elemento coincidente en el documento jerárquico de salida, la transformación del Procesador de datos no añade un elemento de salida. Si el elemento no existe en el documento jerárquico de salida, la transformación crea un elemento de salida.
Nombre Opcional. Un nombre para la instrucción. Puede cambiar el nombre en cualquier momento. El nombre identifica las instrucciones para que pueda encontrarlas en la malla de asignación o en un registro de eventos. Los nombres de las instrucciones no tienen que ser únicos. Salida Obligatorio. Una expresión de XPath que evalúa una secuencia de nodos o valores. Los valores del puerto de salida del mapplet se transfieren a la secuencia de nodos.
Crear un XMap Para crear un objeto de XMap del Procesador de datos, seleccione los esquemas de entrada y salida y añada instrucciones de asignación. 1.
En la vista Objetos de la transformación del Procesador de datos, cree un XMap. Seleccione un esquema de entrada, un origen de ejemplo y un esquema de salida.
2.
Para abrir el editor de XMap, haga clic en el objeto de XMap.
3.
Para crear una instrucción de asignación Asignar, Grupo o Grupo de repetición, en el editor de XMap arrastre desde un nodo del esquema jerárquico de entrada a un nodo del esquema jerárquico de salida. El editor de XMap crea un vínculo de asignación entre los nodos. La instrucción de asignación aparece en la malla. El editor de XMap completa automáticamente los campos de la instrucción de asignación.
4.
Para crear la lógica condicional en la malla, añada una instrucción de asignación de enrutador como se indica a continuación: a.
En la instrucción de asignación de enrutador, cree instrucciones de asignación de opción. Arrastre y suelte nodos de esquema de entrada y salida en los campos de las instrucciones de opción en la malla.
b.
En la instrucción de asignación de enrutador, cree una instrucción de asignación predeterminada para especificar qué ocurre si no se aplica ninguna de instrucción de asignación de opción.
c.
En las instrucciones de asignación de opción, cree instrucciones de asignación Asignar para especificar las condiciones para asignar el nodo de entrada al nodo de salida.
5.
Para proporcionar un contexto común para un grupo de instrucciones, añada una instrucción de asignación de grupo. Anide instrucciones de asignación Asignar bajo la instrucción de asignación de grupo.
6.
Para llamar a otro objeto de XMap, añada una instrucción de ejecución de XMap.
7.
Para cambiar el contexto y la lógica de una instrucción de asignación, edite las propiedades de la instrucción de asignación como se indica a continuación: a.
Disminuya el nivel de las instrucciones a secundarias o auméntelo a principales.
Instrucciones de asignación
99
b.
Cree expresiones de XPath para cambiar el contexto o añada predicados con el editor de XPath.
Usar la malla del editor de XMap Cuando se arrastra un nodo desde el esquema de entrada al esquema de salida, la Herramienta del desarrollador crea una instrucción de asignación Asignar, Grupo o Grupo de repetición en la malla. Puede actualizar la instrucción de asignación. Los campos de Entrada y Salida contienen los elementos del esquema. Si desea crear instrucciones de asignación para proporcionar contexto o para definir las opciones de enrutador, puede escribir instrucciones en la malla. Cuando seleccione una instrucción de asignación en la malla, el editor XMap resalta los nodos de los esquemas de entrada y salida que están en la instrucción de la malla. Puede copiar una instrucción de una fila a otra fila en la malla. Si la fila no es válida para la ubicación en que se copia, el editor de XMap muestra un cuadro de diálogo con un error de validación. Puede cambiar las instrucciones XPath de entrada y salida en el cuadro de diálogo para ajustar el contexto de instrucción de asignación, o puede cambiar los campos XPath de entrada y salida en la malla.
Crear instrucciones de asignación Cree instrucciones de asignación en el editor de XMap. Puede crear instrucciones de asignación arrastrando nodos desde el esquema de entrada al esquema de salida y definir las instrucciones en la malla de instrucciones de asignación. Utilice los siguientes pasos para definir las instrucciones de asignación en la malla: 1.
Para crear una instrucción de asignación, en las opciones de malla, haga clic en Nuevo.
2.
Seleccione el tipo de instrucción de asignación de la lista. Si elige Ejecutar XMap, la Herramienta del desarrollador muestra una lista de objetos XMap objetos en la transformación.
3.
Escriba un nombre para la instrucción de asignación.
4.
Para definir la entrada para la instrucción de asignación, arrastre un elemento desde el esquema de entrada al campo Entrada. También puede configurar una expresión de XPath o una constante en el campo Entrada.
5.
Para seleccionar el nodo de salida para la instrucción de asignación, arrastre un elemento desde el esquema de salida al campo Salida. También puede configurar una expresión XPath en el campo Salida.
6.
Para crear una expresión XPath con el editor de expresiones XPath para un campo Entrada, Salida o Condición, haga clic en el botón Abrir en el campo.
7.
Para cambiar el tipo de instrucción de asignación, haga clic en el botón Abrir en el campo Tipo de instrucción. Elija el tipo de instrucción de asignación de la lista.
Interfaz de malla de instrucciones de asignación Edite las instrucciones de asignación en la malla de instrucciones de asignación del editor de XMap. Debe crear una instrucción antes de poder modificar campos en la malla de instrucciones de asignación. Puede realizar las siguientes tareas en la malla de instrucciones de asignación:
100
•
Arrastre nodos del esquema de entrada o de salida a los campos de las instrucciones de asignación.
•
Copie elementos en los campos de las instrucciones de asignación. También puede escribir valores en los campos.
Capítulo 5: XMap
•
Puede subir o bajar instrucciones de asignación por la malla. Seleccione la fila y haga clic en las opciones de flecha Arriba o Abajo.
•
Puede hacer clic en Disminuir nivel para que una instrucción de asignación aparezca indexada bajo otra. Haga clic en Aumentar nivel si desea subir una instrucción en la jerarquía.
•
Haga clic en Ir al número de fila para desplazarse hasta una fila. Introduzca la fila a la que desea desplazarse. La herramienta del desarrollador seleccionará la fila.
Vincular nodos de esquema Puede vincular un nodo de esquema de entrada a un nodo de esquema de salida arrastrando con el ratón. Puede arrastrar y soltar para asignar un nodo simple a otro simple, un nodo simple a uno complejo, un nodo complejo a un nodo simple o un nodo complejo a otro complejo. El editor de XMap crea un vínculo de asignación entre el nodo de esquema de entrada y el nodo de esquema de salida. El editor de XMap también crea una instrucción de asignación en la malla. Puede arrastrar y soltar una instrucción de asignación para moverla de una fila de la malla a otra fila para cambiar la lógica de XMap. Por ejemplo, puede utilizar este método para modificar la secuencia de instrucciones de opción dentro de un enrutador.
Cortar y pegar instrucciones de asignación Puede cortar y pegar instrucciones de asignación en la malla de instrucciones de asignación del editor de XMap. Puede subir o bajar instrucciones. Puede pegar instrucciones de asignación incluso dentro de instrucciones anidadas. Puede aumentar el nivel de una instrucción a instrucción principal o disminuirlo a instrucción secundaria. Por lo general, es necesario corregir manualmente las instrucciones que se pegan, ya que su lógica suele estar fuera de contexto. Después de pegar una instrucción, puede modificar campos en la malla de instrucciones de asignación.
Expresiones de XPath Las expresiones de XPath identifican elementos o nodos específicos de documentos jerárquicos o comprueban ciertas condiciones en los datos. Use expresiones de XPath para definir los campos Entrada, Condición o Salida de una instrucción de asignación. XPath es una sintaxis para definir partes de un documento jerárquico. Utilice XPath para seleccionar secuencias de nodos o valores en un documento jerárquico. XPath incluye una biblioteca de funciones estándar que puede usar para seleccionar los datos. Puede definir expresiones de XPath 2.0 en la transformación del Procesador de datos. Cuando configure las expresiones de XPath de salida, puede utilizar un subconjunto de la sintaxis de XPath 2.0 cuando defina instrucciones de asignación para Añadir modo o Coincidir o Añadir modo. Para obtener más información sobre la XPath, consulte la documentación de XPath.
Expresiones de XPath
101
La siguiente tabla describe algunas expresiones de XPath: Expresión de XPath
Descripción
nodename
Selecciona todos los nodos secundarios del nombre determinado en el contexto.
. (punto)
Selecciona el nodo actual.
..
Selecciona el primario del nodo actual.
@
Selecciona el atributo.
/
Selecciona desde el nodo raíz o secundario del nodo actual si está precedido por un nodo. Cuando la ruta de acceso empieza con una barra (/), representa una ruta absoluta a un elemento.
//
Selecciona nodos en cualquier lugar del documento o descendientes del nodo actual si viene precedido por un nodo.
La siguiente tabla muestra algunas expresiones de XPath y el resultado de cada expresión: Expresión de XPath
Resultado
/bookstore
Selecciona el nodo de librería raíz.
bookstore/book
Selecciona los nodos de libros que son secundarios de todos los nodos de la librería.
//book
Selecciona los nodos de libros del documento en todas las ubicaciones.
bookstore//book
Selecciona todos los nodos de libros que son descendientes de los nodos de la librería.
/bookstore/*
Selecciona todos los nodos secundarios del elemento raíz de la librería.
//*
Devuelve una secuencia de todos los elementos del documento.
Predicados Un predicado es una expresión que puede configurar para encontrar un nodo en un documento jerárquico. Puede configurar la expresión para buscar un valor específico. Cree un predicado en un campo Entrada, Condición o Salida de una instrucción de asignación. Cuando se define un predicado, escriba la expresión entre corchetes [] tras el nodo. /[expression] Por ejemplo, la siguiente expresión selecciona los elementos del libro que son elementos secundarios de la librería y tienen un elemento de precio con un valor mayor que 55.00: /bookstore/book[price>55.00] La siguiente expresión selecciona los elementos de título de los elementos del libro que son elementos secundarios de la librería y tienen un valor de elemento de precio mayor que 55.00: /bookstore/book[price>55.00]/title La siguiente expresión selecciona los elementos del título que tienen un lang con el valor "eng":
102
Capítulo 5: XMap
//title[@lang="eng"] Nota: La transformación del Procesador de datos no puede aceptar todas las instrucciones XPath en el campo de salida cuando se configura una instrucción de asignación con el modo Añadir o el modo Coincidir o añadir.
Referencia de predicados de XPath Los predicados de XPath encuentran un nodo o secuencia de nodos coincidentes en un documento jerárquico. Una expresión de predicado define el valor de un campo Entrada, Condición o Salida de una instrucción de asignación. La expresión de XPath determina el contexto en el que una instrucción de asignación se ejecuta. Utilice las siguientes expresiones de XPath en predicados para seleccionar un nodo o secuencia de nodos: ancestor Selecciona todos los antecesores, como los elementos principales y superiores, del nodo actual. Por ejemplo, la expresión de predicado "antecesor::book" selecciona todos los antecesores de libro del nodo actual. ancestor-or-self Selecciona todos los antecesores, como los elementos principales y superiores, del nodo actual, además del propio nodo actual. Por ejemplo, la expresión de predicado "ancestor-or-self::book" selecciona todos los antecesores de libro del nodo actual y también el nodo actual. attribute Selecciona todos los atributos del nodo actual. Por ejemplo, la expresión de predicado "antecesor::lang" selecciona el atributo lang del nodo actual. child Selecciona todos los elementos secundarios del nodo actual. Por ejemplo, la expresión de predicado "child::book" selecciona todos los nodos de libros que son secundarios respecto al nodo actual. descendant Selecciona todos los descendientes, tales como elementos secundarios o de segundo nivel, del nodo actual. Por ejemplo, la expresión de predicado "descendant::book" selecciona todos los descendientes de libro del nodo actual. descendant-or-self Selecciona todos los descendientes, como los elementos secundarios y de segundo nivel, del nodo actual, además del propio nodo actual. Por ejemplo, la expresión de predicado "descendant-orself::book" selecciona todos los descendientes de libro del nodo actual y también el nodo actual si se trata de un nodo de libro. following Selecciona todos los elementos del documento después de la etiqueta de cierre del nodo actual. Por ejemplo, la expresión de predicado "following::book" selecciona todos los elementos del documento después de la etiqueta de cierre del nodo de libro. following-sibling Selecciona todos los elementos del mismo nivel que aparecen después del nodo actual. Por ejemplo, la expresión de predicado "following-sibling::book" selecciona todos los elementos del mismo nivel del documento después del nodo de libro.
Expresiones de XPath
103
namespace Selecciona todos los nodos de espacio de nombres del nodo actual. parent Selecciona el elemento principal del nodo actual. Por ejemplo, la expresión de predicado "parent::book" selecciona el atributo lang del nodo actual. preceding Selecciona todos los nodos que aparecen antes del nodo actual en el documento, excepto los antecesores, los nodos de atributo y los nodos de espacio de nombres. Por ejemplo, la expresión de predicado "preceding::book" selecciona los nodos anteriores al nodo de libro. preceding-sibling Selecciona todos los elementos del mismo nivel que aparecen antes del nodo actual en el documento. Por ejemplo, la expresión de predicado "preceding-sibling::book" selecciona los nodos del mismo nivel anteriores al nodo de libro. self Selecciona el nodo actual. Por ejemplo, la expresión de predicado "self::book" selecciona el nodo de libro actual.
Operadores aritméticos de XPath Para realizar cálculos, añada operadores aritméticos que evalúen nodos de documentos jerárquicos. Puede añadir operadores aritméticos a expresiones XPath en los campos Entrada, Condición o Salida de una instrucción de asignación. En la siguiente tabla se describen operadores aritméticos XPath que puede usar en expresiones XMap:
104
Expresión de XPath
Descripción
|
Selecciona dos conjuntos de nodos en contexto. Por ejemplo, la expresión de predicado "// book | //cd" devuelve un conjunto de nodos con todos los elementos de libros y cd.
+
Suma los elementos. Por ejemplo, la expresión de predicado "1+2" devuelve 3.
-
Resta los elementos. Por ejemplo, la expresión de predicado "2-1" devuelve 1.
*
Multiplica los elementos. Por ejemplo, la expresión de predicado "2*1" devuelve 2.
div
Divide los elementos. Por ejemplo, la expresión de predicado "6 div 3" devuelve 2.
=
Selecciona los elementos que son iguales a la expresión. Por ejemplo, la expresión de predicado "cost=1.50" devuelve TRUE si el coste es 1.50 y FALSE si el coste es 1.60.
!=
Selecciona los elementos que no son iguales a la expresión. Por ejemplo, la expresión de predicado "cost!=1.50" devuelve TRUE si el coste es 1.60 y FALSE si el coste es 1.50.
<
Selecciona los elementos inferiores a la expresión. Por ejemplo, la expresión de predicado "tax1.50" devuelve TRUE si el impuesto es 1.90 y FALSE si el impuesto es 1.50.
>=
Selecciona los elementos iguales o superiores a la expresión. Por ejemplo, la expresión de predicado "tax>=1.50" devuelve TRUE si el impuesto es 1.50 y FALSE si el impuesto es 1.00.
or
Selecciona los elementos que pueden satisfacer una o varias condiciones. Por ejemplo, la expresión de predicado "tax=1.50 or tax=1.70" devuelve TRUE si el impuesto es 1.50 y FALSE si el impuesto es 1.00.
and
Selecciona los elementos que pueden cumplir todas las condiciones especificadas. Por ejemplo, la expresión de predicado "price>1.00 and price