DOUI - Processando dados através do PostLoadProcessor | Lumis XP
Neste vídeo explicamos como implementar um Post Load Processor para carregar informações de outras origens depois que o source é carregado
Para isso, mostramos os seguintes tópicos:
- Inserir mais um campo externo no source principal do douidefinition.xml; (0:59)
- Inserir campo externo na interface de lista rápida; (2:11)
- Implementar classe java para Post Load Processor; (2:53)
- Editar estilo da interface de lista rápida para exibir o campo preenchido pelo Post Load Processor. (5:41)
douidefinition.xml
<?xml version="1.0" encoding="UTF-8"?>
<doui:douiDefinition xmlns:doui="http://www.lumis.com.br/lumisportal/xsd/doui" xmlns:control="http://www.lumis.com.br/douicontrols">
<service>
<sources>
<source id="default" type="contentTable">
<table>t_produtos</table>
<fields>
<field id="id" name="id" dataType="guid" required="true" isPrimaryKey="true" display="false" />
<field id="nome" name="Nome" dataType="string" required="true" isPrimaryName="true" isSearchable="true" />
<field id="introducao" name="Introdução" dataType="text" isSearchable="true" isIntroduction="true" />
<field id="detalhes" name="Detalhes" dataType="html" required="true" isSearchable="true" />
<field id="tipo" name="Tipo" dataType="string" required="true" >
<options>
<option value="1">Tipo A</option>
<option value="2">Tipo B</option>
</options>
</field>
<field id="inventario" name="Inventário" dataType="integer" externalData="true"/>
</fields>
<metaData>
<comments/>
<publishToServiceInstances/>
<publishStartDate/>
<publishEndDate/>
<highlight/>
<highlightEndDate/>
<publishToPrincipals/>
<versioning/>
<workflow/>
<tag/>
<seo/>
</metaData>
</source>
</sources>
</service>
<interfaces>
<interface id="quicklist">
<sources>
<source id="default">
<fields inherit="default">
<field id="tipo" doOptionLookup="true"/>
<field id="inventario"></field>
</fields>
<filters>
<filter id="tipo" className="br.com.treinamento.service.produto.TipoProdutoFilter"></filter>
</filters>
<maxRows>3</maxRows>
<postLoadProcessors>
<postLoadProcessor className="br.com.treinamento.service.produtos.ProdutoInventarioPostLoadProcessor"></postLoadProcessor>
</postLoadProcessors>
</source>
</sources>
</interface>
...
ProdutoInventarioPostLoadProcessor.java
package br.com.treinamento.service.produtos;
import org.w3c.dom.Node;
import lumis.doui.source.ISourceData;
import lumis.doui.source.Source;
import lumis.doui.source.TabularData;
import lumis.doui.source.postloadprocessor.IPostLoadProcessor;
import lumis.portal.PortalException;
import lumis.portal.authentication.SessionConfig;
import lumis.util.ITransaction;
public class ProdutoInventarioPostLoadProcessor implements IPostLoadProcessor
{
@Override
public void processSource(SessionConfig sessionConfig, Source source, Node parametersNode, ITransaction transaction) throws PortalException
{
TabularData td = (TabularData) source.getData();
int count = 0;
for(ISourceData row : td.getRows())
{
count++;
row.put("inventario", count);
}
}
}