Versões comparadas

Chave

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

Âncora
_Toc377992304
_Toc377992304
API de comunicação com o RM Reports

 

 



Projeto/Versão: RM Reports / 11.80.40

Data Especificação: 29/06/15

Erlon César – Framework BH

 



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.

...

  • 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

Retorno:

Tipo

Descrição

RptReportInfo

Informações do layout do relatório

RptReportInfo

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

 


Retorno:

Tipo

Descrição

RptExecutorReturn

Características de retorno de execução do relatório

RptExecutorReturn

Nome do parâmetro

Tipo

Descrição

ExecutionId

Guid

Identificador único de execução do relatório.

ExecutionStatus

RptExecutionStatus

Status de execução. [Sucesso ou erro]

ExecutionMessage

string

Mensagem de erro (em caso de erro)

PrintReport

MemoryStream

Resultado da execução do relatório. O conteúdo dessa propriedade pode ser enviado para serviços de impressão.

LayoutReport

MemoryStream

Layout do relatório gerado.

CodSistema

string

Código do sistema do relatório gerado.

CodRelatorio

string

Código do relatório gerado.

DescRelatorio

string

Descrição do relatório gerado.

RptExecutorPar

Nome do parâmetro

Tipo

Descrição

CallBackExecutionProgress

Action<>

Comunicação de incremento de barra de progresso.

CallBackMessageExecution

Action<>

Envio de mensagens do processo de execução.

ParametersReport

Lista

Parâmetros do relatório

ParametersProvider

Lista

Parâmetros do provider

FiltersReport

Lista

Filtros do relatório

FiltersFormula

Lista

Filtros de formula

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

GenerateDiagnostics

bool

Informa se é para gerar as informações de diagnóstico da execução do relatório.

GenerateType

RptReportGenerateType

Forma de geração do relatório.

StopExecutionOnError

bool

Finaliza ou não a execução do relatório em caso de erro. Todas as informações de erros são gravadas no diagnóstico de execução se o mesmo for "true".

MaxRowNumberPrint

Int

Número máximo de linhas a serem impressas. O default 0 indica que é para imprimir todas as linhas.

ContextStr

String

Objeto RMSContext na forma de string.

DataSourceExternal

DataSet

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

ReturnLayout

bool

Informa se é para retornar o layout do relatório para rotina chamadora.

AddGroupFields

Lista

Adiciona groupFields antes da execução

ClearAllGroupFields

Lista

Permite limpar todos os groupFields no relatório antes da execução

RemoveBands

Lista

Bandas a serem removidas antes da execução.

DataMemberExternalMain

String

Nome do dataMember principal

StartPageNumber

int

Número inicial da página em caso utilização do controle de numeração de página customizada.

...


ExecutePartialReport: Executa o relatório de forma parcial. Utilizado para execução de grandes relatórios e passando a fonte de dados externamente. Resolve o problema de estouro de memória da DevExpress.

Parâmetros de entrada:

Nome do parâmetro

Tipo

Descrição

codUsuario

String

Código do usuário

params

RptExecutorPartialPar

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

Retorno:

Tipo

Descrição

RptExecutorPartialReturn

Características de retorno de execução parcial do relatório

 


RptExecutorPartialReturn

Nome do parâmetro

Tipo

Descrição

PrintReport

MemoryStream

Resultado final da execução do relatório. O conteúdo dessa propriedade pode ser enviado para serviços de impressão.

RptExecutorPartialPar

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.


Export: Exporta um relatório em um formato especifico a partir de um binário proveniente de uma geração prévia. 

...

Utilizado em casos em que a geração é executada em um momento e a exportação do arquivo, em outro.

Parâmetros de entrada:

Nome do parâmetro

Tipo

Descrição

parms

RptExecutorExportPar

Contem os parãmetros da exportação do relatório

Retorno:

Tipo

Descrição

RptExecutorExportReturn

Características de retorno de exportação do relatório


RptExecutorExportReturn

Nome do parâmetro

Tipo

Descrição

ExportedReport

MemoryStream

Resultado final da exportação do relatório. O conteúdo dessa propriedade pode ser enviado para serviços de impressão.

RptExecutorExportPar

Nome do parâmetro

Tipo

Descrição

ExportType

RptExportFileType

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

ReportResult

MemoryStream

Stream contendo o resultado de uma geração do relatório

Exemplos de uso (lado server):

Utilização da API na migração da ficha física financeira do RM Nucleus.

[Código antes]:

RptReport report;
DataTable reporttable = RptUtilsData.LoadDataTableReport(codColRel, IdRel);
report = RptUtilsData.LoadReport(reporttable.Rows[0]

Exemplos de uso (lado server):

Utilização da API na migração da ficha física financeira do RM Nucleus.

[Código antes]:

RptReport report;
DataTable reporttable = RptUtilsData.LoadDataTableReport(codColRel, IdRel);
report = RptUtilsData.LoadReport(reporttable.Rows[0], this.parameters.Context.CodUsuario);
string filter = string.Format("TMOV.CODCOLIGADA = {0} AND TMOV.IDMOV = {1}", CodColigada, IdMov);
report.FilterSQLExpression = filter;
report.PreviewRowCount = 0;
report.RequestParameters = false;
report.CreateDocument();
return stream.ToArray();
Código depois
//Instancia a classe RptExecutorServer reponsável em gerar o relatório do server.
IRptExecutor executorServer = RM.Lib.RMSBroker.CreateServer<IRptExecutor>("RptExecutorServer");
//Recupera as informações do report. ex: filtros do report, parametros do report.
RptReportInfo repInfo = executorServer.GetReportInfo(codColRel, IdRel, this.parameters.Context.CodUsuario);
//Recupera o objeto que representa o filtro principal do report.
//Para isso foi utlizado o Helper "RptReportInfoHelper" que possui uma série de metodos que ajuda manipular
//o objeto RptReportInfo.
RptFilterReportPar mainFilter = RptReportInfoHelper.GetMainFilter(repInfo);
//Configura o filtro necessário.
mainFilter.Value = string.Format("TMOV.string filter = string.Format("TMOV.CODCOLIGADA = {0} AND TMOV.IDMOV = {1}", CodColigada, IdMov);
//Instancia a classe de parametros do método.
RptExecutorPar parms = new RptExecutorPar();
//Adiciona o filtro para os parametros.
parms.FiltersReport.Add(mainFilter);
//Configura o tipo de exportação.
parms.GenerationType = RptReportGenerationType.File;
parms.ExportFileType = RptExportFileType.PDF;
//Executa o relatório.
RptExecutorReturn result = executorServer.ExecuteReportreport.FilterSQLExpression = filter;
report.PreviewRowCount = 0;
report.RequestParameters = false;
report.CreateDocument();
return stream.ToArray();
Código depois
//Instancia a classe RptExecutorServer reponsável em gerar o relatório do server.
IRptExecutor executorServer = RM.Lib.RMSBroker.CreateServer<IRptExecutor>("RptExecutorServer");
//Recupera as informações do report. ex: filtros do report, parametros do report.
RptReportInfo repInfo = executorServer.GetReportInfo(codColRel, IdRel, this.parameters.Context.CodUsuario, parms);
//Retorna o relatório gerado para alguma outra rotinal
return result.PrintReport;

...

//Instancia a classe RptExecutorServer reponsável em gerar o relatório do server.
IRptExecutor executorServer = RM.Lib.RMSBroker.CreateServer<IRptExecutor>("RptExecutorServer");
RptExecutorPar parms = new RptExecutorPar();
//Adiciona valor para o parametro "IdPrd" definido no relatóiro
parms.ParametersReport.Add(new RptParameterReportPar("IDPRD", 84);
//Configura o tipo de exportação.
parms.GenerationType = RptReportGenerationType.File;
parms.ExportFileType = Recupera o objeto que representa o filtro principal do report.
//Para isso foi utlizado o Helper "RptReportInfoHelper" que possui uma série de metodos que ajuda manipular
//o objeto RptReportInfo.
RptFilterReportPar mainFilter = RptReportInfoHelper.GetMainFilter(repInfo);
//Configura o filtro necessário.
mainFilter.Value = string.Format("TMOV.CODCOLIGADA = {0} AND TMOV.IDMOV = {1}", CodColigada, IdMov);
//Instancia a classe de parametros do método.
RptExecutorPar parms = new RptExecutorPar();
//Adiciona o filtro para os parametros.
parms.FiltersReport.Add(mainFilter);
//Configura o tipo de exportação.
parms.GenerationType = RptReportGenerationType.File;
parms.ExportFileType = RptExportFileType.PDF;
//Executa o relatório.
RptExecutorReturn result = executorServer.ExecuteReport(1codColRel, 287IdRel, this.parameters.Context.CodUsuario, parms);
//Retorna o relatório gerado para alguma outra rotinal
return result.PrintReport;

Execução de relatórios no "Client"

As informações abaixo auxiliam no desenvolvimento dos códigos para execução de relatórios no client":

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

Adicionar referência para as dll's "RM.Rpt.Executor.Intf.dll" e "RM.Rpt.Executor.Client.dll";

Remover as referências para as outras dlls do reports, entre elas: "RM.Rpt.Lib.dll" e "RM.Rpt.Reports.intf.dll";

Utilização da classe "RptExecutorClient" disponível na dll "RM.Rpt.Executor.Client.dll": essa classe deve ser instanciada no client (actions, forms, etc).

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

...

Âncora
_GoBack
_GoBack
Utilização da API sem uso do método GetReportInfo:

//Instancia a classe RptExecutorServer reponsável em gerar o relatório do server.
IRptExecutor executorServer = RM.Lib.RMSBroker.CreateServer<IRptExecutor>("RptExecutorServer");
RptExecutorPar parms = new RptExecutorPar();
//Adiciona valor para o parametro "IdPrd" definido no relatóiro
parms.ParametersReport.Add(new RptParameterReportPar("IDPRD", 84);
//Configura o tipo de exportação.
parms.GenerationType = RptReportGenerationType.File;
parms.ExportFileType = RptExportFileType.PDF;
//Executa o relatório.
RptExecutorReturn result = executorServer.ExecuteReport(1, 287, this.parameters.Context.CodUsuario, parms);
//Retorna o relatório gerado para alguma outra rotinal
return result.PrintReport;

Execução de relatórios no "Client"

As informações abaixo auxiliam no desenvolvimento dos códigos para execução de relatórios no client":

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

Adicionar referência para as dll's "RM.Rpt.Executor.Intf.dll" e "RM.Rpt.Executor.Client.dll";

Remover as referências para as outras dlls do reports, entre elas: "RM.Rpt.Lib.dll" e "RM.Rpt.Reports.intf.dll";

Utilização da classe "RptExecutorClient" disponível na dll "RM.Rpt.Executor.Client.dll": essa classe deve ser instanciada no client (actions, forms, etc).

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

RptExecutorClientParams

Nome do parâmetro

Tipo

Descrição

showReport

bool

Exibe ou não o relatório após sua execução

ShowModal

bool

Exibe ou não o relatório de forma modal

ShowParameters

bool

Exibe ou não a tela para preenchimento dos parâmetros do relatório.

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

GenerationType

RptReportGenerationType

Tipo de geração do relatório.

PrintDialog

Bool

Envia o relatório diretamente para impressora.

PrintName

String

Nome da impressora

ShowFilters

Bool

Será mostra uma tela de filtros contendo filtros do relatório.

ReturnLayout

Bool

Permite retornar o layout do relatório.

Context

RMSContext

Contendo RM de execução.

DataMemberExternalMain

String

Nome do dataMember principal

MaxRowNumberPrint

int

Número máximo de linhas a serem impressas no relatório.

RemoveBands

Lista

Permite remover bandas.

Retorno:

Tipo

Descrição

RptExecutorClientReturn

Características de retorno de execução do relatório no cliente.


RptExecutorClientReturn

Nome do parâmetro

Tipo

Descrição

showReport

ExecutionStatus

RptExecutionStatus

Status de execução. [Sucesso ou erro]

ExecutionMessage

string

Mensagem de erro (em caso de erro)

PrintReport

MemoryStream

Resultado da execução do relatório. O conteúdo dessa propriedade pode ser enviado para serviços de impressão.

CodRelatorio

string

Código do relatório gerado.

DescRelatorio

string

Descrição do relatório gerado.

LayoutReport

MemoryStream

Layout do relatório


ExportReport: Exporta um relatório em um formato especifico a partir de um binário proveniente de uma geração préviaUtilizado em casos em que a geração é executada em um momento e a exportação do arquivo, em outro.

Parâmetros de entrada:

Permite remover bandas.

Nome do parâmetro

Tipo

Descrição

parms

RptExecutorClientExportPar

Contem os parâmetros da exportação do relatório

bool

Exibe ou não o relatório após sua execução

ShowModal

bool

Exibe ou não o relatório de forma modal

ShowParameters

bool

Exibe ou não a tela para preenchimento dos parâmetros do relatório.

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

GenerationType

RptReportGenerationType

Tipo de geração do relatório.

PrintDialog

Bool

Envia o relatório diretamente para impressora.

PrintName

String

Nome da impressora

ShowFilters

Bool

Será mostra uma tela de filtros contendo filtros do relatório.

ReturnLayout

Bool

Permite retornar o layout do relatório.

Context

RMSContext

Contendo RM de execução.

DataMemberExternalMain

String

Nome do dataMember principal

MaxRowNumberPrint

int

Número máximo de linhas a serem impressas no relatório.

RemoveBands

Lista

Retorno:

RptExecutorClientReturn execução no cliente.

Tipo

Descrição

RptExecutorClientExportReturn

Características de retorno de

exportação do relatório

 

...


RptExecutorClientExportReturn

execução

PrintReport

Nome do parâmetro

Tipo

Descrição

ExecutionStatus

RptExecutionStatus

Status de execução. [Sucesso ou erro]

ExecutionMessage

string

Mensagem de erro (em caso de erro)

ExportedReport

MemoryStream

Resultado final da

exportação do relatório. O conteúdo dessa propriedade pode ser enviado para serviços de impressão.

RptExecutorClientExportPar

CodRelatorio

Nome do parâmetro

string

Código do relatório gerado.

DescRelatorio

string

Descrição do relatório gerado.

LayoutReport

MemoryStream

Layout do relatório

...

Tipo

Descrição

ExportType

RptExportFileType

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

ReportResult

MemoryStream

Stream contendo o resultado de uma geração do relatório

Exemplos de uso (lado client):

...