Отправка запроса на отпуск в 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} требуется код причины. Выберите соответствующий тип и код причины.
- Отсрочй не был представлен успешно. Время отсутствия сохранено как черновик запроса.