نحوۀ توسعه پلاگین برای ProM

آیا تابحال براتون پیش اومده که دنبال یکسری مطالب درسی و آکادمیک باشید و هیچ‌جا پیداش نکنید؟ این مسئله برای من که در زمینۀ نرم‌افزار فعالیت دارم، بارها و بارها اتفاق افتاده. منظورم فقط منابع فارسی نیست، بلکه بعضی اوقات درمورد منابع انگلیسی هم چنین مسئله‌ای رو تجربه کردم. شاید شما که این مطلب رو میخونی و مهندس کامپیوتر هم هستی، بگی که خُب موردی نداره، برو داخل سایت StackOverflow بعد سوالت رو مطرح کن و جواب بگیر؛ و البته این پاسخ شما درست هست، اما ...اما در پروژه‌های مقیاس بزرگ و کارهایی که یک جواب ساده ندارند، پرسش و پاسخ خیلی آدم رو درگیر میکنه و نیازمند گذاشتن وقت زیادی هست. خلاصه سَرتون رو درد نیارم، خوندن یک پُست ساده در ویرگول اونهم به زبان فارسی، خیلی ساده‌تر از 100 تا پرسش و پاسخ مختلف و پیدا کردن و خوندن کلی مطلب متفاوت هست.پُستی که در حال بازدیدش هستید، نحوۀ توسعۀ یک پلاگین ساده برای نرم‌افزار ProM هست. اگر با ProM آشنایی ندارید که خُب این مطلب برای شما فایده‌ای نداره؛ درغیراینصورت اگر با ProM آشنا هستید و قبلاً باهاش کار کردید و الآن قصد این رو دارید که یک پلاگین جدید براش بسازید، این پُست رو بخونید.فاز اول: آماده‌سازیدر فاز اول، آماده‌سازی محیط رو براتون خواهم گفت و در ادامه به بحث توسعۀ پلاگین خواهیم پرداخت.1) دانلود و نصب JDKاول از همه باید بدونید که کل عملیات توسعۀ پلاگین در ProM با زبان جاوا هست. بنابراین اول JDK باید روی کامپیوتر شما نصب باشه. پیشنهاد میشه که JDK 8 رو نصب کنید. البته نسخه‌های بالاتری هم وجود داره که بنده شخصاً تست نکردم. برای دانلود و نصب JDK یک ویدئوی عالی وجود داره که می‌تونید از این لینک اون ببینید.2) دانلود و نصب Eclipseبرای نوشتن یک پلاگین، به محیط برنامه‌نویسی احتیاج داریم. به همین دلیل باید Eclipse روی کامپیوتر شما نصب شده باشه. میتونید از این لینک برنامه رو دانلود و نصب کنید.3) نصب Ivy روی Eclipseپلاگین Ivy در واقع برای مدیریت Dependency استفاده میشه. برای نصب Ivy اول برنامۀ Eclipse رو باز کنید و بعدش منوی Help رو باز کنید و دکمۀ Install New Software رو بزنید. داخل پنجرۀ جدیدی که باز میشه جلوی Work with لینک زیر رو کپی کنید و دکمۀ Enter روی کیبورد رو بزنید:http://www.apache.org/dist/ant/ivyde/updatesiteاگر خطایی نشون داده شد، ممکنه به این دلیل باشه که به‌خاطر تحریم‌ها این آدرس قابل دسترسی نباشه و پیشنهاد می‌کنم که از یک پروکسی (VPN) استفاده کنید. پس از کمی صبر کردن چند گزینه ظاهر خواهد شد که باید IvyDE plugin رو انتخاب کرده و نصب رو ادامه بدید.اگر در نصب کردن Ivy به مشکل برخوردید، پیشنهاد می‌کنم که این ویدئو رو تماشا کنید که نکات نصب پلاگین روی Eclipse داخلش توضیح داده شده.لینک اصلی پروژۀ Ivy در قسمت زیر آورده شده و اگر Update Site (لینک بالا) از کار افتاد، می‌تونید از طریق پروژۀ اصلی اون رو پیدا کنید:https://ant.apache.org/ivy/ivyde/index.htmlضمناً پلاگین Ivy در Marketplace برنامۀ Eclipse هم موجود هست اما من نتونستم از Marketplace نصب رو انجام بدم. بعد از تمام شدن نصب ممکنه Eclipse از شما بخواد که نرم‌افزار رو ری‌استارت کنید که شما اینکار رو انجام ندید.4) نصب Subclipse روی Eclipseپلاگین Subclipse در واقع برای کنترل ورژن استفاده میشه. برای نصبش دقیقاً مثل مرحلۀ سوم لینک زیر رو برای نصب وارد کنید:https://subclipse.github.io/updates/بعد از وارد کردن گزینه‌های Core SVNKit Library و Subclipse رو انتخاب کنید و نصب رو انجام بدید. لینک اصلی پروژۀ Subclipse در قسمت زیر آورده شده و اگر Update Site (لینک بالا) از کار افتاد، می‌تونید از طریق پروژۀ اصلی اون رو پیدا کنید:https://github.com/subclipse/subclipseبعد از کامل شدن نصب Eclipse پیغام ری‌استارت شدن میده که این‌بار برنامه رو ری‌استارت کنید تا نصب تکمیل بشه و بتونید از پلاگین‌ها استفاده کنید.5) اضافه کردن پروژهبعد از اینکه برنامۀ Eclipse مجدداً باز شد، روی گزینۀ File کلیک کنید و بعدش این مسیر رو دنبال کنید:New => Project => Other => SVN => Checkout Projects from SVNدر پنجره‌ایی که باز میشه دو گزینه وجود داره؛ باید گزینۀ Create a new repository location رو انتخاب کنید و در پنجرۀ بعدی این آدرس رو بدید:https://svn.win.tue.nl/repos/promبعد از اینکه محتویات آدرس بارگزاری شد، مسیر پوشۀ Packages/Workshop/Trunk رو انتخاب کنید و در نهایت دکمۀ Next و رو بزنید؛ نهایتاً از شما یک اسم پروژه می‌خواد که پیشنهاد می‌کنم بگذارید همون Workshop باقی بمونه که کارهای بعدی آسون‌تر باشه. درنهایت دکمۀ Finish رو بزنید. 6) راه‌اندازیبعد از اینکه پروژۀ جدید اضافه شد، روی اسم پروژه کلیک کنید و از طریق منوی Ivy گزینۀ Resolve رو بزنید. اگر همه چیز درست انجام شده باشه اروری بوجود نخواهد اومد و فقط چند تا Warning نشون داده میشه که مهم نیستند. البته این قسمت ممکنه کمی طولانی بشه.برای Run کردن روی دکمۀ Play کلیک کنید و گزینۀ ProM with UITopia رو بزنید. در این مرحله برنامه راه‌اندازی میشه و شروع میکنه به دانلود کردن کتابخانه‌ها که این مرحله زمان‌بَر هست. ضمناً استفاده از پروکسی در این مرحله هم برای بنده ضروری بود. بعد از اینکه نصب‌ها انجام شد، برنامه ProM راه‌اندازی میشه.نکات آماده‌سازی1. اکثر مشکلاتی که ممکن هست در زمان نصب پلاگین‌ها یا دانلود کتابخانه‌ها بوجود بیاد، از بابت تحریم کشور ایران هست و با استفاده از پروکسی حل خواهد شد.2. معمولاً به هنگام نصب در Eclipse، پنجره‌ها پنهان میشن ولی در قسمت سمت چپ - پایین، می‌تونید مقدار انجام شدنش رو ببینید. همچنین در منوی Console هم عملیات نمایش دادن میشن.3. دانلود کتابخانه‌ها در قسمت ششم ممکنه حتی تا چندین ساعت زمان ببره. شکیبا باشید.فاز دوم: توسعهتا اینجای کار راجع‌به راه‌اندازی اولیه گفتیم. حالا به سراغ اصل مطلب خواهیم رفت و توسعۀ پلاگین رو توضیح خواهیم داد.1) با زبان جاوا آشنا بشیدهمونطور که قبلاً گفته شد، طراحی و ساخت یک پلاگین برای ProM به یادگیری زبان جاوا احتیاج داره و برای توسعۀ پلاگین در ProM باید به این زبان مسلط باشید؛ درغیراینصورت کامل متوجه همه چیز نخواهید شد و عملاً علت رخ دادن بعضی وقایع رو متوجه نمی‌شید. برای یاد گرفتن زبان جاوا منابع بسیار عالی حتی به زبان فارسی موجود هست. من شخصاً وبسایت w3schools رو برای یادگیری پیشنهاد می‌کنم.2) کدهای آماده رو مشاهده کنیددر ریپازیتوری‌های وبسایت ProM کدهای تستی آماده‌ای موجود هست که می‌تونید از طریق مسیر پوشه زیر اون‌ها رو به‌عنوان پروژه در Eclipse بارگذاری کنید و استفاده ببرید:Packages/GettingStarted/Trunk3) کد نمونه یک پلاگین سادهدر اینجا یک نمونه کد برای یک پلاگین ساده آورده شده که به‌صورت زیر هست:package org.processmining.plugins.gettingstarted; import org.processmining.contexts.uitopia.annotations.UITopiaVariant; import org.processmining.framework.plugin.PluginContext; import org.processmining.framework.plugin.annotations.Plugin; public class HelloWorld { @Plugin( name = &quotMy Hello World Plugin&quot, parameterLabels = {}, returnLabels = { &quotHello world string&quot }, returnTypes = { String.class }, userAccessible = true, help = &quotProduces the string: 'Hello world'&quot ) @UITopiaVariant( affiliation = &quotMy company&quot, author = &quotMy name&quot, email = &quotMy e-mail address&quot ) public static String helloWorld(PluginContext context) { return &quotHello World" } }با همین چند خط شما می‌تونید یک پلاگین جدید به نام HelloWorld رو ایجاد کنید. با یادگیری این مراحل اولیه، شما می‌تونید هر پلاگین دلخواهی رو به نرم‌افزار ProM اضافه کنید. امیدوارم تونسته باشم بهتون کمک کنم.