الوحدة في هذا المقال: Message Monitor
اعثر على أي رسالة في SAP CPI بـ Message ID أو Correlation ID
من أين تأتي معرّفات Message ID وCorrelation ID وApplication ID في SAP CPI، وكيف تبحث عنها في شاشة المراقبة وفي API، وكيف تفتح رسالة والرسائل المرتبطة بها.

يخبرك شريك بأن طلبًا فشل ويرسل إليك معرّفًا. هل هو Message ID، أم Correlation ID، أم رقم الطلب الخاص به؟ وأي iFlow من iFlows لديك عالجه؟ في SAP Cloud Integration (SAP CPI) لكل معرّف من هذه المعرّفات معنى مختلف، ولكل منها طريقة مختلفة للعثور عليه.
يشرح هذا المقال المعرّفات الثلاثة، وكيف تبحث عنها في شاشة المراقبة الخاصة بـ SAP وفي API الخاصة بها، وكيف تجعل رسائلك أسهل في العثور عليها، وكيف تفتح أي رسالة، مع الرسائل المرتبطة بها، في خطوة واحدة.
Message ID وCorrelation ID وApplication ID
- Message ID: معرّف سجل معالجة رسالة واحد (MPL). داخل الـ iFlow تحمله الترويسة
SAP_MessageProcessingLogID، ويعيده مرسِل HTTPS إلى المستدعي في ترويسة استجابة بالاسم نفسه. - Correlation ID: تشترك فيه سجلات الرسائل التي تنتمي إلى بعضها، مثل رسالة والرسائل التي تمرّرها عبر ProcessDirect أو JMS. وتحمله الترويسة
SAP_MplCorrelationId. - Application ID: مفتاح العمل الخاص بك، مثل رقم الطلب، ويُضبط في الترويسة
SAP_ApplicationID. وتعرضه شاشة المراقبة ويمكنها البحث عنه.
عندما يرسل إليك أحدهم معرّفًا، فإن Message ID يجد رسالة واحدة، وCorrelation ID يجد السلسلة كلها، وApplication ID يجد الرسالة التي يتحدث عنها بمصطلحات عمله هو.
البحث في شاشة المراقبة الخاصة بـ SAP
- افتح Monitor Message Processing.
- وسّع النطاق الزمني ليشمل وقت تنفيذ الرسالة: فالرسالة الواقعة خارج النطاق المختار لا تظهر.
- أدخل المعرّف في حقل البحث، أو اختر الـ iFlow وحالةً أولًا لتضييق القائمة.
- افتح الرسالة لترى سجلها وخطأها، وتتبّعها إن كانت قد تُتبِّعت خلال الساعة الأخيرة.
البحث باستخدام API
تقرأ OData API الخاصة بـ Cloud Integration السجلات نفسها. وهي مفيدة في السكربتات وأدوات الدعم، ولا تعتمد على النطاق الزمني لشاشة المراقبة:
GET https://<tenant>/api/v1/MessageProcessingLogs('<Message ID>')
GET https://<tenant>/api/v1/MessageProcessingLogs?$filter=CorrelationId eq '<Correlation ID>'&$orderby=LogStart
GET https://<tenant>/api/v1/MessageProcessingLogs?$filter=ApplicationMessageId eq '<your ID>'تحتاج الاستدعاءات إلى مستخدم يملك صلاحيات المراقبة على المستأجر.
اجعل رسائلك سهلة العثور عليها
لا يعني Message ID ولا Correlation ID شيئًا لأصحاب العمل. اكتب مفتاح العمل في السجل بنفسك: بوصفه Application ID، وبوصفه خاصية ترويسة مخصصة (custom header property)، تعرضها شاشة المراقبة ويمكنها البحث عنها:
import com.sap.gateway.ip.core.customdev.util.Message
def Message processData(Message message) {
def orderId = message.getProperty("orderId") as String
// Shown and searchable in the monitor as a custom header property.
messageLogFactory.getMessageLog(message)?.addCustomHeaderProperty("OrderId", orderId)
// Shown in the monitor as the message's Application ID.
message.setHeader("SAP_ApplicationID", orderId)
return message
}وللقيم التي يجب أن تنتقل بين iFlows، يشرح مقال ترويسات ProcessDirect وJMS ما الذي يعبر كل رابط.
افتح أي رسالة من المصمم
- في المصمم، انقر زر "Kitegra" واختر "سجلات الرسائل". يُفتح عارض السجلات في تبويب جديد؛ أبقِ تبويب المصمم مفتوحًا، لأن العارض يقرأ من SAP من خلاله.
- الصق المعرّف في المربع المعنون "Message ID أو Correlation ID" واختر "بحث". تُفتح هناك رسائل أي iFlow في المستأجر.
- اقرأ الرسالة في تبويباتها: "الملخص"، و"الـ body والـ headers"، و"الـ Adapter"، و"المحفوظة"، و"المرفقات".
- افتح تبويب "التسلسل الزمني": يسرد كل رسالة تشترك في Correlation ID نفسه، مع الـ iFlow الخاص بها وحالتها وبدايتها ومدتها. ولا يحتاج إلى تتبّع.
- وللتصفح بدلًا من ذلك، صفِّ حسب الـ iFlow (أو "كل الـ iFlows")، وحسب الحالة، وحسب وقت "من" و"إلى".
وفي لوحة "الرسائل" لأي iFlow مفتوح، ينسخ "نسخ المعرّف" معرّف الرسالة، ويفتح "فتح في مراقب الرسائل في SAP" صفحة SAP الخاصة بها. ولتتبّع رسالة عثرت عليها، اطّلع على تتبّع رسالة خطوة بخطوة؛ ولإنشاء رسالة عن قصد، اختبر iFlow بمرسِل HTTPS باستخدام مفتاح خدمة.
كيف يساعدك Kitegra
عارض السجلات جزء من Message Monitor في Kitegra. يُعرض محتوى الرسائل في الصفحة، ولا يُخزَّن ولا يُرسل إلى Kitegra أبدًا.
تحتسب كلٌّ من Helper وMessage Monitor وiFlow Inspector وiFlow Docs عدد iFlows التي تستخدمها عليها: 5 لكل وحدة بلا حساب، و50 في خطة Free، و100 في خطة Starter، و300 في خطة Pro؛ وتمنح خطة Startup Team كل عضو 300، وخطتا Growth Team وScale Team بلا حد. ولا يحتسب Toolbox وميزات مساحة العمل الإضافية أي iFlows. وطوال فترة إطلاق Kitegra، تتاح كل الأدوات لكل من سجّل الدخول، حتى على خطة Free. قارن بين الخطط.
جرّبها في الـ iFlow التالي
تعرّف على ما يضيفه Kitegra حول مصمم SAP Integration Suite، أو اطّلع عليه مع بقية وحدات Kitegra.
الأسئلة الشائعة
ما الفرق بين Message ID وCorrelation ID في SAP CPI؟
يعرّف Message ID سجل معالجة رسالة واحد. أما Correlation ID فتشترك فيه سجلات الرسائل التي تنتمي إلى بعضها، مثلًا عبر ProcessDirect أو JMS.
أين أجد Message ID لاستدعاء HTTPS؟
في ترويسات الاستجابة: يعيد مرسِل HTTPS الترويسة SAP_MessageProcessingLogID إلى المستدعي.
لماذا لا تجد شاشة المراقبة Message ID الخاص بي؟
في الغالب لأن النطاق الزمني ضيق جدًا. وسّعه ليشمل وقت تنفيذ الرسالة، أو اقرأ السجل عبر API.
هل يمكنني البحث عن رسائل SAP CPI برقم الطلب الخاص بي؟
نعم، إذا كتبه الـ iFlow في السجل، مثلًا بوصفه SAP_ApplicationID أو بوصفه خاصية ترويسة مخصصة.
هل يحتاج عارض السجلات إلى تتبّع؟
لا. العثور على رسالة وملخصها وتسلسلها الزمني يعمل دونه. أما الأجسام والترويسات قبل كل خطوة فتحتاج إلى رسالة نُفّذت بمستوى TRACE خلال الساعة الأخيرة.
هل يرى Kitegra الرسائل التي أفتحها؟
لا. يُعرض محتوى الرسائل في الصفحة، ولا يُخزَّن ولا يُرسل إلى Kitegra أبدًا.