Operações em lote

O Cloud Talent Solution é compatível com operações em lote assíncronas, o que permite fazer várias chamadas de API em uma única solicitação HTTP. O tipo de resposta retornado é google.longrunning.operation. O status detalhado da operação em lote pode ser recuperado chamando o método GetOperation usando o campo name em google.longrunning.operation.

O uso de lotes gera menor latência no tempo de resposta da API e maior rendimento. Observe que o recebimento bem-sucedido de uma resposta da API em lote indica apenas que a solicitação em lote foi criada. O processamento de dados real é feito de forma assíncrona. As operações em lote criadas há mais de 30 dias não serão mais acessíveis pelo método GetOperation.

Cada lote está limitado a 200 solicitações.

Indicador de progresso da operação em lote

O google.longrunning.operation criado chamando o método de criação ou atualização em lote se enquadra em um dos estados a seguir:

  • STATE_UNSPECIFIED (o valor padrão)
  • INITIALIZING
  • PROCESSING
  • SUCCEEDED
  • FALHA

No estado INITIALIZING, os campos success_count, failure_count e total_count estão definidos como 0. Se a operação estiver no estado PROCESSING, success_count e failure_count poderão aumentar. No estado SUCCEDED, success_count + failure_count é sempre igual a total_count e success_count > 0. No estado FAILED, success_count é sempre 0.

Criar vagas em lote

O exemplo de código a seguir demonstra como criar vagas em lote:

Python


from google.cloud import talent_v4beta1
import six

def sample_batch_create_jobs(project_id, tenant_id, company_name_one,
                             requisition_id_one, title_one, description_one,
                             job_application_url_one, address_one,
                             language_code_one, company_name_two,
                             requisition_id_two, title_two, description_two,
                             job_application_url_two, address_two,
                             language_code_two):
    """
    Batch Create Jobs

    Args:
      project_id Your Google Cloud Project ID
      tenant_id Identifier of the Tenant
    """

    client = talent_v4beta1.JobServiceClient()

    # project_id = 'Your Google Cloud Project ID'
    # tenant_id = 'Your Tenant ID (using tenancy is optional)'
    # company_name_one = 'Company name, e.g. projects/your-project/companies/company-id'
    # requisition_id_one = 'Job requisition ID, aka Posting ID. Unique per job.'
    # title_one = 'Software Engineer'
    # description_one = 'This is a description of this <i>wonderful</i> job!'
    # job_application_url_one = 'https://www.example.org/job-posting/123'
    # address_one = '1600 Amphitheatre Parkway, Mountain View, CA 94043'
    # language_code_one = 'en-US'
    # company_name_two = 'Company name, e.g. projects/your-project/companies/company-id'
    # requisition_id_two = 'Job requisition ID, aka Posting ID. Unique per job.'
    # title_two = 'Quality Assurance'
    # description_two = 'This is a description of this <i>wonderful</i> job!'
    # job_application_url_two = 'https://www.example.org/job-posting/123'
    # address_two = '111 8th Avenue, New York, NY 10011'
    # language_code_two = 'en-US'

    if isinstance(project_id, six.binary_type):
        project_id = project_id.decode('utf-8')
    if isinstance(tenant_id, six.binary_type):
        tenant_id = tenant_id.decode('utf-8')
    if isinstance(company_name_one, six.binary_type):
        company_name_one = company_name_one.decode('utf-8')
    if isinstance(requisition_id_one, six.binary_type):
        requisition_id_one = requisition_id_one.decode('utf-8')
    if isinstance(title_one, six.binary_type):
        title_one = title_one.decode('utf-8')
    if isinstance(description_one, six.binary_type):
        description_one = description_one.decode('utf-8')
    if isinstance(job_application_url_one, six.binary_type):
        job_application_url_one = job_application_url_one.decode('utf-8')
    if isinstance(address_one, six.binary_type):
        address_one = address_one.decode('utf-8')
    if isinstance(language_code_one, six.binary_type):
        language_code_one = language_code_one.decode('utf-8')
    if isinstance(company_name_two, six.binary_type):
        company_name_two = company_name_two.decode('utf-8')
    if isinstance(requisition_id_two, six.binary_type):
        requisition_id_two = requisition_id_two.decode('utf-8')
    if isinstance(title_two, six.binary_type):
        title_two = title_two.decode('utf-8')
    if isinstance(description_two, six.binary_type):
        description_two = description_two.decode('utf-8')
    if isinstance(job_application_url_two, six.binary_type):
        job_application_url_two = job_application_url_two.decode('utf-8')
    if isinstance(address_two, six.binary_type):
        address_two = address_two.decode('utf-8')
    if isinstance(language_code_two, six.binary_type):
        language_code_two = language_code_two.decode('utf-8')
    parent = client.tenant_path(project_id, tenant_id)
    uris = [job_application_url_one]
    application_info = {'uris': uris}
    addresses = [address_one]
    jobs_element = {
        'company': company_name_one,
        'requisition_id': requisition_id_one,
        'title': title_one,
        'description': description_one,
        'application_info': application_info,
        'addresses': addresses,
        'language_code': language_code_one
    }
    uris_2 = [job_application_url_two]
    application_info_2 = {'uris': uris_2}
    addresses_2 = [address_two]
    jobs_element_2 = {
        'company': company_name_two,
        'requisition_id': requisition_id_two,
        'title': title_two,
        'description': description_two,
        'application_info': application_info_2,
        'addresses': addresses_2,
        'language_code': language_code_two
    }
    jobs = [jobs_element, jobs_element_2]

    operation = client.batch_create_jobs(parent, jobs)

    print('Waiting for operation to complete...')
    response = operation.result()

    print('Batch response: {}'.format(response))

Atualizar vagas em lote

O exemplo de código a seguir demonstra como executar atualizar vagas em lote:

Python


from google.cloud import talent_v4beta1
import six

def sample_batch_update_jobs(project_id, tenant_id, job_name_one,
                             company_name_one, requisition_id_one, title_one,
                             description_one, job_application_url_one,
                             address_one, language_code_one, job_name_two,
                             company_name_two, requisition_id_two, title_two,
                             description_two, job_application_url_two,
                             address_two, language_code_two):
    """
    Batch Update Jobs

    Args:
      project_id Your Google Cloud Project ID
      tenant_id Identifier of the Tenant
    """

    client = talent_v4beta1.JobServiceClient()

    # project_id = 'Your Google Cloud Project ID'
    # tenant_id = 'Your Tenant ID (using tenancy is optional)'
    # job_name_one = 'job name, e.g. projects/your-project/tenants/tenant-id/jobs/job-id'
    # company_name_one = 'Company name, e.g. projects/your-project/companies/company-id'
    # requisition_id_one = 'Job requisition ID, aka Posting ID. Unique per job.'
    # title_one = 'Software Engineer'
    # description_one = 'This is a description of this <i>wonderful</i> job!'
    # job_application_url_one = 'https://www.example.org/job-posting/123'
    # address_one = '1600 Amphitheatre Parkway, Mountain View, CA 94043'
    # language_code_one = 'en-US'
    # job_name_two = 'job name, e.g. projects/your-project/tenants/tenant-id/jobs/job-id'
    # company_name_two = 'Company name, e.g. projects/your-project/companies/company-id'
    # requisition_id_two = 'Job requisition ID, aka Posting ID. Unique per job.'
    # title_two = 'Quality Assurance'
    # description_two = 'This is a description of this <i>wonderful</i> job!'
    # job_application_url_two = 'https://www.example.org/job-posting/123'
    # address_two = '111 8th Avenue, New York, NY 10011'
    # language_code_two = 'en-US'

    if isinstance(project_id, six.binary_type):
        project_id = project_id.decode('utf-8')
    if isinstance(tenant_id, six.binary_type):
        tenant_id = tenant_id.decode('utf-8')
    if isinstance(job_name_one, six.binary_type):
        job_name_one = job_name_one.decode('utf-8')
    if isinstance(company_name_one, six.binary_type):
        company_name_one = company_name_one.decode('utf-8')
    if isinstance(requisition_id_one, six.binary_type):
        requisition_id_one = requisition_id_one.decode('utf-8')
    if isinstance(title_one, six.binary_type):
        title_one = title_one.decode('utf-8')
    if isinstance(description_one, six.binary_type):
        description_one = description_one.decode('utf-8')
    if isinstance(job_application_url_one, six.binary_type):
        job_application_url_one = job_application_url_one.decode('utf-8')
    if isinstance(address_one, six.binary_type):
        address_one = address_one.decode('utf-8')
    if isinstance(language_code_one, six.binary_type):
        language_code_one = language_code_one.decode('utf-8')
    if isinstance(job_name_two, six.binary_type):
        job_name_two = job_name_two.decode('utf-8')
    if isinstance(company_name_two, six.binary_type):
        company_name_two = company_name_two.decode('utf-8')
    if isinstance(requisition_id_two, six.binary_type):
        requisition_id_two = requisition_id_two.decode('utf-8')
    if isinstance(title_two, six.binary_type):
        title_two = title_two.decode('utf-8')
    if isinstance(description_two, six.binary_type):
        description_two = description_two.decode('utf-8')
    if isinstance(job_application_url_two, six.binary_type):
        job_application_url_two = job_application_url_two.decode('utf-8')
    if isinstance(address_two, six.binary_type):
        address_two = address_two.decode('utf-8')
    if isinstance(language_code_two, six.binary_type):
        language_code_two = language_code_two.decode('utf-8')
    parent = client.tenant_path(project_id, tenant_id)
    uris = [job_application_url_one]
    application_info = {'uris': uris}
    addresses = [address_one]
    jobs_element = {
        'name': job_name_one,
        'company': company_name_one,
        'requisition_id': requisition_id_one,
        'title': title_one,
        'description': description_one,
        'application_info': application_info,
        'addresses': addresses,
        'language_code': language_code_one
    }
    uris_2 = [job_application_url_two]
    application_info_2 = {'uris': uris_2}
    addresses_2 = [address_two]
    jobs_element_2 = {
        'name': job_name_two,
        'company': company_name_two,
        'requisition_id': requisition_id_two,
        'title': title_two,
        'description': description_two,
        'application_info': application_info_2,
        'addresses': addresses_2,
        'language_code': language_code_two
    }
    jobs = [jobs_element, jobs_element_2]

    operation = client.batch_update_jobs(parent, jobs)

    print('Waiting for operation to complete...')
    response = operation.result()

    print('Batch response: {}'.format(response))

Excluir vagas em lote

Na amostra de código a seguir, demonstramos como excluir jobs em lote:

Node.js


const talent = require('@google-cloud/talent').v4;

/**
 * Batch delete jobs using a filter
 *
 * @param projectId {string} Your Google Cloud Project ID
 * @param tenantId {string} Identifier of the Tenantd
 * @param filter {string} The filter string specifies the jobs to be deleted.
 * For example:
 * companyName = "projects/api-test-project/companies/123" AND equisitionId = "req-1"
 */
function sampleBatchDeleteJobs(projectId, tenantId, filter) {
  const client = new talent.JobServiceClient();
  // const projectId = 'Your Google Cloud Project ID';
  // const tenantId = 'Your Tenant ID (using tenancy is optional)';
  // const filter = '[Query]';
  const formattedParent = client.tenantPath(projectId, tenantId);
  const request = {
    parent: formattedParent,
    filter: filter,
  };
  client.batchDeleteJobs(request).catch(err => {
    console.error(err);
  });
  console.log('Batch deleted jobs from filter');
}