Omitir navegación
Ampliar
Tutorial de formateo de propiedades
ID de respuesta 8831   |   Revisado 31/10/2018

¿Cómo puedo usar las opciones de formato para propiedades tipo String?

Ambiente

Oracle Field Service (OFS), Todas las versiones

Resolución

Este documento contiene un corto tutorial sobre el uso del formato de propiedades en Oracle Field Service.

La idea básica de una propiedad formateada es:

Si la casilla "Formateo" es seleccionada en la vista de detalles de la propiedad:

  • La propiedad es de sólo-lectura  Oracle Field Service Manage (web)/ Oracle Field Service Mobility (vista móvil).
  • La propiedad se visualizará en Oracle Field Service Core Manage/ Oracle Field Service Mobility de acuerdo al formato especificado en los detalles de la propiedad
  • Es posible hacer uso de los APIs para asignar el valor a la propiedad (Ej. Inbound API, Activity API o escenario de mensajes de tipo  "Establecer propiedad" ).

Haga clic en el enseguida del encabezado apropiado para expandir y visualizar esa sección.
 Glosario

XML - Es un meta lenguaje que define el conjunto de reglas a seguir para codificación de documentos en un formato legible para el ser humano y para las máquinas.

Documento XML - Texto que se ajusta a las reglas del lenguaje de marcado XML.

XSLT - "Extensible Stylesheet Language Transformations" - "El Lenguaje de Hoja de Estilo Extensible" Es un lenguaje para la transformación de documentos XML a otros documentos XML u otro tipo de objetos como páginas web HTML

XPath - Lenguaje de consulta XML. Es empleado para seleccionar porciones de un documento XML que coincida con una consulta. XPath es empleado por  XSLT para seleccionar las partes del documento que se deben transformar. Ejemplo de uso de XPath en  XSLT: <xsl:for-each select="//producto/precio" />. El siguiente bloque XSLT será ejecutado para cada elemento "precio" que tenga un elemento padre de tipo "producto" .

CSS - "Hojas de estilo en cascada" (siglas en inglés Cascading Style Sheets ) son empleadas para describir la visualización y formato de una página web.

Expresión Regular - Es una lenguaje que proporciona los medios necesarios para identificar un patrón (especificar y reconocer) en una cadena de texto.

Transformación de Expresión Regular - Es un mecanismo para transformar un cadena en otra cadena usando una expresión regular y una regla de transformación.

Transformación de Identidad - Es la transformación que no modifica los datos entrantes. Para f(x) = x, donde f la transformación de Identidad, básicamente esto indica que  los datos no son modificados por esta transformación.

Esto es útil en los siguientes casos.

  • Cuando el valor de la propiedad contiene XML, por lo que no es necesario que la expresión regular produzca XML 
  • Cuando la expresión regular es suficiente para producir HTML, por lo que la transformación XSLT no es necesaria.
  • Cuando el valor de la propiedad contiene HTML válido, por lo que no es necesario emplear una transformación.

Expresión Regular de Transformación de Identidad

/&lt;/ = <
/&gt;/ = >
/&amp;/ = &

Estas 3 líneas procesan los caracteres reservados XML que son convertidos por el motor de formateo de la propiedad.

XSLT 1.0 Identity Transformation
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
   <xsl:copy-of select="."/>
</xsl:template>
</xsl:stylesheet>


COMO FUNCIONA EL FORMATEO DE PROPIEDADES

Cada vez que una propiedad con opción Formateo habilitado va a ser mostrada en  Oracle Field Service Manage/ Oracle Field Service Mobility, nuestro motor realiza las siguientes operaciones:

  • Obtener el valor crudo de la propiedad - una cadena de datos
  • Convertir los caracteres XML reservados: & a &amp; <  a &lt; > a &gt;
  • Aplicar al valor convertido todas las transformaciones de Expresión Regular para generar el XML
*Nota* si los datos resultantes no constituyen un XML válido, la propiedad no se visualizará
  • Pone el XML resultante en un nodo raíz denominado  "<root>"
  • Aplica a este XML la Transformación XSL para producir HTML
*Nota* si la Transformación XSL es sintácticamente incorrecta, la propiedad no se visualizará
  • Elimina etiquetas HTML inseguras: <img>, <iframe>, <script>, <object>
  • Muestra el HTML resultante en la posición en la que debería aparecer la propiedad

COMO CONFIGURAR EL FORMATEO DE PROPIEDADES

  • En "Configuración -> Propiedades -> Su propiedad tipo String  (or "Agregar propiedad de string")
  • Seleccione la casilla "Formateo"
  • Verá dos nuevos campos:
    • Expresión Regular
    • Transformación XSL 

CREACIÓN DE UNA "EXPRESIÓN REGULAR" PARA PRODUCIR XML

El área de texto de la "Expresión regular" es multi línea. Ona o más expresiones regulares pueden ser ingresadas en este campo, cada una en una nueva línea. Cada expresión regular debe seguir la siguiente estructura:

{patrón} = {sustitución},Ej. /[0-9]+/ = <number>$0</number>
Donde:
  • patrón - una expresión regular
  • " = " - Es un signo igual ubicado entre dos espacios  - "<SPACE>=<SPACE>". Es empleado para delimitar la expresión regular y la regla de transformación.
  • sustitución- regla de transformación- una cadena que describe como transformar la subcadena coincidente 
*Nota 1* El resultado debe ser un documento XML

El propósito de una expresión regular es producir XML, el motor de transformación XSLT sólo acepta XML como entrada. Por lo que después de aplicar una expresión regular, el resultado debe ser un documento XML.

*Nota 2* El orden de las expresiones regulares es importante

Cuando hay múltiples expresiones regulares, cada expresión subsecuente toma como entrada la salida de la expresión anterior, no la cadena original. Debe asegurarse que las expresiones regulares no entren en conflicto. Encuentre a continuación ejemplos con información adicional.

 Ejemplo 1 - Expresión regular sencilla que produce XML

Transformación de Expresión Regular:

/[0-9]+/ = <number>$0</number>

La expresión anterior detecta todos los caracteres numéricos en el valor de entrada y los reemplaza poniéndolos dentro de la etiqueta XML <number>. Para la cadena de entrada: 12345 67890 1 22 333 4444, genera el siguiente XML:
<root>
  <number>12345</number>
  <number>67890</number>
  <number>1</number>
  <number>22</number>
  <number>333</number>
  <number>4444</number>
</root>

(El XML anterior ha sido formateado para facilitar su lectura. La salida del XML original estará contenida en una sola línea)

Tenga en cuenta que el elemento padre <root>  es agregado por OFS ya que un documento XML válido debe tener un único elemento raíz. 

 Ejemplo 2 - Múltiples expresiones regulares

Cuando hay múltiples expresiones regulares, cada expresión subsecuente toma como entrada la salida de la expresión anterior.

Por ejemplo, teniendo la entrada 123 ABC:

a) Expresión que reemplaza todos los caracteres alfabéticos por ceros:

/[A-Z]/ = 0, producirá: <root>123 000</root>

b) Expresión que reemplaza cada caracter numérico por  X:

/[0-9]/ = X, producirá: <root>XXX ABC</root>

c) las dos expresiones regulares combinadas:

/[A-Z]/ = 0 (valor de entrada para la segunda expresión regular <root>123 000</root>)
/[0-9]/ = X, producirá
<root>XXX XXX</root>


d) pero si se modifica el orden de las expresiones:

/[0-9]/ = X (valor de entrada para la segunda expresión regular  <root>XXX ABC</root>)
/[A-Z]/ = 0, will
produce <root>000 000</root

 Ejemplo 3 - Captura de hoja de cálculo separada por coma (CSV) en un documento XML


Suponga que el valor de la propiedad contiene datos separados por coma (CSV), una hoja de cálculo con columnas separadas con coma:

"Bananas","2.99","45"
"Manzanas","3.99","34"
"Naranjas","6.99","22"

La expresión que realiza la conversión a un documento con estructura XML es:

/"([^"]+)","([^"]+)","([^"]+)"/ = <product><name>$1</name><price>$ $2</price><number_in_stock>$3</number_in_stock></product>

El resultado de la transformación:
<root>
<product>
   <name>Bananas</name>
   <price>$ 2.99</price>
   <number_in_stock>45</number_in_stock>
</product>
<product>
   <name>Manzanas</name>
   <price>$ 3.99</price>
   <number_in_stock>34</number_in_stock>
</product>
<product>
   <name>Naranjas</name>
   <price>$ 6.99</price>
   <number_in_stock>22</number_in_stock>
</product>
</root>

(El XML anterior ha sido formateado para facilitar su lectura) 

CONFIGURACIÓN DE UNA "TRANSFORMACIÓN XSL" PARA PRODUCIR HTML


El área de texto "Transformación XSL" debe contener un documento XSLT 1.0 válido. Tenga en cuenta que OFS emplea XSLT version 1.0

Un documento XSLT puede contener:

  • Elementos HTML que pueden mostrase en la página web
  • Texto estático ubicado en elementos HTML
  • Estilos CSS que definen como se deben mostrar los elementos HTML en la página web
  • Construcción XSLT para la transformación del documento XML de entrada a HTML

Ya que empleamos XSLT sin modificaciones, no describiremos las características del lenguaje XSLT en este documento por lo que iremos directamente a los ejemplos.

 Ejemplo 1 - Transformación XSL simple



Este ejemplo toma una propiedad que contiene varios números separados por espacios y los muestra en una lista en Oracle Field Service.  También usa XSLT para calcular y mostrar la suma de estos números.


Ejemplo valor de propiedad: 1 2 3 4 5

Expresión regular: /([0-9]+)/ = <item>$1</item>

Transformación XSL:

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
<style> <!-- CSS styles -->
div.example_style { background-color: yellow; border: 2px dashed; padding:6px; }
div.example_style li {margin-left:20px;}
</style>
<div class="example_style"> <!-- elementos HTML-->
Lista de elementos <!-- Texto estático -->
<xsl:for-each select="//item"> <!-- construcción XSLT -->
<li> <xsl:value-of select="."/> </li>
</xsl:for-each>
Suma de todos los elementos es: <!-- Texto estático-->
<b> <xsl:value-of select="sum(//item)" /> </b> <!-- construcción XSLT-->
</div>
</xsl:template>
</xsl:stylesheet> Genera el siguiente resultado en la pantalla de Detalles de actividad en OFS Manage:

El formato de prueba muestra: Lista de elementos> lista de números con viñetas> La suma de todos los elementos es: 15 

 Ejemplo 2 - Formateo de propiedad empleando Expresión Regular


Este ejemplo toma una propiedad que contiene el nombre del color y despliega el color en un recuadro.

Es posible aplicar este cambio empleado una expresión regular,  Pondremos una transformación de Identidad (ver Glosario) en el campo de texto de Transformación XSL.

Expresión Regular: /^(.*)$/ = <span style="color:$1;background-color:$1;border:2px solid black">----</span> ($1)

Transformación XSL:

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
 <xsl:template match="/">
   <xsl:copy-of select="."/>
 </xsl:template>
</xsl:stylesheet>

Genera el siguiente resultado en la pantalla de Detalles de actividad en OFS Manage: 

El campo de color de la puerta se muestra en el color que se estableció.



Lenguajes disponibles para esta Respuesta:

Notificarme
La página se refrescará al enviar. Las entradas pendientes se perderán.