{"id":2369,"date":"2011-05-23T13:42:08","date_gmt":"2011-05-23T18:42:08","guid":{"rendered":"http:\/\/jianmingli.com\/wp\/?p=2369"},"modified":"2013-10-13T22:30:37","modified_gmt":"2013-10-14T03:30:37","slug":"oracle-adf-tutorial-developing-ria-web-applications-with-oracle-adf","status":"publish","type":"post","link":"https:\/\/jianmingli.com\/wp\/?p=2369","title":{"rendered":"Oracle ADF 11gR2 Tutorial: Developing RIA Web Applications with Oracle ADF"},"content":{"rendered":"<div class='toc wptoc'>\n<h2>Contents<\/h2>\n<ol class='toc-odd level-1'>\n\t<li>\n\t\t<a href=\"#Environment\">Environment<\/a>\n\t<\/li>\n\t<li>\n\t\t<a href=\"#Prepare_DB\">Prepare DB<\/a>\n\t<\/li>\n\t<li>\n\t\t<a href=\"#Create_ADF_Web_App\">Create ADF Web App<\/a>\n\t\t<ol class='toc-even level-2'>\n\t\t\t<li>\n\t\t\t\t<a href=\"#Create_New_App\">Create New App<\/a>\n\t\t\t<\/li>\n\t\t\t<li>\n\t\t\t\t<a href=\"#Create_a_DB_Connection\">Create a DB Connection<\/a>\n\t\t\t<\/li>\n\t\t\t<li>\n\t\t\t\t<a href=\"#Build_Business_Services\">Build Business Services<\/a>\n\t\t\t<\/li>\n\t\t\t<li>\n\t\t\t\t<a href=\"#Test_Application_Module\">Test Application Module<\/a>\n\t\t\t<\/li>\n\t\t\t<li>\n\t\t\t\t<a href=\"#Refine_Business_Components\">Refine Business Components<\/a>\n\t\t\t\t<ol class='toc-odd level-3'>\n\t\t\t\t\t<li>\n\t\t\t\t\t\t<a href=\"#Refine_Salary_Attribute_with_Validation\">Refine Salary Attribute with Validation<\/a>\n\t\t\t\t\t<\/li>\n\t\t\t\t\t<li>\n\t\t\t\t\t\t<a href=\"#Refine_HireDate_with_Formatting\">Refine HireDate with Formatting<\/a>\n\t\t\t\t\t<\/li>\n\t\t\t\t\t<li>\n\t\t\t\t\t\t<a href=\"#Test_Refined_Business_Entity\">Test Refined Business Entity<\/a>\n\t\t\t\t\t<\/li>\n\t\t\t\t<\/ol>\n<\/ol>\n\t\t\t<li>\n\t\t\t\t<a href=\"#Create_JSF_Web_pages\">Create JSF Web pages<\/a>\n\t\t\t\t<ol class='toc-even level-2'>\n\t\t\t\t\t<li>\n\t\t\t\t\t\t<a href=\"#Create_a_New_Web_Page\">Create a New Web Page<\/a>\n\t\t\t\t\t\t<ol class='toc-odd level-3'>\n\t\t\t\t\t\t\t<li>\n\t\t\t\t\t\t\t\t<a href=\"#Change_Panel_Size\">Change Panel Size<\/a>\n\t\t\t\t\t\t\t<\/li>\n\t\t\t\t\t\t<\/ol>\n\t\t\t\t\t<li>\n\t\t\t\t\t\t<a href=\"#Add_Components_to_Page\">Add Components to Page<\/a>\n\t\t\t\t\t\t<ol class='toc-odd level-3'>\n\t\t\t\t\t\t\t<li>\n\t\t\t\t\t\t\t\t<a href=\"#Add_Accordion\">Add Accordion<\/a>\n\t\t\t\t\t\t\t<\/li>\n\t\t\t\t\t\t<\/ol>\n<\/ol>\n\t\t\t\t\t<li>\n\t\t\t\t\t\t<a href=\"#Binding_Data_Controls_to_your_JSF_page\">Binding Data Controls to your JSF page<\/a>\n\t\t\t\t\t\t<ol class='toc-even level-2'>\n\t\t\t\t\t\t\t<li>\n\t\t\t\t\t\t\t\t<a href=\"#Bind_Departments_as_Read_Only_Form\">Bind Departments as Read Only Form<\/a>\n\t\t\t\t\t\t\t<\/li>\n\t\t\t\t\t\t\t<li>\n\t\t\t\t\t\t\t\t<a href=\"#Bind_EmployeesView3_as_Read_Only_Table\">Bind EmployeesView3 as Read Only Table<\/a>\n\t\t\t\t\t\t\t<\/li>\n\t\t\t\t\t\t\t<li>\n\t\t\t\t\t\t\t\t<a href=\"#Bind_EmployeesView3_as_ADF_Form\">Bind EmployeesView3 as ADF Form<\/a>\n\t\t\t\t\t\t\t<\/li>\n\t\t\t\t\t\t\t<li>\n\t\t\t\t\t\t\t\t<a href=\"#Test_Page\">Test Page<\/a>\n\t\t\t\t\t\t\t<\/li>\n\t\t\t\t\t\t<\/ol>\n\t\t\t\t\t<li>\n\t\t\t\t\t\t<a href=\"#Enhancing_your_JSF_page\">Enhancing your JSF page<\/a>\n\t\t\t\t\t\t<ol class='toc-even level-2'>\n\t\t\t\t\t\t\t<li>\n\t\t\t\t\t\t\t\t<a href=\"#Add_graph_representation\">Add graph representation<\/a>\n\t\t\t\t\t\t\t<\/li>\n\t\t\t\t\t\t\t<li>\n\t\t\t\t\t\t\t\t<a href=\"#Test_Pie_Graph\">Test Pie Graph<\/a>\n\t\t\t\t\t\t\t<\/li>\n\t\t\t\t\t\t<\/ol>\n\t\t\t\t\t<li>\n\t\t\t\t\t\t<a href=\"#Adding_More_Complex_Business_Services\">Adding More Complex Business Services<\/a>\n\t\t\t\t\t\t<ol class='toc-even level-2'>\n\t\t\t\t\t\t\t<li>\n\t\t\t\t\t\t\t\t<a href=\"#Add_New_View_Object\">Add New View Object<\/a>\n\t\t\t\t\t\t\t<\/li>\n\t\t\t\t\t\t\t<li>\n\t\t\t\t\t\t\t\t<a href=\"#Add_YearlySalary_Attribute\">Add YearlySalary Attribute<\/a>\n\t\t\t\t\t\t\t<\/li>\n\t\t\t\t\t\t\t<li>\n\t\t\t\t\t\t\t\t<a href=\"#Add_View_Accessor\">Add View Accessor<\/a>\n\t\t\t\t\t\t\t<\/li>\n\t\t\t\t\t\t\t<li>\n\t\t\t\t\t\t\t\t<a href=\"#Add_List_of_Values_for_JobId\">Add List of Values for JobId<\/a>\n\t\t\t\t\t\t\t<\/li>\n\t\t\t\t\t\t\t<li>\n\t\t\t\t\t\t\t\t<a href=\"#Add_New_View_Object_to_AppModule\">Add New View Object to AppModule<\/a>\n\t\t\t\t\t\t\t<\/li>\n\t\t\t\t\t\t\t<li>\n\t\t\t\t\t\t\t\t<a href=\"#Test_New_View_Object\">Test New View Object<\/a>\n\t\t\t\t\t\t\t<\/li>\n\t\t\t\t\t\t<\/ol>\n\t\t\t\t\t<li>\n\t\t\t\t\t\t<a href=\"#Creating_a_Page_Flow\">Creating a Page Flow<\/a>\n\t\t\t\t\t\t<ol class='toc-even level-2'>\n\t\t\t\t\t\t\t<li>\n\t\t\t\t\t\t\t\t<a href=\"#Setup_Page_Flow\">Setup Page Flow<\/a>\n\t\t\t\t\t\t\t<\/li>\n\t\t\t\t\t\t\t<li>\n\t\t\t\t\t\t\t\t<a href=\"#Create_query.jspx_Page\">Create <strong>query.jspx<\/strong> Page<\/a>\n\t\t\t\t\t\t\t<\/li>\n\t\t\t\t\t\t\t<li>\n\t\t\t\t\t\t\t\t<a href=\"#Add_Submit_Button\">Add Submit Button<\/a>\n\t\t\t\t\t\t\t<\/li>\n\t\t\t\t\t\t\t<li>\n\t\t\t\t\t\t\t\t<a href=\"#Add_Commit_and_Rollback_Button\">Add Commit and Rollback Button<\/a>\n\t\t\t\t\t\t\t<\/li>\n\t\t\t\t\t\t\t<li>\n\t\t\t\t\t\t\t\t<a href=\"#Add_Query_Button\">Add Query Button<\/a>\n\t\t\t\t\t\t\t<\/li>\n\t\t\t\t\t\t\t<li>\n\t\t\t\t\t\t\t\t<a href=\"#Test_Page_Flow\">Test Page Flow<\/a>\n\t\t\t\t\t\t\t<\/li>\n\t\t\t\t\t\t<\/ol>\n\t\t\t\t\t<li>\n\t\t\t\t\t\t<a href=\"#Using_ADF_Faces_Framework_Features\">Using ADF Faces Framework Features<\/a>\n\t\t\t\t\t\t<ol class='toc-even level-2'>\n\t\t\t\t\t\t\t<li>\n\t\t\t\t\t\t\t\t<a href=\"#Using_Partial_Page_Refresh\">Using Partial Page Refresh<\/a>\n\t\t\t\t\t\t\t\t<ol class='toc-odd level-3'>\n\t\t\t\t\t\t\t\t\t<li>\n\t\t\t\t\t\t\t\t\t\t<a href=\"#Test\">Test<\/a>\n\t\t\t\t\t\t\t\t\t<\/li>\n\t\t\t\t\t\t\t\t<\/ol>\n\t\t\t\t\t\t\t<li>\n\t\t\t\t\t\t\t\t<a href=\"#Using_Drop_Down_Menus_and_Operation_Components\">Using Drop Down Menus and Operation Components<\/a>\n\t\t\t\t\t\t\t\t<ol class='toc-odd level-3'>\n\t\t\t\t\t\t\t\t\t<li>\n\t\t\t\t\t\t\t\t\t\t<a href=\"#Add_Export_to_Excel_Menu_Item\">Add Export to Excel Menu Item<\/a>\n\t\t\t\t\t\t\t\t\t<\/li>\n\t\t\t\t\t\t\t\t\t<li>\n\t\t\t\t\t\t\t\t\t\t<a href=\"#Add_Printable_Page_Menu_Item\">Add Printable Page Menu Item<\/a>\n\t\t\t\t\t\t\t\t\t<\/li>\n\t\t\t\t\t\t\t\t\t<li>\n\t\t\t\t\t\t\t\t\t\t<a href=\"#Test_1\">Test<\/a>\n\t\t\t\t\t\t\t\t\t<\/li>\n\t\t\t\t\t\t\t\t<\/ol>\n<\/ol>\n\t\t\t\t\t\t\t<li>\n\t\t\t\t\t\t\t\t<a href=\"#Create_Read_Only_Business_Services_Page_Fragments_and_Regions_\">Create Read Only Business Services, Page Fragments and Regions <\/a>\n\t\t\t\t\t\t\t\t<ol class='toc-even level-2'>\n\t\t\t\t\t\t\t\t\t<li>\n\t\t\t\t\t\t\t\t\t\t<a href=\"#Query_Only_Business_Service_Based_on_Parameters\">Query Only Business Service Based on Parameters<\/a>\n\t\t\t\t\t\t\t\t\t\t<ol class='toc-odd level-3'>\n\t\t\t\t\t\t\t\t\t\t\t<li>\n\t\t\t\t\t\t\t\t\t\t\t\t<a href=\"#Test_AppModule\">Test AppModule<\/a>\n\t\t\t\t\t\t\t\t\t\t\t<\/li>\n\t\t\t\t\t\t\t\t\t\t\t<li>\n\t\t\t\t\t\t\t\t\t\t\t\t<a href=\"#Error\">Error<\/a>\n\t\t\t\t\t\t\t\t\t\t\t<\/li>\n\t\t\t\t\t\t\t\t\t\t<\/ol>\n\t\t\t\t\t\t\t\t\t<li>\n\t\t\t\t\t\t\t\t\t\t<a href=\"#Reusable_Task_Flows_Page_Fragments_and_Regions\">Reusable Task Flows, Page Fragments and Regions<\/a>\n\t\t\t\t\t\t\t\t\t\t<ol class='toc-odd level-3'>\n\t\t\t\t\t\t\t\t\t\t\t<li>\n\t\t\t\t\t\t\t\t\t\t\t\t<a href=\"#Create_a_new_task_flow\">Create a new task flow<\/a>\n\t\t\t\t\t\t\t\t\t\t\t<\/li>\n\t\t\t\t\t\t\t\t\t\t\t<li>\n\t\t\t\t\t\t\t\t\t\t\t\t<a href=\"#Add_ExecuteWithParams_Button\">Add ExecuteWithParams Button<\/a>\n\t\t\t\t\t\t\t\t\t\t\t<\/li>\n\t\t\t\t\t\t\t\t\t\t\t<li>\n\t\t\t\t\t\t\t\t\t\t\t\t<a href=\"#Bind_EmpByEmail1_Data_Control\">Bind <em>EmpByEmail1<\/em> Data Control<\/a>\n\t\t\t\t\t\t\t\t\t\t\t<\/li>\n\t\t\t\t\t\t\t\t\t\t\t<li>\n\t\t\t\t\t\t\t\t\t\t\t\t<a href=\"#Add_to_DeptEmpPage.jspx_Page\">Add to DeptEmpPage.jspx Page<\/a>\n\t\t\t\t\t\t\t\t\t\t\t<\/li>\n\t\t\t\t\t\t\t\t\t\t\t<li>\n\t\t\t\t\t\t\t\t\t\t\t\t<a href=\"#Test_2\">Test<\/a>\n\t\t\t\t\t\t\t\t\t\t\t<\/li>\n\t\t\t\t\t\t\t\t\t\t<\/ol>\n<\/ol>\n\t\t\t\t\t\t\t\t\t<li>\n\t\t\t\t\t\t\t\t\t\t<a href=\"#Using_Skins\">Using Skins<\/a>\n\t\t\t\t\t\t\t\t\t\t<ol class='toc-even level-2'>\n\t\t\t\t\t\t\t\t\t\t\t<li>\n\t\t\t\t\t\t\t\t\t\t\t\t<a href=\"#Create_a_New_Skin\">Create a New Skin<\/a>\n\t\t\t\t\t\t\t\t\t\t\t<\/li>\n\t\t\t\t\t\t\t\t\t\t\t<li>\n\t\t\t\t\t\t\t\t\t\t\t\t<a href=\"#Change_Page_Background_and_Font_Family\">Change Page Background and Font Family<\/a>\n\t\t\t\t\t\t\t\t\t\t\t<\/li>\n\t\t\t\t\t\t\t\t\t\t\t<li>\n\t\t\t\t\t\t\t\t\t\t\t\t<a href=\"#Change_Font_of_Application_Text\">Change Font of Application Text<\/a>\n\t\t\t\t\t\t\t\t\t\t\t<\/li>\n\t\t\t\t\t\t\t\t\t\t\t<li>\n\t\t\t\t\t\t\t\t\t\t\t\t<a href=\"#Format_Header\">Format Header<\/a>\n\t\t\t\t\t\t\t\t\t\t\t<\/li>\n\t\t\t\t\t\t\t\t\t\t\t<li>\n\t\t\t\t\t\t\t\t\t\t\t\t<a href=\"#Format_Table_Headers\">Format Table Headers<\/a>\n\t\t\t\t\t\t\t\t\t\t\t<\/li>\n\t\t\t\t\t\t\t\t\t\t<\/ol>\n\t\t\t\t\t\t\t\t\t<li>\n\t\t\t\t\t\t\t\t\t\t<a href=\"#References\">References<\/a>\n\t\t\t\t\t\t\t\t\t<\/li>\n<\/ol>\n<\/ol>\n<\/div>\n<div class='wptoc-end'>&nbsp;<\/div>\n<span id=\"Environment\"><h2>Environment<\/h2><\/span>\n<p>* JDeveloper 11gR2<br \/>\n* Oracle Database 10.2<\/p>\n<span id=\"Prepare_DB\"><h2>Prepare DB<\/h2><\/span>\n<p>* Unlock Oracle DB <em>HR<\/em> user:<\/p>\n<pre lang=\"sql\">\r\nalter user HR identified by HR account unlock;\r\n<\/pre>\n<span id=\"Create_ADF_Web_App\"><h2>Create ADF Web App<\/h2><\/span>\n<span id=\"Create_New_App\"><h3>Create New App<\/h3><\/span>\n<p>* Select <em>File > New&#8230; > General > Applications > Fusion Web Application (ADF)<\/em>.<br \/>\n&#8211; Click <em>OK<\/em>.<\/p>\n<span id=\"\"><h6><a href=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2011\/05\/adf11g_hr_app_create_1.jpg\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2011\/05\/adf11g_hr_app_create_1-300x214.jpg\" alt=\"\" title=\"adf11g_hr_app_create_1\" width=\"300\" height=\"214\" class=\"aligncenter size-medium wp-image-9152\" srcset=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2011\/05\/adf11g_hr_app_create_1-300x214.jpg 300w, https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2011\/05\/adf11g_hr_app_create_1.jpg 690w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a><\/h6><\/span>\n<p>* On Name your application screen, enter:<br \/>\n&#8211; Application Name: <em>HRSystem<\/em><br \/>\n&#8211; Directory: <em>C:\\jml\\work\\11g\\adf\\HRSystem<\/em><br \/>\n&#8211; Application package prefix: <em>demo<\/em><\/p>\n<span id=\"_1\"><h6><a href=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2011\/05\/adf11g_hr_app_create_2.jpg\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2011\/05\/adf11g_hr_app_create_2-300x220.jpg\" alt=\"\" title=\"adf11g_hr_app_create_2\" width=\"300\" height=\"220\" class=\"aligncenter size-medium wp-image-9153\" srcset=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2011\/05\/adf11g_hr_app_create_2-300x220.jpg 300w, https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2011\/05\/adf11g_hr_app_create_2.jpg 631w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a><\/h6><\/span>\n<p>* On name your project screen, enter:<br \/>\n&#8211; Project Name: <em>Model<\/em><br \/>\n&#8211; Directory: <strong>C:\\work\\adf\\HRSystem\\Model<\/strong><\/p>\n<span id=\"_2\"><h6><a href=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2011\/05\/adf11g_hr_app_create_proj1_name.jpg\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2011\/05\/adf11g_hr_app_create_proj1_name-300x223.jpg\" alt=\"\" title=\"adf11g_hr_app_create_proj1_name\" width=\"300\" height=\"223\" class=\"aligncenter size-medium wp-image-9154\" srcset=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2011\/05\/adf11g_hr_app_create_proj1_name-300x223.jpg 300w, https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2011\/05\/adf11g_hr_app_create_proj1_name.jpg 630w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a><\/h6><\/span>\n<p>* On Configure Java settings screen, accept all defaults:<\/p>\n<span id=\"_3\"><h6><a href=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2011\/05\/adf11g_hr_app_create_proj1_javaSettings.jpg\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2011\/05\/adf11g_hr_app_create_proj1_javaSettings-300x221.jpg\" alt=\"\" title=\"adf11g_hr_app_create_proj1_javaSettings\" width=\"300\" height=\"221\" class=\"aligncenter size-medium wp-image-9155\" srcset=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2011\/05\/adf11g_hr_app_create_proj1_javaSettings-300x221.jpg 300w, https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2011\/05\/adf11g_hr_app_create_proj1_javaSettings.jpg 632w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a><\/h6><\/span>\n<p>* On Name your project screen for project 2, accept all defaults:<\/p>\n<span id=\"_4\"><h6><a href=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2011\/05\/adf11g_hr_app_create_proj2_name.jpg\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2011\/05\/adf11g_hr_app_create_proj2_name-300x221.jpg\" alt=\"\" title=\"adf11g_hr_app_create_proj2_name\" width=\"300\" height=\"221\" class=\"aligncenter size-medium wp-image-9156\" srcset=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2011\/05\/adf11g_hr_app_create_proj2_name-300x221.jpg 300w, https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2011\/05\/adf11g_hr_app_create_proj2_name.jpg 631w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a><\/h6><\/span>\n<p>* On Configure Java settings screen for project 2, accept all defaults:<\/p>\n<span id=\"_5\"><h6><a href=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2011\/05\/adf11g_hr_app_create_proj2_javaSettings.jpg\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2011\/05\/adf11g_hr_app_create_proj2_javaSettings-300x224.jpg\" alt=\"\" title=\"adf11g_hr_app_create_proj2_javaSettings\" width=\"300\" height=\"224\" class=\"aligncenter size-medium wp-image-9157\" srcset=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2011\/05\/adf11g_hr_app_create_proj2_javaSettings-300x224.jpg 300w, https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2011\/05\/adf11g_hr_app_create_proj2_javaSettings.jpg 629w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a><\/h6><\/span>\n<p>* Click Finish<\/p>\n<span id=\"_6\"><h6><a href=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2011\/05\/adf11g_hr_app_create_finish.jpg\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2011\/05\/adf11g_hr_app_create_finish-300x220.jpg\" alt=\"\" title=\"adf11g_hr_app_create_finish\" width=\"300\" height=\"220\" class=\"aligncenter size-medium wp-image-9158\" srcset=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2011\/05\/adf11g_hr_app_create_finish-300x220.jpg 300w, https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2011\/05\/adf11g_hr_app_create_finish.jpg 631w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a><\/h6><\/span>\n<p>* Two projects are created for the application:<br \/>\n&#8211; Model<br \/>\n&#8211; ViewController<\/p>\n<span id=\"Create_a_DB_Connection\"><h3>Create a DB Connection<\/h3><\/span>\n<p>* On HRSystem Checklist, click <em>Connect to a Database -> Create a Database Connection<\/em>.<\/p>\n<span id=\"_7\"><h6><a href=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2011\/05\/adf11g_hr_dbconn_1.jpg\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2011\/05\/adf11g_hr_dbconn_1-300x158.jpg\" alt=\"\" title=\"adf11g_hr_dbconn_1\" width=\"300\" height=\"158\" class=\"aligncenter size-medium wp-image-9159\" srcset=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2011\/05\/adf11g_hr_dbconn_1-300x158.jpg 300w, https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2011\/05\/adf11g_hr_dbconn_1.jpg 519w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a><\/h6><\/span>\n<p>* Enter<br \/>\n&#8211; Connection Name: <em>HRConn<\/em><br \/>\n&#8211; Username: <em>hr<\/em><br \/>\n&#8211; Password: <em>hr<\/em><br \/>\n* Click &#8216;<em>Test Connection<\/em>&#8216; button and should get a <em>Success!<\/em> response<\/p>\n<span id=\"_8\"><h6><a href=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2011\/05\/adf11g_hr_dbconn_2.jpg\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2011\/05\/adf11g_hr_dbconn_2-300x271.jpg\" alt=\"\" title=\"adf11g_hr_dbconn_2\" width=\"300\" height=\"271\" class=\"aligncenter size-medium wp-image-9160\" srcset=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2011\/05\/adf11g_hr_dbconn_2-300x271.jpg 300w, https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2011\/05\/adf11g_hr_dbconn_2.jpg 569w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a><\/h6><\/span>\n<p>* Click <em>OK<\/em>.<br \/>\n* Mark Connect to a Database step as <em>Done <\/em>by select Done from the drop down list (under Not Started).<\/p>\n<span id=\"_9\"><h6><a href=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2011\/05\/adf11g_hr_dbconn_3_done.jpg\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2011\/05\/adf11g_hr_dbconn_3_done-300x88.jpg\" alt=\"\" title=\"adf11g_hr_dbconn_3_done\" width=\"300\" height=\"88\" class=\"aligncenter size-medium wp-image-9161\" srcset=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2011\/05\/adf11g_hr_dbconn_3_done-300x88.jpg 300w, https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2011\/05\/adf11g_hr_dbconn_3_done.jpg 518w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a><\/h6><\/span>\n<span id=\"Build_Business_Services\"><h3>Build Business Services<\/h3><\/span>\n<p>* On Checklist, click <em>Build Business Services<\/em>.<br \/>\n* Click <em>Go to Substeps<\/em>.<br \/>\n* Click <em>3.1 Create Entity Objects and Associations<\/em><br \/>\n* Click <em>Create Entity Objects and Associations<\/em> button.<\/p>\n<span id=\"_10\"><h6><a href=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2011\/05\/adf11g_hr_bizsvc_1.jpg\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2011\/05\/adf11g_hr_bizsvc_1-300x90.jpg\" alt=\"\" title=\"adf11g_hr_bizsvc_1\" width=\"300\" height=\"90\" class=\"aligncenter size-medium wp-image-9162\" srcset=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2011\/05\/adf11g_hr_bizsvc_1-300x90.jpg 300w, https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2011\/05\/adf11g_hr_bizsvc_1.jpg 513w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a><\/h6><\/span>\n<p>* On Select Project for Action dialog, select <em>Model <\/em>from drop down list. Click <em>OK<\/em>.<\/p>\n<span id=\"_11\"><h6><a href=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2011\/05\/adf11g_hr_bizsvc_2_model.jpg\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2011\/05\/adf11g_hr_bizsvc_2_model.jpg\" alt=\"\" title=\"adf11g_hr_bizsvc_2_model\" width=\"294\" height=\"145\" class=\"aligncenter size-full wp-image-9163\" \/><\/a><\/h6><\/span>\n<p>* On the <em>Initialize Business Components Project<\/em> dialog, select<br \/>\n&#8211; Connection: <em>HRConn<\/em><br \/>\n&#8211; Data Type Map: <em>Java Extended for Oracle<\/em><\/p>\n<span id=\"_12\"><h6><a href=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2011\/05\/adf11g_hr_bizsvc_3_dbconn.jpg\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2011\/05\/adf11g_hr_bizsvc_3_dbconn-300x194.jpg\" alt=\"\" title=\"adf11g_hr_bizsvc_3_dbconn\" width=\"300\" height=\"194\" class=\"aligncenter size-medium wp-image-9164\" srcset=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2011\/05\/adf11g_hr_bizsvc_3_dbconn-300x194.jpg 300w, https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2011\/05\/adf11g_hr_bizsvc_3_dbconn.jpg 505w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a><\/h6><\/span>\n<p>* Click <em>OK<\/em>.<br \/>\n* On <em>Entity Objects<\/em> dialog,<br \/>\n&#8211; click <em>Query <\/em>button (Available tables show up).<br \/>\n&#8211; Move available tables to Selected pane:<br \/>\n<em>DEPARTMENTS<\/em><br \/>\n<em>EMPLOYEES<\/em><\/p>\n<span id=\"_13\"><h6><a href=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2011\/05\/adf11g_hr_bizsvc_4_entity.jpg\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2011\/05\/adf11g_hr_bizsvc_4_entity-300x185.jpg\" alt=\"\" title=\"adf11g_hr_bizsvc_4_entity\" width=\"300\" height=\"185\" class=\"aligncenter size-medium wp-image-9165\" srcset=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2011\/05\/adf11g_hr_bizsvc_4_entity-300x185.jpg 300w, https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2011\/05\/adf11g_hr_bizsvc_4_entity.jpg 784w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a><\/h6><\/span>\n<p>* On Entity-based View Object screen, move available tables to Selected pane:<br \/>\n<em>DEPARTMENTS<\/em><br \/>\n<em>EMPLOYEES<\/em><\/p>\n<span id=\"_14\"><h6><a href=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2011\/05\/adf11g_hr_bizsvc_5_entityVO.jpg\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2011\/05\/adf11g_hr_bizsvc_5_entityVO-300x186.jpg\" alt=\"\" title=\"adf11g_hr_bizsvc_5_entityVO\" width=\"300\" height=\"186\" class=\"aligncenter size-medium wp-image-9166\" srcset=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2011\/05\/adf11g_hr_bizsvc_5_entityVO-300x186.jpg 300w, https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2011\/05\/adf11g_hr_bizsvc_5_entityVO.jpg 787w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a><\/h6><\/span>\n<p>* On Updatable View Objects dialog,<br \/>\n&#8211;  Move both tables from Available pane to Selected pane.<br \/>\n&#8211; Click <em>Next<\/em>.<br \/>\n* On <em>Query-based View Objects<\/em> dialog,<br \/>\n&#8211; Click <em>Query <\/em>button.<br \/>\n&#8211; Move from Available to Selected pane:<br \/>\n<em>JOBS<\/em><\/p>\n<span id=\"_15\"><h6><a href=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2011\/05\/adf11g_hr_bizsvc_6_queryVO.jpg\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2011\/05\/adf11g_hr_bizsvc_6_queryVO-300x183.jpg\" alt=\"\" title=\"adf11g_hr_bizsvc_6_queryVO\" width=\"300\" height=\"183\" class=\"aligncenter size-medium wp-image-9167\" srcset=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2011\/05\/adf11g_hr_bizsvc_6_queryVO-300x183.jpg 300w, https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2011\/05\/adf11g_hr_bizsvc_6_queryVO.jpg 790w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a><\/h6><\/span>\n<p>* On <em>Application Module<\/em> dialog, click <em>Finish<\/em>.<\/p>\n<span id=\"_16\"><h6><a href=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2011\/05\/adf11g_hr_bizsvc_7_appModule.jpg\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2011\/05\/adf11g_hr_bizsvc_7_appModule-300x185.jpg\" alt=\"\" title=\"adf11g_hr_bizsvc_7_appModule\" width=\"300\" height=\"185\" class=\"aligncenter size-medium wp-image-9168\" srcset=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2011\/05\/adf11g_hr_bizsvc_7_appModule-300x185.jpg 300w, https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2011\/05\/adf11g_hr_bizsvc_7_appModule.jpg 790w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a><\/h6><\/span>\n<p>* Mark 3.1 Create Entity Objects and Associations step as <em>Done<\/em>.<\/p>\n<span id=\"_17\"><h6><a href=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2011\/05\/adf11g_hr_bizsvc_8_done.jpg\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2011\/05\/adf11g_hr_bizsvc_8_done-300x49.jpg\" alt=\"\" title=\"adf11g_hr_bizsvc_8_done\" width=\"300\" height=\"49\" class=\"aligncenter size-medium wp-image-9169\" srcset=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2011\/05\/adf11g_hr_bizsvc_8_done-300x49.jpg 300w, https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2011\/05\/adf11g_hr_bizsvc_8_done.jpg 502w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a><\/h6><\/span>\n<p>* Click Close Step 3 button and mark Build Business Services step as <em>Done<\/em>.<\/p>\n<span id=\"_18\"><h6><a href=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2011\/05\/adf11g_hr_bizsvc_9_done.jpg\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2011\/05\/adf11g_hr_bizsvc_9_done-300x31.jpg\" alt=\"\" title=\"adf11g_hr_bizsvc_9_done\" width=\"300\" height=\"31\" class=\"aligncenter size-medium wp-image-9170\" srcset=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2011\/05\/adf11g_hr_bizsvc_9_done-300x31.jpg 300w, https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2011\/05\/adf11g_hr_bizsvc_9_done.jpg 469w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a><\/h6><\/span>\n<span id=\"Test_Application_Module\"><h3>Test Application Module<\/h3><\/span>\n<p>* Expand <em>Model -> Application Sources -> demo.model<\/em><br \/>\n* Right click <em>AppModule<\/em>, click <em>Run<\/em><\/p>\n<span id=\"_19\"><h6><a href=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2011\/05\/adf11g_hr_appModule_run.jpg\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2011\/05\/adf11g_hr_appModule_run-300x281.jpg\" alt=\"\" title=\"adf11g_hr_appModule_run\" width=\"300\" height=\"281\" class=\"aligncenter size-medium wp-image-9171\" srcset=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2011\/05\/adf11g_hr_appModule_run-300x281.jpg 300w, https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2011\/05\/adf11g_hr_appModule_run.jpg 443w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a><\/h6><\/span>\n<p>* Test the Swing app<\/p>\n<span id=\"_20\"><h6><a href=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2011\/05\/adf11g_hr_appModule_run_2.jpg\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2011\/05\/adf11g_hr_appModule_run_2-300x225.jpg\" alt=\"\" title=\"adf11g_hr_appModule_run_2\" width=\"300\" height=\"225\" class=\"aligncenter size-medium wp-image-9172\" srcset=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2011\/05\/adf11g_hr_appModule_run_2-300x225.jpg 300w, https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2011\/05\/adf11g_hr_appModule_run_2.jpg 633w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a><\/h6><\/span>\n<span id=\"Refine_Business_Components\"><h3>Refine Business Components<\/h3><\/span>\n<p>* Expand<em> Model -> Application Sources -> demo.model<\/em><\/p>\n<span id=\"Refine_Salary_Attribute_with_Validation\"><h4>Refine Salary Attribute with Validation<\/h4><\/span>\n<p>* Double click <em>Employees<\/em> entity object<br \/>\n* On <em>Employees.xml<\/em> window,<br \/>\n&#8211; Select <em>Attributes -> Salary<\/em><br \/>\n&#8211; Select <em>Validation Rule<\/em> tab<br \/>\n&#8211; Click green plus sign to add a validation rule<\/p>\n<span id=\"_21\"><h6><a href=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2011\/05\/adf11g_hr_salary_rule_1.jpg\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2011\/05\/adf11g_hr_salary_rule_1-300x136.jpg\" alt=\"\" title=\"adf11g_hr_salary_rule_1\" width=\"300\" height=\"136\" class=\"aligncenter size-medium wp-image-9173\" srcset=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2011\/05\/adf11g_hr_salary_rule_1-300x136.jpg 300w, https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2011\/05\/adf11g_hr_salary_rule_1-1024x465.jpg 1024w, https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2011\/05\/adf11g_hr_salary_rule_1.jpg 1111w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a><\/h6><\/span>\n<p>* On <em>Add Validation Rule for: Salary<\/em> dialog<br \/>\n&#8211; Select Rule Type: <em>Range<\/em><br \/>\n* On <em>Rule Definition<\/em> tab:<br \/>\n&#8211; Operator: <em>Between<\/em><br \/>\n&#8211; Min Value: <strong>0<\/strong><br \/>\n&#8211; Max Value: <strong>99000<\/strong><\/p>\n<span id=\"_22\"><h6><a href=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2011\/05\/adf11g_hr_salary_rule_2.jpg\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2011\/05\/adf11g_hr_salary_rule_2-300x151.jpg\" alt=\"\" title=\"adf11g_hr_salary_rule_2\" width=\"300\" height=\"151\" class=\"aligncenter size-medium wp-image-9174\" srcset=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2011\/05\/adf11g_hr_salary_rule_2-300x151.jpg 300w, https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2011\/05\/adf11g_hr_salary_rule_2.jpg 550w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a><\/h6><\/span>\n<p>* On <em>Failure Handling<\/em> tab, set<br \/>\n&#8211; Message Text: <strong>Salary out of range 0 to 99,000<\/strong><\/p>\n<span id=\"_23\"><h6><a href=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2011\/05\/adf11g_hr_salary_rule_3_error.jpg\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2011\/05\/adf11g_hr_salary_rule_3_error-280x300.jpg\" alt=\"\" title=\"adf11g_hr_salary_rule_3_error\" width=\"280\" height=\"300\" class=\"aligncenter size-medium wp-image-9175\" srcset=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2011\/05\/adf11g_hr_salary_rule_3_error-280x300.jpg 280w, https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2011\/05\/adf11g_hr_salary_rule_3_error.jpg 548w\" sizes=\"auto, (max-width: 280px) 100vw, 280px\" \/><\/a><\/h6><\/span>\n<p>* Click <em>OK<\/em> button<\/p>\n<span id=\"Refine_HireDate_with_Formatting\"><h4>Refine HireDate with Formatting<\/h4><\/span>\n<p>* Select <em>HireDate<\/em><br \/>\n* Select <em>Details<\/em><br \/>\n&#8211; Value Type: Expression<br \/>\n&#8211; Value: adf.currentDate<\/p>\n<span id=\"_24\"><h6><a href=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2011\/05\/adf11g_hr_hireDate_1.jpg\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2011\/05\/adf11g_hr_hireDate_1-300x300.jpg\" alt=\"\" title=\"adf11g_hr_hireDate_1\" width=\"300\" height=\"300\" class=\"aligncenter size-medium wp-image-9176\" srcset=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2011\/05\/adf11g_hr_hireDate_1-300x300.jpg 300w, https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2011\/05\/adf11g_hr_hireDate_1-150x150.jpg 150w, https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2011\/05\/adf11g_hr_hireDate_1.jpg 365w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a><\/h6><\/span>\n<p>* Click <em>UI Hints<\/em> tab:<br \/>\n&#8211; Format Type: <em>Simple Date<\/em><br \/>\n&#8211; Format: <strong>MM\/dd\/yyyy<\/strong><\/p>\n<span id=\"_25\"><h6><a href=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2011\/05\/adf11g_hr_hireDate_2.jpg\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2011\/05\/adf11g_hr_hireDate_2.jpg\" alt=\"\" title=\"adf11g_hr_hireDate_2\" width=\"271\" height=\"295\" class=\"aligncenter size-full wp-image-9177\" \/><\/a><\/h6><\/span>\n<p>* Save all<\/p>\n<span id=\"Test_Refined_Business_Entity\"><h4>Test Refined Business Entity<\/h4><\/span>\n<p>* Right click <em>AppModule<\/em>, click <em>Run<\/em><br \/>\n* Test<br \/>\n&#8211; out of range salary validation<br \/>\n&#8211; date format<\/p>\n<span id=\"_26\"><h6><a href=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2011\/05\/adf11g_hr_salary_rule_check.jpg\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2011\/05\/adf11g_hr_salary_rule_check-300x230.jpg\" alt=\"\" title=\"adf11g_hr_salary_rule_check\" width=\"300\" height=\"230\" class=\"aligncenter size-medium wp-image-9178\" srcset=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2011\/05\/adf11g_hr_salary_rule_check-300x230.jpg 300w, https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2011\/05\/adf11g_hr_salary_rule_check.jpg 634w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a><\/h6><\/span>\n<span id=\"Create_JSF_Web_pages\"><h2>Create JSF Web pages<\/h2><\/span>\n<p>* Use ADF Faces Rich Client components<\/p>\n<span id=\"Create_a_New_Web_Page\"><h3>Create a New Web Page<\/h3><\/span>\n<p>* Right click <em>ViewController<\/em>, click <em>New&#8230;<\/em><br \/>\n* Select <em>Web Tier -> JSF\/Facelets -> Page<\/em>. Click <em>OK<\/em>.<\/p>\n<span id=\"_27\"><h6><a href=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2011\/05\/adf11g_hr_jsfPage_create_1.jpg\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2011\/05\/adf11g_hr_jsfPage_create_1-300x211.jpg\" alt=\"\" title=\"adf11g_hr_jsfPage_create_1\" width=\"300\" height=\"211\" class=\"aligncenter size-medium wp-image-9179\" srcset=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2011\/05\/adf11g_hr_jsfPage_create_1-300x211.jpg 300w, https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2011\/05\/adf11g_hr_jsfPage_create_1.jpg 689w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a><\/h6><\/span>\n<p>* On <em>Create JSF Page<\/em> dialog enter:<br \/>\n&#8211; File Name: <strong>DeptEmpPage.jspx<\/strong><br \/>\n&#8211; Document Type: <em>JSP XML<\/em><br \/>\n&#8211; Page Template: <em>Oracle Three Column Layout<\/em><\/p>\n<span id=\"_28\"><h6><a href=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2011\/05\/adf11g_hr_jsfPage_create_2.jpg\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2011\/05\/adf11g_hr_jsfPage_create_2-300x285.jpg\" alt=\"\" title=\"adf11g_hr_jsfPage_create_2\" width=\"300\" height=\"285\" class=\"aligncenter size-medium wp-image-9180\" srcset=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2011\/05\/adf11g_hr_jsfPage_create_2-300x285.jpg 300w, https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2011\/05\/adf11g_hr_jsfPage_create_2.jpg 505w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a><\/h6><\/span>\n<span id=\"Change_Panel_Size\"><h4>Change Panel Size<\/h4><\/span>\n<p>* On <em>DeptEmpPage.jspx<\/em> design view<br \/>\n&#8211; right click the third panel and select <em>Delete<\/em><br \/>\n* On <em>Structure pane<\/em>,<br \/>\n&#8211; select <em>af:pageTemplate<\/em><br \/>\n* On Property pane,<br \/>\n&#8211; startColumnSize: <strong>350<\/strong><\/p>\n<span id=\"Add_Components_to_Page\"><h3>Add Components to Page<\/h3><\/span>\n<span id=\"Add_Accordion\"><h4>Add Accordion<\/h4><\/span>\n<p>* Drag <em>Component Palette -> Layout -> Panel Accordion<\/em> to left panel in page editor<br \/>\n* Highlight newly added accordion, enter in the property pane<br \/>\n&#8211; Text: <strong>Departments<\/strong><br \/>\n* Right click Departments accordion and choose <em>Insert After Show Details Item &#8211; Departments -> Show Detail Item<\/em><\/p>\n<span id=\"_29\"><h6><a href=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2011\/05\/adf11g_hr_jsfPage_addDepartments_1.jpg\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2011\/05\/adf11g_hr_jsfPage_addDepartments_1-300x47.jpg\" alt=\"\" title=\"adf11g_hr_jsfPage_addDepartments_1\" width=\"300\" height=\"47\" class=\"aligncenter size-medium wp-image-9181\" srcset=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2011\/05\/adf11g_hr_jsfPage_addDepartments_1-300x47.jpg 300w, https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2011\/05\/adf11g_hr_jsfPage_addDepartments_1.jpg 544w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a><\/h6><\/span>\n<p>* Change text to <strong>More Info<\/strong><br \/>\n* Drag a <em>Panel Splitter<\/em> component to center pane<br \/>\n* In property pane,<br \/>\n&#8211; Set <em>Orientation<\/em> to <em>Vertical<\/em><br \/>\n* Drag <em>Panel Collection<\/em> component to first area of splitter<br \/>\n* Drag <em>Panel Tabbed<\/em> component to second area of splitter<br \/>\n* Save all<\/p>\n<span id=\"Binding_Data_Controls_to_your_JSF_page\"><h2>Binding Data Controls to your JSF page<\/h2><\/span>\n<span id=\"Bind_Departments_as_Read_Only_Form\"><h3>Bind Departments as Read Only Form<\/h3><\/span>\n<p>* Click <em>Departments<\/em> accordion to expand it<br \/>\n* Drag <em>Data Controls -> DepartmentsView1<\/em> to Departments accordion.<br \/>\n* Choose <em>Forms->ADF Read-Only Form<\/em>.<br \/>\n* In the <em>Edit Form Fields<\/em> dialog, check the <em>Include Navigation Controls<\/em> check box. <\/p>\n<span id=\"_30\"><h6><a href=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2011\/05\/adf11g_hr_jsfPage_addDepartments_2.jpg\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2011\/05\/adf11g_hr_jsfPage_addDepartments_2-300x246.jpg\" alt=\"\" title=\"adf11g_hr_jsfPage_addDepartments_2\" width=\"300\" height=\"246\" class=\"aligncenter size-medium wp-image-9182\" srcset=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2011\/05\/adf11g_hr_jsfPage_addDepartments_2-300x246.jpg 300w, https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2011\/05\/adf11g_hr_jsfPage_addDepartments_2.jpg 583w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a><\/h6><\/span>\n<p>* Click <em>OK<\/em><\/p>\n<span id=\"Bind_EmployeesView3_as_Read_Only_Table\"><h3>Bind EmployeesView3 as Read Only Table<\/h3><\/span>\n<p>* Drag <em>Data Controls -> DepartmentsView1 -> EmployeesView3<\/em> to <em>Panel Collection<\/em> top part<br \/>\n* Choose <em>Tables -> ADF Read-Only Table<\/em><br \/>\n* Check<br \/>\n&#8211; Row Selection: <em>Single Row<\/em><br \/>\n&#8211; Sorting<br \/>\n&#8211; Filtering<\/p>\n<span id=\"_31\"><h6><a href=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2011\/05\/adf11g_hr_jsfPage_addEmployeesView3_1.jpg\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2011\/05\/adf11g_hr_jsfPage_addEmployeesView3_1.jpg\" alt=\"\" title=\"adf11g_hr_jsfPage_addEmployeesView3_1\" width=\"250\" height=\"131\" class=\"aligncenter size-full wp-image-9183\" \/><\/a><\/h6><\/span>\n<p>* Click <em>OK<\/em><\/p>\n<span id=\"Bind_EmployeesView3_as_ADF_Form\"><h3>Bind EmployeesView3 as ADF Form<\/h3><\/span>\n<p>* Drag <em>Data Controls -> DepartmentsView1 -> EmployeesView3<\/em> to Panel Collection bottom part<br \/>\n* Choose <em>Form -> ADF Form<\/em><br \/>\n* In the <em>Edit Form Fields<\/em> dialog,<br \/>\n&#8211; Check the check boxes for &#8220;<em>Include Submit Button<\/em>&#8221;<br \/>\n&#8211; Delete following fields from the list<br \/>\nCommissionPCT,<br \/>\nManagerId,<br \/>\nDepartmentID<\/p>\n<span id=\"_32\"><h6><a href=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2011\/05\/adf11g_hr_jsfPage_addEmployeesView3_2.jpg\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2011\/05\/adf11g_hr_jsfPage_addEmployeesView3_2-300x248.jpg\" alt=\"\" title=\"adf11g_hr_jsfPage_addEmployeesView3_2\" width=\"300\" height=\"248\" class=\"aligncenter size-medium wp-image-9184\" srcset=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2011\/05\/adf11g_hr_jsfPage_addEmployeesView3_2-300x248.jpg 300w, https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2011\/05\/adf11g_hr_jsfPage_addEmployeesView3_2.jpg 584w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a><\/h6><\/span>\n<p>* Click <em>OK<\/em><br \/>\n* Save All<\/p>\n<span id=\"Test_Page\"><h3>Test Page<\/h3><\/span>\n<p>* Right click <em>DeptEmpPage.jspx<\/em> and select <em>Run<\/em><br \/>\n* Web page show up at <a href=\"http:\/\/127.0.0.1:7101\/HRSystem-ViewController-context-root\/faces\/DeptEmpPage.jspx\">http:\/\/127.0.0.1:7101\/HRSystem-ViewController-context-root\/faces\/DeptEmpPage.jspx<\/a><\/p>\n<span id=\"_33\"><h6><a href=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2011\/05\/adf11g_hr_jsfPage_test_1.jpg\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2011\/05\/adf11g_hr_jsfPage_test_1-300x132.jpg\" alt=\"\" title=\"adf11g_hr_jsfPage_test_1\" width=\"300\" height=\"132\" class=\"aligncenter size-medium wp-image-9185\" srcset=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2011\/05\/adf11g_hr_jsfPage_test_1-300x132.jpg 300w, https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2011\/05\/adf11g_hr_jsfPage_test_1-1024x450.jpg 1024w, https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2011\/05\/adf11g_hr_jsfPage_test_1.jpg 1102w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a><\/h6><\/span>\n<span id=\"Enhancing_your_JSF_page\"><h2>Enhancing your JSF page<\/h2><\/span>\n<span id=\"Add_graph_representation\"><h3>Add graph representation<\/h3><\/span>\n<p>* On Structure pane, click <em>af:table -t1<\/em><br \/>\n* On property pane, select <em>ColumnSelection: Single<\/em><br \/>\n* Expand <em>More Info<\/em> accordion<br \/>\n* Drag &#8220;<em>Data Controls -> DepartmentsView1 -> EmployeesView3<\/em>&#8221; to <em>More Info<\/em> accordion<br \/>\n* Choose <em>Graph<\/em><br \/>\n* Select<br \/>\n<em>Pie -> Pie<\/em><br \/>\nQuick Start Layouts: third from left<\/p>\n<span id=\"_34\"><h6><a href=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2011\/05\/adf11g_hr_jsfPage_addPie_1.jpg\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2011\/05\/adf11g_hr_jsfPage_addPie_1-300x218.jpg\" alt=\"\" title=\"adf11g_hr_jsfPage_addPie_1\" width=\"300\" height=\"218\" class=\"aligncenter size-medium wp-image-9186\" srcset=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2011\/05\/adf11g_hr_jsfPage_addPie_1-300x218.jpg 300w, https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2011\/05\/adf11g_hr_jsfPage_addPie_1.jpg 759w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a><\/h6><\/span>\n<p>* Click <em>OK<\/em><br \/>\n* On <em>Create Pie Graph<\/em> dialog,<br \/>\n&#8211; Pie: <em>Salary<\/em><br \/>\n&#8211; Slices: <em>LastName<\/em><\/p>\n<span id=\"_35\"><h6><a href=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2011\/05\/adf11g_hr_jsfPage_addPie_2.jpg\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2011\/05\/adf11g_hr_jsfPage_addPie_2-300x218.jpg\" alt=\"\" title=\"adf11g_hr_jsfPage_addPie_2\" width=\"300\" height=\"218\" class=\"aligncenter size-medium wp-image-9187\" srcset=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2011\/05\/adf11g_hr_jsfPage_addPie_2-300x218.jpg 300w, https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2011\/05\/adf11g_hr_jsfPage_addPie_2.jpg 731w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a><\/h6><\/span>\n<p>* Click <em>OK<\/em><br \/>\n* Click Save All<\/p>\n<span id=\"Test_Pie_Graph\"><h3>Test Pie Graph<\/h3><\/span>\n<p>* Right click page and select Run<\/p>\n<span id=\"_36\"><h6><a href=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2011\/05\/adf11g_hr_jsfPage_addPie_3_test.jpg\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2011\/05\/adf11g_hr_jsfPage_addPie_3_test-300x176.jpg\" alt=\"\" title=\"adf11g_hr_jsfPage_addPie_3_test\" width=\"300\" height=\"176\" class=\"aligncenter size-medium wp-image-9188\" srcset=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2011\/05\/adf11g_hr_jsfPage_addPie_3_test-300x176.jpg 300w, https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2011\/05\/adf11g_hr_jsfPage_addPie_3_test.jpg 764w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a><\/h6><\/span>\n<span id=\"Adding_More_Complex_Business_Services\"><h2>Adding More Complex Business Services<\/h2><\/span>\n<span id=\"Add_New_View_Object\"><h3>Add New View Object<\/h3><\/span>\n<p>* Right click<em> Model -> Application Soruces -> demo.model<\/em><br \/>\n* Select <em>New View Object&#8230;<\/em><\/p>\n<span id=\"_37\"><h6><a href=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2011\/05\/adf11g_hr_addNewViewObj_1.jpg\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2011\/05\/adf11g_hr_addNewViewObj_1.jpg\" alt=\"\" title=\"adf11g_hr_addNewViewObj_1\" width=\"268\" height=\"239\" class=\"aligncenter size-full wp-image-9190\" \/><\/a><\/h6><\/span>\n<p>* On <em>Create View Object<\/em> dialog, enter following and click Next<br \/>\n&#8211; Name: <strong>EmpDetails <\/strong><br \/>\n* On <em>Entity Object<\/em> dialog<br \/>\n&#8211; Move <em>Employees <\/em>from Available to Selected pane<br \/>\n&#8211; Then move <em>Departments<\/em> to Selected pane<br \/>\n&#8211; Note that only <em>Employees<\/em> have <em>Updatable<\/em> checkbox.<\/p>\n<span id=\"_38\"><h6><a href=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2011\/05\/adf11g_hr_addNewViewObj_2.jpg\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2011\/05\/adf11g_hr_addNewViewObj_2-300x186.jpg\" alt=\"\" title=\"adf11g_hr_addNewViewObj_2\" width=\"300\" height=\"186\" class=\"aligncenter size-medium wp-image-9189\" srcset=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2011\/05\/adf11g_hr_addNewViewObj_2-300x186.jpg 300w, https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2011\/05\/adf11g_hr_addNewViewObj_2.jpg 790w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a><\/h6><\/span>\n<p>&#8211; Click <em>Next<\/em><br \/>\n* On <em>Attributes<\/em> dialog, move following Employees fields to Selected pane<br \/>\n&#8211; EmployeeId<br \/>\n&#8211; FirstName<br \/>\n&#8211; LastName<br \/>\n&#8211; Salary<br \/>\n&#8211; HireDate<br \/>\n&#8211; JobId<\/p>\n<span id=\"_39\"><h6><a href=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2011\/05\/adf11g_hr_addNewViewObj_3_attributes.jpg\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2011\/05\/adf11g_hr_addNewViewObj_3_attributes-300x186.jpg\" alt=\"\" title=\"adf11g_hr_addNewViewObj_3_attributes\" width=\"300\" height=\"186\" class=\"aligncenter size-medium wp-image-9191\" srcset=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2011\/05\/adf11g_hr_addNewViewObj_3_attributes-300x186.jpg 300w, https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2011\/05\/adf11g_hr_addNewViewObj_3_attributes.jpg 786w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a><\/h6><\/span>\n<p>* Click <em>Finish<\/em> button<\/p>\n<span id=\"Add_YearlySalary_Attribute\"><h3>Add YearlySalary Attribute<\/h3><\/span>\n<p>* On <em>EmpDetails.xml<\/em> editor, click <em>Attributes<\/em>, then click Create new attribute green plus sign. Enter:<br \/>\n&#8211; Name: <strong>YearlySalary<\/strong><br \/>\n&#8211; Type: <em>Number<\/em><br \/>\n&#8211; Default Value Type: <em>Expression<\/em><br \/>\n&#8211; Value: <strong>Salary * 12<\/strong><\/p>\n<span id=\"_40\"><h6><a href=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2011\/05\/adf11g_hr_addNewViewObj_4_yearlySalary.jpg\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2011\/05\/adf11g_hr_addNewViewObj_4_yearlySalary-300x148.jpg\" alt=\"\" title=\"adf11g_hr_addNewViewObj_4_yearlySalary\" width=\"300\" height=\"148\" class=\"aligncenter size-medium wp-image-9192\" srcset=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2011\/05\/adf11g_hr_addNewViewObj_4_yearlySalary-300x148.jpg 300w, https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2011\/05\/adf11g_hr_addNewViewObj_4_yearlySalary.jpg 540w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a><\/h6><\/span>\n<p>* Click <em>OK<\/em> button<\/p>\n<span id=\"Add_View_Accessor\"><h3>Add View Accessor<\/h3><\/span>\n<p>* On <em>EmpDetails.xml<\/em> editor, click <em>View Accessors<\/em>, then click Create new view accessors green plus sign.<br \/>\n* On <em>View Accessors<\/em> dialog,<br \/>\n&#8211; Move <em>JobsView<\/em> to right pane<\/p>\n<span id=\"_41\"><h6><a href=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2011\/05\/adf11g_hr_addViewAccessor_1.jpg\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2011\/05\/adf11g_hr_addViewAccessor_1-300x206.jpg\" alt=\"\" title=\"adf11g_hr_addViewAccessor_1\" width=\"300\" height=\"206\" class=\"aligncenter size-medium wp-image-9193\" srcset=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2011\/05\/adf11g_hr_addViewAccessor_1-300x206.jpg 300w, https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2011\/05\/adf11g_hr_addViewAccessor_1.jpg 629w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a><\/h6><\/span>\n<p>&#8211; Click <em>OK<\/em><\/p>\n<span id=\"Add_List_of_Values_for_JobId\"><h3>Add List of Values for JobId<\/h3><\/span>\n<p>* Back on <em>EmpDetails.xml<\/em> editor, click <em>Attributes<\/em>, select <em>JobId<\/em><br \/>\n* Click <em>List of Values<\/em> tab, click green plus sign (add list of values)<br \/>\n* On <em>Create List of Values<\/em> dialog, select <em>Configuration<\/em> tab, select:<br \/>\n&#8211; List Data Source: <em>JobsView1<\/em><br \/>\n&#8211; List Attribute: <em>JobId<\/em><\/p>\n<span id=\"_42\"><h6><a href=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2011\/05\/adf11g_hr_addLOV_1.jpg\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2011\/05\/adf11g_hr_addLOV_1-300x134.jpg\" alt=\"\" title=\"adf11g_hr_addLOV_1\" width=\"300\" height=\"134\" class=\"aligncenter size-medium wp-image-9194\" srcset=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2011\/05\/adf11g_hr_addLOV_1-300x134.jpg 300w, https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2011\/05\/adf11g_hr_addLOV_1.jpg 737w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a><\/h6><\/span>\n<p>* On <em>UI Hints<\/em> tab,<br \/>\n&#8211; Select <em>Input Text with List of Values<\/em><br \/>\n&#8211; Move <em>JobTitle <\/em>to right pane<\/p>\n<span id=\"_43\"><h6><a href=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2011\/05\/adf11g_hr_addLOV_2.jpg\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2011\/05\/adf11g_hr_addLOV_2-300x243.jpg\" alt=\"\" title=\"adf11g_hr_addLOV_2\" width=\"300\" height=\"243\" class=\"aligncenter size-medium wp-image-9195\" srcset=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2011\/05\/adf11g_hr_addLOV_2-300x243.jpg 300w, https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2011\/05\/adf11g_hr_addLOV_2.jpg 437w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a><\/h6><\/span>\n<p>&#8211; Click <em>OK<\/em><\/p>\n<span id=\"Add_New_View_Object_to_AppModule\"><h3>Add New View Object to AppModule<\/h3><\/span>\n<p>* Double click <em>AppModule<\/em><br \/>\n* Select <em>Data Model<\/em> on left panel<br \/>\n* Move <em>EmpDetails<\/em> to right side pane<\/p>\n<span id=\"_44\"><h6><a href=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2011\/05\/adf11g_hr_addNewViewObj_5.jpg\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2011\/05\/adf11g_hr_addNewViewObj_5-300x108.jpg\" alt=\"\" title=\"adf11g_hr_addNewViewObj_5\" width=\"300\" height=\"108\" class=\"aligncenter size-medium wp-image-9196\" srcset=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2011\/05\/adf11g_hr_addNewViewObj_5-300x108.jpg 300w, https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2011\/05\/adf11g_hr_addNewViewObj_5.jpg 834w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a><\/h6><\/span>\n<p>* Save All<\/p>\n<span id=\"Test_New_View_Object\"><h3>Test New View Object<\/h3><\/span>\n<p>* Right click <em>AppModule<\/em> and select <em>Run<\/em><\/p>\n<span id=\"_45\"><h6><a href=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2011\/05\/adf11g_hr_addNewViewObj_6_test.jpg\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2011\/05\/adf11g_hr_addNewViewObj_6_test-300x142.jpg\" alt=\"\" title=\"adf11g_hr_addNewViewObj_6_test\" width=\"300\" height=\"142\" class=\"aligncenter size-medium wp-image-9197\" srcset=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2011\/05\/adf11g_hr_addNewViewObj_6_test-300x142.jpg 300w, https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2011\/05\/adf11g_hr_addNewViewObj_6_test.jpg 864w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a><\/h6><\/span>\n<span id=\"Creating_a_Page_Flow\"><h2>Creating a Page Flow<\/h2><\/span>\n<span id=\"Setup_Page_Flow\"><h3>Setup Page Flow<\/h3><\/span>\n<p>* Expand <em>ViewController -> Web Content -> WEB-INF<\/em> folder<br \/>\n* Double click <em>adfc-config.xml<\/em><br \/>\n* Drag and drop the <em>DeptEmpPage.jspx<\/em> file from the application navigator into the empty adf-config diagram<br \/>\n* Drag a new View component onto adf-config diagram. Rename it to <strong>query<\/strong>.<br \/>\n* Select <em>Control Flow Case<\/em><br \/>\n* Drag a line from <em>DeptEmpPage<\/em> to <em>query<\/em> on adf-config editor.<br \/>\n&#8211; Name the line <strong>goQuery<\/strong>.<br \/>\n* Select <em>Control Flow Case<\/em> again<br \/>\n* Drag a line from <em>query<\/em> to <em>DeptEmpPage<\/em> on adf-config editor. Name the line <strong>back<\/strong>.<\/p>\n<span id=\"_46\"><h6><a href=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2011\/05\/adf11g_hr_pageFlow_1.jpg\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2011\/05\/adf11g_hr_pageFlow_1-300x123.jpg\" alt=\"\" title=\"adf11g_hr_pageFlow_1\" width=\"300\" height=\"123\" class=\"aligncenter size-medium wp-image-9198\" srcset=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2011\/05\/adf11g_hr_pageFlow_1-300x123.jpg 300w, https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2011\/05\/adf11g_hr_pageFlow_1.jpg 558w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a><\/h6><\/span>\n<span id=\"Create_query.jspx_Page\"><h3>Create <strong>query.jspx<\/strong> Page<\/h3><\/span>\n<p>* Double click <em>query<\/em> view in the diagram<br \/>\n* Select<br \/>\n&#8211; Page Template: <em>Oracle Three Column Layout<\/em><\/p>\n<span id=\"_47\"><h6><a href=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2011\/05\/adf11g_hr_pageFlow_2_query.jpg\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2011\/05\/adf11g_hr_pageFlow_2_query-300x288.jpg\" alt=\"\" title=\"adf11g_hr_pageFlow_2_query\" width=\"300\" height=\"288\" class=\"aligncenter size-medium wp-image-9199\" srcset=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2011\/05\/adf11g_hr_pageFlow_2_query-300x288.jpg 300w, https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2011\/05\/adf11g_hr_pageFlow_2_query.jpg 505w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a><\/h6><\/span>\n<p>* Click <em>OK<\/em><br \/>\n* Delete start and end panel<br \/>\n* Refresh <em>Data Controls<\/em><br \/>\n* Expand <em>EmpDetails1 -> Named Criteria<\/em><br \/>\n* Drag <em>All Queriable Attributes<\/em> to the center pane of <em>query.jspx<\/em> page<br \/>\n* Choose <em>Query -> ADF Query Panel<\/em><br \/>\n* Drag <em>EmpDetails1<\/em> from <em>Data Controls<\/em> to lower part of query page<br \/>\n* Select <em>Form -> ADF Form&#8230;<\/em><br \/>\n* On <em>Edit Form Fields<\/em>, check both<br \/>\n&#8211; Include Navigation Controls<br \/>\n&#8211; Submit Button<\/p>\n<span id=\"_48\"><h6><a href=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2011\/05\/adf11g_hr_pageFlow_4_addSubmit.jpg\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2011\/05\/adf11g_hr_pageFlow_4_addSubmit-300x168.jpg\" alt=\"\" title=\"adf11g_hr_pageFlow_4_addSubmit\" width=\"300\" height=\"168\" class=\"aligncenter size-medium wp-image-9200\" srcset=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2011\/05\/adf11g_hr_pageFlow_4_addSubmit-300x168.jpg 300w, https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2011\/05\/adf11g_hr_pageFlow_4_addSubmit.jpg 940w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a><\/h6><\/span>\n<p>* Click <em>OK<\/em><\/p>\n<span id=\"Add_Submit_Button\"><h3>Add Submit Button<\/h3><\/span>\n<p>* In the <em>Structure<\/em> pane, locate <em>af:command:Button &#8211; Submit<\/em><br \/>\n* Right click <em>af:command:Button &#8211; Submit<\/em><br \/>\n* Choose <em>Insert after af:command:Button &#8211; Submit -> Button<\/em><\/p>\n<span id=\"_49\"><h6><a href=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2011\/05\/adf11g_hr_pageFlow_4_addSubmit1.jpg\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2011\/05\/adf11g_hr_pageFlow_4_addSubmit1-300x168.jpg\" alt=\"\" title=\"adf11g_hr_pageFlow_4_addSubmit\" width=\"300\" height=\"168\" class=\"aligncenter size-medium wp-image-9201\" srcset=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2011\/05\/adf11g_hr_pageFlow_4_addSubmit1-300x168.jpg 300w, https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2011\/05\/adf11g_hr_pageFlow_4_addSubmit1.jpg 940w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a><\/h6><\/span>\n<p>* On property pane for the new button, set:<br \/>\n&#8211; Text: <strong>Back<\/strong><br \/>\n&#8211; Action: <em>back<\/em><\/p>\n<span id=\"Add_Commit_and_Rollback_Button\"><h3>Add Commit and Rollback Button<\/h3><\/span>\n<p>* On <em>Data Controls<\/em> pane, locate <em>AppModuleDataControl -> Operations<\/em><br \/>\n* Drag <em>Commit<\/em> icon into the structure pane before the &#8216;<em>af:commandButton &#8211; First<\/em>&#8216;<br \/>\n&#8211; choose <em>ADF Button<\/em> when prompted.<\/p>\n<span id=\"_50\"><h6><a href=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2011\/05\/adf11g_hr_pageFlow_5_addCommit.jpg\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2011\/05\/adf11g_hr_pageFlow_5_addCommit-300x176.jpg\" alt=\"\" title=\"adf11g_hr_pageFlow_5_addCommit\" width=\"300\" height=\"176\" class=\"aligncenter size-medium wp-image-9202\" srcset=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2011\/05\/adf11g_hr_pageFlow_5_addCommit-300x176.jpg 300w, https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2011\/05\/adf11g_hr_pageFlow_5_addCommit.jpg 383w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a><\/h6><\/span>\n<p>* Drag <em>Rollback<\/em> icon into the structure pane before the <em>First<\/em> button, choose <em>ADF Button<\/em> when prompted.<\/p>\n<span id=\"_51\"><h6><a href=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2011\/05\/adf11g_hr_pageFlow_6_addRollback.jpg\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2011\/05\/adf11g_hr_pageFlow_6_addRollback-300x193.jpg\" alt=\"\" title=\"adf11g_hr_pageFlow_6_addRollback\" width=\"300\" height=\"193\" class=\"aligncenter size-medium wp-image-9203\" srcset=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2011\/05\/adf11g_hr_pageFlow_6_addRollback-300x193.jpg 300w, https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2011\/05\/adf11g_hr_pageFlow_6_addRollback.jpg 381w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a><\/h6><\/span>\n<p>* In the Property Inspector, for the <em>Rollback<\/em> and for the <em>Commit<\/em> buttons, set the <em>Behavior > Disabled<\/em> property to <em>default (false)<\/em>.<\/p>\n<span id=\"_52\"><h6><a href=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2011\/05\/adf11g_hr_pageFlow_7_addRollback_disabled.jpg\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2011\/05\/adf11g_hr_pageFlow_7_addRollback_disabled-300x135.jpg\" alt=\"\" title=\"adf11g_hr_pageFlow_7_addRollback_disabled\" width=\"300\" height=\"135\" class=\"aligncenter size-medium wp-image-9204\" srcset=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2011\/05\/adf11g_hr_pageFlow_7_addRollback_disabled-300x135.jpg 300w, https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2011\/05\/adf11g_hr_pageFlow_7_addRollback_disabled.jpg 373w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a><\/h6><\/span>\n<span id=\"Add_Query_Button\"><h3>Add Query Button<\/h3><\/span>\n<p>* Open <em>DeptEmpPage.jspx<\/em><br \/>\n* Expand <em>Departments<\/em> accordion<br \/>\n* Drag a button between <em>First<\/em> and <em>Previous<\/em> buttons<br \/>\n* On new button property pane, set<br \/>\n&#8211; Text: <strong>Query<\/strong><br \/>\n&#8211; Action: <em>goQuery<\/em><br \/>\n* Save All<\/p>\n<span id=\"Test_Page_Flow\"><h3>Test Page Flow<\/h3><\/span>\n<p>* Right click <em>DeptEmpPage.jspx<\/em><br \/>\n* Select <em>Run<\/em><br \/>\n* Click<em> Query<\/em> button to go to the <em>query<\/em> page.<br \/>\n* Click <em>Back<\/em> button to go back to<em> DeptEmpPage<\/em> page.<\/p>\n<span id=\"Using_ADF_Faces_Framework_Features\"><h2>Using ADF Faces Framework Features<\/h2><\/span>\n<span id=\"Using_Partial_Page_Refresh\"><h3>Using Partial Page Refresh<\/h3><\/span>\n<p>* Open <em>query.jspx<\/em><br \/>\n* Click on Salary row.<br \/>\n* In property pane,<br \/>\n&#8211; set <em>Id<\/em> to <strong>sal<\/strong><br \/>\n&#8211; set <em>Behavior -> AutoSubmit<\/em> to <em>True<\/em><br \/>\n* Click on <em>YearlySalary<\/em> field.<br \/>\n&#8211; In property pane, right click <em>Behavior -> ParticalTriggers<\/em> field, and choose <em>Edit&#8230;<\/em><br \/>\n&#8211; Move &#8220;<em>facet(center) -> panelFormLayout &#8211; pfl1 -> inputText &#8211; sql<\/em>&#8221; to the right side panel.<br \/>\n&#8211; Click <em>OK<\/em>.<\/p>\n<span id=\"_53\"><h6><a href=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2011\/05\/adf11g_hr_partialTrigger_1.jpg\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2011\/05\/adf11g_hr_partialTrigger_1-300x257.jpg\" alt=\"\" title=\"adf11g_hr_partialTrigger_1\" width=\"300\" height=\"257\" class=\"aligncenter size-medium wp-image-9205\" srcset=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2011\/05\/adf11g_hr_partialTrigger_1-300x257.jpg 300w, https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2011\/05\/adf11g_hr_partialTrigger_1.jpg 663w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a><\/h6><\/span>\n<p>* Save all.<\/p>\n<span id=\"Test\"><h4>Test<\/h4><\/span>\n<p>* Right click <em>DeptEmpPage.jspx<\/em> and select <em>Run<\/em><br \/>\n* Web page show up at <a href=\"http:\/\/127.0.0.1:7101\/HRSystem-ViewController-context-root\/faces\/DeptEmpPage.jspx\">http:\/\/127.0.0.1:7101\/HRSystem-ViewController-context-root\/faces\/DeptEmpPage.jspx<\/a><br \/>\n* Click <em>Query<\/em> button in the <em>Departments<\/em> panel<br \/>\n* Enter <strong>A%<\/strong> in the <em>FirstName<\/em> field in the <em>Employees<\/em> panel<br \/>\n* Click <em>Search<\/em> button<br \/>\n* Update the <em>Salary<\/em> field and click on a different field (such as <em>LastName<\/em> field)<br \/>\n* Notice that <em>YearlySalary<\/em> field is updated automatically.<\/p>\n<span id=\"Using_Drop_Down_Menus_and_Operation_Components\"><h3>Using Drop Down Menus and Operation Components<\/h3><\/span>\n<p>* Open <em>DeptEmpPage.jspx<\/em><br \/>\n* Right click menu place holder and select <em>Insert inside Facet menus -> Menu<\/em><\/p>\n<span id=\"_54\"><h6><a href=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2011\/05\/adf11g_hr_insertMenu_1.jpg\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2011\/05\/adf11g_hr_insertMenu_1-300x69.jpg\" alt=\"\" title=\"adf11g_hr_insertMenu_1\" width=\"300\" height=\"69\" class=\"aligncenter size-medium wp-image-9226\" srcset=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2011\/05\/adf11g_hr_insertMenu_1-300x69.jpg 300w, https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2011\/05\/adf11g_hr_insertMenu_1.jpg 768w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a><\/h6><\/span>\n<p>* In property pane,<br \/>\n&#8211; set Text field to: <strong>My Options<\/strong><br \/>\n&#8211; set <em>Behavior > Detachable property<\/em> to <em>true<\/em><\/p>\n<span id=\"Add_Export_to_Excel_Menu_Item\"><h4>Add Export to Excel Menu Item<\/h4><\/span>\n<p>* In structure pane,<br \/>\n&#8211; right click <em>af:menu &#8211; My Options<\/em>, and<br \/>\n&#8211; select Insert inside af:menu &#8211; My Options -> Menu Item<\/p>\n<span id=\"_55\"><h6><a href=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2011\/05\/adf11g_hr_insertMenuItem_1.jpg\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2011\/05\/adf11g_hr_insertMenuItem_1-300x162.jpg\" alt=\"\" title=\"adf11g_hr_insertMenuItem_1\" width=\"300\" height=\"162\" class=\"aligncenter size-medium wp-image-9227\" srcset=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2011\/05\/adf11g_hr_insertMenuItem_1-300x162.jpg 300w, https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2011\/05\/adf11g_hr_insertMenuItem_1.jpg 712w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a><\/h6><\/span>\n<p>* In property pane,<br \/>\n&#8211; set <em>Text<\/em> field to <em>Export to Excel<\/em><br \/>\n* Drag &#8220;<em>Component Palette -> Operations -> Export Collection Action Listener<\/em>&#8221; to Structure pane&#8217;s &#8220;<em>af:commandMenuItem &#8211; Export to Excel<\/em>&#8220;.<br \/>\n* In &#8220;<em>Insert Export Collection Action Listener<\/em>&#8221; dialog,<br \/>\n&#8211; right click <em>ExportedId<\/em> field and click <em>Edit&#8230;<\/em><br \/>\n&#8211; select &#8220;<em>form &#8211; f1 -> facet(center) -> panelSplitter &#8211; ps1 -> facet (first) -> panelCollection &#8211; pc1 -> table* &#8211; t1 <\/em>&#8221;<\/p>\n<span id=\"_56\"><h6><a href=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2011\/05\/adf11g_hr_insertMenuItem_2_listener.jpg\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2011\/05\/adf11g_hr_insertMenuItem_2_listener-300x260.jpg\" alt=\"\" title=\"adf11g_hr_insertMenuItem_2_listener\" width=\"300\" height=\"260\" class=\"aligncenter size-medium wp-image-9228\" srcset=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2011\/05\/adf11g_hr_insertMenuItem_2_listener-300x260.jpg 300w, https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2011\/05\/adf11g_hr_insertMenuItem_2_listener.jpg 624w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a><\/h6><\/span>\n<p>&#8211; Click <em>OK<\/em><br \/>\n&#8211; Select <em>excelHTML<\/em> in <em>Type<\/em> field, click <em>OK<\/em>.<\/p>\n<span id=\"_57\"><h6><a href=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2011\/05\/adf11g_hr_insertMenuItem_3_listener.jpg\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2011\/05\/adf11g_hr_insertMenuItem_3_listener-300x110.jpg\" alt=\"\" title=\"adf11g_hr_insertMenuItem_3_listener\" width=\"300\" height=\"110\" class=\"aligncenter size-medium wp-image-9229\" srcset=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2011\/05\/adf11g_hr_insertMenuItem_3_listener-300x110.jpg 300w, https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2011\/05\/adf11g_hr_insertMenuItem_3_listener.jpg 394w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a><\/h6><\/span>\n<span id=\"Add_Printable_Page_Menu_Item\"><h4>Add Printable Page Menu Item<\/h4><\/span>\n<p>* In <em>Structure<\/em> pane, right click &#8220;<em>af:commandMenuItem &#8211; Export to Excel<\/em>&#8220;, and select &#8220;<em>Insert After af:commandMenuItem &#8211; Export to Excel -> Menu Item<\/em>&#8221;<\/p>\n<span id=\"_58\"><h6><a href=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2011\/05\/adf11g_hr_insertMenuItem_4_printer.jpg\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2011\/05\/adf11g_hr_insertMenuItem_4_printer-300x161.jpg\" alt=\"\" title=\"adf11g_hr_insertMenuItem_4_printer\" width=\"300\" height=\"161\" class=\"aligncenter size-medium wp-image-9230\" srcset=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2011\/05\/adf11g_hr_insertMenuItem_4_printer-300x161.jpg 300w, https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2011\/05\/adf11g_hr_insertMenuItem_4_printer.jpg 769w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a><\/h6><\/span>\n<p>* In property pane,<br \/>\n&#8211; set <em>Text<\/em> field to <em>Printable Page<\/em><br \/>\n* Drag &#8220;<em>Component Palette -> Operations -> Show Printable Page Behavior&#8221;<\/em> to the newly added menu item in structure pane.<br \/>\n* Save all<\/p>\n<span id=\"Test_1\"><h4>Test<\/h4><\/span>\n<p>* Right click <em>DeptEmpPage.jspx<\/em> and select <em>Run<\/em><br \/>\n* Web page show up at <a href=\"http:\/\/127.0.0.1:7101\/HRSystem-ViewController-context-root\/faces\/DeptEmpPage.jspx\">http:\/\/127.0.0.1:7101\/HRSystem-ViewController-context-root\/faces\/DeptEmpPage.jspx<\/a><br \/>\n* Test<br \/>\n&#8211; detachable menu<br \/>\n&#8211; Export to Excel<br \/>\n&#8211; Printable Page <\/p>\n<span id=\"_59\"><h6><a href=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2011\/05\/adf11g_hr_insertMenu_2_test.jpg\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2011\/05\/adf11g_hr_insertMenu_2_test-300x63.jpg\" alt=\"\" title=\"adf11g_hr_insertMenu_2_test\" width=\"300\" height=\"63\" class=\"aligncenter size-medium wp-image-9231\" srcset=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2011\/05\/adf11g_hr_insertMenu_2_test-300x63.jpg 300w, https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2011\/05\/adf11g_hr_insertMenu_2_test.jpg 794w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a><\/h6><\/span>\n<span id=\"Create_Read_Only_Business_Services_Page_Fragments_and_Regions_\"><h2>Create Read Only Business Services, Page Fragments and Regions <\/h2><\/span>\n<span id=\"Query_Only_Business_Service_Based_on_Parameters\"><h3>Query Only Business Service Based on Parameters<\/h3><\/span>\n<p>* In <em>Model<\/em> folder, right click <em>demo.model<\/em>, select <em>New View Object&#8230;<\/em><br \/>\n* In <em>Create View Object<\/em> dialog, set<br \/>\n&#8211; Name: <strong>EmpByEmail<\/strong><br \/>\n&#8211; checked: SQL query<\/p>\n<span id=\"_60\"><h6><a href=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2011\/05\/adf11g_hr_feature_param_1.jpg\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2011\/05\/adf11g_hr_feature_param_1-300x184.jpg\" alt=\"\" title=\"adf11g_hr_feature_param_1\" width=\"300\" height=\"184\" class=\"aligncenter size-medium wp-image-9207\" srcset=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2011\/05\/adf11g_hr_feature_param_1-300x184.jpg 300w, https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2011\/05\/adf11g_hr_feature_param_1.jpg 792w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a><\/h6><\/span>\n<p>click <em>Next<\/em><br \/>\n* In <em>Query<\/em> dialog, enter query statement:<\/p>\n<pre lang=\"sql\">\r\nselect first_name, last_name from employees where email=:p_email\r\n<\/pre>\n<p>* Click <em>Test and Explain&#8230;<\/em> button, should receive Query is valid confirmation.<\/p>\n<span id=\"_61\"><h6><a href=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2011\/05\/adf11g_hr_feature_param_2.jpg\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2011\/05\/adf11g_hr_feature_param_2-300x187.jpg\" alt=\"\" title=\"adf11g_hr_feature_param_2\" width=\"300\" height=\"187\" class=\"aligncenter size-medium wp-image-9208\" srcset=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2011\/05\/adf11g_hr_feature_param_2-300x187.jpg 300w, https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2011\/05\/adf11g_hr_feature_param_2.jpg 787w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a><\/h6><\/span>\n<span id=\"_62\"><h6><a href=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2011\/05\/adf11g_hr_feature_param_21.jpg\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2011\/05\/adf11g_hr_feature_param_21-300x187.jpg\" alt=\"\" title=\"adf11g_hr_feature_param_2\" width=\"300\" height=\"187\" class=\"aligncenter size-medium wp-image-9209\" srcset=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2011\/05\/adf11g_hr_feature_param_21-300x187.jpg 300w, https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2011\/05\/adf11g_hr_feature_param_21.jpg 787w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a><\/h6><\/span>\n<p>* In <em>Bind Variables<\/em> dialog, click <em>New<\/em> button.<br \/>\n&#8211; Set <em>Variable -> Name<\/em> to <strong>p_email<\/strong><\/p>\n<span id=\"_63\"><h6><a href=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2011\/05\/adf11g_hr_feature_param_4.jpg\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2011\/05\/adf11g_hr_feature_param_4-300x190.jpg\" alt=\"\" title=\"adf11g_hr_feature_param_4\" width=\"300\" height=\"190\" class=\"aligncenter size-medium wp-image-9210\" srcset=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2011\/05\/adf11g_hr_feature_param_4-300x190.jpg 300w, https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2011\/05\/adf11g_hr_feature_param_4.jpg 786w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a><\/h6><\/span>\n<p>&#8211; Set <em>Control Hints -> Label<\/em> to <strong>Email<\/strong><\/p>\n<span id=\"_64\"><h6><a href=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2011\/05\/adf11g_hr_feature_param_5_hint.jpg\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2011\/05\/adf11g_hr_feature_param_5_hint-300x188.jpg\" alt=\"\" title=\"adf11g_hr_feature_param_5_hint\" width=\"300\" height=\"188\" class=\"aligncenter size-medium wp-image-9211\" srcset=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2011\/05\/adf11g_hr_feature_param_5_hint-300x188.jpg 300w, https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2011\/05\/adf11g_hr_feature_param_5_hint.jpg 791w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a><\/h6><\/span>\n<p>* Click <em>Next<\/em> until <em>Application Module<\/em> dialog,<br \/>\n&#8211; Check: <em>Add to Application Module<\/em><\/p>\n<span id=\"_65\"><h6><a href=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2011\/05\/adf11g_hr_feature_param_6_appMod.jpg\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2011\/05\/adf11g_hr_feature_param_6_appMod-300x277.jpg\" alt=\"\" title=\"adf11g_hr_feature_param_6_appMod\" width=\"300\" height=\"277\" class=\"aligncenter size-medium wp-image-9212\" srcset=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2011\/05\/adf11g_hr_feature_param_6_appMod-300x277.jpg 300w, https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2011\/05\/adf11g_hr_feature_param_6_appMod.jpg 347w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a><\/h6><\/span>\n<p>* Click <em>Finish<\/em><\/p>\n<span id=\"Test_AppModule\"><h4>Test AppModule<\/h4><\/span>\n<p>* Right click <em>AppModule<\/em> and select <em>Run<\/em><br \/>\n* Double click <em>EmpByEmail1<\/em><br \/>\n* Enter a value in the Bind Variables dialog, e.g. <strong>SKING<\/strong>, and click <em>OK<\/em><\/p>\n<span id=\"_66\"><h6><a href=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2011\/05\/adf11g_hr_feature_param_7_test.jpg\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2011\/05\/adf11g_hr_feature_param_7_test-300x287.jpg\" alt=\"\" title=\"adf11g_hr_feature_param_7_test\" width=\"300\" height=\"287\" class=\"aligncenter size-medium wp-image-9213\" srcset=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2011\/05\/adf11g_hr_feature_param_7_test-300x287.jpg 300w, https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2011\/05\/adf11g_hr_feature_param_7_test.jpg 444w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a><\/h6><\/span>\n<span id=\"_67\"><h6><a href=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2011\/05\/adf11g_hr_feature_param_8_test.jpg\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2011\/05\/adf11g_hr_feature_param_8_test-300x203.jpg\" alt=\"\" title=\"adf11g_hr_feature_param_8_test\" width=\"300\" height=\"203\" class=\"aligncenter size-medium wp-image-9214\" srcset=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2011\/05\/adf11g_hr_feature_param_8_test-300x203.jpg 300w, https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2011\/05\/adf11g_hr_feature_param_8_test.jpg 458w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a><\/h6><\/span>\n<span id=\"Error\"><h4>Error<\/h4><\/span>\n<p>* Error message<\/p>\n<pre>\r\nattempt to set a parameter name that does not occur in the SQL: Variable\r\n<\/pre>\n<p>* Cause:<br \/>\n&#8211; forgot to set variable name.<br \/>\n* Fix:<br \/>\n&#8211; set variable name to p_email.<\/p>\n<span id=\"Reusable_Task_Flows_Page_Fragments_and_Regions\"><h3>Reusable Task Flows, Page Fragments and Regions<\/h3><\/span>\n<span id=\"Create_a_new_task_flow\"><h4>Create a new task flow<\/h4><\/span>\n<p>* Right click <em>ViewController<\/em>, select <em>New&#8230;<\/em><br \/>\n* In <em>New Gallery<\/em> dialog, select &#8220;<em>Web Tier -> JSF\/Facelets -> ADF Task Flow<\/em>&#8220;. Click <em>OK<\/em><\/p>\n<span id=\"_68\"><h6><a href=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2011\/05\/adf11g_hr_feature_taskFlow_1.jpg\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2011\/05\/adf11g_hr_feature_taskFlow_1-300x213.jpg\" alt=\"\" title=\"adf11g_hr_feature_taskFlow_1\" width=\"300\" height=\"213\" class=\"aligncenter size-medium wp-image-9215\" srcset=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2011\/05\/adf11g_hr_feature_taskFlow_1-300x213.jpg 300w, https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2011\/05\/adf11g_hr_feature_taskFlow_1.jpg 692w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a><\/h6><\/span>\n<p>* In <em>Create Task Flow<\/em> dialog,<br \/>\n&#8211; set File Name: <strong>search-email-flow.xml<\/strong><br \/>\n&#8211; checked: <em>Create as Bounded Task flow <\/em><br \/>\n&#8211; checked: <em>Create with Page Fragments<\/em><\/p>\n<span id=\"_69\"><h6><a href=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2011\/05\/adf11g_hr_feature_taskFlow_2.jpg\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2011\/05\/adf11g_hr_feature_taskFlow_2-300x206.jpg\" alt=\"\" title=\"adf11g_hr_feature_taskFlow_2\" width=\"300\" height=\"206\" class=\"aligncenter size-medium wp-image-9216\" srcset=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2011\/05\/adf11g_hr_feature_taskFlow_2-300x206.jpg 300w, https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2011\/05\/adf11g_hr_feature_taskFlow_2.jpg 629w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a><\/h6><\/span>\n<p>* Click <em>OK<\/em><br \/>\n* Drag a <em>View component<\/em> onto <em>search-email-flow.xml<\/em> editor, name the view component <strong>searchEmail<\/strong>.<\/p>\n<span id=\"_70\"><h6><a href=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2011\/05\/adf11g_hr_feature_taskFlow_3_view.jpg\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2011\/05\/adf11g_hr_feature_taskFlow_3_view-300x97.jpg\" alt=\"\" title=\"adf11g_hr_feature_taskFlow_3_view\" width=\"300\" height=\"97\" class=\"aligncenter size-medium wp-image-9217\" srcset=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2011\/05\/adf11g_hr_feature_taskFlow_3_view-300x97.jpg 300w, https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2011\/05\/adf11g_hr_feature_taskFlow_3_view.jpg 485w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a><\/h6><\/span>\n<p>* Double click <em>searchEmail<\/em> component to create the page.<br \/>\n&#8211; <strong>Make sure to check<\/strong> <em>Document Type<\/em>: <em>JSP XML<\/em><\/p>\n<span id=\"_71\"><h6><a href=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2011\/05\/adf11g_hr_feature_taskFlow_4_fragment.jpg\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2011\/05\/adf11g_hr_feature_taskFlow_4_fragment-300x270.jpg\" alt=\"\" title=\"adf11g_hr_feature_taskFlow_4_fragment\" width=\"300\" height=\"270\" class=\"aligncenter size-medium wp-image-9218\" srcset=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2011\/05\/adf11g_hr_feature_taskFlow_4_fragment-300x270.jpg 300w, https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2011\/05\/adf11g_hr_feature_taskFlow_4_fragment.jpg 505w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a><\/h6><\/span>\n<p>* Click <em>OK<\/em> to accept other defaults<\/p>\n<span id=\"Add_ExecuteWithParams_Button\"><h4>Add ExecuteWithParams Button<\/h4><\/span>\n<p>* Select <em>Data Controls -> AppModuleDataControl<\/em>, click the refresh button. New <em>EmpByEmail1<\/em> data control component is shown.<br \/>\n* Expand <em>EmpByEmail1 -> Operations<\/em> folder<br \/>\n* Drag <em>ExecuteWithParams<\/em> operation onto the page editor<br \/>\n* Select <em>Create -> ADF Parameter Form&#8230;<\/em><\/p>\n<span id=\"_72\"><h6><a href=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2011\/05\/adf11g_hr_feature_taskFlow_5_bind.jpg\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2011\/05\/adf11g_hr_feature_taskFlow_5_bind-300x149.jpg\" alt=\"\" title=\"adf11g_hr_feature_taskFlow_5_bind\" width=\"300\" height=\"149\" class=\"aligncenter size-medium wp-image-9219\" srcset=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2011\/05\/adf11g_hr_feature_taskFlow_5_bind-300x149.jpg 300w, https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2011\/05\/adf11g_hr_feature_taskFlow_5_bind.jpg 517w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a><\/h6><\/span>\n<p>* Change <em>Display Label<\/em> to <em>Email<\/em><\/p>\n<span id=\"_73\"><h6><a href=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2011\/05\/adf11g_hr_feature_taskFlow_6_bind_lable.jpg\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2011\/05\/adf11g_hr_feature_taskFlow_6_bind_lable-300x80.jpg\" alt=\"\" title=\"adf11g_hr_feature_taskFlow_6_bind_lable\" width=\"300\" height=\"80\" class=\"aligncenter size-medium wp-image-9220\" srcset=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2011\/05\/adf11g_hr_feature_taskFlow_6_bind_lable-300x80.jpg 300w, https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2011\/05\/adf11g_hr_feature_taskFlow_6_bind_lable.jpg 583w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a><\/h6><\/span>\n<p>&#8211; Click <em>OK<\/em><br \/>\n* Click <em>ExecuteWithParams<\/em> button on the design editor<br \/>\n* In property pane,<br \/>\n&#8211; set Text: <strong>Find Details<\/strong><\/p>\n<span id=\"Bind_EmpByEmail1_Data_Control\"><h4>Bind <em>EmpByEmail1<\/em> Data Control<\/h4><\/span>\n<p>* Drag <em>Data Controls > AppModuleDataControl > EmpByEmail1<\/em> to the right side of Find Details button.<br \/>\n* Select <em>Create -> Form -> ADF Read Only Form&#8230;<\/em><br \/>\n* Accept defaults in Edit Form Fields dialog by click the <em>OK<\/em> button.<\/p>\n<span id=\"_74\"><h6><a href=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2011\/05\/adf11g_hr_feature_taskFlow_8.jpg\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2011\/05\/adf11g_hr_feature_taskFlow_8-300x252.jpg\" alt=\"\" title=\"adf11g_hr_feature_taskFlow_8\" width=\"300\" height=\"252\" class=\"aligncenter size-medium wp-image-9221\" srcset=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2011\/05\/adf11g_hr_feature_taskFlow_8-300x252.jpg 300w, https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2011\/05\/adf11g_hr_feature_taskFlow_8.jpg 578w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a><\/h6><\/span>\n<span id=\"Add_to_DeptEmpPage.jspx_Page\"><h4>Add to DeptEmpPage.jspx Page<\/h4><\/span>\n<p>* Open <em>DeptEmpPage.jspx<\/em><br \/>\n* Drag a <em>Separator<\/em> component (under layout) beneath the <em>Departments<\/em> form<br \/>\n* Drag &#8220;<em>Web Content -> WEB-INF -> search-email-flow.xml<\/em>&#8221; under the new separator.<br \/>\n&#8211; Select <em>Create -> Region<\/em><\/p>\n<span id=\"_75\"><h6><a href=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2011\/05\/adf11g_hr_feature_taskFlow_9.jpg\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2011\/05\/adf11g_hr_feature_taskFlow_9-300x98.jpg\" alt=\"\" title=\"adf11g_hr_feature_taskFlow_9\" width=\"300\" height=\"98\" class=\"aligncenter size-medium wp-image-9222\" srcset=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2011\/05\/adf11g_hr_feature_taskFlow_9-300x98.jpg 300w, https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2011\/05\/adf11g_hr_feature_taskFlow_9.jpg 457w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a><\/h6><\/span>\n<p>* Save all<\/p>\n<span id=\"Test_2\"><h4>Test<\/h4><\/span>\n<p>* Run <em>DeptEmpPage.jspx<\/em> page. You should see the new page fragment.<br \/>\n* Enter a email, e.g. <strong>SKING<\/strong>, and click <em>Find Details<\/em> button.<\/p>\n<span id=\"_76\"><h6><a href=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2011\/05\/adf11g_hr_feature_taskFlow_11_test.jpg\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2011\/05\/adf11g_hr_feature_taskFlow_11_test.jpg\" alt=\"\" title=\"adf11g_hr_feature_taskFlow_11_test\" width=\"289\" height=\"239\" class=\"aligncenter size-full wp-image-9223\" \/><\/a><\/h6><\/span>\n<span id=\"Using_Skins\"><h2>Using Skins<\/h2><\/span>\n<span id=\"Create_a_New_Skin\"><h3>Create a New Skin<\/h3><\/span>\n<p>* Right click <em>ViewController<\/em> project and select <em>New&#8230;<\/em><br \/>\n* Select <em>Web Tier > ADF Skin<\/em> and click <em>OK<\/em><\/p>\n<span id=\"_77\"><h6><a href=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2011\/05\/adf11g_hr_skin_newProj_1.jpg\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2011\/05\/adf11g_hr_skin_newProj_1-300x213.jpg\" alt=\"\" title=\"adf11g_hr_skin_newProj_1\" width=\"300\" height=\"213\" class=\"aligncenter size-medium wp-image-9234\" srcset=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2011\/05\/adf11g_hr_skin_newProj_1-300x213.jpg 300w, https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2011\/05\/adf11g_hr_skin_newProj_1.jpg 684w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a><\/h6><\/span>\n<p>* Enter following and accept other default values:<br \/>\n&#8211; File Name: <strong>MySkin.css<\/strong><br \/>\n&#8211; Check: <em>Use as the default skin family for this project<\/em><br \/>\n&#8211; Extends: <em>fusionFx-simple-v2.1.desktop<\/em><\/p>\n<span id=\"_78\"><h6><a href=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2011\/05\/adf11g_hr_skin_newProj_2.jpg\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2011\/05\/adf11g_hr_skin_newProj_2-300x206.jpg\" alt=\"\" title=\"adf11g_hr_skin_newProj_2\" width=\"300\" height=\"206\" class=\"aligncenter size-medium wp-image-9235\" srcset=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2011\/05\/adf11g_hr_skin_newProj_2-300x206.jpg 300w, https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2011\/05\/adf11g_hr_skin_newProj_2.jpg 526w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a><\/h6><\/span>\n<p>&#8211; click <em>OK<\/em><\/p>\n<span id=\"_79\"><h6><a href=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2011\/05\/adf11g_hr_skin_MySkin.jpg\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2011\/05\/adf11g_hr_skin_MySkin-300x136.jpg\" alt=\"\" title=\"adf11g_hr_skin_MySkin\" width=\"300\" height=\"136\" class=\"aligncenter size-medium wp-image-9236\" srcset=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2011\/05\/adf11g_hr_skin_MySkin-300x136.jpg 300w, https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2011\/05\/adf11g_hr_skin_MySkin.jpg 919w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a><\/h6><\/span>\n<p>* Skin is registered in<em> WEB-INF\/trinidad-skins.xml<\/em> file:<\/p>\n<pre lang=\"xml\">\r\n<?xml version=\"1.0\" encoding=\"windows-1252\"?>\r\n<skins xmlns=\"http:\/\/myfaces.apache.org\/trinidad\/skin\">\r\n  <skin>\r\n    <id>MySkin.desktop<\/id>\r\n    <family>MySkin<\/family>\r\n    <extends>fusionFx-simple-v2.1.desktop<\/extends>\r\n    <render-kit-id>org.apache.myfaces.trinidad.desktop<\/render-kit-id>\r\n    <style-sheet-name>skins\/MySkin\/MySkin.css<\/style-sheet-name>\r\n    <bundle-name>demo\/view.skinBundle<\/bundle-name>\r\n  <\/skin>\r\n<\/skins>\r\n<\/pre>\n<p>and selected in <em>WEB-INF\/trinidad-config.xml<\/em> file:<\/p>\n<pre lang=\"xml\">\r\n<?xml version=\"1.0\" encoding=\"windows-1252\"?>\r\n<trinidad-config xmlns=\"http:\/\/myfaces.apache.org\/trinidad\/config\">\r\n  <skin-family>MySkin<\/skin-family>\r\n<\/trinidad-config>\r\n<\/pre>\n<p>* Right click <em>DeptEmpPage.jspx<\/em> and select <em>Run<\/em> to verify the new skin is loaded.<\/p>\n<span id=\"Change_Page_Background_and_Font_Family\"><h3>Change Page Background and Font Family<\/h3><\/span>\n<p>* Open <em>MySkin.css<\/em> file<br \/>\n* Go to <em>Faces Component Selectors > Document af|document<\/em><\/p>\n<span id=\"_80\"><h6><a href=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2011\/05\/adf11g_hr_skin_MySkin-changeUI_1.jpg\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2011\/05\/adf11g_hr_skin_MySkin-changeUI_1-177x300.jpg\" alt=\"\" title=\"adf11g_hr_skin_MySkin-changeUI_1\" width=\"177\" height=\"300\" class=\"aligncenter size-medium wp-image-9237\" srcset=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2011\/05\/adf11g_hr_skin_MySkin-changeUI_1-177x300.jpg 177w, https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2011\/05\/adf11g_hr_skin_MySkin-changeUI_1.jpg 211w\" sizes=\"auto, (max-width: 177px) 100vw, 177px\" \/><\/a><\/h6><\/span>\n<p>* In property pane, select <em>Common > Background Color > Edit<\/em> and enter:<\/p>\n<span id=\"_81\"><h6><a href=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2011\/05\/adf11g_hr_skin_MySkin-changeUI_2_editBackgroundColor.jpg\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2011\/05\/adf11g_hr_skin_MySkin-changeUI_2_editBackgroundColor-300x176.jpg\" alt=\"\" title=\"adf11g_hr_skin_MySkin-changeUI_2_editBackgroundColor\" width=\"300\" height=\"176\" class=\"aligncenter size-medium wp-image-9238\" srcset=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2011\/05\/adf11g_hr_skin_MySkin-changeUI_2_editBackgroundColor-300x176.jpg 300w, https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2011\/05\/adf11g_hr_skin_MySkin-changeUI_2_editBackgroundColor.jpg 565w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a><\/h6><\/span>\n<p>&#8211; RGB Hex: <strong>#fcfacb<\/strong><\/p>\n<span id=\"_82\"><h6><a href=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2011\/05\/adf11g_hr_skin_MySkin-changeUI_3_editBackgroundColor.jpg\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2011\/05\/adf11g_hr_skin_MySkin-changeUI_3_editBackgroundColor-286x300.jpg\" alt=\"\" title=\"adf11g_hr_skin_MySkin-changeUI_3_editBackgroundColor\" width=\"286\" height=\"300\" class=\"aligncenter size-medium wp-image-9239\" srcset=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2011\/05\/adf11g_hr_skin_MySkin-changeUI_3_editBackgroundColor-286x300.jpg 286w, https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2011\/05\/adf11g_hr_skin_MySkin-changeUI_3_editBackgroundColor.jpg 497w\" sizes=\"auto, (max-width: 286px) 100vw, 286px\" \/><\/a><\/h6><\/span>\n<p>* Check new background color by right clicking <em>DeptEmpPage.jspx<\/em> and select <em>Run<\/em><\/p>\n<span id=\"Change_Font_of_Application_Text\"><h3>Change Font of Application Text<\/h3><\/span>\n<p>* From MySkin.css, select <em>Global Selector Aliases > Font > .AFDefaultFontFamily:alias<\/em><\/p>\n<span id=\"_83\"><h6><a href=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2011\/05\/adf11g_hr_skin_MySkin-changeUI_4_fontFamily.jpg\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2011\/05\/adf11g_hr_skin_MySkin-changeUI_4_fontFamily-300x184.jpg\" alt=\"\" title=\"adf11g_hr_skin_MySkin-changeUI_4_fontFamily\" width=\"300\" height=\"184\" class=\"aligncenter size-medium wp-image-9240\" srcset=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2011\/05\/adf11g_hr_skin_MySkin-changeUI_4_fontFamily-300x184.jpg 300w, https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2011\/05\/adf11g_hr_skin_MySkin-changeUI_4_fontFamily.jpg 594w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a><\/h6><\/span>\n<p>* In property pane, Select:<br \/>\n&#8211; Font Family: <em>Times New Romain<\/em><br \/>\n* Back in <em>MySkin.css<\/em> navigator tree, select <em>.AFDefaultFont:alias<\/em><\/p>\n<span id=\"_84\"><h6><a href=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2011\/05\/adf11g_hr_skin_MySkin-changeUI_5_fontSize.jpg\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2011\/05\/adf11g_hr_skin_MySkin-changeUI_5_fontSize-228x300.jpg\" alt=\"\" title=\"adf11g_hr_skin_MySkin-changeUI_5_fontSize\" width=\"228\" height=\"300\" class=\"aligncenter size-medium wp-image-9241\" srcset=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2011\/05\/adf11g_hr_skin_MySkin-changeUI_5_fontSize-228x300.jpg 228w, https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2011\/05\/adf11g_hr_skin_MySkin-changeUI_5_fontSize.jpg 238w\" sizes=\"auto, (max-width: 228px) 100vw, 228px\" \/><\/a><\/h6><\/span>\n<p>* In property pane, select:<br \/>\n&#8211; <em>Font Size:<\/em> <strong>medium<\/strong><br \/>\n&#8211;<em> Line Box > Line Height:<\/em> <strong>18 px<\/strong><br \/>\n* Save All<br \/>\n* Reload page to see that font size has changed<\/p>\n<span id=\"Format_Header\"><h3>Format Header<\/h3><\/span>\n<p>* Set <em>Faces Components Selectors > Panel Header > Pseudo-Elements > title0<\/em><br \/>\n&#8211; <em>Background Color:<\/em> <strong>#fff27e<\/strong><br \/>\n* Set <em>Faces Components Selectors > Panel Header > Pseudo-Elements > title-text0<\/em><br \/>\n&#8211; <em>Font\/Text > Color:<\/em> <em>Red<\/em><br \/>\n* Set <em>Faces Components Selectors > Panel Header > Pseudo-Elements > content0<\/em><br \/>\n&#8211;<em> Common > Background Color:<\/em> <em>White<\/em><br \/>\n&#8211; <em>Common > Border:<\/em> <strong>1px solid<\/strong><br \/>\n&#8211; <em>Common > Border Color:<\/em> <strong>#fff27e<\/strong><\/p>\n<span id=\"_85\"><h6><a href=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2011\/05\/adf11g_hr_skin_MySkin-changeUI_6_header.jpg\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2011\/05\/adf11g_hr_skin_MySkin-changeUI_6_header-300x99.jpg\" alt=\"\" title=\"adf11g_hr_skin_MySkin-changeUI_6_header\" width=\"300\" height=\"99\" class=\"aligncenter size-medium wp-image-9242\" srcset=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2011\/05\/adf11g_hr_skin_MySkin-changeUI_6_header-300x99.jpg 300w, https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2011\/05\/adf11g_hr_skin_MySkin-changeUI_6_header-1024x339.jpg 1024w, https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2011\/05\/adf11g_hr_skin_MySkin-changeUI_6_header.jpg 1027w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a><\/h6><\/span>\n<p>* Save all<br \/>\n* Reload page to see header format change<\/p>\n<span id=\"Format_Table_Headers\"><h3>Format Table Headers<\/h3><\/span>\n<p>* Set <em>Faces Components Selectors > Column > Pseudo-Elements > column-header-table<\/em><br \/>\n&#8211; <em>Background Color:<\/em> <strong>#fff27e<\/strong><br \/>\n&#8211; <em>Background Image:<\/em> <strong>none<\/strong><br \/>\n&#8211; <em>Font\/Text > Color:<\/em> <em>Red<\/em><\/p>\n<span id=\"_86\"><h6><a href=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2011\/05\/adf11g_hr_skin_MySkin-changeUI_7_ColumnHeader.jpg\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2011\/05\/adf11g_hr_skin_MySkin-changeUI_7_ColumnHeader-300x155.jpg\" alt=\"\" title=\"adf11g_hr_skin_MySkin-changeUI_7_ColumnHeader\" width=\"300\" height=\"155\" class=\"aligncenter size-medium wp-image-9243\" srcset=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2011\/05\/adf11g_hr_skin_MySkin-changeUI_7_ColumnHeader-300x155.jpg 300w, https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2011\/05\/adf11g_hr_skin_MySkin-changeUI_7_ColumnHeader.jpg 1019w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a><\/h6><\/span>\n<p>* Save all<br \/>\n* Reload page to see column header format<\/p>\n<span id=\"_87\"><h6><a href=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2011\/05\/adf11g_hr_skin_MySkin-changeUI_8_ColumnHeader_test.jpg\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2011\/05\/adf11g_hr_skin_MySkin-changeUI_8_ColumnHeader_test-300x44.jpg\" alt=\"\" title=\"adf11g_hr_skin_MySkin-changeUI_8_ColumnHeader_test\" width=\"300\" height=\"44\" class=\"aligncenter size-medium wp-image-9244\" srcset=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2011\/05\/adf11g_hr_skin_MySkin-changeUI_8_ColumnHeader_test-300x44.jpg 300w, https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2011\/05\/adf11g_hr_skin_MySkin-changeUI_8_ColumnHeader_test.jpg 947w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a><\/h6><\/span>\n<span id=\"References\"><h2>References<\/h2><\/span>\n<p>*<a href=\"http:\/\/st-curriculum.oracle.com\/obe\/jdev\/obe11jdev\/ps1\/ria_application\/developriaapplication_long.htm\">Developing RIA Web Applications with Oracle ADF<\/a><br \/>\n* <a href=\"http:\/\/docs.oracle.com\/cd\/E18941_01\/tutorials\/jdtut_11r2_83\/jdtut_11r2_83.html\">Changing an Application&#8217;s Look and Feel by Using Skins<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Environment * JDeveloper 11gR2 * Oracle Database 10.2 Prepare DB * Unlock Oracle DB HR user: alter user HR identified by HR account unlock; Create ADF Web App Create New App * Select File > New&#8230; > General > Applications &hellip; <a href=\"https:\/\/jianmingli.com\/wp\/?p=2369\">Continue reading <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_exactmetrics_skip_tracking":false,"_exactmetrics_sitenote_active":false,"_exactmetrics_sitenote_note":"","_exactmetrics_sitenote_category":0,"jetpack_post_was_ever_published":false,"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_publicize_message":"","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":false,"jetpack_social_options":{"image_generator_settings":{"template":"highway","default_image_id":0,"font":"","enabled":false},"version":2}},"categories":[96],"tags":[],"class_list":["post-2369","post","type-post","status-publish","format-standard","hentry","category-adf"],"jetpack_publicize_connections":[],"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"jetpack_shortlink":"https:\/\/wp.me\/p8cRUO-Cd","_links":{"self":[{"href":"https:\/\/jianmingli.com\/wp\/index.php?rest_route=\/wp\/v2\/posts\/2369","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/jianmingli.com\/wp\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/jianmingli.com\/wp\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/jianmingli.com\/wp\/index.php?rest_route=\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/jianmingli.com\/wp\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=2369"}],"version-history":[{"count":29,"href":"https:\/\/jianmingli.com\/wp\/index.php?rest_route=\/wp\/v2\/posts\/2369\/revisions"}],"predecessor-version":[{"id":2926,"href":"https:\/\/jianmingli.com\/wp\/index.php?rest_route=\/wp\/v2\/posts\/2369\/revisions\/2926"}],"wp:attachment":[{"href":"https:\/\/jianmingli.com\/wp\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=2369"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/jianmingli.com\/wp\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=2369"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/jianmingli.com\/wp\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=2369"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}