فراخوانی تراکنش ها

تراکنش‌های فراخوانی برای فراخوانی یک یا چند دستور کلاستر روی یک گره هدف استفاده می‌شوند. این شبیه به فراخوانی‌های از راه دور رویه‌ها برای یک دستور تعریف شده در کلاستر است.

به روشی مشابه نوشتن تراکنش‌ها، تراکنش‌های Invoke از تراکنش‌های زمان‌دار و بدون زمان پشتیبانی می‌کنند. برای اطلاعات بیشتر در مورد تراکنش‌های زمان‌دار، لطفاً به بخش اقدامات زمان‌دار و بدون زمان مراجعه کنید.

تراکنش فراخوانی بدون محدودیت زمانی

توالی عملیات یک تراکنش فراخوانی بدون زمان
شکل ۱: تراکنش فراخوانی بدون زمان

فراخوانی درخواست اقدام

جهت: آغازگر -> هدف

مشابه اقدام درخواست خواندن و اقدام درخواست نوشتن، در این اقدام، آغازگر موارد زیر را برای هدف فراهم می‌کند:

  • درخواست‌های فراخوانی : فهرستی از مسیرهای منتهی به دستورات خوشه‌ای، و همچنین آرگومان‌های اختیاری برای دستورات، با نام فیلدهای دستور .
  • درخواست زمان‌بندی‌شده: پرچمی که نشان می‌دهد آیا این اقدام بخشی از یک تراکنش فراخوانی زمان‌بندی‌شده است یا خیر.
  • سرکوب پاسخ: پرچمی که نشان می‌دهد آیا اقدام پاسخ فراخوانی باید سرکوب شود یا خیر.
  • شناسه تعامل : یک عدد صحیح که برای تطبیق اکشن درخواست فراخوانی با اکشن پاسخ فراخوانی استفاده می‌شود.

فراخوانی اقدام پاسخ

جهت: هدف -> آغازگر

پس از اینکه Target اقدام درخواست فراخوانی را دریافت کرد، تراکنش را با یک اقدام پاسخ فراخوانی که شامل موارد زیر است، نهایی می‌کند:

  • پاسخ‌های فراخوانی : فهرستی از پاسخ‌های دستور یا وضعیت برای هر درخواست فراخوانی ارسال شده.
  • شناسه تعامل: یک عدد صحیح که برای تطبیق اقدام پاسخ فراخوانی با اقدام درخواست فراخوانی استفاده می‌شود.

محدودیت‌های فراخوانی بدون محدودیت زمانی

اقدام درخواست فراخوانی (Invoke Request Action) می‌تواند یک گروه‌پخشی (groupcast) باشد، اما در این مورد باید پرچم سرکوب پاسخ (Suppress Response Flag) تنظیم شود. دلیل منطقی این است که در غیر این صورت، شبکه ممکن است با پاسخ‌های همزمان از هر عضو یک گروه مواجه شود.

برای فعال کردن این رفتار، مسیر استفاده شده در لیست درخواست‌های فراخوانی می‌تواند شامل گروه‌ها باشد و در عوض، ممکن است شامل کاراکترهای جایگزین باشد، اما فقط در فیلد Endpoint. علاوه بر این، اگر اقدام به صورت گروهی انجام شود، این تراکنش بدون هیچ پاسخی خاتمه می‌یابد.

تراکنش‌های فراخوانی زمان‌بندی‌شده

مشابه تراکنش‌های نوشتن زمان‌دار، تراکنش‌های فراخوانی زمان‌دار نیز با اقدام درخواست زمان‌دار شروع می‌شوند.

توالی عملیات یک تراکنش فراخوانی زمان‌بندی‌شده
شکل ۲: تراکنش فراخوانی زمان‌بندی‌شده

اقدام درخواست زمان‌بندی‌شده

جهت: آغازگر -> هدف

یک آغازگر، تراکنش را با ارسال این اکشن که شامل موارد زیر است، آغاز می‌کند:

  • Timeout : این تراکنش چند میلی‌ثانیه می‌تواند باز بماند. در طول این مدت، اقدام بعدی ارسال شده توسط آغازگر معتبر در نظر گرفته خواهد شد.

به محض دریافت درخواست زمان‌بندی شده (Timed Request Action)، هدف (Target) باید درخواست زمان‌بندی شده را با یک پاسخ وضعیت (Status Response Action) تأیید کند. به محض اینکه آغازگر (Initiator) یک پاسخ وضعیت (Status Response Action) دریافت کند که هیچ خطایی را گزارش نمی‌دهد، یک درخواست فراخوانی (Invoke Request Action) ارسال خواهد کرد.

فراخوانی درخواست اقدام

همانند اکشن درخواست فراخوانی که قبلاً توضیح داده شد.

فراخوانی اقدام پاسخ

همانند Invoke Response Action که قبلاً توضیح داده شد.

محدودیت‌های فراخوانی زمان‌بندی‌شده

همه دستورات فراخوانی (invoke) می‌توانند در یک تعامل زمان‌بندی‌شده (Timed Interaction) فراخوانی شوند. اقدام درخواست زمان‌بندی‌شده، اقدام درخواست فراخوانی (Invoke Request Action) و اقدام پاسخ فراخوانی (Invoke Response Action) فقط به صورت Unicast هستند و بنابراین نمی‌توانند به عنوان groupcast در تراکنش‌های فراخوانی زمان‌بندی‌شده استفاده شوند.

اکشن درخواست فراخوانی (Invoke Request Action) از استفاده از مسیرها با گروه‌ها و همچنین کاراکترهای جایگزین (wildcards) پشتیبانی می‌کند، اما اکشن پاسخ فراخوانی (Invoke Response Action) از استفاده از کاراکترهای جایگزین (wildcards) پشتیبانی نمی‌کند.