Advanced Portlets Maximizing portlet function to personalize output. www.regoconsulting.com Phone: 1-888-813-0444 About This Session ● This is going to be a hands on learning experience. ○ Log into your own system. ● Examples for Each Portlet. ○ Talk about the portlet. ○ Show you how. ○ Your time to code it. ● Download Code. ○ NSQL Code is available online for you to copy and paste. 2 www.regoconsulting.com Phone: 1-888-813-0444 Types of Portlets ● Common Portlets ○ Grid ○ Graph ● Multi-Dimensional (Time Scaled) ○ Typically used to show values over time. ○ Example : Actuals by Month. ● Hierarchy ○ A grid display that has a + sign to drill into that row. ○ Example : Master / Sub relationship. ● Drill-Down ○ A set of multiple portlets that are linked. ○ Clicking on a record on the first portlet opens a second portlet. ○ Example : A chart portlet that drills into the details of the chart slice. 3 www.regoconsulting.com Phone: 1-888-813-0444 Multi-Dimensional Portlets 4 www.regoconsulting.com Phone: 1-888-813-0444 Multi-Dimensional Portlets ● What is a Dimension? ○ A dimension is a grouping of similar data elements from one or more tables. For example, “Project” may be one dimension and “OBS” or “Tasks” could be other dimensions. ○ Dimensions are defined in the SELECT statement using specific syntax. First, you define a key value for the dimension and then you can define the other data elements in the dimension. ● Design ○ Uses special NSQL constructs. ○ Single portlet. ○ Single NSQL query. Portions obtained from CA documentation www.regoconsulting.com 5 Phone: 1-888-813-0444 Multi-Dimensional : NSQL Query SELECT @SELECT:DIM:USER_DEF:IMPLIED:RESOURCE:(i.code || r.id):uniqueid@, Dimension 1 (Resource) @SELECT:DIM_PROP:USER_DEF:IMPLIED:RESOURCE:i.code:investment_code@, @SELECT:DIM_PROP:USER_DEF:IMPLIED:RESOURCE:i.id:investment_id@, @SELECT:DIM_PROP:USER_DEF:IMPLIED:RESOURCE:i.name:investment_name@, @SELECT:DIM_PROP:USER_DEF:IMPLIED:RESOURCE:r.id:resource_id@, @SELECT:DIM_PROP:USER_DEF:IMPLIED:RESOURCE:r.full_name:resource_name@, @SELECT:DIM_PROP:USER_DEF:IMPLIED:RESOURCE:i.manager_id:manager_id@, @SELECT:DIM:USER_DEF:IMPLIED:PER:s.slice_date:tp_start@, @SELECT:DIM_PROP:USER_DEF:IMPLIED:PER:TO_CHAR(s.slice_date,'yyyy-mm-dd'):tp_start_display@, @SELECT:METRIC:USER_DEF:IMPLIED:SUM(s.slice):hours@ FROM prassignment assign Dimension 2 (Date) JOIN prj_blb_slices s ON assign.prid = s.prj_object_id JOIN prtask t ON assign.prtaskid = t.prid JOIN srm_resources r ON assign.prresourceid = r.id JOIN inv_investments i ON t.prprojectid = i.id WHERE s.slice_request_id = (Select id from prj_blb_slicerequests where request_name = 'MONTHLYRESOURCEACTCURVE' ) AND s.slice > 0 AND s.slice_date BETWEEN @WHERE:PARAM:USER_DEF:DATE:startdate@ AND @WHERE:PARAM:USER_DEF:DATE:enddate@ AND @FILTER@ GROUP BY (i.code || r.id), r.id, r.full_name, i.id, i.code, i.manager_id, i.name,s.slice_date HAVING @HAVING_FILTER@ 6 www.regoconsulting.com Phone: 1-888-813-0444 Multi-Dimensional : NSQL Query SELECT @SELECT:DIM:USER_DEF:IMPLIED:RESOURCE:(i.code || r.id):uniqueid@, @SELECT:DIM_PROP:USER_DEF:IMPLIED:RESOURCE:i.code:investment_code@, @SELECT:DIM_PROP:USER_DEF:IMPLIED:RESOURCE:i.id:investment_id@, @SELECT:DIM_PROP:USER_DEF:IMPLIED:RESOURCE:i.name:investment_name@, @SELECT:DIM_PROP:USER_DEF:IMPLIED:RESOURCE:r.id:resource_id@, @SELECT:DIM_PROP:USER_DEF:IMPLIED:RESOURCE:r.full_name:resource_name@, @SELECT:DIM_PROP:USER_DEF:IMPLIED:RESOURCE:i.manager_id:manager_id@, @SELECT:DIM:USER_DEF:IMPLIED:PER:s.slice_date:tp_start@, @SELECT:DIM_PROP:USER_DEF:IMPLIED:PER:TO_CHAR(s.slice_date,'yyyy-mmdd'):tp_start_display@, @SELECT:METRIC:USER_DEF:IMPLIED:SUM(s.slice):hours@ FROM prassignment assign HAVING @HAVING_FILTER@ 7 www.regoconsulting.com Phone: 1-888-813-0444 Multi-Dimensional : NSQL Query SELECT @SELECT:DIM:USER_DEF:IMPLIED:RESOURCE:(i.code || r.id):uniqueid@, @SELECT:DIM_PROP:USER_DEF:IMPLIED:RESOURCE:i.code:investment_code@, @SELECT:DIM_PROP:USER_DEF:IMPLIED:RESOURCE:i.id:investment_id@, @SELECT:DIM_PROP:USER_DEF:IMPLIED:RESOURCE:i.name:investment_name@, @SELECT:DIM_PROP:USER_DEF:IMPLIED:RESOURCE:r.id:resource_id@, @SELECT:DIM_PROP:USER_DEF:IMPLIED:RESOURCE:r.full_name:resource_name@, @SELECT:DIM_PROP:USER_DEF:IMPLIED:RESOURCE:i.manager_id:manager_id@, @SELECT:DIM:USER_DEF:IMPLIED:PER:s.slice_date:tp_start@, @SELECT:DIM_PROP:USER_DEF:IMPLIED:PER:TO_CHAR(s.slice_date,'yyyy-mmdd'):tp_start_display@, @SELECT:METRIC:USER_DEF:IMPLIED:SUM(s.slice):hours@ FROM prassignment assign HAVING @HAVING_FILTER@ 8 www.regoconsulting.com Phone: 1-888-813-0444 Multi-Dimensional : NSQL (Oracle) SELECT @SELECT:DIM:USER_DEF:IMPLIED:RESOURCE:(i.code || r.id):uniqueid@, @SELECT:DIM_PROP:USER_DEF:IMPLIED:RESOURCE:i.code:investment_code@, @SELECT:DIM_PROP:USER_DEF:IMPLIED:RESOURCE:i.id:investment_id@, @SELECT:DIM_PROP:USER_DEF:IMPLIED:RESOURCE:i.name:investment_name@, @SELECT:DIM_PROP:USER_DEF:IMPLIED:RESOURCE:r.id:resource_id@, @SELECT:DIM_PROP:USER_DEF:IMPLIED:RESOURCE:r.full_name:resource_name@, @SELECT:DIM_PROP:USER_DEF:IMPLIED:RESOURCE:i.manager_id:manager_id@, @SELECT:DIM:USER_DEF:IMPLIED:PER:s.slice_date:tp_start@, @SELECT:DIM_PROP:USER_DEF:IMPLIED:PER:TO_CHAR(s.slice_date,'yyyy-mm-dd'):tp_start_display@, @SELECT:METRIC:USER_DEF:IMPLIED:SUM(s.slice):hours@ FROM prassignment assign JOIN prj_blb_slices s ON assign.prid = s.prj_object_id JOIN prtask t ON assign.prtaskid = t.prid JOIN srm_resources r ON assign.prresourceid = r.id JOIN inv_investments i ON t.prprojectid = i.id WHERE s.slice_request_id = (Select id from prj_blb_slicerequests where request_name = 'MONTHLYRESOURCEACTCURVE' ) AND s.slice > 0 AND s.slice_date BETWEEN @WHERE:PARAM:USER_DEF:DATE:startdate@ AND @WHERE:PARAM:USER_DEF:DATE:enddate@ AND @FILTER@ GROUP BY (i.code || r.id), r.id, r.full_name, i.id, i.code, i.manager_id, i.name,s.slice_date HAVING @HAVING_FILTER@ 9 www.regoconsulting.com Phone: 1-888-813-0444 Multi-Dimensional : NSQL (SQL) SELECT @SELECT:DIM:USER_DEF:IMPLIED:RESOURCE:(i.code + r.id):uniqueid@, @SELECT:DIM_PROP:USER_DEF:IMPLIED:RESOURCE:i.code:investment_code@, @SELECT:DIM_PROP:USER_DEF:IMPLIED:RESOURCE:i.id:investment_id@, @SELECT:DIM_PROP:USER_DEF:IMPLIED:RESOURCE:i.name:investment_name@, @SELECT:DIM_PROP:USER_DEF:IMPLIED:RESOURCE:r.id:resource_id@, @SELECT:DIM_PROP:USER_DEF:IMPLIED:RESOURCE:r.full_name:resource_name@, @SELECT:DIM_PROP:USER_DEF:IMPLIED:RESOURCE:i.manager_id:manager_id@, @SELECT:DIM:USER_DEF:IMPLIED:PER:s.slice_date:tp_start@, @SELECT:DIM_PROP:USER_DEF:IMPLIED:PER:CONVERT(VARCHAR(10), s.slice_date, 120):tp_start_display@, @SELECT:METRIC:USER_DEF:IMPLIED:SUM(s.slice):hours@ FROM prassignment assign JOIN prj_blb_slices s ON assign.prid = s.prj_object_id JOIN prtask t ON assign.prtaskid = t.prid JOIN srm_resources r ON assign.prresourceid = r.id JOIN inv_investments i ON t.prprojectid = i.id WHERE s.slice_request_id = (Select id from prj_blb_slicerequests where request_name = 'MONTHLYRESOURCEACTCURVE' ) AND s.slice > 0 AND s.slice_date BETWEEN @WHERE:PARAM:USER_DEF:DATE:startdate@ AND @WHERE:PARAM:USER_DEF:DATE:enddate@ AND @FILTER@ GROUP BY (i.code + r.id), r.id, r.full_name, i.id, i.code, i.manager_id, i.name,s.slice_date HAVING @HAVING_FILTER@ 10 www.regoconsulting.com Phone: 1-888-813-0444 Multi-Dimensional : Create the Query ● Create a new query. ○ Admin / Q ueries / New 11 www.regoconsulting.com Phone: 1-888-813-0444 Multi-Dimensional : Create the Query ● Paste the NSQL and “Save and Return” 12 www.regoconsulting.com Phone: 1-888-813-0444 Multi-Dimensional : Create the Portlet ● Create a new GRID portlet. ● Finish and Open to continue configuration. 13 www.regoconsulting.com Phone: 1-888-813-0444 Multi-Dimensional : Create the Portlet ● The Y axis needs to be set. ● Set the “stationary” columns. 14 www.regoconsulting.com Phone: 1-888-813-0444 Multi-Dimensional : Create the Portlet ● Add the columns. ● Data Columns at the end. ● Remember to sort by the Time Period and then by Investment/Resource 15 www.regoconsulting.com Phone: 1-888-813-0444 Multi-Dimensional : Create the Portlet ● Be sure to add the date parameters to your filter. ● Assign a default value as needed. ● Save … And then go to the General tab to publish. 16 www.regoconsulting.com Phone: 1-888-813-0444 Multi-Dimensional : Create the Portlet ● Add the portlet to a page. 17 www.regoconsulting.com Phone: 1-888-813-0444 Questions? 18 www.regoconsulting.com Phone: 1-888-813-0444 Exercise #1 : Multi-Dimensional Portlet ● Log into your own environment. ● Build your NSQL Query ● Build your Grid Portlet ○ Add the Dates to the filter. ○ Sort by the Time Period ● Add it to a page. 19 www.regoconsulting.com Phone: 1-888-813-0444 Hierarchy Portlets 20 www.regoconsulting.com Phone: 1-888-813-0444 Hierarchy Portlets ● Hierarchy ○ A hierarchical query is used to display values in a hierarchical grid portlet. ● Limitations ○ ○ ○ ○ The parent and child must have the same number of fields. The parent and child fields must be of the same data type. Can be single or multi-dimensional. NSQL needs to be optimized. ● Implementation ○ Uses special NSQL constructs. ○ Single portlet. ○ Single NSQL query. Portions obtained from CA documentation www.regoconsulting.com 21 Phone: 1-888-813-0444 Hierarchy Portlets ● High level implementation steps ○ ○ ○ ○ Create NSQL query. Create Portlet. Configure Portlet. Accept praise for the cool looking portlet you just made! • Cookies are acceptable in lieu of praise. 22 www.regoconsulting.com Phone: 1-888-813-0444 Hierarchy : NSQL Query SELECT @SELECT:DIM:USER_DEF:IMPLIED:PROJECT:SRC.GRID_ID:GridID@, @SELECT:DIM_PROP:USER_DEF:IMPLIED:PROJECT:SRC.GRID_NAME:GridName@, @SELECT:DIM_PROP:USER_DEF:IMPLIED:PROJECT:SRC.HG_HAS_CHILDREN:HG_HAS_CHILDREN@, @SELECT:DIM_PROP:USER_DEF:IMPLIED:PROJECT:SRC.SCHEDULE_START:GStart@, @SELECT:DIM_PROP:USER_DEF:IMPLIED:PROJECT:SRC.SCHEDULE_FINISH:GFinish@, FROM ( Select INV.ID GRID_ID ,INV.name GRID_NAME ,case when (select count(*) from prteam pt where pt.prprojectid = INV.id) > 0 then INV.id else null end HG_HAS_CHILDREN ,INV.SCHEDULE_START ,INV.SCHEDULE_FINISH from INV_INVESTMENTS INV where INV.is_active = 1 and INV.ODF_OBJECT_CODE = 'project' AND @WHERE:PARAM:USER_DEF:INTEGER:hg_row_id@ IS NULL UNION SELECT PRT.PRID GRID_ID ,SRM.FULL_NAME GRID_NAME ,null HG_HAS_CHILDREN ,nvl(PRT.PRAVAILSTART,INV.schedule_start) SCHEDULE_START ,nvl(PRT.PRAVAILFINISH,INV.SCHEDULE_FINISH) SCHEDULE_FINISH from prteam PRT,srm_resources SRM,INV_INVESTMENTS INV where PRT.prresourceid = SRM.id and PRT.PRPROJECTID = INV.ID AND PRT.prprojectid = @WHERE:PARAM:USER_DEF:INTEGER:hg_row_id@ ) SRC where @FILTER@ HAVAING @HAVING_FILTER@ 23 www.regoconsulting.com Phone: 1-888-813-0444 Hierarchy : NSQL Query SELECT @SELECT:DIM:USER_DEF:IMPLIED:PROJECT:SRC.GRID_ID:GridID@, @SELECT:DIM_PROP:USER_DEF:IMPLIED:PROJECT:SRC.GRID_NAME:GridName@, @SELECT:DIM_PROP:USER_DEF:IMPLIED:PROJECT:SRC.HG_HAS_CHILDREN:HG_HAS_CHILDREN@, @SELECT:DIM_PROP:USER_DEF:IMPLIED:PROJECT:SRC.SCHEDULE_START:GStart@, @SELECT:DIM_PROP:USER_DEF:IMPLIED:PROJECT:SRC.SCHEDULE_FINISH:GFinish@, FROM ( Select INV.ID GRID_ID ,INV.name GRID_NAME ,case when (select count(*) from prteam pt where pt.prprojectid = INV.id) > 0 then INV.id else null end HG_HAS_CHILDREN ,INV.SCHEDULE_START ,INV.SCHEDULE_FINISH from INV_INVESTMENTS INV where INV.is_active = 1 and INV.ODF_OBJECT_CODE = 'project' AND @WHERE:PARAM:USER_DEF:INTEGER:hg_row_id@ IS NULL Code for “Parent” UNION SELECT PRT.PRID GRID_ID ,SRM.FULL_NAME GRID_NAME ,null HG_HAS_CHILDREN ,nvl(PRT.PRAVAILSTART,INV.schedule_start) SCHEDULE_START ,nvl(PRT.PRAVAILFINISH,INV.SCHEDULE_FINISH) SCHEDULE_FINISH from prteam PRT,srm_resources SRM,INV_INVESTMENTS INV where PRT.prresourceid = SRM.id and PRT.PRPROJECTID = INV.ID AND PRT.prprojectid = @WHERE:PARAM:USER_DEF:INTEGER:hg_row_id@ ) SRC where @FILTER@ HAVAING @HAVING_FILTER@ 24 www.regoconsulting.com Phone: 1-888-813-0444 Hierarchy : NSQL Query SELECT @SELECT:DIM:USER_DEF:IMPLIED:PROJECT:SRC.GRID_ID:GridID@, @SELECT:DIM_PROP:USER_DEF:IMPLIED:PROJECT:SRC.GRID_NAME:GridName@, @SELECT:DIM_PROP:USER_DEF:IMPLIED:PROJECT:SRC.HG_HAS_CHILDREN:HG_HAS_CHILDREN@, @SELECT:DIM_PROP:USER_DEF:IMPLIED:PROJECT:SRC.SCHEDULE_START:GStart@, @SELECT:DIM_PROP:USER_DEF:IMPLIED:PROJECT:SRC.SCHEDULE_FINISH:GFinish@, FROM ( Select INV.ID GRID_ID ,INV.name GRID_NAME ,case when (select count(*) from prteam pt where pt.prprojectid = INV.id) > 0 then INV.id else null end HG_HAS_CHILDREN ,INV.SCHEDULE_START ,INV.SCHEDULE_FINISH from INV_INVESTMENTS INV where INV.is_active = 1 and INV.ODF_OBJECT_CODE = 'project' AND @WHERE:PARAM:USER_DEF:INTEGER:hg_row_id@ IS NULL Code for “Child” UNION SELECT PRT.PRID GRID_ID ,SRM.FULL_NAME GRID_NAME ,null HG_HAS_CHILDREN ,nvl(PRT.PRAVAILSTART,INV.schedule_start) SCHEDULE_START ,nvl(PRT.PRAVAILFINISH,INV.SCHEDULE_FINISH) SCHEDULE_FINISH from prteam PRT,srm_resources SRM,INV_INVESTMENTS INV where PRT.prresourceid = SRM.id and PRT.PRPROJECTID = INV.ID AND PRT.prprojectid = @WHERE:PARAM:USER_DEF:INTEGER:hg_row_id@ ) SRC where @FILTER@ HAVAING @HAVING_FILTER@ 25 www.regoconsulting.com Phone: 1-888-813-0444 Hierarchy : Parent Query Select INV.ID GRID_ID ,INV.name GRID_NAME ,case when (select count(*) from prteam pt where pt.prprojectid = INV.id) > 0 then INV.id else null end HG_HAS_CHILDREN ,INV.SCHEDULE_START ,INV.SCHEDULE_FINISH from INV_INVESTMENTS INV where INV.is_active = 1 and INV.ODF_OBJECT_CODE = 'project' AND @WHERE:PARAM:USER_DEF:INTEGER:hg_row_id@ IS NULL 26 www.regoconsulting.com Phone: 1-888-813-0444 Hierarchy : Child Query UNION SELECT PRT.PRID GRID_ID ,SRM.FULL_NAME GRID_NAME ,null GRID_HAS_CHILDRES ,nvl(PRT.PRAVAILSTART,INV.schedule_start) SCHEDULE_START ,nvl(PRT.PRAVAILFINISH,INV.SCHEDULE_FINISH) SCHEDULE_FINISH From prteam PRT,srm_resources SRM,INV_INVESTMENTS INV where PRT.prresourceid = SRM.id and PRT.PRPROJECTID = INV.ID AND PRT.prprojectid = @WHERE:PARAM:USER_DEF:INTEGER:hg_row_id@ 27 www.regoconsulting.com Phone: 1-888-813-0444 Hierarchy : NSQL (Oracle) SELECT @SELECT:DIM:USER_DEF:IMPLIED:PROJECT:SRC.GRID_ID:GridID@, @SELECT:DIM_PROP:USER_DEF:IMPLIED:PROJECT:SRC.GRID_NAME:GridName@, @SELECT:DIM_PROP:USER_DEF:IMPLIED:PROJECT:SRC.HG_HAS_CHILDREN:HG_HAS_CHILDREN@, @SELECT:DIM_PROP:USER_DEF:IMPLIED:PROJECT:SRC.SCHEDULE_START:GStart@, @SELECT:DIM_PROP:USER_DEF:IMPLIED:PROJECT:SRC.SCHEDULE_FINISH:GFinish@ FROM ( Select INV.ID GRID_ID ,INV.name GRID_NAME ,case when (select count(*) from prteam pt where pt.prprojectid = INV.id) > 0 then INV.id else null end HG_HAS_CHILDREN ,INV.SCHEDULE_START ,INV.SCHEDULE_FINISH from INV_INVESTMENTS INV where INV.is_active = 1 and INV.ODF_OBJECT_CODE = 'project' AND @WHERE:PARAM:USER_DEF:INTEGER:hg_row_id@ IS NULL UNION SELECT PRT.PRID GRID_ID ,SRM.FULL_NAME GRID_NAME ,1 HG_HAS_CHILDREN ,nvl(PRT.PRAVAILSTART,INV.schedule_start) SCHEDULE_START ,nvl(PRT.PRAVAILFINISH,INV.SCHEDULE_FINISH) SCHEDULE_FINISH from prteam PRT,srm_resources SRM,INV_INVESTMENTS INV where PRT.prresourceid = SRM.id and PRT.PRPROJECTID = INV.ID AND PRT.prprojectid = @WHERE:PARAM:USER_DEF:INTEGER:hg_row_id@ ) SRC where @FILTER@ HAVING @HAVING_FILTER@ 28 www.regoconsulting.com Phone: 1-888-813-0444 Hierarchy : NSQL (SQL) SELECT @SELECT:DIM:USER_DEF:IMPLIED:PROJECT:SRC.GRID_ID:GridID@, @SELECT:DIM_PROP:USER_DEF:IMPLIED:PROJECT:SRC.GRID_NAME:GridName@, @SELECT:DIM_PROP:USER_DEF:IMPLIED:PROJECT:SRC.HG_HAS_CHILDREN:HG_HAS_CHILDREN@, @SELECT:DIM_PROP:USER_DEF:IMPLIED:PROJECT:SRC.SCHEDULE_START:GStart@, @SELECT:DIM_PROP:USER_DEF:IMPLIED:PROJECT:SRC.SCHEDULE_FINISH:GFinish@ FROM ( Select INV.ID GRID_ID ,INV.name GRID_NAME ,case when (select count(*) from prteam pt where pt.prprojectid = INV.id) > 0 then INV.id else null end HG_HAS_CHILDREN ,INV.SCHEDULE_START ,INV.SCHEDULE_FINISH from INV_INVESTMENTS INV where INV.is_active = 1 and INV.ODF_OBJECT_CODE = 'project' AND @WHERE:PARAM:USER_DEF:INTEGER:hg_row_id@ IS NULL UNION SELECT PRT.PRID GRID_ID ,SRM.FULL_NAME GRID_NAME ,1 HG_HAS_CHILDREN ,is_null(PRT.PRAVAILSTART,INV.schedule_start) SCHEDULE_START ,is_null(PRT.PRAVAILFINISH,INV.SCHEDULE_FINISH) SCHEDULE_FINISH from prteam PRT,srm_resources SRM,INV_INVESTMENTS INV where PRT.prresourceid = SRM.id and PRT.PRPROJECTID = INV.ID AND PRT.prprojectid = @WHERE:PARAM:USER_DEF:INTEGER:hg_row_id@ ) SRC where @FILTER@ HAVING @HAVING_FILTER@ 29 www.regoconsulting.com Phone: 1-888-813-0444 Hierarchy : Create the Query ● Create a new query. 30 www.regoconsulting.com Phone: 1-888-813-0444 Hierarchy : Create the Query ● Paste the NSQL and “Save and Return” 31 www.regoconsulting.com Phone: 1-888-813-0444 Hierarchy : Create the Portlet ● Create a new GRID portlet. ● Finish and Open to continue configuration. 32 www.regoconsulting.com Phone: 1-888-813-0444 Hierarchy : Create the Portlet ● Create a new GRID portlet. ● Finish and Open to continue configuration. 33 www.regoconsulting.com Phone: 1-888-813-0444 Hierarchy : Create the Portlet ● Add your fields. ● Hg_has_children not visible. ● Sort by the name. ● Save and publish. 34 www.regoconsulting.com Phone: 1-888-813-0444 Hierarchy : Create the Portlet ● Add the portlet to a page. 35 www.regoconsulting.com Phone: 1-888-813-0444 Exercise #2 : Hierarchy Portlet ● Log into your own environment. ○ If you do not have access, please see a Rego Univeristy representative at the back of the room. ● Build your NSQL ● Build your Grid Portlet ● Add it to a page. 36 www.regoconsulting.com Phone: 1-888-813-0444 Questions? 37 www.regoconsulting.com Phone: 1-888-813-0444 Drill-Down Portlets ● Multiple portlets that are linked together by clicking on a link inside one portlet. ○ Pie chart Details for the slice. ○ Grid Summary Details for the grid. ● Requires multiple queries, portlets, and at least one portlet page. 38 www.regoconsulting.com Phone: 1-888-813-0444 Drill-Down Portlets ● High level implementation steps ○ ○ ○ ○ ○ ○ ○ ○ Create the portlet page with link. Create NSQL query for the source portlet Create the source portlet Create NSQL query for the destination portlet Create the destination portlet. Plase both on the portlet page. Add page to the menu. Accept praise for the cool looking portlet you just made! • Cake is acceptable in lieu of praise. (Cake due to the complexity) 39 www.regoconsulting.com Phone: 1-888-813-0444 Drill-Down : Portlet Page ● Create a portlet page ● Save and Continue 40 www.regoconsulting.com Phone: 1-888-813-0444 Drill-Down : Portlet Page ● Check the “Linkable” checkbox ● Save and Continue 41 www.regoconsulting.com Phone: 1-888-813-0444 Drill-Down : Portlet Page ● On the Links tab, click on NEW to create a new link ● Save and Return ● Then, click on Return, we will come back to the page next 42 www.regoconsulting.com Phone: 1-888-813-0444 Drill-Down : Portlet Page ● Click on the link you just created to view the settings ● Make note of the “Parameter Source”, APT_CUST_5040190 ● Save and Return ● Then, click on Return, we will come back to the page later 43 www.regoconsulting.com Phone: 1-888-813-0444 Drill-Down : Portlet #1 Query ● Create a new NSQL query ○ Name – Drill Resource Manager ○ ID – regou_RM ● Save and Continue 44 www.regoconsulting.com Phone: 1-888-813-0444 Drill-Down : Portlet #1 Query ● Paste the NSQL. (This is for both Oracle and SQL) SELECT @SELECT:DIM:USER_DEF:IMPLIED:RES:mgr.user_id:MGRDBID@, @SELECT:DIM_PROP:USER_DEF:IMPLIED:RES:mgr.full_name:ResourceManager@, @SELECT:DIM_PROP:USER_DEF:IMPLIED:RES:Count(*):ResourceCount@ from SRM_RESOURCES SRM, SRM_RESOURCES MGR where srm.manager_id = mgr.user_id and @FILTER@ Group by mgr.user_id, mgr.full_name HAVING @HAVING_FILTER@ ● Save and Continue 45 www.regoconsulting.com Phone: 1-888-813-0444 Drill-Down : Portlet #1 Query ● Click on the “Linking” tab ● Click on “New” 46 www.regoconsulting.com Phone: 1-888-813-0444 Drill-Down : Portlet #1 NSQL ● The portlet page you created earlier, “Drill Down Sample” shows in the action ● Select “Drill Down Sample” ● Once you select your page, the link you made “Manager ID” shows up. We want to map it to the mgrdbid field from our query ● Save and Return ● Click Return again to go back to the queries list 47 www.regoconsulting.com Phone: 1-888-813-0444 Drill-Down : Portlet #2 Query ● Create a new NSQL query ○ Name – Drill Resources ID – regou_RES ● Save and Continue 48 www.regoconsulting.com Phone: 1-888-813-0444 Drill-Down : Portlet #2 NSQL ● Paste the NSQL. (This is for both Oracle and SQL) SELECT @SELECT:DIM:USER_DEF:IMPLIED:RES:srm.id :RESDBID@, @SELECT:DIM_PROP:USER_DEF:IMPLIED:RES:srm.full_name:Resource_Name@ from SRM_RESOURCES SRM where @WHERE:PARAM:XML:STRING:/data/MGRID/@value@ != APT_CUST_5040190’ And srm.manager_id = @WHERE:PARAM:XML:STRING:/data/MGRID/@value@ and @FILTER@ HAVING @HAVING_FILTER@ ● Save and Continue ● Then, click Return to exit out of the query 49 www.regoconsulting.com Phone: 1-888-813-0444 Drill-Down : Portlet #1 Design ● Create a new grid portlet ○ Name = Resource Manager w/Drill ○ ID = regou_rm_count ○ Data Provider = Drill – Resource Manager ● Click Next ● Click Finish and Open 50 www.regoconsulting.com Phone: 1-888-813-0444 Drill-Down : Portlet #1 Design ● Go to the layout section. ● Add the Resource Manager and Resource Count fields ● Remove the MGRBDID ● Sort by resourcemanager ● Click Save 51 www.regoconsulting.com Phone: 1-888-813-0444 Drill-Down : Portlet #1 Design ● On the same tab, go to the “Fields” sub-page ● Click on the properties icon next to the resourcemanager field 52 www.regoconsulting.com Phone: 1-888-813-0444 Drill-Down : Portlet #1 Design ● At the bottom, the link that you made on the query will appear ● Select “Resource Manager” ● For more fun, change the Disable Link Attribute to “resourcecount” ● Save and Return ● Save and Return again to exit this portlet 53 www.regoconsulting.com Phone: 1-888-813-0444 Drill-Down : Portlet #2 Design ● Create a new grid portlet. ○ Name = Drill - Resources ID = regou_resources ○ Data Provider = Drill – Resources ● Click Next ● Click Finish and Open 54 www.regoconsulting.com Phone: 1-888-813-0444 Drill-Down : Portlet #2 Design ● Go to the layout section ● Add the Resource_Name ● Remove the RESDBID ● Sort by resourcename ● Click Save and Return 55 www.regoconsulting.com Phone: 1-888-813-0444 Drill-Down : Putting it all together! ● Go to Portlet Pages and open up the “Drill Down Sample” page. ● Add the “Resource Manager w/Drill” portlet. ● Add the “Drill – Resources” ● Click Save and Return 56 www.regoconsulting.com Phone: 1-888-813-0444 Drill-Down : Putting it all together! ● Add the “Drill Down Sample” portlet page to a new link on the menu using the menu manager ● Click Save and Return 57 www.regoconsulting.com Phone: 1-888-813-0444 Drill-Down : Putting it all together! 58 www.regoconsulting.com Phone: 1-888-813-0444 Drill-Down : Putting it all together! 59 www.regoconsulting.com Phone: 1-888-813-0444 Exercise #3 : Drill-Down Portlet ● ● ● ● ● Log into your own environment. Build your NSQL x2 Build your Grid Portlet x2 Add it to a page. Add page to menu. 60 www.regoconsulting.com Phone: 1-888-813-0444 Questions? 61 www.regoconsulting.com Phone: 1-888-813-0444 Thank You! Contact US 888.813.0444 Thank you for your time! Email Contact info@regoconsulting.com Web Site www.regoconsulting.com 62 www.regoconsulting.com Phone: 1-888-813-0444