A idéia é ter um Builder dentro de cada um das classes de negócio ('POJO'). Digamos que você precisa de dois métodos, um que recebe os objetos que foram mandados por XML (Java -> Flex) e um segundo que pega o objeto do Flex e transforma em XML. Com isto você verifica que toda classe possui um fromObject(obj:Object) e um toXML()
Quando o Flex recebe uma resposta XML através de um objeto HTTPService ele 'reconhece' 4 ou 5 tipos básicos de objeto, entre eles: String, Number, ObjectProxy e ArrayCollection, o que você terá que fazer é realizar as conversões necessárias destes "genéricos" em objetos "consolidados" da sua classe de negócio. É um processo trabalhoso mas te dá muita maleabilidade, principalmente se você trabalhar com uma estrutura de Map no JAVA. Aqui nós desenvolvemos uma estrutura para transformar os objetos JAVA em XML pelo XStream, ou quando não há uma conversão boa nós transformamos para MAP e através do JDOM fazemos o XML. O que você pode fazer para melhorar estes métodos é criar umalgo mais inteligente, visto que é possível instanciar os parâmetros de um objeto como se fosse um array -var numero:Number = objetoX["numero"] -, por exemplo: O objeto TipoClassificacao possui 2 parâmetros então podemos fazer algo como: public function toXML() :String { for ( var parametro:Object in tipoClassificacao ) { if ( tipoClassificacao[parametro] is String || tipoClassificacao[parametro] is Number ) { xml += "<" + parametro ">" + tipoClassificacao[parametro] + "</" + parametro + ">"; } if ( tipoClassificacao[parametro] is ArrayCollection ) { var lista:ArrayCollection = tipoClassificacao[parametro]; for each ( var item:Object in lista ) { xml += item.toXML(); } } } } Bom, espero que ajude, ficou bem confuso mas é só pra demonstrar que dá pra ser feito, tendo mais dúvidas é só mandar. Bons códigos, -Daniel Negri =================================================================================================================== ============================= CLASSES DE EXEMPLO ======================================= package br.com.empresaX.negocio { [Bindable] public class TipoClassificacao { //private int codigo; //private String descricao; public var codigo:Number; public var descricao:String; public static const PARCEIRO_PRINCIPAL:Number = 1; public static const PAGAMENTO_ANTECIPADO:Number = 2; public static const PROVISAO:Number = 3; public static const JUROS:Number = 4; public static const DESCONTO:Number = 5; public static const BONIFICACAO:Number = 6; public static const NOTA_DE_DEBITO:Number = 7; public static const BANCO:Number = 8; public static const ADIANTAMENTO_VIAGEM:Number = 9; public function TipoClassificacao(obj:Object = null) { super(); this.codigo = 0; this.descricao = ""; if ( obj != null ) { fromObj(obj); } } public function fromObj(obj:Object):void { this.codigo = obj.codigo; this.descricao = obj.descricao; } public function toXML():String { var xml:String = "<tipoClassificacao>"+ "<codigo>" + this.codigo + "</codigo>" + "<descricao>" + this.descricao + "</descricao>"; xml += "</tipoClassificacao>" return xml; } } } ------------------------------------------------------------------------------------------------------------- package br.com.empresaX.negocio { import mx.collections.ArrayCollection; import br.com.agroquima.negocio.geral.Empresa; [Bindable] public class ItemInterface { //private String tipoLancamento; //private TipoClassificacao tipoClassificacao; //private boolean criaLancamento; //private boolean totalizado; //private GrupoContabil grupoContabil; //private TipoTotalizacao tipoTotalizacao; public var tipoLancamento:String; public var tipoClassificacao:TipoClassificacao; public var criaLancamento:Boolean; public var totalizado:Boolean; public var grupoContabil:GrupoContabil; public var tipoTotalizacao:TipoTotalizacao; public static const TIPO_LANCAMENTO_CREDITO:String = "C"; public static const TIPO_LANCAMENTO_DEBITO:String = "D"; public function ItemInterface(obj:Object = null){ super(); this.tipoLancamento = ""; this.tipoClassificacao = new TipoClassificacao(); this.criaLancamento = false; this.totalizado = false; this.grupoContabil = new GrupoContabil(); this.tipoTotalizacao = new TipoTotalizacao(); if ( obj != null ) { fromObj(obj); } } public function fromObj(obj:Object):void { this.tipoLancamento = obj.tipoLancamento; if ( obj.tipoClassificacao != null ) { this.tipoClassificacao.fromObj(obj.tipoClassificacao); } if ( (obj.criaLancamento != null ) && ( (obj.criaLancamento == "S") || (obj.criaLancamento == "true") || (obj.criaLancamento == true) ) ) { this.criaLancamento = true; } else { this.criaLancamento = false; } if ( (obj.totalizado != null ) && ( (obj.totalizado == "S") || (obj.totalizado == "true") || (obj.totalizado == true) ) ) { this.totalizado = true; } else { this.totalizado = false; } if ( obj.grupoContabil != null ) { this.grupoContabil.fromObj(obj.grupoContabil); } if ( obj.tipoTotalizacao != null ) { this.tipoTotalizacao.fromObj(obj.tipoTotalizacao); } } public function toXML():String { /** public var tipoLancamento:String; public var tipoClassificacao:TipoClassificacao; public var criaLancamento:Boolean; public var totalizado:Boolean; public var grupoContabil:GrupoContabil; public var tipoTotalizacao:TipoTotalizacao; */ var xml:String = "<itemInterface>" + "<tipoLancamento>" + this.tipoLancamento + "</tipoLancamento>" + "<criaLancamento>" + ( this.criaLancamento ? "S" : "N" ) + "</criaLancamento>" + "<totalizado>" + ( this.totalizado ? "S" : "N" ) + "</totalizado>"; if ( this.grupoContabil != null ) { xml += this.grupoContabil.toXML(); } if ( this.tipoTotalizacao != null ) { xml += this.tipoTotalizacao.toXML(); } if ( this.tipoClassificacao != null ) { xml += this.tipoClassificacao.toXML(); } xml += "</itemInterface>" return xml; } } } ----- Original Message ----- From: Mário Júnior To: flexdev@googlegroups.com Sent: Monday, November 19, 2007 9:28 AM Subject: [flexdev] Re: Criar xml dinâmico através do ActionScript Bom dia Thiago... Vc disse: "O que eu quero é isso, criar um sisteminha desktop de forma que eu não necessite de usar uma linguagem back-end." Esse é o objetivo do AIR .... criar aplicações Desktop com o mesmo conceito (e tecnologia) que o Flex provê. Vá fundo nesse caminho q vc consiguirá chegar no seu objetivo. Só lembrando que para rodar uma aplicação AIR, o plug-in do flash player não é suficiente... vc precisará baixar na máquina cliente (que rodará a aplicação) um runtime do AIR, que está disponível gratuitamente no site da adobe, mas não é nada d+.. é bem pqno e o usuário "nem sente" que o tem instalado. Qnt ao desenvolvimento, vc deverá setar no início do seu projeto q não se trata de um projeto Flex e sim de um projeto AIR ... qnt ao resto, componentes, actionscript, etc... é a mesma coisa. Um abraço e boa sorte! Júnior -- Mário de Souza Júnior Programador Java / Flex (actionscript) / PHP (44) 4009-3550 Maringá-PR [EMAIL PROTECTED] (gtalk, msn, etc..) --~--~---------~--~----~------------~-------~--~----~ Você recebeu esta mensagem porque está inscrito na lista "flexdev" Para enviar uma mensagem, envie um e-mail para flexdev@googlegroups.com Para sair da lista, envie um email em branco para [EMAIL PROTECTED] Mais opções estão disponíveis em http://groups.google.com/group/flexdev -~----------~----~----~----~------~----~------~--~---