DClick

Transferindo Dados entre Flex e Java Utilizando VO (Value Object)


VO é um Pattern para transferência de dados. A utilização desse Pattern no Flex acessando a camada de negócio (Java, no caso desse exemplo) através do protocolo AMF (Remoting) é muito simples e prática. Um objeto VO pode possuir vários tipos de objetos encapsulados. Ao trafegar os dados, apenas o objeto VO é enviado e recebido como parâmetro, facilitando assim a manutenção, organização e entendimento do código, uma vez que o Java já faz a serialização do VO enviado pelo Flex. Imagine a necessidade de enviar mais de 20 dados de um novo funcionário, através de um formulário de cadastro. Como seriam passados esses parâmetros sem a utilização de VO? E se futuramente tivesse que adicionar ou remover alguns dados? Agora será apresentado um exemplo prático: Tanto no backend (Java) quanto no frontend (Flex) é criado uma classe VO. As duas classes possuem as mesmas propriedades. No VO do Flex é feito um registro da classe Java.

VO de funcionário em Java

package com.dclick.exemplo.vo;import java.io.Serializable;

public class FuncionarioVO implements Serializable {

static final long serialVersionUID=0;

private String nome;
private String email;
private String endereco;
private Number telefone;

// Gets e Sets
}

VO de funcionário em Flex

class com.dclick.exemplo.vo.FuncionarioVO {
public var nome: String;
public var email: String;
public var endereco: String;
public var telefone: String

public static var registered:Boolean = Object.registerClass(“com.dclick.exemplo.vo.FuncionarioVO”, com.dclick.exemplo.vo.FuncionarioVO );

}

Comparando as duas classes percebe-se que não é necessário definir os Gets e Sets da classe Flex. Na classe Flex é observado a definição da variável registered que faz a associação entre as duas camadas.

Populando o VO de funcionário no Flex.

// importa a classe VOimport com.dclick.exemplo.vo.FuncionarioVO;

// Método que popula e envia o formulário
public function enviaFuncionario():FuncionarioVO{

// Criação do objeto VO - instância da classe FuncionarioVO.
var funcionarioVO:FuncionarioVO = new FuncionarioVO();
funcionarioVO.nome = model.nome;
funcionarioVO.email = model.email;
funcionarioVO.endereco = model.telefone;
funcionarioVO.telefone = model.ramal;

// Chamada do método enviaFuncionario da conexão Remoting criada // Envio apenas do VO contendo todos os dados encapsulados.
var call = service.enviaFuncionario(funcionarioVO);

}

Manipulando o VO de funcionário no Java

package com.dclick.exemplo.funcionario;import java.io.Serializable;
com.dclick.exemplo.vo.FuncionarioVO;

public static boolean enviaFuncionario (Serializable obj){

funcionarioVO vo = (FuncionarioVO) obj;

// Agora podemos obter todos os dados do nosso VO.
String nome = vo.getNome();
String email = vo.getEmail();
String endereco = vo.getEndereco();
String telefone = vo.getTelefone()

// Continua o código da classe.
return true;

}

Agora, suponha que esse funcionário estará alocado em mais de um projeto. Nesse caso é necessário criar um VO de projetos e popular dentro do VO de funcionário.

VO de projetos em Java

package com.dclick.exemplo.vo;import java.io.Serializable;

public class ProjetoVO implements Serializable {

static final long serialVersionUID=0;

private String codigo_projeto;
private String nome_projeto;

// Gets e Sets
}

VO de projetos em Flex

class com.dclick.exemplo.vo.ProjetoVO {public var codigo_projeto: String;
public var nome_projeto: String;

public static var registered:Boolean = Object.registerClass(“com.dclick.exemplo.vo.ProjetoVO”, com.dclick.exemplo.vo.ProjetoVO );
}

Alteração da Classe VO de funcionários em Java

package com.dclick.exemplo.vo;import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;

public class FuncionarioVO implements Serializable {

static final long serialVersionUID=0;

private String nome;
private String email;
private String endereco;
private Number telefone;

private List projetoVO = new ArrayList();

// Gets e Sets
}

Alteração da Classe VO de funcionários em Flex

class com.dclick.exemplo.vo.FuncionarioVO {public var nome: String;
public var email: String;
public var endereco: String;
public var telefone: String

public var projeto_vo:Array = new Array();

public static var registered:Boolean = Object.registerClass(“com.dclick.exemplo.vo.FuncionarioVO”, com.dclick.exemplo.vo.FuncionarioVO );

}

Populando o VO de funcionário no Flex.

// importa a classe VO
import com.dclick.exemplo.vo.FuncionarioVO;
import com.dclick.exemplo.vo.ProjetoVO; // Método que popula e envia o formulário
public function enviaFuncionario():FuncionarioVO{

// Criação do objeto VO - instância da classe FuncionarioVO.
var funcionarioVO:FuncionarioVO = new FuncionarioVO();
funcionarioVO.nome = model.nome;
funcionarioVO.email = model.email;
funcionarioVO.endereco = model.telefone;
funcionarioVO.telefone = model.ramal;
funcionarioVO.projeto_vo = new Array():

for (var i:Number = 0; i
var projetoVO:ProjetoVO = new ProjetoVO;
projetoVO.codigo_projeto = model.projetos_selecionados[i];
funcionarioVO.projeto_vo.addItem(projetoVO);
}

// Chamada do método enviaFuncionario da conexão Remoting criada // Envio apenas do VO contendo todos os dados encapsulados.
var call = service.enviaFuncionario(funcionarioVO);

}

Manipulando o VO de funcionário no Java

package com.dclick.exemplo.funcionario;import java.io.Serializable;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;

com.dclick.exemplo.vo.FuncionarioVO;

public static boolean enviaFuncionario (Serializable obj){

funcionarioVO vo = (FuncionarioVO) obj;

// Agora podemos obter todos os dados do nosso VO.
String nome = vo.getNome();
String email = vo.getEmail();
String endereco = vo.getEndereco();
String telefone = vo.getTelefone()

List projetos = vo.getprojetosVO();
Iterator i = projetos.iterator();

while (i.hasNext()){
ProjetoVO projVO = (ProjetoVO) i.next();
System.out.println(“Código do Projeto “ + projVO.codigo_projeto)
}

// Continua o código da classe.
return true;
}

Por Rubens Albuquerque em 16/February/2006 | Comentar | Trackback


No Translations

6 comentários para “Transferindo Dados entre Flex e Java Utilizando VO (Value Object)”


[...] Na terceira aba enviamos o objeto EmployeeVO para o servidor simulando um cadastro. O método chamado é o addEmployee(). Observe a classe java e veja que estamos enviando um VO e o mesmo está sendo serializado no servidor. Caso se interessem mais por esse assunto, o Rubens fez um post a respeito disso. O objetivo aqui era mostrar que a implementação de VO pelo lado do servidor não muda com o Flex Data Services 2.0. Faça um teste de “cadastro” e veja os dados aparecendo no prompt do servidor flexservices: [...]


nem


Interessantissimo essa maneira de enviar os dados !!

Se puder exlique melhor fiquei um pouco perdido na criaçao das classes no java!
Um abraço fique com Deus


Tomei a liberdade de aprimorar seu tutorial,
acesse:
http://e-digows.blogspot.com/2007/03/flex-java-e-mysql-troca-de-objetos.html


Olá,

Eu achei muito interessante o material, porém quando tento fazer ele funcionar na minha máquina dá pau,
Gostaria de ver se vc tem o código fonte desse exemplo pra me ajudar….

Obrigado,

Jean


fala com ele

Adicionar comentário

(requerido)
(requerido, não será publicado)