Este documento é material de especificação dos requisitos de inovação, trata-se de conteúdo extremamente técnico. |
---|
Especificação | |||
Produto | RM | Módulo | Job Server |
Segmento Executor | Framework | ||
Projeto1 | Framework BH - 004 | IRM/EPIC1 | |
Requisito/Story/Issue1 | FRW_FRW002-227 | Subtarefa1 | FRW_FRW002-229 |
Chamado2 | |||
País | ( x ) Brasil ( ) Argentina ( ) Mexico ( ) Chile ( ) Paraguai ( ) Equador ( ) USA ( ) Colombia ( ) Outro _____________. | ||
Outros | <Caso necessário informe outras referências que sejam pertinentes a esta especificação. Exemplo: links de outros documentos ou subtarefas relacionadas>. |
Legenda: 1 – Inovação 2 – Manutenção (Os demais campos devem ser preenchidos para ambos os processos).
Revisar o enfileiramento de processos viabilizando o "fura fila" no JobServer.
Os Jobs prioritários devem ser executados imediatamente quando requisitados, ou o mais imediatamente possível. Isto significa que o Host App não irá mais executar os Jobs marcados como prioritário e deverá solicitar a execução imediata para um Host Job Server com maior disponibilidade no momento.
SELECT TOP 1
NOMESERVIDOR,
NUMJOBS,
MAXJOBS,
(MAXJOBS - NUMJOBS) AS DISPONIBILIDADE
FROM
GJOBSERVER (NOLOCK)
ORDER BY
DISPONIBILIDADE DESC
Criar um novo método estático na classe RMSJobServer para retornar uma nova instância semelhante ao GetServerInstance do RMSBroker, chamado GetDirectServetInstance passando o nome do Job Server como parâmetro. Esse nome pode conter porta ou não e vem da query acima (NOMESERVIDOR). O conteúdo do método deverá ser:
string host;
int port;
int portIndex = jobServerName.IndexOf(":");
if (portIndex > 0)
{
host = jobServerName.Substring(0, portIndex);
port = Convert.ToInt32(jobServerName.Substring(portIndex + 1));
}
else
{
host = jobServerName;
port = RMSBroker.Params.Port;
}
RMSHostConnection hostConnection = new RMSHostConnection(host, port);
IRMSJobServer jobServer = (IRMSJobServer)RMSBroker.GetServerInstance(typeof(IRMSJobServer), "RMSJobServer", false, hostConnection);
return jobServer;
A chamada deverá ser:
using (IRMSJobServer directJobServer = RMSJobServer.GetDirectServetInstance("BHD00008051:3000"))
{
directJobServer.StartJob(jobID);
}
O método StartJob(job.JobID) na classe RMSJobData deve ser chamado caso o ambiente NÃO seja TRÊS CAMADAS
O método StartPriorityJob(job.JobID) na classe RMSJobData deve ser chamado caso o Job seja Prioritário (OnlineMode)
Retirar o código abaixo do método chamado StartJob(job.JobID) da classe RMSJobServer
if (RMSJobUtils.IsThreeTier())
{
// pede para cada JobExecutor válido (em execução e sem finalização pendente) executar o job
foreach (RMSJobExecutor jobExecutor in RMSJobServer.JobExecutors.Values)
{
if (jobExecutor.IsRunning && !jobExecutor.IsFinalizing)
{
jobExecutor.StartJob(jobID);
RMSSysLogTrace.WriteLine(RMSSyslogGlobal.Facility.Local0,
RMSSyslogGlobal.Level.Information, "RMSJobServer", RMSSyslogGlobal.Group.Schedule,
transactionID, RMSSyslogGlobal.Category.Engine, RMSSyslogGlobal.Step.End, string.Empty, null, null, "Fim start job. (Start Job) Id. Rotina: " + this.GetType().Name, ListParams); //donotlocalize
return;
}
}
}
Este código não é mais necessário ou redundante e pode ser retirado
Este documento é material de especificação dos requisitos de inovação, trata-se de conteúdo extremamente técnico. |
---|