Brio Worldwide User Conference

Download Report

Transcript Brio Worldwide User Conference

A framework approach eases
support for the iServer
Brio Mid-Atlantic User Group
8th April 2003
Socs Cappas
QIQ Solutions
Agenda
Introduction
Our Brio iServer Experience
A Framework for Brio JavaScript
Leveraging the Framework
Where to from here
2
Who is QIQ Solutions?
• Part of the Forge Group
– Australian owned and operated since 1996
– Offices in Sydney, Canberra and Melbourne
• Forge Research
– Developer of Telco Management Systems
– Tens of thousands of network devices
– 7x24 nationwide operation
• Forge Data Solutions
– Business Intelligence implementation
• QIQ Solutions
– Business Intelligence Product Development
– Brio Solutions Partner
3
What QIQ does (1 of 2)
• 2000 – Query Intelligence
– Harvest BQYs for their attributes
– Load attributes into RDBMS
– Query and Report on your BQYs
• 2001 – ES Designer
– Framework for dashboards
– Dashboard building via a Wizard
• 2001 – QIQ Merge
– Merge your existing BQYs
• With each other
• With our framework
4
What QIQ does (2 of 2)
• 2002 – ES Architect
– IDE for Brio JavaScript
• Color coded syntax, brace match
• Break points, Step execution, Peek and poke properties
• Search and replace etc
• 2003 – Upgrade Dashboards for iServer
– iServer has changed the Brio model
– We change our users’ dashboards to match it
• 2003 – Upgrade Data Models
– RDBMS changes, data model changes
– Replace your old data models with new data models
– Make your old Queries work against new schemas
5
ES Designer and its Dashboards
ES Designer
Wizard
6
ES Architect - IDE for JavaScript
ES Architect
7
Agenda
Introduction
Our Brio iServer Experience
A Framework for Brio JavaScript
Leveraging the Framework
Where to from here
8
Architecture – Pop up dialogs
Designer / Explorer / Insight
QuickView FreeView
Click to start
JavaScript executes locally
Dialog pops-up
User answers
JavaScript executes locally
Screen is refreshed
JavaScript executes locally
9
Architecture – Helper Forms
iServer
Click to start
JavaScript executes remotely
New HTML is sent to browser
Click to start
JavaScript executes remotely
New HTML is sent to browser
Click to start
JavaScript executes remotely
New HTML is sent to browser
10
Architecture – Joole
Designer / Explorer / Insight
QuickView FreeView
var jo=new JOOLEObject(“param”)
jo.methodCall()
Lets you call and interact with the
local operating System
11
Architecture – Joole
iServer
var jo=new JOOLEObject(“param”)
jo.methodCall()
iServer ignores this
Why?
a) It could be an attack on the server
b) the local OS is the server!
c) the local OS may not be Windows
12
Architecture – Print / Export
iServer
• Browser Print button for screens
• Brio print feature not available
• The server’s resources may be
•
behind the firewall
•
on another continent
•
etc
• Export feature not available via
menus but can be implemented using
JavaScript
13
Platform Differences
iServer
• OnDoubleClick() – not available
• RefreshAvailableValues() broken
• Intermittent firing of OnActivate()
• ActiveSection construct can cause
unexpected behavior
• Connected status ambiguous
• No Console Window
• Charts and Pivots on EIS act as
hyperlinks always…
…but there is no back button
• Ovals / round boxes => rectangles
• Multiple spaces are reduced to one
• Browser versions are critical
14
Who is the Audience?
iServer
• Can only be built via EIS /
JavaScript…
New Data models
New Queries
New Charts
New Pivots
New Reports
New or existing Local Limits
• The audience seems “casual users”
• Dashboards are essential for this
audience
15
Making Dashboards iServer ready
• Deploy to the iServer
• Run all critical paths and observe the
behavior
• If something is broken – find it and fix it
– For all platforms
• It took us almost 2 months
• ESD dashboards only have ONE code base
– No matter how many dashboards
• We have complex and sophisticated code
• We have our own fully featured diagnostics
– We don’t use the Console window so don’t miss it
16
Agenda
Introduction
Our Brio iServer Experience
A Framework for Brio JavaScript
Leveraging the Framework
Where to from here
17
Your BQYs & Our Framework
Core Collector
Extra Classes
Frame Classes
Core Classes
Charts
Pivots
Reports
QIQ Merge / Import feature
Results
Run Time
Queries
Regular BQY
Build Time
Template
18
Queries
Runtime Framework
Core Collector
Frame Classes
Extra Classes
Results
Core Classes
Charts
Pivots
Reports
Framework Needs Configuration
Build Framework
Template
19
Wizard Driven Application Building
Queries
Frame Classes
Extra Classes
Results
Core Classes
Charts
Pivots
Reports
EIS - User Interface
Runtime Framework
Core Collector
Wizard
Builder Interface
Build Framework
Runtime
Source Master
20
Extend with Plug and Play Components
Queries
Runtime Framework
P-n-P Collector
P-n-P Frame Class
Frame Classes
P-n-P Classes
Extra Classes
Results
Core Classes
Charts
Pivots
Reports
EIS - User Interface
Core Collector
Wizard
Builder Interface
Build Framework
Runtime
Source Master
21
Analytic Development Platform
Development Lifecycle with Templates and Components
Design, Code, Test
Point, Click, Generate
Components
Components
ES Designer
ES Architect
Templates
22
Let us look closely at the framework
Visible EIS
sections
P-n-P Classes
Extra Classes
EIS - User Interface
Core Classes
OnStartup(){
discover environment
initialize diagnostics
initialize back plane
initialize core
initialize extra
initialize P-n-P
activate welcome EIS
}
Runtime Framework
Hidden EIS
sections
Back
plane
23
QIQ Diagnostics – our life saver
24
Pattern for Qiq_trace
OnStartUp()
function Qiq_trace(str,level,component){
if (str.slice(0,3).toLowerCase()==“in ”){
Qiq_arrProcStack.push(str)
}else{
if (str.slice(0,4) ).toLowerCase()==“out ”){
Qiq_arrProcStack.pop()
}
if (Qiq_harTraceLevel[component]>=level){
Sections[“QIQ Diagnostics”].lbxTrace.Add(str)
}
}
ActiveDocument.Qiq_trace=Qiq_trace
25
Pattern for Component Initialization
OnStartUp()
ActiveDocument.harSections1020=new Array()
for (var a=1;a<=Sections.Count;a++){
if (Sections[a].Type==bqEIS){
if (Sections[a].FrameType.Text==1020){
harSections1020[Sections[a].Name]=Sections[a]
for (var b=1;b<=Sections[a].Shapes.Count;b+){
if (Sections[a].Shapes[b].Type==bqCommandButton){
Sections[a].Shapes[b].OnClick()
}
}
}
}
}
26
Pattern for Components
Hidden EIS Section
Text Labels
Buttons
StartUp
ShutDown
Pre Process
Post Process
On Activate
Frame Type = 1020
Version Info
Component Info
Tool tips
Language Strings
Other persistent settings
On Deactivate
Control Click
Drop Down Select
Is System Section
Reset
Others…
27
Pattern for functions
CommandButton1.OnClick Event
var tp = this.Parent
Qiq_trace("In " + tp.Name+"."+ this.Name,0,tp)
tp.harConstants=new Array()
function Qiq_onClick(mySection){
Qiq_trace("In "+tp.Name+".Qiq_onClick()", 1,tp)
// regular code
Qiq_trace("Out "+tp.Name +".Qiq_onClick()", 1,tp)
}
tp.Qiq_ onClick =Qiq_ onClick
Qiq_trace("Out " + tp.Name+"."+ this.Name,0,tp)
28
Sample Initialized Brio Object Model
29
Pattern for User EIS sections
Scripted Shapes
Visible EIS Section
Hidden Text Labels
Button 1
Configuration info for Button 1
Button 2
Configuration info for Button 2
Button n
Configuration info for Button n
Drop Down 1
Drop Down 2
etc
txlMe => Template back plane
txlClass => Component
Drop Down n
Picture 1
Picture 2
Picture n
Text Label 1
Others…
30
Events on User EIS
Any Control - Any Event()
Sections[txlMe.Text].Qiq_onControlClick(this.Parent,this)
31
Pattern for Event Broker
function Qiq_onControlClick(mySection,myControl){
switch (myControl.Name){
case (“known id1”) : handler1(mySection,myControl); break
case (“known id2”) : handler2(mySection,myControl); break
case (“known id3”) : handler3(mySection,myControl); break
// etc…
default:
var c=findComponent(mySection,myControl)
c.OnClick(mySection,myControl)
}
}
this.Parent. Qiq_onControlClick = Qiq_onControlClick
32
Results
Queries
Runtime Framework
P-n-P Collector
P-n-P Frame Class
Core Collector
Frame Classes
P-n-P Classes
Extra Classes
Core Classes
Charts
Pivots
Reports
Typical Interaction
EIS - User Interface
Build Framework
Runtime
Source Master
33
Agenda
Introduction
Our Brio iServer Experience
A Framework for Brio JavaScript
Leveraging the Framework
Where to from here
34
Code only exists in the Infrastructure
Queries
Runtime Framework
P-n-P Collector
P-n-P Frame Class
Core Collector
Frame Classes
P-n-P Classes
Extra Classes
Results
Core Classes
Charts
Pivots
Reports
EIS - User Interface
Build Framework
System Infrastructure
35
Results
Queries
Runtime Framework
P-n-P Collector
P-n-P Frame Class
Core Collector
Frame Classes
P-n-P Classes
Extra Classes
Core Classes
Charts
Pivots
Reports
So when the world changes…
EIS - User Interface
Build Framework
System Infrastructure
36
Results
Queries
Runtime Framework
P-n-P Collector
P-n-P Frame Class
Core Collector
Frame Classes
P-n-P Classes
Extra Classes
Core Classes
Charts
Pivots
Reports
We can Upgrade it safely
EIS - User Interface
Build Framework
System Infrastructure
37
Template Make
1) Code & Test Dev App
2) Generate Template
Template
Dev App
3) Upgrade newsections.dat
4) Upgrade Applications
Sample and
Production
Applications
newsections.dat
Template
38
Component Make
1) Code & Test Dev App
2) Generate Component
Component
Dev Apps
Template
Dev App
3) Upgrade newsections.dat
4) Upgrade Applications
Sample and
Production
Applications
newsections.dat
Template
Components
39
Template & Component Make
1) Code & Test Dev App
2) Generate Template
Component
Dev Apps
Template
Dev App
3) Upgrade newsections.dat
& Component Dev Apps
4) Upgrade Applications
Sample and
Production
Applications
newsections.dat
Template
Components
40
The Productivity Advantage
Analytic Development
Platform
Traditional EIS
Development
Highly Technical
Developers
Components and
Templates
Computer Literate
Developers
Analytic
Applications
Analytic
Applications
41
Tool and Component Productivity
Component based
Generated Applications
Productivity
Generated
Applications
Hand written
Applications with IDE
Hand written
Applications no IDE
Flexibility
42
Benefits of this framework
• Construction productivity
– Focus on the business…not on programming bugs
– Empower the business users to drive performance
– Build dashboards in hours not days and weeks
• Standardization
– Reduce the cost of training – standard features
• Saving on maintenance and enhancement
–
–
–
–
Write no code – maintain no code
QIQ support the framework with new versions of Brio
Leverage QIQ’s JavaScript for your P-n-P components
Maintain only your P-n-P components
• Save on how you keep dashboards current
– ES Upgrade automates deployment of upgrades and
enhancements
43
Agenda
Introduction
Our Brio iServer Experience
A Framework for Brio JavaScript
Leveraging the Framework
Where to from here
44
Change is the Management Challenge
• What needs to change?
• How to apply it quickly and effectively?
• How to apply it consistently?
• How to ensure no unwanted side effects?
• How to authorize changes?
• How to work within enterprise standards?
45
The Management Vision
• Reduce the time and effort to roll out changes
– Build lists of impacted documents easily
• By defining criteria
• By matching against provided samples
• By selecting specific documents
– Specify changes verifiably
•
•
•
•
Change specification generate scripts
Scripts can be saved and re-used
Changes can be tested on subsets of a list
Change reports generated
– Authorization of change
• Who can identify documents to be changed
• Who can specify and apply changes
• Recording who made the changed
– Automation of change
• Schedule execution of changes
– Assist organizations with their change control process
• Development, Test and Production
46
QIQ Workbench
Define
Favorites
Browse
Folders
Standard
Changes
Ad-hoc
Changes
Desktop Client
Desktop
Transform
Engine
Change
Scripts &
Doc Lists
Service
Manager
47
What Kinds of Changes?
• Section Merge
– With full dependency
– Yank and graft
• Section Replacement
– EIS
– Data Models, resolving all references
• Re-Parent of Charts and Pivots
• Document-wide shape properties
– Locking, Visibility, Image replacement, Colors
• Ad-hoc changes
• Program changes in JavaScript
48