Go to primary content
Oracle® Retail Warehouse Management System Implementation Guide
Release 15.0
E68108-01
  Go To Table Of Contents
Contents
Go To Index
Index

Previous
Previous
 
Next
Next
 

4 Dashboards

The Activity Monitor is an embedded part of the Enhanced Navigation (EN) web application.

Summary of Flows

Figure 4-1 shows the different components of the solution within the context of a three tiered platform and applications architecture.

Figure 4-1 Different Components of the Dashboard

Surrounding text describes Figure 4-1 .

The solution implements on a dual tiered polling approach to refreshing user displays and the ADF DVT components within them. These are labelled in Figure 4-2 with labels (a) through (d) which can be categorized as:

Main Poll Process (a) and (b)

Figure 4-2 illustrates this process in more detail.

Figure 4-2 Main Poll Process Sequence

Surrounding text describes Figure 4-2 .
  • A Timer event triggers a worker class to call a Poller object's run()method. This event is generated by a timer thread that is maintained at the context of the entire web application and therefore facilitates the process to execute independently of user sessions.

  • After synchronizing the server timestamps with the database, a sequence of function calls are invoked to the database Dashboard Helper packaged functions which respond with summary count records that update a shared Java object graph. The object graph maintains tasks counts that are shared across user sessions and used to refresh views dynamically.

  • Summaries of historical records are also processed in the same call sequence. They are all read on the initial poll, but filtered to return and process just the current day's records in subsequent poll cycles.

Automatic Browser Refresh using ADF Faces Poll Operations (c)

The normal ADF rendering life cycle produces the appropriate views for the Dashboard in a supported web browser. The browser refreshes these views using client side AJAX poll operations that call the shared object model for data from the server's managed beans using ADF binding references on the various view objects like graphs and tables.

Figure 4-3 Automatic Browser Refresh Sequence

Surrounding text describes Figure 4-3 .

There is no direct interaction required from the view layer components with the database to render summary pies, graphs and tables with the appropriate data. Instead, the managed beans transform the counts held by object instances in the memory model to the appropriate formats and classes required by each type of widget on each page.

The shared object model therefore supports much better scaling without placing additional load on the server because the main poll cycle is delegated to a single background thread.

Collectively, flows (a) through (c) form the overall polling process that keeps the views in the Dashboards in sync across all user sessions.

User Drill Down Interactions (d)

When users click on a summary graph or table for additional details for export tables, the following sequence on interactions occurs between the various component actors in the different layers of the solution.

Figure 4-4 User Drill Down Interactions Sequence

Surrounding text describes Figure 4-4 .

This is out of the box behavior that uses ADF request/response actions with dynamic components and is covered in depth in the Fusion development guides for JSF components. The sequence can be summarized as follows:

  • A mouse click is propagated to the appropriate backing bean of the page fragment through a JavaScript event and a PPR action is queued for the server.

  • The backing bean invokes the appropriate handler code to call an Iterator Binding in the page definition of the fragment.

  • This in turn. Invokes the underlying VO instance that calls the appropriate Helper function within its query body. The WHERE and ORDER BY clauses in the VO query handle the parameterisation of the specific entity data that was clicked filtering the required result set.

  • The Iterator binding is updated which in turn updates the component model of the export table and sends the response back to the client browser.

  • The client updates the Document Object Model (DOM) child elements and then renders the output.

Activity Monitor Runtime Configuration

The Activity Monitor is an embedded part of the Enhanced Navigation (EN) web application and therefore inherits various elements from it. This section summarizes what is inherited and outlines Dashboard specific parts of the configuration.

Inherited Features

The following items are inherited from the EN deployment:

  • Environment Setup and Technical Stack

  • Security including roles and privileges

  • Localization features

  • Configuration Settings - with the addition of settings for poll frequencies covered in the following section

Specific Configurations for Activity Monitor Polling

The following are the application.properties file values to control the operation of the server and client poll cycles:

Figure 4-5 Application.properties File Values

Surrounding text describes Figure 4-5 .
  • The dashboard.poll property determines the frequency that the Timer thread uses to drive the main poll process for the shared object model in milliseconds. Values less than 10 seconds are ignored and default to 40 seconds. The timer generates events after the completion of the last poll process and is therefore independent of the data set sizes returned.

  • The ajax.poll property is bound to JSF Poll operation components that use AJAX to sequence PPR requests to refresh pages. Again, values less than 10000 milliseconds default back 20 seconds.

Database Dashboard Helper Package

Unlike the standardized formats for result sets used by the Polling engine, the View Objects for drill downs are specific to the structure of the export tables in each of the Dashboard views.

Customers can implement their own underlying queries in the Database Helper functions to meet their own requirements as long as the column formats and naming conventions are adhered to.

All API functions are streamlined to use output column name formats outlined below. These reflect the underlying Sql data types:

  • output_valueNN for VARCHAR2 values where NN can be in the range 01..10

  • output_numberNN for NUMBER values where NN can be in the range 01..10

  • output_dateNN for DATE values where NN can be in the range 01..10

The TD operates by executing queries against functions maintained by the Helper package to both collect summary data by the main server polling process, and to support user specific export data based on the user mouse selections.

  • Summary Data Functions - used to update the shared memory model that is in turn used to render the dynamic JSF components in user views. The query wrappers perform the correct ordering and filtering of values with the appropriate ORDER BY clauses to optimize parsing for the shared model updates.

    For example the following SQL code snippet is used to collect all summary data for active tasks for Transport, Cycle Counts and Picks:

    Figure 4-6 Sample SQL Code Snippet

    Surrounding text describes Figure 4-6 .

    All wrapper queries are embedded in the compiled ADF WebApp distribution and are invisible to customized Dashboard Helper implementations.

  • Drill Down Data Functions - used by ADF VOs to populate exportable output tables. VOs are view specific and defined for each export table.

    The drill down functions of the API that provide view specific detailed outputs do not require any input parameter values in the call. Each related VO query provides the appropriate parameterization for the call based on what is being clicked by the user.

    For example, the following SQL code snippet is defined as the query for the DailyApptSummaryView VO that is used to populate the daily appointments export table when a user clicks the summary graph on the same page.

    Figure 4-7 Sample SQL Code Snippet

    Surrounding text describes Figure 4-7 .

Table 4-1 describes the individual functions supported by the Dashboard Helper API.

Table 4-1 Functions Supported by Dashboard Helper API

Function Type Function Name Returned data

Summary

get_active_tasks_data()

Summary task counts for Transport, Cycle Counts and all Pick types

get_daily_appt_data()

Summary data for the daily appointments

get_sched_appt_data()

Summary scheduled appointments

get_unsched_po_data()

Summary of unscheduled PO

get_open_trailer_data()

Summary of open trailers

get_task_duration_data()

Summary of task durations

get_appt_hist_data()

Summary of historical appointment data

get_asn_out_hist_data()

Summary of ASN history records

get_task_hist_data()

Summary of historical records for Transport, Cycle Counts and all Pick types

Detailed

get_active_tasks_detail_data()

Detailed task data for Transport, Cycle Counts and all Pick types

get_task_hist_detail_data()

Task details for historical records for Transport, Cycle Counts and all Pick types

get_daily_appt_detail_data()

Task details for daily appointments

get_sched_appt_detail_data()

Task details for scheduled appointments

get_unsched_po_detail_data()

Task details for unscheduled PO

get_appt_hist_detail_data()

Task details for historical appointment data

get_outbound_hist_detail_data()

Task details for ASN history records

get_open_trailer_detail_data()

Task details for open trailers


Table 4-2 shows the standardized structure for summary data function outputs:

Table 4-2 Standardized Structure for Summary Data Function Outputs

Query clause and SQL Type GROUP BY as VARCHAR2 Counts as NUMBER(INT)
TD Model Attribute Names FACILITY LABEL STATE ACTIVITY TOTAL PALLETS CARTONS UNITS
Output Columns output_value01 output_value02 output_value03 output_value04 output_number01 output_number02 output_number03 output_number04
Function Name

get_active_tasks_data()

Facility ID

Value for grouped views For example, Zones names or Wave numbers. Null wave values should output 'ROP'

CO, IP or NS

Activity codes for Transport, Cycle Counts and Picks

Total tasks

Total Pallets

Total Cartons (Cases)

Total Units

get_daily_appt_data()

Facility ID

Grouped by value of APPT_STATUS value to support categorization of PRINTED values in the Dashboard

CO, IP or NS

Activity codes for Appointments

Total tasks

Total Pallets

Total Cartons (Cases)

Total Units

get_sched_appt_data()

Facility ID

Appt. timestamp value formatted as YYYY-MM-DD

CO, IP or NS

Activity codes for Appointments (excluding BLIND activities)

Total tasks

0

Total appointed container count

Total appointed unit count

get_unsched_po_data()

Facility ID

Not before date value formatted as YYYY-MM-DD

CO, IP or NS

Activity code PO_VOL

Total tasks

Total Pallets

Total Cartons (Cases)

Total Units

get_open_trailer_data()

Facility ID

TRAILER_ID values

CO, IP or NS

Activity code OPEN_TRAILERS

Total tasks

Total Pallets

Total Cartons (Cases)

Total Units

get_task_duration_data()

Facility ID

Time bucket in hours. Currently set to 1, 2, 3, 4, 5, 6, 7, 8, 12, 16, 20, 24, 48, 72 , >72

CO

Activity codes for Transport, Cycle Counts and Picks (See Table 3)

Total task count per time bucket

0

0

0

get_appt_hist_data()

Facility ID

End timestamp using format

YYYY-MM-DD

CO

Activity codes for Appointments

Total tasks

Total Pallets

Total Cartons (Cases)

Total Units

get_asn_out_hist_data()

Facility ID

End timestamp using format

YYYY-MM-DD

CO

Activity code ASN_OUT

Total tasks

Total Pallets

Total Cartons (Cases)

Total Units

get_task_hist_data()

Facility ID

End timestamp using format

YYYY-MM-DD

CO

Activity codes for Transport, Cycle Counts and Picks (See Table 3)

Total tasks

Total Pallets

Total Cartons (Cases)

Total Units


Table 4-3 shows the structure of detail data function outputs.

Table 4-3 Structure of Detail Data Function Outputs

Function get_active_tasks_detail_data() get_task_hist_detail_data() get_daily_appt_detail_data() get_sched_appt_detail_data() get_unsched_po_detail_data() get_appt_hist_detail_data() get_outbound_hist_detail_data() get_open_trailer_detail_data()
Column

output_value01

FACILITY

FACILITY

FACILITY

FACILITY

FACILITY

FACILITY

FACILITY

FACILITY

output_value02

TASK

TASK

DOOR_ID

DOOR_ID

TRAILER

DOOR_ID

TRAILER

TRAILER_ID

output_value03

ACTIVITY

ACTIVITY

APPT_STATUS

APPT_STATUS

SHIPPED

CREATED

SHIPPED

CONTAINER_ID

output_value04

STATE

STATE

LABELED_RECEIVING

LABELED_RECEIVING

DESTINATION

APPT_START_TS

DESTINATION

LOCATION_ID

output_value05

CREATED

CREATED

TRAILER_ID

TRAILER_ID

DOOR

APPT_END_TS

DOOR

LOAD_TS

output_value06

STARTED

STARTED

DELIVERY_MODE

DELIVERY_MODE

BOL_NBR

ACTUAL_START_TS

BOL_NBR

CONTAINER_STATUS

output_value07

ENDED

ENDED

CARRIER_CODE

CARRIER_CODE

ASN_NBR

ACTUAL_END_TS

ASN_NBR

DESTINATION

output_value08

ZONE

ZONE

LOAD_TYPE

LOAD_TYPE

EST_ARR_DATE

STARTED

EST_ARR_DATE

FINAL_LOCATION_ID

output_value09

WAVE

WAVE

APPT_TYPE

APPT_TYPE

CARRIER

ENDED

CARRIER

CARRIER_CODE

output_value10

DESTINATION

DESTINATION

USER_ID

USER_ID

CONTAINERS

APPT_STATUS

CONTAINERS

SERVICE_CODE

output_value11

ATTRIBUTE (User)

ATTRIBUTE (User)

PO_NBR

PO_NBR

UNITS

LABELED_RECEIVING

UNITS

ROUTE

output_value12

LOCATION

LOCATION

ITEM_ID

ITEM_ID

PALLETS

TRAILER_ID

PALLETS

TRAILER_STATUS

output_value13




BULK_FLAG


DELIVERY_MODE


MASTER_CONTAINER_ID

output_value14

STATE

STATE

CARRIER_CODE


output_value15

ACTIVITY

ACTIVITY

LOAD_TYPE

output_value16

APPT_NBR


APPT_TYPE

output_value17

WAVE_NBR

USER_ID

output_value18

SCHD_NBR

PO_NBR

output_value19



CASEPACK



ITEM_ID



output_value20

APPTD_CONTAINER_QTY

STATE

output_value21

APPTD_UNIT_QTY

ACTIVITY

output_number01

PALLETS

PALLETS

RCVD_CONTAINER_QTY

APPT_NBR

APPT_NBR

output_number02

CARTONS

CARTONS

RCVD_UNIT_QTY

WAVE_NBR

WAVE_NBR

output_number03

UNITS

UNITS

RECEIPT_WEIGHT

SCHD_NBR

SCHD_NBR

output_number04




CASEPACK

CASEPACK

output_number05

APPTD_CONTAINER_QTY

APPTD_CONTAINER_QTY

output_number06

APPTD_UNIT_QTY

APPTD_UNIT_QTY

output_number07

RCVD_CONTAINER_QTY

RCVD_CONTAINER_QTY

output_number08

RCVD_UNIT_QTY

RCVD_UNIT_QTY

output_number09

RECEIPT_WEIGHT

RECEIPT_WEIGHT

output_date01

CREATED

CREATION_TS


output_date02

APPT_START_TS

APPT_START_TS

output_date03



APPT_END_TS

APPT_END_TS





output_date04

ACTUAL_START_TS and STARTED


output_date05

ACTUAL_END_TS and ENDED


Table 4-4 shows valid task activity codes in result sets from helper API.

Table 4-4 Valid Task Activity Codes in Result Sets from Helper API

Tabs Internal Subcategory Codes Valid Activity Codes Activity Description

Inbound

APPOINTMENTS

ASN

ASN Appointments

PO

Purchase Orders

NSC

NSC Appointments

FPR_WDET

FPR (Detailed) Appointments

FPR_WODET

FPR (No Details) Appointments

BLIND

Blind Appointments

PO VOLUME

PO_VOL

Future PO Volumes

Transport

MOVES

C_MOVE

Case Moves

P_MOVE

Pallet Moves

PUTAWAYS

C_PUTAWAY

Case Putaways

P_PUTAWAY

Pallet Putaways

Cycle Counts

CYCLE_COUNTS

AC

Audit Counted

MM

Manually Marked

SS

System Selected

Picks

UNIT

U_PICK

Less than Case Picks

UP_PICK

UP Picks

U_PICK_3RD

3rd Party Picks

U_REPLEN

U Replenishments

UP_REPLEN

UP Replenishments

U_REPLEN_3RD

3rd Party Replenishments



PTS_UNIT

Unit PTS

CASE

C_PICK

Case Picks

CD_REPLEN

CD Replen.

CP_REPLEN

CP Replen.

CR_REPLEN

CR Replen.

CT_REPLEN_R

CT Replen.

PTS_CASE

Case PTS

FORWARD_CASE

CF_PICK

CF Picks

CB_PICK

CB Picks

CE_REPLEN

CE Replen.

CL_REPLEN

CL Replen.

CO_REPLEN

CO Replen.

CS_REPLEN

CS Replen.

CT_REPLEN_F

CT Replen.

C3_REPLEN

C3 Replen.

BULK

B_PICK

Bulk Picks

BD_REPLEN

BD Replen.

BP_REPLEN

BP Replen.

BR_REPLEN

BR Replen.

BT_REPLEN

BT Replen.

PR_REPLEN

PR Replen.

PL_REPLEN

PL Replen.

PT_REPLEN

PT Replen.

Outbound

PAST THROUGHPUT

THROUGHPUT

ASN History

OPEN TRAILERS

OPEN_TRAILERS

Open Trailer counts


Table 4-5 shows valid state codes in result sets from helper API.

Table 4-5 Valid State Codes in Result Sets from Helper API

Task State Valid State Codes

Not Started

NS

In Progress

IP

Completed

CO