WebSphere Message Broker, Versão 8.0.0.5 Sistemas operacionais: AIX, HP-Itanium, Linux, Solaris, Windows, z/OS

Consulte as informações sobre a versão mais recente do produto em IBM Integration Bus, Versão 9.0

Iterando com um Filtro

Utilize um FilterIterator para filtrar elementos na árvore de mensagens.

O exemplo a seguir mostra como utilizar um FilterIterator para fazer a iteração sobre uma árvore de mensagens, extraindo apenas os componentes do Toughened Steel:
class ToughenedSteelPartsIterator extends FilterIterator
{
  public function __construct(Iterator $it)
  {
    parent::__construct($it);
  }

  function accept()
  {
    /*** only check components ***/
    if (!strcmp($this->key(),"component"))
    {
      /*** Return true for Toughened Steel ***/
      if (!strcmp($this->current()->material,"Toughened Steel"))
      {
        return true;
      }
    }
    return false;
  }
}

class PhpComputeNode_Iterator_Filter
{
  /**
   * @MessageBrokerSimpleTransform
   */
  função avaliar($output_assembly, $input_assembly) {
    ob_start();
    echo "\nIterating over parts which have a material name of Toughened Steel\n";

    $it  = new MbsElementIterator($input_assembly->XMLNSC->getFirstChild());
    $rii = new ToughenedSteelPartsIterator(new RecursiveIteratorIterator($it, RecursiveIteratorIterator::CHILD_FIRST));

    foreach($rii as $key=>$value)
    {
      echo $key.' = '.$value->name." ".$value->price." ".$value->material."\n";
    }

    $output_assembly->XMLNSC->results->contents = ob_get_contents();
    ob_end_clean();
  }
}
A mensagem a seguir é utilizada como entrada para o FilterIterator mostrado acima:
<machine>
 <assembly name="Extremidade Superior do Bloco do Motor">
  <assembly name="Cabeçote do Cilindro">
   <assembly name="Conjunto do Excêntrico">
     <component name="Excêntrico" price="3.50" material="Aço Temperado"/>
     <component name="Mola Helicoidal" price="1.50" material="Aço Temperado"/>
     <component name="Anel" price="1.50"  material="Aço Temperado"/>
     <component name="Anel" price="1.50"  material="Aço Temperado"/>
     <component name="Assento" price="3.50" material="Aço Temperado"/>
   </assembly>
   <assembly name="Eixo Excêntrico">
     <component name="Eixo" price="3.50" material="Aço Macio"/>
     <component name="Excêntrico" price="1.50" material="Aço Temperado" />
     <component name="Excêntrico" price="1.50" material="Aço Temperado" />
     <component name="Excêntrico" price="1.50" material="Aço Temperado" />
     <component name="Excêntrico" price="1.50" material="Aço Temperado" />
     <component name="Rolamento" price="1.00" material="Aço Temperado" />
     <component name="Rolamento" price="1.00" material="Aço Temperado" />
     <component name="Dente de Roda de Corrente Excêntrico" price="4.20" material="Aço Temperado" />
     <component name="Corrente do Excêntrico" price="4.20" material="Aço Temperado" />
     <component name="Tensionador" price="0.50" material="Plástico" />
   </assembly>
   <component name="Cabeçote" price="12.40" material="Liga" />
   <component name="Plugue" price="3.00"  material="Baquelite/Aço" />
  </assembly>
  <assembly name="Bloco do Cilindro">
   <component name="Cilindro" price="20.00"  material="Liga" />
   <component name="Luva" price="10.00"  material="Aço Temperado" />
  </assembly>
  <assembly name="Carburador">
  <assembly name="Conjunto do Pistão"/>
   <component name="Pistão" price="20.00" material="Aço Temperado" />
   <component name="Anel" price="10.00" material="Aço Temperado" />
   <component name="Anel" price="10.00" material="Aço Temperado" />
   <component name="Haste do Excêntrico" price="10.00" material="Aço Temperado" />
  </assembly>
 </assembly>
</machine>
A saída resultante mostra apenas as peças cujo material seja Aço Temperado:
<results><contents>
Fazendo a iteração sobre as peças que possuem um nome de material Aço Temperado
component = Excêntrico de 3,50 de Aço Temperado
component = Assento de 3,50 de Aço Temperado
component = Excêntrico de 1,50 de Aço Temperado
component = Excêntrico de 1,50 de Aço Temperado
component = Excêntrico de 1,50 de Aço Temperado
component = Excêntrico de 1,50 de Aço Temperado
component = Rolamento de 1,00 de Aço Temperado
component = Rolamento de 1,00 de Aço Temperado
component = Dente de Roda da Corrente do Excêntrico de 4,20 de Aço Temperado
component = Corrente do Excêntrico de 4,20 de Aço Temperado
component = Luva de 10,00 de Aço Temperado
component = Pistão de 20,00 de Aço Temperado
component = Haste do Excêntrico de 10,00 de Aço Temperado
</contents></results>

Para obter informações adicionais sobre a classe MbsElementIterator, consulte MbsElementIterator.

Avisos | Marcas Registradas | Downloads | Biblioteca | Suporte | Feedback

Copyright IBM Corporation 1999, 2014Copyright IBM Corporation 1999, 2014.

        
        Última atualização:
        
        Última atualização: 2015-02-28 18:30:55


Tópico de ConceitoTópico de Conceito | Versão 8.0.0.5 | bc28330_