Title: Delivering flexible applications using datamanagement patterns
1Delivering flexible applications using
data-management patterns
- Willem de Vries, Remia C.V.
- Simon Jasperse, Kiboko
2Abstract
- Remia uses CoolPlex for software development,
for its ability to design abstract software
patterns. - A set of patterns is presented that enables
end-users to configure parts of an application. - The architecture of the Remia pattern-library
will be presented from the application /
development perspective.
3- Willem de Vries, Remia C.V.
- IT Management and alignment
- 15 years IT experience
- Responsible for Application Architecture
- User-role for pattern requirements
4Agenda
- Remia, the company
- Remia and Plex
- Rolodex
- Remia Patterns
- Application
- Design
- Plex
- Observations
- ? time
5Remia, The Company
- 75 years of food manufacturing
- 300 employees
- Flexibility as a strategic approach
- IT-systems should support
- rapid change
- diversified processes
- IT-policy with strong development component
6Remia and Plex
- Long term AS/400 - iSeries experience
- Using 2E since 1991
- Plex since 1999 for
- quality through standards enforcement
- speed through reuse of functional patterns
- Pattern development
- Framework-approach vs.
- Explicit experience
7Rolodex the application
- Centralised customer-info repository
- Flexibility structural perspective
- different channels, different info
- Flexibility process perspective
- short time to change
- independent from IT department
- Requirement user perspective
- easy and comprehensive
8Rolodex The Project
- Base Layer
- Separation of Logical and Physical
- Introduction of Replace - entity
- Separation of UI and DB models
- First phase of application project
- Redesign of Base Layer
- Build of additional patterns in sync with
Application Development
9Rolodex Categories of Patterns
- Technical patterns
- Synchronisation / consolidation of data
- History
- Supporting patterns
- Polymorphism
- Functional patterns data-flexibility
- User Managed Data
- Query
- XML
10User Managed Data
- User perspective
- Definition of questions
- Conditional application of question-groups
- Developer perspective
- Creation of answer-formats
- Application within owner-context
- Practice
- Used within 4 different contexts
11Comparison to _UserData
- Goals are comparable
- Difficult to adjust _UserData to Remias
BasePattern - UI of _UserData too constrained
- Limited run-time flexibility in _UserData
- Didnt like the licensing model..
12Query
- User perspective
- Conceptual vs. Table/Column view
- Tree-wise presentation of compound queries
- Developer perspective
- Creation of answer-context
- Creation of support for elementary concepts
Datatype Operators - Technical ODBC AS/400 support
13Comparison to Filter
- Filter can be implemented fast
- Drawbacks are
- attached to grid
- based on single view
- restricted operator-support for AS/400
implementation
14XML
- User perspective
- Flexible presentations layout
- Selective presentation
- Developer perspective
- New schemata
- Schema-extensions
- Practice
- XML-based presentation combines with configurable
data support
15- Simon Jasperse, Kiboko
- 10 years Agronomist UN Africa
- 6 years Obsydian gt Advantage Plex
- Application Development
- Pattern Design / Development
- Free-lance consultant
16Patterns User Managed Data
- Application Demonstration
- Enter relation data
- Specify data for relation type
17Patterns User Managed Data
Relation
Relation Type
DataOwner
Characteristic
Delivery Conditions
Product Sales
Use in kg/week (num) Type of Product (list)
Competitor (list)
Data (format)
ListData
18Patterns User Managed Data
19Patterns User Managed Data
- Interface Implementation, Data Entry
Data Value
Characteristics
Data Entry, Format
20Patterns User Query
- Create and run query
- Type A users in Java land, attending Edge 2002
21Patterns User Query
- Query example
- Type A users in Java land, attending EMEA
- Type A AND Java AND attending EMEA
22Patterns User Query
- User Query Pattern
- ERD
- Combine queries (AND /OR)
- UI to build combinations
- Query by Platform
- AS400 - file pointer
- ODBC - SQL
23Patterns User Query
- Polymorphism Pattern
- Super - Subtype
- Subtype
- owned by supertype (query)
- shared functionality (run query)
- distinct functionality (query view / fields)
24Patterns Polymorphism
Call RunQuery
Dispatcher
Super Type
Dispatchers
Runquery
Common Functionality
View1
View7
25Patterns User Query
Relation
Query_ Owner
Query
26Patterns User Query
Call RunQuery
27Patterns XML/XSL
28Patterns XML/XSL
- XML generation
- DOM for xml generation
- Scripting for DOM control
- Conform with Plex conventions
29Patterns XML/XSL
- XML Writer
- Abstract functions
- Write xml data from block/single fetch
- XML generation options
- Keys in node Attributes
- Field Names for nodes
- Impl Names for nodes
30Patterns XML/XSL
- XML Writer Tree structure through object scoping
- Function name gt Node Name
- Meta calls and parm mapping
- Field names for field tags
MijnAgenda.xml
XML Generator function
31Patterns XML/XSL
- XML Writer Implementation
- Inherit from abstract functions
- Replace View / Fetch functions
32Patterns XML/XSL
- Display XML - XSL, ActiveX
33Patterns XML/XSL
- Display XML - Runtime script generation to
combine XML and XSL
lthtmlgt ltbodygt ltscript languageVBScriptgt set xml
CreateObject("Microsoft.XMLDOM") xml.async
false xml.load("klnkaart.xml") set xsl
CreateObject("Microsoft.XMLDOM") xsl.async
false xsl.load("Basis.xsl") document.write(xml.tra
nsformNode(xsl)) lt/scriptgt lt/bodygt lt/htmlgt
34Patterns XML/XSL
Relatie.xml
- XML for data exchange between platforms
- Data transfer
- 1 table 1 file
- Keys gt Attributes
35Patterns XML/XSL
- XML for data exchange
- Process Data Communication Files
DownloadInfo.xml
36Observations
- Flexibility and patterns
- Balancing between developer and user
- Weighing reusability and initial investment
- Application Building
- Poor impact analysis
- Huge number of objects
- Practical results
- Fast implementation when needed
- Small team delivers
37Discussion Questions
deVries_at_remia.nl simon_at_kiboko.nl www.kiboko.nl