소개

Cloud HCM은 차세대 BOSS/Spectra 플랫폼을 사용하여 HCM에서 데이터를 추출하는 기능을 제공합니다.

목표

이 자습서를 완료하면 다음 방법을 이해할 수 있습니다.

  • 근로자 추출 뷰 및 객체 계층 질의
  • 선택된 근로자 계층 데이터 검색을 위한 추출 작업 요청을 비동기적으로 제출 및 추적합니다.
  • 추출 출력 파일 다운로드

필요 조건

시작하기 전에:

  1. RODS 데이터 복제를 포함한 Spectra 플랫폼이 Pod에 프로비전되었는지 확인하려면 Oracle CoE에 문의하십시오.
  2. 다음을 포함하여 필수 보안 구성 수행:
    • 데이터 보안 설정
    • OAuth 클라이언트 앱 설정

사용 사례

이 기능을 통해 다음과 같은 사용 사례를 해결할 수 있습니다.

전체 데이터 추출

근로자 데이터의 전체 추출은 일회성 또는 주기적 활동일 수 있습니다.

전체 객체 계층 또는 하위 집합만 검색할 수 있습니다.

전체 데이터 추출은 필터링 조건과 일치하는 모든 레코드를 검색하며 출력 파일이 매우 클 수 있습니다.

현재 추출 일자가 기본값인 요청 유효 일자를 기준으로 유효 일자 객체가 검색됩니다.

증분 데이터 추출

근로자 데이터의 증분 추출은 일반적으로 정기적인 스케줄링된 활동입니다.

전체 객체 계층 또는 하위 집합만 검색할 수 있습니다.

이 사용 사례에서는 첫 번째 추출 실행이 기준선인 이전 추출 실행 이후 변경된 객체만 검색하려고 합니다. 이를 위해서는 변경 감지가 적용되는 모든 레벨에서 timeUpdated 속성 필터를 적용해야 합니다.

증분 데이터 추출 질의는 추가 필터링 기준을 적용할 수 있습니다. 출력 파일은 델타만 포함하므로 일반적으로 전체 추출과 비교하여 크기가 작습니다.

속성의 현재 값만 검색됩니다.

현재 추출 일자가 기본값인 요청 유효 일자를 기준으로 유효 일자 객체가 검색됩니다.

주의:

물리적으로 삭제된 레코드는 timeUpdated로 필터링하여 반환되지 않습니다.

작업 1: 추출 뷰 선택

필요한 객체 및 속성에 따라 사용할 추출 뷰를 선택합니다. 사용 가능한 뷰는 추출할 수 있는 객체 및 속성과 함께 아래에 나열됩니다.

근로자 지정 추출

workerAssignmentExtracts를 사용하여 근로자의 고용 지정 데이터를 추출합니다.

경로 보기 workerAssignmentExtracts


객체 속성 관계 유형
workerAssignmentExtract
  • ID
  • effectiveStartDate
  • effectiveEndDate
  • effectiveSequence
  • effectiveLatestChange
  • assignmentType
  • assignmentNumber
  • primaryFlag
  • businessTitle
  • workAtHomeFlag
  • officeBuilding
  • officeFloor
  • officeMailStop
  • officeNumber
  • primaryAssignmentFlag
  • primaryWorkRelationshipFlag
  • timeUpdated
  • updatedBy
  • timeCreated
  • createdBy
  • systemPersonType
  • labourUnionMemberFlag
  • managerFlag
  • probationEndDate
  • probationPeriod
  • probationPeriodUnit
  • normalHours
  • 주파수
  • endTime
  • startTime
  • noticePeriod
  • noticePeriodUOM
  • workerCategory
  • assignmentCategory
  • hourlyPaidOrSalaried
  • projectedEndDate
  • projectedStartDate
  • assignmentStatusType
  • expenseCheckSendToAddress
  • retirementAge
  • retirementDate
  • synchronizeFromPositionFlag
  • fullTimeOrPartTime
  • permanentAssignmentFlag
  • seniorityBasis
  • overtimePeriod
  • adjustedFullTimeEquivalent
  • annualWorkingDuration
  • annualWorkingDurationUnit
  • annualWorkingRatio
  • standardFrequency
  • standardWorkingHours
  • standardAnnualWorkingDuration
  • 시퀀스
n/a
workerAssignmentExtract.department
  • ID
  • name
  • title
  • effectiveStartDate
  • effectiveEndDate
일대일입니다
workerAssignmentExtract.legalEmployer
  • ID
  • name
  • effectiveStartDate
  • effectiveEndDate
일대일입니다
workerAssignmentExtract.legislation
  • territoryCode
  • territoryShortName
일대일입니다
workerAssignmentExtract.position
  • ID
  • effectiveStartDate
  • effectiveEndDate
  • name
  • 코드
일대일입니다
workerAssignmentExtract.grade
  • ID
  • effectiveStartDate
  • effectiveEndDate
  • name
  • 코드
일대일입니다
workerAssignmentExtract.location
  • ID
  • effectiveStartDate
  • effectiveEndDate
  • name
  • 코드
일대일입니다
workerAssignmentExtract.location.mainAddress
  • ID
  • effectiveStartDate
  • effectiveEndDate
  • 카운티
  • state
  • townOrCity
  • 우편 번호
  • countryCode
  • longPostalCode
  • addressLine1
  • addressLine2
  • addressLine3
  • addressLine4
일대일입니다
workerAssignmentExtract.location.mainAddress.country
  • territoryCode
  • territoryShortName
일대일입니다
workerAssignmentExtract.job
  • ID
  • effectiveStartDate
  • effectiveEndDate
  • name
  • 코드
  • jobFunctionCode
  • 관리자 수준
일대일입니다
workerAssignmentExtract.job.jobFamily
  • ID
  • effectiveStartDate
  • effectiveEndDate
  • name
  • 코드
일대일입니다
workerAssignmentExtract.collectiveAgreement
  • ID
  • effectiveStartDate
  • effectiveEndDate
  • name
일대일입니다
workerAssignmentExtract.personType
  • ID
  • userPersonType
일대일입니다
workerAssignmentExtract.workerUnion
  • ID
  • effectiveStartDate
  • effectiveEndDate
  • name
일대일입니다
workerAssignmentExtract.assignmentUserStatus
  • ID
  • userStatus
일대일입니다
workerAssignmentExtract.businessUnit
  • ID
  • effectiveStartDate
  • effectiveEndDate
  • name
일대일입니다
workerAssignmentExtract.account
  • codeCombinationId
  • concatenatedSegments
  • chartOfAccountsId
일대일입니다
workerAssignmentExtract.ledger
  • ledgerId
  • name
일대일입니다
workerAssignmentExtract.workRelationship
  • ID
  • startDate
  • workerType
  • timeCreated
  • timeUpdated
일대일입니다
workerAssignmentExtract.localName
  • ID
  • effectiveStartDate
  • effectiveEndDate
  • lastName
  • firstName
  • displayName
  • listName
  • timeCreated
  • timeUpdated
일대일입니다
workerAssignmentExtract.globalName
  • ID
  • effectiveStartDate
  • effectiveEndDate
  • lastName
  • firstName
  • displayName
  • listName
  • timeCreated
  • timeUpdated
일대일입니다
workerAssignmentExtract.personDetail
  • ID
  • personNumber
  • effectiveStartDate
  • effectiveEndDate
  • timeCreated
  • timeUpdated
일대일입니다

근로자 법률 정보 추출

workerLegislativeInfoExtract를 사용하여 근로자의 법률 정보 데이터를 추출합니다.

경로 보기 작업자/$views/workerLegislativeInfoExtract


객체 속성 관계 유형
근로자
  • ID
n/a
worker.personDetail
  • ID
  • effectiveStartDate
  • effectiveEndDate
  • personNumber
일대일입니다
worker.legislativeInformation
  • ID
  • effectiveStartDate
  • effectiveEndDate
  • 성별
  • maritalStatus
  • maritalStatusChangeDate
  • highestEducationLevel
  • timeUpdated
  • updatedBy
  • timeCreated
  • createdBy
일대일입니다
worker.legislativeInformation.legislation
  • territoryCode
  • territoryShortName
일대일입니다

근로자 이름 추출

workerNamesExtract를 사용하여 작업자 이름 데이터를 추출합니다.

경로 보기 작업자/$views/workerNamesExtract


객체 속성 관계 유형
근로자
  • ID
n/a
worker.personDetail
  • ID
  • effectiveStartDate
  • effectiveEndDate
  • personNumber
일대일입니다
worker.names
  • ID
  • effectiveStartDate
  • effectiveEndDate
  • lastName
  • firstName
  • middleNames
  • title
  • 접두어
  • 접미어
  • knownAs
  • previousLastName
  • 훈장
  • militaryRank
  • displayName
  • fullName
  • listName
  • orderName
  • nameLanguage
  • type
  • timeUpdated
  • updatedBy
  • timeCreated
  • createdBy
일대다입니다
worker.names.legislation
  • territoryCode
  • territoryShortName
일대일입니다
worker.names.language
  • languageCode
일대일입니다

근로자 전화 추출

workerPhonesExtract를 사용하여 작업자의 전화 데이터를 추출합니다.

경로 보기 작업자/$views/workerPhonesExtract


객체 속성 관계 유형
근로자
  • ID
n/a
worker.personDetail
  • ID
  • effectiveStartDate
  • effectiveEndDate
  • personNumber
일대일입니다
worker.phones
  • ID
  • type
  • primaryFlag
  • phoneNumber
  • areaCode
  • countryCodeNumber
  • extension
  • 유효성
  • timeUpdated
  • updatedBy
  • timeCreated
  • createdBy
일대다입니다
worker.phones.legislation
  • territoryCode
  • territoryShortName
일대일입니다

근로자 전자메일 추출

workerEmailsExtract를 사용하여 작업자의 전자메일 데이터를 추출합니다.

경로 보기 작업자/$views/workerEmailsExtract


객체 속성 관계 유형
근로자
  • ID
n/a
worker.personDetail
  • ID
  • effectiveStartDate
  • effectiveEndDate
  • personNumber
일대일입니다
worker.emails
  • ID
  • type
  • primaryFlag
  • emailAddress
  • timeUpdated
  • updatedBy
  • timeCreated
  • createdBy
일대다입니다

다국어:

번역 가능한 속성은 현재 영어로만 제공됩니다.

작업 2: 추출 Query 준비 및 테스트

각 추출 뷰에는 추출 쿼리를 작성하고 테스트할 수 있는 쿼리 API가 있습니다.

URL /api/boss/data/objects/ora/hcmHrCore/employment/v1/{{viewPath}}/$query
HTTP 메소드 POST
템플리트 요청
{
    "collection": {
        "limit": {{limit}},
        "offset": {{offset}},
        "sortBy": [ {{sortAttributes}} ],
        "filter": "{{topLevelFilter}}"
    },
    "fields": [ {{topLevelAttributes}} ],
    "accessors": {
        "{{childObject}}": {
            "collection": {
                "filter": "{{childLevelFilter}}"
            },
            "fields": [ {{childLevelAttributes}} ],
            "accessors": {
                {{nestedChildAccessors}}               
            }
        },
        ...
    }
}
응답 템플리트
200 OK

{
	"items": [
		{{items}}
	],
	"hasMore": {{hasMore}}
}

객체 및 속성

추출할 데이터, 즉 포함할 객체 및 속성을 정의합니다. 하위 객체를 포함하려면 액세서를 추가해야 하는 반면, 특정 필드를 포함하려면 fields 배열에 액세서를 나열해야 합니다. 전체 예제를 참조하십시오.

필터링

데이터 필터링 방법을 정의합니다. 다음 표현식을 사용하여 쿼리에 대한 필터를 작성할 수 있습니다.

용도 표현식
동등 테스트 field = value ename = 'KING'
부등식 테스트 field != value activeFlag != true
보다 큼 테스트
보다 작음 테스트
field > value
field < value
sal > 1999.99
hireDate < '2000-01-01'
timeUpdated> '1900-01-01T13:51:54Z'
다음보다 크거나 같음, 테스트
다음보다 작거나 같음
field >= value
field <= value< code>
sal >= 1999.99
hireDate <= '2000-01-01'
timeUpdated >= '1900-01-01T13:51:54Z'
패턴 일치 field LIKE 'pattern' job LIKE 'SALES%'
멤버십 테스트 field IN (value1, ..., valueN) deptno IN (10, 20, 40)
대소문자 비민감도 비교 field ~= value
field ~!= value
field ~> value
field ~< value
field ~>= value
field ~<= value
field ~LIKE 'pattern'
field ~IN (value1, ..., valueN)
ename ~= 'king'
존재 테스트(일대다 관계의 경우) child[expression] assignments[startDate = null]
논리 접속사 expression AND expression  
논리적 분리 expression OR expression  
논리적 부정 !(expression)  

일대일 관계에서 하위 객체로 필터링:

일대일 관계의 경우 다른 상위 객체의 속성(예: legalEmployer.id in (1001, 1002))과 마찬가지로 필터 절에서 하위 객체 및 해당 속성을 참조할 수 있습니다.

일대다 관계에서 하위 객체 필터링:

일대다 관계의 경우 위 테이블의 존재 테스트는 기준을 충족하는 하나 이상의 하위 항목이 있는 상위 항목을 필터링합니다. 그러나 하위 레코드가 검색될 경우 자동으로 필터링된다는 의미는 아닙니다. 기준과 일치하는 하위 레코드만 가져오도록 하려면 하위 레벨에서도 필터를 반복해야 합니다.

예를 들어, W1 유형의 전화기만 검색하려면 다음 필터를 적용해야 합니다.


{
    "collection": {
        "filter": "phones[type = 'W1']"
    },
    "accessors": {
        "phones": {
            "collection": {
                "filter": "type = 'W1'"
            },
...
                

유효 일자별 필터링:

유효 일자 객체의 경우 기본적으로 현재 일자를 기준으로 유효한 데이터를 가져옵니다. 특정 날짜를 기준으로 유효한 데이터를 검색하려면 $effectiveDate HTTP 질의 매개변수를 사용합니다.

예를 들어, 2023-01-01부터 유효한 데이터를 검색하려면 질의에 다음 URL을 사용합니다.

/api/boss/data/objects/ora/hcmHrCore/employment/v1/{{viewPath}}/$query?$effectiveDate=2023-01-01

정렬

데이터 정렬 방법을 정의합니다. 정렬은 정렬 방향(asc 또는 desc)을 포함한 정렬 속성 배열로 표현됩니다. 예:

"sortBy": [
    {
        "totalAmount": "desc"
    },
    {
        "paidAmount": "asc"
    }
]

페이징

데이터 페이지 매김 방법을 정의합니다. 클라이언트는 제한 및 오프셋 매개변수를 제공하여 페이징을 제어할 수 있습니다. 예:

"limit": 200,
"offset": 400

기본 제한은 25이고 최대 제한은 1000입니다.

기본 오프셋은 0이며 결과의 시작을 나타냅니다.

응답의 최상위 레벨 hasMore 속성은 인출할 결과가 더 있는지 여부를 나타냅니다.

페이지 매김은 데이터를 추출하는 다른 방법으로 사용해서는 안됩니다. 이 API를 쿼리할 때는 요청 간에 데이터가 변경되지 않는다는 보장이 없습니다. 데이터 추출을 위해 비동기 API를 사용합니다.

아래의 추출 질의 예는 법적 고용주 및 부서 세부정보와 함께 지정 정보를 검색하도록 설계되었습니다.

  • 기본 지정임
  • 사원 유형
  • ID가 1000110002인 법적 고용주에 속하지 않습니다.
  • 추출 일자를 기준으로 유효
  • 이전 실행 이후 업데이트(또는 생성)되었습니다.

요청 예

이전 추출 실행의 시간 기록과 함께 limit 매개변수 및 timeUpdated 속성 조건을 확인합니다.

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" ]
        }
    }
}
				

응답 예

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
}

태스크 3: 추출 작업 요청 제출

쿼리가 정의되면 작업 스케줄러 API를 사용하여 추출 작업 요청을 제출할 수 있습니다.

URL /api/saas-batch/jobscheduler/v1/jobRequests
HTTP 메소드 POST
템플리트 요청

workerAssignmentExtracts 뷰의 경우:

{
    "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}}"
    }
}

기타 뷰의 경우:

{
    "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}}"
    }
}

boss.request.system.param.effectiveDate는 현재 일자와 다른 일자 기준으로 유효한 데이터를 검색하려는 경우에만 제공해야 하는 선택적 매개변수입니다.

응답 템플리트

제출이 성공하면 202 응답 코드가 Location 헤더와 함께 특정 작업 요청 인스턴스를 가리키는 URL과 함께 반환됩니다.

202 Accepted
 
Location: {{jobRequestUrl}}

데이터 추출 시 페이징:

페이지 매김 제어(예: limitoffset 매개변수)를 사용했을 수 있지만 질의를 작성하고 테스트할 때 추출 결과의 제약을 받지 않도록 해야 합니다. 질의를 제출할 때 limitoffset 매개변수 사용을 제거합니다.

질의 전달:

추출 작업 요청을 제출할 때 전달된 질의는 표준 JSON 문자열 형식이어야 합니다. $query API 엔드포인트를 사용하여 준비 및 테스트한 질의를 수행하고 다음을 수행합니다.
  • 모든 큰따옴표 이스케이프(" → \")
  • 줄바꿈 문자 제거(\n)
  • 다른 공백(예: 들여쓰기)을 잠재적으로 줄입니다.

전반적으로, 예를 들어, 다음과 같습니다.

{
    "collection": {
        "limit": 100,
        "filter": "totalAmount > 10000"
    },
    "fields": [ "id", "totalAmount" ]
}

목적:

{\"collection\": {\"filter\": \"totalAmount > 10000\"},\"fields\": [ \"id\", \"totalAmount\" ]}

요청 예

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\" ]}}}"
    }
}

응답 예

202 Accepted
 
Location: https://example.com/api/saas-batch/jobscheduler/v1/jobRequests/42075

작업 4: 작업 완료 확인

완료 확인에는 작업 스케줄러 API를 사용하여 작업 요청 세부 정보가 성공적으로 완료되거나 실패할 때까지 주기적으로 폴링하는 작업이 포함됩니다.

URL /api/saas-batch/jobscheduler/v1/jobRequests/{{jobRequestId}}
HTTP 메소드 GET

완료 성공:

다음 조건이 충족되면 작업 요청이 성공적으로 완료된 것으로 간주됩니다.
속성 예상 값
jobDetails.jobProgress.completed true
jobDetails.jobProgress.status SUCCEEDED

완료 실패:

다음 조건이 충족되면 작업 요청이 실패한 것으로 간주됩니다. 이 경우 jobDetails.jobProgress.message 속성에 오류 메시지가 포함됩니다.
속성 예상 값
jobDetails.jobProgress.status FAILED

요청 예

GET /api/saas-batch/jobscheduler/v1/jobRequests/42075

응답 예

아래 응답은 제출된 작업의 여러 단계를 보여줍니다. 특히 jobProgress.statusjobProgress.completed 속성을 참조하십시오.

수락/대기열에 넣음
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"
            }
        }
    }
}
실행 중
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"
            }
        }
    }
}
완료됨
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"
            }
        }
    }
}

작업 5: 추출 출력 세부정보 인출

작업이 성공적으로 완료되면 출력 파일 정보를 인출할 수 있습니다. 여기에는 특정 추출 작업 요청 인스턴스에 대해 작업 파일 관리자 API를 사용하는 작업이 포함됩니다.

출력은 압축된 청크로 저장됩니다.

URL /api/saas-batch/jobfilemanager/v1/jobRequests/{{jobRequestId}}/outputFiles
HTTP 메소드 GET

파일 크기:

파일 크기는 items.fileSize 응답 속성에 반환되며 바이트 단위로 표시됩니다.

외장 장치 링크:

실제 파일 내용에 대한 URL은 items.$context.links.enclosure 응답 속성에 반환됩니다.

요청 예

GET /api/saas-batch/jobfilemanager/v1/jobRequests/42075/outputFiles

응답 예

아래 예제에서 전체 출력은 두 개의 압축된 파일에 저장됩니다.

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

태스크 6: 추출 출력 다운로드

마지막으로 추출 출력 파일은 특정 추출 작업 요청 인스턴스 및 출력 파일에 대한 작업 파일 관리자 API를 사용하여 다운로드할 수 있습니다.

URL /api/saas-batch/jobfilemanager/v1/jobRequests/{{jobRequestId}}/outputFiles/{{fileName}}/content
HTTP 메소드 GET

참고:

필요한 경우 아래와 같이 범위 HTTP 헤더를 사용하여 다중 스레드 다운로드를 구현하여 대용량 파일을 보다 효율적으로 다운로드할 수 있습니다.

Range: {{startByte}}-{{endByte}}/{{fileSize}}

요청 예

GET /api/saas-batch/jobfilemanager/v1/jobRequests/42075/outputFiles/result_42075.json/content

응답 예

실제 응답은 이진 압축 파일 내용입니다. 압축이 풀리면 전체 또는 부분(Range 헤더 사용 시), 형식이 지정되지 않은 JSON 페이로드가 추출 질의의 전체 또는 부분(파일 조각의 경우) 결과와 함께 제공됩니다.

전체 압축되지 않은 결과 예제
{"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"}}}
]}

추가 학습 자원

docs.oracle.com/learn에서 다른 랩을 탐색하거나 Oracle Learning YouTube 채널에서 더 많은 무료 학습 콘텐츠에 액세스하세요. 또한 education.oracle.com/learning-explorer를 방문하여 Oracle Learning Explorer가 되십시오.

제품 설명서는 Oracle Help Center를 참조하십시오.