08/03/2016

Implementing a new Mobile Approval Type (Part 3)

In Implementing a new Mobile Approval Type (Part 1) I talked about the initial configuration you need to make in Enterprise Components > Approvals > Approvals > Mobile Approval Options > Transactions page and how that configuration gets reflected when viewing new Mobile Approvals. In Implementing a new Mobile Approval Type (Part 2)  I talk about the Application Package PeopleCode Classes that are required for Mobile Approvals, plus one other Record Definition. In this post I demonstrate how the custom classes/methods were called during page load and mouse clicks events. I reviewed Trace Files to determine which methods are called and in what order they were called. The screenshots and classes refer to our custom TOIL App Package Classes. But I think the delivered App Package Classes, for say the Absence Mobile Approvals, defined in the GP_ABS_EVT_HANDLER App Package, could also be referred to. But if you need any clarification please let me know. I may be able to provide our custom code.

Pending Approvals Page Loaded

Custom Methods that are Called

  1. DataHandler.OXF_TOIL
  2. DataHandler.GetApprovalItemRowset
  3. DataHandler.PopulateItemForList

Screen Shot


TOIL Hours on Left Clicked

Custom Methods that are Called

  1. DataHandler.OXF_TOIL
  2. DataHandler.GetApprovalItemRowset
  3. DataHandler.PopulateItemForList

Screen Shot


TOIL Request Clicked / TOIL Details Page Loaded

Custom Methods that are Called

  1. DataHandler.OXF_TOIL
  2. DataHandler.RetrieveApprovalItemDetail
  3. DataHandler.PopulateItemSummaryForDetail
  4. DetailDocument.ConstructDocument
  5. SubPage.OXF_TOIL
  6. SubPage.AddDynamicButton
  7. SubPage.RenderPage
  8. TOIL_Workflow.Thread_Descr
  9. TOIL_Workflow.getThreadDescr
  10. TOIL_Workflow.getUserName
  11. DataHandler.OXF_TOIL
  12. Ajax.IsRequireToRunPreApprovalProcess

Screen Shot


TOIL Line Clicked

Custom Methods that are Called

  1. DataHandler.OXF_TOIL
  2. DetailDocument.OXF_TOIL
  3. DetailDocument.ConstructDocument
  4. SubPage.OXF_TOIL
  5. SubPage.AddDynamicButton
  6. SubPage.RenderPage

Screen Shot

With RenderPage Processing

Without RenderPage Processing


TOIL Deny Clicked

Custom Methods that are Called

  1. TOIL_Workflow.Event_Handler
  2. TOIL_Workflow.OnHeaderDeny
  3. Comments.AddApplicationComments

Explanation

AddApplicationComments is what inserts the comments entered on the page.

TOIL Approved Clicked

Custom Methods that are Called

  1. DataHandler.OXF_TOIL
  2. Ajax.PreApprovalProcess
  3. TOIL_Workflow.Event_Handler
  4. TOIL_Claim.TOIL_Claim
  5. TOIL_Claim.Update_TOIL_Entitlement
  6. Results_Build.Results_Build
  7. Results_Build.Schedule_Update_Balances
  8. TOIL_Workflow.OnHeaderApprove
  9. Comments.AddApplicationComments
  10. DataHandler.OXF_TOIL
  11. DataHandler.GetApprovalItemRowset
  12. DataHandler.OXF_TOIL
  13. DataHandler.GetApprovalItemRowset

Explanation

AddApplicationComments is what inserts the comments entered on the page.

The final 2 calls to DataHandler.OXF_TOIL and DataHandler.GetApprovalItemRowset are likely from the Pending Approvals page being displayed again, which is normally where you get redirected to after approving something.

07/03/2016

Implementing a new Mobile Approval Type (Part 2)

In Implementing a new Mobile Approval Type (Part 1) I talked about the initial configuration you need to make in Enterprise Components > Approvals > Approvals > Mobile Approval Options > Transactions page and how that configuration gets reflected when viewing new Mobile Approvals. In this post I talk about the Application Package PeopleCode Classes that are required for Mobile Approvals, plus one other Record Definition .

Delivered Documentation

There seems to be very little documentation delivered by Oracle on how to implement a custom AWE Process in the new MAP-built Approval pages. The one place something is mentioned is this PeopleBook: Using the PeopleSoft Fluid User Interface to Work with Approvals where it mentions that the Root Package ID specified on the Enterprise Components > Approvals > Approvals > Mobile Approval Options > Transactions page (see Implementing a new Mobile Approval Type (Part 1)) and that this is the "application package that holds the DataHandler, DetailDocuement and SubPage classes for the transaction."

Custom Classes

Besides the DataHandler, DetailDocuement and SubPage listed in the documentation, there are two other classes required: Ajax and Comments.

These five class types have to be defined using this naming structure:

<Root Package>:<Class Type>:<AWE Process ID>

So for our custom TOIL Approval Workflow, the AWE Process ID is OXF_TOIL and the Root Package we used was OXF_ABSENCE_MGMT. So the five Classes were defined like this:
  • OXF_ABSENCE_MGMT:Ajax:OXF_TOIL
  • OXF_ABSENCE_MGMT:Comments:OXF_TOIL
  • OXF_ABSENCE_MGMT:DataHandler:OXF_TOIL
  • OXF_ABSENCE_MGMT:DetailDocuement:OXF_TOIL
  • OXF_ABSENCE_MGMT:SubPage:OXF_TOIL

Ajax Class

Extends
HMAP_APPROVAL:Ajax:AjaxInterface
Defines
AdhocAJAXFunction
Use
Could be used to implement Check Eligibility functionality. We have not implemented that functionality.
Defines
PreApprovalProcess
Use
Can be used to check Forecasting or other prerequisites required before allowing a User to Approve a request. In our case, we have no such prerequisite checks so we are setting everything to "Success".
Defines
IsRequireToRunPreApprovalProcess
Use
Always returns true. Maybe if it was set to false then the PreApprovalProcess method wouldn't get run when the request was approved.
Defines
CheckEligibility
Use
Defined, and coded, but not in use. Would be called from AdhocAJAXFunction, if there was a Check Eligibility button added to the Approval page.

Comments Class

Extends
HMAP_APPROVAL:ApprovalComments
Defines
method AddApplicationComments
Use
Once the Approval Item has been Approved, if there has been a comment added by the Approver, then the appropriate comment field on the appropriate table gets updated

DataHandler Class

Extends
HMAF_AWE:MOBILE:Handler:ApprovalFrameworkBase
Defines
GetApprovalItemRowset
Use
Perform a select against TOIL AWE View to return (as a rowset) all of the Outstanding TOIL Requests awaiting approval. Used for populating the number of TOIL requests on left hand side of Pending Approvals. And for populating the list of Pending Approvals on right hand side whenever TOIL or All is selected on left hand side.
Defines
PopulateItemForList
Use
Sets the action flags based on configuration on Enterprise Components > Approvals > Approvals > Mobile Approval Options > Transactions page. Makes reference to header record for TOIL (OXF_TOIL_EE_PRD) but it isn't actually used. Formats the data of each pending TOIL Approval you see on right hand side of pending approvals page when you have selected TOIL Hours on left hand side.
Defines
RetrieveApprovalItemDetail
Use
Perform a select against TOIL AWE View to return (as a record) all the details of a selected outstanding TOIL Request that is awaiting approval.
Defines
PopulateItemSummaryForDetail
Use
Similar to PopulateItemForList. Sets the action flags based on configuration on Enterprise Components > Approvals > Approvals > Mobile Approval Options > Transactions page. Makes reference to header record for TOIL (OXF_TOIL_EE_PRD) but it isn't actually used. Sets the following which is then passed in to a delivered method:
  • ItemDate
  • ItemKey
  • ItemType
  • TotalItemLines
  • EmplID
  • EmplRcd
  • RequestorComments

DetailDocument Class

Extends
HMAP_APPROVAL:Document:Data:SubDetailInfoDataDocument
Defines
OXF_TOIL
Use
Constructor method.
Defines
ConstructDocument
Use
This is the method that builds the main detail page you see after you have selected one of the outstanding TOIL approvals from the Pending Approvals page. It is used for both the main TOIL page, along with the line subpage you see after selecting one of the TOIL lines associated with the request. For both, it starts by doing a select against the TOIL AWE View. For the main page, it then 1.) formats the information you see on the page: "TOIL Period", "Claim No", "Status" and "Total Hours", and 2.) does a select against OXF_TOIL_EE_EVT and for each row returned, it sets the "ItemKey" (made up of on OXF_ABS_TOIL_DT and OXF_TOIL_CODE Values), "Title" (the OXF_ABS_TOIL_DT Value), "Title1" (OXF_ABS_TOIL_HRS.Value concatenated with " Hours"), and "Description1" (TOIL Code description concatenated with OXF_ABS_TOIL_RSN Value). If it's the subpage instead, it does a select against OXF_TOIL_EE_EVT and formats the information you see on the page: "Date", "Hours Earned", "TOIL Code" and "TOIL Reason".

SubPage Class

Extends
HMAP_APPROVAL:Page:SubPageBase
Defines
OXF_TOIL
Use
Constructor method. Sets some labels. Also sets some other properties of the class (including a pointer to a HTML Definition - HMAP_SPB_ABS_CSS_JS - but it doesn't seemed to be used.)
Defines
AddDynamicButton
Use
Used if a Dynamic Button is needed on the Subpage. This is not used for TOIL Approvals (so only assuming this is the purpose of this method.)
Defines
RenderPage
Use
Used to format the display of main page and the subpage. If viewing subpage, it hides a couple of sections and turns the main data you see on subpage from 2 columns to one column. If viewing main page, it sets some labels and hides the Additional Info section.

TOIL AWE View

OXF_TOIL_AWE_VW is a new record definition based on record HGA_APPR_AWE_VW. The HGA_APPR_AWE_VW record is used in the code for the Absence Fluid Approvals.

When developing an AWE Process you create a Cross Reference View. For our OXF_TOIL AWE Process this view was called OXF_TOIL_XREF. This new view is very similar and joins in these tables: OXF_TOIL_EE_PRD (the Header record for the Approval), OXF_TOILPRD_TBL (a lookup table with descriptions), PERSON_NAME (the name of the person who has submitted the request), EOAW_STEPINST and EOAW_USERINST.

The record is referenced throughout the Application classes defined above, usually to gather TOIL data together to present to an Approver.