الوصول إلى بيانات Oracle Sales Automation باستخدام خدمات RESTful

يوفر Oracle Sales Automation العديد من واجهات برمجة التطبيقات RESTful التي يمكنك استخدامها للوصول إلى بيانات الكائنات القياسية والمخصصة والتكامل مع التطبيقات الخارجية. RESTful يتم إجراء استدعاءات الأسلوب المباشر باستخدام عنوان URL منظم بشكل صحيح عبر بروتوكول HTTP.

تحتوي كل واجهة برمجة تطبيقات على كائنات Oracle Sales Automation قياسية وكل كائن مرتبط بموارد REST أو مجموعة الموارد. على سبيل المثال، في واجهة برمجة تطبيقات RESTful، يتم استخدام نقطة انتهاء مورد Opportunities لتتبع معلومات حول عملية بيع محتملة. ومع ذلك، قبل استخدام خدمات ويب Oracle Sales Automation RESTful، يجب أن تأخذ في الاعتبار متطلبات الأمان للحصول على الوصول، وكذلك تحديد خدمات الويب التي يجب استخدامها، بالإضافة إلى الأساليب المدعومة المقابلة وهياكل الحمولة المتوقعة.

حول الموارد في واجهات برمجة تطبيقات Oracle Sales Automation RESTful

يوفر Oracle Sales Automation مجموعة من موارد REST للوحدات القياسية والمخصصة.

أحد المفاهيم المهمة في أي واجهة برمجة تطبيقات RESTful هو المورد. المورد هو كائن من نوع (على سبيل المثال، الفرص) والبيانات المرتبطة والعلاقات مع الموارد الأخرى ومجموعة من الأساليب التي تعمل عليه. يتم تنظيم هذه الموارد بطريقة هرمية تتضمن:

  • المورد الأساسي: يتوافق مع كائن منطقي، مثل فرصة مبيعات أو فرصة تسويقية.

  • المورد (الموردون) الفرعي: هذه هي الموارد التي تنتمي إلى مورد رئيسي؛ على سبيل المثال جهة اتصال لفرصة مبيعات.

  • مورد قائمة القيم: قائمة بالقيم الصالحة التي يمكن استخدامها عند تعيين قيمة لحقل. يوجد نوعان: بحث (قائمة ثابتة) أو ديناميكي (على أساس السياق).

في واجهة برمجة تطبيقات Oracle Sales Automation RESTful، يوجد نوعان من الموارد: مورد واحد أو مورد مجموعة. يمكن أن يمثل المورد الواحد كيانًا واحدًا مثل الموظف أو أمر الشراء، بينما يمكن أن يكون مورد التحصيل أكثر شمولاً مثل قائمة الموظفين أو قائمة أوامر الشراء التي يمكن تقسيمها إلى صفحات.

حول دعم REST للوحدات المخصصة

يتضمن Oracle Sales Automation كائنات قياسية تمثل العديد من احتياجات الأعمال وسيناريوهاتها. ومع ذلك، بالإضافة إلى الكائنات القياسية، يمكنك استخدام أداة Application Composer لتكوين كل من الكائنات المخصصة ذات المستوى الأعلى والكائنات المخصصة الفرعية إذا كانت لديك حاجة عمل فريدة.

يعد Application Composer أداة مستندة إلى المستعرض يمكن لمحللي الأعمال والمسئولين (وليس المطورين فقط) استخدامها لتخصيص Oracle Sales Automation. باستخدام هذه الأداة، يمكنك إجراء أنواع تغييرات نموذج البيانات التي تم إجراؤها في الماضي فقط من قبل المطورين. في أداة Application Composer، يمكنك إجراء تغييرات بشكل سريع وتصبح متاحة للاستخدام على الفور دون الحاجة إلى تسجيل الدخول مرة أخرى إلى التطبيق، ويتضمن ذلك تكوين كائنات مخصصة يمكن إضافتها إلى واجهة برمجة تطبيقات Oracle Sales Automation RESTful.

تلميحات الأداء

للحصول على أفضل أداء من واجهات برمجة تطبيقات REST لـ Oracle Fusion Sales Cloud، اتبع هذه النصائح.

استعلم عن البيانات المطلوبة فقط. على سبيل المثال، في حالة الاستعلام عن خدمة REST لفرصة المبيعات، ستكون البيانات المنقولة كبيرة جدًا وستواجه وقت استجابة مطولًا. يمكنك تقصير وقت الاستجابة هذا إذا:
  • استعلم فقط عن البيانات التي تحتاجها.
  • استعلم عن البيانات فقط، وليس بيانات التعريف.
على سبيل المثال، إدخال الاستعلام
salesApi/resources/latest/opportunities
سيتم إرجاع حمولة كبيرة، أثناء إدخال الاستعلام
salesApi/resources/latest/opportunities?fields=Name,OptyNum&onlyData=true
سيؤدي ذلك، لأنك قمت بتضييق معايير الاستعلام، إلى إرجاع حمولة أصغر.

البحث عن موارد RESTful باستخدام نقاط الانتهاء "وصف"

يمكنك الحصول على تفاصيل محددة حول واجهات برمجة تطبيقات Oracle Sales Automation RESTful المختلفة عن طريق إرسال طلب HTTP GET يُرجع كائن JSON يحتوي على معلومات المورد وبيانات التعريف التكميلية.

للحصول على معلومات حول إصدار معين من واجهة برمجة التطبيقات:
  1. قم بتسجيل الدخول إلى Oracle Sales Automation كمسؤول مبيعات.
  2. يعرض عنوان URL الذي يتم عرضه بعد تسجيل الدخول اسم الخادم ورقم المنفذ لطبعة Oracle Sales Automation:
    على سبيل المثال، إذا كان عنوان URL هو http://˂crm_server:PortNumber˃/customer/faces/CrmFusionHome، فإن اسم الخادم هو crm_server ورقم المنفذ هو PortNumber.

    لاحظ اسم الخادم ورقم المنفذ اللذين تستخدمهما في الخطوات المتبقية.

  3. قم بتوجيه مستعرض الويب إلى عنوان URL لمورد واجهة برمجة التطبيقات للحصول على بيانات تعريف واجهة برمجة التطبيقات الخاصة بطبعة Oracle Sales Automation:

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

    حيث يمثل salesAPI اسم API لحاوية التطبيق. ستؤدي استجابة الخادم إلى إرجاع كائن JSON يحتوي على مصفوفة من عناصر الكائنات، حيث يمثل كل عنصر إصدارًا معينًا من واجهة برمجة التطبيقات؛ على سبيل المثال، فيما يلي جزء من مصفوفة النتائج مع معلومات حول عنصر واحد:

    {
        "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. إذا أردت رؤية جميع الكائنات المعروضة بواسطة إصدار معين من واجهة برمجة التطبيقات، فيمكنك الوصول إلى نقطة انتهاء "وصف" الخاصة بها، مع تحديد الإصدار المطلوب في عنوان URL:

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

    أو يمكنك أيضًا الحصول على معلومات حول إصدار واجهة برمجة التطبيقات "الأحدث":

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

    سيؤدي ذلك إلى إرجاع كائن JSON طويل يحتوي على أحدث إصدار من كائنات Oracle Sales Automation المدعومة في واجهة برمجة التطبيقات (API) والكائنات الفرعية الخاصة بها ووصف شامل لجميع الأساليب والمعلمات وقيم الإرجاع المدعومة، بالإضافة إلى معرفات URI لمورد الكائن.

البحث عن موارد RESTful المقترنة بالكائنات المخصصة

للعثور على معرفات URI للموارد للكائنات المخصصة Oracle Sales Automation، اتبع الخطوات التالية:

  1. تنقل إلى محرر التطبيقات (يجب تسجيل الدخول كمسؤول مبيعات أو مسئول تطبيق إدارة علاقات العملاء أو مستشار تنفيذ التطبيق).
  2. انقر على كائنات مخصصة لعرض قائمة بالكائنات المخصصة في جدول الكائنات.
  3. لعرض معرف URI لكائن محدد، في عمود مورد REST، انقر على ارتباط الخدمة المطابق لذلك الكائن.

    تلميح:

    يمكنك قص عنوان URI ولصقه من شريط العناوين في المتصفح.

  4. (اختياري) لعرض وصف كائن مخصص محدد، في عمود مورد REST، انقر على الارتباط وصف المطابق لذلك الكائن.

    ملاحظة:

    يمكنك إلحاق /describe بنهاية معرف URI للحصول على وصف كائن مخصص.

الحصول على نقاط نهاية الخدمة لـ RESTful Web Services

يمكنك استنتاج اسم نقطة انتهاء Oracle Sales Automation RESTful Web Service عن طريق تحديد اسم الخدمة بدلاً من الكلمة الأساسية "describe" في عنوان URL لواجهة برمجة التطبيقات.

للبدء، اتبع الخطوات التالية:
  1. افتح المستعرض وقم بالوصول إلى عنوان URL لنقطة الانتهاء. إذا كانت هذه هي المرة الأولى التي تقوم فيها بفتحه، فستتم مطالبتك ببيانات اعتماد مستخدم Oracle Sales Automation.
    على سبيل المثال، في الواجهة البرمجية للتطبيق لخدمة REST للإصدار 12 من Oracle Sales Automation، للوصول إلى نقطة انتهاء خدمة الفرص لأحدث إصدار لواجهة برمجة التطبيقات، يكون عنوان URL هو:

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

  2. (اختياري) إذا أردت الحصول على معلومات إضافية حول مورد معين، فيمكنك استخدام عنوان URL وصف المورد للحصول على بيانات تعريف إضافية تشتمل على حقول وإجراءات يمكن اتخاذها وكائنات فرعية وقائمة بموارد القيم.
    على سبيل المثال، في الواجهة البرمجية للتطبيق لخدمة REST للإصدار 12 من Oracle Sales Automation، في نقطة نهاية خدمة الفرص، يكون عنوان URL الوصف هو:

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

    تتضمن الواجهة البرمجية للتطبيق لخدمة Oracle Sales Automation REST نقاط انتهاء خدمة الويب 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 وهياكل البيانات المنقولة

توفر خدمة الويب RESTful لكل كائن Oracle Sales Automation قياسي العديد من عمليات التكوين والقراءة والتحديث والحذف (CRUD).

يمكنك تنفيذ الأساليب القياسية التالية للتفاعل مع مورد مفرد أو مجموعة موارد من خلال عناوين URL الخاصة بها:

الأسلوب متاح لمورد مفرد متاح لمجموعة الموارد
إحضار ص ن
إرسال ن ص
تصحيح ص ن
حذف ص ن

حول أسلوب الإحضار

استخدم هذا الأسلوب للاستعلام عن المعلومات واسترجاعها. على أن المعلمات المستخدمة في الاستعلام لتنقيح البحث أو تضييق نطاق النتائج في مورد مفرد تختلف عن تلك المستخدمة في مجموعة الموارد.

معاملات كل من الموارد الفردية وموارد التجميع

يتم استخدام المعلمات التالية في أسلوب الاستعلام عن مورد مفرد بالإضافة إلى مورد تجميع:

المعلمة صيغة الوصف
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، تشتمل هذه الدالة على معلمة Name يمكن تعيين قيمتها على Auto. يقوم هذا الاستدعاء باسترجاع كل فرص المبيعات التي يمتلكها المستخدم الحالي ويبدأ اسمه بـ "آلي".

dependency

dependency=<attr1>=<val1>

يُستخدم لتتالي موارد قائمة القيم. على سبيل المثال، إذا كان للمورد Location حقل State، فسيتم اشتقاق هذه القيم من مورد States آخر يعرض قائمة بالدول لبلد معين (موقع). إذا كان الموقع على سبيل المثال: الولايات المتحدة والولاية هي كاليفورنيا. يحتوي مورد الولايات على قائمة بجميع الولايات المتحدة، ولكن إذا قام المستخدم في صفحة الويب بتغيير المنطقة اللغوية إلى البرازيل، فستكون طريقة استرداد جميع الولايات البرازيلية بمكالمة كهذه:

States?dependency=Country=BR

حول طريقة الإرسال

استخدم هذه الطريقة لتكوين عنصر جديد. عنوان نوع وسائط الطلب هو:

application/vnd.oracle.adf.resourceitem+json

على سبيل المثال، لتكوين فرصة مبيعات جديدة ضمن مورد Opportunities، يقوم الطلب بتمرير معلمة اسم الفرصة الجديدة في كائن JSON:

{
"Name" : "New Opportunity Name"
}

نص الاستجابة لكائن JSON الذي تم إرجاعه بواسطة طلب POST سيكون على النحو التالي:


{
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، يقوم طلب 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، يجب تقديم طلب DELETE مباشرةً إلى معرف URI الخاص بمورد Opportunity الفرعي المطلوب حذفه، دون تمرير أي معلمة إليه:

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، يشتمل مورد leads ضمن https://<crm_server:portNumber>/salesApi/resources/latest/describe/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)، وبشكل اختياري مصفوفة بمعلمات المدخلات للإجراء المخصص (أي leadId).

عادة ما يحتوي نص JSON لطلب POST على:

{
"$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 على نتيجة أسلوب الإجراء المخصص في حقل "النتائج".

حول الدعم الدفعي

لتحسين الأداء، يمكن دمج عمليات متعددة في طلب HTTP واحد عن طريق إرسال كائن JSON يحتوي على حقل بالاسم: "parts" كصفيف كائنات. يحتوي كل كائن داخل المصفوفة على معرف فريد ومسار نسبي للمورد وعملية وحمولة اختياريًا.

مخطط JSON لطلب HTTP هو:


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

على سبيل المثال، سيقوم الطلب التالي بسحب موظف موجود وتحديث موظف آخر:


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 والحصول على البيانات المطلوبة، يمكنك استخدام أداة سطر أوامر cURL لنقل البيانات من خادم أو إليه باستخدام أحد البروتوكولات المدعومة مثل HTTP أو HTTPS.

في هذا المثال، سنستخدم أداة cURL للوصول إلى واجهة برمجة تطبيقات RESTful:
  1. تأكد من وجود عنوان URL صالح (نقطة انتهاء) لـ REST، على سبيل المثال في الإصدار 12 من Oracle Sales Automation، نقطة انتهاء مورد accounts هي:

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

  2. افترض أن تكون صلاحيات الأمان لديك مفيدة.
  3. تأكد من تثبيت أداة cURL، وبخلاف ذلك:
    1. في المستعرض، انتقل إلى صفحة cURL الرئيسية على http://curl.haxx.se/download.html وانقر فوق تنزيل في قائمة التنقل اليسرى.
    2. في صفحة إصدارات وتنزيلات cURL، حدد موقع الإصدار الذي يدعم SSL من برنامج cURL المطابق لنظام التشغيل لديك، وانقر على الارتباط لتنزيل الملف المضغوط، ثم قم بتثبيت البرنامج.
    3. انتقل إلى صفحة شهادات cURL CA على http://curl.haxx.se/docs/caextract.html وقم بتنزيل حزمة شهادات SSL CA ca-bundle.crt في المجلد الذي قمت بتثبيت cURL فيه.
    4. افتح نافذة أوامر، وانتقل إلى الدليل الذي قمت بتثبيت cURL، وقم بتعيين متغير بيئة cURL، CURL_CA_BUNDLE، إلى موقع حزمة شهادات *CA لجهة إصدار شهادات SSL. على سبيل المثال:
      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. (اختياري) يمكنك استخدام معرف URI /describe للحصول على بيانات تعريف مورد مثل:
    $ 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" ]
    } ]
    }
    ...

    من بيانات التعريف، يمكنك ملاحظة أنه يمكنك إصدار أمر POST على مورد /accounts لتكوين مورد.