sage erp x3 workbench how the version 7 workbench brings productivity in developing software
TRANSCRIPT
Sage ERP X3 Workbench
How the version 7workbench bringsproductivity in developing software
Version 7 technology – presentation 2
INTRODUCTION
• This presentation has been done in order to demonstrate the version 7 technology benefits
• It runs with a dedicated demo VM that will be supplied by the pre-sales team
• A detailed document will be added to explain the complete scenario
• Different level of details can be given
• Here, we will use the most detailed level (for developers)
Version 7 technology – presentation 3
Agenda
1. Why a development workbench inside an ERP?
2. The platform at a glance
3. Let’s see a demo
4. Conclusion
Version 7 technology – presentation
What are the needs of mid market companies?
Mid Market Company
Complex Processes
Integration to other solutions
Easy to use & efficient
Low cost & scalable
Mobility
Easy, reliable Personalisation
4
Version 7 technology – presentation
Version 7 workbench definition
Simple dictionaries
Get more done and faster with
the development tool when
adaptations are needed
Generated code
Object orientation gives reusable
code everywhere
Mid Market Company
Complex Processes
Easy, reliable Personalisation
Integration to other solutions
Low cost & scalable
Easy to use & efficient
Mobility
5
Version 7 technology – presentation
Mid Market Company
Complex Processes
Easy, reliable Personalisation
Integration to other solutions
Low cost & scalable
Easy to use & efficient
Mobility
Dedicated web clients for mobile
and tabletsGo mobile
because the customers want to go where their business takes
them
The same code for mobile, tablet,
desktop
Local storage in disconnected
mode with drafts
Version 7 workbench definition
6
Version 7 technology – presentation
Mid Market Company
Complex Processes
Easy, reliable Personalisation
Integration to other solutions
Low cost & scalable
Easy to use & efficient
Mobility
Easy integration with web services
Have a better automation in
your development process
Clear separation between UI and business logic
QA tools ensures a better quality from beginning
Version 7 workbench definition
7
Version 7 technology – presentation
Mid Market Company
Complex Processes
Easy, reliable Personalisation
Integration to other solutions
Low cost & scalable
Easy to use & efficient
Mobility
Inbuilt requests and statistics toolPredefined KPIs
Give the users of your solutions the real time insight
Process mapsand relevant KPIs
for every user
An integrated data warehouse for BI solutions
Version 7 workbench definition
8
Version 7 technology – presentation
Mid Market Company
Complex Processes
Easy, reliable Personalisation
Integration to other solutions
Low cost & scalable
Easy to use & efficient
Mobility
Power users can set page layouts
No more dev skillsServe better the users of your solutions and enhance the
customer service to grow their
business
A full web UI with simplicity in mind
Web dashboards and search based
web navigation
Version 7 workbench definition
9
Version 7 technology – presentation
Mid Market Company
Complex Processes
Easy, reliable Personalisation
Integration to other solutions
Low cost & scalable
Easy to use & efficient
Mobility
Eclipse debugger and editor eases
code management
Save costs in development and
maintenance process
Code simpler and more reliable saves costs
Cohabitation of specific & vertical
easier
Version 7 workbench definition
10
Version 7 technology – presentation
Mid Market Company
Complex Processes
Easy, reliable Personalisation
Integration to other solutions
Low cost & scalable
Easy to use & efficient
Mobility
Less RDBMS cost with search & document DBExpand the
business to more people including occasional users
and scale seamlessly the solution when
they grow
Scalable and cloud optimized
technologies
Stateful/stateless mode decrease lock bottlenecks
Version 7 workbench definition
11
Version 7 technology – presentation
How did evolve the architectureto answer to all these needs?
Mid Market Company
Complex Processes
Integration to other solutions
Easy to use & efficient
Low cost & scalable
Mobility
Easy, reliable Personalisation
12
Version 7 technology – presentation
Meta-data
DB requesterstatistics
4GL IDE LDAP authentication
Web client Windows clientUser portal &
visual processes Office integration
The platform evolution at a glance
Multi endpoint web server (node.js)
Multi-browser(Chrome, Firefox, IE, Opera, Safari)
Classic pages Mobile & tablets MS-Office client
Administration tools Workflow engine Reports
Import / Export Batch server BI datawarehouse
Web application server
Multi-OS engine (AIX, Linux, Windows)
4GL IDE LDAP authenticationDB requester
statistics
Meta-dataMeta-data
Page personalization Common servicesSearch, web services…
Storage & Collaboration area
Drafts, UI personalization,shared documents
AuthenticationUser administration
Users, roles, teams
13
Version 7 technology – presentation
A scalable and cloud ready architecture
Load balancer
14
Version 7 technology – presentation
Stateless protocolCRUD management
A query page is displayedSelection and sorting criteria can
be refined, and paging done
A detail page is displayed
Click on a create link
Click on another detail link(zoom, “tunnel”…)
Click on an edit link
An edit page is displayed
statelessmode
Read instance on server
Query execution on server
Click on a detail link
Page display
User action
Events available
15
Version 7 technology – presentation
Input done on page : Modification returned
Click on a create link Click on an edit link
Stateful mode
Updates done on the instance(triggers control, propagate rules…)modified properties are sent back
Click on the save link
Global control are done, if errors, they are returnedUpdate is performed if everything is ok
Return to stateless mode (query or detail)
INIT event
An edit page is displayed
Stateful protocolCRUD management
Page display
User action
Events available
16
Native Architecture
V6 Safe X3 Web Server
Safe X3 Java Bridge Server
Syracuse servers (Node.JS)
Clients
Syracuse Global Architecture
X3 Process servers
EXTERNAL SOAP WS
X3SOAP WS
Safe X3Print Server
VT Terminal(s) Third party application
Database server
Collaborative database(MongoDB)
Search Engine(Elastic)
X3 Application server
VT Connectors
SMTP Server
❷
❼
❸ ❹
❺
❶
❻
❽
V6 and V7 technology can be used simultaneously
17
Version 7 technology – presentation
Security is a main topic on web environments
Web server security- Able to run in http or https- Able to use authentication based on Oauth 2 (google account, Microsoft live account),
Sage ID, but also LDAP directories- Identity is stored in a connection cookie
No password is sent over the network- Certificates based on private/public key are used to secure the connection between
the web server and the application serversThe X3 server runs in a sandbox
- An X3 process can only have access to a list of locationsA complete security test has been successfully passed
- Performed in the US on the cloud platform by an external security company
18
Version 7 technology – presentation
User and rights management
A user can have access to- Several roles- Multiple endpoints
A user is member of- Several groups- Several teams as owner, author,
or reader
Control access rights can be done- By function, company, site- With access code filtering- With security profiles for administration data
19
Do you want to know more?
Let’s have a demo !
Version 7 technology – presentation
Definition of the development we realizedA simple sales order management…
Sales order(header/line)
CRUD operations
Filter on status(created/shipped)
QA procedure
Test script
Random generation of
orders
See generation result
Simple request
Excel integration
Create / update orders with
A desktop UI
A mobile UI
Handle shipments
Shipment operation
Web service integration
Manage Test Inquire Handle UI
Expand1 2 3 4 5
21
Version 7 technology – presentation
What are the dictionary entities?
22
Version 7 technology – presentation
Class definition
A DICTIONARY THAT DESCRIBES DATA STRUCTURES
MAIN CHARACTERISTICS
DATABASE PERSISTENCEMAPPING INFORMATIONINDEXATION CONDITIONS
ASSOCIATED SCRIPTS HANDLING EVENTS
LIST OF PROPERTIES
SINGLE PROPERTIESCHILDREN INSTANCESCOLLECTIONSRICH DATA
LIST OF METHODS / OPERATIONS
STANDARD CRUDADDITIONAL STATEFUL METHODSADDITIONAL STATELESS OPERATIONS
ASSOCIATED SCRIPTS HANDLING EVENTS
23
Version 7 technology – presentation
Classes managementWriting code in classes
A class catches the whole business logic of an entity- A class is usable to manage consistent entities directly in a script without user
interaction- This is used when performing unit tests and must be considered as the first step (best
practices)- This means that in the script associated to a class, there is no reference to user
interactionThe user interface code can be written later
- The representation will refer to classes- Additional properties dedicated to UI will follow (data required for easing the data
entry: : assistants related data, additional information…)- Links will be defined to trigger class methods or operations, or additional UI operation.
24
Version 7 technology – presentation
Classes managementWriting code in classes
What code is generated for persistent classes?- All the code related to the read, write, update, delete operations- On header, lines, sub-lines, sub-sub-lines if necessary- All the code that has already be associated to the data types
(references, additional controls, default values can be defined once).- So dictionary descriptions can be enough the run a complex entity
What is the code we will have to add?- Complex operations or methods that cannot be described in meta data (shipping an
order, computing the total amount of an invoice by a simple formula…)- Controls or default values that are specific to a property in a class instance
25
Version 7 technology – presentation
EVENTS
CRUD related operationsClasses managementWriting code in classes
The additional code iswritten in events
DEFAULT VALUES
INITIALIZATION
Read an instanceCreate a new instanceREAD EVENTS
Assign / compute values in the class instance
Insert / Delete linesassign values on children instances
Call global methods
METHODS
EXECUTION
RULES (CONTROL,
PROPAGATE)
COLLECTION EVENTS
DEFAULT VALUES (LINES)
RULES (CONTROL, PROPAGATE) ON LINES
Trigger database insertion, deletion or update
EVENTS TRIGGEREDDURING THE DATABASE
UPDATE
CONTROL BEFORE / AFTER UPDATES EVENTS
CONTROL
INIT
ASSIGN or INPUTVALUES
TRIGGER UPDATE
26
Version 7 technology – presentation
The code associated to a class: Two labels present in the script
$PROPERTIES
Case CURPRO
When "CUSTOMER"
When "LINES.ITEM"
Case ACTION
When "INIT"
When "CONTROL"When "PROPAGATE"
$METHODSCase CURPTH
When ""
When "LINE"
Case ACTION
When "MY_POST"
When "AINSERT_CONTROL_BEFORE"
When "AINSERT_AFTER"
When "ADDLINE_AFTER"
When "AINSERT_BEFORE"
When "MYLINE_OPERATION"
Default values, controls, and
values propagation after an update
Global methods for the class &
CRUD related events
Lines class, collection methods &
CRUD related events
Rules triggered on properties of the class
Global methods associated to the class or to a children class
When "LINE.SUBLINE"
Grand children events if any…
Case ACTION
27
Version 7 technology – presentation
The code associated to a class: The context available in the events
$PROPERTIES
Case CURPRO
When "CUSTOMER"
When "LINES.ITEM"
$ACTIONCase CURPTH
When ""
When "LINES"
Rules triggered on properties of the class
Global methods associated to the class or to a children class
this = the header
this .CUSTOMER = the current value
this .snapshot.CUSTOMER = initial value
this .LINES(INDEX).ITEM = a line property
this = the current line
this .ITEM = the current value on the current line
this .snapshot.ITEM = initial value
this .APARENT.CUSTOMER = header value
When "CUSTOMER"
When ""
LET’S SEE IT28
Version 7 technology – presentation
How can we create a sales order ?
Examples:• QA test• Random order generator• Let’s see it
IN SERVICE MODEIN A SCRIPT:• USE AND FILL CLASS INSTANCES• CALL STANDARD CRUD METHODS
29
Version 7 technology – presentation
Language evolution :create an entity in service mode
The same language is still used, but with extensions:The same language is still used, but with extensions:Local Instance MY_ORD Using C_ORDER # Class pointer
declaration
MY_ORD = Newinstance Using C_ORDER… # Class instantiation
The same language is still used, but with extensions:Local Instance MY_ORD Using C_ORDER # Class pointer
declaration
MY_ORD = Newinstance Using C_ORDER… # Class instantiation
OK=Fmet MY_ORDER.AINIT # Call of a method
MY_ORD.CUSTOMER="MARTIN" # Property assignment
The same language is still used, but with extensions:Local Instance MY_ORD Using C_ORDER # Class pointer
declaration
MY_ORD = Newinstance Using C_ORDER… # Class instantiation
OK=Fmet MY_ORDER.AINIT # Call of a method
MY_ORD.CUSTOMER="MARTIN" # Property assignment
NUMLI=Fmet MY_ORDER.ADDLINE("LINES", [V]CST_ALASTPOS) # Line insertionMY_ORDER.LINES( NUMLI) .ITEM="CD100" # Property assignmentOK=Fmet MY_ORDER.AINSERT # Call of creation method
The same language is still used, but with extensions:Local Instance MY_ORD Using C_ORDER # Class pointer
declaration
MY_ORD = Newinstance Using C_ORDER… # Class instantiation
OK=Fmet MY_ORDER.AINIT # Call of a method
MY_ORD.CUSTOMER="MARTIN" # Property assignment
NUMLI=Fmet MY_ORDER.ADDLINE("LINES", [V]CST_ALASTPOS) # Line insertionMY_ORDER.LINES( NUMLI) .ITEM="CD100" # Property assignment
The same language is still used, but with extensions:Local Instance MY_ORD Using C_ORDER # Class pointer
declaration
MY_ORD = Newinstance Using C_ORDER… # Class instantiation
OK=Fmet MY_ORDER.AINIT # Call of a method
30
Version 7 technology – presentation
Requester : Main principles of V7
GENERATED EXTRACTION SCRIPT
DATABASE
EXECUTION TIME
Data is extracted from database
and stored in JSON (text format)
[{ "cust_id":"JOHNDOE","balance":2000,…},{ "cust_id":"MARTIN","balance":4000,…},{ "cust_id":"JIMMY","balance":6500,…},]
DISPLAY TIME
“classical” requester(GESALH)
“graphical” requester(GESALT)
SETUP TIME
31
Version 7 technology – presentation
How can we create a sales order ?
Examples:• QA test• Random order generator• Let’s see it
IN SERVICE MODEIN A SCRIPT:• USE AND FILL CLASS INSTANCES• CALL STANDARD CRUD METHODS
LET’S USE A PAGEIN CLIENT MODE BY CREATING A REPRESENTATION
32
Version 7 technology – presentation
The principles of page personalization
BROWSER
A link to a new page is triggered
The page layout is displayed
The page is filledwith data
WEB SERVER (NODE.JS)
Is there a personalized page for the user and the
role
The page personalization applies on the prototype
SAGE ERP X3 SUPERVISOR
DICTIONARIES
GENERATED SCRIPT
DATABASE CLASS LOGIC
A prototype is requested
The corresponding data is sent
Yes
No
The prototype is returned
33
Version 7 technology – presentation
Representation definition
A NEW DICTIONARY THAT DESCRIBES THE USER INTERFACE
MAIN CHARACTERISTICS
EMBEDDED CLASS AND METHODSFACETS (“use cases”) available: lookup, query, details, edit, summaryTARGET DEVICE (mobile, tablet, desktop)
SCRIPTS HANDLING UI EVENTS
ADDITIONAL PROPERTIES USED FOR UI PURPOSE ONLY
LINKS DEFINITION CALL OF METHODS AND OPERATIONSLINKS ON NEW PAGES…
PAGE ORGANIZATIONDEFAULT BLOCKS AND SECTIONSPROPERTIES PRESENCE PER FACETCHANGEABLE BY PAGE PERSONALIZATION
34
Version 7 technology – presentation
Representation dictionary:UI organization
The organization of the representation is hierarchical:- A set of sections containing blocks, every block contains fields that can be member of a collection- The widget chosen and the geographic place of the elements is done by authoring- Links can be placed at
Section A
Block A1 Block A2
FIELD F01
FIELD F02 CLOB FIELD F07FIELD F03
COLLECTION F04,F05,F06
Section B
Block B1
Block B2
FIELD F08
FIELD F09
COLLECTION FIELD F11
FIELD F10
L
L
L
L
L
L global level field level grid level grid line level
L
L
LL
35
Version 7 technology – presentation
Mobile development principlesWhat is required to define a mobile application?
- The same class than for the desktop development- A dedicated simplified representation- A dashboard with a menu including menu items
And now, we can install the application…
…. and use it
36
Version 7 technology – presentation
Mobile features
A dedicated user interface- With the ability to manage a
local cache (favorites)- With a local storage of
pending drafts and further synchronization
- With a dedicated
personalization mode
37
Version 7 technology – presentation
Advanced features
Create a shipment- Define shipment classes with no code
- Create a simple representation with links
- Call a shipment operation that executes two CRUD methods in a single transaction:
- Update the order document
- Create the shipment document
Call external REST web services- In GET mode (get the price from a service)
- In PUT mode (publish the shipment on external web server)
Use various APIs- Example: create a text document in the document database
38
Version 7 technology – presentation
Let’s summarize
We can create, edit, delete, and ship our order
We created 4 tables, 6 other dictionary items, and 6 scripts (less than 400 lines)
We can personalize our UI, use MS-Office as client, use the mobile…
39
ConclusionA development tool that goes
faster
Robust code usable for mobile, desktop, web services…
Additional tools: QA, Eclipse Editor/Debugger…
An optimized and scalable platform to help our customers to grow
And a great web user experience !