Guia de
Desenvolvimento
FLEX
Introdução
Este guia tem por objetivo orientar as equipes de desenvolvimento do
Sicoob Confederação sobre a tecnologia FLEX de desenvolvimento. Iremos
apresentar a arquitetura, as boas práticas e as convenções usadas durante
o desenvolvimento de interfaces visuais.
O que é FLEX ?
A tecnologia FLEX foi lançada pela então Macromedia em março de 2004
que possibilita a criação de aplicações ricas para a internet (RIA – Rich
Internet Application) baseada na plataforma Flash. A Adobe adquiriu a
Macromedia em 2005 e em 2007 a Adobe abriu o código do FLEX 3 SDK,
mesmo o Flash Player continuando a ser proprietário e comercial.
RIA
As aplicações feitas no padrão RIA visivelmente possuem uma experiência
com o usuário mais robusta do aplicações tradicionais feitas em HTML. A
interatividade e recursos disponíveis nesta plataforma facilitam o trabalho
dos designers para criar uma interface com o usuário usando o recurso “o
que você vê é o que você tem” (WYSIWYG).
Actionscript 3 e MXML
A linguagem usada para a programação na plataforma FLEX é chamada
Actionscript. Atualmente na versão 3, está em conformidade com o padrão
ECMAScript. Existe também um formato MXML que é uma linguagem de
marcação XML geralmente usada para a criação da interface com o usuário.
No final das contas um arquivo MXML gera uma classe no formato
Actionscript com o mesmo nome do arquivo em questão. Por exemplo: se
existir um arquivo chamado CadastroPessoa.mxml, o compilador irá gerar
uma arquivo CadastroPessoa.as com a classe CadastroPessoa dentro, tudo
isso de forma transparente.
Arquitetura
Nesta arquitetura temos o navegador ou uma aplicação AIR instalada no
cliente, depois que o arquivo SWF é baixado para a estação de trabalho (e
guardada no cache local) as chamadas a métodos de negócio são feitas
para o FLEX Gateway através de um protocolo chamado AMF (Action
Message Format – atualmente na versão 3).
Ao contrário das aplicações tradicionais WEB onde a marcação HTML é
trafegada toda vez que existe uma atualização na tela, as aplicações feitas
em FLEX geram um único arquivo binário SWF que fica armazenado em
cache e a partir deste momento o que passa a ser trafegado são as
requisições AMF de tamanho reduzido.
Cliente Servidor
HTML
Cliente Servidor
SWF
AMF
Aplicação WEB Tradicional
Aplicação RIA FLEX
Cliente Servidor
HTML
Cliente Servidor
AMF
SWF
Cache
Navegador
AIRFLEX Gateway
HTTP
AMF
Este protocolo foi introduzido com o Flash Player 6 e era conhecido como
AMF 0. A versão 3 do protocolo AMF foi introduzida com a chegada do Flash
Player 9, com suporte a novos tipos de dados.
Existem diversos gateways para as mais diferentes linguagens de
programação. No Sicoob Confederação estamos utilizando gateways para a
tecnologia JAVA (GraniteDS) e .NET (FluorineFX).
Na época que este guia foi escrito, a versão 3.0.0.477 do framework FLEX fornecido pela Adobe era a versão corrente
usada no Sicoob Confederação.
Separação entre código de negócio e interface gráfica
Existe uma clara divisão entre o código que deve ser usado para
implementar a interface gráfica com o usuário e o código que será usado
para traduzir as regras de negócio de uma funcionalidade.
Em hipótese alguma deve ser usado código de negócio na camada de
apresentação. Se existir algum tipo de validação negocial este deve ser feito
na camada de negócio (projeto EJB). Esta regra ajuda na portabilidade do
aplicativo para outra tecnologia de forma transparente, sem necessidade de
grandes alterações no código FLEX.
Lembrando que todo arquivo com a extensão MXML também é uma classe
com o mesmo nome do arquivo. Se por exemplo existir um arquivo com o
nome FuncionalidadeView.mxml, existirá por conseqüência uma classe
chamada FuncionalidadeView.
Normalmente temos a interface gráfica implementada usando um arquivo
com a extensão MXML e um arquivo com a extensão AS que faz herança
desta classe definida no MXML.
Classe FuncionalidadeSelecao herda da classe FuncionalidadeView
Com a herança temos acesso a todos os elementos da interface (aqueles
que possuem a propriedade ID preenchida) e desta forma podemos
manipulá-los conforme a necessidade. Dentro do arquivo MXML devemos
ter apenas o desenho da interface, sem código de validação ou negócio.
Invocação de serviços de negócio
Para invocar métodos de negócio devemos utilizar as seguintes classes:
Servicos
ServicosJava
Um exemplo típico de utilização da classe ServicosJava:
1 private function ExecutarMetodoNegocio():void
2 {
3 var dto:RequisicaoReqDTO = new RequisicaoReqDTO();
4 var vo:FuncionalidadeVO = new FuncionalidadeVO();
5
6 vo.propriedade = "Valor da propriedade";
7
8 dto.dados.objeto = vo;
9
10 var servico:ServicoJava = new ServicoJava();
11 servico.source = "br.com.sicoob.sisbr.Projeto.ClasseFuncionalidade";
12 servico.addEventListener(ResultEvent.RESULT, MetodoNegocio_Resultado);
13 servico.bloquearOperacao = true;
14 servico.mensagemEspera = "Carregando dados ...";
15
16 servico.metodoNegocio(requisicaoDTO);
17 }
Na linha 11 estamos definindo qual a classe de negócio será usada na
requisição. Esta classe de serviço possui atributos especiais que a torna
acessível para ter seus métodos chamados pelo FLEX.
Na linha 12 definimos qual é o método em nossa classe do FLEX que irá
responder quando a operação de negócio finalizar e o resultado da operação
estiver disponível.
Na linha 13 temos a opção de bloquear outras ações do usuário enquanto o
método de negócio estiver sendo executado, logo abaixo definimos a
mensagem que será exibida ao usuário enquanto a operação de negócio
não for finalizada.
Finalmente na linha 16 estamos chamado o método de negócio (chamado
“metodoNegocio”) passando como parâmetro um objeto genérico de
requisição.
Herança dos tipos DTO
Toda classe do tipo DTO (Data Transfer Object) deve herdar do tipo
RequisicaoReqDTO. Se a herança não for implementada a aplicação terá
problemas no ambiente de produção.
Serialização de datas
O SISBR atualmente possui um mecanismo para tratamento de fuso
horário, porém dependendo da situação poderão ocorrer problemas no
horário de verão. Para corrigir este problema, os objetos do tipo VO e DTO
contendo atributos do tipo data deverão estar implementados da seguinte
maneira.
FLEX
O tipo Date deverá ser substituído pela interface IDateTime, que está no
projeto BancoobFlex. Para atribuir o valor para esta interface proceder da
seguinte maneira:
var meuvo:VOTeste = new VOTeste();
meuvo.minhaData = DateTimeBase.getDateTime(new Date());
ou
meuvo.minhaData =
DateTimeBase.getDateTime(componenteData.selectedDate);
A classe DateTimeBase também se encontra no projeto BancoobFlex.
Para recuperar o valor da data de atributos do tipo IDateTime utilizar a
propriedade data conforme exemplo:
var minhaData:Date = meuvo.minhaData.data;
Caso a instância já exista no atributo do tipo IDateTime o valor também
poderá ser atribuído utilizando a propriedade data conforme exemplo:
meuvo.minhaData.data = new Date();
ou
meuvo.minhaData.data = componenteData.selectedDate;
Caso seu VO Flex seja um mapeamento de uma entidade JAVA proceder da
seguinte maneira:
var meuvo:VOTeste = new VOTeste();
meuvo.minhaData = DateTimeBase.getDateTimeEntity(new Date());
ou
var meuvo:VOTeste = new VOTeste();
meuvo.minhaData =
DateTimeBase.getDateTimeEntity(componenteData.selectedDate);
.NET
O tipo DateTime deverá ser substituído pela interface IDateTime, que está
no projeto Bancoob (BancoobDLL no pacote br.com.bancoob.negocio.iface).
Para atribuir o valor para esta interface proceder da seguinte maneira:
VOTeste meuvo = new VOTeste();
meuvo.minhaData = DateTimeBase.getDateTime(new DateTime());
A classe DateTimeBase também se encontra no projeto Bancoob
(BancoobDLL no pacote br.com.bancoob.negocio.dto). Para recuperar o
valor da data de atributos do tipo IDateTime utilizar a propriedade data
conforme exemplo:
DateTime minhaData = meuvo.minhaData.data;
Caso a instância já exista no atributo do tipo IDateTime o valor também
poderá ser atribuído utilizando a propriedade data conforme exemplo:
meuvo.minhaData.data = new DateTime();
Para o desenvolimento deverá ser utilizada a DLL FluorineFx.dll de
Produção.
JAVA
No JAVA deverá ser utilizada a classe br.com.sicoob.tipos.DateTime para VO
e DTO e br.com.bancoob.persistencia.types.DateTimeDB para entidades.
É importante verificar se o VO alterado é utilizado por outras
funcionalidades e fazer as alterações em todos os casos para não gerar
problemas.
Componente de Upload e Download
O endereço de upload e download de arquivos deverá ser recuperado
sempre na classe Configuracoes no Flex, não utilizar link relativo devido a
problemas em definições de canais. No .NET o local de gravação deverá ser
recuperado na classe Configuracoes, na propriedade
localDownloadUpload, evite utilizar caminho local.
Componentes Nativos do FLEX
Os componentes nativos do FLEX (tag mxml) não devem ser usados
diretamente, existem componentes desenvolvidos pela arquitetura
corporativa que tem a mesma finalidade, porém com controles e
propriedades adicionais que facilitam a codificação dos casos de uso.
Se algum componente da arquitetura não existir, entrar em contato com a
GEARQ para o devido tratamento.
Tipos de Aplicação
Módulos ou Aplicações
Este tipo de aplicação é grande maioria dos módulos presentes no SISBR
WEB. Nesta modalidade os módulos que podem representar um ou mais
casos de uso são abertos quando o usuário seleciona um item de menu do
aplicativo.
Plataformas
Quando uma aplicação possui necessidades especiais em relação a
usabilidade e experiência com o usuário, agrupam um conjunto de
funcionalidades que não fariam sentido estarem separadas então este é o
caso para a criação de uma plataforma. Atualmente contamos com as
seguintes plataformas:
Plataforma de Atendimento
Plataforma Multi-Cooperativa (Contabilidade)
Plataforma de Monitoração
Plataforma de Documentação
Plataforma de Apoio a Decisão (PAD)
Plataforma da Tecnologia da Informação (PTI)
Seleção Geral e Procurar Geral
O objetivo deste documento é divulgar os componentes Seleção Geral
Java e Procurar Geral Java, explicando detalhadamente o funcionamento e
configuração dos mesmos. Esperamos que os leitores (desenvolvedores e
analistas) deste documento consigam utilizar esses componentes nos seus
projetos dinamizando o desenvolvimento das funcionalidades para o
SisbrWeb.
O componente seleção geral Java
O Seleção Geral Java é um componente que facilita o
desenvolvimento de funcionalidades para o SisbrWeb, podendo ser utilizado
no desenvolvimento de casos de uso do tipo CRUD (Create, Retrieve,
Update e Delete). Esse componente funciona, basicamente, através das
configurações realizadas no banco de dados, onde deve-se informar a
configuração geral (chamada de definição) e as configurações específicas
(chamada de colunas).
Visualmente esse componente é formado por uma combo com opções
de procura (Tipo de Procura), por um campo texto para digitação da
informação que deve ser pesquisada (Procurar Por), por um botão
(Procurar) e por uma grid onde as informações pesquisadas serão
apresentadas (Selecionar). A figura abaixo mostra o componente Seleção
Geral Java:
Figura 1. Exemplo de uso do componente Seleção Geral Java.
Configurando o componente Seleção Geral Java
O funcionamento do componente Seleção Geral Java é baseado em
configurações realizadas no banco de dados COIN_TBP, no esquema GEN,
nas tabelas DEFINICAOSELECAOGERAL e COLUNASELECAOGERAL. Essas
configurações serão detalhadas abaixo.
Tabela DefinicaoSelecaoGeral
IDDEFINICAOSELECAOGERAL: O identificador das definições de
configuração do componente Seleção Geral Java.
NUMCOLUNAPADRAO: O número da coluna representa a opção da combo
Tipo de Procura que será selecionada por padrão na inicialização do
componente. Esse número obedece à notação Java de numeração, portanto
para selecionar a primeira coluna deve-se informar o valor 0. Esse valor
indica o campo NUMINDEX da tabela GEN.COLUNASELECAOGERAL.
BOLHABILITARFILTRO: Esse campo existe para compatibilização das
versões do componente. Nessa versão (1.0) o valor deve ser sempre 1.
NUMLISTA: Esse campo existe para compatibilização das versões do
componente. Nessa versão (1.0) o valor deve ser sempre 0.
DESCCONSULTABASE: Esse campo deve ser preenchido com a parte inicial
da consulta a ser realizada no banco de dados.
Ex: select idUsuario, descNomeUsuario from Usuario.
NOMEJNDIDATASOURCE: Nome JNDI do data source que deverá ser
utilizado para conexão com o banco de dados onde será realizada a
consulta. Se o banco de dados onde a consulta deve ser realizada for de
cooperativa, o nome JNDI deve ser jdbc/BancoobDS.
BOLDATASOURCECOOPERATIVA: Esse campo indica se o banco de dados
onde a consulta deve ser realizada é de cooperativa.
Para facilitar, abaixo, segue um exemplo de script de inserção de
definição do Seleção Geral Java.
Scripts DefinicaoSelecaoGeral
-- Exemplo de insert da tabela GEN.DefinicaoSelecaoGeral.
-- Nesse exemplo o data source é de cooperativa.
insert into GEN.DefinicaoSelecaoGeral values
(6035, -- IDDEFINICAOSELECAOGERAL
0, -- NUMCOLUNAPADRAO
1, -- BOLHABILITARFILTRO
0, -- NUMLISTA
'SELECT * FROM USUARIO', -- DESCCONSULTABASE
'jdbc/BancoobDS', -- NOMEJNDIDATASOURCE
1) -- BOLDATASOURCECOOPERATIVA
Figura 2. Listagem SQL de insert na tabela GEN.DEFINICAOSELECAOGERAL usando data
source de cooperativa.
-- Exemplo de insert da tabela GEN.DefinicaoSelecaoGeral.
-- Nesse exemplo o data source é DB2.
insert into GEN.DefinicaoSelecaoGeral values
(5151, -- IDDEFINICAOSELECAOGERAL
0, -- NUMCOLUNAPADRAO
1, -- BOLHABILITARFILTRO
0, -- NUMLISTA
'SELECT * FROM CTR.CTR_TRANSACAO', -- DESCCONSULTABASE
'jdbc/BancoobCtrDS', -- NOMEJNDIDATASOURCE
0) – BOLDATASOURCECOOPERATIVA
Figura 3. Listagem SQL de insert na tabela GEN.DEFINICAOSELECAOGERAL usando o
data source de DB2.
Tabela ColunaSelecaoGeral
IDCAMPO: Esse identificador é gerado automaticamente. Dessa forma o
script de inclusão pode ter o valor default definido por padrão para esse
campo.
IDDEFINICAOSELECAOGERAL: Chave estrangeira da tabela
GEN.DEFINICAOSELECAOGERAL. Essa chave conecta as colunas à definição
do componente Seleção Geral Java.
NOMECAMPO: Nome do campo que será pesquisado no banco de dados.
Esse parâmetro é case sensitive e deverá ter a mesma grafia do metadado
do banco de dados.
DESCMASCARA: Máscara que pode ser usada na formatação do campo
Procurar Por. Essa máscara funcionará somente para a coluna selecionada.
BOLINCREMENTAL: Esse campo existe para compatibilização das versões do
componente. Nessa versão (1.0) o valor deve ser sempre 0.
NUMINDEX: Esse campo indica qual a posição que a coluna de pesquisa
aparecerá na combo Procurar Por. Esse campo deve ser informado com
atenção, pois usa a notação Java. Portanto, a primeira coluna (o primeiro
item da combo Tipo de Procura) deve ter o valor 0. Na configuração do
componente, mais especificamente na configuração da combo Procurar Por,
as opções serão ordenadas por esse campo.
VALLARGURACOLUNA: Valor que corresponde à largura da coluna.
Atualmente esse campo existe para compatibilização das versões do
componente. Nessa versão (1.0) o valor deve ser sempre 10.
BOLVISIVELPROCURA: Esse campo informa se a coluna é visível para a
procura. Se esse campo tiver com o valor 0 ele não aparecerá na combo de
opções de pesquisa (combo Tipo de Procura).
BOLPESQUISARMASCARA: Esse campo informa se a pesquisa será realizada
por um valor formatado com a máscara definida no campo
GEN.COLUNASELECAOGERAL.DESCMASCARA.
NUMCOLUNARETORNO: Esse campo existe para compatibilização das
versões do componente. Nessa versão (1.0) o valor deve ser sempre 0.
DESCPROCURAPOR: Esse campo é o restante da consulta informada na
tabela de GEN.DEFINICAOSELECAOGERAL. O valor informado no campo
DESCCONSULTABASE (tabela GEN.DEFINICAOSELECAOGERAL) é
concatenado com o valor desse campo. A variável da consulta é case
sensitive e deve ter mesma grafia que o metadado da tabela do banco de
dados . Ela deve ser declarada entre chaves e marcada com cifrão. (ex:
${variavel}). Dessa forma, o valor digitado no campo texto Procurar Por
será substituído pela variável e a pesquisa será realizada. Abaixo
apresentamos um exemplo de valor para esse campo.
Ex: where idUsuario = ${idUsuario}.
CODTIPOALINHAMENTO: O código do tipo de alinhamento define como a
coluna será alinhada na grid de resultados apresentados. Os alinhamentos
possíveis são: à esquerda (valor 0), centralizado (valor 1), à direita (valor
2).
CODTIPOALINHAMENTOCABECALHO: O código do tipo de alinhamento
define como o cabeçalho da coluna será alinhada na grid de resultados
apresentados. Os alinhamentos possíveis são: à esquerda (valor 0),
centralizado (valor 1), à direita (valor 2).
CODTIPOCOLUNAGRID: O código do tipo da coluna serve para informar que
tipo de dados será apresentado na grid de resultados (texto, checkbox,
etc). Nessa versão (1.0) o valor deve ser sempre 0.
CODTIPOFORMATOTEXTO: Esse código serve para informar o tipo do campo
de pesquisa na tela (caixa de texto Procurar Por). A validação será
configurada de acordo com o valor informado. Os valores possíveis para
esse campo são: SEMFORMATO = 0; NUMERICO = 1; MAIUSCULAS = 2;
MINUSCULAS = 3; DATA = 4; SIMNAO = 5; VERDADEIROFALSO = 6;
LISTAVALORES = 7.
CODTIPOSORT: Esse código serve para informar o tipo das células da grid
de resultados quando a ordenação for solicitada. A ordenação é solicitada
quando o usuário clica no cabeçalho da coluna. Os tipos possíveis são:
STRING = 1; NUMERIC = 2; DATE = 3; DATETIME = 4; TIME = 5.
DESCTITULO: O valor desse campo será apresentado na combo de Tipo de
Procura e no cabeçalho da grid de resultados.
BOLVISIVEL: Esse campo indica se a coluna é visível ou não na grid de
resultados. Dessa forma, se o campo estiver com o valor 1, uma coluna
com os valores recuperados na pesquisa serão apresentados na grid de
resultados. Caso o valor seja 0, o campo poderá ser usado para pesquisa,
mas não será visualizado na grid de resultados.
Script ColunaSelecaoGeral
-- Exemplo de insert da tabela GEN.ColunaSelecaoGeral
insert into GEN.ColunaSelecaoGeral values
(default, -- IDCAMPO
6035, -- IDDEFINICAOSELECAOGERAL
'IDUsuario', -- NOMECAMPO
null, -- DESCMASCARA
0, -- BOLINCREMENTAL
1, -- NUMINDEX
10, -- VALLARGURACOLUNA
1, -- BOLVISIVELPROCURA
0, -- BOLPESQUISARMASCARA
0, -- NUMCOLUNARETORNO
'where idUsuario = ${IDUsuario}', -- DESCPROCURAPOR
1, -- CODTIPOALINHAMENTO
1, -- CODTIPOALINHAMENTOCABECALHO
1, -- CODTIPOCOLUNAGRID
2, -- CODTIPOFORMATOTEXTO
1, -- CODTIPOSORT
'ID USUÁRIO', -- DESCTITULO
1) -- BOLVISIVEL
Figura 4. Listagem SQL de insert na tabela GEN.COLUNASELECAOGERAL.
Usando o componente Seleção Geral Java
Após realizar todas as configurações necessárias para o
funcionamento do componente, vamos iniciar a codificação da parte Flex.
Abaixo apresentamos um trecho de código onde instanciamos o
componente e definimos os seus atributos.
<selecaoGeral:SelecaoGeralV2View
tipoProcura="6035"
numCooperativa="4280">
</selecaoGeral:SelecaoGeralV2View>
Figura 5. Listagem MXML com exemplo de uso do componente Seleção Geral Java.
Nesse trecho de código definimos o valor do atributo tipoProcura
para o valor do identificador da tabela GEN.DEFINICAOSELECAOGERAL. Se
o componente estiver configurado para usar data source de cooperativa,
então o atributo numCooperativa poderá ser informado. Dessa forma, a
pesquisa será realizada na base da cooperativa informada. Caso o número
da cooperativa não seja informado, então a consulta será realizada na base
da cooperativa que o usuário estiver logado.
Como dissemos anteriormente, o componente Seleção Geral Java
será muito utilizado em telas do tipo CRUD. Assim, o trecho de código da
Figura 5 deve ser combinado com o componente ListaCadastroView.
Abaixo, nas Figuras 6, 7 e 8, veremos um exemplo dessa integração.
Perceba que a tela de inclusão/edição/visualização continua sendo
implementada separadamente, bastando informá-la na tag
<formularioCadastro>.
<?xml version="1.0" encoding="utf-8"?>
<ListaCadastroView
xmlns="br.com.bancoob.componentes.cadastro.*"
xmlns:mx="http://www.adobe.com/2006/mxml"
xmlns:ns1="br.com.bancoob.componentes.painellista.*"
xmlns:tipoProcesso="br.com.sicoob.sisbr.smartConcept.modelagemNe
gocio.modulos.tipoProcesso.*"
xmlns:tipoProcesso1="br.com.sicoob.sisbr.tipoProcesso.*"
xmlns:servico="br.com.bancoob.util.servico.*"
xmlns:selecaoGeral="br.com.bancoob.sisbr.componentes.selecaoGera
l.*"
backgroundAlpha="0.0" borderStyle="solid" borderThickness="0"
fecharFormularioAoIncluir="false" deveLimparPesquisa="false"
width="700" height="500">
<painelLista>
<selecaoGeral:SelecaoGeralV2View tipoProcura="5151" />
</painelLista>
<servicoExclusao>
<servico:ServicoJava
source="br.com.sicoob.sisbr.smartConcept.modelagemNegocio.servic
os.TipoProcessoServico"
bloquearOperacao="true" mensagemEspera="Excluindo os dados..."/>
</servicoExclusao>
<formularioCadastro>
<tipoProcesso1:TipoProcessoEdicao/>
</formularioCadastro>
</ListaCadastroView>
Figura 6. Listagem MXML com exemplo de integração ListaCadastroView com Seleção Geral Java.
package {
import br.com.bancoob.componentes.painellista.PainelListaBanco;
import br.com.bancoob.dto.ConsultaDto;
import br.com.bancoob.dto.RequisicaoDTO;
import
br.com.sicoob.sisbr.smartConcept.modelagemNegocio.dto.ModelagemN
egocioReqDTO;
import
br.com.sicoob.sisbr.smartConcept.modelagemNegocio.vo.TipoProcess
oVO;
import br.com.sicoob.sisbr.tipoProcesso.TipoProcessoSelecaoView;
import mx.events.FlexEvent;
public class ManterTipoProcesso extends TipoProcessoSelecaoView
{
//**************
// Construtores:
//**************
public function ManterTipoProcesso():void {
super();
include 'RegistroVO.as';
}
//**************
// Eventos:
//**************
protected override function init(event: FlexEvent):void {
super.init(event);
}
//***************************************
// Metodos Herdados:
//***************************************
protected override function
montarDtoExclusao(item:Object):RequisicaoDTO {
var dto: ModelagemNegocioReqDTO = new
ModelagemNegocioReqDTO();
var tipoProcesso : TipoProcessoVO = new
TipoProcessoVO();
tipoProcesso.codigo = item.CODTIPOPROCESSO;
tipoProcesso.nome = item.DESCTIPOPROCESSO;
dto.dados.TipoProcesso = tipoProcesso;
return dto;
} } }
Figura 7. Listagem ActionScript com exemplo de integração ListaCadastroView com Seleção Geral Java.
Figura 8. Tela de integração do ListaCadastroView e Seleção Geral Java.
O componente Procurar Geral Java
O Procurar Geral Java é um componente que facilita o
desenvolvimento de funcionalidades que necessitam selecionar dados de
forma mais criteriosa. Esse componente também é conhecido como Campo
Lupa. Ele caracteriza-se por um campo para digitação (que pode ser
habilitado ou desabilitado), e um botão com a imagem de uma lupa. A
função desse componente é pesquisar informações através do identificador
informado no campo para digitação. O resultado da pesquisa aparece ao
lado do botão com a imagem de lupa. A Figura 9 e a Figura 13 mostram
exemplos desse componente em funcionamento.
Figura 9. Exemplo de uso do componente Procurar Geral Java.
O componente Procurar Geral Java usa a infraestrutura do
componente Seleção Geral Java, ou seja, todas as definições e colunas de
definições que estão criadas para o componente Seleção Geral Java podem
ser utilizadas pelo componente Procurar Geral Java. Para utilizar o
componente Procurar Geral Java no seu caso de uso basta inserir o seguinte
código, informando o tipoProcura da consulta desejada (previamente
cadastrada na tabela GEN.DEFINICAOSELECAOGERAL), o campoCodigo e o
campoDescricao.
<selecaoGeral:ProcurarGeralV2 id="procurarGeral"
tipoProcura="5151"
titulo="Procurar Geral"
campoCodigo="CODTIPOPROCESSO"
campoDescricao="DESCTIPOPROCESSO"/>
Figura 10. Listagem MXML com exemplo de uso do componente Procurar Geral Java.
Usando o componente Procurar Geral Java
O componente Procurar Geral Java tem dois atributos iguais ao do
componente Seleção Geral Java. São eles: tipoProcura e
numCooperativa. Esses dois atributos têm as mesmas funções dos
atributos do componente Seleção Geral Java. Os outros dois atributos
específicos do componente Procurar Geral Java serão detalhados abaixo:
campoCodigo: O campo código referencia o nome do atributo do
objeto selecionado, ou seja, o nome da coluna chave primária da
tabela pesquisada.
campoDescricao: O campo descrição, por sua vez, referencia o
nome do atributo do objeto selecionado que deve ser mostrado na
tela.
Para entender o funcionamento desses dois campos vamos clicar no
botão Lupa. A tela do componente Seleção Geral irá abrir, conforme a
Figura 11.
Figura 11. Tela do componente Seleção Geral Java aberta a partir do componente Procurar Geral Java.
Após o preenchimento do campo Procurar Por e do clique no botão
Procurar, o componente Seleção Geral Java irá executar a consulta
configurada e apresentará o resultado, conforme a Figura 12.
Figura 12. Tela do componente Seleção Geral Java apresentando os resultados da pesquisa.
Ao selecionar o item da grid de resultados e clicar no botão OK, o
item selecionado será incluído na tela inicial do nosso exemplo. A imagem
da Figura 13 mostra esse comportamento.
Figura 13. Tela principal do componente Procurar Geral Java apresentando um elemento selecionado.
Lista de componentes visuais
Rótulo
Rótulo MultLine
Campo Data
Campo Hora
Tipo Hora
Texto
Somente Maiúsculas
Permitir Valores Negativos
Aceitar Nulo
Formato
Tipo de Entrada
Valor
Casas Decimais
Agrupar Dígitos
Validar Obrigatório
Validar Email
Validar Mensagem
Valor Mínimo
Valor Máximo
Navegar com tecla Enter
Travar Digitação Casas Decimais
Arredondamento de Valores
Permitir Habilitar
Validar
Check
Navegar com tecla Enter
Permitir Habilitar
Combo
Label Item Opcional
Validar Mensagem
Validar Obrigatório
Travar Seleção
Conteúdo Maiúsculo
Somente Maiúsculas
Identificador Item
Navegar com tecla Enter
Permitir Habilitar
Inserir Item Opcional
Procurar Item por Nome
Procurar Item por Objeto
Validar
Is Selecionado
Combo Booleana
Label Verdadeiro
Label Falso
Valor Selecionado
Contador
Permitir Habilitar
Editor Texto
Permitir Habilitar
Input CNPJ
Input CPF
Máscara
Rádio
Permitir Habilitar
Navegar com tecla Enter
Rádio Grupo Bancoob
Texto Área
Permitir Habilitar
Navegar com tecla Enter
Somente Maiúsculas
Validar Obrigatório
Validar Mensagem
Lista Seleção
Pré Impressão
Título
Sicoob Tree
Validadores
Validador Campo Preenchido
Validador CNPJ
Validador CPF
Validador Expressão Regular
Validador Igualdade Campo
Validador Intervalo Numérico
Botão
Canvas Bancoob
Canvas Validável
Tabela Paginada
Barra Botões Formulário
Painel Filtro
Painel Lista
Advanced Data Grid Bancoob
Alerta
Calendário
Janela
Top Related