quinta-feira, 25 de agosto de 2016

Sessão Variable

Sessão Variable 

Use uma  variável de sessão  para definir ou remover uma variável que está vinculado a uma mensagem para todo seu ciclo de vida, potencialmente através de múltiplos fluxos, aplicações e até mesmo servidores. As variáveis ​​de sessão pode ser facilmente propagado a partir de um fluxo para outro através do transporte VM, ou uma referência de fluxo, mas não através do conector HTTP .Pelo contrário, as variáveis ​​especificadas através do transformador variável persistirem apenas enquanto a mensagem com o qual eles estão associados permanece dentro do mesmo fluxo. Para saber mais sobre escopos de mensagens, consulte  Conceitos de mula .
O transformador variável de sessão é diferente do transformador variável eo transformador propriedade. Consulte a tabela abaixo para uma comparação destes três transformadores.
Sessão transformador variávelTransformador variávelpropriedade Transformer
Usar
Use para definir ou remover uma variável que está ligada à mensagem atual para todo o seu ciclo de vida, através de múltiplos fluxos, aplicações e até mesmo servidores.
Use para definir ou remover uma variável na mensagem, vinculado ao fluxo de corrente.
Use para definir, remover ou copiar as propriedades do escopo de saída de uma mensagem.
Persistência
As variáveis ​​de sessão criados com um transformador variável de sessão persistir durante o ciclo de vida mensagem inteira, independentemente de barreiras de transporte, exceto para o conector HTTP que não propagá-los.
As variáveis ​​estabelecidas com um transformador variável persistem somente para o fluxo de corrente e não pode atravessar a barreira de transporte.
Uma vez que uma mensagem atinge um de saída do conector, todas as propriedades no âmbito de saída são enviados com a mensagem na forma de metadados específico de transporte (cabeçalhos HTTP para uma saída do conector HTTP, por exemplo).
Depois de ter definido uma variável de sessão, você pode chamá-lo usando o sessionVarsmapa em uma expressão Mule. Por exemplo, se você tiver definido uma variável de sessão com o nome "SVname" eo valor "SVvalue", mais tarde você pode invocar essa variável de sessão usando a expressão #[sessionVars.SVname], que avalia a SVvalue.
Note-se que a variável de sessão está ligada a uma mensagem de mula, mas não a um MuleEvent. Isto significa que se você faz uso de um elemento que faz cópias da mensagem - como um escopo assíncrono ou uma dispersão reunir componente - mudanças nas variáveis ​​de fluxo não será mantido entre estas mensagens replicadas, mesmo que começou como um.

Configuração

session_transformer
CampoValorDescriçãoXML
Mostrar nome
variável de sessão
Personalize para exibir um nome exclusivo para o transformador em sua aplicação.
doc:name="Session Variable"
Operação
Ajuste variável de sessão
Selecione para definir uma nova variável de sessão na sua mensagem (como mostrado no exemplo imagem acima).
<set-session-variable>
Remover Session variável
Selecione para excluir uma variável de sessão existente a partir de sua mensagem.
<remove-session-variable>
Nome
String ou expressão Mule
Especifique o nome para a variável de sessão que está a criar ou identificar o nome da variável de sessão que está a remover. Se você estiver removendo as variáveis ​​de sessão, este campo aceita um curinga "*" caráter.
variableName="MyNewSessionVariableName"
Valor
String ou expressão Mule
exibe mula este campo somente se você estiver configurando uma nova variável de sessão.Especificar o valor usando uma string ou uma expressão Mule.
value="MyNewSessionVariableValue"

Exemplo

Em muitos casos, as mensagens de viajar através de múltiplos fluxos, aplicações e até mesmo servidores. Em tais casos, pode ser útil para anexar algum tipo de metadados de uma mensagem, de modo a controlar-lo a partir da sua origem até ao destino final em todos os sistemas. No exemplo abaixo, vamos definir uma variável de sessão chamada messageID. Este messageID contém um identificador exclusivo que persiste na mensagem ao longo de todo o ciclo de vida (a menos que seja explicitamente removido por outra sessão transformador variável).

Exemplo completo de código

 Ver namespace
1
2
3
4
5
6
7
<http:listener-config name="listener-config" host="localhost" port="8081"/>
<flow name="SessionVariableTransformingFlow" doc:name="SessionVariableTransformingFlow">
   <http:listener config-ref="listener-config" path="/" doc:name="HTTP Connector"/>
   <set-session-variable variableName="messageID" value="#[java.util.UUID.randomUUID().toString()]" doc:name="Set Message ID"/>
   <logger message="Variable set with #[sessionVars.messageID]" level="INFO"/>
   <remove-session-variable "NameofSessionVariabletoRemove" doc:name="Session Variable"/>
</flow>

quarta-feira, 24 de agosto de 2016

TRANSFORMANDOOPAYLOADDEJSONPARAOBJETO

MuleSoft

TRANSFORMANDO O PAYLOAD DE JSON PARA OBJETO




Então é isso pessoal recuperando um valor de dentro de um payloaddo tipo json


FIM

Referência Suporte JSON

MuleSoft



JSON, abreviação de JavaScriptObjectNotation, é um formato de intercâmbio de dados leve. É, um formato legível baseado em texto para representar estruturas de dados simples e matrizes associativas (chamados objetos).
{"Name": "John Doe","Dob": "01/01/1970","endereço de e-mail":[{"Type": "casa","Endereço": "john.doe@gmail.com"},{"Type": "trabalho","Endereço": "jdoe@bigco.com"}]}
E nós temos uma pessoa de objeto que deseja criar a partir dos dados JSON. Nós usamos anotações para descrever como realizar o mapeamento. Usamos o @JsonAutoDetectdizer que os nomes dos membros campo mapear diretamente para nomes de campo JSON:
@JsonAutoDetect
PublicclassPerson
{
privateString nome;
dobprivateString;

Lista privada <EmailAddress> emailAddresses;

Cadeia getNamepública () {nameretorno; }

setNamepublicvoid(String nome) {this.name= nome; }

Cadeia getDobpública () {returndob; }

setDobpublicvoid(dnString) {this.dob= dn; }

Lista pública <EmailAddress> getEmailAddresses() {emailAddressesde regresso; }

setEmailAddressespublicvoid(List<EmailAddress> emailAddresses) {this.emailAddresses= emailAddresses; }
}
O objeto EmailAddressque é usado nos emailAddressesé apenas mais um JavaBeancom a anotação @JsonAutoDetect.
Neste ponto Mulepode descobrir se deseja realizar uma JSON transforma com base nos parâmetros do método que está sendo chamado. Por exemplo:
PersonComponentclasse pública {
processPersonpublicvoid(@PayloadPessoa pessoa)
Aqui nós iremos receber o conteúdo do arquivo people.jsonacima em um ponto final, mula veria que Person.classé um objeto JSON anotada e que tinha recebido os dados JSON da fila JMS e executar a conversão.
JSON Global Mapper
Jackson executa mapeamentos através da ObjectMapper. Este é um objeto que pode ser configurado com outra configuração sobre como serialização de dados e definir mixinsque adicionar anotações para objetos que você não pode mudar diretamente. É possível definir um ObjectMapperglobal; um único mapeadorusado para todos os JSON transforma em sua aplicação. Isso não é necessário, uma vez Mulecria automaticamente um mapeadorde um transformador, mas usando um mapeadorglobal pode ser útil se você precisar configurar propriedades específicas sobre o mapeadorou uso mixins. Para criar um ObjectMappercompartilhada Adicione o seguinte ao seu arquivo de configuração mula:
<Json: mapeadorname= "myMapper">
<Json: mixinmixinClass= "org.mule.module.json.transformers.FruitCollectionMixin"
targetClass= "org.mule.module.json.transformers.FruitCollection" />
<Json: mixinmixinClass= "org.mule.module.json.transformers.AppleMixin"
targetClass= "org.mule.tck.testmodels.fruit.Apple" />
</ Json: mapeador>
Interceptando JSON transformações
Até agora discutimos como mula realiza transformações JSON automáticas. Às vezes você pode querer interceptar a transformação. Para isso basta criar um transformador com um retorno de método ou tipo de parâmetro de sua classe JSON:
@Transformer(SourceTypes= {InputStream.class})
pública Pessoa TOPERSON (String json, ObjectMappermapeador) lança JAXBException
{
return(Pessoa) mapper.readValue(em, Person.class);
}
A instância ObjectMapperquer é criado para você ou o contexto global para a sua aplicação é utilizada. Uma razão para isso seria a de retirar alguns elementos JSON e criar objetos a partir de um subconjunto do JSON recebido. Para mais informações sobre as transformações consulte a seção Usando Transformers.
JsonPath
Não há linguagem padrão atualmente para consultar gráficos de dados JSON, da mesma forma XPATH pode consultar documentos XML. Mulecriou uma sintaxe de consulta simples para trabalhar com dados JSON em Java, chamados JsonPath.
Esta sintaxe de consulta fornece uma maneira simples de navegar uma estrutura de dados JSON. Os seguintes dados JSON demonstra como usar consultas Caminho JSON:
{
"Name": "John Doe",
"Dob": "01/01/1970",
"endereço de e-mail":[
{
"Type": "casa",
"Endereço": "john.doe@gmail.com"
},
{
"Type": "trabalho",
"Endereço": "jdoe@bigco.com"
}
]
}
Para selecionar um uso entrada de criança:
1
nome
Para acessar dados de matriz, use colchetes com um valor de índice ou seja,
1
emailAddresses[0] / tipo
Ou em que o elemento de rota é uma matriz:
1
[0] / arrayElement
Além disso, as matrizes multi-dimensionaispodem ser acessados usando:
1
filtros [1] / init[1] [0]
Isso é raro, mas se um nome de propriedade Jsoncontém uma '/' o nome precisa besinglecitou isto é,
1
resultados / 'http: //foo.com'/value
JsonPathem expressões
JSON Path pode ser usado em expressões de mula para consultar cargas úteis de mensagens JSON para filtrar ou enriquecimento.
Por exemplo, para usar JSON Caminho para realizar roteamentobaseado em conteúdo:
<Choice>
<Quando a expressão = "emailAddresses[0] / type= 'home'" avaliador = "json">
<Acrescentar-string-transformadorde mensagem = "Endereço de casa é # [JSON: emailAddresses[0] / endereço]" />
</ Quando>
<Quando a expressão = "emailAddresses[0] / type= 'trabalho'" avaliador = "json">
<Acrescentar-string-transformadorde mensagem = "Endereço O trabalho é # [JSON: emailAddresses[0] / endereço]" />
</ Quando>
<Outro modo>
<Acrescentar-string-transformadorde mensagem = "Nenhum endereço de e-mail encontrado" />
</ Em contrário>
</ Choice>
O nome do avaliador de expressão é 'json', a expressão é qualquer expressão válida Path JSON. Note-se que ao fazer expressões booleanas, como no exemplo acima, alguns operadores são suportados:
Fim Obrigado

Recuperando Valores do payload do tipo Json

MuleSoft

Recuperando Valores do payload do tipo Json







terça-feira, 23 de agosto de 2016

Batch Commit

Empresa, CloudHub

Usando o processamento em lote, você pode refinar o trabalho que um passo lote executa sobre os registros que ele processa.

Você pode definir filtros em cima passos de lote, de modo a aceitar apenas alguns registros para processamento.

Você pode cometer registros em grupos, enviando-os como upserts granel para fontes ou serviços externos.

Este documento descreve como e quando usar filtros de lote e o lote cometer wrapper.

Pré-requisitos
Este documento assume que você está familiarizado com AnyPoint Studio, analisaram a visão geral e anatomia básica de processamento em lote, e que você entender como trabalhos em lote lidar com registros que falham processamento.

filtros
Você pode aplicar um ou mais filtros como atributos para qualquer número de passos descontínuos dentro de seu trabalho em lotes. Por ter etapas em lote aceitar apenas alguns registros para o processamento, você agilizar o processamento para que Mule incide apenas sobre os dados que são relevantes para uma etapa lote particular.

Por exemplo, você pode aplicar um filtro para a segunda etapa do lote no seu trabalho em lotes para certificar-se de que a segunda etapa só tenta processar registros que não falham durante o processamento na primeira etapa lote. Para colocar isso em contexto de um caso de uso, imagine um trabalho em lotes que usa seu primeiro passo em lotes para verificar para ver se existe um contato Salesforce para um registro; o segundo passo lote atualiza cada contato Salesforce existentes com novas informações. Em tal caso, poderia aplicar-se um filtro para o segundo passo de lote para assegurar que só processa registos que não falharam durante o primeiro passo de lote.

Os filtros são aplicados a poucos passos de lote. Usar uma expressão Accept para processar apenas os registos que, relativamente à expressão MEL, avaliam para true; se o registro for avaliada como falsa, o passo lote não processa o registro. Em outras palavras, os registros com uma expressão de filtro que resolve para false são a Mula os filtra.

O exemplo a seguir filtra todos os registros onde a idade é inferior a 21; o passo lote não processa esses registros.
Use uma Política Accept para processar apenas os registos que, em relação ao valor do atributo política de aceitar, avaliam para true. Consulte a tabela abaixo para obter uma lista dos valores disponíveis para a política de aceitar. O exemplo abaixo ilustra a segunda etapa de lote em um trabalho em lotes que processa somente os registros que falharam o processamento durante a etapa anterior. Na primeira etapa do lote, Mule verificada cada registro para ver se ele tinha um contato Salesforce existentes; a segunda etapa do lote, o que cria um contato para cada registro, processa apenas os registros falhou (ou seja, registros que não conseguiram ter uma conta existente).
Accept PolicyWhen evaluates to TRUE
NO_FAILURES
Default
Batch step processes only those records that succeeded processing in all preceding steps
ONLY_FAILURES
Batch step processes only those records that failed processing in a preceding batch step
ALL
Batch step processes all records, regardless of whether they failed processing in a preceding batch step

Filter Characteristics 

  • Batch filters only apply de passos descontínuos que, por sua vez, só podem ser usados ​​na fase de processo de lote de uma tarefa batch. Você não pode aplicar filtros com a entrada ou On fases completas.

    Se você não aplicar filtros a um passo de lote, os processos em lote somente os registros que succeededprocessing em todas as etapas anteriores. Em outras palavras, o padrão Política aplicada a todas as etapas de lote Aceitar é NO_FAILURES.

    Quando uma ocorrência de trabalho em lotes excede o seu valor não-max-registros, independentemente do filtro definido na etapa de lote, o passo não processa todos os registros, e simplesmente empurra a instância trabalho em lotes falhou ao On fase completa. Leia mais sobre tratamento de falhas em tarefas de lote.

    Consulte o lote de referência para obter detalhes sobre lotes atributos da etapa.

    Onde aplicar os dois tipos de filtros, Mule avalia-los na seguinte ordem:

    política de aceitar

    aceitar Expression
batch_commit

Batch Commit Características

Batch Commit escopos só pode existir em passos de lote, que, por sua vez, só são utilizáveis ​​na fase de processo de lote de um trabalho em lotes. Você não pode usar commits lote dentro da entrada ou On fases completas.


Um commit só pode embrulhar o elemento final na etapa de lote em que reside.


Vários AnyPoint conectores têm a capacidade de lidar com erros de nível recorde sem falhar um lote inteiro cometem (isto é upsert). Durante a execução, esses conectores manter o controle de quais registros foram aceitos com sucesso pelo recurso de destino, e que não conseguiu Upsert. Assim, ao invés de falhar um conjunto completo de registros durante uma atividade de cometer, o conector simplesmente upserts tantos registros quanto possível, e rastreia todas as falhas de notificação. O curta - mas logo a crescer - lista desses conectores segue:


Força de vendas


Google Contacts


Google Calendars


NetSuite


Banco de dados


Consulte o lote de referência para obter detalhes sobre lotes atributos da etapa.


O processamento em lote não suporta operações de trabalho de toda a instância. Você pode definir uma transação dentro de um passo de lote que processa cada registro em uma transação separada. (Pense nisso como um passo dentro de uma etapa.) Esta operação deve começar e terminar dentro dos limites do passo.


Você não pode compartilhar uma transação entre um passo de lote e um lote comprometer que existe dentro da etapa. Qualquer transação que o passo lote começa, termina antes do lote cometer começa processos. Em outras palavras, uma operação que não pode atravessar a barreira entre uma etapa de lote e o lote que contém cometer.


Mutável Registros Dentro Comprometer Blocos

Nas versões anteriores do Mule, o bloco de cometer exposto apenas a carga útil do registro agrupados e não permitem que você altere essas cargas úteis nem para recuperar as variáveis ​​de registro associado. Desde 3.8, Mule permite acessar cargas e variáveis ​​dos registros agrupados dentro do Batch cometer bloco e processá-los usando o Mule Expression Language (MEL).


Acesso sequencial


Você pode persistentemente passar por cima da carga útil de cada registro e sequencialmente armazená-lo como uma variável de registro.

Durante a fase de processo de seu trabalho em lotes, você pode substituir, alterar ou armazenar os dados de carga útil.


Ao adicionar um Scope Foreach você pode interagir através de um tamanho fixo cometer bloco, e usar a Referência de componente Expression para modificar a carga útil e criar uma variável registro para cada registro coletado.

1
2
3
4
5
6
7
8
9
10
<batch:step name="commitStep">
<batch:commit size="10">
        <foreach>
                <expression-component>
                        record.payload = 'foo';
                        record.recordVars['marco'] = 'polo';
                </expression-component>
        </foreach>
</batch:commit>
</batch:step>