صفحهٔ منبع 143Action Typeها
Actionها بسیار انعطافپذیرند. Enterprise Architect طیف گستردهای از Action Typeهای مشخص را پشتیبانی میکند که برای نمایش یا اجرای یک Object، Operation یا Behavior مجزا بهکار میروند. بیشتر Actionها بهصورت Rectangle با گوشههای گرد و حاوی Action Type و Action Name نمایش داده میشوند.
نشانهگذاری Action Element
برخی Action Typeها Notation اختصاصی دارند؛ از جمله:
- AcceptEvent
- AcceptEventTimer
- CallBehavior
- CallOperation
- SendSignal
AcceptEvent Action
AcceptEvent Action یک Output Result Action Pin قابل انتخاب دارد و یک یا چند Trigger نوع Eventهای پذیرفتهشده را مشخص میکنند. Triggerها را در زبانهٔ «Triggers» از Properties Window تعریف میکنید. در Simulation، AcceptEvent Action بدون Trigger شبیهسازی را روی همان Action متوقف میکند.
| فیلد | عمل |
|---|
| Name | نام Trigger را وارد کنید. |
عنصر تصویری اصلی — صفحه 143عنصر تصویری اصلی — صفحه 143عنصر تصویری اصلی — صفحه 143عنصر تصویری اصلی — صفحه 143عنصر تصویری اصلی — صفحه 143عنصر تصویری اصلی — صفحه 143© Sparx Systems 2026 — صفحهٔ 143 از ۴۲۲ — ایجادشده با Enterprise Architect
صفحهٔ منبع 144| Type | از فهرست کشویی Type یکی از Call، Change، Signal یا Time را انتخاب کنید:- Call: Event یک CallEvent است که با Invoke کردن Operation، Messageای به Object مرتبط میفرستد.
- Change: Event یک ChangeEvent است و Transition در نتیجهٔ تغییر مقدار یک Attribute رخ میدهد.
- Signal: Event یک SignalEvent و متناظر با دریافت یک Asynchronous Signal Instance است.
- Time: یک TimeEvent را مشخص میکند؛ یعنی لحظهای در زمان.
Code Generation برای StateMachineها در حال حاضر فقط Trigger Eventهای Change و Time را پشتیبانی میکند و به Specification Value نیاز دارد. در Simulation، هر Trigger باید یک Signal داشته باشد؛ نتیجه Accept Signal خواهد بود. |
| Specification | Event آغازکنندهٔ Transition را مشخص کنید. برای AcceptEventTimer Action میتوانید JavaScript Expressionای بنویسید که تعداد Tickهای انتظار را محاسبه کند. |
SendSignal Action و BroadcastSignal Action
SendSignal Action یک Target ActionPin و یک Signal دارد. Signal میتواند Input ActionPinهایی داشته باشد که Attribute Parameterهای آن را بهعنوان Argument Bind کنند. برای مثال:
::Sender: sig.binding_To_s1: Integer
در Model Simulation، SendSignal Action مقدار Argumentها را به Attributeهای Signal Instance ایجادشده منتقل میکند. Target ActionPin میتواند Object خالی داشته باشد تا Signal به Root فضای Simulation ارسال شود. اگر Target ActionPin وجود نداشته باشد Simulation روی Action متوقف میشود. اگر Target دارای Object باشد Signal به آن Object ارسال میشود. باید Pin Type مربوط به Target ActionPin را در Classifier آن Object تعیین کنید.
BroadcastSignal Action شبیه SendSignal Action است، با این تفاوت که Target ActionPin ندارد و در Simulation همیشه Signal را به Root دادههای Simulation میفرستد.
Signal ارسالی و Argumentهای همراه را از زبانهٔ «Signal» در Properties Window تعریف میکنید.
| فیلد/دکمه | عمل |
|---|
| Signal | روی دکمهٔ انتخاب کلیک کرده و Signal لازم را از «Select Signal» انتخاب کنید. |
| Attribute | از فهرست کشویی Attributeای را که قبلاً در Signal ساخته شده و Argumentها باید به آن مرتبط شوند انتخاب کنید. |
| Value | مقدار مناسب Attribute را وارد کنید. |
| Add | ActionPinهای لازم را از «Select Pin» انتخاب کنید تا Argumentهای Signal مشخص شوند. برای انتخاب بیش از یک Pin، Ctrl را نگه دارید. |
| Save | تغییرات را ذخیره کنید. |
عنصر تصویری اصلی — صفحه 144© Sparx Systems 2026 — صفحهٔ 144 از ۴۲۲ — ایجادشده با Enterprise Architect
صفحهٔ منبع 145CallBehavior
CallBehavior Action دارای Behaviorی مانند Activity و یک Result ActionPin قابل انتخاب برای نگهداری Return Value است. اگر Argument ActionPinها با Behavior Bind شده باشند، CallBehavior میتواند مقدار آنها را به Behavior منتقل کند. در Simulation اگر Action هیچ Behavior نداشته باشد، Simulation متوقف میشود.
SendObject Action
SendObject Action یک Copy از Object را از Requesting ActionPin به Target ActionPin میفرستد. در Simulation باید هر دو ActionPin وجود داشته باشند؛ در غیر این صورت Simulation روی Action متوقف میشود.
Structural Feature Action
StructuralFeature Action روی یک Modeling Structural Feature مانند Port، Part یا Attribute متعلق به Activity یا Classifier یک Object عمل میکند؛ Feature موردنظر در خود Action مشخص میشود. Enterprise Architect این Typeها را پشتیبانی میکند:
| Action | توضیح |
|---|
| AddStructuralFeatureValue | به یک Object Input ActionPin برای Target Object و یک Result Output ActionPin برای نگهداری نتیجهٔ خواندن نیاز دارد. اگر Object Port در Runtime مقدار نداشته باشد، Process روی Action متوقف میشود. در طراحی Model، Port باید به Port یک Object یا Object Node یک Activity متصل باشد، Propertyها صحیح تنظیم شوند و Value Port برای دریافت Input Value هنگام اجرای Action آماده باشد. Result ActionPin میتواند به Input Consume Port یا ActionPin متصل شود؛ برای مثال بهعنوان Input Value در WriteStructuralFeature Action بعدی. |
| ClearStructuralFeature | مقدار منفرد یک Structural Attribute یا Structural Port متعلق به Object یا Activity را پاک میکند و مقدار Structural Feature را null قرار میدهد. |
| ReadStructuralFeature | شبیه AddStructuralFeatureValue است، با این تفاوت که Value Port لازم نیست. در Simulation، اگر Port متعلق به Object در Runtime مقدار نداشته باشد، Simulation روی Action متوقف میشود. |
| RemoveStructuralFeatureValue | شبیه ClearStructuralFeature است اما از Value ActionPin برای دریافت مقدار استفاده میکند؛ اگر مقدار با Structural Feature مشخصشده یکسان باشد آن را null میکند، و اگر برابر نباشد مقدار Feature پاک نمیشود. |
| WriteStructuralFeature | از نظر رفتار با AddStructuralFeatureValue یکسان است. در Simulation، Value Port باید برای دریافت Input Value هنگام اجرای Action تنظیم شده باشد. |
تنظیم StructuralFeature
© Sparx Systems 2026 — صفحهٔ 145 از ۴۲۲ — ایجادشده با Enterprise Architect
صفحهٔ منبع 146- روی Action راستکلیک و Advanced | Set Structural Feature: Add را انتخاب کنید.
- در گفتوگوی «Select Property» Feature مناسب را Browse/Search کرده و دوبارکلیک کنید. نام و Location آن در فیلد structuralFeature از «Set Structural Feature» نمایش داده میشود.
- OK را بزنید.
ReadSelf
ReadSelf Action نام Host Object خود را در Result Port میخواند. باید یک Output ActionPin برای Result تنظیم کنید. Action باید درون Classای باشد که در Runtime Instance میشود. هنگامی که Simulation از Action عبور میکند، نام Instance آن Class در Result Port قرار میگیرد.
ReadSelf یکی از گروه Object Actionها، همراه با CreateObject و DestroyObject، است.
عنصر تصویری اصلی — صفحه 146© Sparx Systems 2026 — صفحهٔ 146 از ۴۲۲ — ایجادشده با Enterprise Architect
صفحهٔ منبع 147Variable Actionها
Variable Actionها ارتباط نزدیکی با Simulation رفتار Objectها و Actionهای اعمالشده بر آنها در یک Process دارند. آنها یک Association Variable به شکل Tagged Value با نام variable دارند که Value آن نام یک Object در Runtime است:
sim.ObjectName
Variable Action میتواند Variable را نهفقط بهصورت Object، بلکه بهصورت Property آن Object، مانند Attribute یا Port، ارائه دهد. برای مثال:
sim.a.a1
پارامتر a.a1 میتواند Integer Value داشته باشد.
Variable Actionها شامل ReadVariable، WriteVariable، ClearVariable، AddVariableValue و RemoveVariable هستند.
ReadVariable
ReadVariable Action یک Result Action Pin بهعنوان Output Port دارد. مقدار Port نتیجهای است که خوانده میشود و Copyای از Variable است؛ بنابراین تغییرات بعدی Variable روی مقدار خواندهشده اثر ندارد. برای نمونه، اگر sim.Object.a مقدار 3 داشته باشد و پس از خواندن به 5 تغییر کند، مقدار خواندهشده همچنان 3 است.
Before reading:
sim.Object.a = 3;
sim.Action1.result = null;
After reading:
sim.Object.a = 3;
sim.Action1.result = 3;
After a change in the value of the variable:
sim.Object.a = 5;
sim.Action2.value = 3;
در این مثال، Value یک Port از Action2 است که با Object Flow به Result Port از Action1 متصل شده است.
WriteVariable
این Action یک Value Action Pin بهعنوان Input Port دارد. مقدار Port در Variable نوشته میشود. Result Value یک Copy از Variable موجود در Value Port است.
ClearVariable
این Action همهٔ Valueهای یک Variable را پاک میکند؛ Variable میتواند Object یا Value باشد.
© Sparx Systems 2026 — صفحهٔ 147 از ۴۲۲ — ایجادشده با Enterprise Architect
صفحهٔ منبع 148AddVariableValue
این Action عملاً همان WriteVariable Action است، زیرا Variableهای فعلی Simulation از چند مقدار پشتیبانی نمیکنند.
RemoveVariableValue
این Action عملاً همان ClearVariable Action است، زیرا Variableهای فعلی Simulation از چند مقدار پشتیبانی نمیکنند.
© Sparx Systems 2026 — صفحهٔ 148 از ۴۲۲ — ایجادشده با Enterprise Architect
صفحهٔ منبع 149Pre/Post Conditionهای محلی
Actionها را میتوان با Noteهای Pre-condition و Post-condition دقیقتر تعریف کرد تا ورود به Action و خروج از آن Constraint شود.
اتصال Constraint به Action
- روی Action راستکلیک و New Child Element | Attach Constraint را انتخاب کنید. یک Note روی Diagram ساخته و به Action متصل میشود.
- روی Note راستکلیک و «View Properties» را انتخاب کنید؛ گفتوگوی «Constraint» باز میشود.
- در «Constraint Type» Type موردنیاز را از فهرست انتخاب کنید.
- در فیلد «Constraint» متن Constraint را وارد کنید.
- OK را بزنید.
عنصر تصویری اصلی — صفحه 149© Sparx Systems 2026 — صفحهٔ 149 از ۴۲۲ — ایجادشده با Enterprise Architect
صفحهٔ منبع 150Class Operationها در Diagramها
Operationهای Class را میتوان با CallOperation Action در هر Diagram، مانند Activity، Custom یا Analysis، نمایش داد. وقتی Operation بهصورت Action نشان داده میشود، Notation عنصر نام Operation را با پیشوند نام Class مبدأ نمایش میدهد.
افزودن Operation به Diagram
- Diagram مقصد را باز کنید.
- در Browser Window، Class را باز کرده و Operation موردنظر را پیدا کنید.
- Operation را روی Diagram Drag کنید.
- پس از افزودن، CallOperation Action با نام Class و Operation نمایش داده میشود.
تغییر Operation مرجع Action
- روی Action راستکلیک و Advanced | Set Operation را انتخاب کنید؛ گفتوگوی «Set Operation» باز میشود.
- در صورت نیاز در «Go To Namespace» Model حاوی Operation را انتخاب و Operation را Browse کنید.
- وقتی Operation را یافتید، دوبارکلیک کنید. Action با نام Classifier و Operation جدید بهروزرسانی میشود.
عنصر تصویری اصلی — صفحه 150عنصر تصویری اصلی — صفحه 150عنصر تصویری اصلی — صفحه 150© Sparx Systems 2026 — صفحهٔ 150 از ۴۲۲ — ایجادشده با Enterprise Architect
صفحهٔ منبع 151یادداشتها
- برای یافتن Operation مبدأ Action در Browser Window، روی Action راستکلیک و Find | Locate Operation in Project Browser را انتخاب کنید.
- برای نمایش Code تولیدشدهٔ قبلی برای Class حاوی Operation، روی Action کلیک و Ctrl+E یا F12 را فشار دهید. Code Editor با Code تولیدشده باز میشود؛ اگر Code تولید نشده باشد، Editor نمایش داده نمیشود.
- در Simulation، CallOperation Action باید Calling Operation و Target Object ActionPin داشته باشد و Operation متعلق به Object دریافتی از Target ActionPin باشد؛ در غیر این صورت Simulation روی Action متوقف میشود.
- اگر Property «Name» در CallOperation خالی باشد، نام Class Operation بهجای آن نمایش داده میشود. اگر نام Operation تغییر کند، نام نمایشدادهشده نیز بهروزرسانی میشود.
© Sparx Systems 2026 — صفحهٔ 151 از ۴۲۲ — ایجادشده با Enterprise Architect
صفحهٔ منبع 152Action Pin
توضیح
Action Pin برای تعریف Data Valueهایی است که وارد Action یا از آن خارج میشوند. Input Pin مقدارها را به Action میدهد و Output Pin نتیجههای Action را نگهداری میکند. منبع نمونهای از اتصال دو Action با Action Pin را نشان میدهد.
Action Pin را میتوان بیشتر مشخص کرد؛ برای مثال بهعنوان Exception Parameter، Stream یا State. مرتبطکردن State با Pin، State مقدارهای Input یا Output را تعیین میکند؛ مثلاً Pin میتواند «Orders» نام داشته باشد و State آن «Validated» یا «Canceled» باشد.
برای افزودن Action Pin، روی Action راستکلیک و New Child Element | Action Pin را انتخاب کنید. همچنین میتوانید Action Pinهای تخصصی را Assign کنید. Properties Window مربوط به Action Pin یک زبانهٔ «Pin» برای تعریف رفتارهای خاص Pin دارد.
Pin بهعنوان Argument برای Call Behavior و Call Operation Action استفاده میشود؛ نام و Parameterهای Pin در زبانهٔ «Arguments» از Properties Window مربوط به Action نمایش داده میشوند. اگر Action با Behavior معتبر مرتبط باشد، Parameterهای Behavior در فهرست «Parameter» برای Map یکبهیک Argument به Parameter ظاهر میشوند. فیلدهای «Argument» در زبانهٔ Pin فقط برای Pinهای متعلق به Call Action و تنها زمانی فعالاند که Action به Behavior معتبر با Parameterهای معتبر مرتبط باشد.
مشاهدهٔ این رفتار
- یک Activity بسازید و به آن Activity Parameter اضافه کنید: New Child Element | Activity Parameter.
- یک Action بسازید و Kind آن را در زبانهٔ Action روی CallBehavior بگذارید.
- Activity را Classifier Action قرار دهید: در زبانهٔ Element و بخش Advanced دکمهٔ Browse مربوط به Classifier را بزنید و Activity را انتخاب کنید.
- Features Window در زبانهٔ Interaction Points باز میشود. «Show Owned/Inherited» را فعال کنید؛ Activity Parameter در Defined Elements ظاهر میشود. Checkbox آن را انتخاب کنید.
- اکنون Action یک Action Pin برای Argument دارد و Activity Parameter بهعنوان Parameter آن Argument استفاده میشود.
Property objectState مربوط به Action Pin را نیز میتوان در زبانهٔ Pin تغییر داد.
عنصر تصویری اصلی — صفحه 152عنصر تصویری اصلی — صفحه 152© Sparx Systems 2026 — صفحهٔ 152 از ۴۲۲ — ایجادشده با Enterprise Architect
صفحهٔ منبع 153Assign کردن Action Pinها
علاوه بر افزودن Action Pin به هر Action، میتوانید Input/Output Action Pinهای تخصصی را به Actionهایی با Type مشخص ــ یعنی غیر از Basic یا Atomic ــ Assign کنید. این Pinها Propertyهای مختلف Action را نشان میدهند. آنها تا زمانی که قبلاً به Diagram اضافه نشده باشند بهصورت Structure قابل مشاهده نیستند، اما در Browser Window زیر Action بهعنوان Property فهرست میشوند.
فقط Pinهایی قابل Assign هستند که قبلاً به Action اضافه یا Assign شدهاند، یا همان لحظه برای Assign شدن ساخته میشوند.
Assign کردن Action Pin به Action
- روی Action در Diagram کلیک کنید، در Properties Window زبانهٔ Action را باز کنید، Kind درست را انتخاب و Save کنید.
- به زبانهٔ Element بروید و گروه Propertyهای Stereotype را انتخاب کنید. بسته به Action Type، فیلدهای متفاوتی ظاهر میشود. آنها را با نام Object مناسب، Browse کردن Object یا Checkbox تکمیل کنید. در Browser Screen میتوانید ActionPin موجود را Assign کنید یا با Add New یک Action Pin جدید ساخته و Assign کنید.
- Action Pinها روی Diagram نمایش داده نمیشوند اما زیر Action در Browser Window دیده میشوند. OK را بزنید تا به Properties Window بازگردید.
© Sparx Systems 2026 — صفحهٔ 153 از ۴۲۲ — ایجادشده با Enterprise Architect