“using openedge, corticon, rollbase and node.js to create a dynamic, rule- and model- driven...

27
Using OpenEdge, Corticon, Rollbase and Node.js to create a dynamic, rule- and model-driven Web-UIMike Liewehr AKIOMA Software

Upload: bertram-henderson

Post on 17-Dec-2015

244 views

Category:

Documents


4 download

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

?

If „male“ dont ask for pregnancy

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

10

Live Demo

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

14

Detailed explanation

Build some stuff to see how everything works together

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

27

Questions?

Questions?