Professional Documents
Culture Documents
Sage X3 SOA Transformation Methodology
Sage X3 SOA Transformation Methodology
SOA
Transformation
Methodology
Process Overview
Guillaume LECLERE
24 March 2014
Sage X3 - SOA Transformation Methodology 1
Agenda
1.0 Introduction
3.0 Prioritizing
5.0 Tools
UML2 Designers
Call Tree Extractor
X3 ERP
Using an old
techno
What we need
“Syracusation Methodology”
X3 ERP
Syracuse Using Syracuse
New object oriented
framework
Presentation
Presentation Presentation
Presentation
Logic
Logic Logic
Logic
Database
Database
Business
Business Logic
Logic
Business
Business Logic
Logic
Presentation
Presentation Representation
Logic
Logic
Business
Business Logic
Logic Class
Data type
Database
Database Table
- The Class contains Properties and all of Business Application Rules, ensuring the
consistency of data in tables
- The Representation describes the way that Class Properties are shown to the user
and contains code to help him/her to enter data
- The Class must be developed and tested without Representation, but it’s possible
to create a basic Representation without any code to help
Existing function
Business
SPECS DEV
rules
Overview
UML Tool
• It is built using the X3 Table Dictionary to be sure to take into account all of our tables
• No need to detail the properties and the methods, it will be done later during the
classes specification step
• Useful for the SOA transformation, but also after to give an overview of the product
• Driven by marketing needs and by end user experience, not by a 100% Syracuse objective.
Some of back office functions could remain in the ‘Classic’ mode
• First inputs are given by the Product Management, depending on strategic needs and
ergonomic improvements, such as Mobility
• From those inputs and helped by the X3 Class Model the team will prioritize developments,
taking into accounts
- Dependencies between classes
- Technical and ergonomic constraints
• Also it has to be decided if the transformed Object will replace or live with the Classic one.
- In the first case all of calls to the Classic object have to be replaced by calls to the Syracuse one
- In the second case the data model have to remain exactly the same to let the Classic Object
working
- Because we need to give time to our partners to adapt theirs add-ons to Syracuse, it’s strongly
recommended to let both Classic and Syracuse objects working together in at least one
version
Sage X3 - SOA Transformation Methodology 13
Transformation Strategy
How to choose the good way to
transform an X3 Object?
• The way to transform existing code may vary, it depends on needs and priorities
2. We need to be able to consult, select and control an objet from another, but the
CRUD management stays in the Classic mode
3. We need to use a “component” (i.e. typically a black box receiving data and offering
a service) from a Class
Business Logic
Previous Object Class Specification Class Development Class
Extraction
First step
Representation Representation
Ergonomist Representation
Specification Development
Second step
Basic rules
• The Representation specification can be started before the end of the Class
development process
X3 Class Model
Safe X3 Studio
X3 Code
X3 dictionnary
X3 Documentation
X3 Class Model
Safe X3 Studio
X3 Code
X3 dictionnary
X3 Documentation
• The Business Logic Extraction needs to read the code of the X3 Object Processes
• Be careful, some Business Rules are hidden in the UI (see examples on the next slide)
• This work is done by the development team, and requires an high level of technical and
applicative expertise
NO FUNCTIONNAL REGRESSIONS
• “The field Y is set to blank and is not alterable when the field X has a value” means
“the information Y must be empty if the information X is not”
• “After the modification of the field X with the value A, the alterable field Y is filled by
the default value B” means “if the information Y is empty, it must be set to B if the
information X is filled by A”
• “After the modification of the field X with the value A, the alterable field Y is filled by
the default value B and is no more alterable” means “if the information X is filled by A
the information Y must be filled by B”
X3 Class Model
Safe X3 Studio
X3 Code
X3 dictionnary
X3 Documentation
X3 Class Model
Safe X3 Studio
X3 Code
X3 dictionnary
X3 Documentation
• A Word Document, describing the object role, its data model, its links with the other objects
X3 Class Model
Safe X3 Studio
X3 Code
X3 dictionnary
X3 Documentation
Class specification
• Done by the PBA
X3 Class Model
Safe X3 Studio
X3 Code
X3 dictionnary
X3 Documentation
Class specification
• Must be in English, in a dedicated document
• The development step follows the regular Scrum development process, involving
the development team, the QA and the PO
Sage X3 - SOA Transformation Methodology 34
Transformation of X3 objects
Read only transformation of an X3
object
• The new framework allows to use Classic X3 functions and Syracuse X3 functions in the same
environment. That’s why it’s possible to develop only a read only class for an X3 object, keeping the
Classic object for the Create, Update and Delete operations.
• We have to keep in mind that one day the object will be full Syracuses. The Class definition must take
into account this fact.
Sage X3 - SOA Transformation Methodology 36
SOA Transformation Methodology
R/O transformation of an X3 object
Business Logic
Previous Object Class Specification Class Development Class
Extraction
Representation Representation
Ergonomist Representation
Specification Development
: faster
PBA QA Dev. Team
• Component definition
• A component is a group of programs used by more than one X3 object (or could be)
• It is called by a funprog or a subprog, possibly by a $ label
• It provides a service without direct interaction with the user
• A good idea is not trying to transform components but to adapt them regarding
the Syracuse constraints :
– No global variable
– No clalev
– No lock
– No masks (except if they are declared and used locally in the component)
– No use of deprecated keywords (see list in GitHub)
– New way to manage errors
• If it’s possible, try to keep the code working with Convergence. For example you
can encapsulate the code in order to declare needed variables and to manage
errors
Main code
Pros:
• Rapidly operational
• « True » Syracuse code
Duplication Cons:
• Need to maintain two codes for the same function until the full updating
Pros:
• The code of the function is shared by Classic and Syracuse code
Cons:
Encapsulation • Risk to have quality issues on both Classic and Syracuse functions
• Not easy to implement
If possible prefer the encapsulation, because only one set of code need to be
maintained
• First feedbacks show that’s the Component transformation is harder than the
Object transformation
• Why?
UML2 designers
• The Sage ERP X3 UML2 Designer is a part of the Syracuse server, diagrams are
stored in the MongoDB database
• It allows to:
• Design Class diagrams and Use case diagrams (Use case diagrams will be available
at the end of April)
• Share diagrams between X3 developers
• Deliver diagrams to the X3 ecosystem
• It’ll evolve:
• Development of State diagrams and Sequence diagrams is planned
• If needed we’ll add the capability to generate X3 Class Metadata from diagrams
Sage X3 - SOA Transformation Methodology 48
SOA Transformation Methodology
UML2 Designer
UML Tool
• Builds a tree of all nodes under the Windows, including process and sub-process
• Flags on each rule to monitor progress (PBA validation, development status, link
to Unit Tests, …)