RESTful 서비스를 사용하여 Oracle Sales Automation 데이터 액세스

Oracle Sales Automation은 표준 및 사용자정의 객체 데이터에 접근하고 외부 애플리케이션과 통합하는 데 사용할 수 있는 여러 RESTful API를 제공합니다. RESTful 직접 메소드 호출은 HTTP 프로토콜을 통해 제대로 구조화된 URL을 사용하여 수행됩니다.

각 API에는 표준 Oracle Sales Automation 객체가 포함되며 각 객체는 REST 자원 또는 자원 수집과 연계됩니다. 예를 들어, RESTful API에서 Opportunities 리소스 끝점은 잠재적 판매 정보를 추적하는 데 사용됩니다. 그러나 Oracle Sales Automation RESTful 웹 서비스를 사용하기 전에 접근 권한을 얻기 위한 보안 요구사항을 고려하고, 사용할 웹 서비스를 해당 지원 방법 및 예상 페이로드 구조와 함께 식별해야 합니다.

Oracle Sales Automation RESTful API의 리소스 정보

Oracle Sales Automation은 표준 및 사용자정의 객체에 대한 REST 리소스 모음을 제공합니다.

RESTful API에서 중요한 개념은 리소스입니다. 리소스는 유형(예: 기회), 연관된 데이터, 다른 리소스에 대한 관계 및 해당 리소스에 대해 작동하는 일련의 메소드를 가진 객체입니다. 이러한 리소스는 다음을 포함하는 계층적 방식으로 구성됩니다.

  • 루트 리소스: Opportunity 또는 Lead와 같은 논리적 객체에 해당합니다.

  • 하위 자원: 상위 자원(예: 기회에 대한 담당자)에 속하는 자원입니다.

  • 값 목록 리소스: 필드에 대한 값을 설정할 때 사용할 수 있는 유효한 값 목록입니다. 조회(정적 목록) 또는 동적(컨텍스트 기반)의 두 가지 유형이 있습니다.

Oracle Sales Automation RESTful API에는 두 가지 유형의 자원(단일 자원 또는 수집 자원)이 있습니다. 단일 자원은 사원이나 구매 발주와 같은 단일 개체를 나타낼 수 있으며, 수집 자원은 사원 목록이나 페이징할 수 있는 구매 발주 목록과 같이 보다 포괄적입니다.

사용자정의 객체에 대한 REST 지원 정보

Oracle Sales Automation에는 많은 비즈니스 요구사항 및 시나리오를 고려하는 표준 객체가 포함되어 있습니다. 그러나 업무에 고유한 요구 사항이 있는 경우 표준 객체 외에도 Application Composer 툴을 사용하여 최상위 사용자정의 객체와 하위 사용자정의 객체를 모두 생성할 수 있습니다.

Application Composer는 비즈니스 분석가와 관리자(개발자만이 아님)가 Oracle Sales Automation을 사용자정의하는 데 사용할 수 있는 브라우저 기반 도구입니다. 이 도구를 사용하면 과거에는 개발자에 의해서만 변경된 데이터 모델 유형을 변경할 수 있습니다. Application Composer 툴에서 즉시 변경할 수 있으며 애플리케이션에 다시 사인인하지 않고도 즉시 사용할 수 있게 됩니다. 여기에는 Oracle Sales Automation RESTful API에 추가할 수 있는 사용자정의 객체 생성이 포함됩니다.

성능 참고 사항

Oracle Fusion Sales Cloud REST API에서 최고의 성능을 얻으려면 다음 팁을 따르십시오.

필요한 데이터만 질의합니다. 예를 들어, 기회 REST 서비스를 쿼리하는 경우 페이로드가 상당히 커지며 응답 시간이 오래 걸립니다. 다음과 같은 경우 이 응답 시간을 단축할 수 있습니다.
  • 필요한 데이터만 query합니다.
  • 메타데이터가 아닌 데이터만 쿼리합니다.
예를 들어, 질의 입력
salesApi/resources/latest/opportunities
query를 입력하는 동안 큰 페이로드를 반환합니다.
salesApi/resources/latest/opportunities?fields=Name,OptyNum&onlyData=true
질의 조건을 좁혔기 때문에 더 작은 페이로드를 반환합니다.

"설명" 끝점을 사용하여 RESTful 리소스 검색

리소스 정보 및 보완 메타데이터를 포함하는 JSON 객체를 반환하는 HTTP GET 요청을 전송하여 여러 Oracle Sales Automation RESTful API에 대한 특정 세부정보를 확인할 수 있습니다.

API의 특정 버전에 대한 정보를 가져오려면 다음을 수행합니다.
  1. 세일즈 관리자로 Oracle Sales Automation에 로그인합니다.
  2. 사인인 후 표시되는 URL에는 Oracle Sales Automation 인스턴스에 대한 서버 이름과 포트 번호가 표시됩니다.
    예를 들어, URL이 http://˂crm_server:PortNumber˃/customer/faces/CrmFusionHome인 경우 서버 이름은 crm_server이고 포트 번호는 PortNumber입니다.

    나머지 단계에서 사용하는 서버 이름과 포트 번호를 기록해 둡니다.

  3. 웹 브라우저에서 API 리소스 URL로 이동하여 Oracle Sales Automation 인스턴스의 API 메타데이터를 가져옵니다.

    https://˂crm_server:PortNumber˃/salesApi/resources/

    여기서 salesAPI은 애플리케이션 컨테이너의 API 이름입니다. 서버 응답은 객체 항목 배열을 포함하는 JSON 객체를 반환합니다. 여기서 각 항목은 API의 특정 버전을 나타냅니다. 예를 들어, 다음은 한 항목에 대한 정보가 포함된 결과 배열의 일부입니다.

    {
        "version" : "11.1.10",
        "isLatest" : true,
        "links" : [ {
          "rel" : "self",
          "href" : " https://˂crm_server:PortNumber˃/salesApi/resources/11.1.10",
          "name" : "self",
          "kind" : "item"
        }, {
          "rel" : "canonical",
          "href" : " https://˂crm_server:PortNumber˃/salesApi/resources/11.1.10",
          "name" : "canonical",
          "kind" : "item"
        }, {
          "rel" : "predecessor-version",
          "href" : " https://˂crm_server:PortNumber˃/salesApi/resources/11.1.9",
          "name" : "predecessor-version",
          "kind" : "item"
        }, {
          "rel" : "describe",
          "href" : " https://˂crm_server:PortNumber˃/salesApi/resources/11.1.10/describe",
          "name" : "describe",
          "kind" : "describe"
        } ]
      }
  4. 특정 API 버전으로 노출된 모든 객체를 보려면 URL에 원하는 버전을 지정하여 해당 "설명" 끝점에 액세스할 수 있습니다.

    https://˂crm_server:PortNumber˃/salesApi/resources/11.1.10/describe

    또는 "최신" API 버전에 대한 정보도 얻을 수 있습니다.

    https://˂crm_server:PortNumber˃/salesApi/resources/latest/describe

    그러면 API에서 지원되는 최신 버전의 Oracle Sales Automation 객체, 해당 하위 객체, 지원되는 모든 메소드, 매개변수, 반환 값 및 객체 리소스 URI에 대한 포괄적인 설명이 포함된 긴 JSON 객체가 반환됩니다.

사용자정의 객체와 연관된 RESTful 리소스 검색

Oracle Sales Automation 사용자정의 객체에 대한 리소스 URI를 찾으려면 다음 단계를 수행합니다.

  1. Application Composer로 이동합니다. Sales Administrator, CRM Application Administrator 또는 Application Implementation Consultant로 로그인해야 합니다.
  2. 사용자정의 객체를 눌러 객체 테이블의 사용자정의 객체 목록을 봅니다.
  3. 특정 객체에 대한 URI를 보려면 REST 리소스 열에서 해당 객체에 해당하는 서비스 링크를 누릅니다.

    참고:

    브라우저의 주소 표시줄에서 URI를 잘라내어 붙여넣을 수 있습니다.

  4. (선택 사항) 특정 사용자정의 객체에 대한 설명을 보려면 REST 리소스 열에서 해당 객체에 해당하는 설명 링크를 누릅니다.

    주:

    URI 끝에 /describe를 추가하여 사용자정의 객체에 대한 설명을 가져올 수 있습니다.

RESTful 웹 서비스에 대한 서비스 끝점을 가져옵니다.

API URL에 "describe" 키워드 대신 서비스 이름을 지정하여 Oracle Sales Automation RESTful 웹 서비스 엔드포인트의 이름을 추론할 수 있습니다.

시작하려면 다음과 같이 하십시오.
  1. 브라우저를 열고 끝점 URL에 액세스합니다. 처음 열면 Oracle Sales Automation 사용자 자격 증명을 입력하라는 메시지가 표시됩니다.
    예를 들어, Oracle Sales Automation 릴리스 12용 REST API에서 최신 API 버전의 기회 서비스 엔드포인트에 접근하기 위한 URL은 다음과 같습니다.

    https://˂crm_server:PortNumber˃/salesApi/resources/latest/opportunities

  2. (선택 사항) 특정 리소스에 대한 추가 정보를 가져오려면 리소스의 describe URL을 사용하여 필드, 수행할 수 있는 작업, 하위 객체 및 값 리소스 목록이 포함된 추가 메타데이터를 가져올 수 있습니다.
    예를 들어 Oracle Sales Automation 릴리스 12용 REST API의 기회 서비스 엔드포인트에서 설명 URL은 다음과 같습니다.

    https://˂crm_server:PortNumber˃/salesApi/resources/latest/opportunities/describe

    Oracle Sales Automation REST API에는 다음 RESTful 웹 서비스 엔드포인트가 포함됩니다. 일부 엔드포인트 URL이 R12에서 R13로 변경되었습니다.
    릴리스 12 릴리스 13
     /crmCommonApi/resources/latest/accounts /crmRestApi/resources/latest/accounts
    /salesApi/resources/latest/activities /crmRestApi/resources/latest/activities
    /serviceApi/resources/latest/categories /crmRestApi/resources/latest/assets
    /incentiveCompensationApi/resources/latest/compensationPlans /crmRestApi/resources/latest/businessPlans
    /salesApi/resources/latest/competitors  /crmRestApi/resources/latest/categories
    /crmCommonApi/resources/latest/contacts /crmRestApi/resources/latest/channels
    /incentiveCompensationApi/resources/latest/creditCategories /fscmRestApi/resources/latest/compensationPlans
    /salesApi/resources/latest/deals /crmRestApi/resources/latest/competitors
    /salesApi/resources/latest/territoryForecasts /crmRestApi/resources/latest/contacts
    /crmCommonApi/resources/latest/households /fscmRestApi/resources/latest/creditCategories
    /crmCommonApi/resources/latest/lightboxDocuments /crmRestApi/resources/latest/deals
    /salesApi/resources/latest/opportunities /crmRestApi/resources/latest/territoryForecasts
    /incentiveCompensationApi/resources/latest/incentiveCompensationParticipants /crmRestApi/resources/latest/households
     /salesApi/resources/latest/partnerPrograms /crmRestApi/resources/latest/inboundMsgFilters
    /salesApi/resources/latest/partnerTiers /crmRestApi/resources/latest/inboundMessages
    /salesApi/resources/latest/partners /crmRestApi/resources/latest/interactions
    /incentiveCompensationApi/resources/latest/paymentBatches /crmRestApi/resources/latest/lightboxDocuments
     /incentiveCompensationApi/resources/latest/paymentTransactions  /crmRestApi/resources/latest/presentationSessionFeedback
    /incentiveCompensationApi/resources/latest/paysheets  /crmRestApi/resources/latest/presentationSessions
    /incentiveCompensationApi/resources/latest/incentiveCompensationPerformanceMeasures  /crmRestApi/resources/latest/mySelfServiceRoles
    /incentiveCompensationApi/resources/latest/planComponents /crmRestApi/resources/latest/salesObjectives
    /salesApi/resources/latest/priceBookHeaders /crmRestApi/resources/latest/opportunities
    /salesApi/resources/latest/setupSalesCatalogs /fscmRestApi/resources/latest/incentiveCompensationParticipants
    /salesApi/resources/latest/products /crmRestApi/resources/latest/partnerPrograms
     /salesApi/resources/latest/partnerProgramBenefits /crmRestApi/resources/latest/partnerTiers
     /salesApi/resources/latest/programEnrollments  /crmRestApi/resources/latest/partners
    /serviceApi/resources/latest/queues /fscmRestApi/resources/latest/paymentBatches
     /incentiveCompensationApi/resources/latest/rateDimensions /fscmRestApi/resources/latest/paymentTransactions
    /incentiveCompensationApi/resources/latest/rateTables /fscmRestApi/resources/latest/paysheets
    /crmCommonApi/resources/latest/resources /fscmRestApi/resources/latest/incentiveCompensationPerformanceMeasures
     /incentiveCompensationApi/resources/latest/incentiveCompensationRoles /fscmRestApi/resources/latest/planComponents
    /salesApi/resources/latest/leads /crmRestApi/resources/latest/priceBookHeaders
    /crmCommonApi/resources/latest/salesOrders /crmRestApi/resources/latest/setupSalesCatalogs
    /salesApi/resources/latest/salesPromotions /crmRestApi/resources/latest/products
    /crmPerformanceApi/resources/latest/territories /crmRestApi/resources/latest/partnerProgramBenefits
     /serviceApi/resources/latest/serviceRequests /crmRestApi/resources/latest/programEnrollments
    /salesApi/resources/latest/sourcecodes /crmRestApi/resources/latest/queues
    - /fscmRestApi/resources/latest/rateDimensions
    - /fscmRestApi/resources/latest/rateTables
    - /crmRestApi/resources/latest/resources
    - /fscmRestApi/resources/latest/incentiveCompensationRoles
    - /crmRestApi/resources/latest/leads
    - /crmRestApi/resources/latest/salesOrders
    - /crmRestApi/resources/latest/salesPromotions
    - /crmRestApi/resources/latest/territories
    - /crmRestApi/resources/latest/proposals
    - /crmRestApi/resources/latest/screenPopPages
    - /crmRestApi/resources/latest/screenPopTokens
    - /crmRestApi/resources/latest/selfRegistrations
    - /crmRestApi/resources/latest/selfServiceRoles
    - /crmRestApi/resources/latest/selfServiceUsers
    - /crmRestApi/resources/latest/serviceDetails
    - /crmRestApi/resources/latest/serviceProviders
    - /crmRestApi/resources/latest/serviceRequests
    - /crmRestApi/resources/latest/socialPosts
    - /crmRestApi/resources/latest/sourcecodes
    - /crmRestApi/resources/latest/wrapUps

    주:

    API 이름은 리소스 객체가 속한 Oracle Sales Automation 애플리케이션 컨테이너에 따라 변경됩니다.

REST 작업 및 페이로드 구조 정보

각 표준 Oracle Sales Automation 객체에 대한 RESTful 웹 서비스는 여러 CRUD(생성, 읽기, 업데이트 및 삭제) 작업을 제공합니다.

URL을 통해 단일 리소스 또는 리소스 모음과 상호 작용하기 위해 다음과 같은 표준 메소드를 실행할 수 있습니다.

메소드 단일 자원에 사용가능 리소스 수집에 사용 가능
가져오기 Y N
게시 N Y
패치 Y N
삭제 Y N

가져오기 메소드 정보

이 메소드를 사용하여 정보를 질의하고 검색합니다. 그러나 단일 리소스에서 검색을 세분화하거나 결과를 좁히기 위해 질의에 사용되는 매개변수는 리소스 수집에 사용되는 매개변수와 다릅니다.

단일 및 수집 자원 모두에 대한 매개변수

다음 매개변수는 단일 리소스 및 수집 리소스를 질의하는 메소드에 사용됩니다.

매개변수 형식 설명
expand

expand=<childResource1>,<childResource2>...

또는

expand=all

해당 하위를 포함하여 상위 리소스를 반환합니다. 기본적으로 하위 항목을 반환하지 않습니다.
fields fields=<FieldName1>,<FieldName2>... 정보가 필요한 특정 필드만 선택합니다.
onlyData

onlyData=true

또는

onlyData=false

리소스 URL이 아닌 데이터만 검색합니다. 기본적으로 모든 리소스 하위 URL이 반환됩니다.

회수 자원 매개변수

컬렉션 리소스에 대한 GET 메소드는 위에서 설명한 매개변수와 다음 매개변수를 사용합니다.

매개변수 형식 설명
limit

limit=<Integer>

서버에서 반환되는 최대 항목 수를 지정하는 0보다 큰 정수입니다. 지정된 제한 값이 없을 경우 서버는 기본 제한 값을 사용합니다.
offset offset=<Integer> 반환할 첫 번째 항목의 인덱스를 지정하는 정수 값입니다. 오프셋 인덱스는 0부터 시작합니다.
q

q=<condition1>;<condition2>;…

컬렉션에 반환되는 항목을 제한하는 필터 조건을 지정합니다. 이 질의 매개변수의 값에는 ";"으로 구분된 표현식이 하나 이상 포함되어 있습니다. 예: q=deptno>=10 and <=30;loc!=NY

지원되는 연산자:

>

<

>=

<=

!=

AND

OR

=

LIKE

특수 문자:

  • 리터럴에 대해 큰따옴표 또는 작은따옴표(예: "리터럴 값 1" 또는 '리터럴 value2')

  • 이스케이프 문자로 백슬래시: \

  • 와일드카드 별표: *

totalResults

totalResults=true

또는

totalResults=false

"q" 질의 매개변수와 일치하는 총 항목 수를 반환할지 여부를 지정하는 부울 값입니다.
orderBy

orderBy=<field1:asc>,<field2:desc>.

응답 페이로드에서 반환되는 항목의 순서를 지정합니다. 질의 매개변수 값은 쉼표로 구분된 필드 이름 문자열로, 선택적으로 뒤에 콜론과 키워드 asc 또는 desc가 옵니다.

지정되지 않은 경우 서버는 항목을 오름차순으로 반환합니다.

finder

finder=FinderName;<attr1>=<val1>,<attr2>=<value2>

고유의 특수 매개변수가 있는 미리 정의된 "질의"를 사용합니다.

예를 들어, Opportunities 리소스에는 MyOpportunitiesFinder라는 finder 함수가 있으며, 이 함수에는 Auto로 설정할 수 있는 Name 매개변수가 있습니다. 이 통화는 이름이 "자동"으로 시작하는 현재 사용자가 소유한 모든 기회를 검색합니다.

dependency

dependency=<attr1>=<val1>

값 목록 리소스에 사용됩니다. 예를 들어, Location 리소스에 State 필드가 있는 경우 해당 값은 특정 국가(위치)에 대한 상태 목록을 반환하는 다른 States 리소스에서 파생됩니다. 예를 들어 Location이 US이고 State가 CA인 경우 States 리소스에는 모든 미국 주 목록이 포함되어 있지만 웹 페이지의 사용자가 로케일을 브라질로 변경하면 모든 브라질 주를 검색하는 방법은 다음과 같습니다.

States?dependency=Country=BR

게시 방법 정보

이 방법을 사용하여 새 항목을 생성합니다. 요청 매체 유형 헤더는 다음과 같습니다.

application/vnd.oracle.adf.resourceitem+json

예를 들어, Opportunities 리소스 아래에 새 기회를 만들려면 요청이 JSON 객체에 새 기회 이름 매개변수를 전달합니다.

{
"Name" : "New Opportunity Name"
}

POST 요청에 의해 반환된 JSON 객체의 응답 본문은 다음과 같습니다.


{
BudgetAvailableDate: null
BudgetedFlag: false
PrimaryOrganizationId: 204
ChampionFlag: false
CreatedBy: "SALES_ADMIN"
CreationDate: "2015-06-04T03:08:27-07:00"
CurrencyCode: "USD"
SalesMethodId: 100000012430001
SalesStageId: 100000012430007
Name: "New Opportunity Name"
OptyId: 300100111705686
OptyNumber: "CDRM_332708"
OwnerResourcePartyId: 3807
StatusCode: "OPEN"
PrimaryRevenueId: 300100111705687
SalesMethod: "Standard Sales Process"
SalesStage: "01 - Qualification"
DescriptionText: "Looking for the Right Contacts, Characteristics,
Determining the Need, Budget and Sponsor"
AverageDaysAtStage: 30
MaximumDaysInStage: 800
PhaseCd: "QUALIFICATION-DISCOVERY"
QuotaFactor: 3
RcmndWinProb: 0
StageStatusCd: "OPEN"
StgOrder: 1
EffectiveDate: "2015-06-24"
Revenue: 0
WinProb: 0
PartyName1: "Charles Taylor"
DownsideAmount: 0
UpsideAmount: 0
EmailAddress: "firstname lastname@orcl.com"
ExpectAmount: 0
ForecastOverrideCode: "CRITERIA"
SalesChannelCd: "ZPM_DIRECT_CHANNEL_TYPES"
…
}

패치 방법 정보

리소스에 대한 부분 업데이트를 수행하려면 이 방법을 사용합니다. 요청 본문에 포함된 필드만 업데이트됩니다.

요청 매체 유형은 다음과 같습니다.

application/vnd.oracle.adf.resourceitem+json

예를 들어, Oppurtunities 리소스에서 기존 Opportunity를 업데이트하기 위해 HTTP PATCH 요청은 다음 JSON 객체를 요청 본문으로 전달합니다.

{
"Name": "Opportunity Name Updated"
}

이 요청의 응답은 다음과 유사한 JSON 객체입니다.


{
BudgetAvailableDate: null
BudgetedFlag: false
PrimaryOrganizationId: 204
ChampionFlag: false
CreatedBy: "SALES_ADMIN"
CreationDate: "2015-06-04T03:08:27-07:00"
CurrencyCode: "USD"
SalesMethodId: 100000012430001
SalesStageId: 100000012430007
Name: "Opportunity Name Updated"
OptyId: 300100111705686
OptyNumber: "CDRM_332708"
OwnerResourcePartyId: 3807
StatusCode: "OPEN"
PrimaryRevenueId: 300100111705687,
SalesMethod: "Standard Sales Process"
SalesStage: "01 - Qualification"
DescriptionText: "Looking for the Right Contacts, Characteristics,
Determining the Need, Budget and Sponsor"
AverageDaysAtStage: 30
MaximumDaysInStage: 800
PhaseCd: "QUALIFICATION-DISCOVERY"
QuotaFactor: 3
RcmndWinProb: 0
StageStatusCd: "OPEN"
StgOrder: 1
EffectiveDate: "2015-06-24"
Revenue: 0
WinProb: 0
PartyName1: "Charles Taylor"
DownsideAmount: 0
UpsideAmount: 0
EmailAddress: "firstname_lastname@orcl.com"
ExpectAmount: 0
ForecastOverrideCode: "CRITERIA"
SalesChannelCd: "ZPM_DIRECT_CHANNEL_TYPES"
…
}

삭제 방법 정보

이 방법을 사용하여 리소스를 삭제합니다. 요청 본문이 필요하지 않습니다.

예를 들어, Opportunities 리소스에서 Opportunity 객체를 삭제하려면 매개변수를 전달하지 않고 DELETE 요청을 하위 Opportunity 리소스의 URI로 직접 만들어야 합니다.

https://<crm_server:PortNumber>/salesApi/resources/latest/opportunities/<OpportunityNumber>

사용자 정의 작업 방법 정보

때때로 리소스가 CRUD 표준에 맞지 않는 사용자 정의 작업을 노출합니다. 사용자 정의 작업은 항상 단수 및 리소스 모음에 대해 POST를 사용하여 호출되며 요청 매체 유형은 다음과 같습니다.

application/vnd.oracle.adf.action+json

응답 매체 유형은 다음과 같습니다.

application/vnd.oracle.adf.actionresult+json

예를 들어, Oracle Sales Automation에서 https://<crm_server:portNumber>/salesApi/resources/latest/describe/leads/ 아래의 leads 자원에는 가망 고객을 convertLeadToOpty라는 기회로 변환하는 사용자정의 작업이 있습니다.

{
          "name" : "convertLeadToOpty",
          "parameters" : [ {
            "name" : "leadId",
            "type" : "number",
            "mandatory" : false
          } ],
          "resultType" : "string",
          "method" : "POST",
          "requestType" : [ "application/vnd.oracle.adf.action+json" ],
          "responseType" : [ "application/json", "application/vnd.oracle.adf.actionresult+json" ]
        },

특정 목표를 달성하기 위해 사용자 정의 작업을 일련의 단계, 프로세스 또는 서로 다른 CRUD 작업의 조합으로 생각하십시오. 위 예에서 사용자정의 작업의 요청 본문은 사용자정의 작업 이름(예: convertLeadToOpty)이 될 "name" 및 선택적으로 사용자정의 작업에 대한 입력 매개변수 배열(예: leadId)을 전달해야 합니다.

일반적으로 POST 요청의 JSON 본문은 다음을 포함합니다.

{
"$schema": "http://json-schema.org/draft-04/schema#",
"type": "object",
"title": "Action execution representation.",
"description": "Represents the action execution and its
parameters.",
"properties": {
"name": {
"type": "string",
"description": "Action name."
},
"parameters": {
"type": "array",
"description": "Parameter name/value pair.",
}
},
"required": [
"name"
]
}

JSON 응답 객체는 "결과" 필드에 사용자정의 작업 메소드의 결과를 보유합니다.

뱃치 지원 정보

성능 향상을 위해 "parts"라는 필드가 포함된 JSON 객체를 객체 배열로 전송하여 여러 작업을 단일 HTTP 요청으로 결합할 수 있습니다. 배열 내의 각 객체는 고유 ID, 리소스에 대한 상대 경로, 작업 및 선택적으로 페이로드를 포함합니다.

HTTP 요청의 JSON 스키마:


{
"$schema": "http://json-schema.org/draft-04/schema#",
"type": "object",
"title": "Batch execution",
"description": "Group multiple requests together ('part').",
"definitions": {
"Part": {
"type": "object",
"allOf": [
{
"properties": {
"id": {
"type": "string",
"description": "An identification
provided by the client to distinguish each part provided in the
batch request."
},
"path": {
"type": "string",
"description": "Resource's location."
},
"operation": {
"type": "string",
"enum": [
"get",
"create",
"update",
"replace",
"delete"
],
"description": "The operation that will
be performed."
},
"preconditionSucceeded": {
"type": "boolean",
"description": "This attribute is set in
the batch response only when ifMatch or ifNoneMatch are provided in
the request. It will be 'true' if the precondition
(ifMatch/ifNoneMatch) was satisfied, otherwise 'false'."
},
"payload": {
"oneOf": [
{
"$ref": "resource-item.json",
"description": "The payload that
will be used in the operation. Example: a resource instance should
be provided in order to execute a 'create'."
},
{
"type": "null"
}
]
}
},
"required": [
"id",
"path",
"operation"
]
}
],
"anyOf": [
{
"properties": {
"ifMatch": {
"type": "string",
"description": "This attribute is
analogous to the If-Match header. It represents a precondition to
execute this operation. The value can be null (same effect of 'If-
Match: *') or an array of resource versions."
}
}
},
{
"properties": {
"ifNoneMatch": {
"type": "string",
"description": "This attribute is
analogous to the If-None-Match header. It represents a precondition
to execute this operation. The value can be null (same effect of
'If-None-Match: *') or an array of resource versions."
}
}
}
],
"description": "Represents a request."
}
},
"properties": {
"parts": {
"type": "array",
"items": {
"$ref": "#/definitions/Part"
},
"description": "Array that represents multiple
requests."
}
},
"required": [
"parts"
]
}

예를 들어, 다음 요청은 기존 사원을 패치(fetch)하고 다른 사원을 갱신합니다.


POST /myapi/resources/latest/hremployees HTTP/1.1
Host: example.oracle.com
Content-type:application/vnd.oracle.adf.batch+json
{
"parts": [
{
"id": "part1",
"path": "/latest/hremployees/101",
"operation": "get"
},
{
"id": "part2",
"path": "/latest/hremployees/102",
"operation": "update",
"payload": {
"Salary": 18000
}
}
]
}

이전 요청의 응답은 요청과 동일한 매체 유형을 사용하고 다음과 같은 JSON 객체를 반환합니다.

{"parts":[
{
"id":"part1",
"path":"/latest/hremployees/101",
"operation":"get",
"payload" : {
"EmployeeId" : 101
…
},
{
"id" : "part2",
"path" : "/latest/hremployees/102",
"operation" : "update",
"payload" : {
"EmployeeId" : 102,
} ]}

Oracle Sales Automation RESTful 웹 서비스 요청 테스트

RESTful API를 테스트하고 필요한 데이터를 가져오려면 cURL 명령행 툴을 사용하여 지원되는 프로토콜(예: HTTP 또는 HTTPS) 중 하나를 사용하여 서버에서 서버로 데이터를 전송할 수 있습니다.

이 예에서는 cURL 도구를 사용하여 RESTful API에 액세스합니다.
  1. 유효한 REST URL(끝점)이 있는지 확인합니다. 예를 들어, Oracle Sales Automation 릴리스 12에서 accounts 리소스의 끝점은 다음과 같습니다.

    https://<crm_server:PortNumber>/crmCommonApi/resources/latest/accounts

  2. 보안 인증서를 편리하게 사용할 수 있습니다.
  3. cURL 툴이 설치되어 있는지 확인하고 그렇지 않은 경우 다음을 수행합니다.
    1. 브라우저에서 cURL 홈 페이지(http://curl.haxx.se/download.html)로 이동하고 왼쪽 탐색 메뉴에서 다운로드를 누릅니다.
    2. cURL Releases and Downloads 페이지에서 운영 체제에 해당하는 cURL 소프트웨어의 SSL 사용 버전을 찾고 링크를 눌러 ZIP 파일을 다운로드하고 소프트웨어를 설치합니다.
    3. http://curl.haxx.se/docs/caextract.html 의 cURL CA 인증서 페이지로 이동하여 cURL을 설치한 폴더에 있는 ca-bundle.crt SSL CA 인증서 번들을 다운로드합니다.
    4. 명령 창을 열고 cURL을 설치한 디렉토리로 이동한 다음 cURL 환경 변수 CURL_CA_BUNDLE을 SSL 인증 기관 *CA 인증서 번들의 위치로 설정합니다. 예를 들면, 다음과 같습니다.
      C:\curl> set CURL_CA_BUNDLE=ca-bundle.crt

      이제 cURL을 사용할 준비가 완료되었습니다.

  4. cURL 툴을 사용하여 리소스에서 HTTP 요청을 실행합니다.
    $ curl –k –u <userName> https://<crm_server:PortNumber>/crmCommonApi/resources/latest/accounts
  5. 아래와 유사한 응답을 예상할 수 있습니다.
    {
    "items" : [ {
    "PartyId" : 300100010648746,
    "PartyNumber" : "CDRM_2260",
    "SourceSystem" : null,
    "SourceSystemReferenceValue" : null,
    "OrganizationName" : "DLAKWRVBBU",
    "UniqueNameSuffix" : "US)",
    "PartyUniqueName" : "DLAKWRVBBU US)",
    "Type" : "ZCA_CUSTOMER",
    "OwnerPartyId" : 100010025532672,
    "OwnerPartyNumber" : "100010025532672",
    "OwnerEmailAddress" : "sendmail-test-discard@oracle.com",
    ...
    },
    {
    ...
    } ],
    "count" : 25,
    "hasMore" : true,
    "limit" : 25,
    "offset" : 0,
    "links" : [ {
    "rel" : "self",
    "href" :
    "https://host:port/crmCommonApi/resources/latest/accounts",
    "name" : "accounts",
    "kind" : "collection"
    } ]
    }
  6. 응답 본문에서 수행할 수 있는 작업이 포함된 각 리소스에 대한 링크를 볼 수 있습니다.
  7. (선택 사항) /describe URI를 사용하여 다음과 같은 리소스의 메타데이터를 가져올 수 있습니다.
    $ curl –k –u <userName> https://<crm_server:PortNumber>/crmCommonApi/resources/latest/accounts/describe

    다음과 같은 항목을 반환합니다.

    
    {
    "Resources" : {
    "accounts" : {
    "discrColumnType" : false,
    "title" : "Sales Cloud Account SDO",
    "attributes" : [ {
    "name" : "PartyId",
    "type" : "integer",
    "updatable" : false,
    "mandatory" : true,
    "queryable" : true,
    "precision" : 18,
    "properties" : {
    "fnd:GLOBALLY_UNIQUE" : "true"
    }
    }, {
    "name" : "PartyNumber",
    "type" : "string",
    "updatable" : true,
    "mandatory" : true,
    "queryable" : true,
    "precision" : 30,
    "maxLength" : "30",
    "properties" : {
    "DISPLAYWIDTH" : "40"
    }
    }, {
    "name" : "SourceSystem",
    "type" : "string",
    "updatable" : true,
    "mandatory" : false,
    "queryable" : true
    }, {
    ...],
    "links" : [ {
    "rel" : "self",
    "href" :
    "https://host:port/crmCommonApi/latest/latest/accounts",
    "name" : "self",
    "kind" : "collection"
    } ],
    "actions" : [ {
    "name" : "get",
    "method" : "GET",
    "responseType" : [ "application/json",
    "application/vnd.oracle.adf.resourcecollection+json" ]
    }, {
    "name" : "create",
    "method" : "POST",
    "requestType" : [
    "application/vnd.oracle.adf.resourceitem+json" ],
    "responseType" : [ "application/json",
    "application/vnd.oracle.adf.resourceitem+json" ]
    } ]
    }
    ...

    메타데이터에서 /accounts 리소스에서 POST 명령을 실행하여 리소스를 만들 수 있습니다.