Ignorar Navegação
Expandir
Tutorial para Formatação de Propriedades
Identificação da resposta 8857   |   Revisado 31/10/2018

Como faço para usar formatação para propriedades do tipo string?

Ambiente

Todas as versões de Oracle Field Service (OFS)

Introdução

Este documento contém um pequeno tutorial de como usar a Formatação de Propriedades no Oracle Field Service.

A idéia básica de uma propriedade formatada é a seguinte:

Se a caixa de verificação "Formatação" (Formatting) está marcada na página de descrição da propriedade, significa que:

• A propriedade é somente leitura no Oracle Field Service Core Manage/ Oracle Field Service Mobility.
• A propriedade é mostrada no Oracle Field Service Core Manage/ Oracle Field Service Mobility de acordo com a formatação especificada na página de descrição da propriedade.
• APIs podem ser usados para definir o valor da propriedade (ex. Inbound API, Activity API ou um passo de mensagem "set_property").

Clique no ao lado do cabeçalho apropriado abaixo para expandir e visualizar a seção. Glossário

XML - É uma linguagem de marcação que define um conjunto de regras para documentos codificados em um formato que é legível por humanos e legível por máquinas.

Documento XML - Texto que está em conformidade com as regras de marcação XML.

XSLT - "Extensible Stylesheet Language Transformations" - É uma linguagem usada para transformar documentos XML em outros documentos XML ou outros objetos, como por exemplo HTML para páginas web.

XPath - Linguagem de consulta Xml. É usado para selecionar porções do documento XML que correspondem a uma consulta. XPath é usado por XSLT para selecionar as partes do documento a serem transformadas. Examplo de XPath em XSLT: <xsl:for-each select="//product/price" />. Este bloco XSLT será executado para cada elemento "price" que tem um elemento parente do tipo "product".

CSS - "Cascading Style Sheets" são usados para descrever a aparência e formatação de uma página web.

Expressão Regular (Regular Expression) - É uma linguagem que fornece meios para "combinar" (especificar e reconhecer) um padrão em uma cadeia de texto.

Transformação de Expressão Regular (Regular Expression Transformation) - É uma forma de transformar uma cadeia (string) em outra cadeia (string) usando uma Expressão Regular e uma Regra de Transformação.

Transformação de Identidade (Identity Transformation) - É uma transformação que não modifica a entrada de dados. Seria como: f(x) = x, onde f é uma Transformação de Identidade, basicamente, isto significa que os dados não são alterados por essa transformação.

Isto é útil, por exemplo, nos casos a seguir:

• Quando o valor da propriedade já contém XML, portanto, a Expressões Regulares não são necessários para produzir XML
• Quando a Expressão Regular é suficiente para produzir HTML, portanto, a Transformação XSLT não é necessária
• Quando o valor da propriedade já contém HTML válida, portanto, nenhuma transformação é necessária
• Expressão Regular Transformação de Identidade (Regular Expression Identity Transformation)

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

Essas 3 linhas processam os caracteres especiais XML os quais são convertidos pelo mecanismo da Formatação de Propriedades.

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 A FORMATAÇÃO DE PROPRIEDADES

Sempre que uma propriedade com "Formatação" habilitada deve ser exibida no Oracle Field Service Core Manage/ Oracle Field Service Mobility, nosso mecanismo executa as seguintes operações:

• Obtem valor bruto da propriedade - uma cadeia (string) de dados  
• Converte os caracteres especiais XML: & para &amp; < para &lt; > para &gt;
• Aplica aos valores convertidos todas as Transformações de Expressão Regular para produzir XML
*Nota* se os dados resultantes não constituem um XML válido, a propriedade não é exibida
• Coloca o XML resultante em um nó raiz denominado "<root>"
• Aplica a Transformação XSLT  a este XML para produzir o HTML
*Nota* se a Transformação XSLT T é sintaticamente incorreta, a propriedade não é exibida
• Elimina tags HTML "inseguras": <img>, <iframe>, <script>, <object>
• Exibi o HTML resultante onde a propriedade deve aparecer no formulário

COMO CONFIGURAR A FORMATAÇÃO DE PROPRIEDADES

Clicar "Configurações da Empresa -> Propriedades -> Sua propriedade do tipo "string" (ou "Adicionar propriedade string")
Marcar a caixa de verificação "Formatação"  

Você verá dois campos novos:

• Expressão Regular  
• Transformação XSL  


CONFIGURANDO "EXPRESSÃO REGULAR" PARA PRODUZIR UM XML

A área de texto "Expressão Regular" possui múltiplas linhas. Você pode inserir mais de uma Expressão Regular neste campo, mas cada uma em linhas separadas. Cada linha de Expressão Regular deve ser da seguinte forma:

{padrão} = {substituição},    exemplo   /[0-9]+/ = <number>$0</number>
Onde:
     •  padrão - uma Expressão Regular
     •  " = " - é um sinal de igualdade colocado entre dois espaços - "<SPACE>=<SPACE>". Ele é usado para delimitar Expressão Regular e Regra de Transformação.
     •  substituição - Regra de Transformação- uma cadeia (string) descrevendo como transformar a sub-cadeia (substring) correspondente

*Nota 1* O resultado deve ser um documento XML  

O objetivo das Expressões Regulares é produzir o XML, porque o mecanismo de  Transformação XSLT  somente aceita XML como entrada. Desta forma, após as Expressões Regulares serem aplicadas, o resultado deve ser um documento XML.

*Nota 2* A ordem das Expressões Regulares é importante
Quando existem múltiplas linhas de Expressões Regulares, cada expressão subsequente recebe como entrada a saída da expressão anterior, e não a cadeia (string) original. Tome muito cuidado para garantir que as expressões não entrem em conflito. Veja os exemplos abaixo para obter detalhes:


Exemplo 1 - Expressão Regular simples, que produz X

Transformação de Expressão Regular:

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

Acima você encontra todas as cadeias numéricas no valor de entrada e as coloca na tag XML  <number>. Desta forma, dados de entrada tais como: 12345 67890 1 22 333 4444, irão produzir o seguinte XML:

<root>
  <number>12345</number>
  <number>67890</number>
  <number>1</number>
  <number>22</number>
  <number>333</number>
  <number>4444</number>
</root>

(O XML acima foi formatado para sua maior clareza. O XML real seria em uma única linha)

Note que o elemento parente <root> é adicionado pelo OFS porque um documento XML válido deve ter um único elemento raiz.

Exemplo 2 - Múltiplas Expressões Regulares


Quando existem múltiplas linhas de Expressões Regulares, cada expressão subsequente toma como entrada a saída da expressão anterior.

Por exemplo, dada a entrada 123 ABC:

a) expressão que substitui todos os caracteres do alfabeto com zeros:

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

b) expressão que substitui todos os caracteres numericos com  X'es:

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

c) as duas Expressões Regulares juntas:

          /[A-Z]/ = 0 (fazendo entrada para segunda Expressão Regular <root>123 000</root>)
          /[0-9]/ = X, produzirá <root>XXX XXX</root>

d) mas se a ordem é invertida:

          /[0-9]/ = X (fazendo entrada para segunda Expressão Regular <root>XXX XXX</root>)
          /[A-Z]/ = 0, produzirá <root>000 000</root>

Exemplo 3 - Capturando Planilha CSV em Documento XML


Suponha-se que o valor da propriedade contém um conjunto de dados CSV - uma planilha com colunas separadas por vírgulas, como por exemplo:

"Bananas","2.99","45"
"Maçãs","3.99","34"
"Laranjas","6.99","22"

A expressão que transforma isso em um documento XML estruturado é:

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

O resultado da transformação:

<root>
<product>
   <name>Bananas</name>
   <price>$ 2.99</price>
   <number_in_stock>45</number_in_stock>
</product>
<product>
   <name>Maçãs</name>
   <price>$ 3.99</price>
   <number_in_stock>34</number_in_stock>
</product>
<product>
   <name>Laranjas</name>
   <price>$ 6.99</price>
   <number_in_stock>22</number_in_stock>
</product>
</root>

(O XML acima foi formatado para sua maior clareza)

CONFIGURANDO UMA "TRANSFORMAÇÃO XSLT" PARA PRODUZIR UM HTML

A área de texto "Transformação XSLT" deve conter um documento XSLT 1.0 válido. Note que OFSC trabalha com XSLT versão 1.0.

Um documetno XSLT pode conter vários:

• Elementos HTML que serão exibidos na página page
• Textos estáticos colocados em elementos HTML
• Estilos CSS que definem como elementos HTML são exibidos na página page
• Construções XSLT para transformar documentos de entrada XML para HTML
• Como estamos usando XSLT sem modificações, não descreveremos recursos de linguagem XSLT em este documento, com isso iremos diretamente a exemplos.

Exemplo 1 - Transformação XSLT simples


Este exemplo toma uma propriedade que contém vários números separados por espaços e mostra como uma lista em Oracle Field Service. Também utiliza XSLT para calcular e exibir a soma destes números.


Exemplo de valor da propriedade: 1 2 3 4 5

Expressão Regular (Regular Expression): /([0-9]+)/ = <item>$1</item>

Transformação XSLT (XSLT Transformation):

<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"> <!-- HTML elements -->
    List of items  <!-- Static text -->
    <xsl:for-each select="//item">  <!-- XSLT constructs -->
       <li> <xsl:value-of select="."/> </li>
    </xsl:for-each>
    Sum of all items is: <!-- Static text -->
    <b> <xsl:value-of select="sum(//item)" /> </b> <!-- XSLT constructs -->
  </div>
</xsl:template>
</xsl:stylesheet>



Produz o seguinte resultado na tela Detalhes da Atividade no OFS Core Manage:  

A formatação de teste mostra: Lista de itens> lista de marcadores de números> A soma de todos os itens é: 15

Exemplo 2 - Formatando uma propriedade usando somente a Expressão Regular


Este exemplo toma uma propriedade que contém o nome da cor e exibe como barra de cores.

Como a Expressão Regular é suficiente para fazer isso, colocaremos Transformação de Identidade (veja o Glossário) na área de texto "Transformação XSLT".

Exemplo de valor da propriedade: red

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

Transformação XSLT:

<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>



Produz o seguinte resultado na tela Detalhes da Atividade no OFS Core Manage:  

O campo de cores da porta é exibido na cor que foi definida.



Línguas disponíveis para esta resposta:

Notificar-me
A página será atualizada no envio. Todas as entrada pendentes serão perdidas.