Google Cloud Talent Solution получить работу по реквизиции - PullRequest
0 голосов
/ 17 октября 2018

Мне интересно, можно ли получить работу по реквизиции в Google Cloud Talent Solution.requisitionId должен быть уникальным для всех рабочих мест, поэтому он выглядит естественным кандидатом для поиска работы.

При создании задания API возвращает задание name, которое можно использовать для поиска задания:

Вы можете получить сведения о ранее вставленном задании, отправивПОЛУЧИТЬ запрос к Cloud Talent Solution.URI должен включать ранее вставленное имя задания, возвращаемое исходным запросом на создание, в качестве параметра URL.

Я бы хотел, если возможно, избежать хранения этих имен.На мой взгляд, их хранение добавляет ненужную сложность, поскольку у меня уже есть уникальный requisitionId.Чтобы было понятно, API не позволяет добавлять задания с дубликатом requisitionId:

Проекты заданий / {my_app_id} / jobs / {google_assigned_id} уже существует.Идентификатор запроса для отслеживания: ... Связанный идентификатор вакансии: ...

Так что я могу искать работы по requisitionId?

Я могу разобрать возвращаемое сообщение об ошибкечтобы получить имя работы ... но это кажется довольно хрупким.

Ответы [ 2 ]

0 голосов
/ 18 октября 2018

Оказывается, метод list занимает requisitionId, поэтому для полного цикла чтения-создания-обновления мы можем сделать:

const listRequest = {
  parent: `projects/${projectId}`,
  'filter': `companyName="${companyName}" AND requisitionId="${requisitionId}"`
}
const listResult = await jobService.projects.jobs.list(listRequest)
const existingJobs = listResult.data.jobs || [];

let existingJob = null
if (existingJobs && existingJobs.length > 0) {
  existingJob = existingJobs[0]
}

let googleJob
if (!existingJob) {
  const createRequest = {
    'parent': `projects/${projectId}`,
    'resource': {
      'job': {
        companyName,
        requisitionId,
        title,
        description,
        applicationInfo: {
          emails: ['email@example.com']
        }          
      }
    }
  }
  googleJob = await jobService.projects.jobs.create(createRequest)
  .then(result => result)
  .catch(resp => {
    console.error("ERROR")
    console.error(resp)
  })
} else {
  const patchRequest = {
    'name': existingJob.name,
    'resource': {
      'job': {
        companyName,
        requisitionId,
        title,
        description,
        applicationInfo: {
          emails: ['email@example.com']
        }          
      }
    }
  }
  googleJob = await jobService.projects.jobs.patch(patchRequest)
    .then(result => result)
    .catch(resp => {
      console.error("ERROR")
      console.error(resp)
    })
}

Документы: https://cloud.google.com/talent-solution/job-search/docs/reference/rest/v3/projects.jobs/list?authuser=0&hl=de

Примечания:

  • Двойные кавычки в параметре filter важны.Он не будет принимать одинарные кавычки и выдаст загадочное сообщение об ошибке.
  • Запрос на исправление не может принимать параметр parent, даже если все остальное требует родительский параметр ...
0 голосов
/ 17 октября 2018

можно добавить его как пользовательский атрибут:

Map<String, CustomAttribute> attributes = new HashMap<>();

attributes
    .put("requisitionId", new CustomAttribute().setStringValue(requisitionId)
    .setFilterable(true));

Job job = new Job()
    ...
    .setCustomAttributes(attributes);

Job jobCreated = createJob(job);
String jobName = jobCreated.getName();

, а затем искать requisitionId с пользовательским атрибутом filter :

 JobQuery jobQuery = new JobQuery().setCustomAttributeFilter(filter);

этонемного избыточно, но JobQuery не имеет метода .setRequisitionId().

вот документация .

...