تکلونوژی

All posts tagged تکلونوژی

نحوه ایجاد لیست مقادیر (LOV)

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

شرح 
در ابتدا entity و view و ارتباطات بین کارمندان و دپارتمان‌ها را ایجاد کرده. قابل ذکر است که ارتباطات بین کارمند و دپارتمان تاثیری بر ساخت لیست مقادیر فیلد دپارتمان در فرم کارمند ندارد پس نگران اینکه چه ارتباطی لازم است ایجاد گردد نباشید و از ویزارد Jdeveloper کمک گرفته و بگذارید این مورد به صورت خودکار انجام گیرد. برای این مثال من فقط مدل را می‌سازم و با نرم‌افزار تستر نتیجه را به شما نشان خواهم داد.

حال باید پس از ایجاد Viewهای مورد نیاز به سراغ مواردی برویم که برای ساخت لیست مقادیر به آن‌ها نیاز داریم. در این مثال View کارمندان را باز کنید. برای ساخت لیست مقادیر در ابتدا باید View Accessors مورد نیاز را ایجاد نمایید. برای این‌کار به قسمت View Accessors در view کارمند بروید.

با زدن دکمه مثبت سبز ( سمت راست بالا) فرم مخصوص برای ایجاد View Accessors باز می‌گردد. در سمت چپ این فرم لیست تمام View موجود نمایش داده می‌شود تا بتوانید از بین آن‌ها Viewهای مورد نیاز خود را پیدا و انتخاب نمایید

در این فرم شما باید Viewهایی که می‌خواهید به صورت یک لیست مقادیر در View اصلی در اختیار کاربر قرار دهید را انتخاب و آن‌ها را به سمت راست و زیر View اصلی ببرید. در این مثال چون قصد داریم لیست دپارتمان‌ها را به صورت لیستی از مقادیر نمایش دهیم در سمت چپ View دپارتمان را انتخاب (۱) و با زدن فلش وسط(۲) به سمت راست برده و در زیر View کارمند(۳) قرار می‌دهیم.
در همین‌جا شما می‌توانید قبل از اینکه آنرا به سمت راست ارسال نمایید اسم دلخواهتان را با استفاده از inputbox زیرین آن(۴) مشخص نمایید. این اسم کمک می‌کند تا خوانایی برنامه‌تان با استفاده از اسامی مناسب و با معنی بالاتر برود.

در برخی از حالات ما نیاز پیدا خواهیم کرد که لیست موجود را فیلتر نماییم. مثلا لیست دپارتمان‌هایی که در یک مکان خاص وجود دارند را نشان داده و همه لیست را در اختیار کاربر قرار ندهیم تا انتخاب محدودتری داشته باشد. برای این منظور باید از امکان View Criteria در ADF استفاده نمود. پس از ارسال View به سمت راست با انتخاب آن در سمت راست دکمه Edit بالای کادر View Accessors فعال می‌گردد. با زدن آن فرمی باز می‌گردد که View Criteriaهای تعریف شده در View را نمایش می‌دهد که شما می‌توانید هر کدام از آنها را که خواستید انتخاب و با زدن فلش به سمت راست ارسال نمایید تا فعال شوند و لیست مقادیر را فیلتر نماید. برای نشان دادن این مورد یک View Criteria بر اساسCounty id در View دپارتمان ایجاد کرده‌ام و لیست مقادیر را برای مکان با شناسه ۱۷۰۰ فیلتر می‌نمایم تا فقط دپارتمان‌های آن مکان نشان داده شود.
* دوستانی که با نحوه ایجاد View Criteria آشنایی ندارند می‌توانند از سایر منابع یا پست‌های بنده برای آشنایی با آن استفاده نمایند.

تا اینجا مرحله اول کار یعنی source داده‌هایی که می‌خواهیم به صورت لیست مقادیر نشان دهیم را ساخته‌ایم. حال باید فقط مشخص کنیم که این لیست مقادیر را برای کدام فیلد می‌خواهیم نمایش دهیم تا کاربر از بین آنها یکی را انتخاب نماید. در View کارمند به قسمت Attributes بروید و فیلد شناسه دپارتمان (DepartmentId) را انتخاب نمایید تا برای این فیلد لیست مقادیر ایجاد نمایید.

حال با زدن دکمه مثبت سبز در قسمت List of Values (همانطور که در تصویر قبل مشخص شده است) فرم مربوط به ساخت لیست مقادیر نشان داده می‌شود. در این فرم دو تب Configuration و UI Hints ملاحظه می‌نمایید که هرکدام را به صورت جداگانه توضیح میدهم.

تب Configuration
در این تب باید دیتا سورس مربوط به لیست مقادیر این فیلد(DepartmentId) را مشخص کرد و همچنین مقادیری که باید این لیست مقادیر به View اصلی باز گرداند که عموما شامل شناسه می‌باشد. با کلیک بر روی قسمت List Data Source نام View Accessors که در مرحله قبل ایجاد کردید را ملاحظه می‌نمایید. آنرا انتخاب نمایید. در قسمتList Attribute باید فیلد مورد نظر برای بازگشت مقدار آن به View کارمند را مشخص نمایید که عموما شناسه می‌باشد. ما فیلد DepartmentId را انتخاب می‌‌نماییم. در اینجا کار ما با این تب به اتمام می‌رسد.

تب UI Hints
این تب شامل تنظیماتی است که نحوه نمایش این لیست مقادیر در قسمت واسط کاربر(UI) را مشخص می‌نماید. تنظیماتی از قبیل چه کامپوننتی برای نمایش استفاده شود . چه فیلدهایی از View دپارتمان به جای شناسه آن نمایش داده شود و سایر تنظیماتی که تاثیر آن را فقط در واسط کاربر خود خواهید دید. در این تب من فقط DepartmentName را در قسمت Display Attributes انتخاب می‌کنم که آن را به جای شناسه نمایش دهد سایر موارد را به صورت پیش‌فرض خود رها می‌نمایم. در صورت علاقه به دانستن جزییات بیشتر به منابع رسمی مراجعه نمایید.

در نهایت فیلد DepartmentId در View کارمند شما شامل یک LOV از نام دپارتمان‌ها شده است

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

فایل مثال

فایل PDF

امیدوارم که این مطلب برایتان مفید بوده باشد.
با تشکر

qresult datamodel1 - نحوه ایجاد لیست مقادیر (LOV)
shuttle insertdlg - نحوه ایجاد لیست مقادیر (LOV)
tester main userservice - نحوه ایجاد لیست مقادیر (LOV)
transientattr - نحوه ایجاد لیست مقادیر (LOV)
viewcriteria editor - نحوه ایجاد لیست مقادیر (LOV)
خواندن بیشتر
royal visionنحوه ایجاد لیست مقادیر (LOV)

ارسال پارامتر به TaskFlow

در فریم‌ورک توسعه برنامه‌های کاربردی تحت وب شرکت اوراکل(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

فایل مثال

امیدوارم که مطلب مفیدی برایتان بوده باشد
با تشکر

فایل پیوست:
خواندن بیشتر
royal visionارسال پارامتر به TaskFlow

برنامه خواندن lable فیلد ها از پایگاه داده

در بسیاری از موارد label مربوط به فیلد ها در داخل پایگاه داده وجود دارد بصورت نوشته فارسی در داخل comment مربوط به فیلد ها در داخل پایگاه داده برای این منظور من برنامه نوشتم که کار های زیر را انجام میدهد.

[ol]
[li]مسیر پروژه را میگیرد[/li]
[li]تمام Entity Object ها را شناسایی مینماید [/li]
[li]برای هر eo تمام attribute ها را شناسایی میکند[/li]
[li]برای هر attribute نام ستون جدول را شناسایی منکند[/li]
[li]از روی نام جدول به سراغ comment آن در داخل پایگاه داده میرود[/li]
[li]برنامه یک app Module دارد که باید connection آن ست گردد.[/li]
[li]connection برنامه باید به کاربری تنظیم گردد که دسترسی خواندن comment جداول را دارد.[/li]
[li]شما فقط کافیست connection را تنظیم نمایید و مسیر برناه را مشخص نمایید.[/li]
[/ol]

دانلود برنامه
خواندن بیشتر
royal visionبرنامه خواندن lable فیلد ها از پایگاه داده