Artigo
· Out. 23 3min de leitura

Desenvolvendo Integrações com InterSystems IRIS - CALL no Business Process

CALL no Business Process

Montando as integrações para esta série de postagens, vi que precisava me aprofundar um pouco mais na questão do componente CALL do BP. Assim montei este novo documento mostrando algumas informações importantes deste componente.

O componente CALL é utilizado para chamar ou um BP ou um BO de maneira síncrona (o componente aguarda o retorno da chamada realizada) ou assíncrona (a chamada é feita mas o componente não aguarda o retorno, sendo verificado se houve resposta em uma etapa mais a frente por um componente SYNC).

Para entendermos melhor o componente CALL vamos primeiro ver a configuração básica do nosso BP. Ao ser chamado o BP deve receber um objeto de entrada (request) e devolve um objeto de retorno (response). O tipo dos objetos de request e response do BP são definidos na aba Contexto do BP:

 

O request e response do BP ou BO a ser chamado pelo BP não é necessariamente o mesmo que o do próprio BP chamador. Pode ser, mas pode ser algo completamente diferente, montado em tempo de execução do BP chamador a partir de informações que ele vai recuperando.

Um CALL tem dois objetos que representam sua chamada: callrequest e callresponse, que são respectivamente o request utilizado na chamada ao componente que o CALL chamará e o response devolvido nesta chamada. Assim, por exemplo, se o objeto de chamada do meu CALL for o mesmo que o de entrada do BP podemos ter algo assim na configuração do CALL:

Ou seja, o callrequest será criado com o mesmo valor que o request do meu BP. Podemos fazer o mesmo com o response:

Ou seja, o response do meu BP será o response recebido pelo CALL do componente que ele chamou.

Aqui podemos ou utilizar o request e response diretamente, ou ainda, colocar os objetos recebidos no contexto do nosso BP. Para isso basta criar um objeto de contexto e fazer a atribuição:

 

Criado o objeto no contexto podemos ir no nosso CALL e atribuir a callrequest o valor deste objeto, por exemplo:

Nossa configuração de CALL então ficou assim:

O mesmo pode ser feito com o response, ou seja, posso criar um objeto no contexto e receber o que chegou no callresponse do CALL e atribuir o valor a esse objeto no contexto, e continuar utilizando dentro do código do BP.

O componente CALL é especialmente poderoso pois posso fazer as atribuições de valores das propriedades do objeto dentro dele, o que facilita o entendimento e a manutenção do código.

Assim, podemos resumir essa postagem ao seguinte:

  • request é o objeto que tem a entrada de informações do BP. Ele é válido em todo o contexto do BP. A atribuição da classe deste objeto é feita no Contexto do BP;
  • response é o objeto de resposta do BP. Ele também é válido em todo o contexto do BP. A atribuição da classe deste objeto é feita no Contexto do BP;
  • callrequest é o objeto que tem a entrada de informações do CALL que está sendo executado, e que será usado para chamar o componente configurado no CALL. Ele é válido apenas dentro do contexto do CALL em execução;
  • callresponse é o objeto que tem o retorno de informações do CALL que está sendo executado. Ele é válido apenas dentro do contexto do CALL em execução;

Lembre-se ainda que o IRIS implementa polimorfismo. O polimorfismo habilita que um objeto de uma classe seja manipulado como um objeto de uma outra classe, desde que esta outra classe seja uma superclasse da minha classe. Por exemplo, funcionário tem como superclasse pessoa, então funcionário herda todos os métodos e propriedades de pessoa. Posso então manipular funcionário com os mesmos códigos que manipulo pessoa. Isso no contexto do nosso CALL pode ser traduzido dizendo que se ele espera receber um objeto do tipo pessoa, caso receba um objeto do tipo funcionário ele vai trabalhar corretamente também. O inverso não é verdadeiro pois pessoa pode ter métodos e propriedades a menos que funcionário.

O IRIS também implementa herança múltipla, ou seja, uma classe pode herdar métodos e propriedades de diversas superclasses.

Assim fechamos mais este artigo. Em breve teremos mais postagens mostrando novas integrações. Até lá.

Discussão (0)1
Entre ou crie uma conta para continuar