Alloc 160 Og
Alloc 160 Og
Alloc 160 Og
December 2016
Oracle® Retail Allocation Operations Guide, Release 16.0
E81309-01
The information contained herein is subject to change without notice and is not warranted to be error-free. If
you find any errors, please report them to us in writing.
If this is software or related documentation that is delivered to the U.S. Government or anyone licensing it
on behalf of the U.S. Government, then the following notice is applicable:
U.S. GOVERNMENT END USERS: Oracle programs, including any operating system, integrated software,
any programs installed on the hardware, and/or documentation, delivered to U.S. Government end users
are "commercial computer software" pursuant to the applicable Federal Acquisition Regulation and
agency-specific supplemental regulations. As such, use, duplication, disclosure, modification, and
adaptation of the programs, including any operating system, integrated software, any programs installed on
the hardware, and/or documentation, shall be subject to license terms and license restrictions applicable to
the programs. No other rights are granted to the U.S. Government.
This software or hardware is developed for general use in a variety of information management
applications. It is not developed or intended for use in any inherently dangerous applications, including
applications that may create a risk of personal injury. If you use this software or hardware in dangerous
applications, then you shall be responsible to take all appropriate fail-safe, backup, redundancy, and other
measures to ensure its safe use. Oracle Corporation and its affiliates disclaim any liability for any damages
caused by use of this software or hardware in dangerous applications.
Oracle and Java are registered trademarks of Oracle and/or its affiliates. Other names may be trademarks of
their respective owners.
Intel and Intel Xeon are trademarks or registered trademarks of Intel Corporation. All SPARC trademarks
are used under license and are trademarks or registered trademarks of SPARC International, Inc. AMD,
Opteron, the AMD logo, and the AMD Opteron logo are trademarks or registered trademarks of Advanced
Micro Devices. UNIX is a registered trademark of The Open Group.
This software or hardware and documentation may provide access to or information about content,
products, and services from third parties. Oracle Corporation and its affiliates are not responsible for and
expressly disclaim all warranties of any kind with respect to third-party content, products, and services
unless otherwise set forth in an applicable agreement between you and Oracle. Oracle Corporation and its
affiliates will not be responsible for any loss, costs, or damages incurred due to your access to or use of
third-party content, products, or services, except as set forth in an applicable agreement between you and
Oracle.
The following restrictions and provisions only apply to the programs referred to in this section and licensed
to you. You acknowledge that the programs may contain third party software (VAR applications) licensed to
Oracle. Depending upon your product and its version number, the VAR applications may include:
(i) the MicroStrategy Components developed and licensed by MicroStrategy Services Corporation
(MicroStrategy) of McLean, Virginia to Oracle and imbedded in the MicroStrategy for Oracle Retail Data
Warehouse and MicroStrategy for Oracle Retail Planning & Optimization applications.
(ii) the Wavelink component developed and licensed by Wavelink Corporation (Wavelink) of Kirkland,
Washington, to Oracle and imbedded in Oracle Retail Mobile Store Inventory Management.
(iii) the software component known as Access Via™ licensed by Access Via of Seattle, Washington, and
imbedded in Oracle Retail Signs and Oracle Retail Labels and Tags.
(iv) the software component known as Adobe Flex™ licensed by Adobe Systems Incorporated of San Jose,
California, and imbedded in Oracle Retail Promotion Planning & Optimization application.
You acknowledge and confirm that Oracle grants you use of only the object code of the VAR Applications.
Oracle will not deliver source code to the VAR Applications to you. Notwithstanding any other term or
condition of the agreement and this ordering document, you shall not cause or permit alteration of any VAR
Applications. For purposes of this section, "alteration" refers to all alterations, translations, upgrades,
enhancements, customizations or modifications of all or any portion of the VAR Applications including all
reconfigurations, reassembly or reverse assembly, re-engineering or reverse engineering and recompilations
or reverse compilations of the VAR Applications or any derivatives of the VAR Applications. You
acknowledge that it shall be a breach of the agreement to utilize the relationship, and/or confidential
information of the VAR Applications for purposes of competitive discovery.
The VAR Applications contain trade secrets of Oracle and Oracle's licensors and Customer shall not attempt,
cause, or permit the alteration, decompilation, reverse engineering, disassembly or other reduction of the
VAR Applications to a human perceivable form. Oracle reserves the right to replace, with functional
equivalent software, any of the VAR Applications in future releases of the applicable program.
Contents
Preface ............................................................................................................................................................... xv
Audience..................................................................................................................................................... xv
Documentation Accessibility ................................................................................................................... xv
Related Documents ................................................................................................................................... xv
Customer Support ..................................................................................................................................... xvi
Review Patch Documentation ................................................................................................................. xvi
Improved Process for Oracle Retail Documentation Corrections ...................................................... xvi
Oracle Retail Documentation on the Oracle Technology Network .................................................. xvii
Conventions .............................................................................................................................................. xvii
1 Introduction
Allocation Overview................................................................................................................................ 1-1
2 Technical Architecture
Overview.................................................................................................................................................... 2-1
Oracle Application Development Framework (ADF) .................................................................. 2-1
Retail Fusion Platform ....................................................................................................................... 2-4
Allocation Backend Service .............................................................................................................. 2-4
Data Access Patterns.......................................................................................................................... 2-4
Data Storage ........................................................................................................................................ 2-4
v
Prerequisite: Apple Certificate and Provisioning Profile...................................................... 3-7
Prerequisite: Android Google Cloud Messaging Registration............................................. 3-7
Server Configuration .................................................................................................................. 3-7
Managing Application Navigator ......................................................................................................... 3-8
Managing Functional Security............................................................................................................... 3-8
Introduction to Retail Roles .............................................................................................................. 3-8
Security Policy Stripe.................................................................................................................. 3-8
Abstract Roles.............................................................................................................................. 3-9
Job Roles ....................................................................................................................................... 3-9
Duty Roles.................................................................................................................................... 3-9
Privilege Roles ............................................................................................................................. 3-9
Retail Role Hierarchy...................................................................................................................... 3-10
Default Security Reference Implementation ............................................................................... 3-11
Privileges .................................................................................................................................. 3-11
Duties ........................................................................................................................................ 3-12
Role Mapping ........................................................................................................................... 3-13
Extending the Default Security Reference Implementation ..................................................... 3-14
Managing Roles in Retail Application Administration Console ...................................... 3-15
Disabling Content ........................................................................................................................... 3-16
Safe Mode.................................................................................................................................. 3-16
Disabling Links in the Sidebar ............................................................................................... 3-16
Managing Oracle Metadata Services (MDS) ............................................................................... 3-16
Overview of Oracle Metadata Services ................................................................................ 3-16
Using the System MBean Browser and the MDSAppRuntime MBean ........................... 3-17
Exporting All Metadata Services Customizations .............................................................. 3-20
Exporting Metadata Services Customization for a Specific User ..................................... 3-21
Deleting All Metadata Services Customizations for a User............................................... 3-22
Deleting a Customization for a Specific Page for All the Users ........................................ 3-22
Deleting a Customization for a Specific Page for a Particular User ................................. 3-23
Importing All Metadata Services Customizations .............................................................. 3-24
Importing a Specific Page Customization for a User.......................................................... 3-24
Creating Metadata Labels ....................................................................................................... 3-25
Promoting Metadata Labels ................................................................................................... 3-26
Listing Metadata Labels .......................................................................................................... 3-26
Deleting Metadata Labels ....................................................................................................... 3-26
vi
Platform ReSTful Web Services........................................................................................................ 5-2
Notification ReST Services......................................................................................................... 5-2
Access Control ReST Service ..................................................................................................... 5-3
Favorites ReST Services.............................................................................................................. 5-4
Allocations........................................................................................................................................... 5-4
Approve........................................................................................................................................ 5-4
Load Recent Allocations by User.............................................................................................. 5-5
Load by Query............................................................................................................................. 5-5
Load by Allocation ID ................................................................................................................ 5-6
Load Item Location Information............................................................................................... 5-6
Lookup Allocation Status .......................................................................................................... 5-7
Lookup Process Status................................................................................................................ 5-7
Reserve.......................................................................................................................................... 5-8
Submit........................................................................................................................................... 5-8
Withdraw ..................................................................................................................................... 5-8
vii
Retail Application Included Dashboard Customization Scenarios .................................. 7-24
Adding Contextual Reports........................................................................................................... 7-35
List of Contextual Business Events and Payloads............................................................... 7-36
Preparing the Custom Shared Library for Adding Contextual Reports.......................... 7-37
Adding a URL based Contextual Report ............................................................................. 7-38
Adding a DVT Taskflow based Contextual Report ............................................................ 7-41
Enabling Dynamic Task Items in the Retail Application .......................................................... 7-43
The DynamicContentHandler Interface ............................................................................... 7-45
DynamicContent Type ............................................................................................................ 7-45
Example Implementation of the DynamicContentHandler Interface.............................. 7-46
TaskMenuItem class ................................................................................................................ 7-48
Default Dynamic Task Items .................................................................................................. 7-51
In-Context Launch of Dynamic Task Items ......................................................................... 7-51
Report Adapters ....................................................................................................................... 7-52
8 Functional Design
Functional Features and Assumptions................................................................................................. 8-1
Overview: What Does Oracle Retail Allocation Do? .................................................................... 8-1
Item Sources................................................................................................................................. 8-2
How Need is Determined .......................................................................................................... 8-3
'What if' On Hand ....................................................................................................................... 8-4
Purchase Order Addition........................................................................................................... 8-4
Holdback Quantity ..................................................................................................................... 8-4
Allocation Approval Process..................................................................................................... 8-6
Functional Assumptions ................................................................................................................... 8-6
Advanced Shipping Notice-Based Allocation Assumptions................................................ 8-6
Item-location Assumptions ....................................................................................................... 8-6
Calculation Multiple Assumptions .......................................................................................... 8-6
What if .......................................................................................................................................... 8-6
Weight and Date User Selection Assumptions....................................................................... 8-7
Proportional Allocation Assumption....................................................................................... 8-7
Scheduled Allocation Constraints ................................................................................................... 8-7
Batch Job Considerations for Scheduled Allocations ............................................................ 8-8
Additional Validations for Scheduled Allocation.................................................................. 8-8
Allocation Status ................................................................................................................................ 8-9
Allocation Process Status ........................................................................................................ 8-10
Sources of Data Used by Rules to Determine Gross Need........................................................ 8-11
History Data Sources ............................................................................................................... 8-12
Forecast Data Sources.............................................................................................................. 8-12
Plan Data Sources..................................................................................................................... 8-12
Receipt Plan Data Sources ...................................................................................................... 8-12
History and Plan Data Sources .............................................................................................. 8-13
Plan Re-project Data Sources ................................................................................................. 8-13
Corporate Rules........................................................................................................................ 8-14
Quantity Limits ........................................................................................................................ 8-14
Net Need at Store Level Calculation ..................................................................................... 8-14
Closing Allocations ......................................................................................................................... 8-15
viii
9 Functional and Technical Integration
Integration Interface Allocation-Related Dataflow........................................................................... 9-1
From Oracle Retail Demand Forecasting System to Oracle Retail Allocation via Merchandising
System 9-2
From Oracle Retail Planning Application to Oracle Retail Allocation....................................... 9-3
From Size Profile Optimization to Oracle Retail Allocation........................................................ 9-3
From Retail Demand Forecasting/Curve to Oracle Retail Allocation ....................................... 9-4
From Oracle Retail Warehouse Management System to Oracle Retail Allocation via Oracle
Retail Merchandising System 9-4
From Oracle Retail Promotion Management to Oracle Retail Allocation ................................. 9-4
From Oracle Retail Merchandising System to Oracle Retail Allocation .................................... 9-4
From Oracle Retail Allocation to Oracle Retail Merchandising System .................................... 9-4
From Oracle Retail Merchandising System to Oracle Retail Warehouse Management System ....
9-5
From Oracle Retail Active Retail Intelligence to Oracle Retail Allocation ................................ 9-5
Persistence Layer Integration................................................................................................................. 9-5
Persistence Layer Integration (Including Tables and Triggers) .................................................. 9-5
Oracle Retail Merchandising System Functional Dependencies and Assumptions ............... 9-10
Oracle Retail Merchandising System Differentiator Setup ....................................................... 9-10
Staple Item........................................................................................................................................ 9-11
Pack Item .......................................................................................................................................... 9-12
Summary of Items and How Oracle Retail Allocation Handles Them ................................... 9-12
Oracle Retail Allocation Functional Assumptions Related to Oracle Retail Merchandising
System 9-13
ix
Example for Running Load Batch ......................................................................................... 10-9
Oracle Retail Allocation Program Reference............................................................................... 10-9
Application Programming Interface (API) Specification ........................................................ 10-13
File Layout .............................................................................................................................. 10-13
Oracle Retail Extract, Transform, and Load for Receipt and Plan ........................................ 10-18
Oracle Retail Extract, Transform, and Load for Size Profile Optimization Data................. 10-18
Limitations of Oracle Retail Extract, Transform, and Load Programs ................................. 10-19
12 Internationalization
Translation.............................................................................................................................................. 12-1
Setting the User Language .................................................................................................................. 12-2
Setting Date, Time, and Number Formats ....................................................................................... 12-2
Translations ............................................................................................................................................ 12-2
x
Displaying the Security Menu....................................................................................................... 13-1
Managing Role Hierarchy.................................................................................................................... 13-4
Adding or Removing Members from an Application Role ...................................................... 13-4
Creating Job Roles ................................................................................................................................ 13-7
Creating Duty Roles ............................................................................................................................. 13-7
Creating a New Application Role................................................................................................. 13-7
Creating an Application Role from an Existing Role................................................................. 13-8
Security in Retail Applications........................................................................................................... 13-9
Single Sign On (SSO) Setup for Retail Fusion Platform Applications..................................... 13-9
Displaying External Application Contents in Non-SSO Environments ............................... 13-10
xi
xii
Send Us Your Comments
Oracle welcomes customers' comments and suggestions on the quality and usefulness
of this document.
Your feedback is important, and helps us to best meet your needs as a user of our
products. For example:
■ Are the implementation steps correct and complete?
■ Did you understand the context of the procedures?
■ Did you find any errors in the information?
■ Does the structure of the information help you with your tasks?
■ Do you need different information or graphics? If so, where, and in what format?
■ Are the examples correct? Do you need more examples?
If you find any errors or have any other suggestions for improvement, then please tell
us your name, the name of the company who has licensed our products, the title and
part number of the documentation and the chapter, section, and page number (if
available).
xiii
xiv
Preface
The Oracle Retail Allocation Operations Guide provides critical information about the
processing and operating details of the application, including the following:
■ System configuration settings
■ Technical architecture
■ Functional integration dataflow across the enterprise
■ Batch processing
Audience
This guide is for:
■ Systems administration and operations personnel
■ Systems analysts
■ Integrators and implementation personnel
■ Business analysts who need information about product processes and interfaces
Documentation Accessibility
For information about Oracle's commitment to accessibility, visit the Oracle
Accessibility Program website at
http://www.oracle.com/pls/topic/lookup?ctx=acc&id=docacc.
Related Documents
For more information, see the following documents in the Oracle Retail Allocation
documentation set:
■ Oracle Retail Allocation Release Notes
■ Oracle Retail Allocation Installation Guide
xv
■ Oracle Retail Allocation User Guide and Online Help
■ Oracle Retail Allocation Data Model
■ Oracle Retail Merchandising Implementation Guide
■ Oracle Retail Merchandising Security Guide
■ Oracle Retail Merchandising Batch Schedule
■ Oracle Retail Operational Insights User Guide
Customer Support
To contact Oracle Customer Support, access My Oracle Support at the following URL:
https://support.oracle.com
xvi
If a more recent version of a document is available, that version supersedes all
previous versions.
(Data Model documents are not available through Oracle Technology Network. You
can obtain these documents through My Oracle Support.)
Conventions
The following text conventions are used in this document:
Convention Meaning
boldface Boldface type indicates graphical user interface elements associated
with an action, or terms defined in text or the glossary.
italic Italic type indicates book titles, emphasis, or placeholder variables for
which you supply particular values.
monospace Monospace type indicates commands within a paragraph, URLs, code
in examples, text that appears on the screen, or text that you enter.
xvii
xviii
1
Introduction
1
Welcome to the Oracle Retail Allocation Operations Guide. The guide is designed so
that you can view and understand key system-administered functions, the flow of data
into and out of the application, and the application's behind-the-scenes processing of
data.
Allocation Overview
A retailer that acquires Oracle Retail Allocation gains the ability to achieve more
accurate allocations on a stable product. Having the right product in the right stores or
warehouses allows for service levels to be raised, sales to be increased, and inventory
costs to be lowered. By accurately determining which locations should get which
product, retailers can meet their turnover goals and increase profitability.
The Oracle Retail Allocation retailer benefits from the following capabilities:
■ Built on ADF Technology stack, it allows the ability to quickly add UI based on
ready to use design patterns, metadata driven tools and visual tools. Debugging
can be performed more rapidly; maintenance and alteration costs are kept low
using the metadata driven application development.
■ The application's interface takes advantage of the Java Database Connectivity
(JDBC), ADF's built-in transaction management, along with connections to data
sources handled in WebLogic server which minimizes the interface points that
need to be maintained.
■ The application's robust algorithm executes rapidly, and the call to the calculation
engine has been ported over from C++ library to a Java Library, thus minimizing
the overhead/issues related to maintaining codebase consisting of two disparate
languages.
■ For retailers with other Oracle Retail products, integration with the Oracle Retail
product suite means that item, purchase order, supplier, sales, and other data are
accessed directly from the RMS tables, with no need for batch modules. Purchase
order, item, location, and allocation information are passed from RMS to a
warehouse management system, such as the Oracle Retail Warehouse
Management System (RWMS).
■ Access control to the system is better managed by using Fusion Security
Architecture.
■ The application allows for retailers to adjust to changing trends in the market by
facilitating real time allocations.
■ Oracle Retail Allocation accounts for flexible supply chain paths to support
importing and domestic inventory supply.
Introduction 1-1
Allocation Overview
RMS owns virtually all of the information that Oracle Retail Allocation needs to
operate, and the information that Oracle Retail Allocation provides is of primary
interest/use for RMS. As a result, Oracle Retail Allocation has limited interaction with
other Oracle Retail Merchandising Operations Management applications. For Oracle
Retail Merchandising Operations Management applications that Oracle Retail
Allocation does interact with, it is managed through direct reads from Oracle Retail
Merchandising Operations Management application tables, direct calls to Oracle Retail
Merchandising Operations Management packages, and Oracle Retail Allocation
packages based on Oracle Retail Merchandising Operations Management application
tables.
This chapter describes the overall software architecture for Oracle Retail Allocation.
The chapter provides a high-level discussion of the general structure of the system,
including the various layers of Java code.
Overview
Retail Applications are based on the Oracle Application Development Framework
(ADF). The following diagram shows the key components that make up the
architecture of Retail Applications.
the view layer by using an application module that contains View Object. Those view
objects contain a specific usage of the data layer.
ADF Business Components implements the business service through the following set
of cooperating components:
■ Entity object – An entity object represents a row in a database table and simplifies
modifying its data by handling all data manipulation language (DML) operations
for you. It can encapsulate business logic for the row to ensure that your business
rules are consistently enforced. You associate an entity object with others to reflect
relationships in the underlying database schema to create a layer of business
domain objects to reuse in multiple applications.
■ View object – A view object represents a SQL query. You use the full power of the
familiar SQL language to join, filter, sort, and aggregate data into exactly the shape
required by the end-user task. This includes the ability to link a view object with
others to create master-detail hierarchies of any complexity. When end users
modify data in the user interface, view objects collaborate with entity objects to
consistently validate and save the changes.
■ Application module – An application module is the transactional component that
UI clients use to work with application data. It defines an updatable data model
and top-level procedures and functions (called service methods) related to a
logical unit of work related to an end-user task.
Connection Pooling
When the application 'disconnects' a connection, the connection is saved into a pool
instead of being actually disconnected. A standard connection pooling technique, this
saved connection, enables Retail applications to reuse the existing connection from a
pool. In other words, the application does not have to complete the connection process
for each subsequent connection.
Data Storage
The Oracle database realizes the database tier in a Retail application’s architecture. It is
the application's storage platform, containing the physical data (user and system) used
throughout the application. The database tier is only intended to handle the storage
and retrieval of information and is not involved in the manipulation or in the delivery
of the data. This tier responds to queries; it does not initiate them.
Configuration
This chapter is intended for administrators who support and monitor the running
system.
The content in this chapter is not procedural, but is meant to provide descriptive
overviews of the key system parameters.
1. The Retail application's producer process executes to collect the user request for
asynchronous processing and stores that information into a database table called
RAF_ASYNC_TASK. This table serves as a log of asynchronous processing
requests as well as storage for any kind of context information in order to
complete the processing. For example, the unique identifier of the business object
such as an allocation being submitted for asynchronous calculation.
2. The producer method creates a queue message and sends it to a JMS Queue.
3. One or more instances of Message Driven Beans (MDB) are configured to listen
to the JMS Queue.
4. When messages are detected on the queue, the MDBs are dispatched to execute a
task asynchronously. The MDB reads the context information about the task from
the TASK table.
5. The MDB executes the required processing for the task.
Server Configuration
Once credentials to the specific platforms are available, retailers need to add these to
the server.
For Apple Push Notifications, retailers must import the key and certificate from Apple
into weblogic. In order to do this, a keystore (JKS) file must be created using the Java
keystore utility. The key and certificate can then be imported into the created keystore
file. Retailers can refer to Oracle Java SE documentation for details on the keystore
utility.
Once created, the keystore can be uploaded into the weblogic system app stripe.
Retailers can use the weblogic scripting tool to run a Python script similar to the one
shown below. The example shows that the keystore is named RetailAppsPushServices.
user = "admin username"
password = "admin password"
url = "[weblogic server]:[port]"
keypass = "keystore password"
keypath = "keystore filepath"
apnsAlias = "key alias"
apnsPass = "key password"
connect(user, password, url)
svc = getOpssService(name='KeyStoreService')
svc.importKeyStore(appStripe='system', name='RetailAppsPushServices', type='JKS',
filepath=keypath, password=keypass, permission=true, aliases=apnsAlias,
keypasswords=apnsPass)
exit('y')
For more details on how to import the created java keystores into WebLogic, refer to
Oracle WebLogic Server and Oracle Fusion Middleware documentation.
For Android notifications, retailers will need to set up the acquired API key as a
generic credential in WebLogic. The GCM API key must be set in a map named
"RetailAppsPushServices" under the key "gcmApiKey". Refer to Oracle WebLogic
Server and Oracle Fusion Middleware documentation for instructions on creating and
setting generic credentials
Lastly, if the server environment has proxy settings, the RetailAppsPushServices
deployed on the weblogic server has to be modified. Retrieve the
RetailAppsPushServices application enterprise archive (EAR) from the server, and
modify the proxy.properties within. Once completed, the modified EAR file has to be
redployed to the server.
Abstract Roles
Abstract roles are associated with a user, irrespective of their job or job function. These
are also roles that are not associated with a job or duty. These roles are normally
assigned by the system (based on user attributes), but can be provisioned to a user on
request.
Naming Convention: All the Retail Abstract role names end with' _ABSTRACT'
Example: APPLICATION_ADMIN_ABSTRACT
Job Roles
Job roles are associated with the job of a user. A user with this job can have many job
functions or job duties.
Note: These roles are called Job roles as the role names closely map
to the jobs commonly found in most organizations.
Naming Convention: All the Retail Job role names end with' _JOB'
Example: ALLOCATOR_JOB.
Duty Roles
Job duties are tasks one must do on a job. A person is hired into a job role. These are
the responsibilities one has for a job.
Duty roles are roles that are associated with a specific duty or a logical grouping of
tasks. Generally, the list of duties for a job is a good indicator of what duty roles
should be defined.
Duty roles should:
■ Read as a job description at a job posting site.
■ Duties that we create should be self-contained and pluggable into any existing or
new job or abstract role.
Naming Convention: All the Retail duty role names end with' _DUTY'
Example: ALC_ALLOC_POLICY_MAINTENANCE_MANAGEMENT_DUTY
Privilege Roles
Privilege is the logical collection of permissions. A privilege can be associated with
any number of User Interface components. Privileges are expressed as application
roles.
Naming Convention: All the Retail Privilege role names end with' _PRIV'
Example: ALC_ALLOC_SEARCH_PRIV
Privilege roles carry security grants.
Example:
<grant>
<grantee>
<principals>
<principal>
<class>oracle.security.jps.service.policystore.
ApplicationRole</class>
<name>ALC_ALLOC_SEARCH_PRIV</name>
</principal>
</principals>
</grantee>
<permissions>
<permission>
<class>oracle.adf.controller.security.TaskFlowPermission</class>
<name>/oracle/retail/apps/alc/allocsummary/publicUi
/flow/AllocationSummaryFlow.xml#AllocationSummaryFlow</name>
<actions>view</actions>
</permission>
</permissions>
</grant>
Job roles inherit duty roles. For example, the Allocator Job role inherits the ALC_
ALLOC_SYSTEM_OPTIONS_INQUIRY_DUTY roles.
<app-role>
<name>ALC_ALLOC_SYSTEM_OPTIONS_INQUIRY_DUTY</name>
<class>oracle.security.jps.service.policystore.ApplicationRole</class>
<members>
<member>
<class>oracle.security.jps.internal.core.principals.
JpsXmlEnterpriseRoleImpl</class>
<name>ALLOCATOR_JOB</name>
</member>
</members>
</app-role>
Duty roles inherit Privilege roles. Duty roles can inherit one or more other Duty roles.
Example: ALC_ALLOC_SIZE_PROFILE_MANAGEMENT_DUTY inherits ALC_
ALLOC_SIZE_PROFILE_INQUIRY_DUTY role.
<app-role>
<name>ALC_ALLOC_SIZE_PROFILE_INQUIRY_DUTY</name>
<class>oracle.security.jps.service.policystore.ApplicationRole</class>
<members>
<member>
<class>oracle.security.jps.internal.core.principals.
JpsXmlEnterpriseRoleImpl</class>
<name>BUYER_JOB</name>
</member>
<member>
<class>oracle.security.jps.service.policystore.ApplicationRole</class>
<name>ALC_ALLOC_SIZE_PROFILE_MANAGEMENT_DUTY</name>
</member>
</members>
</app-role>
Privileges
For more information on privileges, see Default Security Reference Implementation in
the Implementing Functional Security chapter.
Duties
For more information on duties, see Default Security Reference Implementation in the
Implementing Functional Security chapter.
Role Mapping
For more information on role mapping, see Default Security Reference Implementation
in the Implementing Functional Security chapter.
Note: Make sure that the policy store is loaded with the default
security configuration. For more information, see the Post Installation
steps in the Oracle Retail Allocation Installation Guide.
The common decisions made to match your enterprise to the default security reference
implementation include the following:
■ Do the default job roles match the equivalent job roles in your enterprise?
■ Do the jobs in your enterprise exist in the security reference implementation?
■ Do the duties performed by the jobs in your enterprise match the duties in the
security reference implementation?
Disabling Content
There are situations where administrators need to disable certain links or the default
content such as Dashboards due to unavailability or other reasons. Retail Applications
provide the flexibility to disable such content so that the application remains largely
unaffected.
Safe Mode
Applications can choose to serve certain content such as dashboards to users upon
launching the application. This is referred to as "Default Content". However
sometimes this default content may cause delays in application launch after logging-in
or worse it may render the application unusable.
To handle such scenarios Retail Applications provide a feature for Administrators
called "Safe Mode" which. allows the user to log in without serving up any default
content. Once this mode is turned on, no default content is shown to any user when
the application is launched.
To turn on this mode the property "uishell.load.safe.mode" must be set to true in the
RetailAppsViewController.properties file.
5. Select the Operations tab to view the operations available for the
MDSAppRuntime MBean.
These are the operations which can be used in managing MDS Customizations.
The exportMetadata, deleteMetadata, importMetadata, createMetadataLabel,
listMetadataLabels, deleteMetadataLabel, and promoteMetadataLabel; will be
briefly discussed in the following sections.
4. Click Invoke (located at the upper-right corner of the page) to proceed with the
export operation.
5. Click Return to return to the list of operations.
6. Click Invoke, located at the upper-right corner of the page, to proceed with the
export operation.
7. A confirmation message will display in the page. Click Return to return to the list
of operations.
5. Click Invoke, located at the upper-right corner of the page, to proceed with the
delete operation.
6. A confirmation message will display in the page. Click Return to return to the list
of operations.
6. Click Invoke, located at the upper-right corner of the page, to proceed with the
delete operation.
7. A confirmation message will display in the page. Click Return to return to the list
of operations.
This will recursively delete all customizations under "/" including any other
customizations located in the folder(s) under it. Click OK.
5. For restrictCustTo, click the pencil icon. On the Edit Parameter popup, click Add,
and in the Element box, enter the list of customization layer names. This can be
used to restrict the operation to only customization documents that match the
specified customization layers.
Each customization layer name can contain, within a pair of brackets, optional
customization layer values and value patterns separated by commas. Wildcards
(%) may also be used for restricting the operation.
For example:
6. Click Invoke, located at the upper-right corner of the page, to proceed with the
delete operation.
7. A confirmation message will display in the page. Click Return to return to the list
of operations.
3. For fromLocation, enter the path of the directory or archive from which the
documents will be imported.
Example: /tempDir/downloads/mdsExport/RetailAppsFrameworkTestMDS.zip
4. For excludeBaseDocs, select true. A Boolean value indicating whether to exclude
base metadata documents from being imported.
5. For docs, click the pencil icon. On the Edit Parameter popup, click Add, and in the
Element box, enter a list of comma-separated, fully qualified document names or
document name patterns.
To import customizations for a specific page, simply enter the fully qualified base
document name in the Element box.
For example:
/oracle/retail/apps/framework/uishell/skin/page/TestTablesAndTrees.jsff
You can provide the path to multiple documents to be imported, by clicking the
Add. When done, click OK
6. For restrictCustTo, click the pencil icon. On the Edit Parameter popup, click Add,
and in the Element box, enter the list of customization layer names. This can be
used to restrict the operation to only customization documents that match the
specified customization layers.
Each customization layer name can contain, within a pair of brackets, optional
customization layer values and value patterns separated by commas. Wildcards
(%) may also be used for restricting the operation.
For example:
7. Click Invoke, located at the upper-right corner of the page, to proceed with the
import operation.
8. A confirmation message will display in the page. Click Return to return to the list
of operations.
4. Click Invoke, located at the upper-right corner of the page, to proceed with the
operation.
5. A confirmation message will display in the page. Click Return to return to the list
of operations.
Retail Applications leverage ADF's security framework that is based on the Oracle
[2]
Platform Security Services.
This section discusses the various assumptions around security for Retail
Applications.
This chapter gives an overview about the Allocation ReSTful Web Service
Implementation and API designs used in the Allocation environment. Retailers can
access back-end functionality in Retail applications by calling the applications' ReSTful
Web Services.
Refer to http://www.oracle.com/technetwork/articles/javase/index-137171.html
to learn more about ReST as an architectural style applied to building Web services.
Deployment
A Retail Application will package its ReST services as part of the application's
Enterprise Archive (EAR) file. Specifically, those services are packaged as a Web
Archive (WAR) within the EAR.
Installation of the ReST web services is therefore done by default.
Security
Services are secured using J2EE-based security model.
■ Realm-based User Authentication. This verifies users through an underlying
realm. The username and password is passed using Http Basic authentication.
■ Role-based Authorization. This assigns users to roles, which in turn are granted or
restricted access to resources/services. The authorization of ReSTful web services
is static and cannot be reassigned to other rules post installation. The following
role(s) is/are associated with ReSTful Web Services and should be added to the
Enterprise LDAP:
All enterprise roles defined above are mapped in web.xml and weblogic.xml of the
ReST Service webapp.
The communication between the server and client is encrypted using one way SSL. In
non-SSL environments the encoding defaults to BASE-64 so it is highly recommended
that these ReST services are configured to be used in production environments secured
with SSL connections.
Depending on the type of the operation or HTTP method, the corresponding response
header is updated in the Http response with the following codes:
■ GET/READ : 200
■ PUT/CREATE : 201 created
■ POST/UPDATE : 204
■ DELETE : 204
Allocations
This section covers the following:
■ Approve
■ Load Recent Allocations by User
■ Load by Query
■ Load by Allocation ID
■ Load Item Location Information
■ Lookup Allocation Status
■ Lookup Process Status
■ Reserve
■ Submit
■ Withdraw
Approve
Business Overview
REST endpoint for approving an allocation.
Service Type
Post
ReST URL
/Allocations/approve
Parameter(s)
AllocationRDO - {"id": Value}
Returns
No content response.
Business Overview
REST endpoint for loading recent allocations of logged in user.
Service Type
Get
ReST URL
/Allocations/recent/{records}
Parameter(s)
records - number of records to return
Returns
A collection of AllocationRDO
Load by Query
Business Overview
REST endpoint for loading allocations that satisfy the supplied criteria.
Service Type
Get
ReST URL
/Allocations?dept={dept}&class={class}&subclass={subclass}&id={id}&status={status}
&allocStatus={allocStatus}&createdDate={createdDate}&createdBy={createdBy}
Parameter(s)
■ dept - department of the items within an allocation
■ class - class of the items within an allocation
■ subclass - subclass of the items within an allocation
■ ID - comma separated allocation IDs
■ status - the process status of an allocation
■ allocStatus - the status of an allocation
■ createdDate - created date of an allocation in yyyy-MM-dd format
■ createdBy - userId information of the user who created allocation
Returns
A collection of AllocationRDO
Load by Allocation ID
Business Overview
REST endpoint for loading allocation header based on allocation id.
Service Type
Get
ReST URL
/Allocations/{id}
Parameter(s)
id - allocation id
Returns
A collection of AllocationRDO
Business Overview
REST endpoint for loading item location information based on supplied information.
Service Type
Get
ReST URL
/Allocations/{id}/itemloc?facetSessionId={facetSessionId}&allocType={allocType}&ite
mId={itemId}&whId={whId}&docType={docType}&docId={docId}&diffDescription={
diffDescription}&diffTypeId={diffTypeId}
Parameter(s)
■ ID - allocation ID
■ facetSessionId - facet session ID associated with the allocation. This ID is
generated from a loaded allocation.
■ allocType - type of allocation. Acceptable values: SA, FA, or FPG.
■ itemId - item ID
■ whId - warehouse ID associated with the item
■ docType - source type where the item is source from. Acceptable Values (PO, ASN,
OH, WHIF, BOL,TSF)
■ docId - source order number
■ diffDescription - diff description retrieved from allocation details service
■ diffTypeId - diff type ID retrieved from allocation details service
Returns
A collection of ItemLocRDO
Business Overview
REST endpoint for looking up allocation statuses.
Service Type
Get
ReST URL
/Allocations/allocStatus
Parameter(s)
None
Returns
A collection of LookUpRDO
Business Overview
REST endpoint for looking up process statuses.
Service Type
Get
ReST URL
/Allocations/status
Parameter(s)
None
Returns
A collection of LookUpRDO
Reserve
Business Overview
REST endpoint for reserving an allocation.
Service Type
Post
ReST URL
/Allocations/reserve
Parameter(s)
AllocationRDO - {"id": Value}
Returns
No content response.
Submit
Business Overview
REST endpoint for submitting an allocation.
Service Type
Post
ReST URL
/Allocations/submit
Parameter(s)
AllocationRDO - {"id": Value}
Returns
No content response
Withdraw
Business Overview
REST endpoint for withdrawing an allocation.
Service Type
Post
ReST URL
/Allocations/withdraw
Parameter(s)
AllocationRDO - {"id": Value}
Returns
No content response.
Applications
Retail Applications can expose select task flows retailers can directly launch into. This
feature is referred to as in-context launching in a Retail Application.
Retailers can launch these task flows directly through specific URLs.
Retail Applications will provide information about the various task flows retailers can
in-context launch into including the URLs and the required parameters.
Retailers can use these URLs in other web pages as links. For example: the URL to a
task flow that invokes the Create Allocation Flow in a Retail Application can be added
as a link to dashboard report on a BI server.
When the user clicks on a URL to a task flow, the Retail Application will open in a new
browser window or tab depending on the specified target of the URL. The requested
task flow will be shown as a UI tab within the Retail Application.
Load Allocation
The Load Allocation container allows you to load allocations by passing the Alloc_id.
HTTP URL
http://<host>:<port>/<app-web -context>/faces/<home view>?navModelItemId=
allocationCreateFromBI3
This chapter key concepts, guidelines, and supported use cases for customizing a
Retail Application.
Prerequisite Concepts
Retailers must understand the following concepts before performing any of the
supported customization scenarios discussed in this chapter.
■ Understanding the Deployment of Retail Applications
■ Understanding the Retail Application User Interface
Two shared libraries are typically installed along with the application EAR:
■ The Included Dashboards Shared Library
■ The Custom Shared Library Registry
The Included Dashboards Shared Library contains the Retail Application-built
dashboards. These dashboards can be customized. Further discussion on Retail
Application Included Dashboards can be found in the section, Understanding
Dashboards in Retail Applications.
A Retail Application that allows for customization will have as part of its installation
an intermediary shared library that will serve as a registry to reference the actual
retailer-built shared libraries. This is called the Custom Shared Library Registry.
When retailers need to add their own content into the application, metadata to register
their content into the application's UI including the binaries for the content itself (e.g.
task flows and pages) are expected to be packaged into a Web Archive (WAR) file and
deployed as a shared library in the same managed server as the application itself.
Then, the names of these shared libraries have to be referenced in the Custom Shared
Library Registry.
The Local Area is the main content area of the application. Workflows that allow users
to get tasks done in the application are presented in this area. The workflows are
launched into this area as a result of actions the user take in the navigation pane,
sliding sidebar panel and global area.
The Navigation Pane organizes the different actions a user can take on the application
as iconic menu items. The options or actions available to the users for each menu item
is presented in the Sliding Sidebar panel next to the Navigation Pane. There are five (5)
standard Navigation Pane menus that are available to users:
■ Application Navigator/Switcher – This menu allows users to switch between
Retail Applications.
■ Favorites – This menu allows users to access their own favorite list of actions or
tasks within the application.
■ Tasks – This menu presents a hierarchy of tasks or actions the user can access in
the application.
■ Reports – This menu presents a hierarchy of links to the application reports and
dashboards.
■ Notification – This menu allows users to access unread and past notifications
around business processes that are happening in the application.
The Global Area of the application contains branding information on the left hand side
and application wide menu options on the right hand side. Application wide menu
options include access to application preferences, login and logout, application help
and application information.
The Contextual Area is a collapsible area on the right of the page, which provides
space to present information that can assist users in completing their tasks. The
Contextual Area is presented per Local Area tab. Each task flow is presented in the
local area can have a contextual area.
Downloading JDeveloper
To create the custom shared library, it is recommended that retailers download and
install JDeveloper version 12.2.1 by following the link below:
http://www.oracle.com/technetwork/developer-tools/jdev/downloads/index.htm
l
c. JDeveloper will generate a new workspace with two projects: Model and
View-Controller.
b. The New Gallery dialog appears. Choose the option, File (General), in the All
Technologies section of the dialog. Click OK.
c. The Create File dialog opens. For the File Name, specify MANIFEST.MF. For
the Directory, the new file must be added under the src/META-INF
sub-directory under the View-Controller project's directory.
d. Edit the new MANIFEST.MF file and add the following entries:
Manifest-Version: 1.0
Implementation-Vendor: companyName
Implementation-Title: Custom Shared Library for companyName
Implementation-Version: 1.0
Extension-Name: companyname.custom.shared.lib
Specification-Version: 1.0
Created-By: companyName
Modify the contents such that meaningful and unique values are used for
Implementation-Vendor, Implementation-Title, Extension-Name, and Created-By.
Example:
Manifest-Version: 1.0
Implementation-Vendor: Acme Retail
Implementation-Title: Custom Shared Library for Acme Retail
Implementation-Version: 1.0
Extension-Name: acmeretail.custom.shared.lib.procurement
Specification-Version: 1.0
Created-By: AcmeRetail
b. The New Gallery dialog appears. Choose the option, WARFile (Deployment
Profiles), in the All Technologies section of the dialog. Click OK.
c. Provide a unique and meaningful name for the Deployment Profile and click
OK.
e. Under the General section, make sure that the Specify Java EE Web Context
Root is selected without any value.
When you navigate away from this section, you will be prompted to confirm
that you really want a blank context root. Click Yes to the confirmation dialog.
f. Under the WAR Options section, enable the Include Manifest File option and
Add the MANIFEST.MF file you created under
…/View-Controller/src/META-INF.
g. Click OK.
c. The Deploy dialog opens. Select Deploy to WAR and click Finish.
d. JDeveloper generates the WAR file into the View-Controller project folder
sub-directory, deploy.
2. Deploy the generated WAR file to the same managed server as the Retail
Application as a shared library. Refer to section 6 of the Deploying Applications
to Oracle WebLogic Server documentation (http://docs.oracle.com/cd/E23943_
01/web.1111/e13702/deploy.htm). This task has to be done using the WebLogic
Administration Console or Enterprise Manager Fusion Middleware Control with a
user having WebLogic administrator permissions.
oracle.retail.apps.alc..portal.extension
To do this:
1. Log in to the WebLogic Administration Console as a user with administrative
permissions.
2. If the Administration Console was configured with domain configuration locking,
go ahead and click Lock & Edit to ensure that other administrators can be
prevented from making changes during your edit session.
4. Look for the Retail Application deployment and shut it down. Choose Force Stop
Now when appropriate. Wait for the shutdown process to complete.
5. Get the deployment location of the Retail Application's custom shared library
registry. Under the deployments list, click on the link for the library named
oracle.retail.apps.alc.portal.extensions. The Settings page for the library
appears.
The Settings page will show the file location of the registry's WAR file under the
Path entry.
Make a note of this file location.
6. Using the operating system's file manager application, go to the location of the
WAR file. You need read and write permissions to the file system where the WAR
file is located.
7. Make a copy of the WAR file as back-up.
8. Open the original WAR file using an archive file manager and update the
/WEB-INF/weblogic.xml by adding a new <library-ref> entry pointing to your
custom shared library.
<library-ref>
<library-name>companyname.custom.shared.lib</library-name>
</library-ref>
Once this change is done, you have now linked your custom shared library to the
Retail application.
9. Return to the WebLogic Administration Console. Navigate to Environments'
Servers section. Under the Control tab, select the managed server where the Retail
Application is deployed to. Shut it down and start it back up again.
This section contains important points that developers must consider when building
new custom ADF-based contents for Retail Applications.
The data source name must be the same as the Retail Application's primary data
source name.
jdbc/AllocationApplicationDBDS
c. Open the original WAR file using an archive file manager and copy the above
Reports menu model xml file in View-Controller project src directory,
preferably under a subdirectory called custom.
d. Add a new or modify existing file called
PageTemplateOverrideModel.properties under the View-Controller/src
directory.
Modify this file and add the following entry:
Home.reportsMenuModelXml=<path to sidebar model xml within
view-controller/src>
Example:
Home.reportsMenuModelXml=/custom/HomeReportsMenuModel.xml
e. Modify the copy of the model. Add new items , which are created in the
shared library project. Refer to the section, Reports Menu Model XML Items.
6. Test the Retail Application.
/WEB-INF/mycompany/CustomDashboardTaskFlow.xml#CustomDashboardTaskFlow
</url>
<Parameters>
<Parameter id="productName">"Acme"</Parameter>
</Parameters>
</Item>
</Items>
</Item>
</Items>
</NavigationDefinition>
Item Attributes
Attribute Description
visible Indicates if the item should be rendered (visible) or not.
It can be an EL Expression that evaluates to true or false. Or it
can be a plain string value equal to "true" or "false". Defaults to
"true".
type Indicates the type of the item. The main values are
"folder","taskflow","link". The type "folder" indicates that the
item contains additional sub-navigation items. The type
"taskflow" indicates it is a task flow, and the type "link" is used
for URLs.
Attribute Description
title The attribute title is used to provide the title of the sidebar item.
This attribute is a required attribute.
targetTitle The attribute targetTitle is used to provide the title of the tab in
the content area. This attribute is an optional attribute. If not
provided, the value of the title attribute will be used as the title
of the tab in the content area.
accessKey The attribute accessKey is used to specify the keyboard
keystroke or a group of keystrokes that are used to access the
navigation item using the keyboard.
shortDesc The attribute shortDesc is used to provide the description of the
navigation item which will be displayed when the user hovers
over a menu item.
showCloseIcon Mainly used when the content is being rendered in a popup,
and indicates if the 'x' icon should show or not on the top right
corner of the popup to facilitate manual closing of the popup.
Takes the values "true" or "false". Defaults to "false".
defaultContent Indicates whether the corresponding items from the model
show up by default in tabs in the content area when the page
template loads. Takes values "true" or "false", or may even take
an EL Expression evaluating to "true" or "false".
reuseInstance The attribute reuseInstance is used to specify whether the
navigation items with the same title and url will use the same
tab or not. When this attribute is set to false, the request to open
the content for that navigation item will always use a new tab.
When the attribute is true, the navigation items with the same
title and url will share the same tab in the content area. It
defaults to true.
keysList Takes name value pairs separated by a semicolon. The attribute
keysList provides a way to differentiate two navigation items
with the same title and url. If keysList is not provided, then the
two navigation items with the same title and url will always use
the same tab. When the keysList is provided, it provides
uniqueness to the navigation items with the same title and url
enabling them to use different tabs. Example
keysList="key1=value1;key2=value2"
urlRendererHeight, Example values are shown below. These used in the case of a
popup and indicate the height and width of the popup.
urlRendererHeight, Example values are shown below. These used in the case of a
popup and indicate the height and width of the popup.
urlRendererWidth
urlRendererHeight="200px" urlRendererWidth="200px"
reloadTab When this attribute is set to true, an already opened tab will be
reloaded with the new input parameters for the taskflow.
When it is set to false,
a previously opened tab will only be re-focused, but not
reloaded with new input parameters for the taskflow.
The reload tab functionality has some limitations. Please see
section 'Error! Reference source not found.
Attribute Description
refreshOnDisclosure When the navigation item has refreshOnDisclosure attribute set
to true then the tab displaying that item in the Content Area will
be refreshed every time it's disclosed. The attribute can take
either of the two values true or false. Default is false. The
attribute is useful in the scenarios where we want to display to
the user the latest information from the database every time
he/she comes back to the tab. The attribute should be used with
caution because if the data in that tab is not committed before
leaving the tab then the uncommitted data will be lost upon
coming back to the tab.
dynamicTabFocus When a navigation item is invoked, the tab displaying that item
will have its text focused. To override this behavior, set
dynamicTabFocus to "false". This attribute defaults to "true".
popupId Applicable only when target="_popup". Must be a number
between 1 and 15.
This attribute allows consuming applications to target a specific
popup within the UI Shell. The framework provides 15 popups
that consuming applications can take advantage of.
In case this attribute has not been specified, a default popup
will be used by the framework. This default popup will not
store its dimensions in MDS.
popupContentHeight Applicable only when target="_popup".
This attribute is used to provide the height in pixels of the
resulting popup dialog window.
popupContentWidth Applicable only when target="_popup".
This attribute is used to provide the width in pixels for the
resulting popup dialog window.
popupStretchChildren Applicable only when target="_popup".
Attribute Description
popupHelpTopicId Applicable only when target="_popup".
This attribute is used to look up a topic in a helpProvider for the
resulting popup window.
popupShortDesc Applicable only when target="_popup".
This attribute is used to provide short description of the
resulting popup window.
contentListener Specifies the fully qualified name of the class implementing the
ContentListener interface.
This allows applications to have the ability to inject any session
or request values before opening tabs.
tabShortDesc Specifies the text to be shown when the user hovers over the
application tab. Using this attribute application team can keep
the title short and the tabShortDesc as fully qualified tab name
which can be shown as the tooltip of the tab. This attribute will
be displayed as tab title in screen reader mode.
Item Sub-elements
Sub-element Description
url The location of the item being launched.
If the type is "taskflow" - then the URL element must contain the
path to the task flow XML.
If the type is "link" - then the URL of the external system must
be indicated in this subelement. The entire URL must be
marked as character data (e.g. enclosed in CDATA)
Parameter The <Parameters> sub-element within <Item> should list all the
parameters to the dashboard page if there are any. Each
parameter is represented as a <Parameter> element inside
<Parameters>.
The <Parameter> id should be the actual parameter reference
name recognized by the dashboard URL.
The value of each <Parameter> is a string value. This is the
only supported data type.
All items seen by the user in the Tasks Menu are registered in an XML file called the
Tasks Menu Model.
This file is kept in the application's EAR file but can be extracted, copied and modified
so retailers can add references to their own workflows.
To add or modify an item in the Tasks Menu, follow the steps below:
1. Add a custom shared library. Refer to the section, Adding a Custom Shared
Library for details.
2. Using JDeveloper, open the Custom Shared Library workspace in Developer Role.
3. Add all the custom task menu items as required.
4. Regenerate the shared library registry WAR file from the workspace and redeploy
the shared library. Shutdown and restart of the Retail Application and its shared
library registry is required.
5. Changes Required in Shared Library Registry for Custom Task Menu Model
a. Obtain the application's Tasks menu model XML file.
Tasks Menu Model XML –
/oracle/retail/apps/framework/uishell/config/custom/HomeTaskMenuMo
del.xml
b. Please refer the section Reference the Custom Shared Library from the Retail
Application, to register custom task menu model shared library with in the
Retail Applications.
c. Open the original WAR File using an archive file manager and copy the above
TaskMenuModel xml file in the View-Controller project src directory,
preferably under a subdirectory called custom.
d. Add a new file called PageTemplateOverrideModel.properties under the
View-Controller/src directory. Modify this file and add the following entry:
Home.taskMenuModelXml=<path to sidebar model xml within
view-controller/src>
Example:
Home.taskMenuModelXml=/custom/HomeTaskMenuModel.xml
e. Modify the copy of the model. Add new itemsdefined in the custom shared
library above. The format of the tasks menu model is similar to the format of
the reports menu model. Refer to the section, Reports Menu Model XML
Items.
6. Test the Retail Application.
The example below shows the dashboard page as rendered in the local area of a Retail
Application's UI.
Anatomy of a Dashboard
Depicted below is an example of a dashboard that might appear in a Retail
Application:
Figure 7–5
flows. Refer to the section, Creating New ADF Contents, for important
considerations when building custom ADF content.
3. Note the task flow URL and the parameters of the dashboard task flow.
4. Register the task flow URL and parameters into the application's Reports Menu
Model. Refer to section, Adding or Modifying an Item in the Reports Menu.
5. Re-generate the Custom Shared Library WAR file from the Custom Shared Library
workspace. Shutdown the Retail Application and its Custom Shared Library
Registry, redeploy the Custom Shared Library WAR file, and restart the Retail
Application components.
6. Grant security permissions to dashboard page components. Refer to the section,
Creating New ADF Contents.
7. Test the Retail Application. Log-in and verify the newly added content.
The dashboard page, prompts and reports are implemented as ADF bounded task
Flows and page fragments. The prompts and regions are configured in an XML file
called a Dashboard Prompt Configuration XML. The dashboard prompt XML arranges
visually the prompts and regions on the dashboard page.
The dashboard task flow is launchable from the Retail Application User Interface's
Reports Menu. In order to make the report launchable, the dashboard task flow is
registered in the application's reports menu model XML.
A set of ADF business components enable data from the Retail Application schema to
be rendered in the report regions.
The figure below shows a rendering of a dashboard (called Alloc Dashboard) in a
Retail Application:
The dashboard is launched from the application's reports menu. The reports menu
model XML file (as shown below) contains an item called allocDashboard registering
the task flow, AllocDashboardFlow, into the reports menu. Note that the dashboard
task flow includes a parameter called dashboardConfigXML which references the
location of the Dashboard Prompt Configuration XML file.
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<NavigationDefinition id="Folder_1"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="urn:www.oracle.com:oracle.retail.apps.framework.navigation"
xsi:schemaLocation="urn:www.oracle.com:oracle.retail.apps.framework.navigation
classpath:oracle/retail/apps/framework/uishell/navigation/model/schema/NavigationM
odel.xsd">
<Items>
<Item id="allocDashboard" title="Alloc Dashboard"
shortDesc="Alloc Dashboard"
type="taskflow">
<url>/WEB-INF/AllocDashboardFlow.xml#AllocDashboardFlow</url>
<Parameters>
<Parameter
id="dashboardConfigXML">"/oracle/AllocDashboardPrompt.xml"</Parameter>
<Parameters>
</Item>
</Items>
</NavigationDefinition>
The Dashboard Prompt Configuration XML file for this example is called the
AllocDashboardPrompt.xml and it contains the following entries:
<?xml version="1.0" encoding="UTF-8" ?>
<Dashboard layout="column"
xmlns="urn:www.oracle.com:oracle.retail.apps.framework.dashboard"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="urn:www.oracle.com:oracle.retail.apps.framework.dashboard
classpath:oracle/retail/apps/framework/dashboard/model/schema/dashboardSchema.xsd"
>
<Vectors>
<Vector>
<Items>
<Item id="filter" type="prompt">
<url>/WEB-INF/DashboardFilterFlow.xml#DashboardFilterFlow</url>
</Item>
<Item id="orderStatus" type="report">
<url>/WEB-INF/oracle/retail/apps/framework/dvtcontextawarereport/publicui/flow/DVT
ContextAwareReportFlow.xml#DVTContextAwareReportFlow</url>
<Parameters>
<Parameter
id="taskflowURL">/WEB-INF/OrderStatusFlow.xml#OrderStatusFlow</Parameter>
<Parameter id="parameterName1">departmentIds</Parameter>
<Parameter id="payloadKeyName1">DepartmentId</Parameter>
<Parameter id="parameterName2">classIds</Parameter>
<Parameter id="payloadKeyName2">ClassId</Parameter>
<Parameter id="parameterName3">subclassIds</Parameter>
<Parameter id="payloadKeyName3">SubclassId</Parameter>
</Parameters>
</Item>
</Items>
</Vector>
<Vector width="300px">
<Items>
<Item id="topSeller" type="report">
<url>/WEB-INF/oracle/retail/apps/framework/dvtcontextawarereport/publicui/flow/DVT
ContextAwareReportFlow.xml#DVTContextAwareReportFlow</url>
<Parameters>
<Parameter
id="taskflowURL">/WEB-INF/oracle/retail/apps/flow/TopSellerFlow.xml#TopSellerFlow<
/Parameter>
<Parameter id="parameterName1">departmentIds</Parameter>
<Parameter id="payloadKeyName1">DepartmentId</Parameter>
<Parameter id="parameterName2">classIds</Parameter>
<Parameter id="payloadKeyName2">ClassId</Parameter>
<Parameter id="parameterName3">subclassIds</Parameter>
<Parameter id="payloadKeyName3">SubclassId</Parameter>
</Parameters>
</Item>
<Item id="bottomSeller" type="report">
<url>/WEB-INF/oracle/retail/apps/framework/dvtcontextawarereport/publicui/flow/DVT
ContextAwareReportFlow.xml#DVTContextAwareReportFlow</url>
<Parameters>
<Parameter
id="taskflowURL">/WEB-INF/oracle/retail/apps/flow/BottomSellerFlow.xml#BottomSelle
rFlow</Parameter>
<Parameter id="parameterName1">departmentIds</Parameter>
<Parameter id="payloadKeyName1">DepartmentId</Parameter>
<Parameter id="parameterName2">classIds</Parameter>
<Parameter id="payloadKeyName2">ClassId</Parameter>
<Parameter id="parameterName3">subclassIds</Parameter>
<Parameter id="payloadKeyName3">SubclassId</Parameter>
</Parameters>
</Item>
</Items>
</Vector>
</Vectors>
</Dashboard>
The file registers the prompts and regions into a hierarchy of vectors and items. The
structure of the dashboard prompt configuration XML file is explained in the
following section.
In addition to the items arranged in rows or columns, you can add a header and footer
region to the dashboard. Both horizontally span the full width of the dashboard, with
the header appearing at the top and the footer appearing at the bottom. These can be
added in the model by specifying a "HeaderItem" or "FooterItem" child of the root
"Dashboard" element. These regions support all the same properties as other items in
the dashboard.
Vectors and items expose width and height attributes to enable applications to resize
elements to best fit on the dashboard. Certain rules and best practices apply when
using these attributes.
First, if the dashboard is in row layout, then all items in a row must have the same
height. The height attribute from the vector is used to specify the height of every item
in that row. Since rows are assumed to span the full width, the vector width is ignored
in this layout.
In the same way, when the dashboard is arranged in column layout, all items in a
column must have the same width. The vector width is used to specify the width of
every item in that column. Columns should expand vertically to accommodate all
content, allowing a scrollbar if necessary. Therefore, vector height is ignored in this
layout.
In addition to the width and height attributes, a vector also provides a
dimensionsFrom attribute. The valid values of the dimensionsFrom attribute can be
auto, child or parent. The dimensionsFrom attribute is used to specify whether the
Items in the vector inherit their dimensions from the parent decorative box or not.
When the dimensionsFrom attribute is parent, the Items in the vector will be stretched
to fill any available space in the vector. When the dimensionsFrom attribute is child,
the Items in the vector won't stretch but will display scroll bars if they cannot be
accommodated in the available space in the decorative box. The default value of the
dimensionsFrom attribute is 'auto' which gives preference to the child dimensions.
The following table indicates which attributes are used, based on which dashboard
layout has been selected.
In column layout, either every vector width should be provided, or every width
should be omitted. If all widths are omitted, columns default to divide the total width
evenly. When the widths are omitted, the dimensionsFrom attribute of the vector can
be set to parent if stretching of the Items is desired. If widths are provided, they should
be specified as a percentage, and the sum of all widths should equal 100%.
In row layout, heights may be specified or omitted as desired. If a row's height is
omitted, it will default to get the dimension from the content inside the regions. When
the row's height is omitted, the dimensionsFrom attribute of the vector can be set to
parent if stretching of the Items is desired. Heights should be specified using an exact
unit such as px or em. Percentages should not be used.
If these rules and best practices are ignored, results may be inconsistent or undesirable.
Items may not size as intended, and horizontal scrollbars or nested vertical scrollbars
may appear.
In addition to resizing entire rows or columns, individual items inside the row or
column can also be resized. As mentioned above, items in a row should all have the
same height, so in row layout, item height is ignored and only item width is valid.
And items in a column should have the same width, so item width is ignored and only
item height is valid. See the table above for details.
The same rules and best practices that apply to vector height and width also apply to
setting item height and width.
<url>/WEB-INF/oracle/retail/apps/framework/dvtcontextawarereport/publicui/flow/DVT
ContextAwareReportFlow.xml#DVTContextAwareReportFlow</url>
<Parameters>
<Parameter
id="taskflowURL">/WEB-INF/oracle/retail/apps/flow/BottomSellerFlow.xml#BottomSelle
rFlow</Parameter>
<Parameter id="parameterName1">departmentIds</Parameter>
<Parameter id="payloadKeyName1">DepartmentId</Parameter>
<Parameter id="parameterName2">classIds</Parameter>
<Parameter id="payloadKeyName2">ClassId</Parameter>
<Parameter id="parameterName3">subclassIds</Parameter>
<Parameter id="payloadKeyName3">SubclassId</Parameter>
</Parameters>
</Item>
Allocator Dashboard
The Allocator dashboard is designed to show the user a set of reports with important
data points such as incoming purchase orders, stock figures compared against the total
sales values, top and bottom selling items, etc. for a set of selected merchandise
hierarchies. At the top of the dashboard are prompts that need to be selected and are
used to filter the data in the dashboard. At a minimum, a department, one or more
classes, and one or more subclass that belong to this department must be selected.
The dashboard contains the following reports -
Purchase Order Arrivals
This report lists the details of the incoming orders that are due to be delivered in the
next 4 weeks, based on the Not After Date (NAD) of the order. The user is given a
visual representation of the orders in the form of orange circles within a tile
representing each of the 4 weeks; with the current one selected by default. Fully
allocated PO count is shown in orange, partially allocated PO count in green, whereas
fully allocated PO count is shown in blue within the circle that represents the total PO
count for the week. These values are displayed to the user on hovering over the
respective sections of the figure. Selection of the tile representing a week will show the
details of the orders to be delivered in that week in a tabular format.
The user can perform the following actions from the dashboard:
■ Allocate PO - This action is shown as a gear icon in the Action section of the report
and will indicate that the PO has either not been allocated or has not been fully
allocated. Clicking on the icon will take the user to the Allocate PO screen to select
items from the purchase order in which to create the allocation.
■ Reallocate PO - This action is shown as a curved arrow in the Action section of the
report and will indicate that the PO has an allocation associated with it. Clicking
on this icon will take the user to the allocation to make updates.
Stock to Sales
This report plots the historical trend of the stock on hand at the beginning of the given
week and the corresponding sales achieved by the end of the same week for the past
six weeks. The stock and sales is aggregated across all items belonging to the
department, classes, and subclasses selected in the prompts and the stores that are
sourced from the selected virtual warehouse, if selected.
Sales - Top
This report displays yesterday's top selling item based on the merchandise hierarchy
combination selected in the prompts. It is intended to provide visibility to the allocator
to prioritize allocations for the fast selling product in order to get the right product in
time on the sales floor.
Sales - Bottom
This report displays yesterday's lowest selling item based on the merchandise
hierarchy combination selected in the prompts. It is intended to help the allocator
make inventory decisions, based on slow sales.
Dashboards, for a list of prompt payload values that can be generated for the
dashboard.
4. Note the new report's task flow URL and parameters.
5. Obtain a copy of the dashboard prompt configuration XML file for the dashboard
to be modified. Refer to the section, List of Retail Application Included
Dashboards.
6. Modify the copy of the dashboard prompt configuration XML file to add an item
or replace an existing item for the new report. Refer to the section, The Dashboard
Prompt Configuration XML File for details on properly creating a new item entry
in the configuration file.
If the report has to refresh when a prompt on the dashboard is changed by the
user, make sure that report task flow is wrapped in a DVTContextAwareTaskFlow
for its item entry in the dashboard prompt configuration XML file. Use the
example in the section, Understanding Design Pattern of Included Dashboards, as
reference. Refer to the section, Adding a DVT Taskflow-based Contextual Report
for usage of the DVTContextAwareTaskFlow framework.
7. Modify the included dashboard's entry in the application's Reports Menu to
reference the location of your copy of the dashboard prompt configuration XML
file. Refer to the section, Adding or Modifying an Item in the Reports Menu.
8. Re-generate the Custom Shared Library WAR file from the Custom Shared Library
workspace. Shutdown the Retail Application and its Custom Shared Library
Registry, redeploy the Custom Shared Library WAR file, and restart the Retail
Application components.
9. Test the Retail Application.
Each task flow publishes contextual business events on key activities happening in the
screen. Contextual reports can listen to those events and change its content depending
on the payload information associated with the event.
Contextual reports can either be ADF based DVT reports or can be maintained in a
separate BI reporting tool. The ADF based DVT reports are ADF taskflows, which are
built using the ADF Data Visualization components. The reports maintained in an
external reporting tool are URLs accessible in a web browser via a URL. Oracle Retail
recommends using Oracle Business Intelligence Enterprise Edition (Oracle BI EE) for
an external reporting tool.
The contextual reports are added into a Retail Application by adding and configuring
the task flow's contextual area model XML file into the Custom Shared Library.
Retail Applications may provide retailers with a list of possible contextual business
events each flow generates. Retailers can configure their contextual reports to react to
these events. Each event will also include information about the event's payload
information (example: the item ID of the item being selected in an Allocation
Maintenance screen).
Contextual Area
Event Name Task Flow Page Model XML Location Generated when… Payload Values
AllocMaintItem AllocMaintFlo AllocMaintPag EAR name -> war The user selects an ■ selectedItem -
SelectedEvent w e name-> jar name -> item on the the item
/oracle/retail/apps/ Allocation selected by
xyz/AllocMaintFlow Maintenance Flow's the user.
ContextualAreaMode main screen. Always
l.xml generated.
■ selectedItemType
- the type of
item. Can be
"regular" or
"pack".
Optional. If
not supplied,
assume item
is a regular
type.
■ The Item Metrics report was built in the retailer's BI reporting tool (e.g. Oracle
BI EE). It was built considering the payload values the contextual business
event will generate.
2. Open the Custom Shared Library workspace in JDeveloper.
3. Open the task flow contextual area model XML file (ex.
ViewController/src/custom/AllocMaintFlowContextualAreaModel.xml).
4. Add an <Item> element within the topmost <Items> element that references the
task flow called ViewContextAwareReportFlow. The
ViewContextAwareReportFlow is a framework for rendering URL based reports
that will be aware of contextual business events emanating from the Retail
Application task flows.
Example:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<NavigationDefinition … >
<Items>
...
...
<Item id="showItemMetric"
type="taskflow"
title="Item Metric">
<url>
/WEB-INF/oracle/retail/apps/framework/contextawarereport/publicui/flow/ViewCont
extAwareReportFlow.xml#ViewContextAwareReportFlow
</url>
</Item>
</Items>
</NavigationDefinition>
<Item id="showCustomerMetric"
type="taskflow"
title="Customer Metric">
<url>
/WEB-INF/oracle/retail/apps/framework/contextawarereport/publicui/flow/ViewCont
extAwareReportFlow.xml#ViewContextAwareReportFlow
</url>
<Parameters>
<Parameter id="reportDescription">Item Metric</Parameter>
<Parameter
id="actionType">AllocMaintItemSelectedEvent</Parameter>
<Parameter id="primaryUrl">
<![CDATA[/faces/oracle/retail/apps/framework/contextawarereport/publicui/page/V
iewContextAwareReportTestPage.jspx?paramItemId=<selectedItemId>¶mItemType=<
selectedItemType:token01>¶mLanguage=<language>]]>
</Parameter>
<Parameter id="token01">regular</Parameter>
</Parameters>
</Item>
</Items>
</NavigationDefinition>
Contextual Area
Event Name Task Flow Page Model XML Location Generated when… Payload Values
AllocMaintItem AllocMaintFlo AllocMaintPag EAR name -> war The user selects an ■ selectedItem -
SelectedEvent w e name-> jar name -> item on the the item
/oracle/retail/apps/ Allocation selected by
xyz/AllocMaintFlow Maintenance Flow's the user.
ContextualAreaMode main screen. Always
l.xml generated.
■ selectedItemType
- the type of
item. Can be
"regular" or
"pack".
Optional. If
not supplied,
assume item
is a regular
type.
■ The Item Metrics report was built in ADF. It was built considering the payload
values the contextual business event will generate.
2. Re-generate the Custom Shared Library WAR file from the Custom Shared Library
workspace. Shutdown the Retail Application and its Custom Shared Library
Registry, redeploy the Custom Shared Library WAR file, and restart the Retail
Application components.
3. Changes Required in Shared Library Registry for Custom DVT Taskflow based
Contextual Report
a. Obtain the task flow contextual area model XML file (ex.
ViewController/src/custom/AllocMaintFlowContextualAreaModel.xml).
b. Add an <Item> element within the topmost <Items> element that references
the task flow called DVTContextAwareReportFlow. The
DVTContextAwareReportFlow is a framework for rendering ADF DVT based
reports that will be aware of contextual business events emanating from the
Retail Application task flows.
Example:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<NavigationDefinition … >
<Items>
...
...
<Item id="showItemMetric"
type="taskflow"
title="Item Metric">
<url>
/WEB-INF/oracle/retail/apps/framework/dvtcontextawarereport/publicui/flow/D
VTContextAwareReportFlow.xml#DVTContextAwareReportFlow
</url>
</Item>
</Items>
</NavigationDefinition>
<Item id="showCustomerMetric"
type="taskflow"
title="Customer Metric">
<url>
/WEB-INF/oracle/retail/apps/framework/dvtcontextawarereport/publicui/flow/D
VTContextAwareReportFlow.xml#DVTContextAwareReportFlow
</url>
<Parameters>
<Parameter
id="taskflowURL">/WEB-INF/oracle/retail/apps/framework/uishell/navigation/c
ontextualarea/flow/ItemMetricFlow.xml#ItemMetricFlow</Parameter>
<Parameter id="parameterName1">itemId</Parameter>
<Parameter id="payloadKeyName1">ItemId</Parameter>
<Parameter
id="parameterValue1">#{payload.valueMap['ItemId']}</Parameter>
<Parameter id="refreshOnDisclosure">#{true}</Parameter>
</Parameters>
</Item>
</Items>
</NavigationDefinition>
The dynamic tasks can be sourced from any data source like OBIEE, BIPublisher,
database tables, Web Services etc. The complete hierarchy of task items including the
folders and actions can be generated dynamically at runtime.
From the user's perspective, there is no difference between the static versus the
dynamic task items. They look and behave the same.
import java.util.List;
import
oracle.retail.apps.framework.uishell.taskmenu.dynamiccontent.dataobject.TaskMenuIt
em;
import
oracle.retail.apps.framework.uishell.util.RetailUiShellHttpSessionListeners;
getChildren(TaskMenuItem This method provides the child task items for a given task
taskMenuItem) menu item.
getDefaultTaskMenuItems() This method provides the task items that will be loaded as
the default content in the Retail Application.
getInContextTaskMenuItem(String This method provides the task item based on a given task
taskMenuItemId) menu id for In-Context launching.
onSessionRemove() This method will be called by the Retail Application when
the user logs out of the application. The method can be
used to do any resource cleanup or can be used to logout
from the external data source.
DynamicContent Type
The Item element of the menu model file supports a type called 'dynamicContent'
along with the type's taskflow and link. When the Retail Application encounters the
type as dynamicContent, it looks for the attribute called dynamicContentHandler. The
dynamicContentHandler attribute will tell the Retail Application the name of the
implementation class which will be used to provide the dynamic task items. The class
should implement the DynamicContentHandler interface.
<Item id="customDynamicMenuFolder" visible="#{true}" title="Custom Dynamic Menu"
type="folder">
<Items>
dynamicContentHandler="oracle.retail.apps.framework.uishell.taskmenu.handler.custo
m.CustomTreeModelDynamicContentHandler"
visible="#{securityContext.authenticated}"/>
</Items>
</Item>
The Item element with the type attribute as dynamicContent can be placed anywhere
in the hierarchy of the static task items in the tasks or reports menu model file. The
dynamic task items will begin exactly from the location where the dynamicContent
Item is defined.
The menu model file can be customized to add an entry for the dynamic content as
shown above. Please refer to the section Adding or Modifying an Item in the Tasks
Menu for more details.
manager3.addDirect(emp);
manager2.addDirect(manager3);
allEmployees.add(manager1);
allEmployees.add(manager2);
allEmployees.add(emp);
public CustomTreeModelDynamicContentHandler() {
super();
this.treeModel = buildTreeModel();
}
/**
* This method returns the children for the current row key in the tree model.
* @param model
* @return
*/
private List<TaskMenuItem> getChildrenForCurrentRowKey() {
List<TaskMenuItem> childTaskMenuItemList = new ArrayList<TaskMenuItem>();
int rowCount = this.treeModel.getRowCount();
for (int i = 0; i < rowCount; i++) {
this.treeModel.setRowIndex(i);
TaskMenuItem childTaskMenuItem = buildTaskMenuItem();
if (childTaskMenuItem != null)
childTaskMenuItemList.add(childTaskMenuItem);
}
return childTaskMenuItemList;
}
When the user clicks on a Folder, the Retail Application will send the current selected
TaskMenuItem object to the getChildern method to load the children of the current
selected task item. When the argument of the getChildren method is a valid
TaskMenuItem object, the getChildren method should return the children of the
TaskMenuItem object.
The Retail Application always lazy loads the dynamic items. This means that the
children of a dynamic Folder will only be loaded when the user clicks on the Folder.
Once the children are loaded they are cached by the Retail Application. In the above
example, even though the Retail Application lazy loads the dynamic items, the
TreeModel pre-loads all the employees.
TaskMenuItem class
The TaskMenuItem class is an abstraction of a dynamic task in the task menu. It is an
equivalent of the 'Item' element in the task menu model file. The TaskMenuItem class
can be used to add dynamic links, taskflows and folders in the task menu. The class
has the following attributes.
private Object path;
private String id;
private String title;
private String url;
private String shortDesc;
private boolean visible = true;
private TaskMenuItemType type = TaskMenuItemType.LINK;
private TaskMenuTarget target;
private List<Parameter> parameters;
private List<Attribute> attributes;
private String accessKey;
private boolean disabled;
The attribute 'path' can be used to store the information of the current node. The 'path'
attribute is of type 'Object' so it can store any object which can be used to identify the
current node in the external hierarchy. In the example above, the path stores the row
key of the TreeModel which is an ArrayList of employeeId's starting from the root to
the current selected node. The path can vary based on the implementation of the
DynamicContentHandler interface. For example, if the DynamicContentHandler
implementation reads the database tables to display a dynamic menu then the path
can be an ArrayList of the primary keys of the database tables, if the
DynamicContentHandler implementation calls an external web service to generate a
dynamic menu then the path can be a String object which identifies a node in the
external system.
The following code snippet shows how a TaskMenuItem can be built in the
DynamicContentHandler implementation class.
/**
* build a task menu item from the custom object.
* @param rowKey
* @param employee
* @return
*/
private TaskMenuItem buildTaskMenuItem() {
if (this.treeModel.isContainer()) {
return buildContainerTaskMenuItem(rowKey, employee);
} else {
return buildLeafTaskMenuItem(rowKey, employee);
}
}
taskMenuItem.setUrl("/WEB-INF/oracle/retail/apps/framework/uishell/navigation/cont
entarea/flow/TestOverrideCloseTabFlow.xml#TestOverrideCloseTabFlow");
The custom dynamic content handler can be added to the classpath of the Retail
Application by deploying it as a shared library. Please refer to the section Adding a
Custom Shared Library for details on how to deploy a shared library.
Report Adapters
The DynamicContentHandler interface can be used to add dynamic task items in the
task menu from a variety of data sources including OBIEE, BIPublisher, database
tables, and custom Web Services etc. The Retail Application provides the default
implementation of the DynamicContentHandler interface for OBIEE and BIPublisher.
These implementations are called Report Adapters. The Report Adapters can display
the user's reports from OBIEE and BIPublisher as tasks in the task list. The user can
click on the tasks to display individual reports and dashboards.
6. Refresh the tree using the button 'Refresh cached tree data'.
7. Once the tree is refreshed, you will notice that 'ADFConnections' becomes a folder
and it has a new connection 'BIConnection'. Click on the BIConnection to open its
properties in the right pane.
8. Enter the values shown in the table below. Once done click Apply on the top right.
dynamicContentHandler="oracle.retail.apps.framework.report.obiee.handler.ObieeDyna
micContentHandler"
visible="#{securityContext.authenticated}"/>
</Items>
</Item>
The reports menu model can be customized to add an entry for the dynamic content as
shown above. Please refer to the section Adding or Modifying an Item in the Reports
Menu for more details.
Enterprise Manager
1. Navigate to Security/Credentials.
dynamicContentHandler="oracle.retail.apps.framework.report.bipublisher.handler.BiP
ublisherDynamicContentHandler"
visible="#{securityContext.authenticated}"/>
</Items>
</Item>
The reports menu model can be customized to add an entry for the dynamic content as
shown above. Please refer to the section Adding or Modifying an Item in the Reports
Menu for more details.
This chapter discusses the various functional aspects of Oracle Retail Allocation. The
chapter provides the following:
■ A functional overview of the system, along with its features and corresponding
functional assumptions.
■ The sources of data used by rules to determine gross need.
■ A description of the three possible methods of closing allocations.
Note: Oracle Retail Allocation does not offer logic to support the
following:
■ Fashion items set up as grandparent > parent > children (items)
■ Buyer packs where the packs are not inventoried and only the
components are inventoried
Item Sources
Item sources represent the physical inventory that Oracle Retail Allocation can
allocate. The system allows the retailer to allocate based upon the following:
■ Advanced shipping notices (ASN) or Advanced Shipment Notifications (ASN) are
batch communications that inform a retailer when to expect a certain quantity of
order inventory. ASN quantities are received closer to the time of arrival at the
distribution center. Allocations based upon ASN quantities allow retailers to
account for purchase order shortages or overages as a part of their Oracle Retail
Allocation process.
■ Transfers
■ Bills of lading (BOL)
■ Purchase orders
■ Warehouse-sourced inventory
The premise of Oracle Retail Allocation is to establish need at the item/location level
via policies and policy modifiers. The following eight different rules are available:
■ Sales history
■ Forecast
■ Plan
■ Receipt plan
■ History and plan
■ Plan re-project
■ Corporate
■ Manual
Although these rules are detailed, occasionally the user needs to base allocations upon
like items. The User Merchandise Level Selection screen allows retailers to select any
combination of like data on which to base allocations. The user may choose a
merchandise hierarchy level, a combination of merchandise hierarchy levels,
individual items or merchandise hierarchy levels combined with individual items.
Each combination of data may be weighted. For example, an allocation may require
the input of Subclass Z’s sales history to be weighted at 50% and item A’s sales history
to be weighted at 75%. The values selected by the user are applied to each item on the
allocation.
Holdback Quantity
The holdback quantity is the quantity that the user does not want to allocate. The
holdback quantity is subtracted from the available quantity of each item to calculate
the available percent to total quantity. The available percent of the total quantity is
applied to the gross need to determine the final allocated quantity. The following
example illustrates applying the holdback quantity to a sellable staple simple pack in
spread demand mode:
For sellable packs, the transaction level is the sellable unit, so sales history is recorded
at the pack level as shown in the Dept Sales column of the table below. For sellable
packs, the store owns the product at component level. When a pack is sold, the
components are deducted from the stock on hand.
On hand for Sellable Packs are not recorded at the pack level through RMS, only the
pack components have on hand. Thus, on hand for sellable packs = 0. Since the final
quantity is pack quantity, the calculations do not go through any pack optimization
process in the calculation engine.
Functional Assumptions
This section covers assumptions made during ASN-based allocations, item-location
combination, calculation multiple, what-if allocations, weight and date selection, and
proportional allocations.
Item-location Assumptions
The ITEM_LOC table is where item location relationships are held and maintained
from the Oracle Retail Merchandising System.
What if
■ Front-end PO location selection only has an effect on the PO to location when the
user is creating a PO with a PO type of warehouse or cross dock, or updating a PO
with a PO type of warehouse. For all other types of PO actions, the value has no
relevance.
■ The major assumption associated with this functional area is that basing the
allocation quantity on future available on hand amounts assumes that the
inventory that is expected within the warehouse arrives and that the business user
creates a separate allocation to move the inventory to the stores.
■ 'What if' allocations utilize the primary supplier's primary origin countries' inner,
case and pallet size only. If a retailer wants to use the window to create a PO to a
supplier that does not have the same multiple as the primary supplier, the
functional recommendation is to calculate the allocation and create the order using
an 'Each' multiple. The multiple can then be adjusted within the merchandising
system.
Note: If the "Need is" set to proportional, and the threshold value
has been mentioned, allocation happens only if the store's net need is
greater than the threshold value. If the store's net need is less than the
threshold value the store is not allocated any quantity. After these
validations occur, the allocation passes through the calc engine and
the allocated quantity may be greater than the threshold value.
– The current date is at least one day after the scheduled end date.
– All child allocations of the parent must be closed or deleted.
– If there is at least one child allocation that is not closed or deleted or if the end
date is not met, the user cannot delete the parent allocation. The following
error message is displayed "Allocation cannot be deleted until after the
scheduled End Date and all its Child Allocation(s) are 'Deleted' and/or
'Closed'." In order to delete this parent, the user must go into the parent
allocation to change the end date and also change the status of the child or
children allocation(s) to 'deleted.'
■ It is recommended to have no more than 10 items in a scheduled allocation.
■ If the Parent Allocation contains fashion items, then all the fashion items should
have Size Profile information available for all the stores if the 'Enable Size Profile'
= True in the Properties File on the System Properties tab of the system options
screen.
■ If at least one item has the warehouse available quantity greater than the
minimum available quantity specified on the “Item Review” screen of the
application, the child allocation is created with the status as 'Submitted'. This
status overrides the status specified by the user. If all items do not have the
warehouse available quantity greater than the minimum available quantity, then
no child allocation is created for that parent on that day. The status of the parent
allocation will be set to 'Schedule Error'.
■ For a warehouse to warehouse ranging checks for the Enforce Supply Chain
checkbox is in the checked state. The destination warehouse has s source method
set to Warehouse and the source warehouse of the allocation set of items being
allocated in order to receive goods from the warehouse location. If that is not set,
then the default warehouse column will be checked next. If there is no source
warehouse defaulted for the destination warehouse in either of these places, the
warehouse would be listed at the item/location level in the Item Location
Exclusions screen with the Reason Code set to Default Warehouse Missing.
Allocation Status
Significant functionality is attached to the status numbers in the system. The tables
below reflect the status column on the ALC_ALLOC table.
Note: For a description of how the following rules use the data to
determine gross need, see the Oracle Retail Allocation User Guide.
For a more detailed description of this table, see the section, "Receipt Plan Data
Sources", in the Functional and Technical Integration chapter.
For this rule, the historical and future plan data is gathered from the following table in
Oracle Retail Allocation:
ALC_PLAN
The history portion of data is gathered from the following tables:
Corporate Rules
For this rule, data is gathered from the selected column of the following tables in
Oracle Retail Allocation:
■ ALC_CORPORATE_RULE_HEAD
■ ALC_CORPORATE_RULE_DETAIL
The column selection is based on which corporate rule is picked by the user.
Quantity Limits
Quantity Limits allows the user to limit the allocation. This feature allows the user to
set parameters that affect different stages of the allocation for the product-stores or
product-warehouses where they are entered. The values for each applicable quantity
limits selection are held on the applicable column of the ALC_QUANTITY_LIMITS
table.
Using Quantity Limits, the value that gets allocated can be altered according to the
user’s preference. There are six constraints for quantity limits: Min, Max, Threshold,
Week Of Supply (WOS), Trend, and Min Need.
For example, if the user wants to allocate at least 100 units of merchandise irrespective
of the need, a minimum constraint of 100 can be applied. In this case, 100 units get
allocated (if there is enough inventory to support it). Though the quantity limit gets
accounted at the lowest level entity (that is, item/store combination), the retailer can
also supply the quantity limits values at a higher level such as group of stores or
warehouses.
Quantity Limits should work in the same manner for staple items, sellable and
non-sellable staple packs since all these types of items/packs inventory are maintained
at the same unit (item or pack) that gets allocated. For fashion items, though the
inventory is maintained at the SKU level, allocation occurs for the parent/diff.
However, you may choose to de-aggregate the parent/diff within allocation and
distribute only those sizes/components which are available to allocate. Two more
quantity limits - "Minimum Pack" and "Maximum Pack" can be applied in an
allocation using the 'Pack Distribution' mode. These can also be applied in the 'Simple'
mode but in specific cases where the allocation contains only pack items that have
been selected to be allocated as a single entity.
Note: Although quantity limits also affect net need, they are not
addressed in the calculation illustrated by this section.
To determine the gross need, Oracle Retail Allocation gathers the information based
upon one of the rules selected by the retailer through the front end. Oracle Retail
Allocation uses the following equation to determine the on-hand at the location that is
subtracted from the gross need result.
For a store location,
On Hand = (Stock-on-hand at the store+ Stock in transit+ Stock on order [stock that is
expected by the on order commit date]+ Transfers of stock expected + Stock on
allocation) - (Outgoing transfers + Return to vendor stock+ Unavailable stock+
Transfers on reserve) = (SOH +In Transit + On Order + TSF Expected + On Alloc) -
(TSF Out + RTV + Unavailable + TSF Reserved)
For a warehouse location, On Hand =
(Stock-on-hand at the warehouse + Stock in transit + Stock on order [stock that is
expected by the on order commit date] + Transfers of stock expected + Stock on
allocation) - (Outgoing transfers + Return to vendor stock+ Unavailable stock +
Transfers on reserve + Outbound allocations) = (SOH + In Transit + On Order + TSF
Expected + On Alloc) - (TSF Out + RTV + Unavailable + TSF Reserved + Alloc Out).
For determining the on hand quantity, we need to consider all these different
inventory buckets, some of which are present in Allocation while the rest are derived
from RMS forms/tables/views.
Allocation side
■ SOH at the store
■ Stock in transit
■ Stock on order
■ Stock On Alloc
■ Back orders
RMS side
■ TSF Expected
■ TSF Reserved
■ TSF Out
■ RTV
■ Unavailable
■ Back orders
■ Alloc Out (only for warehouses)
See the Selecting Policies section in the Creating Standard Allocations chapter of the
Oracle Retail Allocations User Guide for additional information.
Closing Allocations
This section addresses the three possible methods of closing allocations. Note that the
closure of the allocation in Oracle Retail Allocation entails 'all or nothing' processing
logic.
■ Warehouse and Store initiated Closures: The majority of RMS allocation records
should be closed as part of the retailer's warehouse management system and the
retailer's store inventory management system integration with RMS.
■ For purchase orders closed via batch functionality: RMS allocation records
attached to these closed purchase orders are closed, if the allocation meets RMS
validations. RMS cancels the associated quantities on the RMS allocation records
and closes the RMS allocation records. All the quantities remaining for related
RMS allocation records are cancelled, and the RMS allocation records are closed if
no quantities are in transit. If the RMS allocation records cannot be closed, there is
no further action.
■ For purchase orders closed manually online: If RMS allocation records exist when
the user attempts to either cancel an item or cancel all items, a message offers the
user an option to cancel the associated RMS allocation records or not. If the user
selects to close the allocations, all the quantities remaining for related RMS
allocation records are cancelled, and the RMS allocation records are closed if no
quantities are in transit. If the user selects to not close the allocations, there is no
further action.
This chapter discusses the integration among Oracle Retail Allocation and other
systems and it provides the following:
■ An integration interface allocation-related dataflow across the enterprise.
■ The tables and triggers that are in external systems or related to external systems
that Oracle Retail Allocation uses (for example, RMS).
■ A functional description of RMS dependencies and assumptions that affect Oracle
Retail Allocation.
■ Information necessary to integrate Oracle Retail Allocation and Oracle Retail
Workspace.
Note: Oracle Retail allocation pulls the data from the Merchandising
tables in RMS using the JDBC connection.
The diagram above shows the overall direction of the dataflow among the products.
The accompanying explanations are written from a system-to-system perspective,
illustrating the movement of data.
From Oracle Retail Demand Forecasting System to Oracle Retail Allocation via
Merchandising System
The history data is subjected to processing that yields data that is sent back to the
merchandising system. From there, Oracle Retail Allocation pulls the following data:
■ Forecasting data: Oracle Retail Allocation accesses forecasting data that originates
in the Oracle Retail Demand Forecasting (RDF) system. RDF is Oracle Retail's
statistical and causal forecasting solution. It uses state-of-the-art modeling
techniques to produce high quality forecasts with minimal human intervention.
RDF is an application that resides on the Oracle Retail Predictive Application
Server (RPAS). Oracle Retail Allocation uses forecasting data as a basis for
calculating gross need and can access the following five levels of forecasting data:
department, class, subclass, style-color and item.
■ Store grade group data: Oracle Retail Allocation accesses store grade group data
that originates in Grade. Grade is Oracle Retail's application that groups store
locations together intelligently, based on similarities in performance, customer
type, geography, or some other factor that allows the stores within each group to
be treated as one unit. Grade is an application that is part of the Oracle Retail
Predictive Application Server (RPAS). Internally, Oracle Retail Allocation also
updates its store grade groups data groups based on the most current definitions.
This update plays an important role when many months pass between initial and
final allocations.
Plan Data
Oracle Retail Allocation accesses plan data that originates in the planning application
(including Oracle Retail's planning applications that reside on the RPAS server). The
RPAS products are applications that provide functionality for developing, reconciling,
and approving plans. When interfacing with Oracle Retail planning applications,
Oracle Retail Allocation accesses department, class, subclass, parent/diff, or SKU plan
data at the store-week level. Oracle Retail Allocation can be used as a tool to verify the
final product-store plans and to initiate a PO to execute the plan. In other words,
Oracle Retail Allocation can take the retailer's plan or forecast and execute it. Both the
Oracle Retail and the legacy planning applications populate a planning table, ALC_
PLAN, which resides within Oracle Retail Allocation. See the section, "Planning Table
in Oracle Retail Allocation," later in this chapter.
Note:
■ Oracle Retail Allocation interfaces with Oracle Retail Assortment
Planning by way of an output file from Assortment Planning
through Oracle Retail Extract, Transform, and Load (RETL) to
access only SKU, style-color data at the store-week level. For more
information, see the chapter, "Oracle Retail Extract, Transform,
and Load (RETL) Batch Processing".
■ RMS is the system of record for Oracle Retail Allocation. Hence
Allocation inherits the merchandise hierarchy from RMS. RMS
and Assortment Planning (AP) have different merchandise
hierarchies. Users of RMS/AP/Allocation who wish to export
information from AP to Allocation must ensure that the AP
merchandise hierarchy is compatible with that of
RMS/Allocation.
From Oracle Retail Warehouse Management System to Oracle Retail Allocation via
Oracle Retail Merchandising System
■ Appointment data
Appointment data is one source that identifies item(s) to be allocated.
■ Warehouse inventory position data
■ ASN, BOL, and Transfer information
Note for RMS users only: Item, purchase order, supplier, sales and
other data are accessed directly from the RMS tables, with no need to
interface data via batch modules.
■ Item data Oracle Retail Allocation can allocate at the item, style-color, pack, or
item list level. Styles, items, and packs can be mixed on a single allocation.
■ PO data
■ Hierarchy data
■ Sales history data (for items, user-defined attributes (UDA), warehouses, stores,
and so on)
■ Foundation data (supplier data, shipping tables, and so on)
■ Worksheet status POs that contain product, supplier and quantity information (the
only remaining actions to be taken in the merchandising system are to approve the
PO and, if desired, to truck scale the PO.) These worksheet status purchase orders
may be created or updated from within the Oracle Retail Allocation front end.
Note for RMS users only: Oracle Retail Allocation utilizes the
existing integration between RMS and RWMS. This interface currently
passes purchase order, item, location, and allocation information from
RMS to RWMS.
Based upon the approved allocation information from Oracle Retail Allocation, the
merchandising system sends the following information to the distribution
management system:
■ Approved allocation data represents the store quantity instructions for allocating a
specific quantity of stock at the store level.
Oracle Retail Merchandising System Tables (for Retailers with Oracle Retail
Merchandising System only) used by Oracle Retail Allocation
The following table illustrates the tables from which Oracle Retail Allocation gets its
data from RMS.
Fashion Item
RMS allows for the potential of three item levels. For a customer who allocates based
on the concept of parent/diff, the style can be translated to RMS item setup as being
the level one item in the item family. The SKU can be translated to RMS item setup as
being the transaction level item (this could be level one, two or three). There is no
requirement within RMS that forces a 'fashion' item to be multi-level.
An item is viewed as a fashion item only if the Item Aggregate Indicator in the
Attributes section of the Item Master Window is selected for the style (level one item)
in the item family.
Once the item aggregate indicator has been selected, the user needs to indicate which
differentiator should be curved by allocations. Each item may contain up to four
differentiators.
The Aggregate check box is enabled when more than one differentiator is being
created for an item where the Item Aggregate Indicator has been selected. The
differentiator that the customer wants to be curved by Oracle Retail Allocation must be
the only differentiator that is not indicated on the Item Master Window.
Below is an example of a fashion item, its indicators within RMS, and what is visible.
Item 100011006 has three differentiators associated.
■ Color/pattern/width
The retailer wants to have Oracle Retail Allocation apply the curve to Color. Therefore,
it sees information within the Oracle Retail Allocation screens based upon the pattern
and width differentiators.
All of the transaction level children have their item and differentiator aggregate
indicators set to 'N'. These values are only maintained for the level one item. All other
items in the system (including packs) have those indicators defaulted to 'N'.
In this scenario, if the retailer is creating an allocation for the parent item (100011006),
it has visibility to four different levels of the 'style'.
■ 100011006 - 100% Cotton Sheets Plaid:N
■ 100011006 - 100% Cotton Sheets Plaid:S
■ 100011006 - 100% Cotton Sheets Leopard:N
■ 100011006 - 100% Cotton Sheets Leopard:S
Staple Item
A staple item is every item in the system where the level one item in the item family
does not have the Item Aggregate Indicator selected. In this scenario, the Oracle Retail
Allocation retailer has visibility to the transaction level item only. There is no roll up of
item information. The retailer also has visibility to the non-sellable packs that contain
the component staple item and is able to include or exclude those packs from the
allocation.
Pack Item
There are multiple types of packs that may be set up within RMS. The key criteria for
Oracle Retail Allocation is whether the pack is sellable or non-sellable, whether the
pack contains multiple component items and whether or not those multiple
components items are of one type (for example, fashion as opposed to staple).
When creating your packs, consider the following pack assumptions made by Oracle
Retail Allocation:
■ Oracle Retail Allocation does not have the ability to allocate packs that contain
fashion and staple items.
■ Style/color:
The transaction level (item) is allocated as visible in the View Assortment window.
However, the allocation is created at the item level one/differentiator (style/color)
level. The item level one/differentiator (style/color) level is where retailers work
with the allocation.
■ Simple sellable staple pack and complex sellable staple pack:
These types of packs are included in an allocation when they are individually
allocated.
■ Simple non-sellable staple pack and complex non-sellable staple pack:
These types of packs are included in an allocation when the component of the
pack item is allocated or when the non-sellable pack itself is allocated.
■ Simple sellable fashion packs and complex sellable fashion packs:
These types of packs are included in an allocation when they are individually
allocated. They are not being automatically included in any fashion items
allocation.
■ Simple non-sellable fashion packs and single color complex non-sellable
fashion packs:
These packs can be allocated as part of a style/color or they may also be allocated
individually (components must stay within the pack). They could also be allocated
as part of a Fashion Group allocation.
The module works in conjunction with the Oracle Retail Extract Transform and Load
(RETL) framework. This architecture optimizes a high performance data processing
tool that allows database batch processes to take advantage of parallel processing
capabilities.
The RETL framework runs and parses through the valid operators composed in XML
scripts.
This chapter provides an overview of Oracle Retail Allocation RETL processing and
defines the export file from Curve/Plan to Oracle Retail Allocation that is used when
exporting Curve/Financial Plan values. For more information on RETL, see the
product’s Programmer's Guide.
Note: The RETL loads into Allocation are point to point integration
between Oracle Retail product, and are not designed to support
generic uploads from other systems.
Functional Overview
The extracts from RETL may contain up to four levels of plan/profile. They consist of
the department level, class level, subclass level and item level. All of these levels are
contained in a single normalized file. Each record in the Curve file has a dedicated
'space' and distinct position for department, class, subclass, item, store, diff1, diff2,
diff3, diff4 and size profile quantity values and each record in the Plan file has a
dedicated 'space' and distinct position for department, class, subclass, item, store,
diff1, diff2, diff3, diff4, EOW date and plan quantity values. It is crucial that the
records are mapped using the correct positions and space/padding rules for each data
value.
■ Regardless of the level of financial plan/profile, each record must include a store,
diff value in one of the four diff value fields and a quantity value (including an
EOW date for Plan only).
Oracle Retail Extract, Transform, and Load (RETL) Batch Processing 10-1
Oracle Retail Extract, Transform, and Load Batch Processing Architecture
Processing Stage 1
Stage 1 involves importing plan/profile data and looking up required information in
the RMS ITEM_MASTER table (item-level plans/profiles only). The resulting output
from this stage is a temporary table that contains any item-level and
department/class/subclass-level plans/profiles.
The detailed flow is as follows:
Error Handling
Any item records that do not have a parent and grandparent are flagged as warnings.
Any items in the incoming data file that do not match an item in the ITEM_MASTER
table are flagged as errors.
Processing Stage 2
Stage 2 involves inserting and updating the plan or profile records into the final
destination ALC_PLAN, ALC_RECEIPT_PLAN, or ALC_SIZE_PROFILE table
respectively.
The detailed processing is as follows:
1. Update quantity when matched department, class, subclass, style, store, size1,
size2, size3, size4.
2. Otherwise, insert record.
Configuration
This section covers configuration.
Environment Variables
See the RETL Programmer's Guide for RETL environment variables that must be set up
for your version of RETL. You need to set ALCHOME to your base directory for Oracle
Retail Allocation RETL. This is the top level directory that you selected during the
installation process (see Oracle Retail Allocation Installation Guide) in your .kshrc, you
should add a line such as the following:
export ALCHOME=<base directory path for ALLOCATION RETL>
Oracle Retail Extract, Transform, and Load (RETL) Batch Processing 10-3
Oracle Retail Extract, Transform, and Load Batch Processing Architecture
alc_config.env Settings
On the Oracle Retail Allocation side, make sure to review the environmental
parameters in the alc_config.env file before executing the batch module. Depending
upon your local settings, the variables may need to be changed.
Schema File
RETL uses a schema file to specify the format of an incoming or outgoing dataset. The
schema file defines each column's data type and format, which is then used within
RETL to format/handle the data. Schema file names are hard-coded within each
module because they do not change on a day-to-day basis. All schema files end with
'.schema' and are placed in the 'rfx/schema' directory. For more information about
schema files, see the latest RETL Programmer's Guide.
The input data schema file for the Oracle Retail Allocation module is named as alcl_
plan.schema for Plan and as alcl_size_profile.schema for profile and is shown later in
this chapter.
The transform batches alct_plan and alct_size_profile do not take any input
parameters. They execute the flat files in the path $ALC_HOME/data alcl_size_
profile.ksh profile_02.dat 2. Running only alct_size_profile.ksh at the prompt
executes the transform scripts.
Program Features
The extraction programs are written in the RETL framework and include the following
features:
■ Business virtual date
■ Program return code
■ Program status control files
■ Restart and recovery
■ Message logging
■ Program error file
■ Reject files
Oracle Retail Extract, Transform, and Load (RETL) Batch Processing 10-5
Oracle Retail Extract, Transform, and Load Batch Processing Architecture
If the module fails at any point, the program status control file is not removed, and the
user is responsible for removing the control file before re-running the module.
Oracle Retail Allocation Oracle Retail Extract, Transform, and Load Restart and
Recovery
The Oracle Retail Allocation RETL module imports data from a flat file, performs
transformations if necessary and then loads the data into the applicable Oracle Retail
Allocation table.
This module uses a single RETL flow and does not require the use of restart and
recovery. If the extraction process fails for any reason, the problem can be fixed, and
the entire process can be run from the beginning without the loss of data. For a module
that takes a text file as its input, the following two choices are available that enable the
module to be re-run from the beginning:
1. Re-run the module with the entire input file.
2. Re-run the module with only the records that were not processed successfully the
first time.
Message Logging
Message logs are written while the module is running in a format described in this
section.
For example, the location and the name of the log file for the business virtual date of
January 5, 2001 would be the following:
$ALCHOME/log/20010105.log
Format
As the following examples illustrate, every message written to a log file has the name
of the program, a timestamp, and either an informational or error message:
alct_size_profile 16:06:30: Program started.Number of input files processed = 1.
Number of output files produced = 1
alcl_size_profile 13:20:01: Program started for thread 1…
alcl_size_profile 13:20:05: Analyzing temp table rmsint1201.alcl_size_profile_
temp_1
alcl_size_profile 13:20:13: Merging into alc_size_profile
alcl_size_profile 13:20:27: Program completed successfully for thread 1.
alct_size_profile 16:06:30: Program completed without errors
The error file for the transform batch contains the name of the files processed with exit
status of each file. If any of the file has bad record like width of some field exceeding
the maximum allowed, this error file shows the bad records also.
The naming convention for the error file of the transform batch is
Program name_err.business virtual date for which the scripts were run.
For example,
alct_size_profile_err.20061005
Oracle Retail Extract, Transform, and Load (RETL) Batch Processing 10-7
Oracle Retail Extract, Transform, and Load Batch Processing Architecture
module tries to process all data and then indicates that records were rejected. All data
problems are thus identified in one pass and corrected. The module can then be re-run
to successful completion. If a module does reject records, the reject file is not removed.
The user is responsible for removing the reject file before re-running the module.
Record number 2
1414 1000000001 _hh1dif_jh2dif_kh3dif_lh4dif_
mh5dif 000000006000
alct_size_profile.ksh: 16:37:45 Transform completed. File: d1dept.01
d1dept.01 processing completed. Exit status: 2
alct_size_profile.ksh: 16:37:45 Data transform (awk) starting. Input file:
/home/pachaia/RPAS12_Agal/data/d1itpt.01
alct_size_profile.ksh: 16:37:45 Transform completed. File: d1itpt.01
d1itpt.01 processing completed. Exit status: 0
alct_size_profile completed with 1 ERRORS: Thu Oct 5 16:37:45 CDT 2006
Run alcl_size_profile.ksh:
1. Change directory to $ALCHOME/rfx/src.
Oracle Retail Extract, Transform, and Load (RETL) Batch Processing 10-9
Oracle Retail Extract, Transform, and Load Batch Processing Architecture
By reviewing this section and the section, 'API flat file specification', the retailer should
be able to track down to the table and column level, all the extraction data that flows
into Oracle Retail Allocation.
Oracle Retail Extract, Transform, and Load (RETL) Batch Processing 10-11
Oracle Retail Extract, Transform, and Load Batch Processing Architecture
File Layout
■ The file name should start with p1 followed by four characters for product level
and the domain number. The four product level acceptable are:
– - itpt - for item
– - scls - for subclass
– - clss - for class
Oracle Retail Extract, Transform, and Load (RETL) Batch Processing 10-13
Oracle Retail Extract, Transform, and Load Batch Processing Architecture
■ The file name should start with p1 followed by four characters for product level
and the domain number. The four product level acceptable are:
– - itpt - for item
– - scls - for subclass
Oracle Retail Extract, Transform, and Load (RETL) Batch Processing 10-15
Oracle Retail Extract, Transform, and Load Batch Processing Architecture
■ The file name should start with letter d, X is diff number being sent followed by
four characters for product level and the domain number. The four product level
acceptable are:
– - itpt - for item
– - scls - for subclass
– - clss - for class
– - dept - for department
■ The domain ID should be numeric.
■ The Product ID, Location ID and Diff IDs fields are left justified and blank filled.
■ The number of separate Diffs in the Diff IDs field is in the range: 0-4. The first
character of each Diff is an "_" (underscore) and the second character is the Diff
Type. No underscore characters is present in the Diff ID field other than the
character that immediately precedes each separate Diff Type within the field. Each
Diff in the Diff IDs field is lesser than 12 characters in length, including the leading
underscore character and the Diff Type.
■ The Quantity field is a right-justified, zero-padded numeric and the decimal point
is omitted, but the quantity has a 4-digit decimal fraction part (e.g. 13.75 would
appear in the record as 000000137500).
■ Total length of each record is 105.
■ When uploading data the system updates the quantity if the record exists for the
hierarchy/location/Diff_id/EOW data combination or it appends the record into
the tables.
nullable="true" nullvalue=""/>
<!-- start pos 102 --> <FIELD name="QTY" len="14" datatype="dfloat"
nullable="false"/>
<!-- end pos 114 -->
</RECORD>
<!-- start pos 1 --> <FIELD name="DEPT" len="4" datatype="string" nullable="true"
nullvalue=""/>
Oracle Retail Extract, Transform, and Load (RETL) Batch Processing 10-17
Oracle Retail Extract, Transform, and Load Batch Processing Architecture
nullable="true" nullvalue=""/>
<!-- start pos 38 --> <FIELD name="STORE" len="20" datatype="string"
nullable="false"/>
<!-- start pos 58 --> <FIELD name="DIFF_TYPE_1" len="1" datatype="string"
nullable="true" nullvalue=""/>
<!-- start pos 59 --> <FIELD name="DIFF1_ID" len="10" datatype="string"
nullable="true" nullvalue=""/>
<!-- start pos 69 --> <FIELD name="DIFF_TYPE_2" len="1" datatype="string"
nullable="true" nullvalue=""/>
<!-- start pos 70 --> <FIELD name="DIFF2_ID" len="10" datatype="string"
nullable="true" nullvalue=""/>
<!-- start pos 80 --> <FIELD name="DIFF_TYPE_3" len="1" datatype="string"
nullable="true" nullvalue=""/>
<!-- start pos 81 --> <FIELD name="DIFF3_ID" len="10" datatype="string"
nullable="true" nullvalue=""/>
<!-- start pos 91 --> <FIELD name="DIFF_TYPE_4" len="1" datatype="string"
nullable="true" nullvalue=""/>
<!-- start pos 92 --> <FIELD name="DIFF4_ID" len="10" datatype="string"
nullable="true" nullvalue=""/>
<!-- start pos 102 --> <FIELD name="EOW_DATE" len="8" datatype="date"
nullable="false"/>
<!-- start pos 110 --> <FIELD name="QTY" len="14" datatype="dfloat"
nullable="false"/>
<!-- end pos 122 -->
</RECORD>
<!-- start pos 1 --> <FIELD name="DEPT" len="4" datatype="string" nullable="true"
nullvalue=""/>
Oracle Retail Extract, Transform, and Load for Receipt and Plan
RETL scripts are required to support receipt plan logic (what the store is expected to
own) at the store/week level. This rule provides fashion retailers the option to choose
different plans coming from different source data feeds.
Large size fashion retailers can use Assortment Planning data as the pre-season source
to determine store or warehouse needs for seasonal items. The data file sent from the
Assortment Planning system is used to generate the gross need in the Allocation
system in order to create pre-allocations.
Once the selling season begins, retailers have the option to switch to a different rule
such as Plan, Forecast or Historical data to generate store demand.
Script Names
■ alct_receipt_plan.ksh
■ alct_receipl_plan.ksh
Table Name
■ alc_receipt_plan
Oracle Retail Extract, Transform, and Load for Size Profile Optimization Data
Allocation users have the option to select a specified store size profile to be used for
the Allocation. Using the RPAS Store Size Profile Optimization application, users have
the capability to create seasonal store size profiles and multiple store size profiles
created in SPO (called GIDs). These are displayed to the Allocation user as options to
be used.
■ Depending on what is being allocated and expected arrival date in the stores, the
Allocation user has the option to view and select the desired store size profile date
to be used.
■ All item and locations use the same store size profile data per allocation. There
cannot be unique buy item/location records within a single allocation.
■ SPO assigns a numeric generation ID number (GID) to specifically created store
size profile data. This ID, along with a user defined name should be displayed in
the Allocation user interface.
■ Only those GIDs populated from SPO to Allocation are displayed in the user
interface.
■ The retailer is responsible for updating the Allocation table on a frequent basis or
as needed.
SPO GID text files (spo_gid_label.txt) are passed along with the batch of Size Profile
Hierarchy dat file. The text file is used as the GID for that batch of dat file. Running
RETL for SPO imports data to three tables after extraction.
The RETL for SPO data file format is as follows:
<Beginning of file>
<GID>
<GID_DESC>
<End of File>
The following are examples:
GID1
Winter 2014
Oracle Retail Extract, Transform, and Load (RETL) Batch Processing 10-19
Oracle Retail Extract, Transform, and Load Batch Processing Architecture
This chapter provides an overview of the batch processes of Oracle Retail Allocation. It
also provides information about the functions of the batch processes, the Java
packages associated with the batches, and how to execute the Java-based batches.
2. Navigate to the batch folder. In the batch folder, verify that the
AlcDailyCleanUp.ksh file is present.
3. Run the AlcDailyCleanUp.ksh batch using the following command:
ksh AlcDailyCleanUp.ksh <systemadministratoralias>
Usage
The following command runs the AllocScheduleBatch job:
AllocScheduleBatch.ksh userAlias
Detail
This script is present under the $ALLOCHOME/batch folder.
Log File
log4j.xml is present under $ALLOCHOME/properties folder. This file is edited to
specify desired log file location and name. To perform this action, change the value
against param with name="file" in log4j.xml. Make sure that folder is already present
on the file system and the batch user has write permission. Default value is set to
../logs/alloc133.log.
Properties File
The default batch properties file is present under
$ALLOCHOME/properties/oracle/retail/alloc/batch.properties.
The properties below are defined. The default value may be edited.
■ initialThreadLimit initial number of threads in the pool that are available to create
child allocations. The default value is 5.
■ maxThreadLimit maximum number of threads that can be allowed in the pool.
The default value is 10.
■ queueLimit size of queue of pending tasks to create child. The default value is 1.
■ initialContextFactory specifies the JNDI context factory class (this should not be
changed).
■ providerUrl url of the server module (e.g t3://<weblogic host>:<port> ). This
parameter has to be configured by the retailer to point to the WebLogic Server on
which the asynchronous application instance is deployed.
■ csm.wallet.partition.name is the partition name in the wallet that stores the
credentials to authenticate batch user on WebLogic. For example, alloc13
■ csm.wallet.path is the path of the wallet file that stores WebLogic credentials.
Configuration
$ALLOCHOME/batch/AllocBatch.ksh should be edited by the retailer to specify
appropriate value of following environment variables
■ ALLOCHOME: directory where batch client in installed
■ JAVA_HOME: directory where JDK is installed
Usage
The following command runs the AlcDailyCleanUp job:
AlcDailyCleanUp.ksh <BatchUserAlias>
Detail
This script is present under the $ALLOCHOME/batch folder.
The temporary tables which are impacted by the AlcDailyCleanUp process are as
follows:
Allocation session tables:
■ ALC_SESSION_SIZE_PROFILE_RATIO
■ ALC_SESSION_SIZE_PROFILE
■ ALC_SESSION_QUANTITY_LIMITS
■ ALC_SESSION_ITEM_LOC_EXCL
■ ALC_SESSION_ITEM_LOC
■ ALC_SESSION_GID_PROFILE_LIST
■ ALC_SESSION_GID_PROFILE
Worksheet session tables:
■ ALC_WORK_SESSION_ITEM_LOC
■ ALC_WORK_SESSION_ITEM_ALL
■ ALC_WORK_SESSION_ITEM
Temporary tables:
■ ALC_LOAD_TEMP
alc_calc_destination_temp
alc_calc_need_temp
alc_calc_rloh_temp
alc_calc_qty_limits_temp
alc_calc_rloh_item_temp
alc_merch_hier_rloh_temp
alc_calc_source_temp
alc_calc_need_dates_temp
Allocation approval tables:
■ ALC_SYNC_HEADER_TEMP
■ ALC_SYNC_DETAIL_TEMP
Usage
The following command runs the job:
AlcPurgeAlloc.ksh <systemadministratoralias> PURGE_ALLOC
Details:
Allocation deletions are driven by the system option ALLOCATION_RETENTION_
DAYS. Allocations exceeding the retention parameter become purge candidates as
follows:
■ Scheduled Allocations Parents are deleted when their scheduled end date is
greater than the allocation retention days parameter.
■ Allocations that are linked to RMS allocations in the ALC_XREF table are deleted
when the RMS allocations they are linked to no longer exist in RMS.
■ Allocations that are not linked to RMS allocations in the ALC_XREF table are
deleted when they have not been modified (ALC_ALLOC.LAST_UPDATE_DATE)
for ALC_SYSTEM_OPTIONS.TP_ALLOC_RETENTION_DAYS days.
■ Allocations in Deleted status - user deleted through the UI.
Worksheets not associated to an allocation (WK worksheets) are deleted based on this
setting. Worksheets associated to an allocation (WD worksheets) are deleted when the
allocation they are related to is deleted (they follow Allocation deletion). Worksheet
deletion is driven by a system option, WORKSHEET_RETENTION_DAYS. Worksheets
purge criteria is as follows:
Worksheets not tied to an allocation (type = WK) are deleted when they are not be
modified (ALC_WORK_HEADER.UPDATED_DATE) for TP_WORKSHEET_
RETENTION_DAYS days.
Usage
Six separate executables are called by one java batch process. The executables and the
commands to run them are as follows:
■ AlcSnapshotOnOrder.ksh
./AlcSnapshotOnOrder.ksh <BatchUserAlias>
■ AlcSnapshotCrosslink.ksh
./AlcSnapshotCrosslink.ksh <BatchUserAlias>
■ AlcSnapshotAllocIn.ksh
./AlcSnapshotAllocIn.ksh <BatchUserAlias>
■ AlcSnapshotSOH.ksh
./AlcSnapshotSOH.ksh <BatchUserAlias>
■ AlcSnapshotAllocOut.ksh
./AlcSnapshotAllocOut.ksh <BatchUserAlias>
■ AlcSnapshotCustomerOrder.ksh
./AlcSnapshotCustomerOrder.ksh <BatchUserAlias>
Detail
Retrieving inventory requires accessing four very large RMS tables:
■ ITEM_LOC_SOH - current inventory and components of future inventory
■ ORDLOC - on order component of future inventory
■ ALLOC_DETAIL - allocation in component of future inventory
■ TSFDETAIL - crosslink transfer component of future inventory
To improve RLOH performance, four new subclass level aggregated tables are created
for use by Allocation
Package Details
The package that needs to be called is ALC_HIER_LVL_INV_SNAPSHOT_SQL.
SQL> desc ALC_HIER_LVL_INV_SNAPSHOT_SQL
FUNCTION ROLLUP_ALLOC_IN RETURNS NUMBER
Argument Name Type In/Out Default?
------------------------------ ----------------------- ------ --------
O_ERROR_MESSAGE VARCHAR2 IN/OUT
FUNCTION ROLLUP_CROSSLINK_IN RETURNS NUMBER
Argument Name Type In/Out Default?
------------------------------ ----------------------- ------ --------
O_ERROR_MESSAGE VARCHAR2 IN/OUT
FUNCTION ROLLUP_IL_SOH RETURNS NUMBER
Argument Name Type In/Out Default?
------------------------------ ----------------------- ------ --------
O_ERROR_MESSAGE VARCHAR2 IN/OUT
FUNCTION ROLLUP_ON_ORDER RETURNS NUMBER
Argument Name Type In/Out Default?
------------------------------ ----------------------- ------ --------
O_ERROR_MESSAGE VARCHAR2 IN/OUT
------------------------------ ----------------------- ------ --------
ROLLUP_ALLOC_OUT (FUNCTION)<return value> NUMBER OUT
ROLLUP_ALLOC_OUT
O_ERROR_MESSAGE VARCHAR2 IN/OUT
------------------------------ ----------------------- ------ --------
There are six functions in the package. Each of the four functions in the package
should be called by its own batch program.
■ AlcSnapshotSOH
■ AlcSnapshotAllocIn
■ AlcSnapshotOnOrder
■ AlcSnapshotCrosslink
■ AlcSnapshotAllocOut
■ AlcSnapshotCustomerOrder
Implementation
There are six different batch executables, each executable calling the appropriate
method from the above ALC_HIER_LVL_INV_SNAPSHOT_SQL package.
Clarifications on the batch functionality:
■ Each batch should state success or failure, whether an exception is caught or not.
■ There is no need for restart recovery, intermittent commits, or threading.
■ Login validation standard logic used by the scheduled alloc program should be
applied here as well.
■ The programs are run sequentially. The correct order is documented in the
Merchandising batch schedule and controlled by whichever scheduling tool used
at a particular customer.
■ There are no special security requirements for the program. Any user who can log
into the Allocation product can have the ability to run the batch processes.
Translation
Translation is the process of interpreting and adapting text from one language into
another. Although the code itself is not translated, components of the application that
are translated may include the following, among others:
■ Graphical user interface (GUI)
■ Error messages
The following components are not usually translated:
■ Documentation (Online Help, Release Notes, Installation Guide, User Guide,
Operations Guide)
■ Batch programs and messages
■ Log files
■ Configuration Tools
■ Reports
■ Demonstration data
■ Training Materials
The user interface for Allocation has been translated into:
■ Chinese (Simplified)
■ Chinese (Traditional)
■ Croatian
■ Dutch
■ French
■ German
■ Greek
■ Hungarian
Internationalization 12-1
Setting the User Language
■ Italian
■ Japanese
■ Korean
■ Polish
■ Portuguese (Brazilian)
■ Russian
■ Spanish
■ Swedish
■ Turkish
Translations
Most user interface and message translations are stored in xlf files. When you select a
different language from the Preferences screen, Allocation will choose the correct xlf
file for that language.
Some translations for some drop-down menus are stored on four database tables. The
tables are RTC_LOOKUP_VALUES_TL, RTC_LOOKUP_TYPES_TL, RAF_FACET_
Internationalization 12-3
Translations
This chapter discusses the Allocation functional security and the components used to
implement it. Allocation Functional Security is based on OPSS. For more details on
OPSS, refer to the Oracle Fusion Middleware Application Security Guide.
2. Enter the Retail Fusion application's administrative user name and password and
click Login.
The password is the one supplied during the installation of the Retail Fusion
application. If these values have been changed, then use the current administrative
user name and password combination.
3. From the target navigation pane, open the WebLogic Domain to display the
application domain (for example: APPdomain). Display the Security menu by
using one of the following methods:
■ Right-click the application domain and hover over Security in the popup
menu to display a submenu.
■ From the content pane, select the application domain in the tree to open the
domain's home page. Open the WebLogic Domain menu located below the
domain's name and hover over Security to open the Security submenu.
Figure 13–3 Displaying the Security Menu via the WebLogic Domain Menu
3. Select the cell next to the application role name and click Edit to display the Edit
Application Role page. In the following figure the 'ALC_ALLOC_
MANAGEMENT_DUTY' role has been selected.
You can add or delete members from the Edit Application Role page. Valid
members are application roles and groups.
4. Select from the following options:
■ To delete a member, select the member and click Delete.
■ To add a member, click the Add button that corresponds to the member type
being added to open the window. From the window, select from Add
Application Role, Add Group, and Add User.
If adding a member, complete Search and select from the available list and
click OK.
For example, the following figure shows the Add Group window after the
BUYER_JOB group has been selected.
The added member displays in the Members column corresponding to the application
role modified in the Application Roles page.
1. Log into Fusion Middleware Control, navigate to Security, then select Application
Roles to display the Application Roles page.
For more information, see "Access Oracle Enterprise Manager Fusion Middleware
Control".
2. Choose Select Application Stripe to Search, and then click the search icon next to
Role Name.
The Retail Fusion Application's application roles display.
3. Click Create to display the Create Application Role page. You can enter all
information at once or you can enter a Role Name, save it, and complete the
remaining fields later. Complete the fields as follows:
In the General section:
■ Role Name – Enter the name of the application role.
■ (Optional) Display Name – Enter the display name for the application role.
■ (Optional) Description – Enter a description for the application role.
In the Members section, select the groups, or application roles to be mapped to the
application role, select Add Application Role or Add Group accordingly. To search
in the window that displays:
a. Enter a name in Name field and click the blue button to search.
b. Select from the results returned in the Available box.
c. Click OK to return to the Create Application Role page.
d. Repeat the steps until all members are added to the application role.
4. Click OK to return to the Application Roles page.
The application role just created displays in the table at the bottom of the page.
6. Use Add and Delete to modify the members as appropriate and click OK.
The just-created application role displays in the table at the bottom of the page.