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

Responder a