افزونه Jira Misc Workflow Extensions در جیرا

افزونه JMWE در جیرا

افزونه JMWE در جیرا

معرفی

در نرم افزار جیرا فرآیند کاری (Workflow) از مهم‌ترین بخش‌های نرم‌افزار است که این امکان را فراهم می‌سازد تا روال‌ها و رویه‌های مختلف در تیم‌ها و سازمان را پیاده‌سازی کرد. تمامی ایشو‌ها در جیرا در طی یک فرآیند حرکت می‌کنند و به کمک workflow شما این امکان را دارید تا به کاربران اجازه دهید که ایشوها را مطابق با یک فرآیند از پیش تعیین شده حرکت دهند. یک فرآیند در نرم افزار جیرا تشکیل شده است از Status ها و Transition ها. Status یک ایشو نشان دهنده وضعیت فعلی ایشو است و در فرآیند کاربران میتوانند با Transition های مختلف ایشو را به Status مختلف انتقال دهند.

نمونه فرآیند در جیرا و وضعیت ها و انتقال ها

ادمین نرم افزار جیرا با قرار دادن Condition ها ، Validation ها و Post Function های مختلف امکان طراحی فرآیند های پیچیده را فراهم می‌سازد.

Condition : در بخش Condition تنظیم می‌کنید که در چه شرایطی امکان انتقال از یک Status به Status دیگر وجود دارد.

Validation : در بخش Validation تنظیم می‌کنید در صورتی که کاربر یک ایشو را از Status ای به Status دیگری انتقال می‌دهد چه مواردی را باید رعایت کند. برای مثال پر کردن یک فیلد خاص.

Post-Funtion : در بخش Post Function تنظیم می‌کنید زمانی که یک کاربر ایشو را به وضعیت جدید منتقل کرد چه اتفاقاتی به صورت خودکار و توسط سیستم رخ دهد. برای مثل ارسال یک ایمیل، پر شدن یک فیلد به صورت خودکار و …

این سه بخش اصلی ترین قسمت‌هایی هستند که ادمین جیرا در طراحی فرآیند با آن‌ها سرو کار خواهد داشت.

به صورت پیش‌فرض در جیرا این سه بخش شامل گزینه‌های محدودی هستند. اما به کمک افزونه‌ها می‌توان هر کدام از این بخش‌ها را توسعه داد. یکی از بهترین افزونه ها در این زمینه افزونه Jira Misc Workflow Extensions (JMWE) است. این افزونه امکانات بسیار خوبی را به هر کدام از این بخش‌ها اضافه می‌کند که کار طراحی فرآیند را برای ادمین جیرا بسیار راحت خواهد کرد.

یکی از مزیت های این افزونه این است که به ادمین جیرا این امکان را می‌دهد تا بدون کدنویسی workflow های پیچیده ای طراحی کند. در این بخش قصد داریم برخی از ویژگی‌هایی که این افزونه فراهم می سازد را بیان کنیم.

۱- بخش Condition :

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

در بسیار از موارد لازم است تنها نقش‌های خاصی درپروژه (مثلا Product Owner) یا تحت شرایط خاصی، Transition ها فعال باشند و در غیر این انتقال‌ها برای کاربر غیر فعال گردد. برای طراحی چنین حالاتی از Condition در Transition های یک فرآیند جیرا استفاده می‌شود. در صورتی که Condition و شرط طراحی شده برقرار باشد، انتقال به کاربر نمایش داده می‌شود، در غیر این صورت انتقال غیر فعال خواهد بود.

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

شرط های مختلف اضافه شده با افزونه JMWE

۲-۱- شرط گذاری بر اساس Status قبل (Previous Status Condition) :

این شرط این امکان را فراهم می‌سازد تا بر اساس Status قبل یک ایشو، اجازه Transition را به کاربران بدهید (یا Transition را غیر فعال و اجازه انتقال را ندهید).

شرط گذاری بر اساس Status قبل در جیرا

یک مثال کاربردی: فرآیند شکل زیر را در نظر بگیرید.

نمونه workflow ساده در جیرا

در این فرآیند زمانی که یک ایشو از وضعیت های Open یا In Progress به وضعیت Waitig for clarification انتقال داده می‌شود و کاربر، کار خود را بر روی ایشو انجام داده و قصد باز گرداندن ایشو به وضعیت پیشین خود را دارند، باید از انتقال Provide info استفاده کند. اما همان طور که در شکل قابل مشاهده است از وضعیت waiting for clarification دو انتقال با این نام وجود دارد. در این حالت برای نمایش انتقال صحیح کافی است در Condition مربوط به هر کدام از این دو انتقال شرط Previous Status Condition را قرار داده تا تنها انتقال صحیح به کاربر نمایش داده شود.

با قرار دادن این شرط بر روی هر دو انتقال در صورتی که ایشو از وضعیت Open به وضعیت Waiting for clarification منتقل شده باشد، انتقالی نمایش داده می‌شود که ایشو را به وضعیت Open باز می‌گرداند و در صورتی که ایشو از وضعیت In Progress به وضعیت Waiting for clarification منتقل شده باشد، انتقالی نمایش داده می‌شود که ایشو را مجددا به In Progress باز می‌گرداند.

۳-۱- مخفی کردن یک Transition

به کمک این گزینه این امکان فراهم خواهد شد تا ادمین یک انتقال را از کاربران مخفی کند تا به صورت دستی انجام نشود. در حالی که بتوان این انتقال را توسط ایشوی Parent آن یا از طریق API و یا یک اسکریپت انجام داد.

۴-۱- شرط بر روی Status یک ایشو لینک شده

در افزونه JMWE این امکان وجود دارد تا بر اساس وضعیت یک ایشو لینک شده، یک انتقال را در ایشو‌ی جاری، فعال یا غیر فعال کرد.

برای مثال شما با این گزینه این امکان را دارید تا تنها به کاربران زمانی اجازه انتقال یک ایشو را به مرحله Closed دهید که تمامی Sub-Task های آن در وضعیت Closed یا Done قرار گرفته باشند. در این صورت کاربر نخواهد توانست ایشویی را ببندد در حالی که Sub-task های آن همچنان در جریان یا باز هستند.

۵-۱- ایجاد شرط با اسکریپت (با زبان Groovy)

افزونه JMW علاوه بر اینکه به شما این امکان را می‌دهد تا بدون نیاز به کدنویسی شرط‌های مختلفی بر روی Transtion ها ایجاد کنید، امکان فعال یا غیر فعال کردن یک انتقال با یک اسکریپت با زبان Groovy را نیز فراهم می‌آورد. این گزینه این امکان را برای ادمین فراهم می‌اورد در صورتی که ویژگی مد نظر خود را در گزینه از پیش اماده در افزونه نیافید، از طریق کدهای اسکریپت شرط خود را قرار دهد.

۲- بخش Validators:

Validator در workflow های جیرا این امکان را می‌دهد تا هنگام انجام یک انتقال، مقادیر ایشو اعتبارسنجی شده و در صورت نیاز از کاربر خواسته شود آن‌ها را تغییر دهد. به صورت پیش فرض در جیرا، Validator ها بسیار محدود اند که با اضافه کردن افزونه JMWE گزینه‌های متنوعی به این بخش اضافه می‌شود که در اینجا به برخی از آن‌ها خواهیم پرداخت.

انواع Validator های اضافه شده با افزونه JMWE در جیرا

۱-۲- بررسی تغییر یک فیلد (Field required validator) :

این گزینه کاربر را در هنگام انتقال یک ایشو مجبور به تغییر مقداری خواهد کرد.

بررسی تغییر یک فیلد در افزونه JMWE جیرا

۲-۲- اجباری کردن کامنت (Comment required validator) :

به کمک این Validatior کاربر هنگام انتقال یک ایشو به وضعیت دیگر لازم است کامنت خود را وارد کند. در این Validator این امکان وجود دارد تا در صورت وارد نکردن کامنت از سوی کاربر یک خطای دلخواه نمایش داده شود.

اجباری کردن کامنت در جیرا با افزونه JMWE

۳-۲- اجباری کردن یک فیلد (Field required validator) :

به کمک این Validator نیز می‌توانید هنگام انتقال یک ایشو به وضعیت دیگر از کاربر بخواهید فیلد خاصی را پر کند. در صورت پر نشد فیلد مورد نظر یک خطای دلخواه به کاربر نمایش داده شود.

۴-۲- بررسی Status‌ پیشین ایشو (Previous status validator) :

در این Validator می‌توانید مطمئن شوید که کاربر در صورتی می‌تواند ایشو را به وضعیت دیگر انتقال دهد که حتما ایشو پیش‌تر در وضعیت خاصی قرار گرفته باشد. برای مثال اگر لازم است ایشوها حتما مرحله Manager Approve را طی کنند و مدیریت ایشو را تایید کند، می‌توانید از این گزینه استفاده نمایید.

بررسی Status‌ پیشین ایشو در جیرا

۵-۲- بررسی Status ایشو Parent (Parent status validator) :

به کمک این Validator می‌توانید مطمئن شوید که یک Sub-task زمانی به یک وضعیت دیگر انتقال می‌یابد که ایشو Parent آن در وضعیت خاصی قرار داده شده باشد. در غیر این صورت به کاربر خطا نمایش داده شود.

بررسی Status ایشو Parent در جیرا

۶-۲- بررسی Status ایشو لینک شده (Linked issues status validator) :

این Validator شبیه به گزینه قبلی است با این تفاوت که برای سایر ارتباط بین ایشو‌ها مورداستفاده قرار می‌گیرد. یک مثال کاربری : به کاربر زمانی اجازه انتقال Epic به وضعیت Closed را خواهید داد که تمامی Story های درون آن در وضعیت Closed قرار داشته باشند. در غیر این صورت خطای مناسب به کاربر نمایش داده شود.

۷-۲- بررسی ایشو‌های لینک شده (Linked issue(s) validator) :

به کمک این Validator مطمئن خواهید شد که کاربر زمانی می‌تواند ایشو را به وضعیت دیگر انتقال دهد که یک ایشو به ایشو‌ی جاری لینک کرده باشد.

بررسی ایشو‌های لینک شده در جیرا

۸-۲- ایجاد Validator با اسکریپت (Scripted (Groovy) validator) :

علاوه بر Validator های از پیش آماده شده افزونه JMWE، این افزونه امکان اسکریپت نویسی در Workflow های جیرا نیز فراهم می‌کند. مقدار بازگشتی از یک اسکریپت در Validator باید مقدار true یا false باشد. در صورتی که مقدار بازگشتی false باشد، یک خطا دلخواه به کاربر نشان داده خواهد شد.

ایجاد Validator با اسکریپت در جیرا

۳- بخش Post-Function:

زمانی که در یک workflow‌ جیرا، نیاز باشد پس از انجام یک انتقال (Transition)، عملیاتی به صورت خودکار صورت پذیرد از Post-Function ها استفاده می‌شود. یک Post-Fucntion می‌تواند شامل ارسال یک ایمیل اطلاع‌رسانی، تغییر یک فیلد در ایشو، تخصیص به یک شخص یا نقش خاص، ایجاد یا کپی کردن یک ایشو جدید، انتقال ایشو‌ دیگری به وضعیت جدید و بسیاری از کارهای خودکار دیگر باشد.

به صورت پیش‌فرض در جیرا بخش Post-Function در یک Workflow گزینه‌های زیادی را شامل نمی‌شود. در این بخش نیز افزونه JMWE ویژگی‌های متنوعی را ایجاد کرده است که به آن‌ها اشاره خواهیم کرد.

۱-۳- بروزرسانی فیلدها با Post-Function:

۱-۱-۳- افزایش مقدار یک فیلد (Increase value of field) :

به کمک این گزینه می‌توانید مقدار یک فیلد عددی را در یک ایشو، پس از انجام انتقال به مقدار ۱ واحد افزایش دهید. از این گزینه می‌توان برای زمانی استفاده کرد که بخواهیم تعداد دفعاتی که یک ایشو، مسیری در workflow را طی کرده است را شمارش کنیم.

افزایش مقدار یک فیلد در Post-function جیرا

۲-۱-۳- مقداردهی به یک فیلد بر اساس ویژگی‌ یوزر‌های ایشو (Set field value from user property value) :

به کمک این گزینه می‌توانید اطلاعات مربوط به کاربران یک ایشو مانند Reporter، Assignee، Creator یا فیلدهای سفارشی ایجاد شده (از نوع User Picker) را در یک فیلد دلخواه وارد کنید.

مقداردهی به یک فیلد بر اساس ویژگی‌ یوزر‌های ایشو در جیرا

۳-۱-۳- مقداردهی به یک فیلد (Set field value) :

با این گزینه پس از اجرای یک انتقال می‌توانید مقدار یک فیلد ایشو را مقدار دلخواه دهید. مقدار مورد نظر می‌تواند مقداری ثابت باشد یا مقداری بر اساس محاسبه یک اسکریپت باشد.

 مقداردهی به یک فیلد در post-function جیرا

۴-۱-۳- ایجاد یا کپی کردن یک ایشو (Create/clone issue(s)):

در صورتی که بخواهید پس از اجرا شدن یک انتقال یک ایشو جدید به صورت خودکار ایجاد گردد یا از یک ایشو یک کپی تهیه شود از این گزینه استفاده کنید. در هنگام ایجاد ایشو به صورت خودکار، مقادیر لازم برای ایجاد ایشو را می‌توانید در Post-Function تنظیم کنید. این مقادیر می‌توانند ثابت یا به صورت داینامیک بر اساس سایر فیلد‌ها تکمیل گردند.

ایجاد یا کپی کردن یک ایشو با Post-function در جیرا

۵-۱-۳- کپی یا اضافه کردن مقدار به فیلد‌های ایشوی Parent:

به کمک گزینه ‌های Copy field value to parent یا Add field value to parent می‌توانید یک (یا چند مقدار برای فیلدهایی مانند Component، fix-version و ..) را در فیلد Parent آن کپی یا به مقدارهای آن اضافه کنید.

۶-۱-۳- کپی یک مقدار از ایشو Parent یا ایشو لینک شده:

به کمک گزینه‌های Copy field value from parent و Copy field value to linked issues می‌توانید مقادیر فیلدها را از ایشو لینک شده به ایشو جاری یا از ایشوی Parent برای Sub-task ها به ایشو جاری کپی کنید.

هم چنین با استفاده از گزینه Set field value of linked issues می‌توانید پس از انجام یک انتقال در یک ایشو، مقدار یک فیلد را در تمامی ایشو‌های لینک شده به آن تغییر دهید. این مقدار می‌تواند مقداری ثابت یا مقداری بر اساس سایر فیلد‌ها باشد.

۷-۱-۳- کپی کردن مقدار یک فیلد در فیلد دیگر (Copy value from field to field):

به کمک این گزینه می‌توانید پس از انجام یک انتقال، مقدار یک فیلد را در فیلد دیگر کیی کنید.

علاوه بر موارد ذکر شده در این بخش، گزینه‌های دیگری نیز وجود دارد که به اختصار بیان می‌شود:

  1. تنظیم Security Level با گزینهSet issue security from user role
  2. لینک کردن ایشو جاری به ایشو دیگر با گزینه Link issues to the current issue
  3. حذف ایشوهای لینک شده به ایشوی جاری با Unlink issues from the current issue
  4. کپی کردن مقدار یک فیلد در فیلد دیگر با Copy value from field to field
  5. هم چنین در این بخش نیز امکان اسکریپت نویسی به کمک بخش Scripted (Groovy) operation on issue وجود دارد.

۲-۳- اطلاع‌رسانی به کاربر در Post-Function

افزونه JMWE در بخش Post-Function ویژگی‌هایی در اختیار قرار می‌دهد که به کمک آن می‌توانید پس از انجام یک Transition به روش‌های مختلفی به کاربر اطلاع‌سانی کنید. این گزینه‌ها شامل موارد زیر است:

۱-۲-۳- ارسال ایمیل که می‌تواند شامل فایل‌های ضمیمه شده در ایشو و یا مقادیری از ایشو نیز باشد. این امکان با گزینه Email Issue امکان پذیر است.

۲-۲-۳- کامنت گذاری بر روی ایشو. این کامنت می‌تواند شامل اطلاعاتی از فیلد‌های ایشو جاری باشد یا مقادیر پیشرفته‌تر نیز به کمک اسکریپت امکان پذیر است. برای این کار از گزینه Comment Issue استفاده کنید.

۳-۲-۳- کامنت گذاری بر روی ایشو‌های لینک شده. این حالت شبیه به گزینه قبل است با این تفاوت که امکان کامنت گذاری بر روی ایشوهای لینک شده را فراهم می‌سازد. برای این‌کار از Comment linked Issues استفاده کنید.

۴-۲-۳- نمایش یک پیام به کاربر. به کمک گزینه Display Message to User می‌توانید پس از انجام یک انتقال در یک ایشو، یک پیام دلخواه به کاربر نمایش دهید. این پیام در Screen مربوط به Transition قابل نمایش است.

۳-۳- تخصیص ایشو در Post-Function

به طور معمول تخصیص ایشو به یک شخص یا نقش خاص پس از انتقال ایشو از متداول‌ترین Post-Function های مورد استفاده در workflow های جیرا است. افزونه JMWE برای این موضوع نیز Post-Funtion های مناسبی به جیرا اضافه خواهد کرد. در اینجا به این موارد می‌پردازیم.

۱-۳-۳- تخصیص ایشو یه عضو یک نقش (Assign to role member ):

زمانی که قصد دارید یک ایشو پس از انجام یک انتقال و قرار گرفتن در یک وضعیت به کاربری در یک نقش تخصیص یابد از این گزینه استفاده کنید. این گزینه می‌تواند برای چنین سناریویی مورد استفاده قرار گیرد: “زمانی یک توسعه دهنده یک ایشو را انجام و به مرحله بعد ارسال کرد به صورت خودکار به PO یا مدیر QA تخصیص یابد.”

تخصیص ایشو یه عضو یک نقش در Post-function جیرا

۲-۳-۳- تخصیص ایشو به آخرین عضو یک نقش (Assign to last role member):

برای درک بهتر این گزینه این سناریو را در نظر بگیرید. “زمانی که تیم QA یک ایشو رو بررسی کردند و با انتقال faild به مرحله قبل بازگردانند لازم است به آخرین توسعه دهنده‌ای تخصیص یابد که پیشتر نیز بر روی ایشو کار کرده است.”

برای پیاده‌سازی این سناریو شما می‌توانید از این گزینه استفاده کنید. در این صورت جیرا، ایشو‌ را به آخرین کاربر در یک نقش تخصیص می‌دهد که اخیرا ایشو نیز به او تخصیص داده شده است.

۴-۳- انتقال ایشو در Post-Function

موارد دیگری که افزونه JMWE در بخش Post-Funtion در workflow های جیرا اضافه می‌کند، بحث انتقال ایشو‌ها به صورت خودکار پس از انتقال یک ایشو است. برای این موضوع نیز موارد را بررسی خواهیم کرد.

۱-۴-۳- انتقال ایشو (Transition Issue) :

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

انتقال ایشو با Post-function در جیرا

۲-۴-۳- انتقال ایشو Parent یا ایشو لینک شده:

با استفاده از گزینه‌های Transition linked issues و Transition parent issue این امکان وجود خواهد داشت تا پس از انتقال یک ایشو، ایشو‌های لینک شده به ایشوی جاری و یا ایشوی Parent نیز به وضعیت دیگری انتقال یابد.

۳-۴-۳- بازگشت به وضعیت قبل (Return to Previous Status) :

این گزینه بیشتر زمانی مورد استفاده قرار می‌گیرد که چندین انتقال به یک Status منجر شوند و شما بخواهید کاربر بدون دانستن وضعیت قبل، آن را به وضعیت پیشین ایشو انتقال دهد. برای درک بهتر این گزینه مثال زیر را در نظر بگیرید.

یک جریان کاری ساده در جیرا

در این فرآیند، دو انتقال Escalate منجر به وضعیت Escalated خواهند شد. در این فرآیند قصد داریم پس از انجام کار در این وضعیت کاربر ایشو رو به وضعیت قبلی خود انتقال دهد. دو راهکار برای این موضوع وجود دارد.

۱- ایجاد دو Transition از وضعیت Escalated و قرار دادن شرط Previous Status Condition بر روی هر کدام از انتقال‌ها

در این صورت هر کدام از انتقال‌ها تنها زمانی به کاربر نمایش داده می‌شود که مربوط به وضعیت پیشین آن باشد

۲- ایجاد یک انتقال از Escalated به خود آن و اضافه کردن Post-Function از نوع Return to Previous Status

در این صورت با ایجاد یک انتقال نیازمندی برطرف خواهد شد. توجه داشته باشید که پس از ایجاد این Post-Function‌ لازم است آن را بعد از Post-Function با نام Set issue status to the linked status of the destination workflow step که به صورت پیش‌فرض در بخش Post-Function وجود دارد انتقال دهید.

در صورتی که شما از این افزونه استفاده می کنید، در مورد این افزونه سوالی دارید، ‌نظرتان را در مورد این افزونه در بخش کامنت همین صفحه با دیگران اشتراک بگذارید.
هم چنین در صورتی که برای نصب این افزونه به کمک نیاز دارید، با ما در تماس باشید.

کارشناسی ارشد مهندسی صنایع و علاقه مند به مباحث لینوکس، مدیریت پروژه چابک (Agile) و مدیریت سرویس (ITSM) در حوزه‌های فناوری اطلاعات

نظرات

  • کاووسی ۱۳۹۹/۰۵/۱۷ در ۴:۱۳ ب٫ظ پاسخ

    عالی عالی!
    واقعا چند تا مقاله ای که گذاشتید در مورد افزونه ها خیلی خوب و کامل بودن
    ان شالله ادامه دار باشه
    هم چنین من چند سالی هست ادمین جیرا هستم … و مایلم مشارکت داشته باشیم در این زمینه

  • مرضیه ۱۳۹۹/۰۵/۲۲ در ۴:۴۹ ق٫ظ پاسخ

    درود بر شما
    مقاله کامل و جامعی نوشتید
    یه چنین مقاله ای در مورد افزونه کانفلونس هم بنویسید و امکاناتش رو بگید

    • مهدی حیدری ۱۳۹۹/۰۵/۲۲ در ۲:۴۵ ب٫ظ پاسخ

      با سلام خدمت شما
      ممنون از نظر شما
      در مورد Confluence باید خدمتتون عرض کنم که کانفلونس یک افزونه نیست.
      بلکه یک سامانه جداگانه است (برای راه اندازی نیاز به سرور و دیتابیس جداگانه داره) و با هدف مستند سازی در قالب ویکی مورد استفاده قرار می‌گیرد.
      نحوه بکارگیری این ابزار رو هم در دستور کار داریم تا به طور کامل شرح بشه و امکاناتش بررسی کنیم

      با تشکر

نظرتان را بنویسید

آدرس ایمیل شما منتشر نخواهد شد.*