Udostępnij za pośrednictwem


Przesyłanie wniosku o urlop do przepływu pracy

Dotyczy tych aplikacji Dynamics 365:
Human Resources

W rozwiązaniu Microsoft Dynamics 365 Human Resources można skorzystać z interfejsu API przesyłania MyLeaveRequests w celu przesłania wniosku urlopowego do przepływu pracy. Ten interfejs API jest udostępniany jako akcja w jednostce protokołu OData o nazwie MyLeaveRequests.

Wymagania wstępne

Wniosek urlopowy musi zostać zapisany w bazie danych i być możliwy do pobrania za pośrednictwem jednostki MyLeaveRequests.

Uprawnienia

Do wywołania tego interfejsu API jest wymagane jedno z poniższych uprawnień. Aby uzyskać więcej informacji na temat uprawnień i ich wybierania, zobacz Uwierzytelnianie.

Typ uprawnienia Uprawnienia (od najmniej uprzywilejowanych do najbardziej uprzywilejowanych)
Delegowane (konto służbowe lub uczelniane) user_impersonation

Żądanie 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

Żądanie jest zgodne ze standardami protokołu OData. Parametry {requestId}, {leaveType}, {leaveDate} i {dataArea} odwołują się do pól tworzących zbiorczy klucz naturalny jednostki MyLeaveRequests.

Banknot

Pola jednostki MyLeaveRequests odwołują się do pojedynczego wiersza we wniosku urlopowym, ale wywołanie interfejsu API przesyłania spowoduje przesłanie całego wniosku urlopowego (wszystkich wierszy) do przepływu pracy.

Nagłówki żądań

Nagłówek Value
Autoryzacja Okaziciel {token} (wymagana)
Typ zawartości application/json

Treść wniosku

W tej metodzie nie należy podawać treści wniosku.

Odpowiedź

Pomyślna odpowiedź zawsze ma treść 204 Brak zawartości.

Nieautoryzowani rozmówcy otrzymują 401 Nieautoryzowane lub 403 Zabronione odpowiedź.

Jeśli przesyłanie nie powiodło się (na przykład z powodu weryfikacji), kod odpowiedź zawiera błąd serwera 500, a treść odpowiedź będzie zawierać obiekt JSON z innymi szczegółami.

Przykład

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()"
    }
  }
}

Weryfikacja i komunikaty o błędach

W ramach wywołania interfejsu API przesyłania moduł Human Resources przeprowadza weryfikację logiki biznesowej przed rozpoczęciem przesyłania, co gwarantuje, że wniosek urlopowy będzie w prawidłowym stanie do przesłania. W razie niepowodzenia sprawdzania poprawności mogą się w odpowiedzi pojawić następujące komunikaty o błędach:

  • Zaakceptowanie wniosku spowodowałaby zmniejszenie salda „{LeaveTypeId}” do poziomu niższego niż dozwolone saldo minimalne na dzień {date}.
  • Nie można przesłać żądania zmiany czasu w stanie Zakończono.
  • Nie można przesłać lub zapisać wniosku, ponieważ nie wprowadzono żadnych zmian. Dodaj lub zaktualizuj ilość albo typ urlopu, a następnie spróbuj ponownie.
  • Wprowadzony wniosek urlopowy zawiera co najmniej jeden dzień z taką samą datą i typem urlopu, co istniejący oczekujący wniosek. Odwołaj istniejące żądanie, aby wprowadzić zmiany.
  • Kod przyczyny „{ReasonCodeId}” nie ma zastosowania do żadnego typu urlopu we wniosku.
  • Typ urlopu „{LeaveTypeId}” wymaga kodu przyczyny. Wybierz odpowiedni typ i kod przyczyny.
  • Czas nie został przesłany pomyślnie. Wniosek urlopowy został zapisany jako wersja robocza wniosku.

Informacje dodatkowe