Genero Clients Overview

Download Report

Transcript Genero Clients Overview

Less code,
More logic.
FY13 Genero Roadmap
March 2013
www.4js.com
Roadmap
FY13 Q4
v2.41 MR*
(Dec 07, 12**)
Genero
- GAS / GWC
- HTML5 theme improvements
-Uses native iOS & Android widgets
- Genero hybrid client templates
- Customizable project templates for Android 4 &
iOS 5 SDKs
- Support for Android 4 & iOS 5 native
browsers
- Compatible with GWC-SL & GWC-AJAX
- Support for “traditional mode”
- Stored table settings support
- Move/reorder columns
- Hide, show columns
- Stretchable and GDC-compatible layout
(except splitters)
Genero Studio
- Centralized DB operations & constraints
- New BAM templates
- CRUD - activate/deactivate menu options
V2.50
(Dec 10, 13**)
Genero
- Genero Mobile
- Modular Forms/Dialogs
- JSON class
- UTF-8
- GAS/GWC
- SSO (OpenID, SAML)
- Application deployment framework,
- HTML 5 enhancements,
- Windows 8 Tablet support,
- GridChildrenInParent, FrozenColumns,
Tabbed Container, Splitters, ..
- Performance improvements.
- Compressed content, protocols review...
- Web Service language extensions
- New utilities for encryption, http and html
Genero Studio
- Genero Mobile
- BAM improvements
- Form designer improvements
- Database management
- Mac OSX
- Chinese
- Code Editor & integrated diff
- Web Services debugging
- Tools
* Maintenance Release
**General Availability
- SVN Blame, Lock mode
- Build/link rules extensions
- 3rd party build tool support
Genero Report Writer
- Pivot tables
- Table layouts
- QR codes
- ‘Backside’ printing
- Designer enhancements
- Section rotation
- Improved HTML rendering
- Web Report Viewer
- Client-side error display
- Java API
Roadmap
FY13 Q4
Genero v2.50,
Genero Studio v2.50,
Genero Report Writer v2.50,
Genero Mobile v1.0.
FY13 Roadmap
Executive Summary
Page | 3
Q&A
Genero
Genero v2.50
Summary
Modular forms,
Modular dialogs,
JSON class,
SSO,
HTML5 improvements,
UTF-8 with character length semantics,
Windows 8 tablet support.
FY13 Roadmap
Executive Summary
Page | 5
Genero v2.50
Modular Forms
Reuse common forms,
Avoid monolithic forms,
Facilitate maintenance.
FY13 Roadmap
Executive Summary
folder.per
LAYOUT
VBOX
GROUP(TEXT="Customer (Master Record)")
GRID
{ First Name:[fname
] Last Name:[last ] }
END
END --GROUP
FOLDER
PAGE(TEXT="Donations",COMMENT="edits the customers donations")
FORM "donations"
END --PAGE
Page | 6
Genero v2.50
Modular Forms
Subform defined in separate
.per file
FY13 Roadmap
Executive Summary
donations.per
LAYOUT
TABLE
{
DATE
Amount
Reason
[p_date][p_amount ][p_reason ]
[p_date][p_amount ][p_reason ]
[p_date][p_amount ][p_reason ]
[p_date][p_amount ][p_reason ]
[p_date][p_amount ][p_reason ]
[p_date][p_amount ][p_reason ]
[p_date][p_amount ][p_reason ]
[p_date][p_amount ][p_reason ]
[p_date][p_amount ][p_reason ]
}
END
END
ATTRIBUTES
p_date = FORMONLY.p_date,NOT NULL,DEFAULT=TODAY;
p_amount = FORMONLY.p_amount,NOT NULL;
p_reason = FORMONLY.p_reason,NOT NULL;
INSTRUCTIONS
SCREEN RECORD donations(FORMONLY.*);
Page | 7
Genero v2.50
Modular dialogs
Code more readable &
usable,
Define dialogs in separate
modules,
Subdialogs declared like
functions,
Separate subdialog testing,
Easier variable naming.
FY13 Roadmap
Executive Summary
folder.4gl
IMPORT FGL donations
DEFINE fname,last VARCHAR(50)
DEFINE m_details RECORD
clubmember INT,
otherdetail CHAR(50)
END RECORD
MAIN
OPEN FORM f FROM "Folder"
OPTIONS INPUT WRAP
DISPLAY FORM f
LET fname="Willi"
CALL donations.fill()
DIALOG ATTRIBUTES(UNBUFFERED)
INPUT BY NAME fname,last ATTRIBUTES(WITHOUT DEFAULTS)
:
:
END INPUT
SUBDIALOG donations
INPUT m_details.* FROM details.*
:
:
END INPUT
:
:
END MAIN
Page | 8
Genero v2.50
Modular dialogs
Code more readable &
usable,
Define dialogs in separate
modules,
Subdialogs declared like
functions,
Separate subdialog testing,
Easier variable naming.
FY13 Roadmap
Executive Summary
donations.4gl
DEFINE donations DYNAMIC ARRAY OF RECORD
p_date DATE,
p_amount MONEY,
p_reason VARCHAR(250)
END RECORD
FUNCTION fill()
DEFINE i INT
FOR i=1 TO 5
LET donations[i].p_date
= TODAY -10 +i
LET donations[i].p_amount = i+1
END FOR
END FUNCTION
DIALOG donations()
INPUT ARRAY donations FROM donations.*
AFTER FIELD p_amount
IF donations[arr_curr()].p_amount<2.0 THEN
ERROR "must be at least 2 dollars:-)"
NEXT FIELD CURRENT
END IF
AFTER ROW
IF arr_curr()<=arr_count() THEN
DISPLAY “AFTER ROW donations:check row"
END IF
END INPUT
END DIALOG
Page | 9
Genero v2.50
HTML5 improvements – GDC compatibility
Automatic scroll areas,
Start menu with tabbed container,
Frozen table columns,
Splitter between layout items,
Treeview.
FY13 Roadmap
Executive Summary
Page | 10
Genero v2.50
HTML5 improvements – GDC compatibility
Automatic scroll areas
HTML5
GDC
FY13 Roadmap
Executive Summary
Page | 11
Genero v2.50
HTML5 improvements – GDC compatibility
StartMenu with tabbed container
Tabs select applications
StartMenu runs
applications
FY13 Roadmap
Executive Summary
Page | 12
Genero v2.50
HTML5 improvements – GDC compatibility
Frozen table columns
GDC
Left-most column is frozen
Scrolls in unfrozen part of table
FY13 Roadmap
Executive Summary
Page | 13
Genero v2.50
HTML5 improvements – GDC compatibility
Splitter between layout items
Handle redefines split between StartMenu and Form
Scrollbar set if container too small
FY13 Roadmap
Executive Summary
Page | 14
Genero v2.50
JSON class
Java Script Object Notation
o Fat-free alternative to XML,
o Lightweight, easy-to-read,
data-interchange format,
o Subset of Java Script,
o Minimal, textual, easy to
parse,
o Built on two structures:
o A collection of name/value
pairs: object, record, hash
table, keyed list, or
associative array,
o An ordered list of values:
array, vector, list, or
sequence.
FY13 Roadmap
Executive Summary
Sample JSON object:
{
"name": "Jack (\"Bee\") Nimble",
"format":{
"type": "rect",
"width": 1920,
"height": 1080,
"interlace": false,
"frame rate": 24
}
}
Page | 15
Genero v2.50
JSON class
Provides methods to parse &
IMPORT util
convert a JSON string to a
MAIN
DEFINE cust_rec RECORD
record variable,
cust_num INTEGER,
cust_name VARCHAR(30),
JSON class methods:
orderids DYNAMIC ARRAY OF INTEGER
END RECORD
o util.JSON.parse()
DEFINE js STRING
LET cust_rec.cust_num = 345
LET cust_rec.cust_name = "McMaclum"
o util.JSON.stringify()
LET cust_rec.orderids[1] = 4732
LET cust_rec.orderids[2] = 9834
o util.JSON.format()
LET cust_rec.orderids[3] = 2194
LET js = util.JSON.stringify( cust_rec )
util.JSON.format( js )
o Util.JSON.proposeType() DISPLAY
INITIALIZE cust_rec.* TO NULL
CALL util.JSON.parse( js, cust_rec )
DISPLAY cust_rec.cust_num, " ",
cust_rec.cust_name
END MAIN
Displays:
{
"cust_num": 345,
"cust_name": "McMaclum",
"orderids": [4732,9834,2194]
}
345 McMaclum
FY13 Roadmap
Executive Summary
Page | 16
Genero v2.50
JSON class – weather example
FY13 Roadmap
Executive Summary
Page | 17
Genero v2.50
JSON class – weather example
:
:
INITIALIZE daily_weather TO NULL
IF length(s) THEN
CALL util.JSON.parse(s, daily_weather)
END IF
CALL weather.clear()
FOR i=1 TO daily_weather.list.getLength()
LET weather[i].dt = DATETIME(1970-01-01 00:00:00) YEAR TO SECOND + daily_weather.list[i].dt UNITS SECOND
LET weather[i].temp =
daily_weather.list[i].temp
LET weather[i].night =
daily_weather.list[i].night
LET weather[i].eve =
daily_weather.list[i].eve
LET weather[i].morn =
daily_weather.list[i].morn
LET weather[i].pressure =
daily_weather.list[i].pressure
LET weather[i].humidity =
daily_weather.list[i].humidity
LET weather[i].id =
daily_weather.list[i].weather[1].id
LET weather[i].main =
daily_weather.list[i].weather[1].main
LET weather[i].description = daily_weather.list[i].weather[1].description
LET weather[i].icon = "http://openweathermap.org/img/w/", daily_weather.list[i].weather[1].icon
LET weather[i].speed =
daily_weather.list[i].speed
LET weather[i].deg =
daily_weather.list[i].deg
END FOR
DISPLAY util.JSON.format(s)
END FUNCTION
FY13 Roadmap
Executive Summary
Page | 18
Genero v2.50
Single Sign On (SSO) w/ SAML & OpenID
Access control to independent, related software systems,
Log in once to all systems.
o SAML
o OpenID
FY13 Roadmap
Executive Summary
Page | 19
Genero v2.50
UCS Transformation Format (UTF-8)
Prior Genero versions use ‘byte’ length semantics,
o Eg: DEFINE var CHAR(10)– 10 bytes,
o In UTF-8, characters encoded w/ variable number of bytes,
o So in UTF-8, above DEFINE stores:
o 10 ASCII chars: (1 byte = 1 char),
o 5 accentuated chars: (2 bytes = 1 char),
o 3 Asian ideograms: (3 bytes = 1 char).
Genero v2.50 uses ‘char’ length semantics.
o DEFINE var CHAR(10)-- 10 characters, automatic storage,
o Stores 10 characters in any language/character set.
Read more:
o Understanding ‘length semantics’
o Character size unit and length semantics
o UTF-8
FY13 Roadmap
Executive Summary
Page | 20
Q&A
Genero Mobile
FY13 Roadmap
Executive Summary
Page | 21
Genero Mobile
Summarye responsive to change
Smartphone & tablet,
Connected/disconnected
apps,
iOS & Android,
Native DVM,
Native UI,
SQL Lite,
JSON/RESTful web services.
FY13 Roadmap
Executive Summary
Page | 22
Genero Mobile
It’s 4GL, but not as we know it…
Native look & feel,
Combined with power of 4GL.
MENU "Test"
ON ACTION sub
CALL submenu()
ON ACTION showform
CALL showform()
ON ACTION winmess
CALL winmess()
ON ACTION dialog1
CALL dialog1()
ON ACTION dialog2
CALL dialog2()
ON ACTION showlist
CALL showlist()
COMMAND "submenu iphone"
CALL menu_iphone()
COMMAND "Exit"
EXIT MENU
END MENU
FY13 Roadmap
Executive Summary
Page | 23
Genero Mobile
Native UI combined with power of Genero
Native widgets
FUNCTION showform()
OPEN WINDOW wf with FORM "simple2"
LET test=3
LET date=TODAY
INPUT BY NAME test,check,date WITHOUT DEFAULTS
ON ACTION foo
DISPLAY "foo"
ON CHANGE check
DISPLAY "ON CHANGE check:",check
ON ACTION bar
DISPLAY "bar"
END INPUT
CLOSE WINDOW wf
END FUNCTION
FY13 Roadmap
Executive Summary
Page | 24
Genero Mobile
Native UI combined with power of Genero
Bottom pop-up dialog
FUNCTION dialog2()
MENU "Hallo dialog" ATTRIBUTES(STYLE="dialog“)
COMMAND "cancel"
DISPLAY "cancel"
EXIT MENU
COMMAND "delete"
DISPLAY "delete"
EXIT MENU
COMMAND "update"
DISPLAY "update"
EXIT MENU
END MENU
END FUNCTION
FY13 Roadmap
Executive Summary
Page | 25
Genero Mobile
Native UI combined with power of Genero
Swipe left to delete
FUNCTION showlist()
OPEN WINDOW f WITH FORM "simple"
FOR i=1 TO 100
LET arr[i].a=sfmt("item%1",i-1)
IF i MOD 2 == 0 THEN
LET arr[i].b="smiley"
ELSE
LET arr[i].b="pen"
END IF
END FOR
DISPLAY ARRAY arr TO arr.* ATTRIBUTES(UNBUFFERED)
ON ACTION cut
LET arr[5].a="cut"
LET arr[5].b="cut"
ON ACTION pen
LET arr[5].a="pen"
LET arr[5].b="pen"
ON ACTION smiley
LET arr[5].a="smiley"
LET arr[5].b="smiley"
ON DELETE
DISPLAY "deleted element at index :",arr_curr()
END DISPLAY
CLOSE WINDOW f
END FUNCTION
FY13 Roadmap
Executive Summary
Page | 26
Genero Mobile
Native UI combined with power of Genero
Access to native iOS apps
FUNCTION menu_iphone()
MENU "iphone"
COMMAND "dial a number"
CALL ui.interface.frontcall(
"standard","shellexec“,
["tel:03612219060"],[ret])
CALL fgl_winmessage(
"Message",sfmt("result:%1",ret),"info");
COMMAND "choose a photo"
LET dlg="choosePhoto"
GOTO photoDlg
COMMAND "make a photo"
LET dlg="makePhoto"
LABEL photoDlg:
CALL ui.interface.frontcall(
"iPhone",dlg,[],[retstr])
DISPLAY "retstr:",retstr
COMMAND "filetransfer 1st photo"
CALL fgl_getfile(
"assets-library:
//asset/asset.JPG?id=1000000001
&ext=JPG","asset.jpg")
ON ACTION back
EXIT MENU
END MENU
END FUNCTION
FY13 Roadmap
Executive Summary
Page | 27
Genero Mobile
Embedded relational database
SQL-Lite
Master
Detail
Illinois
Iowa
Wichita
CA
California
WA
Washington
NY
New York
FY13 Roadmap
Executive Summary
Page | 28
Genero Mobile
Embedded relation database – code segment
SQL-Lite
Close to SQL-92 standard,
Lightweight (~3-400 KB),
Embedded = no libraries,
Well suited for mobile,
UTF-8 for UNICODE apps,
Wide use – Adobe, Mozilla,
Open source.
DATABASE "custdemo.db+driver='dbm<dbmsqlite>'“
FUNCTION load_states()
DEFINE i SMALLINT
DEFINE rs RECORD LIKE state.*
DATABASE "custdemo.db"
CALL a_states.clear();
DECLARE cc_states CURSOR FOR
SELECT * FROM state
LET i=0
FOREACH cc_states INTO rs.*
LET i=i+1
LET a_states[i].code=rs.state_code
LET a_states[i].name=rs.state_name
END FOREACH
END FUNCTION
FY13 Roadmap
Executive Summary
Page | 29
Q&A
Genero Studio
FY13 Roadmap
Executive Summary
Page | 30
Genero Studio
Summary
Genero Mobile,
BAM improvements,
Database management,
Subversion collaboration tools,
Build system improvements,
Form designer,
MAC OSX,
Chinese.
FY13 Roadmap
Executive Summary
Page | 31
Genero Studio
Genero Mobile
Design mobile apps,
Build, test, package.
FY13 Roadmap
Executive Summary
Page | 32
Genero Studio
BAM improvements
BA Diagram constraints management
o Setup permits definition of constraints on items & relations,
o Diagram editing uses definitions to show valid
combinations.
Meta-schema via references
o Properties in Forms, Reports Data reference properties,
o Enables single, central store,
o Overriden locally when necessary,
o Meta-schema updates apply to all forms & report data.
FY13 Roadmap
Executive Summary
Page | 33
Genero Studio
BAM improvements
New template set
o Built-in ‘find’,
o Native serial management for Informix,
o Additional checks to maintain database consistency,
o Additional <POINT>,<BLOCK> sections for custom code.
FY13 Roadmap
Executive Summary
Page | 34
Genero Studio
BAM improvements
Web Services
o Model SOAP Web Service
servers,
o Model as standalone or
generate from form.
o Provides all operations
available for manual data
entry (CRUD)
FY13 Roadmap
Executive Summary
Page | 35
Genero Studio
Database management
Update script generation
o Mods made in schema editor create update
script to apply to all target databases,
o Upgrade scripts also take care of data.
FY13 Roadmap
Executive Summary
Page | 36
Genero Studio
Database management
Schema diffs
o Compare two schemas,
o Migrate changes from first
schema to second,
o Analysis displayed in
schema editor,
o Used in conjunction with
‘update script’, will
upgrade a database to
new schema.
FY13 Roadmap
Executive Summary
Page | 37
Genero Studio
Database management
Keys & index differentiation
o Primary key, secondary key definitions now explicit,
o Clearly differentiated from indexes even when user
decides not to define these constraints at the database
level.
FY13 Roadmap
Executive Summary
Page | 38
Genero Studio
Subversion collaboration tools
SVN Blame,
o Developer traceability for each line of code
SVN Diff,
o SVN benefits from new integrated diff tool
SVN Lock.
o File locking while editing,
o View repository locks for all users,
o Good for binary files & those difficult to analyze,
o Locks owned by user until released.
FY13 Roadmap
Executive Summary
Page | 39
Genero Studio
Build system enhancements
Multiple language support,
o Include builds for Java, C, etc...
o Compile Java/C extensions within project.
Customizable link/executions rules.
o Define link & execution rule,
o Integrate better w/ 3rd party build systems.
o eg. makefile based projects.
FY13 Roadmap
Executive Summary
Page | 40
Genero Studio
Form Designer
Enhanced form wizard
o Shows foreign key
relations, NULL
constraints…
o Easier to create complex
queries & select fields.
FY13 Roadmap
Executive Summary
Page | 41
Genero Studio
Form Designer
Top Menu editor,
o Edit directly in design view
Colour & images.
o Rendered in design view
FY13 Roadmap
Executive Summary
Page | 42
Genero Studio
New ‘diff’ tool
Compared files are editable,
Uses code editor features,
o Syntax highlighting, goto definition…
Line differences shown for current diff block,
Dual view mode.
o Single pane – differences in a single document,
o Dual panes – compares 2 documents in
separate views.
FY13 Roadmap
Executive Summary
Page | 43
Genero Studio
Code Editor based ‘diff’ tool
Integrated ‘diff’
o Display differences between any open Code Editor file
and a reference file,
o Reference file can be:
o
o
o
o
Last saved – displays differences with file saved on disk,
SVN – displays differences with original SVN file,
AG – displays differences with <BLOCK> and <POINT>,
Other – displays differences with another file.
FY13 Roadmap
Executive Summary
Page | 44
Genero Studio
Code Editor based ‘diff’ tool
Integrated ‘diff’
o Display modes:
o Standard – no differences
are shown,
o Single pane – differences
appear in single document,
o Single diff pane with deleted
items – differences appear
in single document with
deleted lines,
o Dual diff pane – 2
documents, read-only
reference and editable
open document.
FY13 Roadmap
Executive Summary
Deleted
Added
Modifed
Deleted hidden
Deleted
Difference in line highlighted
(currently selected ‘diff’)
Page | 45
Genero Studio
Mac OSX
FY13 Roadmap
Executive Summary
Page | 46
Genero Studio
Simplified and Traditional Chinese
FY13 Roadmap
Executive Summary
Page | 47
Q&A
Genero Report
Writer
FY13 Roadmap
Executive Summary
Page | 48
Genero Report Writer
Summary
Pivot tables
Table layouts
Quick Response (QR) codes
‘Backside’ printing
Designer enhancements
Section rotation
Improved HTML rendering
Web Report Viewer
Client-side runtime error dialog
Java API
FY13 Roadmap
Executive Summary
Page | 49
Genero Report Writer
Pivot tables
Charts with multiple dimensions,
Table with fixed column role types (measure & dimension),
Table rows known as ‘facts’.
FY13 Roadmap
Executive Summary
Page | 50
Genero Report Writer
Table layout
Table object manipulates columns,
lines and cells for easier formatting
and alignment
Header 2
Header 3
Header 4
Header C
L11
L12
L13
L14
L15
L16
L21
L22
L23
L24
L25
L26
L31
L32
L33
L34
L35
L36
L41
L42
L43
L44
L45
L46
L51
L52
L53
L54
L55
L56
Header 1
FY13 Roadmap
Executive Summary
Header 5
Header B
Header A
Page | 51
Genero Report Writer
Quick response (QR) codes
Hello World: width="3cm"
Hello World: size not specified
(default error correction (3))
http://www.4js.com
FY13 Roadmap
Executive Summary
Page | 52
Genero Report Writer
’Back-side’ printing
Efficient printing of
repeated verso pages
FY13 Roadmap
Executive Summary
Page | 53
Genero Report Writer
Designer enhancements
Trigger updates,
o Report designer smartly recovers triggers on data
source changes
Designer trigger editing.
o Trigger selection easier w/ keyboard shortcuts &
menus
FY13 Roadmap
Executive Summary
Page | 54
Genero Report Writer
Designer enhancements
Display object labels
o In design view, object labels optionally displayed
instead of expressions,
o Enables naming objects for easier retrieval.
FY13 Roadmap
Executive Summary
Page | 55
Genero Report Writer
Designer enhancements
Footers & headers
o In design view, footer
appears at section end
FY13 Roadmap
Executive Summary
Page | 56
Genero Report Writer
Designer enhancements
Smart objects
o Create objects based
on context "Class“
o Each object in template
can be given a class
(header, row),
o Used when creating an
element,
o Eg: when adding a field:
o object becomes a
label when added to
a table header,
o becomes an
expression when
added to a table
row.
FY13 Roadmap
Executive Summary
Page | 57
Genero Report Writer
Section rotation with child elements
FY13 Roadmap
Executive Summary
Page | 58
Genero Report Writer
Client-side runtime error dialog
New runtime error dialog
Cause of error displayed
FY13 Roadmap
Executive Summary
Page | 59
Q&A
Thank you
FY13 Roadmap
Executive Summary
Page | 60