批量操作

Cloud Talent Solution 支持异步批量操作,因而您可以将多个 API 调用放入单个 HTTP 请求中。返回的响应类型为 google.longrunning.operation。通过使用 google.longrunning.operation 中的 name 字段调用 GetOperation 方法,可以检索批量处理的详细状态。

使用批量操作功能可以缩短 API 响应延时,并可提高吞吐量。请注意,成功收到批量 API 响应仅表示已创建批量请求。实际的数据处理是异步完成的。超过 30 天前创建的批量操作将无法再通过 GetOperation 方法访问。

每批最多可处理 200 个请求

批量操作进度指示器

通过调用批量创建或更新方法创建的 google.longrunning.operation 处于以下状态之一:

  • 状态不明(默认值)
  • 正在初始化
  • 正在处理
  • 成功
  • 失败

在“正在初始化”状态下,success_countfailure_counttotal_count 字段设置为 0。如果操作处于“正在处理”状态,则 success_countfailure_count 可能会增加。在“成功”状态下,success_count + failure_count 始终等于 total_countsuccess_count > 0。在“失败”状态下,success_count 始终为 0。

批量创建职位

以下代码示例演示了如何批量创建职位:

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))

批量更新职位

以下代码示例演示了如何批量更新职位:

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))

批量删除职位

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');
}