SlideShare uma empresa Scribd logo
1 de 39
OPEN API SERVICE
PLATFORM BASED ON
SAAS


METADATA DRIVEN
SERVICE PLATFORM   HongSeong Jeon
                   hsjeon70@gmail.com
                   jlook consulting
PLATFORM FEATURES
q Metadata driven service development platform
q Software as a service platform
q Open API service platform for web and mobile
   application
q Shared services platform
PLATFORM FUNCTIONAL
SPECIFICATION
q  Security
     q  Domain management
     q  User, Role, Group management
     q  Data Access Rule management
     q  Menu Access Rule management
q  Common
    q    Preference : System, Domain, User preference
    q    Star Rating and Comments
    q    Announcement
    q    Menu
    q    Calendar
    q    Article
PLATFORM FUNCTIONAL
SPECIFICATION
q  Metadata
     q  Entity, Data Type management
     q  Attribute management
     q  Validation : Enumeration, Pattern, Range
q  Utilities
    q  File Attachment
    q  Array Value support
APPLICATION LOGICAL
ARCHITECTURE
                                Meta Driven Open API Service Platform
                                 Interfaces                   Services                  Repositories
                              Security Controller          Security Service           Security Repository
Open API Service Interfaces




                                                                                                            Metadata Management
                              Generic Controller           Generic Service            Generic Repository

                              Domain Controller            Domain Service             Domain Repository

                              Metadata Controller          Metadata Service           Metadata Repository


                                                           Infrastructures
                                Security            Component          Transaction         OR Mapping
                              Management            Management         Management          Management
                              Attachment            Dynamic View       Task & Batch         JDBC Pool
                              Management              Resolver          Scheduler          Management
SYSTEM ARCHITECTURE


 Domain Admin



                Apache HTTP
                Server 2.0    Web Application Server   Database Server
                              §  Apache Tomcat 6.0    §  H2 Database
  Mobile User                 §  JDK 1.6
                              §  SaaS Platform
                                  Application
APPLICATION TECHNICAL
SPECIFICATION
q  Spring framework
     q  Spring IoC Container
     q  Spring Web MVC
     q  Spring Security
q  JBoss – Hibernate, Javassist
q  Google h2 Database
q  Google gson
q  MVEL 2.0
q  Apache Velocity Template engine
q  Java & Spring framework Annotation
q  Qdox
SHARED SERVICES
PLATFORM
                       Domain Users




       software as a service platform
    User Domain   User Domain   User Domain   User Domain


     Domain
      Domain       Domain
                    Domain       Domain
                                  Domain        Domain
                                                 Domain
      Entity
       Entity       Entity
                     Entity       Entity
                                   Entity        Entity
                                                  Entity



                  Platform System Domain
      Account       Security     Metadata     StarRating
      Service       Service       Service      Service      Shared
                                                            Services
     Preference    Announce      Calendar     Attachment
      Service       Service       Service       Service
DOMAIN ENTITY
PUBLISHING PROCESS
1.  Metadata Definition
    q  Define Entity metadata
                                                      Metadata Management
    q  Define Attribute metadata
2.  Entity Mapping                      1    Entity         Attribute     Data Type

                                                               2
    q  Create table in database                        Domain Database
    q  Create constraints for entity
                                                              Table
3.  Access to entity by Open API
    q    Pagination list data                          Generic Open API
    q    Create data to table
                                                              3
    q    Update data to table
                                            Create / Update / Delete / Pagination
    q    Delete data to table                    Mobile, Web Application
ENTITY INHERITANCE
SUPPORT
q  Support entity inheritance from another entity.
 SYSTEM METADATA
                                       JValidation


        JUser           JRange             JEnum      JPattern


      USERINFO     ç Domain User Entity
OPEN API SUMMARY
q  Security
    q  SignIn, SignOut
    q  User Registration
    q  Domain management
    q  Role, Group management
    q  Data and Menu Access Control
q  Generic Service
     q  Summary view(table pagination list)
     q  Detail view
     q  Create, Update, Delete
q  File Attachment
    q  File Upload and Update
    q  File Download
    q  Mobile application download (version control)
OPEN API SUMMARY
q  Preference
    q  Preference list (System, Domain, User)
    q  Update Preference value (Domain, User)
    q  Create Preference (Domain, User)
q  Star Rating and comment
     q  Create start Rating and comment
     q  Get Star Rating and comment list
q  Announcement
     q  Announcement list(System, Domain, User)
     q  Create Announcement
q  Metadata Management
    q  Create entity
    q  Delete entity
OPEN API SUMMARY
q  Calendar
q  Article
q  Menu
q  Gallery
OPEN API SPECIFICATION
OPEN API SPECIFICATION
q  Generate open API specification automatically.

          Interface Java
          Source
                     OpenAPI
                     Generator   XML



                                                       HTML
                                                XSLT   Open API
                                       XSL             Specification
OPEN API TESTING PAGE
DATA FILTERING
 q  Domain data filtering
      q  All domains data is separated from each other.
      q  System domain data is shared to all domains.
 q  Entity Summary Filtering
         q  Can configure data filtering logic for each entity.
                                                           §    SQL Conditional clause
                              if( juser.admin ) {                for current entity.
§    If-else Control flow
§    Signed user
                                 "type!='ABSTRACT'"
      information : “jUser”   } else {
                                  "category!='jlook.framework.domain.metadata'"
                              }
DATA FILTERING
q  Reserved context variable
   q  ‘juser’ : User session object
JOBJECT RULE
      q  Entity JObject Rule
           q  Execute custom logics of JObject Rule before creating or
               updating JObject.
                                          §  Current JObject
           q  Expression Language            reference


§     Current action :       if(jaction==‘create’ && jobject.description==null) {
       “create” or “update”
                                  jobject.description = jobject.category+”.”+jobject.name
                              }
JOBJECT POST ACTION
q  JObjectPostAction Interface
   q  Execute custom business logic after creating, updating and
       deleting JObject.
   q  Inheritance JObjectPostAction interface or
       JObjectPostActionSupport class and configure implemented
       class to JClass metadata.
JOBJECT POST ACTION
public class JBatchInstancePostAction extends JObjectPostActionSupport {
              @Override
              public void doCreate(JObject jObject) throws JActionException {
                            JBatchInstance jBatch = (JBatchInstance)jObject;
                            JBatchManager manager = (JBatchManager)context.getBean(JBatchManager.ID);
                            manager.addJBatch(jBatch);
              }

            @Override
            public void doUpdate(JObject jObject) throws JActionException {
                          JBatchManager manager = (JBatchManager)context.getBean(JBatchManager.ID);
                          JBatchInstance jBatch = (JBatchInstance)jObject;
                          manager.updateJBatch(jBatch);
            }

            @Override
            public void doDelete(JObject jObject) throws JActionException {
                          JBatchInstance jBatch = (JBatchInstance)jObject;
                          JBatchManager manager = (JBatchManager)context.getBean(JBatchManager.ID);
                          manager.removeJBatch(jBatch);
            }

}
GENERIC DATA
VALIDATION
q  Support three types of validation
     q  Enumeration : male and female, hobbies, business code data
     q  Pattern : email, telephone number
     q  Range : number range validation
q  Configure validation at JAttribute


                            JValidation


              JRange         JEnum          JPattern


                           JEnumDetail
OPEN API SERVICE
INTERFACES
q  Restful Open API based on HTTP
q  Support dynamic view resolver (JSon, XML, File, HTML
    Message)

 Restful HTTP Request
                                   Controller                         Service
    Content-Type
    §  application/json
    §  application/xml
    §  application/octet-stream                            View
    §  text/html                       View
                                                           Resolver


                                   JSonView     FileView
      HTTP Response
      §    JSon
                                   XmlView      JspView
      §    XML
      §    File
      §    HTML
DYNAMIC VIEW FROM
METADATA
BATCH SERVICE
q  Configure batch definition
   q  Batch Definition : basic information for batch




   q  Batch Parameter Name : parameter information for batch
BATCH SERVICE
q  Configure for batch instance
   q  Batch Instance : configure batch instance from batch definition




   q  Batch Parameter Value : configure parameter value for batch
       parameter name
BATCH SERVICE
q  Batch Job Task
package jlook.framework.infrastructure.batch;

import jlook.framework.infrastructure.util.Log;

public class EchoBatch extends JBatchTaskSupport {
             private static Log logger = Log.getLog(EchoBatch.class);

            @Override
            public void doExecute() throws JBatchException {
                 if(logger.isInfoEnabled()) {
                         logger.info(">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> executing. "+this.context);
                 }
                 // implements batch logic
            }

}
BATCH SERVICE
q  JBatchContext API
package jlook.framework.infrastructure.batch;

public interface JBatchContext {
             public static final String PARAM_BATCH_USER = "batchUser";

            public String getName() ;
            public String getServer();
            public Long getInstanceId();
            public Long getDefinitionId();
            public String uuid();

            public Object getParameter(String name);
            public Object getEnvironment(String name);

            public void put(String key, Object value);
            public Object get(String key);

            public String currentDateTime();
            public Object getBean(String beanName);
}
MULTI-TASK SERVICE
q  Support to execute task by multiple threads.
q  Support retry if exception is occurred on executing task.

                                                  ThreadPool
                                                 TaskExecutor
                         JTaskExecutor                     Thread-1

                                                           Thread-2
             Run Task
                                         Queue
                                                           Thread-3

                    JTask                                  Thread-4


           Inheritance                              Execute


                Custom Task
MULTI-TASK SERVICE
q  Define custom task class
package jlook.framework.infrastructure.task;

import jlook.framework.infrastructure.util.Log;

public class EchoTask extends JTaskSupport {
             private static Log logger = Log.getLog(EchoTask.class);

            @Override
            public void doExecute() throws JTaskException {
                if(logger.isDebugEnabled()) {
                         logger.debug("########################################"+this.retryCount+
                                      "/"+this.maxRetryCount);
                }
                // implements task logic
            }

}
PREFERENCE SERVICE
q  Support three types preferences
     q  System Preference : Application global properties
     q  Domain Preference : Domain specific properties
     q  User Preference : User specific properties
q  Pre-defined Preferences
    Name                         Type    Description
    application.name            SYSTEM   Platform Application Name
    application.version         SYSTEM   Platform Application Version
    application.administrator   SYSTEM   Platform Administrator email address
    domain.name                 DOMAIN   Domain name
    domain.version              DOMAIN   Domain version
    domain.signIn.redirectUrl   DOMAIN   Domain redirect url after sigining in
    domain.administrator        DOMAIN   Domain administrator email address
    user.contact.info           USER     User contact information
    user.signIn.redirectUrl     USER     User redirect url after signing in
STAR RATING AND
COMMENT SERVICE
q  Support star rating and comments for any entity
ANNOUNCE MESSAGE
SERVICE
q  Support three types of announce message
     q  System announce message
     q  Domain announce message
     q  User announce message
q  Support announce message to multiple targets
SECURITY SERVICE
q  Spring security framework
q  User, Group and Role management
q  Data Access Control management
     q  JDataAccessRule : JClass – JRole
     q  Create, Read, Update, Delete for Entity.
q  Menu Access Control management
    q  JMenuAccessRule : JMenu - JRole
CALENDAR SERVICE
MENU SERVICE
ATTACHMENT SERVICE
q  Provide Open API for uploading and downloading a file.
METADATA SERVICE
q  Provide Open API for Entity, Attribute metadata
     q  Entity metadata : name
     q  Attribute : name, label, type, length, required, validation
q  Make view dynamically from metadata
PLATFORM
ADMINISTRATION
Security             Management
  Domain               Access Log
  User                 Thread Dump
  Group                System Properties
  Role                 Environment Properties
  Data Access Rule     Log4j Management
                       JDBC Management
Metadata
  Entity             Common
  Attribute            Validation
  Data Type            Preference
                       Announcement
Statistics
                             System administrator
                             Domain administrator

Mais conteúdo relacionado

Mais procurados

Java Persistence API (JPA) Step By Step
Java Persistence API (JPA) Step By StepJava Persistence API (JPA) Step By Step
Java Persistence API (JPA) Step By Step
Guo Albert
 

Mais procurados (11)

The Java EE 7 Platform: Productivity & HTML5 at San Francisco JUG
The Java EE 7 Platform: Productivity & HTML5 at San Francisco JUGThe Java EE 7 Platform: Productivity & HTML5 at San Francisco JUG
The Java EE 7 Platform: Productivity & HTML5 at San Francisco JUG
 
Building REST and Hypermedia APIs with PHP
Building REST and Hypermedia APIs with PHPBuilding REST and Hypermedia APIs with PHP
Building REST and Hypermedia APIs with PHP
 
High Performance Cloud Native APIs Using Apache Geode
High Performance Cloud Native APIs Using Apache Geode High Performance Cloud Native APIs Using Apache Geode
High Performance Cloud Native APIs Using Apache Geode
 
Developing and deploying applications with Spring Boot and Docker (@oakjug)
Developing and deploying applications with Spring Boot and Docker (@oakjug)Developing and deploying applications with Spring Boot and Docker (@oakjug)
Developing and deploying applications with Spring Boot and Docker (@oakjug)
 
Java Persistence API (JPA) Step By Step
Java Persistence API (JPA) Step By StepJava Persistence API (JPA) Step By Step
Java Persistence API (JPA) Step By Step
 
TeraGrid's GRAM Auditing & Accounting, & its Integration with the LEAD Scienc...
TeraGrid's GRAM Auditing & Accounting, & its Integration with the LEAD Scienc...TeraGrid's GRAM Auditing & Accounting, & its Integration with the LEAD Scienc...
TeraGrid's GRAM Auditing & Accounting, & its Integration with the LEAD Scienc...
 
RESTful Web Services
RESTful Web ServicesRESTful Web Services
RESTful Web Services
 
IDENTITY-BASED ENCRYPTION WITH OUTSOURCED REVOCATION IN CLOUD COMPUTING
 IDENTITY-BASED ENCRYPTION WITH OUTSOURCED REVOCATION IN CLOUD COMPUTING IDENTITY-BASED ENCRYPTION WITH OUTSOURCED REVOCATION IN CLOUD COMPUTING
IDENTITY-BASED ENCRYPTION WITH OUTSOURCED REVOCATION IN CLOUD COMPUTING
 
Vaadin 7 - Java Enterprise Edition integration
Vaadin 7 - Java Enterprise Edition integrationVaadin 7 - Java Enterprise Edition integration
Vaadin 7 - Java Enterprise Edition integration
 
Understanding AngularJS HTML5 DataServices
Understanding AngularJS HTML5 DataServicesUnderstanding AngularJS HTML5 DataServices
Understanding AngularJS HTML5 DataServices
 
JAX-RS 2.0: RESTful Web Services
JAX-RS 2.0: RESTful Web ServicesJAX-RS 2.0: RESTful Web Services
JAX-RS 2.0: RESTful Web Services
 

Destaque

Understanding Open Api Service
Understanding Open Api ServiceUnderstanding Open Api Service
Understanding Open Api Service
준일 엄
 
Geo Service Open API 플랫폼 구축 전략
Geo Service Open API 플랫폼 구축 전략Geo Service Open API 플랫폼 구축 전략
Geo Service Open API 플랫폼 구축 전략
Channy Yun
 
Open api개발을 위한 자료1
Open api개발을 위한 자료1Open api개발을 위한 자료1
Open api개발을 위한 자료1
도성 김
 
Open API - 웹 플랫폼 생태계를 만드는 기술 (2011)
Open API - 웹 플랫폼 생태계를 만드는 기술 (2011)Open API - 웹 플랫폼 생태계를 만드는 기술 (2011)
Open API - 웹 플랫폼 생태계를 만드는 기술 (2011)
Channy Yun
 
Naver Open Api Reference Manual
Naver Open Api Reference ManualNaver Open Api Reference Manual
Naver Open Api Reference Manual
성웅 강
 

Destaque (16)

Jlook open api platform-sysdevguide
Jlook open api platform-sysdevguideJlook open api platform-sysdevguide
Jlook open api platform-sysdevguide
 
Open platform
Open platformOpen platform
Open platform
 
Open platform/API overview
Open platform/API overviewOpen platform/API overview
Open platform/API overview
 
시시콜콜 및 OPEN API 설명
시시콜콜 및 OPEN API 설명시시콜콜 및 OPEN API 설명
시시콜콜 및 OPEN API 설명
 
OpenFest 2016 - Open Microservice Architecture
OpenFest 2016 - Open Microservice ArchitectureOpenFest 2016 - Open Microservice Architecture
OpenFest 2016 - Open Microservice Architecture
 
open api seminar
open api seminaropen api seminar
open api seminar
 
Understanding Open Api Service
Understanding Open Api ServiceUnderstanding Open Api Service
Understanding Open Api Service
 
Geo Service Open API 플랫폼 구축 전략
Geo Service Open API 플랫폼 구축 전략Geo Service Open API 플랫폼 구축 전략
Geo Service Open API 플랫폼 구축 전략
 
Open api개발을 위한 자료1
Open api개발을 위한 자료1Open api개발을 위한 자료1
Open api개발을 위한 자료1
 
Daum 음성인식 API (김한샘)
Daum 음성인식 API (김한샘)Daum 음성인식 API (김한샘)
Daum 음성인식 API (김한샘)
 
Open API - 웹 플랫폼 생태계를 만드는 기술 (2011)
Open API - 웹 플랫폼 생태계를 만드는 기술 (2011)Open API - 웹 플랫폼 생태계를 만드는 기술 (2011)
Open API - 웹 플랫폼 생태계를 만드는 기술 (2011)
 
Open API 발표자료 - 김연수
Open API 발표자료 - 김연수Open API 발표자료 - 김연수
Open API 발표자료 - 김연수
 
API Management Reference Architecture
API Management Reference ArchitectureAPI Management Reference Architecture
API Management Reference Architecture
 
Application Architecture: The Next Wave | MuleSoft
Application Architecture: The Next Wave | MuleSoftApplication Architecture: The Next Wave | MuleSoft
Application Architecture: The Next Wave | MuleSoft
 
Naver Open Api Reference Manual
Naver Open Api Reference ManualNaver Open Api Reference Manual
Naver Open Api Reference Manual
 
Welcome to the API Economy: Developing Your API Strategy
Welcome to the API Economy: Developing Your API StrategyWelcome to the API Economy: Developing Your API Strategy
Welcome to the API Economy: Developing Your API Strategy
 

Semelhante a Jlook open api server platform

Java EE 與 雲端運算的展望
Java EE 與 雲端運算的展望 Java EE 與 雲端運算的展望
Java EE 與 雲端運算的展望
javatwo2011
 
Yogesh kumar kushwah represent’s
Yogesh kumar kushwah represent’sYogesh kumar kushwah represent’s
Yogesh kumar kushwah represent’s
Yogesh Kushwah
 
Syllabus PS03CINT05 detailing
Syllabus PS03CINT05 detailingSyllabus PS03CINT05 detailing
Syllabus PS03CINT05 detailing
OPENLANE
 
Introduction to share point 2010 development
Introduction to share point 2010 developmentIntroduction to share point 2010 development
Introduction to share point 2010 development
Eric Shupps
 
A great api is hard to find
A great api is hard to findA great api is hard to find
A great api is hard to find
Dan Diephouse
 
The Java Content Repository
The Java Content RepositoryThe Java Content Repository
The Java Content Repository
nobby
 

Semelhante a Jlook open api server platform (20)

Java EE 與 雲端運算的展望
Java EE 與 雲端運算的展望 Java EE 與 雲端運算的展望
Java EE 與 雲端運算的展望
 
Yogesh kumar kushwah represent’s
Yogesh kumar kushwah represent’sYogesh kumar kushwah represent’s
Yogesh kumar kushwah represent’s
 
Syllabus PS03CINT05 detailing
Syllabus PS03CINT05 detailingSyllabus PS03CINT05 detailing
Syllabus PS03CINT05 detailing
 
Slice: OpenJPA for Distributed Persistence
Slice: OpenJPA for Distributed PersistenceSlice: OpenJPA for Distributed Persistence
Slice: OpenJPA for Distributed Persistence
 
NET RIA Services - Building Data-Driven Applications with Microsoft Silverlig...
NET RIA Services - Building Data-Driven Applications with Microsoft Silverlig...NET RIA Services - Building Data-Driven Applications with Microsoft Silverlig...
NET RIA Services - Building Data-Driven Applications with Microsoft Silverlig...
 
Spring 3 - Der dritte Frühling
Spring 3 - Der dritte FrühlingSpring 3 - Der dritte Frühling
Spring 3 - Der dritte Frühling
 
Session18 Madduri
Session18  MadduriSession18  Madduri
Session18 Madduri
 
(ATS3-DEV05) Coding up Pipeline Pilot Components
(ATS3-DEV05) Coding up Pipeline Pilot Components(ATS3-DEV05) Coding up Pipeline Pilot Components
(ATS3-DEV05) Coding up Pipeline Pilot Components
 
From Code to Kubernetes
From Code to KubernetesFrom Code to Kubernetes
From Code to Kubernetes
 
Dev309 from asgard to zuul - netflix oss-final
Dev309  from asgard to zuul - netflix oss-finalDev309  from asgard to zuul - netflix oss-final
Dev309 from asgard to zuul - netflix oss-final
 
Introduction to share point 2010 development
Introduction to share point 2010 developmentIntroduction to share point 2010 development
Introduction to share point 2010 development
 
Mike Taulty MIX10 Silverlight 4 Patterns Frameworks
Mike Taulty MIX10 Silverlight 4 Patterns FrameworksMike Taulty MIX10 Silverlight 4 Patterns Frameworks
Mike Taulty MIX10 Silverlight 4 Patterns Frameworks
 
Designing Enterprise IT Systems with REST - QCon San Francisco 2008
Designing Enterprise IT Systems with REST - QCon San Francisco 2008Designing Enterprise IT Systems with REST - QCon San Francisco 2008
Designing Enterprise IT Systems with REST - QCon San Francisco 2008
 
Dropwizard
DropwizardDropwizard
Dropwizard
 
A great api is hard to find
A great api is hard to findA great api is hard to find
A great api is hard to find
 
Introducing SQL Server Data Services
Introducing SQL Server Data ServicesIntroducing SQL Server Data Services
Introducing SQL Server Data Services
 
Introducing SQL Server Data Services
Introducing SQL Server Data ServicesIntroducing SQL Server Data Services
Introducing SQL Server Data Services
 
The Java Content Repository
The Java Content RepositoryThe Java Content Repository
The Java Content Repository
 
Spring 3 - An Introduction
Spring 3 - An IntroductionSpring 3 - An Introduction
Spring 3 - An Introduction
 
SVG in Data Acquisition and Control Systems
SVG in Data Acquisition and Control SystemsSVG in Data Acquisition and Control Systems
SVG in Data Acquisition and Control Systems
 

Último

Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slide
vu2urc
 
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
?#DUbAI#??##{{(☎️+971_581248768%)**%*]'#abortion pills for sale in dubai@
 
Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and Myths
Joaquim Jorge
 

Último (20)

Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slide
 
AWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of Terraform
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processors
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, AdobeApidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
 
Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherStrategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a Fresher
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024
 
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt Robison
 
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024
 
presentation ICT roal in 21st century education
presentation ICT roal in 21st century educationpresentation ICT roal in 21st century education
presentation ICT roal in 21st century education
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed texts
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)
 
Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and Myths
 
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUnderstanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
 

Jlook open api server platform

  • 1. OPEN API SERVICE PLATFORM BASED ON SAAS METADATA DRIVEN SERVICE PLATFORM HongSeong Jeon hsjeon70@gmail.com jlook consulting
  • 2. PLATFORM FEATURES q Metadata driven service development platform q Software as a service platform q Open API service platform for web and mobile application q Shared services platform
  • 3. PLATFORM FUNCTIONAL SPECIFICATION q  Security q  Domain management q  User, Role, Group management q  Data Access Rule management q  Menu Access Rule management q  Common q  Preference : System, Domain, User preference q  Star Rating and Comments q  Announcement q  Menu q  Calendar q  Article
  • 4. PLATFORM FUNCTIONAL SPECIFICATION q  Metadata q  Entity, Data Type management q  Attribute management q  Validation : Enumeration, Pattern, Range q  Utilities q  File Attachment q  Array Value support
  • 5. APPLICATION LOGICAL ARCHITECTURE Meta Driven Open API Service Platform Interfaces Services Repositories Security Controller Security Service Security Repository Open API Service Interfaces Metadata Management Generic Controller Generic Service Generic Repository Domain Controller Domain Service Domain Repository Metadata Controller Metadata Service Metadata Repository Infrastructures Security Component Transaction OR Mapping Management Management Management Management Attachment Dynamic View Task & Batch JDBC Pool Management Resolver Scheduler Management
  • 6. SYSTEM ARCHITECTURE Domain Admin Apache HTTP Server 2.0 Web Application Server Database Server §  Apache Tomcat 6.0 §  H2 Database Mobile User §  JDK 1.6 §  SaaS Platform Application
  • 7. APPLICATION TECHNICAL SPECIFICATION q  Spring framework q  Spring IoC Container q  Spring Web MVC q  Spring Security q  JBoss – Hibernate, Javassist q  Google h2 Database q  Google gson q  MVEL 2.0 q  Apache Velocity Template engine q  Java & Spring framework Annotation q  Qdox
  • 8. SHARED SERVICES PLATFORM Domain Users software as a service platform User Domain User Domain User Domain User Domain Domain Domain Domain Domain Domain Domain Domain Domain Entity Entity Entity Entity Entity Entity Entity Entity Platform System Domain Account Security Metadata StarRating Service Service Service Service Shared Services Preference Announce Calendar Attachment Service Service Service Service
  • 9. DOMAIN ENTITY PUBLISHING PROCESS 1.  Metadata Definition q  Define Entity metadata Metadata Management q  Define Attribute metadata 2.  Entity Mapping 1 Entity Attribute Data Type 2 q  Create table in database Domain Database q  Create constraints for entity Table 3.  Access to entity by Open API q  Pagination list data Generic Open API q  Create data to table 3 q  Update data to table Create / Update / Delete / Pagination q  Delete data to table Mobile, Web Application
  • 10. ENTITY INHERITANCE SUPPORT q  Support entity inheritance from another entity. SYSTEM METADATA JValidation JUser JRange JEnum JPattern USERINFO ç Domain User Entity
  • 11. OPEN API SUMMARY q  Security q  SignIn, SignOut q  User Registration q  Domain management q  Role, Group management q  Data and Menu Access Control q  Generic Service q  Summary view(table pagination list) q  Detail view q  Create, Update, Delete q  File Attachment q  File Upload and Update q  File Download q  Mobile application download (version control)
  • 12. OPEN API SUMMARY q  Preference q  Preference list (System, Domain, User) q  Update Preference value (Domain, User) q  Create Preference (Domain, User) q  Star Rating and comment q  Create start Rating and comment q  Get Star Rating and comment list q  Announcement q  Announcement list(System, Domain, User) q  Create Announcement q  Metadata Management q  Create entity q  Delete entity
  • 13. OPEN API SUMMARY q  Calendar q  Article q  Menu q  Gallery
  • 15. OPEN API SPECIFICATION q  Generate open API specification automatically. Interface Java Source OpenAPI Generator XML HTML XSLT Open API XSL Specification
  • 17. DATA FILTERING q  Domain data filtering q  All domains data is separated from each other. q  System domain data is shared to all domains. q  Entity Summary Filtering q  Can configure data filtering logic for each entity. §  SQL Conditional clause if( juser.admin ) { for current entity. §  If-else Control flow §  Signed user "type!='ABSTRACT'" information : “jUser” } else { "category!='jlook.framework.domain.metadata'" }
  • 18. DATA FILTERING q  Reserved context variable q  ‘juser’ : User session object
  • 19. JOBJECT RULE q  Entity JObject Rule q  Execute custom logics of JObject Rule before creating or updating JObject. §  Current JObject q  Expression Language reference §  Current action : if(jaction==‘create’ && jobject.description==null) { “create” or “update” jobject.description = jobject.category+”.”+jobject.name }
  • 20. JOBJECT POST ACTION q  JObjectPostAction Interface q  Execute custom business logic after creating, updating and deleting JObject. q  Inheritance JObjectPostAction interface or JObjectPostActionSupport class and configure implemented class to JClass metadata.
  • 21. JOBJECT POST ACTION public class JBatchInstancePostAction extends JObjectPostActionSupport { @Override public void doCreate(JObject jObject) throws JActionException { JBatchInstance jBatch = (JBatchInstance)jObject; JBatchManager manager = (JBatchManager)context.getBean(JBatchManager.ID); manager.addJBatch(jBatch); } @Override public void doUpdate(JObject jObject) throws JActionException { JBatchManager manager = (JBatchManager)context.getBean(JBatchManager.ID); JBatchInstance jBatch = (JBatchInstance)jObject; manager.updateJBatch(jBatch); } @Override public void doDelete(JObject jObject) throws JActionException { JBatchInstance jBatch = (JBatchInstance)jObject; JBatchManager manager = (JBatchManager)context.getBean(JBatchManager.ID); manager.removeJBatch(jBatch); } }
  • 22. GENERIC DATA VALIDATION q  Support three types of validation q  Enumeration : male and female, hobbies, business code data q  Pattern : email, telephone number q  Range : number range validation q  Configure validation at JAttribute JValidation JRange JEnum JPattern JEnumDetail
  • 23. OPEN API SERVICE INTERFACES q  Restful Open API based on HTTP q  Support dynamic view resolver (JSon, XML, File, HTML Message) Restful HTTP Request Controller Service Content-Type §  application/json §  application/xml §  application/octet-stream View §  text/html View Resolver JSonView FileView HTTP Response §  JSon XmlView JspView §  XML §  File §  HTML
  • 25. BATCH SERVICE q  Configure batch definition q  Batch Definition : basic information for batch q  Batch Parameter Name : parameter information for batch
  • 26. BATCH SERVICE q  Configure for batch instance q  Batch Instance : configure batch instance from batch definition q  Batch Parameter Value : configure parameter value for batch parameter name
  • 27. BATCH SERVICE q  Batch Job Task package jlook.framework.infrastructure.batch; import jlook.framework.infrastructure.util.Log; public class EchoBatch extends JBatchTaskSupport { private static Log logger = Log.getLog(EchoBatch.class); @Override public void doExecute() throws JBatchException { if(logger.isInfoEnabled()) { logger.info(">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> executing. "+this.context); } // implements batch logic } }
  • 28. BATCH SERVICE q  JBatchContext API package jlook.framework.infrastructure.batch; public interface JBatchContext { public static final String PARAM_BATCH_USER = "batchUser"; public String getName() ; public String getServer(); public Long getInstanceId(); public Long getDefinitionId(); public String uuid(); public Object getParameter(String name); public Object getEnvironment(String name); public void put(String key, Object value); public Object get(String key); public String currentDateTime(); public Object getBean(String beanName); }
  • 29. MULTI-TASK SERVICE q  Support to execute task by multiple threads. q  Support retry if exception is occurred on executing task. ThreadPool TaskExecutor JTaskExecutor Thread-1 Thread-2 Run Task Queue Thread-3 JTask Thread-4 Inheritance Execute Custom Task
  • 30. MULTI-TASK SERVICE q  Define custom task class package jlook.framework.infrastructure.task; import jlook.framework.infrastructure.util.Log; public class EchoTask extends JTaskSupport { private static Log logger = Log.getLog(EchoTask.class); @Override public void doExecute() throws JTaskException { if(logger.isDebugEnabled()) { logger.debug("########################################"+this.retryCount+ "/"+this.maxRetryCount); } // implements task logic } }
  • 31. PREFERENCE SERVICE q  Support three types preferences q  System Preference : Application global properties q  Domain Preference : Domain specific properties q  User Preference : User specific properties q  Pre-defined Preferences Name Type Description application.name SYSTEM Platform Application Name application.version SYSTEM Platform Application Version application.administrator SYSTEM Platform Administrator email address domain.name DOMAIN Domain name domain.version DOMAIN Domain version domain.signIn.redirectUrl DOMAIN Domain redirect url after sigining in domain.administrator DOMAIN Domain administrator email address user.contact.info USER User contact information user.signIn.redirectUrl USER User redirect url after signing in
  • 32. STAR RATING AND COMMENT SERVICE q  Support star rating and comments for any entity
  • 33. ANNOUNCE MESSAGE SERVICE q  Support three types of announce message q  System announce message q  Domain announce message q  User announce message q  Support announce message to multiple targets
  • 34. SECURITY SERVICE q  Spring security framework q  User, Group and Role management q  Data Access Control management q  JDataAccessRule : JClass – JRole q  Create, Read, Update, Delete for Entity. q  Menu Access Control management q  JMenuAccessRule : JMenu - JRole
  • 37. ATTACHMENT SERVICE q  Provide Open API for uploading and downloading a file.
  • 38. METADATA SERVICE q  Provide Open API for Entity, Attribute metadata q  Entity metadata : name q  Attribute : name, label, type, length, required, validation q  Make view dynamically from metadata
  • 39. PLATFORM ADMINISTRATION Security Management Domain Access Log User Thread Dump Group System Properties Role Environment Properties Data Access Rule Log4j Management JDBC Management Metadata Entity Common Attribute Validation Data Type Preference Announcement Statistics System administrator Domain administrator