صفحهٔ منبع 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 در یکی از سه قالب رابطهای نمایش دهید.
انتخاب قالب نمایش
- روی پسزمینه نمودار راستکلیک کرده و «Statechart Editor» را انتخاب کنید.
- یکی از گزینههای نمایش را انتخاب کنید: Diagram، Table (State-Next State)، Table (State-Trigger) یا Table (Trigger-State).
نمودار نمونه
این نمودار برخی ویژگیهای StateMachineها را نشان میدهد.
© Sparx Systems 2026 — صفحهٔ 38 از ۴۲۲ — ایجادشده با Enterprise Architect
صفحهٔ منبع 39Stateهای دارای نمودار Composite
نماد زنجیر در گوشهٔ پایین راست State با نام Saved نشان میدهد که این State دارای یک Composite Diagram است. دو گزینه برای نمایش محتوای Composite Diagram یک State دارید. نخست، میتوانید روی عنصر والد دوبارکلیک کنید تا نمودار فرزند آن جداگانه نمایش داده شود، همانگونه که در منبع نشان داده شده است.
عنصر تصویری اصلی — صفحه 39© Sparx Systems 2026 — صفحهٔ 39 از ۴۲۲ — ایجادشده با Enterprise Architect
صفحهٔ منبع 40بهطور پیشفرض، نمودار فرزند درون یک Frame دارای برچسب نمایش داده میشود که شیء والد را در بافت نمودار فرزند نشان میدهد. میتوانید روی پسزمینه راستکلیک و «Hide Diagram Frame» را انتخاب کنید تا Frame پنهان شود و با «Show Diagram Frame» دوباره آن را نشان دهید.
روش دیگر این است که روی عنصر Composite در نمودار اصلی راستکلیک کرده و «Advanced | Show Composite Diagram» را انتخاب کنید؛ در این حالت نیز نمودار فرزند درون یک Frame برچسبدار نمایش داده میشود، اما این بار در بافت نمودار والد.
عنصر تصویری اصلی — صفحه 40© Sparx Systems 2026 — صفحهٔ 40 از ۴۲۲ — ایجادشده با Enterprise Architect
صفحهٔ منبع 41ProtocolStateMachineها
مشخصات 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© Sparx Systems 2026 — صفحهٔ 41 از ۴۲۲ — ایجادشده با Enterprise Architect
صفحهٔ منبع 42عناصر StateMachine Diagram
| عنصر | توضیح |
|---|
| State | وضعیتی را نشان میدهد که در آن یک شرط ناوردا برقرار است؛ این شرط میتواند ایستا باشد ــ در انتظار Event ــ یا پویا باشد ــ در حال اجرای مجموعهای از Activityها. |
| StateMachine | ظرفی برای گروههایی از Stateهای مرتبط است. |
| Initial | یک Pseudostate برای مشخصکردن State پیشفرض یک Composite State است؛ در هر Region از Composite State میتواند یک رأس Initial وجود داشته باشد. |
| Activity Final | تکمیل Activity را نشان میدهد؛ با رسیدن به Final تمام اجرای Activity Diagram متوقف میشود. |
| History | UML دو نوع 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© Sparx Systems 2026 — صفحهٔ 42 از ۴۲۲ — ایجادشده با Enterprise Architect
صفحهٔ منبع 43Connectorهای 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© Sparx Systems 2026 — صفحهٔ 43 از ۴۲۲ — ایجادشده با Enterprise Architect
صفحهٔ منبع 44شبهحالتها (Pseudostates)
Pseudostateها انتزاع UML برای انواع مختلف رأسهای گذرایی هستند که در StateMachine Diagram استفاده میشوند. از آنها برای بیان مسیرهای Transition پیچیده استفاده میشود.
در Enterprise Architect میتوانید با کشیدن یکی از آیکونهای عنصر زیر روی نمودار یک Pseudostate ایجاد کنید.
آیکونهای Diagram Toolbox
| عنصر | توضیح |
|---|
| Initial | State پیشفرض 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© Sparx Systems 2026 — صفحهٔ 44 از ۴۲۲ — ایجادشده با Enterprise Architect
صفحهٔ منبع 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
- در گفتوگوی «State Regions»، مقدار پیشفرض فیلد Name برابر <anonymous> است.
- اگر Region بدون عنوان میخواهید، برای هر Region یکبار Save را بزنید. اگر Region نامدار میخواهید، نام را تایپ کرده و برای هر Region Save را بزنید.
- پس از ساخت تعداد موردنیاز 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» ظاهر میشود و با انتخاب آن انتقال انجام میشود.
© Sparx Systems 2026 — صفحهٔ 45 از ۴۲۲ — ایجادشده با Enterprise Architect
صفحهٔ منبع 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
- StateMachine طبقهبند را بهعنوان Child Diagram یک Class ایجاد یا باز کنید. StateMachine بهصورت Frame دارای برچسب نمایش داده میشود.
- اگر Entry/Exit Pointها وجود ندارند، روی لبهٔ داخلی Frame راستکلیک و بهتناسب «New Element | Entry Point» یا «New Element | Exit Point» را انتخاب کنید. Pseudostate مربوطه فوراً روی لبهٔ Frame ساخته میشود؛ در صورت تمایل با دوبارکلیک نام مشخصی بدهید.
- هر تعداد Entry/Exit Point اضافی که لازم است ایجاد کنید.
- اگر State متناظر وجود ندارد، آیکون State را از Diagram Toolbox داخل Frame بکشید. Connectorهای مناسب میان State و Entry/Exit Pointها را ایجاد کنید.
- نمودار را Save کنید.
ایجاد Connection Point Reference
StateMachine فراخواننده را بهعنوان Child Diagram یک Class ایجاد یا باز کنید. اگر عناصر وجود ندارند، State، Pseudostateها و Connectorهای مناسب را در Diagram ایجاد کنید.
عنصر تصویری اصلی — صفحه 46© Sparx Systems 2026 — صفحهٔ 46 از ۴۲۲ — ایجادشده با Enterprise Architect
صفحهٔ منبع 47ایجاد Connection Point Reference — ادامه
- عناصر و Connectorهای لازم را در Diagram ایجاد کنید.
- روی State فراخواننده کلیک کرده و Ctrl+L را فشار دهید تا گفتوگوی «Select Element» باز شود. StateMachine طبقهبندی را که در مرحلهٔ قبلی ساخته شد پیدا و انتخاب کنید.
- روی State راستکلیک و در صورت نیاز «New Element | Entry Point» یا «New Element | Exit Point» را انتخاب کنید. Pseudostate متناظر فوراً روی مرز عنصر ساخته میشود.
- روی Entry Point دوبارکلیک کنید؛ گفتوگوی «Edit ConnectionPointReference» نمایش داده میشود.
- در صورت تمایل در فیلد Name نام جدیدی برای Entry Point انتخابشده وارد کنید. در پنل «Specify submachine's EntryPoints as reference»، Checkbox مربوط به هر Entry Point طبقهبند را که میخواهید به آن Reference ایجاد شود فعال کنید. بیش از یک Checkbox قابل انتخاب است.
- OK را بزنید.
- در صورت نیاز مراحل ۴ تا ۷ را برای Exit Point عنصر State تکرار کنید.
عنصر تصویری اصلی — صفحه 47عنصر تصویری اصلی — صفحه 47© Sparx Systems 2026 — صفحهٔ 47 از ۴۲۲ — ایجادشده با Enterprise Architect
صفحهٔ منبع 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. |
انتخاب قالب نمایش
- روی پسزمینه Diagram راستکلیک و «Statechart Editor» را انتخاب کنید.
- یکی از Diagram، Table (State-Next State)، Table (State-Trigger) یا Table (Trigger-State) را انتخاب کنید.
© Sparx Systems 2026 — صفحهٔ 48 از ۴۲۲ — ایجادشده با Enterprise Architect
صفحهٔ منبع 49© Sparx Systems 2026 — صفحهٔ 49 از ۴۲۲ — ایجادشده با Enterprise Architect
صفحهٔ منبع 50گزینههای StateMachine Table
میتوانید Layout جدول StateMachine و گزینههای دیگر را در گفتوگوی «StateMachine Diagram: Options» انتخاب کنید. این گفتوگو با دوبارکلیک روی پسزمینه StateMachine Table یا با راستکلیک و انتخاب «State Table Options» باز میشود.
گزینهها
| گزینه | عمل |
|---|
| Table Format | State - 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 میکند. |
© Sparx Systems 2026 — صفحهٔ 50 از ۴۲۲ — ایجادشده با Enterprise Architect
صفحهٔ منبع 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© Sparx Systems 2026 — صفحهٔ 51 از ۴۲۲ — ایجادشده با Enterprise Architect
صفحهٔ منبع 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
© Sparx Systems 2026 — صفحهٔ 52 از ۴۲۲ — ایجادشده با Enterprise Architect
صفحهٔ منبع 53تغییر موقعیت StateMachine Table
در صورت نیاز میتوانید StateMachine Table را در Diagram View جابهجا کنید.
تغییر موقعیت جدول
- Ctrl+A را فشار دهید یا روی سلول بالا-چپ دوبارکلیک کنید تا کل StateMachine Table انتخاب شود.
- جدول را Drag & Drop کرده و به موقعیت موردنظر ببرید. روش جایگزین این است که با Shift+Right Arrow / Left Arrow / Up Arrow / Down Arrow جدول را جابهجا کنید.
© Sparx Systems 2026 — صفحهٔ 53 از ۴۲۲ — ایجادشده با Enterprise Architect
صفحهٔ منبع 54تغییر اندازهٔ StateMachine Table
سه روش برای تغییر اندازهٔ StateMachine Table وجود دارد:
- اندازهٔ سلول را در گفتوگوی «StateMachine Diagram: Options» تغییر دهید.
- Ctrl+A را فشار دهید یا روی سلول بالا-چپ دوبارکلیک کنید تا کل جدول انتخاب شود، سپس Ctrl + Left/Up/Right/Down را برای تغییر اندازه فشار دهید.
- StateMachine Table را انتخاب کرده و Shape Handleها را بکشید تا اندازه تغییر کند.
© Sparx Systems 2026 — صفحهٔ 54 از ۴۲۲ — ایجادشده با Enterprise Architect
صفحهٔ منبع 55درج Trigger
اگر قالب StateMachine Table برابر State-Trigger یا Trigger-State باشد، با هر یک از روشهای زیر میتوانید Trigger جدید درج کنید:
- در سلول بالا-چپ StateMachine Table، نشانگر را روی واژهٔ «Event» ببرید تا علامت + در انتهای واژه ظاهر شود؛ روی + کلیک کنید تا Trigger جدید ساخته شود.
- در سلول بالا-چپ راستکلیک کرده و «Add Trigger» را انتخاب کنید.
- یک Trigger موجود را انتخاب کرده و کلید Insert را فشار دهید تا Trigger جدید پیش از Trigger موجود درج شود.
- روی Trigger موجود کلیک و راستکلیک کنید؛ «Insert New Trigger Before» برای درج پیش از Trigger جاری یا «Insert New Trigger After» برای درج پس از آن را انتخاب کنید.
© Sparx Systems 2026 — صفحهٔ 55 از ۴۲۲ — ایجادشده با Enterprise Architect
صفحهٔ منبع 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 را نگه دارید. |
© Sparx Systems 2026 — صفحهٔ 56 از ۴۲۲ — ایجادشده با Enterprise Architect
صفحهٔ منبع 57درج State جدید
| گزینه | توضیح |
|---|
| Insert a new State in the StateMachine table | برای درج State جدید یکی از روشهای زیر را بهکار ببرید: - در سلول بالا-چپ نشانگر را روی واژهٔ State ببرید تا + ظاهر شود؛ روی + کلیک کنید.
- در سلول بالا-چپ راستکلیک و «Add State» را انتخاب کنید.
- روی State موجود راستکلیک و «Insert New State Before» یا «Insert New State After» را انتخاب کنید.
- روی State موجود کلیک و کلید Insert را فشار دهید تا State جدید بالای آن درج شود.
- در 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 کرد. |
© Sparx Systems 2026 — صفحهٔ 57 از ۴۲۲ — ایجادشده با Enterprise Architect
صفحهٔ منبع 58جابهجایی سلولهای State یا Trigger
موقعیت یک سلول State یا Trigger انتخابشده را میتوانید به یکی از دو روش تغییر دهید:
- روی سلول عنوان State یا Trigger راستکلیک و گزینهٔ مناسب «Order | Move xxx» را انتخاب کنید.
- روی سلول کلیک کرده و Shift + Right/Left/Up/Down Arrow را فشار دهید.
© Sparx Systems 2026 — صفحهٔ 58 از ۴۲۲ — ایجادشده با Enterprise Architect
صفحهٔ منبع 59افزودن Legend
میتوانید به هر سلول StateMachine Table که Transition ندارد یک Legend ساده اضافه کنید. دو نماد Legend عبارتاند از:
- I — Ignore
- N — Never Happen
اختصاص نماد Legend به سلول
- روی سلول کلیک کنید و کلید I را برای «Ignore» یا N را برای «Never Happen» فشار دهید. نماد موردنظر در مرکز سلول نمایش داده میشود.
روش جایگزین: روی سلول راستکلیک کرده و «Legend | Ignore» یا «Legend | Never Happen» را انتخاب کنید.
یادداشت
برای حذف Legend از سلول، روی سلول کلیک و Delete را فشار دهید یا راستکلیک کرده و «Legend | Remove Legend» را انتخاب کنید.
© Sparx Systems 2026 — صفحهٔ 59 از ۴۲۲ — ایجادشده با Enterprise Architect
صفحهٔ منبع 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 را نیز میتوان به همین روش پیدا کرد.
© Sparx Systems 2026 — صفحهٔ 60 از ۴۲۲ — ایجادشده با Enterprise Architect
صفحهٔ منبع 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© Sparx Systems 2026 — صفحهٔ 61 از ۴۲۲ — ایجادشده با Enterprise Architect
صفحهٔ منبع 62خروجیگرفتن State Table به فایل CSV
Export a StateMachine Table to a CSV file
- StateMachine Table موردنظر را باز کنید.
- روی پسزمینه Diagram راستکلیک و «Export Statechart to CSV file» را انتخاب کنید. گفتوگوی «Save As browser» نمایش داده میشود.
- دایرکتوری مناسب را انتخاب و نام فایل .csv را وارد کنید.
- دکمهٔ Save را بزنید.
© Sparx Systems 2026 — صفحهٔ 62 از ۴۲۲ — ایجادشده با Enterprise Architect
صفحهٔ منبع 63نمونهٔ جدول State-Trigger
سطرها Stateهای جاری و ستونها Trigger Eventها را نشان میدهند؛ یا اگر قالب Trigger - State را ترجیح دهید، برعکس. سلول تقاطع یک سطر و ستون، در صورت رخدادن Trigger، State مقصد Transition و شرط یا Guard آن را مشخص میکند.
عنصر تصویری اصلی — صفحه 63© Sparx Systems 2026 — صفحهٔ 63 از ۴۲۲ — ایجادشده با Enterprise Architect
صفحهٔ منبع 64نمونهٔ جدول State-Next State
هم سطرها و هم ستونها State را نشان میدهند و سلول تقاطع سطر و ستون موارد زیر را مشخص میکند:
- Eventای که Transition از State جاریِ سطر به State بعدیِ ستون را Trigger میکند؛
- شرط یا Guard آن Event؛
- Effect مربوط به Transition.
عنصر تصویری اصلی — صفحه 64© Sparx Systems 2026 — صفحهٔ 64 از ۴۲۲ — ایجادشده با Enterprise Architect
صفحهٔ منبع 65شبیهسازی StateMachine Table
StateMachine Table بازنمایی یک StateMachine است و دقیقاً مانند StateMachine Diagram قابل شبیهسازی است.
دسترسی
وقتی StateMachine بهصورت Table نمایش داده شده است، شبیهسازی را از یکی از مسیرهای زیر آغاز کنید:
| Ribbon | Simulate > Run Simulation > Start یا Simulate > Dynamic Simulation > Simulator > Open Simulator Window > Start |
|---|
| Context Menu | Right-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© Sparx Systems 2026 — صفحهٔ 65 از ۴۲۲ — ایجادشده با Enterprise Architect
صفحهٔ منبع 66همانند اجرای شبیهسازی بهشکل Diagram، شبیهسازی Transitionهای بدون Guard یا دارای Guard معتبر را بهطور خودکار طی میکند. Transitionهایی که Trigger دارند تا زمانی که آن Trigger شلیک نشود دنبال نمیشوند. Triggerها میتوانند بهطور خودکار از Simulation Events Window شلیک شوند یا با راستکلیک روی سلول Transition یا Trigger و انتخاب «Signal Trigger in Simulation» بهصورت دستی شلیک شوند.
© Sparx Systems 2026 — صفحهٔ 66 از ۴۲۲ — ایجادشده با Enterprise Architect