Esta é a documentação do Apigee Edge.
Acesse
Documentação da Apigee X. informações
UnresolvedVariable
Código do erro
steps.assignmessage.UnresolvedVariable
Corpo da resposta de erro
{ "fault": { "faultstring": "AssignMessage[policy_name]: unable to resolve variable [variable_name]", "detail": { "errorcode": "steps.assignmessage.UnresolvedVariable" } } }
Causa
Esse erro ocorrerá se uma variável especificada na política "Atribuir mensagem" for:
- fora do escopo (não disponível no fluxo específico em que a política está sendo executada) ou
- não é possível resolver (não está definida)
Por exemplo, esse erro ocorre se a política Atribuir mensagem for executada no fluxo de solicitação, mas o atributo source no elemento <Copy> for definido como a variável response ou error ou qualquer outra variável personalizada. que não existe no fluxo de solicitações.
Diagnóstico
Identifique a política "Atribuir mensagem" em que o erro ocorreu e o nome da variável que não está disponível. É possível encontrar os dois itens no elemento
faultstringda resposta de erro.Por exemplo, no
faultstringa seguir, o nome da política égoogleBooke a variável évar:"faultstring": "AssignMessage[googleBook]: unable to resolve variable var"No XML da política de atribuição de mensagens com falha, verifique se o nome da variável usada corresponde ao nome da variável identificada na string de falha (etapa 1 acima). Por exemplo, a política a seguir define o atributo de origem no elemento
<Copy>como uma variável chamadavar, que corresponde ao que está nofaultstring:<AssignMessage async="false" continueOnError="false" enabled="true" name="Assign-Message-1"> <DisplayName>googleBook</DisplayName> <Properties /> <Copy source="var"> <Headers> <Header name="user-agent" /> </Headers> </Copy> <IgnoreUnresolvedVariables>false</IgnoreUnresolvedVariables> <AssignTo createNew="true" transport="http" type="request">googleBookReq</AssignTo> </AssignMessage>Determine se a variável está definida e disponível no fluxo em que a política de atribuição de mensagem está sendo executada.
Se a variável for:
- fora do escopo (não disponível no fluxo específico em que a política está sendo executada) ou
- não é possível resolver (não está definida)
essa será a causa do erro.
Por exemplo, digamos que a política "Atribuir mensagem" exibida acima seja executada no fluxo de solicitações. Verifique se a variável
varestá definida em qualquer uma das políticas executadas antes da política de atribuição de mensagem no fluxo de solicitações. Se a variável não tiver sido definida, você receberá o código do erro:steps.assignmessage.UnresolvedVariable
Resolução
Verifique se a variável referenciada na política existe e está disponível no fluxo específico em que a política "Atribuir mensagem" está sendo executada.
Para corrigir o exemplo de política mostrado acima, modifique o atributo de origem no elemento <Copy> para ser a variável de solicitação ou qualquer outra variável personalizada do tipo de mensagem existente no fluxo de solicitação.
<AssignMessage async="false" continueOnError="false" enabled="true" name="Assign-Message-1">
<DisplayName>googleBook</DisplayName>
<Properties />
<Copy source="request">
<Headers>
<Header name="user-agent" />
</Headers>
</Copy>
<IgnoreUnresolvedVariables>false</IgnoreUnresolvedVariables>
<AssignTo createNew="true" transport="http" type="request">googleBookReq</AssignTo>
</AssignMessage>
VariableOfNonMsgType
Código do erro
steps.assignmessage.VariableOfNonMsgType
Corpo da resposta de erro
{ "fault": { "faultstring": "AssignMessage[policy_name]: value of variable [variable] is not of type Message", "detail": { "errorcode": "steps.assignmessage.VariableOfNonMsgType" } } }
Causa
Esse erro ocorrerá se o atributo source no elemento <Copy> estiver definido como uma variável diferente do tipo message.
As variáveis do tipo Message representam solicitações e respostas HTTP completas. As variáveis integradas de fluxo do Edge request, response e message são do tipo mensagem. Saiba mais sobre as variáveis de mensagem na Referência de variáveis.
Diagnóstico
Identifique a política de atribuição de mensagens em que o erro ocorreu e o nome da variável com o tipo incorreto. É possível encontrar os dois itens no elemento
faultstringda resposta de erro. Por exemplo, nofaultstringa seguir, o nome da política éGenerateGeocodingRequeste a variável éPostalCode:"faultstring": "AssignMessage[GenerateGeocodingRequest]: value of variable PostalCode is not oftype Message"No XML da política de atribuição de mensagem com falha, verifique se o nome da variável definida no elemento
<Copy>corresponde ao nome da variável identificada na string de falha (etapa 1 acima). Por exemplo, a política a seguir define um atributo de origem para uma variável chamadaPostalCode, que corresponde ao que está emfaultstring:<AssignMessage name="GenerateGeocodingReq>uest<" AssignTo createNew="true&>quot; type="<;request&>quot<;GeocodingRequ>est/Ass<ignT>o Assig<nVari>able < > NamePostalCode/Name Re<freq>uest<.queryparam.pos>talc<ode/Ref /As>signVar<iabl>e As<signV>ariable< > NameCountry/Name < Ref>requ<est.queryparam.>coun<try/Ref /AssignVariab>le C<opy source=>"Post<alCode" Qu>eryPara<ms >Quer<yPara>m< name="q&>quot; / /QueryParams /Copy /AssignMessageDetermine se essa variável é do tipo mensagem ou não:
- Localize o código no pacote proxy da API, onde a variável foi definida primeiro.
- Depois de descobrir a política em que a variável é definida e preenchida primeiro, você precisará determinar o tipo dessa variável da seguinte forma:
- Verifique o valor do atributo de tipo (se houver).
- Se o atributo de tipo não estiver presente, a variável será considerada uma string.
- Se o tipo da variável for não mensagem (como uma string), essa é a causa do erro. Saiba mais sobre as variáveis comuns e os tipos delas na Referência de variáveis.
Por exemplo, observe a variável PostalCode no XML acima. Ela recebe o valor da variável de fluxo
request.queryparam.postalcodeno elemento<AssignVariable>. Esse valor é uma string, porque não há atributo de tipo presente na atribuição de variáveis.Agora, lembre-se de que a variável PostalCode é usada no elemento
<Copy>da política "Atribuir mensagem":<Copy source="Postal>Code<" Q>ueryPar<ams QueryParam name=&quo>t;Po<stalCode&quo>t<; / >/QueryParams /CopyComo o PostalCode não é de mensagem de tipo (é uma string neste exemplo), você recebe o código do erro:
steps.assignmessage.VariableOfNonMsgType
Resolução
Verifique se o atributo source no elemento <Copy> na política de atribuição de mensagem com falha está definido como uma variável de fluxo do tipo message que existe.
Para corrigir a política, modifique o atributo source no elemento <Copy> para especificar uma variável do tipo mensagem. Por exemplo, se a política "Atribuir mensagem" for executada no fluxo de solicitações, você poderá usar a variável de tipo de mensagem request ou qualquer outra variável personalizada de mensagem de tipo.
<AssignMessage name="GenerateGeocodingReq>uest<"
AssignTo createNew="true&>quot; type="<;request&>quot<;GeocodingRequ>est/Ass<ignT>o
Assig<nVari>able
< > NamePostalCode/Name
Re<freq>uest<.queryparam.pos>talc<ode/Ref
/As>signVar<iabl>e
As<signV>ariable<
> NameCountry/Name
< Ref>requ<est.queryparam.>coun<try/Ref
/AssignVar>iable
< Copy sour>ce="r<equest"
QueryParams>
< QueryPara>m na<me=&q>u<ot;PostalCode&>quot; /
/QueryParams
/Copy
/AssignMessage