Поделиться через


Отправка запроса на отпуск в workflow-процесс

Применяется к следующим приложениям Dynamics 365:
Human Resources

В Microsoft Dynamics 365 Human Resources ней можно использовать интерфейс прикладного программирования (API) MyLeaveRequests submit() для подачи запроса на отпуск документообороту. Этот API представляется как действие для объекта OData MyLeaveRequests.

Необходимые условия

Запрос на отпуск должен быть сохранен в базе данных и должен быть доступен для извлечения с помощью объекта MyLeaveRequests.

Права доступа

Для вызова этого API требуется одно из следующих разрешений. Дополнительные сведения о разрешениях и как их выбрать см. в Аутентификация.

Тип разрешения Разрешения (от минимальных до максимальных привилегий)
Делегировано (рабочая или учебная учетная запись) user_impersonation

HTTPS-запрос

POST https://{cluster}.hr.talent.dynamics.com/namespaces/{namespace_guid}/data/MyLeaveRequests(RequestId='{requestId}', LeaveType='{leaveType}', LeaveDate={leaveDate}, dataAreaId={dataArea})/Microsoft.Dynamics.DataEntities.submit?cross-company=true

Запрос соответствует стандартам OData. Параметры {requestId}, {leaveType}, {leaveDate} и {dataArea} относятся к полям, составляющим составной естественный ключ для объекта MyLeaveRequests.

Примечание

Хотя поля для объекта MyLeaveRequests ссылаются на отдельную строку в запросе отпуска, при вызове API будет отправлен весь запрос отпуска (все строки) в workflow-процесс.

Заголовки запроса

Заголовок Value
Санкционирование Носитель {token} (обязательно)
Content-Type application/json

Текст запроса

Не указывайте текст запроса для этого метода.

Отклик

Успешный ответ — всегда ответ 204 No Content.

Неавторизованные абоненты получают 401 Или 403 Запрещено ответ.

Если отправка не выполняется (например, из-за проверки), ответ представляет собой ошибку 500 сервера, а ответ тело будет содержать объект XML с более подробными сведениями.

Пример

POST https://aos-rts-sf-550e5c091f6-prod-westus2.hr.talent.dynamics.com/namespaces/b2eb8003-334f-4a84-ab63-edbe23569090/data/MyLeaveRequests(RequestId='USMF-000065', LeaveType='Vacation', LeaveDate=2019-10-04T12:00:00Z, dataAreaId='USMF')/Microsoft.Dynamics.DataEntities.submit
{
  "error": {
    "code": "",
    "message": "An error has occurred.",
    "innererror": {
      "message": "Exception occurred while executing action submit on Entity MyLeaveRequest: The request would put the 'Vacation' balance below the allowed minimum balance on 9/10/2019.",
      "type": "System.InvalidOperationException",
      "stacktrace": "   at Microsoft.Dynamics.Platform.Integration.Services.OData.Action.ActionInvokable.Invoke()   at Microsoft.Dynamics.Platform.Integration.Services.OData.Update.UpdateProcessor.ActionInvocation(ChangeOperationContext context, ActionInvokable action)   at Microsoft.Dynamics.Platform.Integration.Services.OData.Update.UpdateManager.<>c__DisplayClass13_0.<ScheduleInvokable>b__0(ChangeOperationContext context)   at Microsoft.Dynamics.Platform.Integration.Services.OData.Update.ChangeInfo.ExecuteActionsInCompanyContext(IEnumerable`1 actionList, ChangeOperationContext operationContext)\r\n   at Microsoft.Dynamics.Platform.Integration.Services.OData.Update.ChangeInfo.ExecuteActions(ChangeOperationContext context)   at Microsoft.Dynamics.Platform.Integration.Services.OData.Update.UpdateManager.SaveChanges()   at Microsoft.Dynamics.Platform.Integration.Services.OData.AxODataDelegatingHandler.<SaveChangesAsync>d__3.MoveNext()"
    }
  }
}

Сообщения о проверке и ошибках

В ходе вызова для отправки API платформа Human Resources выполняет проверку бизнес-логики перед отправкой, чтобы запрос отпуска находится в допустимом состоянии для отправки. Возможные сообщения об ошибках, которые могут появиться в ответе в случае сбоя проверок:

  • В результате этого запроса сальдо '{LeaveTypeId}' будет ниже допустимого минимального сальдо на {date}.
  • Запрос об окончании в статусе Завершения не может быть отправлен.
  • Не удалось отправить или сохранить запрос, поскольку изменения не выполнены. Добавьте или обновите сумму или тип отпуска и повторите попытку.
  • Введенный запрос о времени отсутствия содержит один или несколько дней с одинаковой датой и типом отпуска как существующий ожидающий запрос. Отозвать существующую просьбу о внесении изменений.
  • Код основания '{ReasonCodeId}' не применяется ни к одному из типов отпуска в запросе.
  • Для типа отпуска {LeaveTypeId} требуется код причины. Выберите соответствующий тип и код причины.
  • Отсрочй не был представлен успешно. Время отсутствия сохранено как черновик запроса.

См. также