مثال : عملية طلب آخر قراءة لأجل Itron

يوفر هذا القسم مثالاً لأمر غير متزامن، وهو أمر "طلب آخر قراءة" المدعوم بواسطة موفق Itron OpenWay.

يحتوي تعريف Itron www.itron.com.ami.2008.10.data.wsdl على سلسلة من الأوامر لعملية "طلب آخر قراءة". يقوم الموفق لجيت واي الشبكات الذكي من أجل Itron OpenWay ببدء العملية من خلال استدعاء طريقة ContingencyReadByEndpoints. ويحتوي الرد على "معرف الرمز المميز للطلب" الذي يحدد السير بالكامل وستتم مشاركته بواسطة الاتصالات اللاحقة. ومن جانب Itron، يتم تكوين مهمة لتحصيل الاستهلاك والإجراءات. لإبلاغ المتصل (جيت واي الشبكات الذكي) أنه يتم بدء المهمة، يقوم Itron بإرسال طلب StatusChanged (محدد في www.itron.com.ami.2008.10.common.wsdl) يحتوي على "الحالة = تم البدء". ويقوم Itron بإرسال طلب StatusChanged آخر لإخطار جيت واي الشبكات الذكي أن عملية تجميع الاستهلاك قيد التنفيذ. وأثناء تحصيل الاستهلاك، يقوم Itron بإرسال طلب واحد أو أكثر من طلبات DataArrived إلى جيت واي الشبكات الذكي. وعندما ينتهي Itron من إنشاء الطلبات الداخلية للاستهلاك، يقوم بإرسال طلب StatusChanged نهائي إلى جيت واي الشبكات الذكي. يقوم إخطار الإتمام هذا بإبلاغ جيت واي الشبكات الذكي أنه يجب أن يقوم بإرسال GetContingencyReadByEndpointsResult، وهو الرد الذي يحتوي على معلومات حول الأخطاء التي تمت مواجهتها أثناء العملية.

توضح الصورة أدناه سير العملية المستخدَم بواسطة هذا الأمر.

فيما يلي ملخص بالميزات المهمة لعملية تنفيذ جيت واي الشبكات الذكي لهذا الأمر. ويمكن تطبيق العديد من المفاهيم عند إنشاء أمر متزامن مخصص.

نشاط الأمر — طلب آخر قراءة (الفترة الزمنية)

كائن العمل: D1-OnDemandReadInterval

المراحل والخوارزميات

يوضح الجدول التالي بعض الخوارزميات المهمة المستخدمة بواسطة نشاط الأمر "طلب آخر قراءة" (الفترة الزمنية).

حالة المراحل الخوارزميات

التحقق من

الميزات المهمة هنا ليست الخوارزميات الخاصة، ولكنها إمكانية تنفيذ منطق المراجعة على مستوى العملية.

  • D1-VALDEVMC – مراجعة احتواء الجهاز على مكون القياس المناسب: تتأكد الخوارزمية من احتواء الجهاز على مكون قياس واحد على الأقل بحيث يكون نوع مكون القياس مسجل كنوع فترة زمنية

  • D1-VALIDCMD – مراجعة قدرة أنظمة التجميع المركزية على تنفيذ "طلب آخر قراءة" (الفترة الزمنية): تقوم هذه الخوارزمية بالتحقق مما إذا كان نظام التجميع المركزي لديه إمكانية دعم طلب آخر قراءة. وإذا كان الأمر مدعومًا، يتم عرض كائن عمل اتصال صادر.

  • D1-CHKMST – التحقق من القياسات الموجودة: تقوم هذه الخوارزمية بالتحقق من وجود قياسات تامة للفترة الزمنية المحددة في قاعدة البيانات بالفعل.

الاتصال جاهز

  • D1-CODRIOB – إنشاء اتصال صادر للفترة الزمنية OnDemandRead: تقوم هذه الخوارزمية بإنشاء كائن عمل اتصال صادر استنادًا إلى معلمات الخوارزمية و"دور المعالجة". ستقوم الخوارزمية بالبحث عن كائن عمل الاتصال الصادر المحدد لمعلمة "دور المعالجة" وإنشاء مثيل لكائن العمل هذا. في حالة كائن العمل هذا، تكون المعلمة هي D1IN ويجب أن تقوم بإنشاء مثيل لكائن العمل D8-ReadIntervalDR.

بمجرد إنشاء سجل اتصال صادر، يقوم كائن عمل "النشاط" بالانتقال من حالة "الاتصال جاهز" إلى حالة "الاتصال قيد التنفيذ". عندما يصبح الاتصال الصادر تامًا، يقوم بنقل "النشاط" إلى الحالة الافتراضية التالية، وهي "الاتصال جاهز" (ينتقل النشاط من الاتصال قيد التنفيذ مرة أخرى إلى الاتصال جاهز). وسيقوم الاتصال الصادر أيضًا بتعيين قيمة إشارة isOnDemandReadComplete في كائن عمل النشاط، في هذه الحالة، مشيرًا إلى إنشاء الاتصال الصادر لدور معالجة محدد. إذا كانت الحالة هي صواب، تنتقل المعالجة إلى الخوارزمية التالية.

  • D1-CODRSRTOB – إنشاء اتصال صادر لنتائج طلب آخر قراءة استنادًا إلى إشارة الإتمام: هذه الخوارزمية هي الخوارزمية الثانية في هذه الحالة المسئولة عن إرسال اتصالات صادرة. إذا كانت إشارة الإتمام التي تم تمريرها كمعلمة هي صواب، ستقوم بإنشاء الاتصال الصادر الثاني. في هذا المثال، يجث أن تقوم بإنشاء مثيل من أجل D8-ReadOnDemandReadResultDR لإرسال طلب ثانٍ إلى Itron لنتائج عملية "قراءة الطوارئ".

قيد الانتظار للقياس

  • D1-RIINTM – استرجاع القياسات الأولية للفترة الزمنية: تقوم هذه الخوارزمية باسترجاع أحدث بيانات القياس الأولية لكل مكون قياس فترة زمنية لفترة القياس المطلوبة.

اتصال صادر — Itron - قراءة الطوارئ (الفترة الزمنية)

كائن العمل: D8-ReadIntervalDR

المخطط

أجزاء المخطط التي تحتوي على بيانات القياس المنقولة لطلب خدمة الويب واتصالات الاستجابة هي عنصر sendDetail (المكون باستخدام منطقة بيانات D8-ContingencyReadRequestDR) وعنصر responseDetail (المكون باستخدام منطقة البيانات D8-ContingencyReadResponDtlDA). تستخدم ملفات XSL المستخدمة لإنشاء أو فك ترميز XML المطابق لبنية Itron هذه العناصر كأساس.

المراحل والخوارزميات

يوضح الجدول التالي بعض الخوارزميات المهمة المستخدمة بواسطة الاتصال الصادر "قراءة الطوارئ".

حالة المراحل الخوارزميات

التحقق من

  • D1-VALCOMTP – مراجعة نوع الاتصال: تتأكد هذه الخوارزمية من ملء نوع الاتصال في الاتصال.

في انتظار الاستجابة

  • D8-PSDMRSCDR – Itron - ملء تفاصيل الإرسال للمسار المباشر ContingencyReadByEndpoints: تقوم هذه الخوارزمية بملء العنصر sendDetail بالوحدات المطلوبة لمدخلات خدمة الويب.

  • D8-COUTMINDR – Itron - إنشاء قراءة طوارئ لرسالة صادرة (فترة زمنية): تحدد هذه الخوارزمية الرسالة الصادرة الصحيحة للإنشاء استنادًا إلى دور المعالجة المدخل. سيتم تخزين الرد من نظام التجميع المركزي في عنصر responseDetails وسيتم إنشاء قيود السجل لإنشاء الرسالة الصادرة والنتيجة (سواءً نجاح أو فشل).

خطأ في الاستجابة

  • D8-RBORINTER – Itron - إعادة محاولة كائن عمل فترة زمنية للقراءة به خطأ: توفر هذه الخوارزمية طريقة لإعادة محاولة الاتصال في حالة خطأ.

تام

  • D1-UCFLAGTPA – تحديث إشارة إتمام طلب آخر قراءة وتحويل النشاط الرئيسي: في حالة استيفاء المتطلبات، تقوم هذه الخوارزمية بتعيين إشارة الإتمام في النشاط الرئيسي إلى "صواب" وتحويله إلى الحالة التالية.

الاتصال الوارد — Itron - StatusChanged

كائن العمل: D8-StatusChanged

يقوم كائن العمل هذا بمعالجة طلبات StatusUpdate الواردة. وهو يحتوي على معرف الرمز المميز للطلب الذي تم إنشاؤه بواسطة الطلب الأولي. وعندما يتلقى قيم مخطط "الحالة = تام" وينتج عن ذلك الحالة "مُلغى" أو "نجاح"، يقوم بتشغيل الأمر التالي في "النشاط". بالنسبة لـ On-DemandRead، يكون الأمر التالي هو GetContingencyReadByEndpointsResult.

المخطط

بعكس الاتصالات الأخرى التي تحتوي على العنصر sendDetail أو العنصر responseDetail، يحتوي كائن العمل هذا على عنصر مدخلات بعناصر فرعية تقوم بالربط بتلك الموجودة ضمن تعريف StatusChanged XSD.

المراحل والخوارزميات

يوضح الجدول التالي بعض الخوارزميات المهمة المستخدمة بواسطة الاتصال الوارد "قراءة تغيير الحالة".

حالة المراحل الخوارزميات

التحقق من

  • D8-IDNPOCAA – بحث عن اتصال صادر رئيسي لاتصال وارد غير متزامن: تقوم هذه الخوارزمية بالبحث عن الاتصال الصادر الأولي المرتبط بالاتصال الوارد الحالي باستخدام معرف الرمز المميز للطلب.

تقييم الاستجابة

  • D8-EVALSTCHG – Itron - تقييم الاستجابة من أجل StatusChanged: تقوم هذه الخوارزمية بتنفيذ مهمة استنادًا إلى قيم طلب StatusChanged قيد الوصول. إذا كانت "الحالة" هي "تام" والنتيجة هي نجاح أو فشل، يتم إكمال الاتصال الصادر الرئيسي. ويؤدي هذا إلى تنبيه النشاط لبدء الاتصال الصادر التالي.

اتصال صادر — Itron - نتيجة طلب آخر قراءة

كائن العمل: D8-ReadOnDemandReadResultDR

هذا هو ثاني أحد طلبين صادرين ضمن الواجهة البرمجية للتطبيق من أجل قراءة طوارئ Itron. يقوم الطلب الصادر بإرسال معرف الرمز المميز للطلب. تحتوي الاستجابة على معلومات الخطأ التي تم تجميعها بواسطة ملقم Itron أثناء تنفيذ عملية "قراءة الطوارئ".

المخطط

أجزاء المخطط التي تحتوي على بيانات القياس المنقولة لطلب خدمة الويب واتصالات الاستجابة هي عنصر sendDetail (المكون باستخدام منطقة بيانات D8-ReadODRResultRequestDR) وعنصر responseDetail (المكون باستخدام منطقة البيانات D8-ReadODRResultResponseDR). تستخدم ملفات XSL المستخدمة لإنشاء أو فك ترميز XML المطابق لبنية Itron هذه العناصر كأساس.

المراحل والخوارزميات

يوضح الجدول التالي بعض الخوارزميات المهمة المستخدمة بواسطة الاتصال الصادر "نتيجة طلب آخر قراءة".

حالة المراحل الخوارزميات

في انتظار الاستجابة

  • D8-PSDODRRDR – Itron - ملء تفاصيل إرسال نتيجة طلب آخر قراءة: تقوم هذه الخوارزمية بملء عنصر sendDetail للرسالة الصادرة. بشكلٍ أساسي، يتكون هذا من معرف الرمز المميز للطلب.

  • D8-CODRROBDR – إنشاء رسالة صادرة لنتيجة طلب آخر قراءة: تحدد هذه الخوارزمية الرسالة الصادرة الصحيحة للإنشاء استنادًا إلى دور المعالجة المدخل. سيتم تخزين الرد من نظام التجميع المركزي في عنصر responseDetails وسيتم إنشاء قيود السجل لإنشاء الرسالة الصادرة والنتيجة (سواءً نجاح أو فشل).

تقييم الاستجابة

  • D8-EVODRRSLT – إنشاء رسالة صادرة لنتيجة طلب آخر قراءة: تقوم هذه الخوارزمية بتقييم الاستجابة من Itron وتحديد ما إذا كان الأمر ناجحًا أم فاشلاً.

  • D8-VDVCMCDR – مراجعة ما إذا كان الجهاز يحتوي على مكون القياس المناسب: تقوم هذه الخوارزمية بإجراء فحص لضمان وجود مكون قياس صحيح للقراءة.

سكريبت الخدمة: Itron - طلب DataArrived

يقوم سكريبت الخدمة هذا المستند إلى Groovy بمعالجة طلبات DataArrived الواردة. تحفظ بيانات القياس المنقولة في مواقع تخزين الملفات (بما في ذلك حِزم "تخزين الكائنات على الشبكة السحابية لأوراكل" في حالة التنفيذ بالشبكة السحابية) استنادًا إلى التكوين.

المخطط

يقوم المخطط بالربط برسالة Itron DataArrived بشكلٍ وثيق. وهو يتضمن منطقة البيانات D8-DataArrived.

الخطوات

الخطوة 10- تحرير البيانات – استدعاء طريقة Groovy الرئيسية

توضح هذه الخطوة كيفية تشغيل سكريبت Groovy من كائنات أخرى من إطار عمل تطبيق الخدمات والمرافق من أوراكل. وهي طريقة مشابهة للطريقة الرئيسية في اللغات البرمجية الأخرى. في هذه الحالة، يتم استدعاؤها بواسطة طريقة "خدمة الويب الواردة".

الخطوة 20 - عمليات استيراد Groovy

تقوم هذه الخطوة باستيراد الفئات الأخرى المطلوبة بواسطة السكريبت.

الخطوة 30 – عناصر Groovy

  1. قم بالبحث عن كائن "التكوين الرئيسي"

  2. استخدم التكوين الرئيسي للبحث عن تفاصيل "تخزين الملفات"

    1. ابحث عن نوع "موفق الملفات"

    2. قم باحتساب اسم ملف باستخدام سكريبت إنشاء تم تكوينه

    3. قم باحتساب عنوان URL للملء باستخدام الفترة الزمنية واسم الملف والتفاصيل الأخرى

  3. استخدم خدمة الأعمال FileStorageAdapter لحفظ الملف بالموقع المستهدف.

ملفات XSL لمرسل الرسالة

تقوم الرسائل الصادرة المنشأة بواسطة الاتصالات الصادرة لطلب آخر قراءة باستخدام ملفات XSL التالية:

ContingencyReadByEndpoints

  • ملف XSL للطلب: D8-ContinegencyReadByEndpointsRequest.xsl
  • ملف XSL للاستجابة: D8-ContingencyReadByEndpointsResponse.xsl

GetContingencyReadByEndpointsResult

  • ملف XSL للطلب: D8-GetContingencyReadByEndpointsResultRequest.xsl
  • ملف XSL للاستجابة: D8-GetContingencyReadByEndpointsResultResponse.xsl

لمزيد من المعلومات حول إنشاء بيانات مرسِلي الرسائل، ارجع إلى إنشاء بيانات مرسلي الرسائل.

خدمات الويب الواردة

تستخدم عملية طلب آخر قراءة من أجل Itron خدمات الويب الواردة التالية.

D8-RequestStatusChangedService

  • اسم العملية: StatusChanged
  • اسم المخطط: Itron — كائن عمل تغيير الحالة
  • ملف XSL للطلب: D8-RequestStatusChangedServiceRequest.xsl
  • ملف XSL للاستجابة: D8-RequestStatusChangedServiceResponse.xsl

D8-DataSubscriberService

  • اسم العملية: DataArrived
  • اسم المخطط: Itron — سكريبت طلب DataArrived
  • ملف XSL للطلب: D8-DataSubscriberServiceRequest.xsl
  • ملف XSL للاستجابة: D8-DataSubscriberServiceResponse.xsl