Árvore de páginas


01. DADOS GERAIS

Produto:

TOTVS Manufatura

Linha de Produto:

Linha Protheus

Segmento:

Manufatura

Módulo:SIGAPCP
Função:WSPCP
País:Brasil
Ticket:13083089
Requisito/Story/Issue (informe o requisito relacionado) :DMANSMARTSQUAD1-23062


02. SITUAÇÃO/REQUISITO

Ao processar requisições do WSPCP - Web Service, ocorre a abertura de múltiplas threads simultaneamente. O processamento das threads é realizado pela função ManualJob, que é executada a partir do WSPCP. Alguns parâmetros que definem o comportamento das threads estão sendo sugeridos pelo sistema, sem a opção de modificação do conteúdo, para melhor atender a realidade de cada cenário. 

03. SOLUÇÃO

Foi adicionado o parâmetro MV_TWSPCP para armazenar quatro informações que serão utilizadas no momento do processamento do WSPCP, permitindo desta forma a parametrização do comportamento das threads de acordo com cada cenário.


As quatro informações que compõe o parâmetro são:

TipoDescriçãoDefault
NúmeroTempo (em segundos) de inatividade das threads do Job10
NúmeroNúmero máximo de threads do Job10
NúmeroNúmero mínimo de threads livres do Job10
NúmeroNúmero de threads incrementadas/acrescidas no Job quando o minimo livre for atingido1


Exemplos corretos de preenchimento do parâmetro:

1) 20,10,2,3

2) 10,10,10,1

3) 500,15,2,5


Exemplos incorretos de preenchimento do parâmetro:

1) 20, 10, 2, 3

2) 20 10 2 3 

3) "20","10","2","3"

4) "20,10,2,3"


Caso o parâmetro não exista ou não esteja informado, o processamento será efetuado com as informações default de acordo com o WSPCP (não será utilizado o default do ManualJob).

Caso seja preenchida uma das informações do parâmetro, as quatro informações devem ser preenchidas, na ordem indicada.


04. DEMAIS INFORMAÇÕES

Exemplo de funcionamento

Ao preencher o parâmetro MV_TWSPCP com 20,10,2,3, o processamento terá o seguinte comportamento:


Descrição do parâmetroConteúdoComportamento do Job
Tempo (em segundos) de inatividade das threads20

Todas as threads abertas por envio de requisições permanecerão abertas por 20 segundos inativos. Após processar uma requisição, a thread voltará para a situação livre e poderá ser reutilizada. Caso não ocorra acionamento de uma thread aberta por 20 segundos, esta será fechada.

Número máximo de threads abertas simultaneamente10

Serão abertas no máximo 10 threads simultaneamente. 

Número mínimo de threads livres (sem uso)2

Serão abertas 2 threads para permanecerem livres.

Número de threads acrescidas quando a quantidade livre for atingida3

Para cada requisição, deverão estar abertas 3 threads.



Ao enviar 3 requisições

  • Ao enviar a requisição 01, serão abertas 3 threads (IDs 200, 205, 320). Como apenas a thread 200 será utilizada para atender a requisição 01, as threads 205 e 320 ficarão livres e atenderão a necessidade de manter no mínimo duas threads livres.
  • Ao concluir o atendimento da requisição 01, em 5 segundos, a thread 200 ficará livre e a quantidade será novamente 3 threads livres.
  • Ao enviar a requisição 02, como já existem 3 threads abertas e livres, não será necessário abrir novas threads, sendo utilizada apenas a thread 200 para atender.
  • Antes de concluir o atendimento da requisição 02, é enviada a requisição 03. Como a thread 200 está sendo utilizada para atender a requisição 02 e devem haver pelo menos duas threads livres, uma das delas será utililizada para atender a requisição 03. Serão abertas outras threads para atender a quantidade mínima de threads livres. 

05. ASSUNTOS RELACIONADOS

  • Não se aplica.