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


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

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

В Microsoft Dynamics 365 Human Resources можно воспользоваться API MyLeaveRequests submit(), чтобы отправить запрос на отпуск в workflow-процесс. Этот 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} требуется код причины. Выберите соответствующий тип и код причины.
  • Отсрочй не был представлен успешно. Время отсутствия сохранено как черновик запроса.

См. также