Condividi tramite


Informazioni su come accettare o rifiutare le offerte di processi router processo

Questa guida illustra i passaggi da eseguire per osservare un'offerta router di processo. Descrive anche come accettare o rifiutare le offerte di lavoro.

Prerequisiti

Accettare le offerte di processi

Dopo aver creato un processo, osservare l'evento rilasciato dall'offerta di lavoro, che contiene l'ID del ruolo di lavoro e l'ID offerta del processo. Il ruolo di lavoro può accettare offerte di lavoro usando l'SDK. Dopo aver accettato l'offerta, il processo viene assegnato al ruolo di lavoro e lo stato del processo viene aggiornato a assigned.

// Event handler logic omitted
var accept = await client.AcceptJobOfferAsync(offerIssuedEvent.Data.WorkerId, offerIssuedEvent.Data.OfferId);
// Event handler logic omitted
const accept = await client.path("/routing/workers/{workerId}/offers/{offerId}:accept",
    offerIssuedEvent.data.workerId, offerIssuedEvent.data.offerId).post();
# Event handler logic omitted
accept = client.accept_job_offer(offerIssuedEvent.data.worker_id, offerIssuedEvent.data.offer_id)
// Event handler logic omitted
AcceptJobOfferResult accept = client.acceptJobOffer(offerIssuedEvent.getData().getWorkerId(), offerIssuedEvent.getData().getOfferId());

Rifiutare le offerte di lavoro

Il ruolo di lavoro può rifiutare le offerte di lavoro usando l'SDK. Una volta rifiutata l'offerta, il processo viene offerto al ruolo di lavoro disponibile successivo. Il processo non viene offerto allo stesso ruolo di lavoro che ha rifiutato il processo fino a quando il lavoratore non viene nuovamente registrato e registrato di nuovo.

// Event handler logic omitted
await client.DeclineJobOfferAsync(new DeclineJobOfferOptions(workerId: offerIssuedEvent.Data.WorkerId,
    offerId: offerIssuedEvent.Data.OfferId));
// Event handler logic omitted
await client.path("/routing/workers/{workerId}/offers/{offerId}:decline",
    offerIssuedEvent.data.workerId, offerIssuedEvent.data.offerId).post();
# Event handler logic omitted
client.decline_job_offer(offerIssuedEvent.data.worker_id, offerIssuedEvent.data.offer_id)
// Event handler logic omitted
client.declineJobOffer(offerIssuedEvent.getData().getWorkerId(), offerIssuedEvent.getData().getOfferId());

Riprovare l'offerta dopo un po' di tempo

In alcuni scenari, un ruolo di lavoro potrebbe voler ritentare automaticamente un'offerta dopo un certo periodo di tempo. Ad esempio, un ruolo di lavoro può voler ripetere un'offerta dopo 5 minuti. Per ottenere questo flusso, il ruolo di lavoro può usare l'SDK per rifiutare l'offerta e specificare la retryOfferAfter proprietà .

// Event handler logic omitted
await client.DeclineJobOfferAsync(new DeclineJobOfferOptions(workerId: offerIssuedEvent.Data.WorkerId,
    offerId: offerIssuedEvent.Data.OfferId)
{
    RetryOfferAt = DateTimeOffset.UtcNow.AddMinutes(5)
});
// Event handler logic omitted
await client.path("/routing/workers/{workerId}/offers/{offerId}:decline",
    offerIssuedEvent.data.workerId, offerIssuedEvent.data.offerId).post({
        body: {
            retryOfferAt: new Date(Date.now() + 5 * 60 * 1000)
        }
    });
# Event handler logic omitted
client.decline_job_offer(
    worker_id = offerIssuedEvent.data.worker_id,
    offer_id = offerIssuedEvent.data.offer_id,
    retry_offer_at = datetime.utcnow() + timedelta(minutes = 5))
// Event handler logic omitted
client.declineJobOffer(
    offerIssuedEvent.getData().getWorkerId(),
    offerIssuedEvent.getData().getOfferId(),
    new RequestOptions().setBody(BinaryData.fromObject(
        new DeclineJobOfferOptions().setRetryOfferAt(OffsetDateTime.now().plusMinutes(5)))));

Completare il processo

Dopo che il ruolo di lavoro ha completato il lavoro associato al processo (ad esempio, completato la chiamata), il processo viene completato, che aggiorna lo stato a completed.

await routerClient.CompleteJobAsync(new CompleteJobOptions(jobId: accept.Value.JobId, assignmentId: accept.Value.AssignmentId));
await client.path("/routing/jobs/{jobId}/assignments/{assignmentId}:complete", accept.body.jobId, accept.body.assignmentId).post();
router_client.complete_job(job_id = job.id, assignment_id = accept.assignment_id)
routerClient.completeJobWithResponse(accept.getJobId(), accept.getAssignmentId(), null);

Chiudere il processo

Quando il ruolo di lavoro è pronto per l'esecuzione di nuovi processi, il ruolo di lavoro deve chiudere il processo, che aggiorna lo stato a closed. Facoltativamente, il ruolo di lavoro può fornire un codice di eliminazione per indicare il risultato del processo.

await routerClient.CloseJobAsync(new CloseJobOptions(jobId: accept.Value.JobId, assignmentId: accept.Value.AssignmentId) {
    DispositionCode = "Resolved"
});
await client.path("/routing/jobs/{jobId}/assignments/{assignmentId}:close", accept.body.jobId, accept.body.assignmentId).post({
    body: {
        dispositionCode: "Resolved"
    }
});
router_client.close_job(job_id = job.id, assignment_id = accept.assignment_id, disposition_code = "Resolved")
routerClient.closeJobWithResponse(accept.getJobId(), accept.getAssignmentId(), 
    new RequestOptions().setBody(BinaryData.fromObject(new CloseJobOptions().setDispositionCode("Resolved"))));

Passaggi successivi