Versões comparadas

Chave

  • Esta linha foi adicionada.
  • Esta linha foi removida.
  • A formatação mudou.

...


Esse documento tem como objetivo auxiliar os desenvolvedores na migração dos códigos que utilizam o RM Reports nos seus produtos. Lembrando que a partir da versão 12.1.5 uma nova engine de execução de relatórios do RM Reports foi disponibilizada para nossos clientes.
Para isso, foi criada uma nova API de comunicação com o RM Reports para facilitar o uso e a manutenção nos produtos RM que executam diretamente relatórios construídos no RM Reports.
Ela possibilita a execução de relatórios tanto no lado cliente (actions, forms, etc) quanto no lado server, procurando isolar os componentes internos de execução dos relatórios da RM e da DevExpress, impedindo assim, que os consumidores alterem propriedades e executem métodos diretamente nesses componentes.

1) Classes removidas no novo modelo de execução do RMReports:

...

 As classes abaixo foram removidas do RM Reports. Portanto os produtos que fazem uso dessas classes apresentarão erros durante o processo de compilação.

  • RptReportBase: foi retirada pois a mesma expõem funcionalidades dos componentes da XtraReports para os consumidores. Essa classe foi substituída pelas classes RptExecutorClient (utilização no lado cliente) e RptExecutorServer (utilização no lado server);

  • RptReportsWinForms: Foi substituída pela classe "RptExecutorClient";

          Importante: A classe RptReport localizada na "RM.Rpt.Lib.dll" não poderá mais ser utilizada para gerar relatórios nos produtos. Com isso o método "CREATEDOCUMENT" não deve mais ser utilizado.

...

         Importante: A dll RM.Rpt.Lib não deve mais ser adicionada como referência nos produtos que utilizam o Reports.

2) Execução de relatórios no "Server"

...

Passo-a-passo para utilização da API no server:

  • Adicionar referência para a dll "RM.Rpt.Executor.Intf.dll";

  • Remover as referências para as outras dll's do reports;

  • Utilizar a interface IRptExecutorServer localizada na dll RM.Rpt.Executor.Intf. Uma instância da classe RptExecutorServer deve ser criada da seguinte forma:

      IRptExecutor executorServer = RM.Lib.RMSBroker.CreateServer<IRptExecutor>("RptExecutorServer");

A      A interface "IRptExecutorServer" possui a seguinte estrutura:

  • GetReportInfo: método responsável em retornar informações do layout do relatório (ele não executa o relatório). Esse método deve ser utilizado quando houver a necessidade de recuperação de informações do layout do relatório antes de executá-lo. Ele retorna informações de parâmetros e filtros criados internamente no relatório para que os consumidores possam manipular esses dados de alguma forma.

Parâmetros de entrada:

Nome do parâmetro

Tipo

Descrição

codColigada

int

Código da coligada

idReport

int

Identificador do relatório

codUsuario

String

Código do usuário

...

Nome do parâmetro

Tipo

Descrição

ParametersReport

Lista

Parâmetros criados no relatório

ParametersProvider

Lista

Parâmetros de provider usados no provider do relatório

FiltersReport

Lista

Filtros disponíveis no relatório.

FiltersFormulas

MemoryStream

Filtros de fórmula disponíveis no relatório

DataSourceSchema

MemoryStream

Schema da fonte de dados do relatório.

MemberInfo

Membros

Informações dos membros de dados do report.

 

  • ExecuteReport: principal método da API. Ele executa o relatório e retorna informações da execução através do objeto RptExecutorReturn.

Parâmetros de entrada:

Nome do parâmetro

Tipo

Descrição

codColigada

int

Código da coligada

idReport

int

Identificador do relatório

codUsuario

String

Código do usuário

params

RptExecutorPar

Contem características de execução do relatório

...

Nome do parâmetro

Tipo

Descrição

ExportFileType

RptExportFileType

Tipo de exportação do relatório após sua geração. São eles: CSV, JPEG, HTML, XLSX, MHT, PDF, RTF, TXT

ContextStr

String

Objeto RMSContext na forma de string.

PartialSources

Lista

Lista de DataSet preenchidos com informações a serem usadas na geração do relatório.

UseUniquePageNumber

bool

Usa numeração de página sequencial.

 

Exemplos de uso (lado server):

...

A classe "RptExecutorClient" possui a seguinte estrutura:

  • AddParams: informa os valores dos parâmetros do relatório;

  • AddParamsProvider: informa os valores dos parâmetros de provider do relatório;

  • AddMainFilter: envia um filtro (no formato de string) para o "report [RptReport]" principal do relatório;

  • AddDetailFilter: envia um filtro (no forma de string) para as bandas de detalhe do report;

  • GetReportInfo: Retorna informações do layout do relatório através do objeto RprReportInfo conforme descrito acima;

  • GetRepositoryInfo: Retorna informações do repositório (informações do relatório);

  • Show: Mostra o relatório na tela passando o printReport como parâmetro. O parâmetro de showModal mostra o relatório em uma janela modal ou não.

  • ExecuteReport: executa o relatório no server e retorna informações da execução para o cliente.

Parâmetros de entrada:

Nome do parâmetro

Tipo

Descrição

codColigada

int

Código da coligada

idReport

int

Identificador do relatório

codUsuario

String

Código do usuário

params

RptExecutorClientParams

Contem características de execução do relatóiro

...