Pergunta
Walter Brandes · Ago. 2

lista no cache em WEBSERVICE

estou com um erro neste metodo abaixo  de uma classe WEBSERVICES:

 

Method CONSULTATUDO() As %List [ WebMethod ]
{
set mylist=##class(%ListOfDataTypes).%New()
M="" VET
F  M=$O(^IGREJA(M),1,REG) Q:M=""  NOME=$P(REG,"^",1),IDADE=$P(REG,"^",2),VET(NOME,M)=IDADE
(N,M)=""
F  N=$O(VET(N)) Q:N=""  F  M=$O(VET(N,M)) Q:M=""  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
} }
Method CONSULTATUDO() As %List [ WebMethod ]
{
set mylist=##class(%ListOfDataTypes).%New()
M="" VET
F  M=$O(^IGREJA(M),1,REG) Q:M=""  NOME=$P(REG,"^",1),IDADE=$P(REG,"^",2),VET(NOME,M)=IDADE
(N,M)=""
F  N=$O(VET(N)) Q:N=""  F  M=$O(VET(N,M)) Q:M=""  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>

Product version: IRIS 2022.1
0
0 41
Discussão (4)2
Entre ou crie uma conta para continuar

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.   

wink

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

Class IGREJA.CADASTRO Extends %SOAP.WebService
{ /// 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 ]
{
^IGREJA(MATRICULA)=NOME_"^"_IDADE
QUIT "OK"
} Method EXCLUI(MATRICULA As %String) As %String [ WebMethod ]
{
^IGREJA(MATRICULA)
QUIT "OK"
} Method CONSULTA(MATRICULA As %String) As %String [ WebMethod ]
{
REG=$G(^IGREJA(MATRICULA))
NOME=$P(REG,"^",1),IDADE=$P(REG,"^",2)
X=MATRICULA_"^"_NOME_"^"_IDADE
QUIT X
} Method CONSULTATUDO() As %List [ WebMethod ]
{
M="" VET
F  M=$O(^IGREJA(M),1,REG) Q:M=""  NOME=$P(REG,"^",1),IDADE=$P(REG,"^",2),VET(NOME,M)=IDADE
;s AAA=[]
;s BBB={}
(N,M)="" F  N=$O(VET(N)) Q:N=""  F  M=$O(VET(N,M)) Q:M=""  BBB.matricula=M,BBB.nome=N,BBB.idade=VET(N,M) AAA.%Push(BBB)
XXX=AAA.%ToJSON()
QUIT XXX
} }