الوحدة في هذا المقال: صندوق الأدوات
أدوات الحمولة في SAP CPI: المقارنة والتحويل وتوليد بيانات الاختبار في المتصفح
قارن بين حمولتين، وحوّل XML وJSON وYAML وCSV بقواعد محوّلات SAP، وولّد حمولات اختبار فيها أعطال، وأدرج مقتطفات Groovy، دون اتصال بالإنترنت وبجوار مصمم iFlow.
يدور نصف العمل على iFlow في SAP Cloud Integration (SAP CPI) حول الحمولة (payload): رسالتان يُفترض أن تتطابقا ولا تتطابقان، وجسم JSON يريده المستقبِل بصيغة XML، ومجموعة رسائل اختبار لمعالجة الأخطاء، وسطر Groovy تكتبه كل أسبوع ولا تتذكره أبدًا. وعادةً ما تنتهي هذه المهام في محرر نصوص ومحوّل على الإنترنت وسكربت من صنعك.
يضع Toolbox في Kitegra هذه المهام في المتصفح، بجوار مصمم iFlow: مقارنة الحمولات، ومحوّل للصيغ، ومولّد لحمولات الاختبار، ومقتطفات Groovy مع مرجع سريع، وHTTP Runner. وكلها تعمل دون اتصال بالإنترنت، باستثناء الطلبات التي ترسلها عبر HTTP Runner. وما تلصقه يبقى في الصفحة، ولا يُخزَّن ولا يُرسل أبدًا.
أين تجد Toolbox
افتح النافذة المنبثقة للإضافة واختر "الأدوات". تفتح قائمة Toolbox كل أداة في تبويب خاص بها: مقارنة الـ payload، ومحوّل الصيغ، ومولّد payload للاختبار، والمقتطفات وورقة المرجع، وHTTP Runner، وiFlow Docs. وعلى أي iFlow، تفتح قائمة مربع Kitegra في شريط أدوات الرسم أيضًا المقتطفات والملاحظات كلوحات داخل الصفحة.
بجوار كل عنصر تحكم رمز (i) صغير يشرح ما يفعله. ولا يحتسب Toolbox أي iFlows ضمن خطتك.
مقارنة الحمولات
الصق حمولتين، أو حمّلهما من ملفين، أو أفلتهما على الصفحة، فتُعلَّم الفروق سطرًا بسطر. وينقلك "السابق" و"التالي" من فرق إلى آخر، مع عدد الفروق كلها.
- تجاهل المسافات: الأسطر التي لا تختلف إلا في المسافات أو علامات الجدولة أو الإزاحة تُعدّ متطابقة.
- توحيد XML: يرتّب السمات، ويتجاهل بادئات مساحات الأسماء (namespace prefixes)، وينسّق إزاحة الجانبين، فلا يبقى إلا التغييرات الحقيقية.
- توحيد JSON: يرتّب المفاتيح وينسّق الإزاحة.
- الفروق فقط: يخفي الأسطر المتطابقة، ويضع مكانها عدد الأسطر المخفية.
- تبديل A و B: ما ظهر مضافًا يظهر محذوفًا.
والحمولة التي ليست XML سليم البنية أو JSON صالحًا تُقارن رغم ذلك، كنص. وفي Message Monitor، يضم عارض الحمولة لخطوة متتبَّعة الزر قارن مع الخطوة التالية، الذي يفتح هذه الصفحة بالجسم قبل تلك الخطوة وبعدها. اطّلع على تتبّع رسالة خطوة بخطوة.
محوّل الصيغ
الصق XML أو JSON أو YAML أو CSV أو أي نص، أو حمّل ملفًا. تُكتشف الصيغة من المحتوى، ولا تُعرض إلا التحويلات المناسبة لها:
- من XML إلى JSON ومن JSON إلى XML، وفق قواعد محوّلات SAP نفسها: الأعضاء
@nameسمات، و$هو نص العنصر، والمصفوفة تكرّر عنصرها. والخيارات هي نفسها التي تضبطها في الـ iFlow: Add XML Root Element وSuppress JSON Root Element والعناصر التي تُكتب دائمًا كمصفوفات. - من CSV إلى JSON أو XML والعكس، مع فاصل يُكتشف تلقائيًا أو تختاره، وصف عناوين، واسم عنصر الصف.
- من YAML إلى JSON ومن JSON إلى YAML.
- من XML إلى XSD مستنتَج، ومن XSD إلى نموذج XML.
- التنسيق المقروء (pretty print) والتصغير (minify) لـ XML وJSON.
- ترميز Base64 وURL وفكّ ترميزهما؛ وتهريب سلاسل XML وJSON وGroovy وإلغاء تهريبها.
استخدام كإدخال يعيد النتيجة إلى مربع الإدخال، لتحوّلها مرة أخرى. وبجوار "تحويل" ثلاثة تبويبات أخرى:
- التحقق يتأكد من أن الإدخال سليم البنية، ويسرد كل مشكلة مع سطرها وعمودها. وإذا أعطيته XSD، فإنه يفحص أيضًا عناصر XML وترتيبها وعددها، والسمات، والأنواع البسيطة. وهو فحص خفيف: لا تُفحص مساحات الأسماء ولا الاستيرادات (imports) ولا التضمينات (includes) ولا مجموعات الاستبدال (substitution groups) ولا المفاتيح.
- بحث واستبدال، بالتعبيرات النمطية (regular expressions) في JavaScript ومجموعاتها.
- معالجة دفعية تحوّل عدة ملفات بالطريقة نفسها وتنزّل النتائج في ملف ZIP واحد. والملف الذي يفشل تحويله يُستبعد ويُذكر في القائمة.
مولّد حمولات الاختبار
معالجة الأخطاء هي أقل أجزاء الـ iFlow اختبارًا، لأن أحدًا لا يملك الرسائل المعطوبة. والمولّد يصنعها من نموذج حقيقي واحد.
- الصق رسالة حقيقية واحدة أو ارفعها: XML أو JSON أو CSV مع صف عناوين.
- راجع جدول الحقول. يُخمَّن نوع كل حقل من قيمته: نص، أو عدد صحيح، أو عدد عشري، أو قيمة منطقية، أو تاريخ، أو تاريخ ووقت، أو بريد إلكتروني، أو عملة، أو دولة، أو UUID، أو null.
- اختر قاعدة لكل حقل: "إبقاء" قيمة النموذج، أو "عشوائي من النوع نفسه"، أو "تسلسل"، أو "اختيار من قائمة" قيم.
- حدّد عدد الحمولات المطلوبة (حتى 1000) ونسبة ما يحمل منها عطلًا.
- اختر أنواع الأعطال وانقر "توليد".
والأعطال هي تلك التي يرفضها المستقبِلون: حقل إلزامي مفقود، وحقل فارغ، ونوع خاطئ، وتاريخ أو بريد إلكتروني أو عملة أو دولة غير صالحة، وكمية سالبة، ومساحة أسماء خاطئة، وXML أو JSON أو CSV معطوب، ومعرّف مكرّر، وحقل زائد، وقيمة null. وتحمل كل حمولة معطوبة عطلًا واحدًا.
النموذج نفسه مع القواعد نفسها والبذرة (seed) نفسها يعطي دائمًا الحمولات نفسها، فيمكن إعادة الاختبار بالبيانات نفسها. ويعطيك تنزيل ZIP ملفًا لكل حمولة، إضافة إلى ملف manifest.json يذكر عطل كل ملف والحقل الذي غيّره. ويكتب تنزيل كملف واحد بصيغة JSON Lines، أو XML وCSV يفصل بين الحمولات فيهما سطر فارغ. أما حفظ كمجموعة بيانات لـ Runner فيسلّم المجموعة إلى HTTP Runner، الذي يمكنه إرسال كل حمولة إلى الـ iFlow وإظهار الردود التي جاءت كما هو متوقع.
مقتطفات Groovy والمرجع السريع
يضم تبويب المقتطفات 32 نمطًا من Groovy لسكربتات Cloud Integration. كُتب كل منها ليوضع داخل processData(Message message)، مع أسماء الأصناف (classes) كاملة فلا حاجة إلى أي import. وهي تغطي قراءة الجسم والترويسات وخصائص التبادل وضبطها، وقراءة الجسم الكبير كتدفق (streaming)، وXmlSlurper وXmlParser وMarkupBuilder، وتحليل XML الآمن من هجمات XXE، وJsonSlurper وJsonBuilder، والقيم القابلة للبحث في المراقبة، والمرفقات في سجل الرسالة، والفشل برسالة خطأ واضحة، وخطأ HTTP في exception subprocess، وبيانات الاعتماد من Secure Store، والبحث في Value Mapping وPartner Directory.
ابحث فيها بالاسم أو الوسم. وإذا كان سكربت مفتوحًا في وضع التعديل في المصمم، يكتب إدراج المقتطف عند المؤشر؛ وإلا فانسخه. ويحتفظ إضافة مقتطفاتك بما يصل إلى 20 مقتطفًا خاصًا بك، تُزامَن مع حسابك في Kitegra عند تسجيل الدخول. لا تضع فيها كلمات مرور أو مفاتيح.
ويسرد تبويب المرجع السريع ما تبحث عنه كل أسبوع: معاملات Simple، وأنماط التاريخ في Java مع أمثلة، ودوال XPath 1.0 تُنفَّذ على نموذج XML، وروابط إلى توثيق SAP وApache Camel. انقر أي مثال لنسخه. أما التعبيرات نفسها فيشرحها مقال تعبيرات Camel Simple في SAP CPI.
ولقراءة السكربتات الموجودة في iFlow، استخدم "شرح السكربتات" في iFlow Docs. فهو يذكر لكل سكربت غرضه، وما يقرؤه، وما يضبطه أو يغيّره، ومنطقه الرئيسي، وواجهات SAP البرمجية (APIs) التي يستخدمها، ومخاطره.
HTTP Runner
يستدعي HTTP Runner نقاط وصول HTTPS في الـ iFlow لديك باستخدام OAuth من مفتاح خدمة (service key) لـ Process Integration Runtime، ويحفظ الطلبات في مجموعات، ويفحص الردود. وفي "معلومات الـ iFlow"، يمكن نسخ كل نقطة وصول كأمر cURL أو فتحها في Runner. والشرح الكامل في مقال اختبار iFlow عبر HTTPS بمفتاح خدمة.
ما الذي تحتفظ به، وما الذي تشمله خطتك
تعمل المقارنة والمحوّل والمولّد والمرجع السريع داخل الصفحة ولا تحتفظ بشيء. أما مقتطفاتك الخاصة، ومجموعات HTTP Runner بلا قيم المصادقة أو المتغيرات السرية، فتُزامَن مع حسابك في Kitegra عند تسجيل الدخول.
الأدوات التي تعمل دون اتصال متاحة في كل الخطط. ويُتاح HTTP Runner باستخدام محدود في خطتي Free وStarter، وكاملًا في خطة Pro وخطط الفرق. وطوال فترة إطلاق Kitegra، تتاح كل الأدوات لكل من سجّل الدخول، حتى على خطة Free. قارن بين الخطط.
جرّبها في الـ iFlow التالي
تعرّف على ما يضيفه Kitegra حول مصمم SAP Integration Suite، أو اطّلع على كل ما يفعله Toolbox.
الأسئلة الشائعة
هل تُرسل حمولاتي إلى أي مكان؟
لا. تعمل المقارنة والمحوّل والمولّد والمرجع السريع داخل صفحة المتصفح. وما تلصقه أو تحمّله لا يُخزَّن ولا يُرسل.
هل يعطي المحوّل النتيجة نفسها التي تعطيها محوّلات SAP؟
يتبع القواعد والخيارات نفسها التي تتبعها محوّلات SAP من JSON إلى XML ومن XML إلى JSON: السمات، ونص العنصر، والمصفوفات، والعنصر الجذر المضاف، وحذف جذر JSON. شغّل الـ iFlow عندما يجب أن تكون النتيجة مطابقة تمامًا.
هل يمكنني تكرار مجموعة اختبار مولَّدة؟
نعم. النموذج نفسه مع القواعد نفسها والبذرة نفسها يعطي دائمًا الحمولات نفسها. وتغيير الأعطال يترك القيم كما كانت.
كيف أُدرج مقتطفًا في سكربت Groovy؟
افتح السكربت في وضع التعديل في المصمم، وضع المؤشر حيث تريد، وانقر "إدراج" على المقتطف. ثم احفظ الـ iFlow بنفسك.
هل يحتسب Toolbox أي iFlows؟
لا. لا يحتسب iFlows سوى Helper وMessage Monitor وiFlow Inspector وiFlow Docs.