Mit RESTful Services auf Oracle Sales Automation-Daten zugreifen

Oracle Sales Automation stellt mehrere RESTful-APIs bereit, mit denen Sie auf Standard- und benutzerdefinierte Objektdaten zugreifen und in externe Anwendungen integrieren können. RESTful direkte Methodenaufrufe werden mit einer ordnungsgemäß strukturierten URL über das HTTP-Protokoll ausgeführt.

Jede API enthält Oracle Sales Automation-Standardobjekte und jedes Objekt ist einer REST-Ressource oder Ressourcensammlung zugeordnet. Beispiel: In der RESTful-API wird der Ressourcenendpunkt Opportunities verwendet, um Informationen zu einem potenziellen Verkauf zu verfolgen. Bevor Sie jedoch Oracle Sales Automation RESTful-Webservices verwenden, müssen Sie die Sicherheitsanforderungen für den Zugriff berücksichtigen und auch die zu verwendenden Webservices sowie die entsprechenden unterstützten Methoden und erwarteten Payload-Strukturen identifizieren.

Informationen zu Ressourcen in Oracle Sales Automation RESTful-APIs

Oracle Sales Automation stellt eine Sammlung von REST-Ressourcen für Standard- und benutzerdefinierte Objekte bereit.

Ein wichtiges Konzept in jeder RESTful-API ist die Ressource. Eine Ressource ist ein Objekt mit einem Typ (z.B. Opportunitys), zugehörigen Daten, Beziehungen zu anderen Ressourcen und einer Gruppe von Methoden, die daran arbeiten. Diese Ressourcen sind hierarchisch organisiert und umfassen:

  • Root-Ressource: Entspricht einem logischen Objekt, wie einer Opportunity oder einem Lead.

  • Unterressource(n): Dies sind Ressourcen, die zu einer übergeordneten Ressource gehören, z.B. ein Kontakt für eine Opportunity.

  • Wertelistenressource: Eine Liste gültiger Werte, die beim Festlegen eines Wertes für ein Feld verwendet werden können. Es gibt zwei Typen: Lookup (statische Liste) oder Dynamisch (basierend auf Kontext).

Innerhalb der Oracle Sales Automation-API RESTful gibt es zwei Ressourcentypen: eine einzelne Ressource oder eine Erfassungsressource. Eine einzelne Ressource kann eine einzelne Entität wie ein Mitarbeiter oder eine Bestellung darstellen, während eine Inkassoressource umfassender sein kann, wie eine Liste von Mitarbeitern oder eine Liste von Bestellungen, die ausgelagert werden können.

REST-Unterstützung für benutzerdefinierte Objekte

Oracle Sales Automation umfasst Standardobjekte, die viele Geschäftsanforderungen und Szenarios berücksichtigen. Zusätzlich zu Standardobjekten können Sie jedoch das Application Composer-Tool verwenden, um benutzerdefinierte Objekte der obersten Ebene und untergeordnete benutzerdefinierte Objekte zu erstellen, wenn Sie eine eindeutige Geschäftsanforderung haben.

Application Composer ist ein browserbasiertes Tool, mit dem Business Analysts und Administratoren (nicht nur Entwickler) Oracle Sales Automation anpassen können. Mit diesem Tool können Sie die Arten von Datenmodelländerungen vornehmen, die in der Vergangenheit nur von Entwicklern vorgenommen wurden. Im Application Composer-Tool können Sie Änderungen direkt vornehmen und sofort zur Verwendung verfügbar machen, ohne sich wieder bei der Anwendung anmelden zu müssen. Dazu gehört die Erstellung von benutzerdefinierten Objekten, die der Oracle Sales Automation-API RESTful hinzugefügt werden können.

Performancetipps

Befolgen Sie diese Tipps, um die beste Performance mit den REST-APIs von Oracle Fusion Sales Cloud zu erzielen.

Fragen Sie nur die benötigten Daten ab. Beispiel: Wenn Sie den Opportunity-REST-Service abfragen, ist die Payload ziemlich groß und Sie erhalten eine lange Antwortzeit. Sie können diese Reaktionszeit verkürzen, wenn Sie:
  • Fragen Sie nur die Daten ab, die Sie benötigen.
  • Fragen Sie nur die Daten ab, nicht die Metadaten.
Beispiel: Geben Sie die Abfrage ein
salesApi/resources/latest/opportunities
gibt eine große Payload zurück, während die Eingabe der Abfrage
salesApi/resources/latest/opportunities?fields=Name,OptyNum&onlyData=true
wird, da Sie die Abfragekriterien eingegrenzt haben, eine kleinere Payload zurückgeben.

Mit "Beschreiben"-Endpunkten nach RESTful-Ressourcen suchen

Sie können bestimmte Details zu den verschiedenen Oracle Sales Automation-APIs RESTful abrufen, indem Sie eine HTTP GET-Anforderung senden, die ein JSON-Objekt mit Ressourceninformationen und ergänzenden Metadaten zurückgibt.

So rufen Sie Informationen zu einer bestimmten Version der API ab:
  1. Melden Sie sich bei Oracle Sales Automation als Sales-Administrator an.
  2. Die URL, die nach der Anmeldung angezeigt wird, zeigt den Servernamen und die Portnummer für Ihre Oracle Sales Automation-Instanz an:
    Beispiel: Wenn die URL http://˂crm_server:PortNumber˃/customer/faces/CrmFusionHome lautet, lautet der Servername crm_server, und die Portnummer lautet PortNumber.

    Notieren Sie sich den Servernamen und die Portnummer, die Sie in den übrigen Schritten verwenden.

  3. Rufen Sie Ihren Webbrowser auf die API-Ressourcen-URL, um die API-Metadaten Ihrer Oracle Sales Automation-Instanz abzurufen:

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

    Dabei ist salesAPI der API-Name für den Anwendungscontainer. Die Serverantwort gibt ein JSON-Objekt zurück, das ein Array von Objektelementen enthält, wobei jedes Element eine bestimmte Version der API darstellt. Beispiel: Im Folgenden finden Sie einen Teil des Array von Ergebnissen mit Informationen zu einem Element:

    {
        "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. Wenn Sie alle von einer bestimmten API-Version bereitgestellten Objekte anzeigen möchten, können Sie auf den zugehörigen "Beschreibungs"-Endpunkt zugreifen und die gewünschte Version in der URL angeben:

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

    Oder Sie erhalten auch Informationen zur "neuesten" API-Version:

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

    Dadurch wird ein langes JSON-Objekt zurückgegeben, das die neueste Version der in der API unterstützten Oracle Sales Automation-Objekte, ihre untergeordneten Objekte, eine umfassende Beschreibung aller unterstützten Methoden, Parameter, Rückgabewerte sowie die Objektressourcen-URIs enthält.

Mit benutzerdefinierten Objekten verknüpfte RESTful-Ressourcen suchen

So suchen Sie die Ressourcen-URIs für benutzerdefinierte Oracle Sales Automation-Objekte:

  1. Navigieren Sie zu Application Composer (Sie müssen als Sales-Administrator, CRM-Anwendungsadministrator oder Application Implementation Consultant angemeldet sein).
  2. Klicken Sie auf Benutzerdefinierte Objekte, um die Liste der benutzerdefinierten Objekte in der Tabelle Objekte anzuzeigen.
  3. Um die URI für ein bestimmtes Objekt anzuzeigen, klicken Sie in der Spalte REST-Ressource auf den Link Service, der diesem Objekt entspricht.

    Tipp:

    Sie können die URI aus der Adressleiste des Browsers ausschneiden und einfügen.

  4. (Optional) Um die Beschreibung für ein bestimmtes benutzerdefiniertes Objekt anzuzeigen, klicken Sie in der Spalte REST-Ressource auf den Link Beschreiben, der diesem Objekt entspricht.

    Hinweis:

    Sie können /describe an das Ende der URI anhängen, um eine Beschreibung eines benutzerdefinierten Objekts abzurufen.

Serviceendpunkte für RESTful-Webservices abrufen

Sie können den Namen eines Oracle Sales Automation RESTful-Webserviceendpunkts inferenzieren, indem Sie den Servicenamen anstelle des Schlüsselworts "beschreiben" in der API-URL angeben.

Gehen Sie folgendermaßen vor, um zu beginnen:
  1. Öffnen Sie den Browser, und greifen Sie auf die Endpunkt-URL zu. Wenn Sie es das erste Mal öffnen, werden Sie zur Eingabe Ihrer Oracle Sales Automation-Benutzerzugangsdaten aufgefordert.
    Beispiel: Um in der REST-API für Oracle Sales Automation Release 12 auf den Endpunkt des Opportunitys-Service für die neueste API-Version zuzugreifen, lautet die URL:

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

  2. (Optional) Wenn Sie zusätzliche Informationen zu einer bestimmten Ressource abrufen möchten, können Sie die describe-URL der Ressource verwenden, um zusätzliche Metadaten mit Feldern, Aktionen, die ausgeführt werden können, untergeordneten Objekten und einer Liste von Wertressourcen abzurufen.
    Beispiel: In der REST-API für Oracle Sales Automation Release 12 im Endpunkt des Service Opportunitys lautet die URL beschreiben:

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

    Die Oracle Sales Automation-REST-API umfasst die folgenden RESTful-Webserviceendpunkte. Beachten Sie, dass einige Endpunkt-URLs von R12 in R13 geändert wurden:
    Release 12 Release 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

    Hinweis:

    Die API-Namen ändern sich abhängig vom Oracle Sales Automation-Anwendungscontainer, zu dem das Ressourcenobjekt gehört.

REST-Vorgänge und Payload-Strukturen

Der Webservice RESTful für jedes Oracle Sales Automation-Standardobjekt bietet mehrere CRUD-(Create, Read, Update and Delete-)Vorgänge.

Sie können die folgenden Standardmethoden für die Interaktion mit einer einzelnen Ressource oder einer Ressourcensammlung über ihre URLs ausführen:

Methode Für eine einzelne Ressource verfügbar Für eine Ressourcenerfassung verfügbar
Get J N
Post N J
Patch J N
Löschen J N

Informationen zur Get-Methode

Verwenden Sie diese Methode, um Informationen abzufragen und abzurufen. Die Parameter, die in der Abfrage verwendet werden, um die Suche zu verfeinern oder die Ergebnisse in einer einzelnen Ressource einzugrenzen, unterscheiden sich jedoch von den Parametern, die in einer Ressourcensammlung verwendet werden.

Parameter für Singular- und Collection-Ressourcen

Die folgenden Parameter werden bei der Methode zum Abfragen einer einzelnen Ressource sowie einer Collection-Ressource verwendet:

Parameter Formatieren Beschreibung
expand

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

oder

expand=all

Gibt die übergeordnete Ressource einschließlich ihrer untergeordneten Ressourcen zurück. Standardmäßig werden keine untergeordneten Elemente zurückgegeben.
fields fields=<FieldName1>,<FieldName2>... Wählen Sie nur bestimmte Felder, für die Informationen erforderlich sind.
onlyData

onlyData=true

oder

onlyData=false

Rufen Sie nur Daten und keine Ressourcen-URLs ab. Standardmäßig werden alle untergeordneten Ressourcen-URLs zurückgegeben.

Parameter für Inkassoressourcen

Eine GET-Methode für Erfassungsressourcen verwendet die oben beschriebenen Parameter sowie die folgenden Parameter:

Parameter Formatieren Beschreibung
limit

limit=<Integer>

Eine Ganzzahl größer als 0, die angibt, wie viele Elemente maximal vom Server zurückgegeben werden. Wenn kein Grenzwert angegeben wird, verwendet der Server einen Standardgrenzwert.
offset offset=<Integer> Ein ganzzahliger Wert, der den Index des ersten zurückzugebenden Elements angibt. Der Offset-Index beginnt bei 0.
q

q=<condition1>;<condition2>;…

Geben Sie eine Filterbedingung an, um die in der Sammlung zurückgegebenen Elemente einzuschränken. Der Wert dieses Abfrageparameters enthält einen oder mehrere durch ";" getrennte Ausdrücke. Beispiel: q=deptno>=10 and <=30;loc!=NY

Unterstützte Operatoren:

>

<

>=

<=

!=

AND

OR

=

LIKE

Sonderzeichen:

  • Doppelte oder einfache Anführungszeichen für Literale, d.h. "Literalwert 1" oder "Literalwert value2"

  • Schrägstrich zurück, um Zeichen zu maskieren: \

  • Sternchen für Platzhalter: *

totalResults

totalResults=true

oder

totalResults=false

Ein boolescher Wert, der angibt, ob die Gesamtanzahl der Elemente zurückgegeben wird, die dem Abfrageparameter "q" entsprechen.
orderBy

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

Gibt die Reihenfolge der in der Antwort-Payload zurückgegebenen Elemente an. Der Abfrageparameterwert ist eine durch Komma getrennte Zeichenfolge von Feldnamen, jeder optional gefolgt von einem Doppelpunkt und dem Schlüsselwort asc oder desc.

Wenn keine Angabe gemacht wird, gibt der Server Elemente in aufsteigender Reihenfolge zurück.

finder

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

Verwendet eine vordefinierte Abfrage mit eigenen speziellen Parametern.

Beispiel: Die Ressource Opportunities hat eine finder-Funktion namens MyOpportunitiesFinder. Diese Funktion hat einen Name-Parameter, der als Auto festgelegt werden kann. Dieser Aufruf ruft alle Verkaufsprojekte ab, für die der aktuelle Benutzer verantwortlich ist und deren Name mit "Automatisch" beginnt.

dependency

dependency=<attr1>=<val1>

Wird für kaskadierende Wertelistenressourcen verwendet. Beispiel: Wenn eine Location-Ressource ein Feld State enthält, werden diese Werte von einer anderen States-Ressource abgeleitet, die eine Liste der Status für ein bestimmtes Land (Standort) zurückgibt. Beispiel: Standort: US und Bundesland: CA. Die Ressource "Bundesstaaten" enthält eine Liste aller US-Bundesstaaten. Wenn der Benutzer auf der Webseite das Gebietsschema jedoch in "Brasilien" ändert, können alle brasilianischen Bundesstaaten wie folgt abgerufen werden:

States?dependency=Country=BR

Über die Post-Methode

Mit dieser Methode können Sie ein neues Element erstellen. Der Header des Anforderungsmedientyps lautet:

application/vnd.oracle.adf.resourceitem+json

Beispiel: Um eine neue Opportunity unter der Ressource Opportunities zu erstellen, übergibt die Anforderung den neuen Namensparameter Opportunity in einem JSON-Objekt:

{
"Name" : "New Opportunity Name"
}

Der Antwortbody des JSON-Objekts, das von der POST-Anforderung zurückgegeben wird, könnte wie folgt aussehen:


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

Informationen zur Patchmethode

Mit dieser Methode können Sie eine Ressource teilweise aktualisieren. Nur die Felder im Anforderungstext werden aktualisiert.

Der Anforderungstyp lautet:

application/vnd.oracle.adf.resourceitem+json

Beispiel: Um ein vorhandenes Opportunity aus der Ressource Oppurtunities zu aktualisieren, übergibt die HTTP-PATCH-Anforderung das folgende JSON-Objekt als Anforderungstext:

{
"Name": "Opportunity Name Updated"
}

Die Antwort dieser Anforderung ist ein JSON-Objekt ähnlich dem Folgenden:


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

Informationen zur Methode "Delete"

Mit dieser Methode können Sie eine Ressource löschen. Es ist kein Anforderungsbody erforderlich.

Beispiel: Um ein Verkaufsprojekt-Objekt aus der Ressource Opportunities zu löschen, muss die Anforderung DELETE direkt an die URI der zu löschenden untergeordneten Ressource Opportunity gesendet werden, ohne dass Parameter an sie übergeben werden:

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

Informationen zu benutzerdefinierten Aktionsmethoden

Manchmal zeigt eine Ressource eine benutzerdefinierte Aktion an, die nicht in den CRUD-Standard passt. Eine benutzerdefinierte Aktion wird immer mit POST (sowohl für Singular- als auch für Ressourcensammlungen) aufgerufen. Der Anforderungsmedientyp lautet:

application/vnd.oracle.adf.action+json

Der Antwortmedientyp lautet:

application/vnd.oracle.adf.actionresult+json

Beispiel: In Oracle Sales Automation enthält die Ressource leads unter https://<crm_server:portNumber>/salesApi/resources/latest/describe/leads/ eine benutzerdefinierte Aktion zum Konvertieren eines Leads in eine Opportunity namens 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" ]
        },

Stellen Sie sich eine benutzerdefinierte Aktion als eine Reihe von Schritten, einen Prozess oder eine Kombination verschiedener CRUD-Vorgänge vor, um ein bestimmtes Ziel zu erreichen. Im obigen Beispiel muss der Anforderungsbody einer benutzerdefinierten Aktion den "Namen" übergeben, der diesen benutzerdefinierten Aktionsnamen (d.h. convertLeadToOpty) und optional ein Array von Eingabeparametern für die benutzerdefinierte Aktion (d.h. leadId) sein soll.

Normalerweise enthält der JSON-Hauptteil der POST-Anforderung Folgendes:

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

Das JSON-Antwortobjekt enthält das Ergebnis der Methode benutzerdefinierte Aktion im Feld "Ergebnisse".

Informationen zur Batchunterstützung

Um die Performance zu verbessern, können mehrere Vorgänge zu einer einzelnen HTTP-Anforderung kombiniert werden, indem ein JSON-Objekt gesendet wird, das ein Feld mit dem Namen "parts" als Array von Objekten enthält. Jedes Objekt innerhalb des Arrays enthält eine eindeutige ID, einen relativen Pfad zur Ressource, einen Vorgang und optional eine Payload.

Das JSON-Schema der HTTP-Anforderung lautet:


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

Beispiel: Die folgende Anforderung ruft einen vorhandenen Mitarbeiter ab und aktualisiert einen anderen Mitarbeiter:


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

Die Antwort der vorherigen Anforderung verwendet denselben Medientyp wie die Anforderung und gibt ein JSON-Objekt zurück. Beispiel:

{"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-Webserviceanfrage testen

Um eine RESTful-API zu testen und die erforderlichen Daten abzurufen, können Sie mit dem cURL-Befehlszeilentool Daten von oder zu einem Server mit einem der unterstützten Protokolle wie HTTP oder HTTPS übertragen.

In diesem Beispiel wird das cURL-Tool für den Zugriff auf eine RESTful-API verwendet:
  1. Stellen Sie sicher, dass eine gültige REST-URL (Endpunkt) vorhanden ist. Beispiel: In Oracle Sales Automation Release 12 lautet der Endpunkt für die Ressource accounts:

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

  2. Halten Sie Ihre Sicherheitszugangsdaten bereit.
  3. Stellen Sie sicher, dass das cURL-Tool installiert ist. Andernfalls gilt Folgendes:
    1. Navigieren Sie in Ihrem Browser zur cURL-Homepage unter http://curl.haxx.se/download.html, und klicken Sie im linken Navigationsmenü auf Herunterladen.
    2. Suchen Sie auf der Seite "cURL-Releases und -Downloads" die SSL-fähige Version der cURL-Software, die Ihrem Betriebssystem entspricht, klicken Sie auf den Link, um die ZIP-Datei herunterzuladen und die Software zu installieren.
    3. Navigieren Sie unter http://curl.haxx.se/docs/caextract.html zur Seite "cURL-CA-Zertifikate", und laden Sie das SSL-CA-Zertifikats-Bundle CA-bundle.crt in den Ordner herunter, in dem Sie cURL installiert haben.
    4. Öffnen Sie ein Befehlsfenster, navigieren Sie zu dem Verzeichnis, in dem Sie cURL installiert haben, und legen Sie die cURL-Umgebungsvariable CURL_CA_BUNDLE auf den Speicherort eines SSL-Zertifikatsautoritäts-*CA-Zertifikats-Bundles fest. Beispiel:
      C:\curl> set CURL_CA_BUNDLE=ca-bundle.crt

      Sie können jetzt cURL verwenden.

  4. Geben Sie mit dem cURL-Tool eine HTTP-Anforderung für die Ressource aus:
    $ curl –k –u <userName> https://<crm_server:PortNumber>/crmCommonApi/resources/latest/accounts
  5. Sie können eine Antwort erwarten, die der folgenden ähnelt:
    {
    "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. Im Antwortbody werden die Links zu jeder Ressource mit den Aktionen angezeigt, die für sie ausgeführt werden können.
  7. (Optional) Mit der URI /describe können Sie die Metadaten einer Ressource abrufen. Beispiel:
    $ curl –k –u <userName> https://<crm_server:PortNumber>/crmCommonApi/resources/latest/accounts/describe

    Es gibt so etwas zurück:

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

    Aus den Metadaten können Sie beobachten, dass Sie einen POST-Befehl für die Ressource /accounts ausgeben können, um eine Ressource zu erstellen.