lista no cache em WEBSERVICE
estou com um erro neste metodo abaixo de uma classe WEBSERVICES:
{
set mylist=##class(%ListOfDataTypes).%New()
S M="" K VET
F S M=$O(^IGREJA(M),1,REG) Q:M="" S NOME=$P(REG,"^",1),IDADE=$P(REG,"^",2),VET(NOME,M)=IDADE
S (N,M)=""
F S N=$O(VET(N)) Q:N="" F S M=$O(VET(N,M)) Q:M="" S X=M_"^"_N_"^"_VET(N,M) do mylist.Insert(X)
;K ^WB for I=1:1:mylist.Count() S ^WB(I)=mylist.GetAt(I)
quit mylist
} }
{
set mylist=##class(%ListOfDataTypes).%New()
S M="" K VET
F S M=$O(^IGREJA(M),1,REG) Q:M="" S NOME=$P(REG,"^",1),IDADE=$P(REG,"^",2),VET(NOME,M)=IDADE
S (N,M)=""
F S N=$O(VET(N)) Q:N="" F S M=$O(VET(N,M)) Q:M="" S X=M_"^"_N_"^"_VET(N,M) do mylist.Insert(X)
;K ^WB for I=1:1:mylist.Count() S ^WB(I)=mylist.GetAt(I)
quit mylist
} }
erro==> ERROR #5002: Cache error: <LIST>%ResultLogicalToXSD+1^IGREJA.CADASTRO.CONSULTATUDO.1</text>
Olá Walter,
Não tenho experiência nessa parte de webservice, mas esse erro <LIST> geralmente significa que o sistema estava esperando um %List e encontrou outro tipo de dados.
Tenta retornar um %List ao invés de um %ListOfDataTypes.
Olá Walter,
Eu consegui executar o seu código em uma classe simples que extende de %SOAP.WebService sem erros.
Criei a global ^IGREJA com dados de teste contendo nome e idade para executar o teste.
Já verificou se o conteúdo de algum nó da sua global pode estar causando o problema?
Se quiser, compartilha a definição completa da sua classe e alguma amostra dos registros da sua global.
BOA TARDE,
nao tenho experiencia em WEBSERVICES e estou querendo testar um metodo CONSULTATUDO que devolve uma lista com nomes/idades/matricula..
me disseram hoje para usar o JASON para que a pessoa que for usar a minha WEBSERVICE ...
vc pode me mostrar como ficou o seu codigo usando %SOAP.WebService?
obrigado pela ajuda
walter
{ /// SERVICENAME - Should be the name of the service for which this is a proxy.
/// Override this parameter in the subclass.
Parameter SERVICENAME = "CADASTRO"; Property MATRICULA As %String; Property NOME As %String; Property IDADE As %String; Method GRAVA(MATRICULA As %String, NOME As %String, IDADE As %String) As %String [ WebMethod ]
{
S ^IGREJA(MATRICULA)=NOME_"^"_IDADE
QUIT "OK"
} Method EXCLUI(MATRICULA As %String) As %String [ WebMethod ]
{
K ^IGREJA(MATRICULA)
QUIT "OK"
} Method CONSULTA(MATRICULA As %String) As %String [ WebMethod ]
{
S REG=$G(^IGREJA(MATRICULA))
S NOME=$P(REG,"^",1),IDADE=$P(REG,"^",2)
S X=MATRICULA_"^"_NOME_"^"_IDADE
QUIT X
} Method CONSULTATUDO() As %List [ WebMethod ]
{
S M="" K VET
F S M=$O(^IGREJA(M),1,REG) Q:M="" S NOME=$P(REG,"^",1),IDADE=$P(REG,"^",2),VET(NOME,M)=IDADE
;s AAA=[]
;s BBB={}
S (N,M)="" F S N=$O(VET(N)) Q:N="" F S M=$O(VET(N,M)) Q:M="" S BBB.matricula=M,BBB.nome=N,BBB.idade=VET(N,M) d AAA.%Push(BBB)
S XXX=AAA.%ToJSON()
QUIT XXX
} }