“using openedge, corticon, rollbase and node.js to create a dynamic, rule- and model- driven...
TRANSCRIPT
“Using OpenEdge, Corticon, Rollbase and Node.js to create a dynamic, rule- and model-driven Web-UI”
Mike LiewehrAKIOMA Software
2
Agenda
The Idea
The Solution
Technical overview
Architecture explained on a live sample
Detailed technical explanation
Q&A
3
The Idea
“Building web based configuration forms for self service sales of complex productswithout coding”
The Idea
4
Build complex, web based configuration forms without codingExamples:
…Car configurator
…custom-built machines
…Online Insurance Enrollment
Technically these are all similar
The previous Solution
Creating Data Structure(Database, etc.)
Design and coding of the web-based configuration forms
Definition and coding of the configuration rules (logic)
Time-to-Market of 6-12 months
Enormous costs for development
Example
Short Term Plans Health
Applicant
Spouse
Children
Gender?Male Female
Tobacco use?Yes No
Pregnant?Yes No
Dental
Rules
AKIOMA.Config!
Data Structure
Short Term Plans
HealthDental
Applicant
SpouseChildren
Gender?MaleFemale
Tobacco use?YesNo
Pregnant?YesNo
ConfigurationForm
Rules
AKIOMA.Config!
Short Term Plans Health
Applicant
Spouse
Children
Gender?Male Female
Tobacco use?Yes No
Pregnant?Yes No
Dental
11
Requirements and challenges
Data definitions vary greatly (cars, machines, people, policies…)• Need a way to define data definition by end-user
Rich Browser-based UI• UI has to be very flexible and dynamic, support for rich components
Complex rules, that are fully customer driven• Allow to define complex rules without coding
Performance! • UI has to adapt in real-time
Challenges that came up when building the solution…
12
Technology stack used
Challenges that came up when building the solution… …and the Products to solve them:
Data definitions vary greatly (cars, machines, people, insurance…)• Progress Rollbase
Rich UI which has to be very flexible and dynamic• AKIOMA HTML5-Client
Complex rules, that are fully customer driven• Progress Corticon
Performance! -> UI has to adapt in realtime• Node.JS / Socket.IO / node4Progress / ABL
13
Technical details
Server
• Rulesheet• Vocabulary
Corticon Rulesengine• Socket.IO• Node4Progress
Node.js
Client
• HTML5• JavaScript• SWAT UI• Socket.IO
Webbrowser
• screenDS• AKIOMA
UIConnector
OpenEdge Appserver
Technical details
15
Server
Client
ABCD
1234
ABCD
1
3
- HTML 5- JavaScript- SWAT UI- Socket.IO
OE Appserver- ScreenDS- AKIOMA
UI Connector
Node.js- Socket.IO- Node4Progress
Corticon Rules Engine- Rule Sheet- Vocabular
8
24
4
4
8
Introduction to Node & Node4Progress
16
About Node Server side javascript engine Lightweight, scalable and fast Implements non-blocking programming model
using callback procedures Allows you to build web applications with features
that cannot be accomplsihed any other way Hot technology
Microsoft is going Node, Progress is going Node, everybody is going Node
Introduction to Node & Node4Progress
17
About node4progress Bridge for accessing business logic on appserver directly from
Node Developed by Frank Hilhorst from Progressive Consulting Open Source Small foot print (4MB) Fast Easy to install
Npm install node4progress Communicates with appserver through Java
OpenClient
Node4Progress Features and characteristics
18
Supports 2 methods for calling an appserver procedure Calling a handler Dynamic appserver call
Employs dataset object modelled after Progress ProDataset
Converting output parameters of an Appserver procedure into a JSON structure
19
{"output":{ "OutputParametes-1" : ".....", "OutputParametes-2" : ".....", "dsCustomer" : {...}, “ErrMsg" : "" }, "error": "“}
Root level output tag contains output parameters from appserver procedure
Root level error tag contains error message if execution of appserver procedure failed
Calling a handler
20
var node4progress = require("node4progress")(null);var handler = "handlers/CustomerHandler.p";var inputPars = "NumCustomersToPull=2";
node4progress.callHandler(handler, inputPars, function(err,result){
console.log(result);});
Approach to calling any appserver procedure dynamically
21
Define appserver procedure to call Node4progress.setAppSvrProc(....);
Define each parameter Node4progress.setParameter(......);
Define callback procedure Invoke appserver procedure
Node4progress.invoke(callback);
22
Node.js / Socket.IO
Node.js required for Socket.IO
Why we used Node.js
Easy to use messaging from server to client (browser)
Shields us from browser incompatabilities
Fast
23
Corticon
Complex rules without any coding
Why we used Corticon
Easy integration with OpenEdge
Very good API
Fast
24
Rollbase
Can create apps very rapidly
Why we used Rollbase
Integration with OpenEdge
API available
Easily create / change data structure (no coding, no DBA)
25
wishlist
Access to all functionality through APIs
1 common Repository for all Progress Products
1 Visual Design Tool
Native node.js integration (like Edge.js)
Further integration of Progress Products
Web-ui and Multitenancy for all products
26
Summary
Progress offers great products
Combined they provide even more value
The whole is more than the sum of its parts
Node.JS is here to stay and provides great value for Progress partners