Title: A framework approach eases support for the iServer Brio MidAtlantic User Group 8th April 2003
1A framework approach eases support for the
iServer Brio Mid-Atlantic User Group8th April
2003
2Agenda
Introduction
Our Brio iServer Experience
A Framework for Brio JavaScript
Leveraging the Framework
Where to from here
3Who 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
4What 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
5What 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
6ES Designer and its Dashboards
ES Designer Wizard
7ES Architect - IDE for JavaScript
ES Architect
8Agenda
Introduction
Our Brio iServer Experience
A Framework for Brio JavaScript
Leveraging the Framework
Where to from here
9Architecture 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
10Architecture Helper Forms
iServer
11Architecture Joole
Designer / Explorer / Insight QuickView FreeView
var jonew JOOLEObject(param) jo.methodCall() L
ets you call and interact with the local
operating System
12Architecture Joole
iServer
var jonew JOOLEObject(param) jo.methodCall() i
Server 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
13Architecture Print / Export
- Browser Print button for screens
- Brio print feature not available
- The servers resources may be
- behind the firewall
- on another continent
- etc
- Export feature not available via menus but can be
implemented using JavaScript
iServer
14Platform Differences
- 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
alwaysbut there is no back button - Ovals / round boxes gt rectangles
- Multiple spaces are reduced to one
- Browser versions are critical
iServer
15Who is the Audience?
- 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
iServer
16Making 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 dont use the Console window so dont miss it
17Agenda
Introduction
Our Brio iServer Experience
A Framework for Brio JavaScript
Leveraging the Framework
Where to from here
18Your BQYs Our Framework
QIQ Merge / Import feature
Pivots
Charts
Results
Run Time
Build Time
Queries
Regular BQY
Template
19Framework Needs Configuration
Pivots
Charts
Results
Runtime Framework
Build Framework
Queries
Template
20Wizard Driven Application Building
Wizard Builder Interface
Pivots
Charts
Results
Runtime Framework
Queries
Build Framework
Runtime
Source Master
21Extend with Plug and Play Components
Wizard Builder Interface
Pivots
Charts
Results
Runtime Framework
Queries
Build Framework
Runtime
Source Master
22Analytic Development Platform
Development Lifecycle with Templates and
Components
Point, Click, Generate
Components
ES Designer
Templates
23Let us look closely at the framework
OnStartup() discover environment
initialize diagnostics initialize back plane
initialize core initialize extra
initialize P-n-P activate welcome EIS
Visible EIS sections
Hidden EIS sections
Runtime Framework
Back plane
24QIQ Diagnostics our life saver
25Pattern for Qiq_trace
OnStartUp() function Qiq_trace(str,level,compone
nt) if (str.slice(0,3).toLowerCase()in
) Qiq_arrProcStack.push(str) else
if (str.slice(0,4) ).toLowerCase()out )
Qiq_arrProcStack.pop() if
(Qiq_harTraceLevelcomponentgtlevel)
SectionsQIQ Diagnostics.lbxTrace.Add(str)
ActiveDocument.Qiq_traceQiq_trace
26Pattern for Component Initialization
OnStartUp() ActiveDocument.harSections1020new
Array() for (var a1altSections.Counta)
if (Sectionsa.TypebqEIS) if
(Sectionsa.FrameType.Text1020)
harSections1020Sectionsa.NameSectionsa
for (var b1bltSectionsa.Shapes.Countb)
if (Sectionsa.Shapesb.TypebqCo
mmandButton) Sectionsa.Shapesb
.OnClick()
27Pattern for Components
Hidden EIS Section Buttons
Text Labels
StartUp
Frame Type 1020
Version Info
ShutDown
Component Info
Pre Process
Tool tips
Post Process
Language Strings
On Activate
Other persistent settings
On Deactivate
Control Click
Drop Down Select
Is System Section
Reset
Others
28Pattern for functions
CommandButton1.OnClick Event var tp
this.Parent Qiq_trace("In " tp.Name"."
this.Name,0,tp) tp.harConstantsnew
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)
29Sample Initialized Brio Object Model
30Pattern for User EIS sections
Visible EIS Section Scripted Shapes
Hidden Text Labels
Button 1
Configuration info for Button 1
Configuration info for Button 2
Button 2
Configuration info for Button n
Button n
etc
Drop Down 1
txlMe gt Template back plane
Drop Down 2
txlClass gt Component
Drop Down n
Picture 1
Picture 2
Picture n
Text Label 1
Others
31Events on User EIS
Any Control - Any Event() SectionstxlMe.Text.Q
iq_onControlClick(this.Parent,this)
32Pattern 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
cfindComponent(mySection,myControl)
c.OnClick(mySection,myControl)
this.Parent. Qiq_onControlClick
Qiq_onControlClick
33Typical Interaction
Pivots
Charts
Results
Runtime Framework
Queries
Build Framework
Runtime
Source Master
34Agenda
Introduction
Our Brio iServer Experience
A Framework for Brio JavaScript
Leveraging the Framework
Where to from here
35Code only exists in the Infrastructure
Pivots
Charts
Results
Runtime Framework
Build Framework
Queries
System Infrastructure
36So when the world changes
Pivots
Charts
Results
Runtime Framework
Build Framework
Queries
System Infrastructure
37We can Upgrade it safely
Pivots
Charts
Results
Runtime Framework
Build Framework
Queries
System Infrastructure
38Template Make
1) Code Test Dev App
2) Generate Template
3) Upgrade newsections.dat
4) Upgrade Applications
39Component Make
1) Code Test Dev App
2) Generate Component
ComponentDev Apps
TemplateDev App
3) Upgrade newsections.dat
4) Upgrade Applications
Sample and Production Applications
40Template Component Make
1) Code Test Dev App
2) Generate Template
ComponentDev Apps
TemplateDev App
3) Upgrade newsections.dat Component
Dev Apps
4) Upgrade Applications
Sample and Production Applications
41The Productivity Advantage
Analytic Development Platform
Traditional EIS Development
Highly Technical Developers
Components and Templates
Computer Literate Developers
Analytic Applications
Analytic Applications
42Tool and Component Productivity
Component basedGenerated Applications
Generated Applications
Productivity
Hand written Applications with IDE
Hand written Applications no IDE
Flexibility
43Benefits of this framework
- Construction productivity
- Focus on the businessnot 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 QIQs 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
44Agenda
Introduction
Our Brio iServer Experience
A Framework for Brio JavaScript
Leveraging the Framework
Where to from here
45Change 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?
46The 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
47QIQ Workbench
Desktop Client
BrowseFolders
Ad-hoc Changes
Define Favorites
Standard Changes
ServiceManager
Desktop TransformEngine
Change Scripts Doc Lists
48What 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