یک نمودار فعالیت UML مدلسازی میکندچگونه کارها جریان مییابنددر یک فرآیند: اقدامات انجامشده، تصمیمات گرفتهشده، کارهای موازی و مسیرهای تکمیل. PlantUML به شما اجازه میدهد آن مدل را به صورت متن توصیف کنید و سپس آن را به عنوان یک نمودار رندر کنید—روشی مفید زمانی که میخواهید نمودارهایی داشته باشید که به راحتی قابل بازبینی، بررسی و نگهداری در کنار مستندات پروژه باشند. نحو فعلی فعالیت PlantUML از کلمات کلیدی قابلخواندن مانندشروع, اگر, تکرار وشاخهبندی؛ نحو قدیمیتر فعالیت هنوز پشتیبانی میشود، اما برای نمودارهای جدید، نحو جدید توصیه میشود.

۱. چه چیزی را مدلسازی کنیم
از یک نمودار فعالیت برای توضیح یک فرآیند یا الگوریتم استفاده کنید، برای مثال:

-
روند پرداخت مشتری
-
یک فرآیند تأیید
-
یک خط لوله واردات داده
-
مراحل یک مورد استفاده
-
کار تقسیمشده بین افراد، تیمها یا اجزای سیستم
یک فعالیت یک واحد کاری است، مانند «اعتبارسنجی سفارش». یکجریان کنترلفعالیتها را به هم متصل میکند و ترتیب آنها را نشان میدهد. یکتصمیمبین مسیرهای جایگزین انتخاب میکند؛جریانهای موازیکارهایی را نشان میدهند که میتوانند به صورت همزمان پیش بروند. نمودار باید رفتار را شفاف کند، نه اینکه تلاش کند هر جزئیات پیادهسازی را مستند کند.
یک قاعده کلی مفید: اگر سوال اصلی این است که «بعد چه اتفاقی میافتد و تحت چه شرایطی؟»، یک نمودار فعالیت گزینه مناسبی است.
۲. مبانی PlantUML
یک نمودار PlantUML با@startuml و با ” پایان مییابد@enduml. در نحو فعلی فعالیت:

-
startگره اولیه را مشخص میکند. -
:Action;یک عمل را تعریف میکند. -
if (...) then (...)بر اساس یک شرط انشعاب ایجاد میکند. -
endifشرط را میبندد. -
stopیک جریان را پایان میدهد. -
repeatوrepeat whileتکرار را مدلسازی میکند. -
fork,fork again، وend forkکار موازی را مدلسازی میکند.
عملها به ترتیب نوشته میشوند و بهصورت ضمنی به هم متصل هستند. میتوانید برچسبهایی به انشعابها اضافه کنید و از partition برای گروهبندی کارها بر اساس مسئولیت یا نقش استفاده کنید.
در اینجا یک مثال مینیمال وجود دارد:

@startuml
start
:درخواست دریافت شود;
:اعتبارسنجی درخواست;
stop
@enduml
۳. تصمیمگیریها و مسیرهای جایگزین
استفاده از ifوقتی فرآیند انتخابی انجام میدهد. برچسبهای شاخه باید نتایج شرط را بیان کنند، نه اینکه صرفاً شرط را تکرار کنند.

@startuml
start
:درخواست سفارش دریافت شود;
:بررسی موجودی;
if (آیا همه اقلام موجود هستند؟) then (بله)
:اقلام را رزرو کنید;
:درخواست پرداخت;
else (خیر)
:مشتری را مطلع کنید;
stop
endif
:تأیید سفارش;
stop
@enduml
در اینجا، ifیک تصمیم را معرفی میکند و endifآن را میبندد. برچسبهای بله و خیرگزینههای جایگزین را آشکار میکنند. وقتی مسیرها پس از endifبه یک عمل مشترک ادامه میدهند، دوباره به جریان اصلی پیوست میکنند.
نکته مدلسازی:در مورد آنچه در هر نتیجه معنادار رخ میدهد، صریح باشید. اگر مسیر خطا، انقضای زمان یا رد شدن برای ذینفعان مهم است، آن را نشان دهید تا اینکه آن را ضمنی بگذارید.
۴. حلقهها و تلاش مجدد
از یک حلقه استفاده کنید وقتی که یک عمل یا گروهی از عملها قابل تکرار هستند. این مثال تا زمانی که ورودی اعتبارسنجی شود، به درخواست ورودی ادامه میدهد:

@startuml
start
:خواندن دادههای ارسالی;
repeat
:اعتبارسنجی دادهها;
if (اعتبار؟) then (بله)
:ذخیره دادهها;
break
else (خیر)
:نمایش خطاهای اعتبارسنجی;
:درخواست از کاربر برای اصلاح دادهها;
endif
repeat while (آیا کاربر ادامه میدهد؟) is (بله) not (خیر)
stop
@enduml
حلقهها ممکن است اگر شرط خروج مبهم باشد، خواندن آنها دشوار باشد. مشخص کنید چه چیزی باعث تلاش مجدد میشود و چه چیزی تکرار را پایان میدهد—بهویژه زمانی که تلاشهای مجدد محدود هستند یا قابل لغو میباشند.
۵. کار موازی و همگامسازی
از fork زمانی که اقدامات مستقل میتوانند همزمان رخ دهند، و end fork زمانی که مسیرها باید پیش از ادامه فرآیند همگامسازی شوند.

@startuml
start
:سفارش تأیید شد;
fork
:ارسال ایمیل تأیید;
fork again
:تهیه لیست برداشت انبار;
fork again
:بهروزرسانی داشبورد فروش;
end fork
:علامتگذاری سفارش بهعنوان در حال پردازش;
stop
@enduml
یک fork لزوماً به معنای افراد جداگانه نیست؛ میتواند رفتار همزمان سیستم را نشان دهد. تنها زمانی از آن استفاده کنید که اقدامات واقعاً بتوانند بهصورت موازی رخ دهند. اگر یک وظیفه باید پیش از شروع وظیفه دیگر به پایان برسد، آنها را بهصورت متوالی مدلسازی کنید.
۶. مسیرهای شناور با بخشبندی
بخشبندیها اقدامات را بر اساس نقش، تیم یا سیستم مسئول گروهبندی میکنند. این کار میتواند تحویلها را بدون تغییر در خود فرآیند شفاف کند. PlantUML از گروهبندی فعالیتها با partition.

@startuml
start
partition مشتری {
:ثبت سفارش;
}
partition "سرویس سفارش" {
:اعتبارسنجی سفارش;
if (سفارش معتبر است؟) then (بله)
:ایجاد رکورد سفارش;
else (خیر)
:بازگرداندن خطاهای اعتبارسنجی;
stop
endif
}
partition انبار {
:آمادهسازی ارسال;
}
partition "سرویس سفارش" {
:ارسال تأییدیه;
}
stop
@enduml
برچسبهای نوارها را طوری انتخاب کنید که با تقسیم واقعی مسئولیتها مطابقت داشته باشند. از ایجاد یک partition جدید برای هر جزء کوچک خودداری کنید؛ تعداد زیاد نوارها میتواند اسکن نمودار را دشوارتر کند.
۷. اشیاء داده و یادداشتها
برخی گردشهای کاری از نمایش ورودیها یا خروجیهای مهم بهره میبرند. نمودارهای فعالیت PlantUML از استریوتیپهای گره شیء پشتیبانی میکنند؛ یادداشتها نیز میتوانند بدون تبدیل هر برچسب عمل به یک پاراگراف، زمینه را اضافه کنند.

@startuml
start
:درخواست پرداخت را دریافت کنید;
:پرداخت را مجاز کنید;
note right
از پاسخ مجوز ارائهدهنده پرداخت
استفاده میشود.
end note
:نتیجه پرداخت را ثبت کنید;
stop
@enduml
برچسبهای فعالیت اصلی را کوتاه نگه دارید. قوانین کسبوکار، فرضیات یا توضیحات را در یادداشتها قرار دهید زمانی که خوانندگان به آنها نیاز دارند، اما خود آنها گامهایی در جریان نیستند.
۸. مثال کامل: پرداخت آنلاین
این مثال بزرگتر، partitionها، یک تصمیم، یک مسیر جایگزین و کار موازی را ترکیب میکند.

@startuml
title پرداخت آنلاین
start
partition مشتری {
:مرور سبد خرید;
:ارسال پرداخت;
}
partition "سرویس سفارش" {
:اعتبارسنجی سبد خرید و آدرس;
if (سبد خرید و آدرس معتبر هستند؟) then (بله)
:محاسبه مجموع;
else (خیر)
:نمایش خطاهای اعتبارسنجی;
stop
endif
}
partition "سرویس پرداخت" {
:پرداخت را مجاز کنید;
if (پرداخت تأیید شد؟) then (تأیید شده)
:دریافت پرداخت;
else (رد شده)
:بازگرداندن شکست پرداخت;
stop
endif
}
partition "سرویس سفارش" {
:ایجاد سفارش;
}
fork
partition "سرویس اطلاعرسانی" {
:ارسال تأییدیه سفارش;
}
fork again
partition انبار {
:نوبتدهی سفارش برای چیدمان;
}
end fork
partition "سرویس سفارش" {
:نمایش تأییدیه سفارش;
}
stop
@enduml

آن را از بالا به پایین بخوانید: مشتری پرداخت را ارسال میکند، سرویس سفارش آن را اعتبارسنجی میکند، پرداخت مجاز میشود و سفارش ایجاد میشود. پس از آن، تأییدیه و آمادهسازی انبار به صورت موازی اجرا میشوند. اگر اعتبارسنجی یا پرداخت شکست بخورد، جریان از طریق مسیر شکست مربوطه پایان مییابد.
۹. گردش کار نمودار-به-کد
یک گردش کار عملی عبارت است از:
گردش کار نمودار-به-کد
یک گردش کار عملی عبارت است از:
-
فرآیند را به زبان ساده توصیف کنید.شروع، پایان، اقدامات اصلی، تصمیمها، استثناها، وظایف موازی و نقشهای مسئول را شناسایی کنید.
-
یک پیشنویس اولیه PlantUML بنویسید.قبل از سبکبندی، بر منطق تمرکز کنید.
-
آن را رندر کرده و بازرسی کنید.بررسی کنید که نتیجه بهطور طبیعی خوانده شود و شاخهها و حلقهها قابلفهم باشند.
-
منطق را با ذینفعان بازبینی کنید.رندر کردن صرفاً سینتکس را بررسی میکند، نه درستی فرآیند را.
-
منبع را بازبینی کرده و آن را همراه با پروژه ذخیره کنید.نمودارهای مبتنی بر متن بهراحتی قابل مقایسه (diff) و بازبینی در کنار سایر مستندات هستند.
برای رندر محلی، ابزار خط فرمان PlantUML میتواند فایلهای نمودار تولید کند؛ ویرایشگرهای مبتنی بر مرورگر برای پیشنویسهای سریع و پیشنمایشها مناسب هستند. PlantUML همچنین یک ویرایشگر مبتنی بر مرورگر ارائه میدهد، در حالی که VPasCode یک ویرایشگر مبتنی بر مرورگر با پیشنمایش زنده و پشتیبانی از نمودارهای فعالیت PlantUML فراهم میکند.
-
فرآیند را به زبان ساده توصیف کنید.شروع، پایان، اقدامات اصلی، تصمیمها، استثناها، وظایف موازی و نقشهای مسئول را شناسایی کنید.
-
یک پیشنویس اولیه PlantUML بنویسید.قبل از سبکبندی، بر منطق تمرکز کنید.
-
آن را رندر کرده و بازرسی کنید.بررسی کنید که نتیجه بهطور طبیعی خوانده شود و شاخهها و حلقهها قابلفهم باشند.
-
منطق را با ذینفعان بازبینی کنید.رندر کردن صرفاً سینتکس را بررسی میکند، نه درستی فرآیند را.
-
منبع را بازبینی کرده و آن را همراه با پروژه ذخیره کنید.نمودارهای مبتنی بر متن بهراحتی قابل مقایسه (diff) و بازبینی در کنار سایر مستندات هستند.
برای رندر محلی، ابزار خط فرمان PlantUML میتواند فایلهای نمودار تولید کند؛ ویرایشگرهای مبتنی بر مرورگر برای پیشنویسهای سریع و پیشنمایشها مناسب هستند. PlantUML همچنین یک ویرایشگر مبتنی بر مرورگر ارائه میدهد، در حالی که VPasCode یک ویرایشگر مبتنی بر مرورگر با پیشنمایش زنده و پشتیبانی از نمودارهای فعالیت PlantUML فراهم میکند.
۱۰. استفاده از VPasCode Visual Paradigm و کمک هوش مصنوعی
VPasCode ویرایشگر متنبهنمودار مبتنی بر مرورگر Visual Paradigm است. پشتیبانی PlantUML آن شامل نمودارهای فعالیت میشود و ویرایشگر آن رندر زنده ارائه میدهد. Visual Paradigm همچنین تولید نمودار مبتنی بر زبان طبیعی داخلی و کمک هوش مصنوعی برای اصلاح یا تصحیح کد نمودار را توصیف میکند.
یک گردش کار مفید با کمک هوش مصنوعی:

-
درخواست را بر اساس رفتار ارائه دهید، نه صرفاً نوع نمودار.به عنوان مثال:
«یک نمودار فعالیت PlantUML برای پرداخت آنلاین ایجاد کنید. شامل اعتبارسنجی سبد خرید، اعتبارسنجی آدرس، مجوز پرداخت، مسیرهای شکست، ایجاد سفارش، و ایمیل تأیید و آمادهسازی انبار به صورت موازی باشد. از بخشبندی (partition) برای مشتری، سرویس سفارش، سرویس پرداخت، سرویس اطلاعرسانی و انبار استفاده کنید. از سینتکس فعلی فعالیت PlantUML استفاده کنید.» -
منبع تولیدشده را بازرسی کنید.بررسی کنید که از «
@startuml/@enduml، که هر شاخه نشاندهنده یک شرایط واقعی است و مسیرهای شکست یا جایگزین مدیریت میشوند. -
آن را در VPasCode رندر کنید.از پیشنمایش برای شناسایی خطاهای نحوی، برچسبهای گیجکننده یا طرحبندیهای بیش از حد پیچیده استفاده کنید.
-
PlantUML را خودتان یا با ویرایشهای هدفمند هوش مصنوعی اصلاح کنید.درخواست تغییر خاصی بدهید، مانند «افزودن مسیر انقضای پرداخت» یا «ترتیبدهی به آمادهسازی انبار پس از ایجاد سفارش به صورت توالیوار.»
-
فرآیند را با کسی که آن را میشناسد، اعتبارسنجی کنید.هوش مصنوعی میتواند یک نمودار محتمل را پیشنویس کند، اما نمیتواند تأیید کند که فرآیند واقعی سازمان شما صحیح است.
کنترلهای دقیق و در دسترس بودن ویژگیهای VPasCode ممکن است بسته به نسخه محصول متفاوت باشد؛ گزینههای فعلی را در ویرایشگری که استفاده میکنید، تأیید کنید.
۱۱. گردش کار مدلسازی Visual Paradigm
وقتی میخواهید مستقیماً با منبع نمودار و پیشنمایش کار کنید، از VPasCode استفاده کنید. وقتی وظیفه نیاز به ویرایش گرافیکی یا کارهای مدلسازی گستردهتر دارد، از محیط مدلسازی Visual Paradigm استفاده کنید. راهنمای Visual Paradigm یک گردش کار شامل تولید یا وارد کردن نمودار و سپس اصلاح آن در ویرایشگر بصری را توصیف میکند؛ مسیرهای دقیق وارد کردن ممکن است به محصول و نسخه بستگی داشته باشد.
یک تحویل منطقی به این صورت است:

-
پیشنویس و تکرار در PlantUML.
-
نمودار رندر شده و منبع را برای بازبینی به اشتراک بگذارید.
-
اگر به ویرایش بصری یا سایر قابلیتهای مدلسازی نیاز دارید، آن را در ویرایشگر مربوطه Visual Paradigm باز کنید یا وارد آن کنید.
-
منبع PlantUML را به عنوان نسخه نگهداریشده نگه دارید اگر منبع مورد اعتماد تیم است؛ از انجام همزمان ویرایشهای متناقض در دو مکان بدون اطلاع خودداری کنید.
۱۲. اشتباهات رایج و چکلیست کیفیت
قبل از به اشتراک گذاشتن یک نمودار، بررسی کنید:

-
آیا شروعی واضح و پایان معناداری دارد؟
-
آیا هر اقدام یک بخش قابل شناسایی از کار را توصیف میکند؟
-
آیا نتایج تصمیمگیری به وضوح برچسبگذاری شدهاند؟
-
آیا مسیرهای رد، خطا، انقضا یا لغو در مواردی که اهمیت دارند، گنجانده شدهاند؟
-
آیا شرایط حلقه، رفتار تکرار و خروج را واضح میکنند؟
-
آیا اقدامات موازی واقعاً مستقل هستند و همگامسازی در موارد لازم نشان داده شده است؟
-
آیا بخشها مرزهای مالکیت مفید را نشان میدهند؟
-
آیا یک خواننده میتواند جریان را بدون خواندن برچسبهای طولانی اقدامات درک کند؟
-
آیا نمودار رندر شده با فرآیند واقعی مطابقت دارد؟
یک نمودار فعالیت خوب، طولانیترین یا جزئیترین نمودار نیست. بلکه کوچکترین نموداری است که گردش کار، تصمیمها، مسئولیتها و استثناهای مهم را شفاف میکند.
مرجع سریع نحو
| هدف | الگوی PlantUML |
|---|---|
| شروع | شروع |
| عمل | :انجام کاری; |
| تصمیمگیری | if (شرط؟) then (بله) ... else (خیر) ... endif |
| حلقه | repeat ... repeat while (شرط؟) |
| کار موازی | fork ... fork again ... end fork |
| گروه مسئولیت | partition Role { ... } |
| پایان | توقف |
نمونهها از نحو فعلی نمودار فعالیت PlantUML استفاده میکنند. برای ساختارهای غیرمعمول یا رفتارهای رندرینگ خاص نسخه، به مرجع نمودار فعالیت PlantUML مراجعه کنید.
This post is also available in English, Español, Français, Bahasa Indonesia, 日本語, Polski and Ру́сский.







