Versões comparadas

Chave

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

Existem três formas de gerar um relatório por meio de via job:

1- Classe RptExecutorClient

Esta API deverá ser utilizada para requisições de geração de relatório realizadas da camada Cliente (RM.exe). As propriedade relacionadas à execução de relatório via job são:

  • ExecuteOnJobServer: Se true , informa que o relatório deverá ser será gerado em via job. Caso contrário o valor seja false o relatório será gerado diretamente pelo AppServer que receber a requisição.
    Valor Default: false
  • OnlineMode: Se true indica seque, caso ExecuteOnJobServer seja  true, o job de geração do relatório deverá ser executado diretamente pelo AppServer e não entrará na fila de jobs do JobServer. Este é uma forma de dar prioridade à execução do job mas deve ser utilizado utilizada em casos muito especiais onde justifique que o job do relatório seja executado sem passar pela fila de jobs.
    Valor Default: false
  • TimeoutMillisec: Indica quanto tempo (em millisegundos) deve-se aguardar que o relatório seja gerado quando ExecuteOnJobServer = true. Se esse período for ultrapassado será lançada uma exceção.
    Valor Default: int.MaxValue
     

Bloco de código
languagec#
firstline1
titleExemplo RptExecutorClient
linenumberstrue
RptExecutorClient report = new RptExecutorClient();
RptExecutorClientParams exeParams = new RptExecutorClientParams();

...
exeParams.ExecuteOnJobServer = true;
exeParams.OnlineMode = false;
exeParams.TimeoutMillisec = 60000;

 
report.ExecuteReport(lookUpForm.ColigadaRelatorio, lookUpForm.IdRelatorio, RMSSession.Context.CodUsuario, exeParams);

 

2-

...

RMSServer RptExecutorOnJobServer

Este server deve ser utilizado

...

 

Bloco de código
languagec#
firstline1
titleRptExecutorOnJobServer
linenumberstrue
RptExecutorOnJobServer

 

Está API deve ser utilizada na camada Server mas não deverá ser utilizada de dentro de um RMSProcess pelo fato que ela ele mesma gerará um processo a ser executado como job.

 

 

...

Os principais métodos deste server são:

  • SubmitReport: Submete um relatório para ser executado em JobServer.
  • Wait: Aguarda o retorno do JobServer até que ocorra um timeout.
  • SubmitReportAndWait: Submete um relatório para ser executado em jobserver e aguarda o retorno do JobServer até que ocorra um timeout.

Bloco de código
languagec#
firstline1
titleExemplo RptExecutorOnJobServer
linenumberstrue
...
 
RptExecutorJobServerReturn execReturn = null;
using (IRptExecutorOnJobServer executorJobServer = RMSBroker.CreateServer<IRptExecutorOnJobServer>("RptExecutorOnJobServer"))
{
    int timeoutMillisec = 600000;
    RMSJobID jobId = executorJobServer.SubmitReport(_CodColigada, _IdReport, _CodUsuario, executorParams, onlineMode, scheduleTo,  recurrencePattern);
    execReturn = executorJobServer.Wait(timeoutMillisec, jobId);
}

3- Processo de Produto

Uma outra forma de gerar o relatório via job é criando um RMSProcess e à partir dele chamar o server RptExecutor. Este procedimento é  geralmente realizado pelo produto em seus processos quando existe a necessidade de geração de relatório.

Bloco de código
languagec#
firstline1
titleExemplo RMSProcess
linenumberstrue
...
public class AcmeProcess: RMSProcess
{
...
	protected override void DoExecute(RMSParamsProc Params)
    {
      try
      {
        AcmeParamsProc paramsProc = (AcmeParamsProc)Params;
		
		RptExecutorReturn executorReturn = null;
		
		using (IRptExecutor executorServer = RM.Lib.RMSBroker.CreateServer<IRptExecutor>("RptExecutorServer"))
		{
			executorReturn = executorServer.ExecuteReport(paramsProc.CodColigada,
			  paramsProc.IdReport, paramsProc.CodUsuario, paramsProc.ExecutorPar);
		}
		...