Einführung
Cloud HCM bietet die Möglichkeit, Daten aus HCM mit der zugrunde liegenden BOSS/Spectra-Plattform der neuen Generation zu extrahieren.
Ziele
Nach Abschluss dieses Tutorials erfahren Sie, wie Sie:
- Worker-Extraktionsansichten und ihre Hierarchie von Objekten abfragen
- Extraktionsjobanforderungen zum Abrufen ausgewählter Mitarbeiterhierarchiedaten asynchron weiterleiten und verfolgen
- Exportausgabedateien herunterladen
Voraussetzungen
Bevor Sie beginnen:
- Wenden Sie sich an Oracle CoE, um sicherzustellen, dass die Spectra-Plattform, einschließlich der RODS-Datenreplikation, in Ihrem Pod bereitgestellt wird
- Führen Sie die erforderliche Sicherheitskonfiguration aus, einschließlich:
- Datensicherheit einrichten
- OAuth Client-App-Setup
Anwendungsfälle
Mit dieser Funktion können Sie die folgenden Anwendungsfälle bearbeiten.
Vollständige Datenextraktion
Die vollständige Extraktion von Mitarbeiterdaten kann eine einmalige oder periodische Aktivität sein.
Sie können die gesamte Objekthierarchie oder nur eine Teilmenge davon abrufen.
Die vollständige Datenextraktion ruft alle Datensätze ab, die den Filterkriterien entsprechen, und die Ausgabedateien können sehr groß sein.
Datumsabhängige Objekte werden ab dem angeforderten Gültigkeitsdatum abgerufen, wobei das aktuelle Extraktionsdatum der Standardwert ist.
Inkrementelle Datenextraktion
Die inkrementelle Extraktion von Mitarbeiterdaten ist in der Regel eine periodische, geplante Aktivität.
Sie können die gesamte Objekthierarchie oder nur eine Teilmenge davon abrufen.
In diesem Anwendungsfall möchten Sie nur Objekte abrufen, die seit der vorherigen Extraktionsausführung geändert wurden, wobei die erste Extraktionsausführung die Baseline ist. Um dies zu erreichen, müssen timeUpdated
-Attributfilter auf jeder Ebene angewendet werden, die der Änderungserkennung unterliegt.
Inkrementelle Datenextraktionsabfrage kann zusätzliche Filterkriterien anwenden. Ausgabedateien sind im Allgemeinen kleiner als die vollständige Extraktion, da sie nur Delta enthalten.
Es werden nur aktuelle Werte von Attributen abgerufen.
Datumsabhängige Objekte werden ab dem angeforderten Gültigkeitsdatum abgerufen, wobei das aktuelle Extraktionsdatum der Standardwert ist.
Achtung:
Physisch gelöschte Datensätze werden nicht durch Filtern nachtimeUpdated
zurückgegeben.
Aufgabe 1: Extraktionsansicht auswählen
Wählen Sie abhängig von den erforderlichen Objekten und Attributen aus, welche Extraktionsansicht verwendet werden soll. Die verfügbaren Ansichten sowie die Objekte und Attribute, die extrahiert werden können, sind unten aufgeführt.
Mitarbeiterarbeitsstelle exportieren
Mit workerAssignmentExtracts können Sie Arbeitsstellendaten von Mitarbeitern extrahieren.
View-Pfad | workerAssignmentExtracts |
---|
Objekt | Attribute | Beziehungstyp |
---|---|---|
workerAssignmentExtract |
|
n/v |
workerAssignmentExtract.department |
|
Eins-zu-Eins |
workerAssignmentExtract.legalEmployer |
|
Eins-zu-Eins |
workerAssignmentExtract.legislation |
|
Eins-zu-Eins |
workerAssignmentExtract.position |
|
Eins-zu-Eins |
workerAssignmentExtract.grade |
|
Eins-zu-Eins |
workerAssignmentExtract.location |
|
Eins-zu-Eins |
workerAssignmentExtract.location.mainAddress |
|
Eins-zu-Eins |
workerAssignmentExtract.location.mainAddress.country |
|
Eins-zu-Eins |
workerAssignmentExtract.job |
|
Eins-zu-Eins |
workerAssignmentExtract.job.jobFamily |
|
Eins-zu-Eins |
workerAssignmentExtract.collectiveAgreement |
|
Eins-zu-Eins |
workerAssignmentExtract.personType |
|
Eins-zu-Eins |
workerAssignmentExtract.workerUnion |
|
Eins-zu-Eins |
workerAssignmentExtract.assignmentUserStatus |
|
Eins-zu-Eins |
workerAssignmentExtract.businessUnit |
|
Eins-zu-Eins |
workerAssignmentExtract.account |
|
Eins-zu-Eins |
workerAssignmentExtract.ledger |
|
Eins-zu-Eins |
workerAssignmentExtract.workRelationship |
|
Eins-zu-Eins |
workerAssignmentExtract.localName |
|
Eins-zu-Eins |
workerAssignmentExtract.globalName |
|
Eins-zu-Eins |
workerAssignmentExtract.personDetail |
|
Eins-zu-Eins |
Mitarbeitergesetzgebungsinformationen exportieren
Mit workerLegislativeInfoExtract können Sie Gesetzgebungsinformationen von Mitarbeitern extrahieren.
View-Pfad | Mitarbeiter/$views/workerLegislativeInfoExtract |
---|
Objekt | Attribute | Beziehungstyp |
---|---|---|
Worker |
|
n/v |
worker.personDetail |
|
Eins-zu-Eins |
worker.legislativeInformation |
|
Eins-zu-Eins |
worker.legislativeInformation.legislation |
|
Eins-zu-Eins |
Mitarbeiternamen extrahieren
Verwenden Sie workerNamesExtract, um Mitarbeiternamensdaten zu extrahieren.
View-Pfad | Mitarbeiter/$views/workerNamesExtract |
---|
Objekt | Attribute | Beziehungstyp |
---|---|---|
Worker |
|
n/v |
worker.personDetail |
|
Eins-zu-Eins |
worker.names |
|
n:n |
worker.names.legislation |
|
Eins-zu-Eins |
worker.names.language |
|
Eins-zu-Eins |
Mitarbeitertelefone exportieren
Mit workerPhonesExtract können Sie Telefondaten von Mitarbeitern extrahieren.
View-Pfad | Mitarbeiter/$views/workerPhonesExtract |
---|
Objekt | Attribute | Beziehungstyp |
---|---|---|
Worker |
|
n/v |
worker.personDetail |
|
Eins-zu-Eins |
worker.phones |
|
n:n |
worker.phones.legislation |
|
Eins-zu-Eins |
Mitarbeiter-E-Mails exportieren
Mit workerEmailsExtract können Sie E-Mail-Daten von Mitarbeitern extrahieren.
View-Pfad | Mitarbeiter/$views/workerEmailsExtract |
---|
Objekt | Attribute | Beziehungstyp |
---|---|---|
Worker |
|
n/v |
worker.personDetail |
|
Eins-zu-Eins |
worker.emails |
|
Eins-zu-Viele |
Mehrere Sprachen :
Übersetzbare Attribute sind derzeit nur auf Englisch verfügbar.Aufgabe 2: Extraktionsabfragen vorbereiten und testen
Jede Extraktionsansicht verfügt über eine Abfrage-API, mit der Extraktionsabfragen erstellt und getestet werden können.
URL | /api/boss/data/objects/ora/hcmHrCore/employment/v1/{{viewPath}}/$query |
---|---|
HTTP-Methode | POST |
Anforderungsvorlage |
{ "collection": { "limit": {{limit}}, "offset": {{offset}}, "sortBy": [ {{sortAttributes}} ], "filter": "{{topLevelFilter}}" }, "fields": [ {{topLevelAttributes}} ], "accessors": { "{{childObject}}": { "collection": { "filter": "{{childLevelFilter}}" }, "fields": [ {{childLevelAttributes}} ], "accessors": { {{nestedChildAccessors}} } }, ... } } |
Antwortvorlage |
200 OK { "items": [ {{items}} ], "hasMore": {{hasMore}} } |
Objekte und Attribute
Definieren Sie, welche Daten extrahiert werden sollen, d.h. welche Objekte und Attribute einbezogen werden sollen. Um untergeordnete Objekte einzubeziehen, müssen Accessor hinzugefügt werden, während bestimmte Felder im Array fields
aufgelistet werden müssen. Siehe vollständiges Beispiel.
Filtern
Definieren Sie, wie Daten gefiltert werden sollen. Sie können die folgenden Ausdrücke verwenden, um Filter für Ihre Abfrage zu erstellen.
Zweck | Ausdruck | Beispiel |
---|---|---|
Gleichheitstest | field = value |
ename = 'KING' |
Ungleichheitstest | field != value |
activeFlag != true |
Größer als ein Test Weniger als ein Test |
field > value |
sal > 1999.99 |
Größer als oder gleichwertig zu testen Weniger als oder gleichwertig zu testen |
field >= value |
sal >= 1999.99 |
Musterabgleich | field LIKE 'pattern' |
job LIKE 'SALES%' |
Mitgliedschaftstest | field IN (value1, ..., valueN) |
deptno IN (10, 20, 40) |
Vergleich der Groß-/Kleinschreibung ignorieren | field ~= value |
ename ~= 'king' |
Existenztest (für Eins-zu-Viele-Beziehungen) | child[expression] |
assignments[startDate = null] |
Logische UND-Verknüpfung | expression AND expression |
|
Logische ODER-Verknüpfung | expression OR expression |
|
Logische Negation | !(expression) |
Nach untergeordneten Objekten in einer Eins-zu-Eins-Beziehung filtern:
Bei Eins-zu-Eins-Beziehungen können Sie auf untergeordnete Objekte und deren Attribute in der Filterklausel genauso wie auf die Attribute anderer übergeordneter Objekte verweisen, z.B.legalEmployer.id in (1001, 1002)
.
Untergeordnete Objekte in Eins-zu-viele-Beziehungen filtern:
Im Falle von Eins-zu-Viele-Beziehungen filtert der Existenztest in der obigen Tabelle Eltern, die mindestens ein Kind haben, das die Kriterien erfüllt. Dies bedeutet jedoch nicht, dass untergeordnete Datensätze automatisch gefiltert werden, wenn sie abgerufen werden. Wenn Sie sicherstellen möchten, dass Sie nur untergeordnete Datensätze erhalten, die den Kriterien entsprechen, müssen Sie den Filter auch auf der untergeordneten Ebene wiederholen.Beispiel: Wenn Sie nur Telefone des Typs W1
abrufen möchten, müssen Sie die folgenden Filter anwenden:
{ "collection": { "filter": "phones[type = 'W1']" }, "accessors": { "phones": { "collection": { "filter": "type = 'W1'" }, ...
Nach Gültigkeitsdatum filtern:
Bei datumsabhängigen Objekten erhalten Sie standardmäßig Daten, die ab dem aktuellen Datum gültig sind. Um Daten abzurufen, die ab einem bestimmten Datum gültig sind, verwenden Sie den HTTP-Abfrageparameter$effectiveDate
.
Beispiel: Wenn Sie Daten abrufen möchten, die ab 2023-01-01
gültig sind, verwenden Sie die folgende URL für Ihre Abfrage:
/api/boss/data/objects/ora/hcmHrCore/employment/v1/{{viewPath}}/$query?$effectiveDate=2023-01-01
Sortierung
Definieren Sie, wie Daten sortiert werden sollen. Die Sortierung wird durch ein Array von Sortierattributen einschließlich der Sortierrichtung (asc oder desc) ausgedrückt. Beispiel:
"sortBy": [ { "totalAmount": "desc" }, { "paidAmount": "asc" } ]
Paging
Legen Sie fest, wie Daten paginiert werden sollen. Der Client kann das Paging steuern, indem er Grenz- und Offsetparameter bereitstellt. Beispiel:
"limit": 200, "offset": 400
Das Standardlimit ist 25
und das maximale Limit ist 1000
.
Der Standard-Offset ist 0
und gibt den Anfang der Ergebnisse an.
Das hasMore
-Attribut der obersten Ebene in der Antwort gibt an, ob weitere Ergebnisse abgerufen werden müssen.
Paginierung sollte nicht als alternative Methode zum Extrahieren von Daten verwendet werden. Bei der Abfrage dieser API gibt es keine Garantie, dass sich die Daten zwischen den Anforderungen nicht ändern. Verwenden Sie die asynchrone API für die Datenextraktion.
Beispiel
Die folgende Beispielextraktabfrage soll Arbeitsstelleninformationen zusammen mit Arbeitgeber- und Abteilungsdetails abrufen, die:
- Sind primäre Arbeitsstellen
- Sind vom Typ "Mitarbeiter"
- Gehören Sie nicht zu Arbeitgebern mit den IDs
10001
und10002
- Gültig ab Extraktionsdatum
- Seit der vorherigen Ausführung aktualisiert (oder erstellt)
Anforderungsbeispiel
Beachten Sie den Parameter limit
und die Attributbedingung timeUpdated
mit dem Zeitstempel des vorherigen Exportlaufs.
POST /api/boss/data/objects/ora/hcmHrCore/employment/v1/workerAssignmentExtracts/$query { "collection": { "limit": 10, "filter": "primaryFlag = true and timeUpdated > '2025-05-01T00:00:00Z' and assignmentType = 'E' and !(legalEmployer.id in (10001, 10002))" }, "fields": [ "id", "assignmentType", "assignmentStatusType", "effectiveStartDate", "effectiveEndDate", "businessTitle", "workAtHomeFlag", "assignmentNumber", "timeUpdated" ], "accessors": { "personDetail": { "fields": [ "personNumber" ] }, "globalName": { "fields": [ "firstName", "lastName" ] }, "department": { "fields": [ "id", "name", "title" ] }, "legalEmployer": { "fields": [ "id", "name" ] }, "workRelationship": { "fields": [ "id" ] } } }
Antwortbeispiel
200 OK { "items": [ { "id": "300000795682243", "assignmentType": "E", "assignmentStatusType": "ACTIVE", "effectiveStartDate": "2018-06-14", "effectiveEndDate": "4712-12-31", "businessTitle": "Aeronautical Engineer Level-9352", "workAtHomeFlag": false, "assignmentNumber": "EHDLWorker_190903_1637", "timeUpdated": "2025-05-06T11:42:17.821Z", "$id": "300000795682243", "$context": { "etag": "89" }, "personDetail": { "personNumber": "HDLWorker_190903_1637", "$id": "100000329366771", "$context": { "etag": "" } }, "globalName": { "firstName": "Raymond-Olivier", "lastName": "Beer-Tröst", "$id": "300000795668871", "$context": { "etag": "" } }, "department": { "id": "300000044556980", "name": "South - Venaria DC-GROUP/SFIELESOIT74155", "title": null, "$id": "300000044556980", "$context": { "etag": "13", "links": { "$self": { "href": "https://example.com/api/boss/data/objects/ora/hcmHrCore/workStructures/v1/departments/300000044556980?$effectiveDate=2025-05-13" } } } }, "legalEmployer": { "id": "300000046740247", "name": "PSR_US_LE_1", "$id": "300000046740247", "$context": { "etag": "15", "links": { "$self": { "href": "https://example.com/api/boss/data/objects/ora/hcmHrCore/workStructures/v1/legalEmployers/300000046740247?$effectiveDate=2025-05-13" } } } }, "workRelationship": { "id": "100000329414679", "$id": "100000329414679", "$context": { "etag": "1" } } }, { "id": "300000795670049", "assignmentType": "E", "assignmentStatusType": "ACTIVE", "effectiveStartDate": "2018-05-28", "effectiveEndDate": "4712-12-31", "businessTitle": "Civil Engineer-6864", "workAtHomeFlag": false, "assignmentNumber": "EHDLWorker_190903_11128", "timeUpdated": "2025-05-06T11:42:25.787Z", "$id": "300000795670049", "$context": { "etag": "89" }, "personDetail": { "personNumber": "HDLWorker_190903_11128", "$id": "100000329383875", "$context": { "etag": "" } }, "globalName": { "firstName": "Charlotte-Pénélope", "lastName": "Beer-Tröst", "$id": "300000795669677", "$context": { "etag": "" } }, "department": { "id": "300000044582197", "name": "Human Resources-GROUP/AT081000101", "title": null, "$id": "300000044582197", "$context": { "etag": "13", "links": { "$self": { "href": "https://example.com/api/boss/data/objects/ora/hcmHrCore/workStructures/v1/departments/300000044582197?$effectiveDate=2025-05-13" } } } }, "legalEmployer": { "id": "300000046740247", "name": "PSR_US_LE_1", "$id": "300000046740247", "$context": { "etag": "15", "links": { "$self": { "href": "https://example.com/api/boss/data/objects/ora/hcmHrCore/workStructures/v1/legalEmployers/300000046740247?$effectiveDate=2025-05-13" } } } }, "workRelationship": { "id": "100000329453488", "$id": "100000329453488", "$context": { "etag": "1" } } }, ... ], "hasMore": true }
Aufgabe 3: Exportjobanforderungen weiterleiten
Nachdem die Abfrage definiert wurde, kann eine Exportjobanforderung mit der Job Scheduler-API weitergeleitet werden.
URL | /api/saas-batch/jobscheduler/v1/jobRequests |
---|---|
HTTP-Methode | POST |
Anforderungsvorlage |
Für die Ansicht { "jobDefinitionName": "AsyncDataExtraction", "serviceName": "boss", "requestParameters": { "boss.module": "oraHcmHrCoreEmployment", "boss.resource.name": "workerAssignmentExtracts", "boss.resource.version": "v1", "boss.outputFormat": "json", "boss.request.system.param.effectiveDate": "{{effectiveDate}}", "boss.advancedQuery": "{{query}}" } } Für andere Ansichten: { "jobDefinitionName": "AsyncDataExtraction", "serviceName": "boss", "requestParameters": { "boss.module": "oraHcmHrCoreEmployment", "boss.resource.name": "workers", "boss.resource.version": "v1", "boss.businessView": "{{viewName}}", "boss.outputFormat": "json", "boss.request.system.param.effectiveDate": "{{effectiveDate}}", "boss.advancedQuery": "{{query}}" } }
|
Antwortvorlage |
Bei erfolgreicher Weiterleitung wird der 202 Accepted Location: {{jobRequestUrl}} |
Paging beim Extrahieren von Daten:
Sie haben zwar Paginierungssteuerelemente verwendet, d.h. die Parameterlimit
und offset
. Beim Erstellen und Testen der Abfrage möchten Sie jedoch nicht, dass die Extraktionsergebnisse von ihnen eingeschränkt werden. Entfernen Sie die Verwendung der Parameter limit
und offset
beim Weiterleiten einer Abfrage.
Abfrage übergeben:
Die beim Weiterleiten der Extraktionsjobanforderung übergebene Abfrage muss eine JSON-Standardzeichenfolge aufweisen. Führen Sie die mit dem API-Endpunkt$query
vorbereitete und getestete Abfrage aus, und führen Sie folgende Schritte aus:
- Alle doppelten Anführungszeichen (" → \") entweichen
- Alle Zeilenvorschubzeichen entfernen (\n)
- Potenzielle Reduzierung anderer Leerzeichen (z.B. Einrückungen)
Insgesamt möchten Sie z.B. von:
{ "collection": { "limit": 100, "filter": "totalAmount > 10000" }, "fields": [ "id", "totalAmount" ] }
Zweck:
{\"collection\": {\"filter\": \"totalAmount > 10000\"},\"fields\": [ \"id\", \"totalAmount\" ]}
Beispiel
Anforderungsbeispiel
POST /api/saas-batch/jobscheduler/v1/jobRequests { "jobDefinitionName": "AsyncDataExtraction", "serviceName": "boss", "requestParameters": { "boss.module": "oraHcmHrCoreEmployment", "boss.resource.name": "workerAssignmentExtracts", "boss.resource.version": "v1", "boss.outputFormat": "json", "boss.advancedQuery": "{\"collection\": {\"filter\": \"primaryFlag = true and timeUpdated > '2025-05-01T00:00:00Z' and assignmentType = 'E' and !(legalEmployer.id in (10001, 10002))\"},\"fields\": [ \"id\", \"assignmentType\", \"assignmentStatusType\", \"effectiveStartDate\", \"effectiveEndDate\", \"businessTitle\", \"workAtHomeFlag\", \"assignmentNumber\", \"timeUpdated\" ],\"accessors\": {\"personDetail\": {\"fields\": [ \"personNumber\" ]},\"globalName\": {\"fields\": [ \"firstName\", \"lastName\" ]},\"department\": {\"fields\": [ \"id\", \"name\", \"title\" ]},\"legalEmployer\": {\"fields\": [ \"id\", \"name\" ]},\"workRelationship\": {\"fields\": [ \"id\" ]}}}" } }
Antwortbeispiel
202 Accepted Location: https://example.com/api/saas-batch/jobscheduler/v1/jobRequests/42075
Aufgabe 4: Jobabschluss prüfen
Bei der Prüfung auf Abschluss wird die Job Scheduler-API verwendet, um die Jobanforderungsdetails regelmäßig abzufragen, bis sie erfolgreich abgeschlossen wurden oder nicht erfolgreich waren.
URL | /api/saas-batch/jobscheduler/v1/jobRequests/{{jobRequestId}} |
---|---|
HTTP-Methode | GET |
Erfolgreicher Abschluss:
Eine Jobanforderung wird als erfolgreich abgeschlossen betrachtet, wenn die folgenden Bedingungen erfüllt sind:Attribut | Erwarteter Wert |
---|---|
jobDetails.jobProgress.completed |
true |
jobDetails.jobProgress.status |
SUCCEEDED |
Nicht erfolgreich abgeschlossen:
Eine Jobanforderung gilt als nicht erfolgreich, wenn die folgende Bedingung erfüllt ist. In diesem Fall enthält das AttributjobDetails.jobProgress.message
die Fehlermeldung.
Attribut | Erwarteter Wert |
---|---|
jobDetails.jobProgress.status |
FAILED |
Beispiel
Anforderungsbeispiel
GET /api/saas-batch/jobscheduler/v1/jobRequests/42075
Antwortbeispiele
Unter Antworten werden verschiedene Phasen eines weitergeleiteten Jobs angezeigt. Siehe insbesondere die Attribute jobProgress.status
und jobProgress.completed
.
Akzeptiert/in Queue gestellt
200 OK { "jobDetails": { "jobRequestId": 42075, "jobRequest": { "jobDefinitionName": "AsyncDataExtraction", "serviceName": "boss", "systemDerivedVersion": "90", "jobSubmitter": "TM-MFITZIMMONS", "requestParameters": { "boss.module": "oraHcmHrCoreEmployment", "boss.resource.name": "workerAssignmentExtracts", "boss.resource.version": "v1", "boss.outputFormat": "json", "boss.advancedQuery": "{\"collection\": {\"filter\": \"primaryFlag = true and timeUpdated > '2025-05-01T00:00:00Z' and assignmentType = 'E' and !(legalEmployer.id in (10001, 10002))\"},\"fields\": [ \"id\", \"assignmentType\", \"assignmentStatusType\", \"effectiveStartDate\", \"effectiveEndDate\", \"businessTitle\", \"workAtHomeFlag\", \"assignmentNumber\", \"timeUpdated\" ],\"accessors\": {\"personDetail\": {\"fields\": [ \"personNumber\" ]},\"globalName\": {\"fields\": [ \"firstName\", \"lastName\" ]},\"department\": {\"fields\": [ \"id\", \"name\", \"title\" ]},\"legalEmployer\": {\"fields\": [ \"id\", \"name\" ]},\"workRelationship\": {\"fields\": [ \"id\" ]}}}" }, "jobRetryNumber": 0, "timeoutThreshold": 14400 }, "jobStatus": "ENQUEUED", "jobProgress": { "status": "ACCEPTED", "message": "Job is submitted", "startTime": "2025-05-25T13:39:01Z", "endTime": "2025-05-25T13:39:15Z", "completedPercentage": "0", "completed": false } }, "$context": { "links": { "$self": { "href": "https://example.com/api/saas-batch/jobscheduler/v1/jobRequests/42075" } } } }
Wird ausgeführt
200 OK { "jobDetails": { "jobRequestId": 42075, "jobRequest": { "jobDefinitionName": "AsyncDataExtraction", "serviceName": "boss", "systemDerivedVersion": "90", "jobSubmitter": "TM-MFITZIMMONS", "requestParameters": { "boss.module": "oraHcmHrCoreEmployment", "boss.resource.name": "workerAssignmentExtracts", "boss.resource.version": "v1", "boss.outputFormat": "json", "boss.advancedQuery": "{\"collection\": {\"filter\": \"primaryFlag = true and timeUpdated > '2025-05-01T00:00:00Z' and assignmentType = 'E' and !(legalEmployer.id in (10001, 10002))\"},\"fields\": [ \"id\", \"assignmentType\", \"assignmentStatusType\", \"effectiveStartDate\", \"effectiveEndDate\", \"businessTitle\", \"workAtHomeFlag\", \"assignmentNumber\", \"timeUpdated\" ],\"accessors\": {\"personDetail\": {\"fields\": [ \"personNumber\" ]},\"globalName\": {\"fields\": [ \"firstName\", \"lastName\" ]},\"department\": {\"fields\": [ \"id\", \"name\", \"title\" ]},\"legalEmployer\": {\"fields\": [ \"id\", \"name\" ]},\"workRelationship\": {\"fields\": [ \"id\" ]}}}" }, "jobRetryNumber": 0, "timeoutThreshold": 14400 }, "jobStatus": "RUNNING", "jobProgress": { "jobRequestId": 42075, "status": "RUNNING", "message": "Job status is changed to RUNNING", "startTime": "2025-05-25T13:39:27Z", "endTime": "2025-05-25T13:40:25Z", "completedPercentage": "50", "completed": false } }, "$context": { "links": { "$self": { "href": "https://example.com/api/saas-batch/jobscheduler/v1/jobRequests/42075" } } } }
200 OK { "jobDetails": { "jobRequestId": 42075, "jobRequest": { "jobDefinitionName": "AsyncDataExtraction", "serviceName": "boss", "systemDerivedVersion": "90", "jobSubmitter": "TM-MFITZIMMONS", "requestParameters": { "boss.module": "oraHcmHrCoreEmployment", "boss.resource.name": "workerAssignmentExtracts", "boss.resource.version": "v1", "boss.outputFormat": "json", "boss.advancedQuery": "{\"collection\": {\"filter\": \"primaryFlag = true and timeUpdated > '2025-05-01T00:00:00Z' and assignmentType = 'E' and !(legalEmployer.id in (10001, 10002))\"},\"fields\": [ \"id\", \"assignmentType\", \"assignmentStatusType\", \"effectiveStartDate\", \"effectiveEndDate\", \"businessTitle\", \"workAtHomeFlag\", \"assignmentNumber\", \"timeUpdated\" ],\"accessors\": {\"personDetail\": {\"fields\": [ \"personNumber\" ]},\"globalName\": {\"fields\": [ \"firstName\", \"lastName\" ]},\"department\": {\"fields\": [ \"id\", \"name\", \"title\" ]},\"legalEmployer\": {\"fields\": [ \"id\", \"name\" ]},\"workRelationship\": {\"fields\": [ \"id\" ]}}}" }, "jobRetryNumber": 0, "timeoutThreshold": 14400 }, "jobStatus": "RUNNING", "jobProgress": { "jobRequestId": 42075, "status": "RUNNING", "message": "Publishing BOSS job progress: JobProgress(jobRequestId=42075, resourcePath=oraHcmHrCoreEmployment/v1/workers, dataDocName=null, deploymentId=null, jobStatus=RUNNING, startTime=2025-05-25T13:40:18Z, endTime=2025-05-25T13:40:38Z, completedPercentage=30, completed=false, error=null)", "startTime": "2025-05-25T13:40:40Z", "endTime": "2025-05-25T13:40:40Z", "completedPercentage": "30", "completed": false } }, "$context": { "links": { "$self": { "href": "https://example.com/api/saas-batch/jobscheduler/v1/jobRequests/42075" } } } }
Erfolgreich beendet
200 OK { "jobDetails": { "jobRequestId": 42075, "jobRequest": { "jobDefinitionName": "AsyncDataExtraction", "serviceName": "boss", "systemDerivedVersion": "90", "jobSubmitter": "TM-MFITZIMMONS", "requestParameters": { "boss.module": "oraHcmHrCoreEmployment", "boss.resource.name": "workerAssignmentExtracts", "boss.resource.version": "v1", "boss.outputFormat": "json", "boss.advancedQuery": "{\"collection\": {\"filter\": \"primaryFlag = true and timeUpdated > '2025-05-01T00:00:00Z' and assignmentType = 'E' and !(legalEmployer.id in (10001, 10002))\"},\"fields\": [ \"id\", \"assignmentType\", \"assignmentStatusType\", \"effectiveStartDate\", \"effectiveEndDate\", \"businessTitle\", \"workAtHomeFlag\", \"assignmentNumber\", \"timeUpdated\" ],\"accessors\": {\"personDetail\": {\"fields\": [ \"personNumber\" ]},\"globalName\": {\"fields\": [ \"firstName\", \"lastName\" ]},\"department\": {\"fields\": [ \"id\", \"name\", \"title\" ]},\"legalEmployer\": {\"fields\": [ \"id\", \"name\" ]},\"workRelationship\": {\"fields\": [ \"id\" ]}}}" }, "jobRetryNumber": 0, "timeoutThreshold": 14400 }, "jobStatus": "SUCCEEDED", "jobProgress": { "jobRequestId": 42075, "status": "SUCCEEDED", "message": "Job status is changed to SUCCEEDED", "startTime": "2025-05-25T13:39:27Z", "endTime": "2025-05-25T13:41:26Z", "completedPercentage": "100", "completed": true } }, "$context": { "links": { "$self": { "href": "https://example.com/api/saas-batch/jobscheduler/v1/jobRequests/42075" } } } }
Aufgabe 5: Exportausgabedetails abrufen
Nachdem der Job erfolgreich abgeschlossen wurde, können die Informationen zur Ausgabedatei abgerufen werden. Dabei wird die Job File Manager-API für die jeweilige Instanz der Exportjobanforderung verwendet.
Die Ausgabe wird in komprimierten Blöcken gespeichert.
URL | /api/saas-batch/jobfilemanager/v1/jobRequests/{{jobRequestId}}/outputFiles |
---|---|
HTTP-Methode | GET |
Dateigröße:
Die Dateigröße wird im Antwortattributitems.fileSize
zurückgegeben und in Byte ausgedrückt.
Anlagenlink:
Die URL zum tatsächlichen Dateiinhalt wird im Antwortattributitems.$context.links.enclosure
zurückgegeben.
Beispiel
Anforderungsbeispiel
GET /api/saas-batch/jobfilemanager/v1/jobRequests/42075/outputFiles
Antwortbeispiel
Im folgenden Beispiel wird die vollständige Ausgabe in zwei komprimierten Dateien gespeichert.
200 OK { "items": [ { "fileName": "result_1_json.zip", "fileSize": 9390419, "timeCreated": "2025-04-22T22:04:22.667Z", "$context": { "links": { "enclosure": { "href": "https://example.com/api/saas-batch/jobfilemanager/v1/jobRequests/40071/outputFiles/result_1_json.zip/content" }, "$self": { "href": "https://example.com/api/saas-batch/jobfilemanager/v1/jobRequests/40071/outputFiles/result_1_json.zip" } } } }, { "fileName": "result_2_json.zip", "fileSize": 4462724, "timeCreated": "2025-04-22T22:04:36.565Z", "$context": { "links": { "enclosure": { "href": "https://example.com/api/saas-batch/jobfilemanager/v1/jobRequests/40071/outputFiles/result_2_json.zip/content" }, "$self": { "href": "https://example.com/api/saas-batch/jobfilemanager/v1/jobRequests/40071/outputFiles/result_2_json.zip" } } } } ], "totalItems": 2, "$context": { "links": { "$self": { "href": "https://example.com/api/saas-batch/jobfilemanager/v1/jobRequests/40071/outputFiles" } } } }
Aufgabe 6: Exportausgabe herunterladen
Die Exportausgabedateien können schließlich mit der Job File Manager-API für die jeweilige Instanz und Ausgabedatei der Exportjobanforderung heruntergeladen werden.
URL | /api/saas-batch/jobfilemanager/v1/jobRequests/{{jobRequestId}}/outputFiles/{{fileName}}/content |
---|---|
HTTP-Methode | GET |
Tipp:
Bei Bedarf können Sie große Dateien effizienter herunterladen, indem Sie Multithread-Downloads mit dem Range-HTTP-Header wie unten implementieren.Range: {{startByte}}-{{endByte}}/{{fileSize}}
Beispiel
Anforderungsbeispiel
GET /api/saas-batch/jobfilemanager/v1/jobRequests/42075/outputFiles/result_42075.json/content
Antwortbeispiele
Tatsächliche Antwort ist binär komprimierter Dateiinhalt. Nach der Dekomprimierung ist es vollständig oder teilweise (im Falle der Verwendung des Range
-Headers), unformatierte JSON-Payload, mit vollständigen oder teilweisen (im Falle eines File-Chunk) Ergebnissen der Extraktionsabfrage.
Beispiel für vollständige nicht komprimierte Ergebnisse
{"items": [ {"id":"300008335145001","assignmentType":"E","assignmentStatusType":"ACTIVE","effectiveStartDate":"2025-05-02","effectiveEndDate":"4712-12-31","businessTitle":"E7356262523","workAtHomeFlag":false,"assignmentNumber":"E7356262523","timeUpdated":"2025-05-01T07:53:15.722Z","$id":"300008335145001","$context":{"etag":"1"},"personDetail":{"personNumber":"7356262523","$id":"300008335144985","$context":{"etag":""}},"globalName":{"firstName":null,"lastName":"oracle","$id":"300008335144986","$context":{"etag":""}},"department":null,"legalEmployer":{"id":"300001939234024","name":"AORT Oracle United States","$id":"300001939234024","$context":{"etag":"6","links":{"$self":{"href":"/ora/hcmHrCore/workStructures/v1/$en-US/legalEmployers/300001939234024?$effectiveDate=2025-05-13"}}}},"workRelationship":{"id":"300008335144995","$id":"300008335144995","$context":{"etag":"1"}}}, {"id":"300000310085281","assignmentType":"E","assignmentStatusType":"ACTIVE","effectiveStartDate":"2018-03-04","effectiveEndDate":"4712-12-31","businessTitle":"Medical Technologist Corporate Level-35321","workAtHomeFlag":false,"assignmentNumber":"EHDLWorker_190409_467490","timeUpdated":"2025-05-07T15:29:46.59Z","$id":"300000310085281","$context":{"etag":"90"},"personDetail":{"personNumber":"HDLWorker_190409_467490","$id":"100000127293313","$context":{"etag":""}},"globalName":{"firstName":"Martin-David","lastName":"Oestrovsky-Krein","$id":"300000310075057","$context":{"etag":""}},"department":{"id":"300000041568062","name":"GFIN Global Controlling-GROUP/GFINGC74155","title":null,"$id":"300000041568062","$context":{"etag":"13","links":{"$self":{"href":"/ora/hcmHrCore/workStructures/v1/$en-US/departments/300000041568062?$effectiveDate=2025-05-13"}}}},"legalEmployer":{"id":"300000046740247","name":"PSR_US_LE_1","$id":"300000046740247","$context":{"etag":"15","links":{"$self":{"href":"/ora/hcmHrCore/workStructures/v1/$en-US/legalEmployers/300000046740247?$effectiveDate=2025-05-13"}}}},"workRelationship":{"id":"100000127362395","$id":"100000127362395","$context":{"etag":"1"}}} ]}
Weitere Lernressourcen
Sehen Sie sich weitere Übungen zu docs.oracle.com/learn an, oder greifen Sie auf weitere kostenlose Lerninhalte im Oracle Learning YouTube-Kanal zu. Besuchen Sie außerdem education.oracle.com/learning-explorer, um ein Oracle Learning Explorer zu werden.
Die Produktdokumentation finden Sie im Oracle Help Center.
Daten mit Spectra Services aus HCM exportieren
G38788-01
Juli 2025