در فریمورک توسعه برنامههای کاربردی تحت وب شرکت اوراکل(ADF) به صورت بسیار مطلوبی از TaskFlow پشتیبانی میگردد. استفاده از TaskFlow در برنامه باعث میگردد تا برنامه شما دارای یک سری از ویژگیهای منحصر به فردی گردد که سایر برنامهها دارای چنین قابلیتهایی نباشند. TaskFlow این قابلیت را خواهد داد تا برنامه را به واحدهای کوچکتر تقسیم کرد. این تقسیمبندی امکان استفاده مجدد را بالا میبرد و همچنین تغییرات آینده را بسیار سهل و آسان مینمایند. در ضمن در ارتباط با کنترل دسترسی کاربران نیز کمک بسزایی مینماید زیرا قابلیتهای امنیتی ADF بر روی TaskFlow ها اعمال میگردد.
*برای کسب اطلاعات بیشتر در ارتباط با امنیت در ADF به پست نحوه فعالسازی ADF Security مراجعه نمایید.
استفاده از TaskFlow در برنامه گاهی نیازی برای شما ایجاد مینماید که بین دو TaskFlow مقداری را به عنوان پارامتر ورودی از یک TaskFlow به TaskFlow دیگر ارسال نماید. به تجربه برای من ثابت شده که با استفاده از قابلیت ارسال پارامتر بین TaskFlowها میتوان برنامههای به مراتب موثرتر با ساختار بهتری طراحی و پیادهسازی نمود.
در این مقاله سعی بر آن دارم تا این قابلیت را با استفاده از یک مثال شرح داده تا بیشتر با این موضوع آشنا گردید. مثال مورد استفاده به این صورت بوده که یک TaskFlow برای انجام عملیات ایجاد، ویرایش و حذف کارمند در نظر گرفته شده و با توجه به پارامتر ارسالی به آن عملیات مناسب را انجام میدهد. نتیجهای نیز با توجه به کلیک کاربر بر روی دکمه ثبت و یا انصراف باز میگردد تا عملیات Commit و یا Rollback انجام گیرد. در این مثال هم نحوه ارسال پارامتر به TaskFlow و هم دریافت مقدار از TaskFlow را خواهید دید. دقت بفرمایید که برای دریافت پارامتر از کامپوننت Task Flow Return استفاده نخواهد شد بلکه برای آشنایی از مقادیر بازگشتی استفاده میگردد.
در این مثال یک TaskFlow با عنوان empManagement ایجاد میگردد و یک TaskFlow با عنوان empCUD که سه عملیات ایجاد، ویرایش و حذف را انجام میدهد empCUD یک پارامتر ورودی با عنوان operation دارد که عملیاتی را که باید انجام دهد مشخص مینماید. empCUD یک نتیجه بر میگرداند که بر اساس آن یا Commit و یا Rollback انجام میگیرد.
شرح
یک TaskFlow ایجاد کنید و در قسمت Overview یک پارامتر ورودی با عنوان operation و یک مقدار خروجی با عنوان result همانند تصویر زیر ایجاد کنید.
یک Router در TaskFlow قرار دهید و آنرا همانند تصویر زیر تنظیم کنید.
این Router به این صورت تنظیم شده که اگر operation برابر create باشد خروجی آن create، اگر برابر Delete باشد خروجی آن Delete و در غیر اینصورت خروجی آن edit میباشد تا با توجه به این خروجیها عملیات مناسب انجام گردد.
صفحهای با عنوان empForm ایجاد کنید. View کارمند را بر روی آن کشیده و به صورت فرم رها کنید. در صفحه دو دکمه قرار دهید. برای دکمه ثبت یک کامپوننت setActionListener قرار دهید تا مقدار ok را درون result قرار دهد. برای دکمه انصراف نیز تکرار کنید اما مقدار cancel را درون result قرار دهد.
در صورتی که خروجیRouter برابر با create باشد باید ابتدا عملیات CreateInsert انجام گردد. سپس به صفحه فرم کارمند ارسال گردد تا اطلاعات آن توسط کاربر تکمیل گردد و اگر برابر با edit باشد باید مستقیما به صفحه هدایت گردد.
در صورتی که خروجی Router برابر با delete باشد باید ابتدا کاربر را به صفحهای هدایت کنیم که حذف را تایید نماید و در صورت تایید عملیات حذف را انجام دهیم . این صفحه نیز همانند صفحه empForm میباشد با این تفاوت که دکمه ok دارای action برابر با delete میباشد تا بر اساس آن delete صورت گیرد.
تا اینجا TaskFlow انجام عملیات آماده شده است و حال نوبت به TaskFlow مدیریت کارمندان رسیده است.
ساخت empManagement
یک صفحه که شامل لیست کارمندان است قرار میدهیم. سه دکمه نیز در این صفحه برای انجام سه عملیات ایجاد، ویرایش و حذف قرار میدهیم.
یک پارامتر همانند تصویر زیر با عنوان operationResult ایجاد میکنیم تا نتیجه بازگشتی از empCUD را درون آن قرار دهیم و با توجه به مقدار آن Commit یا Rollback را اجرا نماییم.
از مرحله قبل empCUD ساخته شده را بر روی empManagement قرار میدهیم و همانند زیر آنرا را برای فشرده شدن دکمه ایجاد تنظیم مینمایم تا با زدن این دکمه empCUD برای عملیات ایجاد فراخوانی گردد و نتیجه عملیات خود را نیز در operationResult قرار دهد.
همین مرحله را دوبار دیگر انجام دهید با این تفاوت که مقدار پارامتر ورودی empCUD را تغییر دهید تا عملیات edit و delete نیز انجام گیرد.
یک Router در empManagment قرار دهید و با توجه به مقدار operationResult عملیات Commit یا Rollback را انجام دهید.
تبریک میگویم شما تمام مراحل را با موفقیت پشت سر گذاشتید. حال برنامه را تست نمایید و نتیجه تلاش خود را ملاحظه فرمایید.
جمعبندی
در این مثال ما با استفاده از قابلیت ارسال و دریافت پارامتر بین TaskFlowها در ADF توانستیم یک TaskFlow بنویسیم که سه عملیات را با توجه به مقدار پارامتر operation که در زمان فراخوانی TaskFlow آنرا مقداردهی کردیم، انجام دهد. همچنین توانستیم با توجه به قابلیت بازگشت مقدار از TaskFlow(همانند return متدها) به TaskFlow ای که آنرا فراخوانی کرده نتیجه عملیات را گزارش دهیم تا بر اساس آن تصمیمگیری نماید. در این مثال ما با مقداردهی result در empCUD و بازگشت آن به empManagement و سپس ذخیره آن در resultOperation توانستیم با توجه به مقدار ok یا cancel بودن عملیات، Commit و Rollback را در empManagement انجام دهیم.
فایل PDF
فایل مثال
امیدوارم که مطلب مفیدی برایتان بوده باشد
با تشکر