Download presentation
Presentation is loading. Please wait.
Published byNorman Ellis Modified over 9 years ago
1
Less code, More logic. FY13 Genero Roadmap March
2
Roadmap FY13 Q4 v2.41 MR* V2.50 (Dec 07, 12**) (Dec 10, 13**)
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 - BAM improvements - Form designer improvements - Database management - Mac OSX - Chinese - Code Editor & integrated diff - Web Services debugging - Tools - 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 JUST RELEASED FIRST HTML5 RELEASE – PRODUCTION APPS NOW 4GL 7.35 COMPATIBILITY WEB SERVICES SOAP 1.2 NETEZZA DRIVER SUPPORT – SEVERAL CUSTOMERS vNEXT NEXT 18 MONTHS SUPPORT MS SILVERLIGHT 5 FULL IMPLEMENTATION OF HTML5 – DESKTOP REFERENCE FEATURES SSO SECURITY - CLOUD BAM FEATURES FOR MOBILE APPS, RIA DEMAND FROM CHINA NEW FEATURES IN GRW PIVOT TABLES FINER COLOUR MANAGEMENT * Maintenance Release **General Availability
3
Roadmap FY13 Q4 Genero v2.50, Genero Studio v2.50,
Genero Report Writer v2.50, Genero Mobile v1.0.
4
Q&A Genero
5
Genero v2.50 Summary Modular forms, Modular dialogs, JSON class, SSO,
HTML5 improvements, UTF-8 with character length semantics, Windows 8 tablet support.
6
Genero v2.50 Modular Forms Reuse common forms, Avoid monolithic forms,
Facilitate maintenance. 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
7
Genero v2.50 Modular Forms Subform defined in separate .per file
donations.per LAYOUT TABLE { DATE Amount Reason [p_date][p_amount ][p_reason ] } 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.*);
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. 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 MAIN
9
Genero v2.50 Modular dialogs
Code more readable & usable, Define dialogs in separate modules, Subdialogs declared like functions, Separate subdialog testing, Easier variable naming. 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 INPUT END DIALOG
10
Genero v2.50 HTML5 improvements – GDC compatibility
Automatic scroll areas, Start menu with tabbed container, Frozen table columns, Splitter between layout items, Treeview.
11
Genero v2.50 HTML5 improvements – GDC compatibility
Automatic scroll areas GDC HTML5
12
Tabs select applications StartMenu runs applications
Genero v2.50 HTML5 improvements – GDC compatibility Tabs select applications StartMenu with tabbed container StartMenu runs applications
13
Left-most column is frozen Scrolls in unfrozen part of table
Genero v2.50 HTML5 improvements – GDC compatibility Frozen table columns GDC Left-most column is frozen Scrolls in unfrozen part of table
14
Genero v2.50 HTML5 improvements – GDC compatibility
Splitter between layout items Handle redefines split between StartMenu and Form Scrollbar set if container too small
15
Genero v2.50 JSON class Java Script Object Notation
Fat-free alternative to XML, Lightweight, easy-to-read, data-interchange format, Subset of Java Script, Minimal, textual, easy to parse, Built on two structures: A collection of name/value pairs: object, record, hash table, keyed list, or associative array, An ordered list of values: array, vector, list, or sequence. Sample JSON object: { "name": "Jack (\"Bee\") Nimble", "format":{ "type": "rect", "width": 1920, "height": 1080, "interlace": false, "frame rate": 24 }
16
Genero v2.50 JSON class Provides methods to parse & convert a JSON string to a record variable, JSON class methods: util.JSON.parse() util.JSON.stringify() util.JSON.format() Util.JSON.proposeType() IMPORT util MAIN DEFINE cust_rec RECORD cust_num INTEGER, cust_name VARCHAR(30), orderids DYNAMIC ARRAY OF INTEGER END RECORD DEFINE js STRING LET cust_rec.cust_num = 345 LET cust_rec.cust_name = "McMaclum" LET cust_rec.orderids[1] = 4732 LET cust_rec.orderids[2] = 9834 LET cust_rec.orderids[3] = 2194 LET js = util.JSON.stringify( cust_rec ) DISPLAY util.JSON.format( js ) 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
17
Genero v2.50 JSON class – weather example
18
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( :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 = " 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
19
Genero v2.50 Single Sign On (SSO) w/ SAML & OpenID
Access control to independent, related software systems, Log in once to all systems. SAML OpenID
20
Genero v2.50 UCS Transformation Format (UTF-8)
Prior Genero versions use ‘byte’ length semantics, Eg: DEFINE var CHAR(10)– 10 bytes, In UTF-8, characters encoded w/ variable number of bytes, So in UTF-8, above DEFINE stores: 10 ASCII chars: (1 byte = 1 char), 5 accentuated chars: (2 bytes = 1 char), 3 Asian ideograms: (3 bytes = 1 char). Genero v2.50 uses ‘char’ length semantics. DEFINE var CHAR(10)-- 10 characters, automatic storage, Stores 10 characters in any language/character set. Read more: Understanding ‘length semantics’ Character size unit and length semantics UTF-8
21
Q&A Genero Mobile
22
Genero Mobile Summarye responsive to change
Smartphone & tablet, Connected/disconnected apps, iOS & Android, Native DVM, Native UI, SQL Lite, JSON/RESTful web services.
23
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
24
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
25
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" COMMAND "update" DISPLAY "update" END MENU END FUNCTION
26
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
27
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: "],[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= &ext=JPG","asset.jpg") ON ACTION back EXIT MENU END MENU END FUNCTION
28
Genero Mobile Embedded relational database
SQL-Lite Illinois Iowa Wichita CA California Washington New York WA NY Master Detail
29
Genero Mobile Embedded relation database – code segment
SQL-Lite 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 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.
30
Q&A Genero Studio
31
Genero Studio Summary Genero Mobile, BAM improvements,
Database management, Subversion collaboration tools, Build system improvements, Form designer, MAC OSX, Chinese.
32
Genero Studio Genero Mobile
Design mobile apps, Build, test, package.
33
Genero Studio BAM improvements
BA Diagram constraints management Setup permits definition of constraints on items & relations, Diagram editing uses definitions to show valid combinations. Meta-schema via references Properties in Forms, Reports Data reference properties, Enables single, central store, Overriden locally when necessary, Meta-schema updates apply to all forms & report data.
34
Genero Studio BAM improvements
New template set Built-in ‘find’, Native serial management for Informix, Additional checks to maintain database consistency, Additional <POINT>,<BLOCK> sections for custom code.
35
Genero Studio BAM improvements
Web Services Model SOAP Web Service servers, Model as standalone or generate from form. Provides all operations available for manual data entry (CRUD)
36
Genero Studio Database management
Update script generation Mods made in schema editor create update script to apply to all target databases, Upgrade scripts also take care of data.
37
Genero Studio Database management
Schema diffs Compare two schemas, Migrate changes from first schema to second, Analysis displayed in schema editor, Used in conjunction with ‘update script’, will upgrade a database to new schema.
38
Genero Studio Database management
Keys & index differentiation Primary key, secondary key definitions now explicit, Clearly differentiated from indexes even when user decides not to define these constraints at the database level.
39
Genero Studio Subversion collaboration tools
SVN Blame, Developer traceability for each line of code SVN Diff, SVN benefits from new integrated diff tool SVN Lock. File locking while editing, View repository locks for all users, Good for binary files & those difficult to analyze, Locks owned by user until released.
40
Genero Studio Build system enhancements
Multiple language support, Include builds for Java, C, etc... Compile Java/C extensions within project. Customizable link/executions rules. Define link & execution rule, Integrate better w/ 3rd party build systems. eg. makefile based projects.
41
Genero Studio Form Designer
Enhanced form wizard Shows foreign key relations, NULL constraints… Easier to create complex queries & select fields.
42
Genero Studio Form Designer
Top Menu editor, Edit directly in design view Colour & images. Rendered in design view
43
Genero Studio New ‘diff’ tool
Compared files are editable, Uses code editor features, Syntax highlighting, goto definition… Line differences shown for current diff block, Dual view mode. Single pane – differences in a single document, Dual panes – compares 2 documents in separate views.
44
Genero Studio Code Editor based ‘diff’ tool
Integrated ‘diff’ Display differences between any open Code Editor file and a reference file, Reference file can be: 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.
45
Difference in line highlighted (currently selected ‘diff’)
Genero Studio Code Editor based ‘diff’ tool Integrated ‘diff’ Display modes: Standard – no differences are shown, Single pane – differences appear in single document, Single diff pane with deleted items – differences appear in single document with deleted lines, Dual diff pane – 2 documents, read-only reference and editable open document. Deleted Added Modifed Deleted hidden Deleted Difference in line highlighted (currently selected ‘diff’)
46
Genero Studio Mac OSX
47
Genero Studio Simplified and Traditional Chinese
48
Q&A Genero Report Writer
49
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
50
Genero Report Writer Pivot tables
Charts with multiple dimensions, Table with fixed column role types (measure & dimension), Table rows known as ‘facts’.
51
Genero Report Writer Table layout
Table object manipulates columns, lines and cells for easier formatting and alignment Header A Header B Header C Header 1 Header 2 Header 3 Header 4 Header 5 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
52
Genero Report Writer Quick response (QR) codes
Hello World: width="3cm" Hello World: size not specified (default error correction (3))
53
Genero Report Writer ’Back-side’ printing
Efficient printing of repeated verso pages
54
Genero Report Writer Designer enhancements
Trigger updates, Report designer smartly recovers triggers on data source changes Designer trigger editing. Trigger selection easier w/ keyboard shortcuts & menus
55
Genero Report Writer Designer enhancements
Display object labels In design view, object labels optionally displayed instead of expressions, Enables naming objects for easier retrieval.
56
Genero Report Writer Designer enhancements
Footers & headers In design view, footer appears at section end
57
Genero Report Writer Designer enhancements
Smart objects Create objects based on context "Class“ Each object in template can be given a class (header, row), Used when creating an element, Eg: when adding a field: object becomes a label when added to a table header, becomes an expression when added to a table row.
58
Genero Report Writer Section rotation with child elements
59
Genero Report Writer Client-side runtime error dialog
New runtime error dialog Cause of error displayed
60
Q&A Thank you
61
Genero Report Writer Extended Channel Interpretations (ECI)
Encodes bar code image interpretation: Data compressed? If so, how? Data part of a larger message? If so, which part? Data encoded in a non standard way? If so, which?
Similar presentations
© 2025 SlidePlayer.com Inc.
All rights reserved.