Kendra Barton - JDE Source | Oracle JD Edwards ... Introduction • 11 years with EnterpriseOne –...

Post on 13-Apr-2018

218 views 2 download

transcript

Kendra Barton Principal Software Engineer

JD Edwards EnterpriseOne

Developing Powerform-Based

JD Edwards EnterpriseOne

Applications

Agenda • Speaker Introduction

• Assumptions

• Web Development Client Architecture

• Powerforms & Subforms • Problem Space & Terms

• Powerforms – properties/features

• Reusable & Embedded Subforms – properties/features

• Best Practices

• “Converting” Existing Forms

• Portlets & Wizard Forms

• Summary

• Questions

Speaker Introduction

• 11 years with EnterpriseOne – Runtime

• Three companies

• Six product names

• Tools perspective

• Customer is Application Development

• Business knowledge = none

• Hands On will be simple

• Usability Engineering knowledge = little

• All recommendations are from UE group

Assumptions

• Familiarity with E1 Windows Platform

• Familiarity with E1 Windows Development

• Object Management Workbench

• Design Objects – Data Dictionary, Tables,

Business Views, Forms

• Design Tools – Forms Design Aid

• Familiarity with E1 Form Types

Web Development Client

Architecture

App

Specs

Serialized

Specs

Web Development Client Architecture

EnterpriseOne Windows Client

Local Web

OMW

Solution

Explorer

Design

Tools

Local

Business

Function

Execution

Local Application Server

Web Runtime Engine

HTML Browser(s)

App

Specs

Serialized

Specs

Web Development Client Architecture

EnterpriseOne Windows Client

Local Web

OMW

Solution

Explorer

Design

Tools

Local

Business

Function

Execution

Local Application Server

Web Runtime Engine

HTML Browser(s)

App

Specs

Serialized

Specs

Web Development Client Architecture

EnterpriseOne Windows Client

Local Web

OMW

Solution

Explorer

Design

Tools

Local

Business

Function

Execution

Local Application Server

Web Runtime Engine

HTML Browser(s)

App

Specs

Serialized

Specs

Web Development Client Architecture

EnterpriseOne Windows Client

Local Web

OMW

Solution

Explorer

Design

Tools

Local

Business

Function

Execution

Local Application Server

Web Runtime Engine

HTML Browser(s)

Dynamic

Generation

App

Specs

Serialized

Specs

Web Development Client Architecture

EnterpriseOne Windows Client

Local Web

OMW

Solution

Explorer

Design

Tools

Local

Business

Function

Execution

Local Application Server

Web Runtime Engine

HTML Browser(s)

Dynamic

Generation

Lab Machines

• Web Development Client plus

• Enterprise Server

• Security Server

• Database Server

• Deployment Server

• Same image Sales uses for Customer

demonstrations

• Application release 8.11, Tools release 8.94

Powerforms & Subforms

Problem Space • Previous EnterpriseOne Form Types

• Find Browse, Parent/Child Browse, Search Select, Message

• Fix/Inspect, Headerless Detail, Header Detail

• These form types are good for: • Ease of creation

• Working on one data view (2 for header detail)

• Predictable Workflow: Browse first, Edit later.

• These form types are not intended for: • Working on multiple, interrelated data views on one screen.

• Need to use form interconnects for related tasks.

• Powerforms • Powerforms enable a user to work on multiple, interrelated

data views on one screen.

Problem Space

• No good answer for the complex use case

• Separate forms had to be created when an app

needed

• Multiple views of interrelated data

• Multiple grids

• Multiple tab controls

• Tab pages with their own business view

• Business views that communicate, and even react to user

actions that occur in other views

• Existing form types too rigid

Supporting the Complex Case

• A new Web-only form type to solve all the

issues in the problem space – Powerform

• Powerform itself is not complex

• Power Browse – similar to Find Browse

• Power Edit

• With grid – similar to Headerless Detail

• Without grid – similar to Fix Inspect

• Supports the complex cases because only

Powerforms can contain Subforms

Subforms

• A new control/form hybrid

• Form-like

• Associated with a business view

• Owns the data flow between the UI and the database –

fetch, insert, update, delete

• Defined data structure to pass values in/out

• Can contain any control types

• Control-like

• Contained by a form

• Takes up real estate

• System functions to dynamically modify attributes/actions

A Powerform example – SOE

Lab – Approach

• A simple example

• Address and Phone records

• Build a Powerform and Subforms feature by

feature

• Powerform – browse Address Book grid

• Subform – Address Book (update fields)

• Buttons, Structured communication, Functions,

Layout, Transaction boundaries, and more

• Reusable Subform – Phones (update grid)

Lab – Create App

• Run Solution Explorer (activconsole.exe)

• Log in as PSFT/PSFT on lab machines

• Fast path to OMW

• Add

• Interactive Application - OK

• Object name – P55PWRFM

• Product Code/Product System Code – 55

• OK

• Design Tools tab

• Start Forms Design Aid

• OK

Lab – PowerEdit form

• Form > Create > PowerEdit

• Description – Address Book PowerEdit

• Business View – V0101JB Address Book Master

F0101/Address by Date F0116

• Enable In-Your-Face-Errors

• Form > Menu/Toolbar Exits

• Add Find

• Remove OK

Lab – PowerEdit grid columns

• Insert > Grid

• Add grid columns • F0101.AN8 – Address Number

• F0101.ALPH – Alpha Name

• F0116.CTY1 – City

• F0116.ADDS – State

• Set grid property to disable (read only)

• Set grid property for „No adds on update grid‟

• Disable Form property „Update on Grid Business View‟

Lab – Embedded Subform

• Insert > Subform

• Description – Address Book Detail

• Business View – V0101JB Address Book Master

F0101/Address by Date F0116

• Create the Subform Data Structure with

• AN8 – Address Number

• CTY1 – City

• ADDS - State

Lab – Embedded Subform fields

• Add text fields

• F0101.AN8 – Address Number

• Disable Next Numbers

• F0101.ALPH – Alpha Name

• F01161.ADD1 – AddressLine1

• F01161.ADD2 – AddressLine2

• F01161.CTY1 – City

• F01161.ADDS – State

• F01161.ADDZ – Zip Code

Lab – Subform buttons

• Insert > Button

• Open the button properties to make this Find

• Repeat for Save

• Set tab sequence

Subform buttons

• Subforms have buttons, no toolbar

• There is a Button substitute for each standard toolbar

item

• Buttons can be „standard‟ AKA „default‟

• Save (think OK)

• Find

• Delete

• Clear

• Each Subform has at most one of each standard type

• Available types differs for Browse and Edit

Interrelated Data

• There is a hierarchical relationship between

Powerform and the Subforms it contains

• Powerforms have children Subforms

• A Subform has a parent and may have siblings

and children (grandchildren)

• All communication is up or down the hierarchy

• Hierarchical (logical) and physical relationship

are not necessarily identical

Mapping Link

• Mapping link is the data communication channel

between parent and child.

• Each parent/child pair has one mapping link defined.

• Mapping link contains items defined in the child form‟s

data structure.

• Parent (left) side – any ER object can be mapped

• Child (right) side – Subform‟s data structure referred to in

ER as “SI” (Subform Interconnect)

• Three Directions: Parent to Child, Child to Parent, or both.

• Similar to a Form Interconnect

Lab – Hierarchy & Mapping Link

• Open Subform properties to see the default

assignment of its parent

• On the Powerform properties‟ Mapping Link

tab connect as follows

Lab – ER to Execute Mapping Link

• On the Powerform grid Row is Selected event

• On the Subform Find Button Clicked event

Lab – ER to Execute Mapping Link

• On the Subform Save Button Clicked event

Powerform Communication

Powerform

Child Subform

City Add Num State

Powerform Communication

Powerform

Child Subform

Row is Selected ER

{

Trigger Default Child Action(child, Find)

}

City Add Num State

Powerform Communication

Powerform

Child Subform

Row is Selected ER

{

Trigger Default Child Action(child, Find)

}

City Add Num=1 State

Powerform Communication

Powerform

Child Subform

Row is Selected ER

{

Trigger Default Child Action(child, Find)

}

City Add Num=1 State

Find Button Clicked

{

BC Address Num = SI Address Num

}

Powerform

Powerform Communication

Child Subform

Add Num City State

Powerform

Powerform Communication

Child Subform

Add Num

Save Button Clicked

{

SI City = FC City

SI State = FC State

Update Parent

}

City State

Powerform

Powerform Communication

Child Subform

Add Num

Save Button Clicked

{

SI City = FC City

SI State = FC State

Update Parent

}

State = CO City = Den

ER to Execute Mapping Link

• Parent to child (down) just before • Trigger Default Action for standard buttons

• Notify Child System Function triggers “Notified by Parent” event on the child

• Subform Functions

• Child to parent (up) • Update Parent System Function

• Often used just prior to Notify Parent System Function which triggers “Notified by Child” event on the parent

Lab – Reusable Subform

• Form > Create > Reusable Edit Subform

• Description – Phones

• Business View – V0115A Phone Number Update

• Create the Subform Data Structure with

• AN8 – Address Number

Lab – Reusable Subform fields

• Insert > Grid

• Add grid columns

• F0115.AN8 – Address Number

• Disable Next Numbers

• F0115.IDLN – LineNumberID

• F0115.PHTP – PhoneNumberType

• F0115.AR1 – PhoneAreaCode1

• F0115.PH1 – PhoneNumber

• Add Address Book equals filter field

Lab – Subform buttons

• Insert > Button

• Open the button properties to make this Find

• Repeat for Save

Lab – Insert Subform Alias

• Insert > Subform Alias • Search for lab application P55PWRFM

• Open Subform Alias properties • Change the parent to be the Address Book Detail

Subform

• On the Address Book Detail‟s Mapping Link tab

• FC Address Number > mnAddress Number

• Note that some properties are set on the Alias, and some are set on the Subform itself

Lab – ER to Execute Mapping Link

• On the AB Detail Find Post Button Clicked

event

• On the Phones Find Button Clicked event

Powerform Communication Powerform

Child Subform

City Add Num State

Grandchild Subform

Add Num

Powerform Communication Powerform

Child Subform

Row is Selected ER

{ Trigger Default Child Action(child, Find) }

City Add Num State

Grandchild Subform

Add Num

Powerform Communication Powerform

Child Subform

Row is Selected ER

{ Trigger Default Child Action(child, Find) }

City Add Num=1 State

Grandchild Subform

Add Num

Powerform Communication Powerform

Child Subform

Row is Selected ER

{ Trigger Default Child Action(child, Find) }

Find Button Clicked

{ BC Address Num = SI Address Num }

City Add Num=1 State

Grandchild Subform

Add Num

Powerform Communication Powerform

Child Subform

Row is Selected ER

{ Trigger Default Child Action(child, Find) }

Find Button Clicked

{ BC Address Num = SI Address Num }

City Add Num=1 State

Find Post Button Clicked

{ BC Address Num = SI Address Num }

Grandchild Subform

Add Num

Powerform Communication Powerform

Child Subform

Row is Selected ER

{ Trigger Default Child Action(child, Find) }

Find Button Clicked

{ BC Address Num = SI Address Num }

City Add Num=1 State

Find Post Button Clicked

{ Trigger Default Child Action(child, Find) }

Grandchild Subform

Add Num=1

Powerform Communication Powerform

Child Subform

Row is Selected ER

{ Trigger Default Child Action(child, Find) }

Find Button Clicked

{ BC Address Num = SI Address Num }

City Add Num=1 State

Grandchild Subform

Add Num=1

Find Button Clicked

{ FC Address Num = SI Address Num }

Find Post Button Clicked

{ Trigger Default Child Action(child, Find) }

Lab - Subform Functions

• Part of a Subform‟s “interface”

• With the Reusable Subform highlighted

• Form > Create > Function

• Add ER from the tree on the left hand side

• From an event on the Embedded Subform

• Add the „Call Function‟ system function

Reusable Subforms as Parents

• This lab has a Reusable Subform as a child

• When a Reusable Subform is the logical parent but not the physical parent:

• ER cannot reference children by name

• Trigger Default Child Action can only broadcast messages to <All Children>

• Call Function cannot introspect to the child‟s functions

• When a Reusable Subform is both the logical and physical parent:

• ER can reference children by name

Transaction Processing (TP)

• Enabling Powerform TP

• Creates and commits/rolls back a Manual

Commit transaction during OK processing

• The TP boundary can be extended to include

specific ER lines

• The TP boundary can be extended to include

subforms

Transaction Processing (TP)

• Enabling Subform TP

• Subforms can create their own TP boundary

• Subforms can inherit their parent‟s TP boundary,

if any

Lab – Transaction Processing

• On the Address Book Detail Subform set the

subform only option

• On the Phones Subform set the Include in

Parent Transaction option

• From the Address Book Detail Save Post

Button Clicked event

Lab – Checking Subform Errors

• Only errors on the current Form/Subform will cause

Save processing to halt

• To make errors from a child Subform halt the current

Form/Subform Save process, use system function

„Get Error Count‟

Powerform

Child Subform 1

Powerform Communication

Child Subform 2

Powerform

Child Subform 1

Powerform Communication

Child Subform 2

Trigger Default Child Action – i.e. Find, Save

Find Find

Powerform

Child Subform 1

Powerform Communication

Child Subform 2

Trigger Default Child Action – i.e. Find, Save

Find Find

Powerform

Child Subform 1

Powerform Communication

Child Subform 2

Trigger Default Child Action – i.e. Find, Save

Find Find

Powerform

Child Subform 1

Powerform Communication

Child Subform 2

Trigger Default Child Action – i.e. Find, Save

Find Find

Powerform

Child Subform 1

Powerform Communication

Child Subform 2

Trigger Default Child Action – i.e. Find, Save

Find Find

Powerform

Child Subform 1

Powerform Communication

Child Subform 2

Call Function (child, functionName)

Powerform

Child Subform 1

Powerform Communication

Child Subform 2

Call Function (child, functionName)

Powerform

Child Subform 1

Powerform Communication

Child Subform 2

Call Function (child, doSomeWork)

doSomeWork

{

}

Powerform

Child Subform 1

Powerform Communication

Child Subform 2

Notify Child (child(ren))

Powerform

Child Subform 1

Powerform Communication

Child Subform 2

Notify Child (child(ren))

Powerform

Child Subform 1

Powerform Communication

Child Subform 2

Notified by Parent

{

}

Notify Child (child(ren))

Notified by Parent

{

}

Powerform

Child Subform 1

Powerform Communication

Child Subform 2

Powerform

Child Subform 1

Powerform Communication

Child Subform 2

Assign to SI

Powerform

Child Subform 1

Powerform Communication

Child Subform 2

Assign to SI

Update Parent

Powerform

Child Subform 1

Powerform Communication

Child Subform 2

Notified by Child

{

Call Function (child2, doSomeWork)

}

Assign to SI

Update Parent

Notify Parent

Powerform

Child Subform 1

Powerform Communication

Child Subform 2

Notified by Child

{

Call Function (child2, doSomeWork)

}

Assign to SI

Update Parent

Notify Parent

doSomeWork

{

}

Lab – Controlling UI

• Open Address Book Detail Subform

properties

• Check Collapsible

• Open Phones Subform (Alias) properties

• Uncheck Show Subform Header

• Open Powerform grid‟s properties

• Check Reclaim Whitespace

Powerform/Subform Grids

• For Powerforms/Subforms the size at Design

time is a maximum size

• For all other form types the size at Design

time is a minimum size

• Only Powerform/Subform grids can „reclaim

whitespace‟

• Reclaiming whitespace effects both the

container‟s size and all controls below the grid

Best Practices

Powerform Layout

Powerform (Level 0)

Child Subform (Level 1)

<Header> and/or <Detail>

(Level 0)

Powerform (Level 0)

Child Subform (Level 1)

Powerform Layout

<Header> and/or <Detail>

(Level 0)

Grandchild Subform (Level 2)

Powerform (Level 0)

Child Subform 1 (Level 1)

Powerform Layout

<Header> and/or <Detail>

(Level 0)

Child Subform 2 (Level 1)

Powerform (Level 0)

Child Subform 1 (Level 1)

Powerform Layout

<Header> and/or <Detail>

(Level 0)

Child Subform 2 (Level 1)

Powerform (Level 0)

Child Subform (Level 1)

Powerform Layout

<Header> and/or <Detail>

(Level 0)

Grandchild

Subform 1 (Level 2)

Grandchild

Subform 2 (Level 2)

Powerform Layout

• The most important information should visually

precede the less important information

• Presentation of information should follow the

sequence in which the user needs it - it should relate

to the user‟s mental model for the task

• Common information should be in consistent locations

across the UI

• Frequently needed or referred to information should

be in the most prominent locations across the UI

Toolbars

• Applications with a hierarchical layout of

subforms that have push buttons should not

use the toolbar

• Hide the toolbar and provide form and

subform level push buttons instead

• Do not use a combination of toolbar actions

and repeated buttons together

Form/Row Exits

• All “Form Exits” should be placed within the

form/subform boundary above all form content

• All “Row exits” should be placed below the

grid within the form/subform boundary

• When there are more than 4 Form/Row exits,

place them in a drop down menu.

Required Fields

• Users need to know that certain fields are

mandatory to complete a task and to avoid

errors

• Turn on the “Required Entry” option in the edit

field property in FDA

• Connect the static text to the edit field

Grids

• Do not display more than three grids on a page

• Place grids in the order the user will view and interact

with the information

• If more than one grid is displayed, limit the number of

visible rows to five on each grid

• Limit the number of grid columns on the page

• If a grid requires more columns than can fit, prioritize

and create grid formats

• Try to limit the number of grid columns to eight

• Display the most critical, frequently used columns first

Command Buttons

• Users need consistent command buttons

when working with a multiple grid page

Button Behavior

Save Changes Saves changes and keeps form open

Save and Continue Save and go on to the next step

Save and Add New Save and add another record

Save and Close Save changes and close the form

Cancel Discards changes and closes the form

Close Closes the form

Undo Changes Reverts to the state of the last save

“Converting” Existing Forms

“Converting” Existing Forms

• There is no magic. No silver bullets.

• Examine Form and Row Exits for Subform

conversion candidates

• Prioritize the user tasks each form provides

• A Subform should replace the most important

and most frequently used tasks

• Strive for simplicity in subforms – retain

Form/Row Exits for remaining tasks

Portlets and Wizards

Wizards

• A new form type, built on the backbone of Powerforms

• Collection of subforms, arranged in sequence

• Tool provides

• Navigation buttons

• Left hand navigation/task list

• Progress bar

• Transaction processing to commit all subforms together

• Application developer specifies

• Task sequence – can be dynamically changed

• Partial save logic – when wizard has not completed

Wizards

Wizards

Wizards

Wizards

Wizards

Wizards

Wizards

Wizards

Wizards

Portlets

• Portal Content produced from Forms Design Aid

• JSR 168 Compliant • Java Specification Request 168

• To enable interoperability between Portlets and Portals, this specification will define a set of APIs for Portal computing addressing the areas of aggregation, personalization, presentation and security.

• Structurally similar to Subforms

Portlets

Summary

Summary

• Web Development Client Architecture

• Local Web Server

• Local Business Function Execution

• On the fly generation

Summary

• Powerforms

• New web-only form type that can house subforms

• Browse or Edit

• Reusable & Embedded Subforms

• Control/form hybrid

• Contract with Parent (and children)

• Data structure

• Size

• Functions/Standard buttons

• Parent notification

Summary

• Best Practices

• Powerform Layout

• Toolbars

• Form/Row Exits

• Command buttons

• Multiple grid guidelines

• “Converting” Existing Forms

• Portlets & Wizard Forms

Q U E S T I O N S

A N S W E R S