ماشین‌های حالت (StateMachines) و جدول StateMachine | UML و Enterprise Architect

ماشین‌های حالت (StateMachines) و جدول StateMachine

توسط admin | گروه مهندسی نرم افزار | 1405/05/19

نظرات 0

ماشین‌های حالت (StateMachines) و جدول StateMachine

عنوان اصلی
Unified Modeling Language (UML)
عنوان ترجمه‌شده
ماشین‌های حالت (StateMachines) و جدول StateMachine
مجموعه
Enterprise Architect — User Guide Series
نویسنده / سازمان
Sparx Systems
نسخه منبع
17.1
تاریخ منبع
2026-05-27
زبان اصلی
انگلیسی
وضعیت حقوقی
حق ترجمه و انتشار توسط کاربر تأیید شده است.
تاریخ ترجمه
2026-08-10 / ۱۴۰۵/۰۵/۱۹
اعتبار ترجمه
ترجمه با کمک هوش مصنوعی

فروش یا انتشار این ترجمه منوط به داشتن مجوز لازم از صاحب حقوق اثر است.

صفحهٔ منبع 38

ماشین‌های حالت (StateMachines)

StateMachineها نشان می‌دهند یک عنصر ــ اغلب یک Class ــ چگونه می‌تواند بین Stateها جابه‌جا شود و رفتار آن را براساس Triggerهای Transition و Guardهای محدودکننده طبقه‌بندی می‌کنند.

عناصر و Connectorهای StateMachine را از صفحات «State» در Diagram Toolbox تولید می‌کنید.

نام‌گذاری

  • StateMachineها پیش‌تر State Diagram نامیده می‌شدند.
  • بازنمایی‌های StateMachine در UML بر Harel State Chart Notation مبتنی‌اند و بنابراین گاهی State Chart نامیده می‌شوند.

جدول‌های حالت

می‌توانید StateMachine را به‌صورت Diagram یا به‌صورت Table در یکی از سه قالب رابطه‌ای نمایش دهید.

انتخاب قالب نمایش

  1. روی پس‌زمینه نمودار راست‌کلیک کرده و «Statechart Editor» را انتخاب کنید.
  2. یکی از گزینه‌های نمایش را انتخاب کنید: Diagram، Table (State-Next State)، Table (State-Trigger) یا Table (Trigger-State).

نمودار نمونه

این نمودار برخی ویژگی‌های StateMachineها را نشان می‌دهد.

صفحهٔ منبع 39

Stateهای دارای نمودار Composite

نماد زنجیر در گوشهٔ پایین راست State با نام Saved نشان می‌دهد که این State دارای یک Composite Diagram است. دو گزینه برای نمایش محتوای Composite Diagram یک State دارید. نخست، می‌توانید روی عنصر والد دوبارکلیک کنید تا نمودار فرزند آن جداگانه نمایش داده شود، همان‌گونه که در منبع نشان داده شده است.

عنصر تصویری منبع — صفحه 39تصویر، نمودار یا آیکون اصلی موجود در صفحه 39 سند؛ برای حفظ وفاداری بصری به‌صورت داده درون‌خطی درج شده است.
عنصر تصویری اصلی — صفحه 39
صفحهٔ منبع 40

به‌طور پیش‌فرض، نمودار فرزند درون یک Frame دارای برچسب نمایش داده می‌شود که شیء والد را در بافت نمودار فرزند نشان می‌دهد. می‌توانید روی پس‌زمینه راست‌کلیک و «Hide Diagram Frame» را انتخاب کنید تا Frame پنهان شود و با «Show Diagram Frame» دوباره آن را نشان دهید.

روش دیگر این است که روی عنصر Composite در نمودار اصلی راست‌کلیک کرده و «Advanced | Show Composite Diagram» را انتخاب کنید؛ در این حالت نیز نمودار فرزند درون یک Frame برچسب‌دار نمایش داده می‌شود، اما این بار در بافت نمودار والد.

عنصر تصویری منبع — صفحه 40تصویر، نمودار یا آیکون اصلی موجود در صفحه 40 سند؛ برای حفظ وفاداری بصری به‌صورت داده درون‌خطی درج شده است.
عنصر تصویری اصلی — صفحه 40
صفحهٔ منبع 41

ProtocolStateMachineها

مشخصات OMG UML، یعنی UML Superstructure Specification نسخهٔ 2.5 بخش 14.4، بیان می‌کند که ProtocolStateMachineها برای بیان پروتکل‌های استفاده به‌کار می‌روند. آن‌ها توالی‌های قانونی رخداد Eventها را مشخص می‌کنند که رفتارهای BehavioredClassifier مرتبط باید از آن‌ها پیروی کنند. نمادگذاری StateMachine روشی مناسب برای تعریف ترتیب فراخوانی ویژگی‌های رفتاری یک Classifier است. ProtocolStateMachineها می‌توانند با Classifierها، Interfaceها و Portها مرتبط شوند.

برای ایجاد ProtocolStateMachine، یک عنصر StateMachine بسازید و پنجرهٔ Properties آن را باز کنید. زبانهٔ «Behavior» را انتخاب کرده و گزینهٔ «Protocol StateMachine» را فعال کنید. اکنون در نمودار، عبارت <<protocol>> بالای نام عنصر نمایش داده می‌شود.

آیکون‌های جعبه‌ابزار عناصر StateMachine Diagram

عنصر تصویری منبع — صفحه 41تصویر، نمودار یا آیکون اصلی موجود در صفحه 41 سند؛ برای حفظ وفاداری بصری به‌صورت داده درون‌خطی درج شده است.
عنصر تصویری اصلی — صفحه 41
صفحهٔ منبع 42

عناصر StateMachine Diagram

عنصرتوضیح
Stateوضعیتی را نشان می‌دهد که در آن یک شرط ناوردا برقرار است؛ این شرط می‌تواند ایستا باشد ــ در انتظار Event ــ یا پویا باشد ــ در حال اجرای مجموعه‌ای از Activityها.
StateMachineظرفی برای گروه‌هایی از Stateهای مرتبط است.
Initialیک Pseudostate برای مشخص‌کردن State پیش‌فرض یک Composite State است؛ در هر Region از Composite State می‌تواند یک رأس Initial وجود داشته باشد.
Activity Finalتکمیل Activity را نشان می‌دهد؛ با رسیدن به Final تمام اجرای Activity Diagram متوقف می‌شود.
HistoryUML دو نوع History Pseudostate تعریف می‌کند: Shallow و Deep History.
Synchبرای نشان‌دادن همگام‌شدن مسیرهای هم‌زمان StateMachine و شکستن/دوباره پیوستن دوره‌های پردازش موازی استفاده می‌شود.
Objectنمونهٔ مشخصی از یک Class در زمان اجرا است.
Choiceبرای ساخت مسیرهای Transition پیچیده استفاده می‌شود که مسیر خروجی آن براساس شرایط پویای زمان اجرا تعیین می‌شود.
Junctionبرای طراحی مسیرهای Transition پیچیده به‌کار می‌رود و می‌تواند چند مسیر را در یک مسیر Transition مشترک ترکیب یا Merge کند.
Entry Pointبرای تعریف آغاز یک StateMachine به‌کار می‌رود. برای هر Region یک Entry Point وجود دارد که پیکربندی اولیهٔ Stateهای هم‌زمان را هدایت می‌کند.
Exit Pointدر عناصر و نمودارهای StateMachine نقطهٔ خروج از ماشین و Transition مبدأِ این خروج را مشخص می‌کند.
Terminateنشان می‌دهد با ورود به این Pseudostate، اجرای StateMachine پایان می‌یابد.
Fork/Joinمی‌تواند یک Flow را به چند Flow هم‌زمان تقسیم کند، چند Flow هم‌زمان را به هم ملحق کند یا هر دو عمل را انجام دهد.

Fork/Join به‌طور مشخص می‌تواند: ۱) یک Flow منفرد را به چند Flow هم‌زمان تقسیم کند؛ ۲) چند Flow هم‌زمان را به هم ملحق کند؛ یا ۳) چند Flow ورودی را هم‌زمان Join و Fork کرده و به چند Flow خروجی تبدیل کند.

آیکون‌های جعبه‌ابزار Connector در StateMachine Diagram

عنصر تصویری منبع — صفحه 42تصویر، نمودار یا آیکون اصلی موجود در صفحه 42 سند؛ برای حفظ وفاداری بصری به‌صورت داده درون‌خطی درج شده است.
عنصر تصویری اصلی — صفحه 42
عنصر تصویری منبع — صفحه 42تصویر، نمودار یا آیکون اصلی موجود در صفحه 42 سند؛ برای حفظ وفاداری بصری به‌صورت داده درون‌خطی درج شده است.
عنصر تصویری اصلی — صفحه 42
عنصر تصویری منبع — صفحه 42تصویر، نمودار یا آیکون اصلی موجود در صفحه 42 سند؛ برای حفظ وفاداری بصری به‌صورت داده درون‌خطی درج شده است.
عنصر تصویری اصلی — صفحه 42
عنصر تصویری منبع — صفحه 42تصویر، نمودار یا آیکون اصلی موجود در صفحه 42 سند؛ برای حفظ وفاداری بصری به‌صورت داده درون‌خطی درج شده است.
عنصر تصویری اصلی — صفحه 42
عنصر تصویری منبع — صفحه 42تصویر، نمودار یا آیکون اصلی موجود در صفحه 42 سند؛ برای حفظ وفاداری بصری به‌صورت داده درون‌خطی درج شده است.
عنصر تصویری اصلی — صفحه 42
عنصر تصویری منبع — صفحه 42تصویر، نمودار یا آیکون اصلی موجود در صفحه 42 سند؛ برای حفظ وفاداری بصری به‌صورت داده درون‌خطی درج شده است.
عنصر تصویری اصلی — صفحه 42
عنصر تصویری منبع — صفحه 42تصویر، نمودار یا آیکون اصلی موجود در صفحه 42 سند؛ برای حفظ وفاداری بصری به‌صورت داده درون‌خطی درج شده است.
عنصر تصویری اصلی — صفحه 42
عنصر تصویری منبع — صفحه 42تصویر، نمودار یا آیکون اصلی موجود در صفحه 42 سند؛ برای حفظ وفاداری بصری به‌صورت داده درون‌خطی درج شده است.
عنصر تصویری اصلی — صفحه 42
عنصر تصویری منبع — صفحه 42تصویر، نمودار یا آیکون اصلی موجود در صفحه 42 سند؛ برای حفظ وفاداری بصری به‌صورت داده درون‌خطی درج شده است.
عنصر تصویری اصلی — صفحه 42
عنصر تصویری منبع — صفحه 42تصویر، نمودار یا آیکون اصلی موجود در صفحه 42 سند؛ برای حفظ وفاداری بصری به‌صورت داده درون‌خطی درج شده است.
عنصر تصویری اصلی — صفحه 42
عنصر تصویری منبع — صفحه 42تصویر، نمودار یا آیکون اصلی موجود در صفحه 42 سند؛ برای حفظ وفاداری بصری به‌صورت داده درون‌خطی درج شده است.
عنصر تصویری اصلی — صفحه 42
عنصر تصویری منبع — صفحه 42تصویر، نمودار یا آیکون اصلی موجود در صفحه 42 سند؛ برای حفظ وفاداری بصری به‌صورت داده درون‌خطی درج شده است.
عنصر تصویری اصلی — صفحه 42
عنصر تصویری منبع — صفحه 42تصویر، نمودار یا آیکون اصلی موجود در صفحه 42 سند؛ برای حفظ وفاداری بصری به‌صورت داده درون‌خطی درج شده است.
عنصر تصویری اصلی — صفحه 42
عنصر تصویری منبع — صفحه 42تصویر، نمودار یا آیکون اصلی موجود در صفحه 42 سند؛ برای حفظ وفاداری بصری به‌صورت داده درون‌خطی درج شده است.
عنصر تصویری اصلی — صفحه 42
صفحهٔ منبع 43

Connectorهای StateMachine Diagram

Connectorتوضیح
Transitionحرکت منطقی از یک State به State دیگر را در StateMachine Diagram نشان می‌دهد.
Object Flowدو عنصر را با عبور دادهٔ مشخص از میان آن‌ها متصل و یک Transition فعال را مدل می‌کند.

یادداشت‌ها

  • Stateها می‌توانند با خط افقی یا بدون آن نمایش داده شوند. خط زمانی ظاهر می‌شود که عنصر Featureهایی مانند Operation داشته باشد ــ حتی اگر پنهان باشند ــ یا گزینهٔ «Show State Compartment» در صفحهٔ «Objects» از Preferences فعال شده باشد.
  • می‌توان Entry Point و Exit Point را به مرز State یا StateMachine افزود: روی عنصر راست‌کلیک کرده و «New Child Element | Entry Point» یا «Exit Point» را انتخاب کنید. اگر عنصر Composite باشد و به‌صورت Frame نمایش داده شود، می‌توان همین کار را روی Frame انتخاب‌شده انجام داد.
  • اگر روی StateMachineای که Classifier یک State دیگر است Entry/Exit Point داشته باشید، می‌توانید از آن State دیگر به Classifier، Connection Point Reference ایجاد کنید.
  • می‌توان Regionها را نیز به Frame یک State یا StateMachine افزود؛ روی Frame راست‌کلیک و «Define Concurrent Substates» را انتخاب کنید.
  • می‌توان روی مدل‌های StateMachine شبیه‌سازی اجرا کرد و مدل می‌تواند عناصری از بیش از یک Package داشته باشد. برای ورود عناصر خارجی در شبیه‌سازی، یک Package Diagram شامل Parent Package و Packageهای خارجی بسازید و از Parent به هر Package خارجی یک Package Import Connector ایجاد کنید.
عنصر تصویری منبع — صفحه 43تصویر، نمودار یا آیکون اصلی موجود در صفحه 43 سند؛ برای حفظ وفاداری بصری به‌صورت داده درون‌خطی درج شده است.
عنصر تصویری اصلی — صفحه 43
عنصر تصویری منبع — صفحه 43تصویر، نمودار یا آیکون اصلی موجود در صفحه 43 سند؛ برای حفظ وفاداری بصری به‌صورت داده درون‌خطی درج شده است.
عنصر تصویری اصلی — صفحه 43
صفحهٔ منبع 44

شبه‌حالت‌ها (Pseudostates)

Pseudostateها انتزاع UML برای انواع مختلف رأس‌های گذرایی هستند که در StateMachine Diagram استفاده می‌شوند. از آن‌ها برای بیان مسیرهای Transition پیچیده استفاده می‌شود.

در Enterprise Architect می‌توانید با کشیدن یکی از آیکون‌های عنصر زیر روی نمودار یک Pseudostate ایجاد کنید.

آیکون‌های Diagram Toolbox

عنصرتوضیح
InitialState پیش‌فرض Composite State را مشخص می‌کند؛ در هر Region از Composite State می‌تواند یک رأس Initial باشد.
Entry Pointبرای تعریف آغاز StateMachine استفاده می‌شود و برای هر Region یک Entry Point وجود دارد که پیکربندی اولیهٔ Stateهای هم‌زمان را هدایت می‌کند.
Exit Pointنقطه‌ای را نشان می‌دهد که ماشین از آن خارج می‌شود و Transition از آن Exit Point سرچشمه می‌گیرد.
Choiceبرای ساخت مسیرهای Transition پیچیده‌ای استفاده می‌شود که مسیر خروجی آن با شرایط پویای زمان اجرا تعیین می‌شود.
Junctionبرای طراحی مسیرهای Transition پیچیده و ترکیب یا Merge چند مسیر در یک مسیر مشترک استفاده می‌شود.
Historyدر UML دو نوع History Pseudostate تعریف شده است: Shallow و Deep.
Terminateورود به این Pseudostate موجب پایان اجرای StateMachine می‌شود.
Activity Finalتکمیل Activity را نشان می‌دهد و با رسیدن به Final، همهٔ اجرای Activity Diagram متوقف می‌شود.
Fork/Joinبرای تقسیم یک Flow به چند Flow هم‌زمان، پیوستن چند Flow هم‌زمان، یا ترکیب هر دو عمل استفاده می‌شود.

یادداشت

  • تمام انواع Pseudostate فهرست‌شده را می‌توان در کد نمایش داد و از نسخهٔ 11 به بعد Enterprise Architect می‌توانند براساس Templateهای تولید کد StateMachine، کد تولید کنند.
عنصر تصویری منبع — صفحه 44تصویر، نمودار یا آیکون اصلی موجود در صفحه 44 سند؛ برای حفظ وفاداری بصری به‌صورت داده درون‌خطی درج شده است.
عنصر تصویری اصلی — صفحه 44
عنصر تصویری منبع — صفحه 44تصویر، نمودار یا آیکون اصلی موجود در صفحه 44 سند؛ برای حفظ وفاداری بصری به‌صورت داده درون‌خطی درج شده است.
عنصر تصویری اصلی — صفحه 44
عنصر تصویری منبع — صفحه 44تصویر، نمودار یا آیکون اصلی موجود در صفحه 44 سند؛ برای حفظ وفاداری بصری به‌صورت داده درون‌خطی درج شده است.
عنصر تصویری اصلی — صفحه 44
عنصر تصویری منبع — صفحه 44تصویر، نمودار یا آیکون اصلی موجود در صفحه 44 سند؛ برای حفظ وفاداری بصری به‌صورت داده درون‌خطی درج شده است.
عنصر تصویری اصلی — صفحه 44
عنصر تصویری منبع — صفحه 44تصویر، نمودار یا آیکون اصلی موجود در صفحه 44 سند؛ برای حفظ وفاداری بصری به‌صورت داده درون‌خطی درج شده است.
عنصر تصویری اصلی — صفحه 44
عنصر تصویری منبع — صفحه 44تصویر، نمودار یا آیکون اصلی موجود در صفحه 44 سند؛ برای حفظ وفاداری بصری به‌صورت داده درون‌خطی درج شده است.
عنصر تصویری اصلی — صفحه 44
عنصر تصویری منبع — صفحه 44تصویر، نمودار یا آیکون اصلی موجود در صفحه 44 سند؛ برای حفظ وفاداری بصری به‌صورت داده درون‌خطی درج شده است.
عنصر تصویری اصلی — صفحه 44
عنصر تصویری منبع — صفحه 44تصویر، نمودار یا آیکون اصلی موجود در صفحه 44 سند؛ برای حفظ وفاداری بصری به‌صورت داده درون‌خطی درج شده است.
عنصر تصویری اصلی — صفحه 44
عنصر تصویری منبع — صفحه 44تصویر، نمودار یا آیکون اصلی موجود در صفحه 44 سند؛ برای حفظ وفاداری بصری به‌صورت داده درون‌خطی درج شده است.
عنصر تصویری اصلی — صفحه 44
صفحهٔ منبع 45

ناحیه‌ها (Regions)

اگر در StateMachine Diagram یک پیکربندی State فعال را مدل می‌کنید و لازم است چند State به‌طور هم‌زمان فعال باشند، ابتدا یک عنصر StateMachine یا Composite State ایجاد و سپس آن را به Regionها تقسیم کنید. پیکربندی State را به‌گونه‌ای تنظیم می‌کنید که در هر Region فقط یکی از Stateهای هم‌زمان فعال باشد. از یک Event Dispatch می‌توان چند Transition رخ دهد، مشروط بر اینکه Transitionهایی با Trigger مشابه توسط Regionها از هم جدا شده باشند.

Regionها در نمودار به‌صورت بخش‌های داخلی یک Compartment ساخت‌یافته و زیر Compartmentهایی مانند Tagها، Responsibilityها، Attributeها و Operationها نمایش داده می‌شوند.

دسترسی

Right-click on element | Advanced | Define Concurrent Substates

ایجاد Region در Composite State یا StateMachine

  1. در گفت‌وگوی «State Regions»، مقدار پیش‌فرض فیلد Name برابر <anonymous> است.
  2. اگر Region بدون عنوان می‌خواهید، برای هر Region یک‌بار Save را بزنید. اگر Region نام‌دار می‌خواهید، نام را تایپ کرده و برای هر Region Save را بزنید.
  3. پس از ساخت تعداد موردنیاز Region، دکمهٔ Close را بزنید. اکنون می‌توانید Regionها را با عناصر صفحات «State» در Diagram Toolbox پر کنید.

یادداشت‌ها

  • تغییرات عناصر یک Region هنگام ذخیرهٔ Diagram Commit می‌شوند؛ برای Undo تغییرات، Diagram را بدون Save دوباره بارگذاری کنید.
  • هر State، State Node یا Synch که به Region اضافه شود متعلق به همان Region است و معمولاً نمی‌توان آن را به Region دیگر کشید. با این حال هنگام تلاش برای Drag کردن State بین Regionها، گزینهٔ «Move embedded element to region» ظاهر می‌شود و با انتخاب آن انتقال انجام می‌شود.
صفحهٔ منبع 46

ایجاد مرجع نقطهٔ اتصال (Create a Connection Point Reference)

Connection Point Reference استفادهٔ یک Submachine State از Entry Point یا Exit Point Pseudostate تعریف‌شده در StateMachine طبقه‌بندِ عنصر State را نشان می‌دهد. در آغاز، خود عناصر Connection Point Reference را به‌صورت Entry Point یا Exit Point ایجاد می‌کنید.

ایجاد Entry Point و/یا Exit Point

  1. StateMachine طبقه‌بند را به‌عنوان Child Diagram یک Class ایجاد یا باز کنید. StateMachine به‌صورت Frame دارای برچسب نمایش داده می‌شود.
  2. اگر Entry/Exit Pointها وجود ندارند، روی لبهٔ داخلی Frame راست‌کلیک و به‌تناسب «New Element | Entry Point» یا «New Element | Exit Point» را انتخاب کنید. Pseudostate مربوطه فوراً روی لبهٔ Frame ساخته می‌شود؛ در صورت تمایل با دوبارکلیک نام مشخصی بدهید.
  3. هر تعداد Entry/Exit Point اضافی که لازم است ایجاد کنید.
  4. اگر State متناظر وجود ندارد، آیکون State را از Diagram Toolbox داخل Frame بکشید. Connectorهای مناسب میان State و Entry/Exit Pointها را ایجاد کنید.
  5. نمودار را Save کنید.

ایجاد Connection Point Reference

StateMachine فراخواننده را به‌عنوان Child Diagram یک Class ایجاد یا باز کنید. اگر عناصر وجود ندارند، State، Pseudostateها و Connectorهای مناسب را در Diagram ایجاد کنید.

عنصر تصویری منبع — صفحه 46تصویر، نمودار یا آیکون اصلی موجود در صفحه 46 سند؛ برای حفظ وفاداری بصری به‌صورت داده درون‌خطی درج شده است.
عنصر تصویری اصلی — صفحه 46
صفحهٔ منبع 47

ایجاد Connection Point Reference — ادامه

  1. عناصر و Connectorهای لازم را در Diagram ایجاد کنید.
  2. روی State فراخواننده کلیک کرده و Ctrl+L را فشار دهید تا گفت‌وگوی «Select Element» باز شود. StateMachine طبقه‌بندی را که در مرحلهٔ قبلی ساخته شد پیدا و انتخاب کنید.
  3. روی State راست‌کلیک و در صورت نیاز «New Element | Entry Point» یا «New Element | Exit Point» را انتخاب کنید. Pseudostate متناظر فوراً روی مرز عنصر ساخته می‌شود.
  4. روی Entry Point دوبارکلیک کنید؛ گفت‌وگوی «Edit ConnectionPointReference» نمایش داده می‌شود.
  5. در صورت تمایل در فیلد Name نام جدیدی برای Entry Point انتخاب‌شده وارد کنید. در پنل «Specify submachine's EntryPoints as reference»، Checkbox مربوط به هر Entry Point طبقه‌بند را که می‌خواهید به آن Reference ایجاد شود فعال کنید. بیش از یک Checkbox قابل انتخاب است.
  6. OK را بزنید.
  7. در صورت نیاز مراحل ۴ تا ۷ را برای Exit Point عنصر State تکرار کنید.
عنصر تصویری منبع — صفحه 47تصویر، نمودار یا آیکون اصلی موجود در صفحه 47 سند؛ برای حفظ وفاداری بصری به‌صورت داده درون‌خطی درج شده است.
عنصر تصویری اصلی — صفحه 47
عنصر تصویری منبع — صفحه 47تصویر، نمودار یا آیکون اصلی موجود در صفحه 47 سند؛ برای حفظ وفاداری بصری به‌صورت داده درون‌خطی درج شده است.
عنصر تصویری اصلی — صفحه 47
صفحهٔ منبع 48

جدول ماشین حالت (StateMachine Table)

StateMachine Table یکی از دو گونهٔ StateMachine است؛ گونهٔ دیگر StateMachine Diagram است. این جدول اطلاعات StateMachine را به‌شکل جدولی نمایش می‌دهد و روشی برای مشخص‌کردن رفتار گسستهٔ یک سامانهٔ گذار حالت محدود است؛ یعنی StateMachine به کدام State می‌رود و Transition تحت چه شرایطی رخ می‌دهد.

دسترسی

Right-click on StateMachine diagram background | Statechart Editor | Table (option)

نمایش StateMachine Table

Transitionهای State را می‌توان در جدول با یکی از دو نوع رابطه نمایش داد:

نوعتوضیح
State - Triggerسطرها Stateهای جاری و ستون‌ها Trigger Eventها را نشان می‌دهند. سلول تقاطع سطر و ستون، در صورت رخ‌دادن Trigger، State مقصد Transition و شرط یا Guard آن را مشخص می‌کند؛ در قالب Trigger - State نیز می‌توان جهت را برعکس کرد.
State - Next Stateهم سطرها و هم ستون‌ها Stateها را نشان می‌دهند و سلول تقاطع مشخص می‌کند: Event محرک Transition از State جاری (سطر) به State بعدی (ستون)، شرط یا Guard Event، و Effect Transition.

انتخاب قالب نمایش

  1. روی پس‌زمینه Diagram راست‌کلیک و «Statechart Editor» را انتخاب کنید.
  2. یکی از Diagram، Table (State-Next State)، Table (State-Trigger) یا Table (Trigger-State) را انتخاب کنید.
صفحهٔ منبع 49
صفحهٔ منبع 50

گزینه‌های StateMachine Table

می‌توانید Layout جدول StateMachine و گزینه‌های دیگر را در گفت‌وگوی «StateMachine Diagram: Options» انتخاب کنید. این گفت‌وگو با دوبارکلیک روی پس‌زمینه StateMachine Table یا با راست‌کلیک و انتخاب «State Table Options» باز می‌شود.

گزینه‌ها

گزینهعمل
Table FormatState - Trigger: سطرها Stateها را نشان می‌دهند و نام هر State در سلول لبهٔ چپ است؛ ستون‌ها Triggerها را نشان می‌دهند و نام هر Trigger در Header ستون است؛ تقاطع سطر و ستون Transition را، اگر وجود داشته باشد، مشخص می‌کند؛ سلول Transition اطلاعات State بعدی و شرط یا Guard را نمایش می‌دهد. Trigger - State: مشابه مورد قبل است اما سطرها Trigger و ستون‌ها State هستند. State - Next State: هم سطر و هم ستون State هستند و تقاطع آن‌ها Transition احتمالی از State سطر به State ستون را تعریف می‌کند.
Cell Sizeچهار فیلد بعدی را تکمیل کنید.
Transition Cell Widthعرض سلول‌های Transition یا عرض ستون را مشخص کنید.
Transition Cell Heightارتفاع سلول‌های Transition یا ارتفاع سطر را مشخص کنید.
Left Edge Cell Widthعرض سلول‌های لبهٔ چپ یا عنوان سطر را مشخص کنید.
Top Edge Cell Heightارتفاع سلول‌های لبهٔ بالا یا عنوان ستون را مشخص کنید.
Cell Colorسه فیلد بعدی را تکمیل کنید.
State/Trigger Cellرنگ سلول‌های عنوان سطر و ستون را انتخاب کنید.
State/Trigger Enumerationرنگ سلول‌های شماره‌گذاری سطر/ستون را انتخاب کنید. برای تنظیم این رنگ باید حداقل یکی از «Enable State Enumeration» یا «Enable Event Enumeration» فعال باشد.
Transition Cellرنگ سلول‌های Transition در بدنهٔ اصلی جدول را انتخاب کنید.
Highlight Optionsگزینه‌های Highlight مربوط به Transition انتخاب‌شده را تنظیم می‌کند.
Highlight Zones Related to Selected Transitionسلول‌های تمام عناصر درگیر در Transition انتخاب‌شده ــ State اولیه، State مقصد و Trigger ــ را Highlight می‌کند.
صفحهٔ منبع 51

گزینه‌های StateMachine Table — ادامه

گزینهعمل
Highlight Colorرنگ Highlight را انتخاب کنید.
Use Different Color for Target Stateسلول عنصر مقصد در یک Transition را با رنگی متفاوت از سلول عنصر مبدأ Highlight می‌کند.
Target Zone Colorرنگ Highlight ناحیهٔ مقصد را انتخاب کنید.
Always Display an Empty State Zoneیک سطر خالی و در جدول State - Next State یک ستون خالی نیز به انتهای جدول اضافه می‌کند. سلول عنوان دارای دکمه است؛ با دو بار کلیک جداگانه ــ نه Double-click ــ می‌توانید سلول را ویرایش و State جدید را مشخص کنید. در این حالت یک Empty State Zone دیگر به‌طور خودکار افزوده می‌شود.
Enable State Enumerationبه هر سلول عنوان State یک سلول شماره اضافه می‌کند. شماره‌گذاری از ۰ آغاز می‌شود.
Prefixدر صورت نیاز Prefix شمارهٔ State را تایپ کنید یا مقدار پیش‌فرض «S» را حذف کنید تا Prefix نداشته باشد.
Enable Event Enumerationبه هر سلول عنوان Event یا Trigger یک سلول برای شماره‌گذاری Event اضافه می‌کند. شماره‌گذاری از ۰ آغاز می‌شود.
Prefixدر صورت نیاز Prefix شمارهٔ Event را تایپ کنید یا مقدار پیش‌فرض «E» را حذف کنید.
Sample State Tableهنگام تعریف گزینه‌ها Preview قالب جدول را نمایش می‌دهد.
Advancedگزینه‌های Diagram را تعریف می‌کند و گفت‌وگوی Properties مربوط به StateMachine Diagram نمایش داده می‌شود.
Restore Defaultsمقادیر پیش‌فرض Diagram مربوط به State Table را دوباره اعمال می‌کند.
Applyگزینه‌های تغییرکرده را روی State Table Diagram اعمال می‌کند.
عنصر تصویری منبع — صفحه 51تصویر، نمودار یا آیکون اصلی موجود در صفحه 51 سند؛ برای حفظ وفاداری بصری به‌صورت داده درون‌خطی درج شده است.
عنصر تصویری اصلی — صفحه 51
صفحهٔ منبع 52

عملیات StateMachine Table

از آنجا که StateMachine Table گونه‌ای از StateMachine Diagram است، بیشتر عملیات دست‌کاری داده‌ها در هر دو یکسان است. عملیات ویژهٔ StateMachine Table در موضوع‌های زیر توضیح داده شده‌اند:

  • Change StateMachine Table Position
  • Change StateMachine Table Size
  • Insert New State
  • Insert Trigger
  • Insert/Change Transition
  • Reposition State or Trigger Cells
  • Add Legend
  • Locate Cell in StateMachine Diagram
  • StateMachine Table Conventions
  • Export State Table To CSV File
صفحهٔ منبع 53

تغییر موقعیت StateMachine Table

در صورت نیاز می‌توانید StateMachine Table را در Diagram View جابه‌جا کنید.

تغییر موقعیت جدول

  1. Ctrl+A را فشار دهید یا روی سلول بالا-چپ دوبارکلیک کنید تا کل StateMachine Table انتخاب شود.
  2. جدول را Drag & Drop کرده و به موقعیت موردنظر ببرید. روش جایگزین این است که با Shift+Right Arrow / Left Arrow / Up Arrow / Down Arrow جدول را جابه‌جا کنید.
صفحهٔ منبع 54

تغییر اندازهٔ StateMachine Table

سه روش برای تغییر اندازهٔ StateMachine Table وجود دارد:

  • اندازهٔ سلول را در گفت‌وگوی «StateMachine Diagram: Options» تغییر دهید.
  • Ctrl+A را فشار دهید یا روی سلول بالا-چپ دوبارکلیک کنید تا کل جدول انتخاب شود، سپس Ctrl + Left/Up/Right/Down را برای تغییر اندازه فشار دهید.
  • StateMachine Table را انتخاب کرده و Shape Handleها را بکشید تا اندازه تغییر کند.
صفحهٔ منبع 55

درج Trigger

اگر قالب StateMachine Table برابر State-Trigger یا Trigger-State باشد، با هر یک از روش‌های زیر می‌توانید Trigger جدید درج کنید:

  1. در سلول بالا-چپ StateMachine Table، نشانگر را روی واژهٔ «Event» ببرید تا علامت + در انتهای واژه ظاهر شود؛ روی + کلیک کنید تا Trigger جدید ساخته شود.
  2. در سلول بالا-چپ راست‌کلیک کرده و «Add Trigger» را انتخاب کنید.
  3. یک Trigger موجود را انتخاب کرده و کلید Insert را فشار دهید تا Trigger جدید پیش از Trigger موجود درج شود.
  4. روی Trigger موجود کلیک و راست‌کلیک کنید؛ «Insert New Trigger Before» برای درج پیش از Trigger جاری یا «Insert New Trigger After» برای درج پس از آن را انتخاب کنید.
صفحهٔ منبع 56

درج/تغییر Transition

این موضوع توضیح می‌دهد چگونه یک لینک Transition بین دو State را درج یا ویرایش کنید.

عملتوضیح
Insert a new Transitionروی سلولی که Transition باید در آن ساخته شود راست‌کلیک کنید. اگر قالب جدول State-Trigger یا Trigger-State باشد، منوی Context نام Stateهایی را که می‌توان به‌عنوان Target انتخاب کرد فهرست می‌کند؛ روی State مقصد موردنظر کلیک کنید. اگر قالب State-Next State باشد، گزینهٔ «Insert Transition» را انتخاب کنید. روش جایگزین: در صفحهٔ «State Relationships» از Toolbox عنصر Transition را انتخاب و سپس روی سلول جدول کلیک کنید؛ برای تعریف آن در «Transition Properties» روی Transition دوبارکلیک کنید.
Change the Transitionمانند State Chart Diagram، برای تغییر ویژگی‌های Transition روی سلول Transition دوبارکلیک کرده و جزئیات را در «Transition Properties» ویرایش کنید.
Change Transition Statesبرای تغییر Source و Target، روی Transition راست‌کلیک و «Advanced | Set Source and Target» را انتخاب کنید. همچنین می‌توانید Source، Target یا Trigger را با کلیک روی Transition و Drag کردن آن به سلول دیگر تغییر دهید. در قالب State-Trigger یا Trigger-State، برای تغییر Target ابتدا نام Target را در سلول Transition Highlight و روی آن کلیک کنید تا فهرست Stateها باز شود، سپس State مقصد دلخواه را انتخاب کنید.
Highlight States and Trigger Related to Transitionدر پنل «Highlight Options» از گفت‌وگوی «StateMachine Diagram: Options» می‌توانید سلول‌های Source State، Target State و Trigger مربوط به Transition را Highlight کنید. با کلیک روی سلول Transition، سلول‌های State و Trigger مرتبط Highlight می‌شوند. روش دیگر: روی Transition کلیک کرده و کلید L را نگه دارید.
صفحهٔ منبع 57

درج State جدید

گزینهتوضیح
Insert a new State in the StateMachine table

برای درج State جدید یکی از روش‌های زیر را به‌کار ببرید:

  1. در سلول بالا-چپ نشانگر را روی واژهٔ State ببرید تا + ظاهر شود؛ روی + کلیک کنید.
  2. در سلول بالا-چپ راست‌کلیک و «Add State» را انتخاب کنید.
  3. روی State موجود راست‌کلیک و «Insert New State Before» یا «Insert New State After» را انتخاب کنید.
  4. روی State موجود کلیک و کلید Insert را فشار دهید تا State جدید بالای آن درج شود.
  5. در Toolbox و صفحهٔ «State Elements» روی یک عنصر کلیک کنید و سپس روی پس‌زمینه Diagram برای افزودن State به انتهای جدول یا روی State موجود برای افزودن درست بالای آن کلیک کنید.

از صفحهٔ «State Elements» می‌توان State، Initial، Final، Entry، Exit و Terminate را درج کرد.

Add a Substate to a selected Stateروی State موردنظر راست‌کلیک و «Add Substate» را انتخاب کنید. اگر State اجازه Substate ندهد گزینه غیرفعال است. همچنین می‌توان State موجودی را روی State دیگر Drag کرد تا در صورت مجاز بودن به Substate تبدیل شود؛ برای تغییر Parent State نیز Substate را از Parent قبلی به State دیگر بکشید.
Remove the parent relation of a Substateروی Substate راست‌کلیک و «Remove Parent Relation» را انتخاب کنید تا سلول آن به State مستقل تبدیل شود. همچنین می‌توان Substate را روی سلول بالا-چپ جدول Drag & Drop کرد.
صفحهٔ منبع 58

جابه‌جایی سلول‌های State یا Trigger

موقعیت یک سلول State یا Trigger انتخاب‌شده را می‌توانید به یکی از دو روش تغییر دهید:

  • روی سلول عنوان State یا Trigger راست‌کلیک و گزینهٔ مناسب «Order | Move xxx» را انتخاب کنید.
  • روی سلول کلیک کرده و Shift + Right/Left/Up/Down Arrow را فشار دهید.
صفحهٔ منبع 59

افزودن Legend

می‌توانید به هر سلول StateMachine Table که Transition ندارد یک Legend ساده اضافه کنید. دو نماد Legend عبارت‌اند از:

  • I — Ignore
  • N — Never Happen

اختصاص نماد Legend به سلول

  1. روی سلول کلیک کنید و کلید I را برای «Ignore» یا N را برای «Never Happen» فشار دهید. نماد موردنظر در مرکز سلول نمایش داده می‌شود.

روش جایگزین: روی سلول راست‌کلیک کرده و «Legend | Ignore» یا «Legend | Never Happen» را انتخاب کنید.

یادداشت

برای حذف Legend از سلول، روی سلول کلیک و Delete را فشار دهید یا راست‌کلیک کرده و «Legend | Remove Legend» را انتخاب کنید.

صفحهٔ منبع 60

یافتن سلول در StateMachine Diagram

Locate In State Chart

در StateMachine Table برای یافتن State یا Trigger انتخاب‌شده در StateMachine Diagram، «Find | Locate in State Chart» را انتخاب کنید. Enterprise Architect به StateMachine Diagram می‌رود و عنصر انتخاب‌شده را Highlight می‌کند. Transition Relationship را نیز می‌توان به همین روش با «Locate in State Chart» پیدا کرد. ممکن است Trigger موجود در Table روی Diagram وجود نداشته باشد؛ در این صورت گزینهٔ «Locate in State Chart» غیرفعال است.

Locate In State Table

در StateMachine Diagram برای یافتن State یا Trigger انتخاب‌شده در Table متناظر، «Find | Locate in State Table» را انتخاب کنید. Enterprise Architect به Table می‌رود و عنصر را Highlight می‌کند. Transition Relationship را نیز می‌توان به همین روش پیدا کرد.

صفحهٔ منبع 61

قراردادهای StateMachine Table

Trigger

  • حذف Trigger آن را به‌طور کامل از Model حذف می‌کند؛ بنابراین حذف Trigger قابل Undo نیست.
  • در انتهای سطر Heading مربوط به Event ستونی با عنوان <None> وجود دارد که برای Transitionهای بدون اطلاعات Trigger است.

State

از Toolbox فقط انواع State، Initial، Final، Entry، Exit و Terminate را می‌توان درج کرد؛ هرچند Table ممکن است انواع دیگری مانند Submachine State را نیز نمایش دهد.

Transition

سلول Transition بسته به قالب StateMachine Table ویژگی‌های خود را به یکی از دو روش نمایش می‌دهد. در قالب State - Trigger یا Trigger - State، سلول Transition، Guard و Target را نمایش می‌دهد. در قالب State - Next State، سلول Transition، Trigger، Guard و Effect را نمایش می‌دهد.

Guard و Effect را می‌توان درجا ویرایش کرد. اگر Guard یا Effect برای Transition انتخاب‌شده خالی باشد، سلول به‌جای آن سه‌نقطه (...) نشان می‌دهد؛ روی سه‌نقطه دو بار جداگانه کلیک کنید ــ نه Double-click ــ تا نام Guard و Effect را وارد کنید.

عنصر تصویری منبع — صفحه 61تصویر، نمودار یا آیکون اصلی موجود در صفحه 61 سند؛ برای حفظ وفاداری بصری به‌صورت داده درون‌خطی درج شده است.
عنصر تصویری اصلی — صفحه 61
عنصر تصویری منبع — صفحه 61تصویر، نمودار یا آیکون اصلی موجود در صفحه 61 سند؛ برای حفظ وفاداری بصری به‌صورت داده درون‌خطی درج شده است.
عنصر تصویری اصلی — صفحه 61
صفحهٔ منبع 62

خروجی‌گرفتن State Table به فایل CSV

Export a StateMachine Table to a CSV file

  1. StateMachine Table موردنظر را باز کنید.
  2. روی پس‌زمینه Diagram راست‌کلیک و «Export Statechart to CSV file» را انتخاب کنید. گفت‌وگوی «Save As browser» نمایش داده می‌شود.
  3. دایرکتوری مناسب را انتخاب و نام فایل .csv را وارد کنید.
  4. دکمهٔ Save را بزنید.
صفحهٔ منبع 63

نمونهٔ جدول State-Trigger

سطرها Stateهای جاری و ستون‌ها Trigger Eventها را نشان می‌دهند؛ یا اگر قالب Trigger - State را ترجیح دهید، برعکس. سلول تقاطع یک سطر و ستون، در صورت رخ‌دادن Trigger، State مقصد Transition و شرط یا Guard آن را مشخص می‌کند.

عنصر تصویری منبع — صفحه 63تصویر، نمودار یا آیکون اصلی موجود در صفحه 63 سند؛ برای حفظ وفاداری بصری به‌صورت داده درون‌خطی درج شده است.
عنصر تصویری اصلی — صفحه 63
صفحهٔ منبع 64

نمونهٔ جدول State-Next State

هم سطرها و هم ستون‌ها State را نشان می‌دهند و سلول تقاطع سطر و ستون موارد زیر را مشخص می‌کند:

  • Eventای که Transition از State جاریِ سطر به State بعدیِ ستون را Trigger می‌کند؛
  • شرط یا Guard آن Event؛
  • Effect مربوط به Transition.
عنصر تصویری منبع — صفحه 64تصویر، نمودار یا آیکون اصلی موجود در صفحه 64 سند؛ برای حفظ وفاداری بصری به‌صورت داده درون‌خطی درج شده است.
عنصر تصویری اصلی — صفحه 64
صفحهٔ منبع 65

شبیه‌سازی StateMachine Table

StateMachine Table بازنمایی یک StateMachine است و دقیقاً مانند StateMachine Diagram قابل شبیه‌سازی است.

دسترسی

وقتی StateMachine به‌صورت Table نمایش داده شده است، شبیه‌سازی را از یکی از مسیرهای زیر آغاز کنید:

RibbonSimulate > Run Simulation > Start یا Simulate > Dynamic Simulation > Simulator > Open Simulator Window > Start
Context MenuRight-click on view background | Execute Simulation | <Interpreted or Manual>

Highlight کردن سلول‌های فعال

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

  • Stateهای فعال فعلی: رنگ فیلد «Highlight Color» در StateMachine Options به‌همراه Border تیره.
  • Stateهای بعدی بالقوه: گونه‌ای از Highlight Color یا، اگر «Use Different Color for Target State» فعال باشد، رنگ «Target Zone Color».
  • Transitionهای فعال: رنگ فیلد «Transition Cell».
  • Triggerها: رنگ Highlight Color.
  • Stateهای غیرفعال: خاکستری.

منبع سپس نمونه‌ای از Signal Triggerها را نشان می‌دهد.

عنصر تصویری منبع — صفحه 65تصویر، نمودار یا آیکون اصلی موجود در صفحه 65 سند؛ برای حفظ وفاداری بصری به‌صورت داده درون‌خطی درج شده است.
عنصر تصویری اصلی — صفحه 65
عنصر تصویری منبع — صفحه 65تصویر، نمودار یا آیکون اصلی موجود در صفحه 65 سند؛ برای حفظ وفاداری بصری به‌صورت داده درون‌خطی درج شده است.
عنصر تصویری اصلی — صفحه 65
صفحهٔ منبع 66

همانند اجرای شبیه‌سازی به‌شکل Diagram، شبیه‌سازی Transitionهای بدون Guard یا دارای Guard معتبر را به‌طور خودکار طی می‌کند. Transitionهایی که Trigger دارند تا زمانی که آن Trigger شلیک نشود دنبال نمی‌شوند. Triggerها می‌توانند به‌طور خودکار از Simulation Events Window شلیک شوند یا با راست‌کلیک روی سلول Transition یا Trigger و انتخاب «Signal Trigger in Simulation» به‌صورت دستی شلیک شوند.

امتیاز کاربران به این مقاله

☆☆☆☆☆

0 نفر امتیاز داده اند. میانگین: 0.0 از 5

 

0 نظر

نظر محترم شما در مورد مقاله های وب سایت برنامه نویسی و پایگاه داده

نظرات محترم شما در خدمات رسانی بهتر ما را یاری می نمایند. لطفا اگر مایل بودید یک نظر ما را مهمان فرمائید. آدرس ایمیل و وب سایت شما نمایش داده نخواهد شد.

0 / 500

اطلاعات تماس

  • آدرس:اصفهان-خیابان ام کلثوم غربی - بعد خیابان تخم چی - بیست متر بعد از پیتزا ننه شب - کوچه تعمیر گاه سمار زغالی - پلاک 354 - درب مشکی - طبقه هفتم
  • آدرس ایمیل:najafzade@gmail.com
  • وب سایت:http://www.a00b.com/
  • تلفن ثابت:(+98)9131253620
  • تلفن همراه:09131253620