SlideShare a Scribd company logo
1 of 28
웹기반
AJAX개발을
위한
프레임워크 –
메타웍스3
유엔진 오픈소스 BPM 프로젝트
장진영
jyjang@uengine.org

                     www.metaworks3.org
Concurrent Web-based Applications :




                                      www.metaworks3.org
You are the mother, How about your Object ?

Mother cares All the things?                   Do that by himself ?




                                                                      www.metaworks3.org
Introducing Metaworks3 –




 •    Metaworks is ‘metadata-oriented framework’
 •    Concurrent Web-based (and mobile) Applications are degrading
      the Object’s own property – Cohesion of metadata.
 •    For example, you need to keep the properties’ type as same value
      in DHTML scripts, Server Object, Data Object(Hibernate), and the
      DDL script as well.
 •    Centralizing metadata and behaviors – it’s Object-Oriented
      Manner itself!
 •    Metaworks automatically synchronizes(or hides the operation) …
      •   Stubs for calling Javascript to the server function (using DWR)
      •   DAO object and relational query (not completely, SQL is still good)
      •   Keeps intuitive and Sophisticated Programming Model… Don’t be a
          dog!
 •    By managing the metadata


                                                                       www.metaworks3.org
문제:
 – 흩어진 메타데이터


        General Approach:                                       Using Metaworks3:
Spring MVC, JSON, jQuery, Hibernate

                    meta
                    data                                                   Controlle
                       Domain                                                 r
        Controlle
                        class
           r            (java
                       version)                        View                                      DAO


                       You have to
        meta        Synchronize the gap   meta
                                                       Metaworks                            Metaworks
View    data                       DAO    data
                                                  Synchronizes the Proxy
                                                                             meta
                                                                                       Synchronizes the Proxy
                                                                             data
                                      Domain
        Domain
                                       class                               Domain
       class (JS
                                     (Hibernat                              Class
        version)
                                     e version)                            (Java)



                                                                                            www.metaworks3.org
No more words, Seeing is believing:
 #Domain Class (Posting.java)                                 #Presentation (Posting.ejs)

 @Table(name = “fb_posting”)
 public class Posting extends MetaworksObject<IPosting>        <%=fields.document.here() %>
 implements IPosting{
                                                              <%
        String document;                                             if(mw3.when == mw3.WHEN_EDIT){
                @Id                                           %>
                public String getDocument() {                        <%=methods.share.here()%>
                        return document;                      <%
                }                                                    }
                public void setDocument(String document) {    %>
                        this.document = document;
                }
        @ServiceMethod
        public void share() throws Exception{
                createDatabaseMe();
        }
 }

#Application (application.html)                              #Result
<script>
        mw3.setContextWhen(mw3.WHEN_EDIT);
        mw3.locateObject(
             { document:"",
               __className:
"org.metaworks.example.Posting”
},
               null,
               'newEntry’
        );
</script>
...
<div id=‘newEntry’></div>
                                                                                                      www.metaworks3.org
FaceBook example
Steps:
1. Recognizing what is (was) ‘Object’ in your
   application
2. Modeling the Objects
3. Face making and Context-awaring for the
   Objects
4. Creating Application with highly-abstracted
   programming Model – almost natural language!
 Humanity-Recovery !

                                           www.metaworks3.org
Step 1.
Recognizing what is (was)
‘Object’ in your application




                               www.metaworks3.org
1. Recognizing Objects in facebook




   Person object           Posting object   Doc object   Group object
                                                            www.metaworks3.org
1. Recognizing Objects in facebook
1.1. Person objects in different ‘Context’




   Where: NORMAL                  Where: MINIMISED   Where: MEDIUM
                                                                 www.metaworks3.org
1. Recognizing Objects in facebook
1.2. Posting objects in different ‘Context’




           Where: NORMAL                  Where: NORMAL   Where: MINIMISED
           When: EDIT                     When: VIEW      When: EDIT
                                                                  www.metaworks3.org
Step 2.
Modeling the ‘Cohesive’
Objects




                          www.metaworks3.org
2. Modeling Objects - Posting object Design –
2.1. create interface

import org.metaworks.dao.IDAO;

public interface IPosting extends IDAO{

       public Person getWriter(); // 작성자
       public void setWriter(Person writer);

       public String getDocument(); // 글
       public void setDocument(String document);

       public boolean isLikeIt(); // 좋아요 여부
       public void setLikeIt(boolean likeIt);

}




                                                   www.metaworks3.org
2. Modeling Objects - Posting object Design –
2.2. add metadata

import org.metaworks.dao.IDAO;

@Table(name="Posting")
public interface IPosting extends IDAO{

       public Person getWriter();
       public void setWriter(Person writer);

       @Id
       public String getDocument();
       public void setDocument(String document);

       public boolean isLikeIt();
       public void setLikeIt(boolean likeIt);

       @ServiceMethod
       public void post() throws Exception;

       @ServiceMethod
       public void like() throws Exception;
}




                                                   www.metaworks3.org
2. Modeling Objects – Posting object
2.3. create implementation object

public class Posting extends Database<IPosting> implements IPosting{

       Person writer;
              public Person getWriter() {
                      return writer;
              }
              public void setWriter(Person writer) {
                      this.writer = writer;
              }

       String document;
               public String getDocument() {
                       return document;
               }
               public void setDocument(String document) {
                       this.document = document;
               }

       boolean likeIt;
             public boolean isLikeIt() {
                       return likeIt;
             }
             public void setLikeIt(boolean likeIt) {
                       this.likeIt = likeIt;
             }
}




                                                                       www.metaworks3.org
2. Modeling Objects - Posting object
2.4. add behaviors
public class Posting extends Database<IPosting> implements IPosting{

       Person writer;
              public Person getWriter() {
                      return writer;
              }
              public void setWriter(Person writer) {
                      this.writer = writer;
              }

       String document;
               public String getDocument() {
                       return document;
               }
               public void setDocument(String document) {
                       this.document = document;
               }

       boolean likeIt;
             public boolean isLikeIt() {
                       return likeIt;
             }
             public void setLikeIt(boolean likeIt) {
                       this.likeIt = likeIt;
             }

       public void post() throws Exception{
               createDatabaseMe();
       }
       public void like() throws Exception{
               databaseMe().setLikeIt(true); //will automatically synchronize the value
       }
}                                                                                         www.metaworks3.org
Step 3
Face making and Context-awaring for
the Objects




                                      www.metaworks3.org
3. Face Making
3.1. creating ‘Face’ – Posting.ejs
 <table>

         <tr>
                 <td><%=fields.writer.here() %></td>
                 <td><%=fields.document.here() %>

 <%
         if(value.likeIt){
 %>
 You like this
 <% }else{%>

 <a onclick=<%=methods.like.caller()%>>좋아요</a>
 <%}%>

                 </td>

         </tr>

 </table>




                                                       www.metaworks3.org
3. Face Making
3.1. considering the Contexts – WHEN_EDIT
<%
          if(mw3.when == mw3.WHEN_EDIT){
                 value.document = 'Share your status...';
          }
%>
<table>
          <tr>
                   <td><%=fields.writer.here()%></td>
                   <td><%=fields.document.here()%>
<%
          if(mw3.when == mw3.WHEN_EDIT){
%>
          <%=methods.post.here()%>
<%
          }

         if(value.likeIt){
%>
You like this
<% }else{%>
         <%=methods.like.here()%>
<%}%>

<%
          if(mw3.when == mw3.WHEN_EDIT){
%>
                   <input type=button value="save">
<%
          }else{
%>
                   <input type=button onclick="<%=editFunction%>" value="edit"a>
<%
          }
%>
                   </td>
        </tr>
</table>
                                                                                   www.metaworks3.org
Next, Do 1~3 for Person object – Person.java & Person.ejs
#Person.java
                                                         #Person.ejs
public interface Person extends IDAO{
                                                         <%if (!value){%>
       @org.metaworks.Metadata(isKey = true)             Writer is not specified
       public String getName();                          <%}else{%>
       public void setName(String name);
                                                         <img src="<%=value.portraitURL%>" width=50><br>
       public int getAge();                              <b><%=value.name%></b>
       public void setAge(int age);
                                                         <%}%>
       @org.metaworks.Metadata(face="faces/image.ejs”)
       public String getPortraitURL();
       public void setPortraitURL(String portraitURL);

       public boolean isMyFried();
       public void setMyFried(boolean isMyFried);
}




                                                                                                    www.metaworks3.org
Step 4
Creating Application with
highly-abstracted
programming Model –
Write a Novel or Poet, not
the alien language




                             www.metaworks3.org
4. Now, create the Application


          <script type="text/javascript">


                  lastEntryId = new MetaworksObject(
                           {       document:"",
                                   writer: loginUser,
                                   __className: "org.metaworks.example.Posting"
                           },

                           'newEntry'

                  );

          </script>

          <div id=”newEntry"></div>




                                                                                  www.metaworks3.org
Result




         www.metaworks3.org
Applications




www.metaworks3.org website Social CMS

                                        www.metaworks3.org
Applications




ProcessCodi Cloud IDE
                                       www.metaworks3.org
Applications




ProcessCodi Enterprise 2.0 Platform

                                             www.metaworks3.org
Conclusion
• No duplicated metadata mapping
  e.g. JSON object mapping in Spring Controller and DAO
  mapping for Hibernate.
 No errors from duplicated metadata source.
• Cohesive User Interface management by EJS-
  object mapping.
• Intuitive Programming Model – model and
  metadata-driven, not implementation-driven.

Only thing you have to do is… just forgetting the old
manners!

                                                          www.metaworks3.org
All the Source Code available here:
 www.metaworks3.org

 it’s very early stage now! You are welcomed to
 participate this Open Source Project.




                                                  www.metaworks3.org

More Related Content

What's hot

Easy data-with-spring-data-jpa
Easy data-with-spring-data-jpaEasy data-with-spring-data-jpa
Easy data-with-spring-data-jpa
Staples
 
Hibernate Tutorial
Hibernate TutorialHibernate Tutorial
Hibernate Tutorial
Syed Shahul
 
Js info vis_toolkit
Js info vis_toolkitJs info vis_toolkit
Js info vis_toolkit
nikhilyagnic
 

What's hot (20)

Easy data-with-spring-data-jpa
Easy data-with-spring-data-jpaEasy data-with-spring-data-jpa
Easy data-with-spring-data-jpa
 
Spring Data JPA from 0-100 in 60 minutes
Spring Data JPA from 0-100 in 60 minutesSpring Data JPA from 0-100 in 60 minutes
Spring Data JPA from 0-100 in 60 minutes
 
Simple Data Binding
Simple Data BindingSimple Data Binding
Simple Data Binding
 
Javabean1
Javabean1Javabean1
Javabean1
 
Design Summit - Navigating the ManageIQ Object Model - Brad Ascar
Design Summit - Navigating the ManageIQ Object Model - Brad AscarDesign Summit - Navigating the ManageIQ Object Model - Brad Ascar
Design Summit - Navigating the ManageIQ Object Model - Brad Ascar
 
Bringing the light to the client with KnockoutJS
Bringing the light to the client with KnockoutJSBringing the light to the client with KnockoutJS
Bringing the light to the client with KnockoutJS
 
Spring Data JPA
Spring Data JPASpring Data JPA
Spring Data JPA
 
Data Binding and Data Grid View Classes
Data Binding and Data Grid View ClassesData Binding and Data Grid View Classes
Data Binding and Data Grid View Classes
 
Session06 handling xml data
Session06  handling xml dataSession06  handling xml data
Session06 handling xml data
 
04 Data Access
04 Data Access04 Data Access
04 Data Access
 
Spring framework part 2
Spring framework part 2Spring framework part 2
Spring framework part 2
 
Hibernate Tutorial
Hibernate TutorialHibernate Tutorial
Hibernate Tutorial
 
Javascript closures
Javascript closures Javascript closures
Javascript closures
 
Oop features java presentationshow
Oop features java presentationshowOop features java presentationshow
Oop features java presentationshow
 
Data access 2.0? Please welcome: Spring Data!
Data access 2.0? Please welcome: Spring Data!Data access 2.0? Please welcome: Spring Data!
Data access 2.0? Please welcome: Spring Data!
 
Java beans
Java beansJava beans
Java beans
 
Map-Reduce and Apache Hadoop
Map-Reduce and Apache HadoopMap-Reduce and Apache Hadoop
Map-Reduce and Apache Hadoop
 
Js info vis_toolkit
Js info vis_toolkitJs info vis_toolkit
Js info vis_toolkit
 
Introduction to hibernate
Introduction to hibernateIntroduction to hibernate
Introduction to hibernate
 
Ecom lec4 fall16_jpa
Ecom lec4 fall16_jpaEcom lec4 fall16_jpa
Ecom lec4 fall16_jpa
 

Viewers also liked

Beyond Process, Sharing Of Process
Beyond  Process,  Sharing  Of  ProcessBeyond  Process,  Sharing  Of  Process
Beyond Process, Sharing Of Process
uEngine Solutions
 
[8]viii.process as a service platform process codi
[8]viii.process as a service platform   process codi[8]viii.process as a service platform   process codi
[8]viii.process as a service platform process codi
uEngine Solutions
 
Jco 제 12회 자바컨퍼런스 - PaaS for Business Expert (부재: GAE 오픈소스로 따라잡기)
Jco 제 12회 자바컨퍼런스 - PaaS for Business Expert (부재: GAE 오픈소스로 따라잡기)Jco 제 12회 자바컨퍼런스 - PaaS for Business Expert (부재: GAE 오픈소스로 따라잡기)
Jco 제 12회 자바컨퍼런스 - PaaS for Business Expert (부재: GAE 오픈소스로 따라잡기)
uEngine Solutions
 
Process As A Service Platform Process Codi For Sharing
Process  As  A  Service  Platform    Process  Codi For SharingProcess  As  A  Service  Platform    Process  Codi For Sharing
Process As A Service Platform Process Codi For Sharing
uEngine Solutions
 
[6]vi.패스트캣 컨퍼런스 발표자료
[6]vi.패스트캣 컨퍼런스 발표자료[6]vi.패스트캣 컨퍼런스 발표자료
[6]vi.패스트캣 컨퍼런스 발표자료
uEngine Solutions
 
메타웍스3 워크숍 - 개념소개 및 예제, 그리고 간단한 API문서포함
메타웍스3 워크숍 - 개념소개 및 예제, 그리고 간단한 API문서포함 메타웍스3 워크숍 - 개념소개 및 예제, 그리고 간단한 API문서포함
메타웍스3 워크숍 - 개념소개 및 예제, 그리고 간단한 API문서포함
uEngine Solutions
 
제4회 아키텍트대회 발표자료 유엔진솔루션즈 장진영 V1.2[1] 110624
제4회 아키텍트대회 발표자료 유엔진솔루션즈 장진영 V1.2[1] 110624제4회 아키텍트대회 발표자료 유엔진솔루션즈 장진영 V1.2[1] 110624
제4회 아키텍트대회 발표자료 유엔진솔루션즈 장진영 V1.2[1] 110624
uEngine Solutions
 
Business process approach and the future of bpm u engine jinyoung jang - pa...
Business process approach and the future of bpm   u engine jinyoung jang - pa...Business process approach and the future of bpm   u engine jinyoung jang - pa...
Business process approach and the future of bpm u engine jinyoung jang - pa...
uEngine Solutions
 
Social BPM based e-Learning Scenario and ProcessCodi
Social BPM based e-Learning Scenario and ProcessCodiSocial BPM based e-Learning Scenario and ProcessCodi
Social BPM based e-Learning Scenario and ProcessCodi
uEngine Solutions
 
유엔진 Bpm 사용자메뉴얼 v 3.5.4
유엔진 Bpm 사용자메뉴얼 v 3.5.4유엔진 Bpm 사용자메뉴얼 v 3.5.4
유엔진 Bpm 사용자메뉴얼 v 3.5.4
uEngine Solutions
 
[10]x.social commerce 구축 시나리오 process codi
[10]x.social commerce 구축 시나리오   process codi[10]x.social commerce 구축 시나리오   process codi
[10]x.social commerce 구축 시나리오 process codi
uEngine Solutions
 
스마트워크 소셜 비즈니스 프로세스 패턴 110608
스마트워크 소셜 비즈니스 프로세스 패턴 110608스마트워크 소셜 비즈니스 프로세스 패턴 110608
스마트워크 소셜 비즈니스 프로세스 패턴 110608
uEngine Solutions
 
OCE - Cno 2014 private sector oriented open paas oce
OCE - Cno 2014 private sector oriented open paas   oceOCE - Cno 2014 private sector oriented open paas   oce
OCE - Cno 2014 private sector oriented open paas oce
uEngine Solutions
 
오픈테크넷 발표자료 B paa_s 구축을 위한 오픈소스_유엔진솔루션즈
오픈테크넷 발표자료 B paa_s 구축을 위한 오픈소스_유엔진솔루션즈오픈테크넷 발표자료 B paa_s 구축을 위한 오픈소스_유엔진솔루션즈
오픈테크넷 발표자료 B paa_s 구축을 위한 오픈소스_유엔진솔루션즈
uEngine Solutions
 

Viewers also liked (18)

Beyond Process, Sharing Of Process
Beyond  Process,  Sharing  Of  ProcessBeyond  Process,  Sharing  Of  Process
Beyond Process, Sharing Of Process
 
[8]viii.process as a service platform process codi
[8]viii.process as a service platform   process codi[8]viii.process as a service platform   process codi
[8]viii.process as a service platform process codi
 
Jco 제 12회 자바컨퍼런스 - PaaS for Business Expert (부재: GAE 오픈소스로 따라잡기)
Jco 제 12회 자바컨퍼런스 - PaaS for Business Expert (부재: GAE 오픈소스로 따라잡기)Jco 제 12회 자바컨퍼런스 - PaaS for Business Expert (부재: GAE 오픈소스로 따라잡기)
Jco 제 12회 자바컨퍼런스 - PaaS for Business Expert (부재: GAE 오픈소스로 따라잡기)
 
Process As A Service Platform Process Codi For Sharing
Process  As  A  Service  Platform    Process  Codi For SharingProcess  As  A  Service  Platform    Process  Codi For Sharing
Process As A Service Platform Process Codi For Sharing
 
메타웍스3 프레임워크의 교육적 활용
메타웍스3 프레임워크의 교육적 활용메타웍스3 프레임워크의 교육적 활용
메타웍스3 프레임워크의 교육적 활용
 
[6]vi.패스트캣 컨퍼런스 발표자료
[6]vi.패스트캣 컨퍼런스 발표자료[6]vi.패스트캣 컨퍼런스 발표자료
[6]vi.패스트캣 컨퍼런스 발표자료
 
[3]iii.2011 iaasjinotech
[3]iii.2011 iaasjinotech[3]iii.2011 iaasjinotech
[3]iii.2011 iaasjinotech
 
메타웍스3 워크숍 - 개념소개 및 예제, 그리고 간단한 API문서포함
메타웍스3 워크숍 - 개념소개 및 예제, 그리고 간단한 API문서포함 메타웍스3 워크숍 - 개념소개 및 예제, 그리고 간단한 API문서포함
메타웍스3 워크숍 - 개념소개 및 예제, 그리고 간단한 API문서포함
 
제4회 아키텍트대회 발표자료 유엔진솔루션즈 장진영 V1.2[1] 110624
제4회 아키텍트대회 발표자료 유엔진솔루션즈 장진영 V1.2[1] 110624제4회 아키텍트대회 발표자료 유엔진솔루션즈 장진영 V1.2[1] 110624
제4회 아키텍트대회 발표자료 유엔진솔루션즈 장진영 V1.2[1] 110624
 
Business process approach and the future of bpm u engine jinyoung jang - pa...
Business process approach and the future of bpm   u engine jinyoung jang - pa...Business process approach and the future of bpm   u engine jinyoung jang - pa...
Business process approach and the future of bpm u engine jinyoung jang - pa...
 
리얼타임 소셜 비즈니스 플랫폼 제출용
리얼타임 소셜 비즈니스 플랫폼 제출용리얼타임 소셜 비즈니스 플랫폼 제출용
리얼타임 소셜 비즈니스 플랫폼 제출용
 
Social BPM based e-Learning Scenario and ProcessCodi
Social BPM based e-Learning Scenario and ProcessCodiSocial BPM based e-Learning Scenario and ProcessCodi
Social BPM based e-Learning Scenario and ProcessCodi
 
유엔진 Bpm 사용자메뉴얼 v 3.5.4
유엔진 Bpm 사용자메뉴얼 v 3.5.4유엔진 Bpm 사용자메뉴얼 v 3.5.4
유엔진 Bpm 사용자메뉴얼 v 3.5.4
 
[10]x.social commerce 구축 시나리오 process codi
[10]x.social commerce 구축 시나리오   process codi[10]x.social commerce 구축 시나리오   process codi
[10]x.social commerce 구축 시나리오 process codi
 
스마트워크 소셜 비즈니스 프로세스 패턴 110608
스마트워크 소셜 비즈니스 프로세스 패턴 110608스마트워크 소셜 비즈니스 프로세스 패턴 110608
스마트워크 소셜 비즈니스 프로세스 패턴 110608
 
OCE - Cno 2014 private sector oriented open paas oce
OCE - Cno 2014 private sector oriented open paas   oceOCE - Cno 2014 private sector oriented open paas   oce
OCE - Cno 2014 private sector oriented open paas oce
 
오픈테크넷 발표자료 B paa_s 구축을 위한 오픈소스_유엔진솔루션즈
오픈테크넷 발표자료 B paa_s 구축을 위한 오픈소스_유엔진솔루션즈오픈테크넷 발표자료 B paa_s 구축을 위한 오픈소스_유엔진솔루션즈
오픈테크넷 발표자료 B paa_s 구축을 위한 오픈소스_유엔진솔루션즈
 
Essencia ui ux specification 2014 10 15
Essencia ui ux specification 2014 10 15Essencia ui ux specification 2014 10 15
Essencia ui ux specification 2014 10 15
 

Similar to 웹기반 Ajax개발을 위한 프레임워크 - metaworks3 (메타웍스3)

No Coding Necessary: Building Confluence User Macros Cheat Sheet - Atlassian ...
No Coding Necessary: Building Confluence User Macros Cheat Sheet - Atlassian ...No Coding Necessary: Building Confluence User Macros Cheat Sheet - Atlassian ...
No Coding Necessary: Building Confluence User Macros Cheat Sheet - Atlassian ...
Atlassian
 
Spring dependency injection
Spring dependency injectionSpring dependency injection
Spring dependency injection
srmelody
 
Symfony Day 2010 Doctrine MongoDB ODM
Symfony Day 2010 Doctrine MongoDB ODMSymfony Day 2010 Doctrine MongoDB ODM
Symfony Day 2010 Doctrine MongoDB ODM
Jonathan Wage
 
Overview of Android Infrastructure
Overview of Android InfrastructureOverview of Android Infrastructure
Overview of Android Infrastructure
Alexey Buzdin
 
Overview of Android Infrastructure
Overview of Android InfrastructureOverview of Android Infrastructure
Overview of Android Infrastructure
C.T.Co
 
The Magic Revealed: Four Real-World Examples of Using the Client Object Model...
The Magic Revealed: Four Real-World Examples of Using the Client Object Model...The Magic Revealed: Four Real-World Examples of Using the Client Object Model...
The Magic Revealed: Four Real-World Examples of Using the Client Object Model...
SPTechCon
 
Data Abstraction for Large Web Applications
Data Abstraction for Large Web ApplicationsData Abstraction for Large Web Applications
Data Abstraction for Large Web Applications
brandonsavage
 
Powerful persistence layer with Google Guice & MyBatis
Powerful persistence layer with Google Guice & MyBatisPowerful persistence layer with Google Guice & MyBatis
Powerful persistence layer with Google Guice & MyBatis
simonetripodi
 

Similar to 웹기반 Ajax개발을 위한 프레임워크 - metaworks3 (메타웍스3) (20)

JNDI
JNDIJNDI
JNDI
 
No Coding Necessary: Building Confluence User Macros Cheat Sheet - Atlassian ...
No Coding Necessary: Building Confluence User Macros Cheat Sheet - Atlassian ...No Coding Necessary: Building Confluence User Macros Cheat Sheet - Atlassian ...
No Coding Necessary: Building Confluence User Macros Cheat Sheet - Atlassian ...
 
比XML更好用的Java Annotation
比XML更好用的Java Annotation比XML更好用的Java Annotation
比XML更好用的Java Annotation
 
Spring dependency injection
Spring dependency injectionSpring dependency injection
Spring dependency injection
 
Cordova training : Day 4 - Advanced Javascript
Cordova training : Day 4 - Advanced JavascriptCordova training : Day 4 - Advanced Javascript
Cordova training : Day 4 - Advanced Javascript
 
Symfony Day 2010 Doctrine MongoDB ODM
Symfony Day 2010 Doctrine MongoDB ODMSymfony Day 2010 Doctrine MongoDB ODM
Symfony Day 2010 Doctrine MongoDB ODM
 
Libertyvasion2010
Libertyvasion2010Libertyvasion2010
Libertyvasion2010
 
La sql
La sqlLa sql
La sql
 
Entity Framework Database and Code First
Entity Framework Database and Code FirstEntity Framework Database and Code First
Entity Framework Database and Code First
 
MVC pattern for widgets
MVC pattern for widgetsMVC pattern for widgets
MVC pattern for widgets
 
ExSchema
ExSchemaExSchema
ExSchema
 
Devoxx08 - Nuxeo Core, JCR 2, CMIS
Devoxx08 - Nuxeo Core, JCR 2, CMIS Devoxx08 - Nuxeo Core, JCR 2, CMIS
Devoxx08 - Nuxeo Core, JCR 2, CMIS
 
Overview of Android Infrastructure
Overview of Android InfrastructureOverview of Android Infrastructure
Overview of Android Infrastructure
 
Overview of Android Infrastructure
Overview of Android InfrastructureOverview of Android Infrastructure
Overview of Android Infrastructure
 
Entity Framework: Nakov @ BFU Hackhaton 2015
Entity Framework: Nakov @ BFU Hackhaton 2015Entity Framework: Nakov @ BFU Hackhaton 2015
Entity Framework: Nakov @ BFU Hackhaton 2015
 
Real World MVC
Real World MVCReal World MVC
Real World MVC
 
Modern Android app library stack
Modern Android app library stackModern Android app library stack
Modern Android app library stack
 
The Magic Revealed: Four Real-World Examples of Using the Client Object Model...
The Magic Revealed: Four Real-World Examples of Using the Client Object Model...The Magic Revealed: Four Real-World Examples of Using the Client Object Model...
The Magic Revealed: Four Real-World Examples of Using the Client Object Model...
 
Data Abstraction for Large Web Applications
Data Abstraction for Large Web ApplicationsData Abstraction for Large Web Applications
Data Abstraction for Large Web Applications
 
Powerful persistence layer with Google Guice & MyBatis
Powerful persistence layer with Google Guice & MyBatisPowerful persistence layer with Google Guice & MyBatis
Powerful persistence layer with Google Guice & MyBatis
 

More from uEngine Solutions

More from uEngine Solutions (20)

이벤트스토밍과 BDD 를 혼합하여 소프트웨어 디자인과 테스트 자동화하기
이벤트스토밍과 BDD 를 혼합하여 소프트웨어 디자인과 테스트 자동화하기이벤트스토밍과 BDD 를 혼합하여 소프트웨어 디자인과 테스트 자동화하기
이벤트스토밍과 BDD 를 혼합하여 소프트웨어 디자인과 테스트 자동화하기
 
비대면 MSA / CNA 강의 - Contactless Microservices Architecture Learning
비대면 MSA / CNA 강의 - Contactless Microservices Architecture Learning비대면 MSA / CNA 강의 - Contactless Microservices Architecture Learning
비대면 MSA / CNA 강의 - Contactless Microservices Architecture Learning
 
Event storming based msa training commerce example add_handson_v3
Event storming based msa training commerce example add_handson_v3Event storming based msa training commerce example add_handson_v3
Event storming based msa training commerce example add_handson_v3
 
Event storming based msa training commerce example v2
Event storming based msa training commerce example v2Event storming based msa training commerce example v2
Event storming based msa training commerce example v2
 
Event storming based msa training commerce example
Event storming based msa training commerce exampleEvent storming based msa training commerce example
Event storming based msa training commerce example
 
Event Storming and Implementation Workshop
Event Storming and Implementation WorkshopEvent Storming and Implementation Workshop
Event Storming and Implementation Workshop
 
designing, implementing and delivering microservices with event storming, spr...
designing, implementing and delivering microservices with event storming, spr...designing, implementing and delivering microservices with event storming, spr...
designing, implementing and delivering microservices with event storming, spr...
 
Microservice coding guide
Microservice coding guideMicroservice coding guide
Microservice coding guide
 
Safe cloud native transformation approaches
Safe cloud native transformation approachesSafe cloud native transformation approaches
Safe cloud native transformation approaches
 
microservice architecture public education v2
microservice architecture public education v2microservice architecture public education v2
microservice architecture public education v2
 
From event storming to spring cloud implementation
From event storming to spring cloud implementationFrom event storming to spring cloud implementation
From event storming to spring cloud implementation
 
유엔진 오픈소스 클라우드 플랫폼 (uEngine Microservice architecture Platform)
유엔진 오픈소스 클라우드 플랫폼 (uEngine Microservice architecture Platform)유엔진 오픈소스 클라우드 플랫폼 (uEngine Microservice architecture Platform)
유엔진 오픈소스 클라우드 플랫폼 (uEngine Microservice architecture Platform)
 
Distributed transanction in microservices
Distributed transanction in microservicesDistributed transanction in microservices
Distributed transanction in microservices
 
From event storming to spring cloud implementation
From event storming to spring cloud implementationFrom event storming to spring cloud implementation
From event storming to spring cloud implementation
 
Micro service architecture
Micro service architectureMicro service architecture
Micro service architecture
 
Open Cloud Engine PaaS Snapshots
Open Cloud Engine PaaS SnapshotsOpen Cloud Engine PaaS Snapshots
Open Cloud Engine PaaS Snapshots
 
Private PaaS with Docker, spring cloud and mesos
Private PaaS with Docker, spring cloud and mesos Private PaaS with Docker, spring cloud and mesos
Private PaaS with Docker, spring cloud and mesos
 
Bluemix paas 기반 saas 개발 사례
Bluemix paas 기반 saas 개발 사례Bluemix paas 기반 saas 개발 사례
Bluemix paas 기반 saas 개발 사례
 
Process Oriented Architecture
Process Oriented ArchitectureProcess Oriented Architecture
Process Oriented Architecture
 
Building multi tenancy enterprise applications - quick
Building multi tenancy enterprise applications - quickBuilding multi tenancy enterprise applications - quick
Building multi tenancy enterprise applications - quick
 

Recently uploaded

TrustArc Webinar - Unified Trust Center for Privacy, Security, Compliance, an...
TrustArc Webinar - Unified Trust Center for Privacy, Security, Compliance, an...TrustArc Webinar - Unified Trust Center for Privacy, Security, Compliance, an...
TrustArc Webinar - Unified Trust Center for Privacy, Security, Compliance, an...
TrustArc
 
Harnessing Passkeys in the Battle Against AI-Powered Cyber Threats.pptx
Harnessing Passkeys in the Battle Against AI-Powered Cyber Threats.pptxHarnessing Passkeys in the Battle Against AI-Powered Cyber Threats.pptx
Harnessing Passkeys in the Battle Against AI-Powered Cyber Threats.pptx
FIDO Alliance
 
Hyatt driving innovation and exceptional customer experiences with FIDO passw...
Hyatt driving innovation and exceptional customer experiences with FIDO passw...Hyatt driving innovation and exceptional customer experiences with FIDO passw...
Hyatt driving innovation and exceptional customer experiences with FIDO passw...
FIDO Alliance
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Safe Software
 
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Victor Rentea
 

Recently uploaded (20)

Choreo: Empowering the Future of Enterprise Software Engineering
Choreo: Empowering the Future of Enterprise Software EngineeringChoreo: Empowering the Future of Enterprise Software Engineering
Choreo: Empowering the Future of Enterprise Software Engineering
 
CNIC Information System with Pakdata Cf In Pakistan
CNIC Information System with Pakdata Cf In PakistanCNIC Information System with Pakdata Cf In Pakistan
CNIC Information System with Pakdata Cf In Pakistan
 
API Governance and Monetization - The evolution of API governance
API Governance and Monetization -  The evolution of API governanceAPI Governance and Monetization -  The evolution of API governance
API Governance and Monetization - The evolution of API governance
 
Simplifying Mobile A11y Presentation.pptx
Simplifying Mobile A11y Presentation.pptxSimplifying Mobile A11y Presentation.pptx
Simplifying Mobile A11y Presentation.pptx
 
Working together SRE & Platform Engineering
Working together SRE & Platform EngineeringWorking together SRE & Platform Engineering
Working together SRE & Platform Engineering
 
Quantum Leap in Next-Generation Computing
Quantum Leap in Next-Generation ComputingQuantum Leap in Next-Generation Computing
Quantum Leap in Next-Generation Computing
 
Design Guidelines for Passkeys 2024.pptx
Design Guidelines for Passkeys 2024.pptxDesign Guidelines for Passkeys 2024.pptx
Design Guidelines for Passkeys 2024.pptx
 
DBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor PresentationDBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor Presentation
 
TrustArc Webinar - Unified Trust Center for Privacy, Security, Compliance, an...
TrustArc Webinar - Unified Trust Center for Privacy, Security, Compliance, an...TrustArc Webinar - Unified Trust Center for Privacy, Security, Compliance, an...
TrustArc Webinar - Unified Trust Center for Privacy, Security, Compliance, an...
 
Harnessing Passkeys in the Battle Against AI-Powered Cyber Threats.pptx
Harnessing Passkeys in the Battle Against AI-Powered Cyber Threats.pptxHarnessing Passkeys in the Battle Against AI-Powered Cyber Threats.pptx
Harnessing Passkeys in the Battle Against AI-Powered Cyber Threats.pptx
 
Hyatt driving innovation and exceptional customer experiences with FIDO passw...
Hyatt driving innovation and exceptional customer experiences with FIDO passw...Hyatt driving innovation and exceptional customer experiences with FIDO passw...
Hyatt driving innovation and exceptional customer experiences with FIDO passw...
 
Six Myths about Ontologies: The Basics of Formal Ontology
Six Myths about Ontologies: The Basics of Formal OntologySix Myths about Ontologies: The Basics of Formal Ontology
Six Myths about Ontologies: The Basics of Formal Ontology
 
Introduction to Multilingual Retrieval Augmented Generation (RAG)
Introduction to Multilingual Retrieval Augmented Generation (RAG)Introduction to Multilingual Retrieval Augmented Generation (RAG)
Introduction to Multilingual Retrieval Augmented Generation (RAG)
 
Design and Development of a Provenance Capture Platform for Data Science
Design and Development of a Provenance Capture Platform for Data ScienceDesign and Development of a Provenance Capture Platform for Data Science
Design and Development of a Provenance Capture Platform for Data Science
 
How to Check CNIC Information Online with Pakdata cf
How to Check CNIC Information Online with Pakdata cfHow to Check CNIC Information Online with Pakdata cf
How to Check CNIC Information Online with Pakdata cf
 
AI in Action: Real World Use Cases by Anitaraj
AI in Action: Real World Use Cases by AnitarajAI in Action: Real World Use Cases by Anitaraj
AI in Action: Real World Use Cases by Anitaraj
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
 
Platformless Horizons for Digital Adaptability
Platformless Horizons for Digital AdaptabilityPlatformless Horizons for Digital Adaptability
Platformless Horizons for Digital Adaptability
 
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
 
Event-Driven Architecture Masterclass: Challenges in Stream Processing
Event-Driven Architecture Masterclass: Challenges in Stream ProcessingEvent-Driven Architecture Masterclass: Challenges in Stream Processing
Event-Driven Architecture Masterclass: Challenges in Stream Processing
 

웹기반 Ajax개발을 위한 프레임워크 - metaworks3 (메타웍스3)

  • 1. 웹기반 AJAX개발을 위한 프레임워크 – 메타웍스3 유엔진 오픈소스 BPM 프로젝트 장진영 jyjang@uengine.org www.metaworks3.org
  • 2. Concurrent Web-based Applications : www.metaworks3.org
  • 3. You are the mother, How about your Object ? Mother cares All the things? Do that by himself ? www.metaworks3.org
  • 4. Introducing Metaworks3 – • Metaworks is ‘metadata-oriented framework’ • Concurrent Web-based (and mobile) Applications are degrading the Object’s own property – Cohesion of metadata. • For example, you need to keep the properties’ type as same value in DHTML scripts, Server Object, Data Object(Hibernate), and the DDL script as well. • Centralizing metadata and behaviors – it’s Object-Oriented Manner itself! • Metaworks automatically synchronizes(or hides the operation) … • Stubs for calling Javascript to the server function (using DWR) • DAO object and relational query (not completely, SQL is still good) • Keeps intuitive and Sophisticated Programming Model… Don’t be a dog! • By managing the metadata www.metaworks3.org
  • 5. 문제: – 흩어진 메타데이터 General Approach: Using Metaworks3: Spring MVC, JSON, jQuery, Hibernate meta data Controlle Domain r Controlle class r (java version) View DAO You have to meta Synchronize the gap meta Metaworks Metaworks View data DAO data Synchronizes the Proxy meta Synchronizes the Proxy data Domain Domain class Domain class (JS (Hibernat Class version) e version) (Java) www.metaworks3.org
  • 6. No more words, Seeing is believing: #Domain Class (Posting.java) #Presentation (Posting.ejs) @Table(name = “fb_posting”) public class Posting extends MetaworksObject<IPosting> <%=fields.document.here() %> implements IPosting{ <% String document; if(mw3.when == mw3.WHEN_EDIT){ @Id %> public String getDocument() { <%=methods.share.here()%> return document; <% } } public void setDocument(String document) { %> this.document = document; } @ServiceMethod public void share() throws Exception{ createDatabaseMe(); } } #Application (application.html) #Result <script> mw3.setContextWhen(mw3.WHEN_EDIT); mw3.locateObject( { document:"", __className: "org.metaworks.example.Posting” }, null, 'newEntry’ ); </script> ... <div id=‘newEntry’></div> www.metaworks3.org
  • 7. FaceBook example Steps: 1. Recognizing what is (was) ‘Object’ in your application 2. Modeling the Objects 3. Face making and Context-awaring for the Objects 4. Creating Application with highly-abstracted programming Model – almost natural language!  Humanity-Recovery ! www.metaworks3.org
  • 8. Step 1. Recognizing what is (was) ‘Object’ in your application www.metaworks3.org
  • 9. 1. Recognizing Objects in facebook Person object Posting object Doc object Group object www.metaworks3.org
  • 10. 1. Recognizing Objects in facebook 1.1. Person objects in different ‘Context’ Where: NORMAL Where: MINIMISED Where: MEDIUM www.metaworks3.org
  • 11. 1. Recognizing Objects in facebook 1.2. Posting objects in different ‘Context’ Where: NORMAL Where: NORMAL Where: MINIMISED When: EDIT When: VIEW When: EDIT www.metaworks3.org
  • 12. Step 2. Modeling the ‘Cohesive’ Objects www.metaworks3.org
  • 13. 2. Modeling Objects - Posting object Design – 2.1. create interface import org.metaworks.dao.IDAO; public interface IPosting extends IDAO{ public Person getWriter(); // 작성자 public void setWriter(Person writer); public String getDocument(); // 글 public void setDocument(String document); public boolean isLikeIt(); // 좋아요 여부 public void setLikeIt(boolean likeIt); } www.metaworks3.org
  • 14. 2. Modeling Objects - Posting object Design – 2.2. add metadata import org.metaworks.dao.IDAO; @Table(name="Posting") public interface IPosting extends IDAO{ public Person getWriter(); public void setWriter(Person writer); @Id public String getDocument(); public void setDocument(String document); public boolean isLikeIt(); public void setLikeIt(boolean likeIt); @ServiceMethod public void post() throws Exception; @ServiceMethod public void like() throws Exception; } www.metaworks3.org
  • 15. 2. Modeling Objects – Posting object 2.3. create implementation object public class Posting extends Database<IPosting> implements IPosting{ Person writer; public Person getWriter() { return writer; } public void setWriter(Person writer) { this.writer = writer; } String document; public String getDocument() { return document; } public void setDocument(String document) { this.document = document; } boolean likeIt; public boolean isLikeIt() { return likeIt; } public void setLikeIt(boolean likeIt) { this.likeIt = likeIt; } } www.metaworks3.org
  • 16. 2. Modeling Objects - Posting object 2.4. add behaviors public class Posting extends Database<IPosting> implements IPosting{ Person writer; public Person getWriter() { return writer; } public void setWriter(Person writer) { this.writer = writer; } String document; public String getDocument() { return document; } public void setDocument(String document) { this.document = document; } boolean likeIt; public boolean isLikeIt() { return likeIt; } public void setLikeIt(boolean likeIt) { this.likeIt = likeIt; } public void post() throws Exception{ createDatabaseMe(); } public void like() throws Exception{ databaseMe().setLikeIt(true); //will automatically synchronize the value } } www.metaworks3.org
  • 17. Step 3 Face making and Context-awaring for the Objects www.metaworks3.org
  • 18. 3. Face Making 3.1. creating ‘Face’ – Posting.ejs <table> <tr> <td><%=fields.writer.here() %></td> <td><%=fields.document.here() %> <% if(value.likeIt){ %> You like this <% }else{%> <a onclick=<%=methods.like.caller()%>>좋아요</a> <%}%> </td> </tr> </table> www.metaworks3.org
  • 19. 3. Face Making 3.1. considering the Contexts – WHEN_EDIT <% if(mw3.when == mw3.WHEN_EDIT){ value.document = 'Share your status...'; } %> <table> <tr> <td><%=fields.writer.here()%></td> <td><%=fields.document.here()%> <% if(mw3.when == mw3.WHEN_EDIT){ %> <%=methods.post.here()%> <% } if(value.likeIt){ %> You like this <% }else{%> <%=methods.like.here()%> <%}%> <% if(mw3.when == mw3.WHEN_EDIT){ %> <input type=button value="save"> <% }else{ %> <input type=button onclick="<%=editFunction%>" value="edit"a> <% } %> </td> </tr> </table> www.metaworks3.org
  • 20. Next, Do 1~3 for Person object – Person.java & Person.ejs #Person.java #Person.ejs public interface Person extends IDAO{ <%if (!value){%> @org.metaworks.Metadata(isKey = true) Writer is not specified public String getName(); <%}else{%> public void setName(String name); <img src="<%=value.portraitURL%>" width=50><br> public int getAge(); <b><%=value.name%></b> public void setAge(int age); <%}%> @org.metaworks.Metadata(face="faces/image.ejs”) public String getPortraitURL(); public void setPortraitURL(String portraitURL); public boolean isMyFried(); public void setMyFried(boolean isMyFried); } www.metaworks3.org
  • 21. Step 4 Creating Application with highly-abstracted programming Model – Write a Novel or Poet, not the alien language www.metaworks3.org
  • 22. 4. Now, create the Application <script type="text/javascript"> lastEntryId = new MetaworksObject( { document:"", writer: loginUser, __className: "org.metaworks.example.Posting" }, 'newEntry' ); </script> <div id=”newEntry"></div> www.metaworks3.org
  • 23. Result www.metaworks3.org
  • 26. Applications ProcessCodi Enterprise 2.0 Platform www.metaworks3.org
  • 27. Conclusion • No duplicated metadata mapping e.g. JSON object mapping in Spring Controller and DAO mapping for Hibernate.  No errors from duplicated metadata source. • Cohesive User Interface management by EJS- object mapping. • Intuitive Programming Model – model and metadata-driven, not implementation-driven. Only thing you have to do is… just forgetting the old manners! www.metaworks3.org
  • 28. All the Source Code available here: www.metaworks3.org it’s very early stage now! You are welcomed to participate this Open Source Project. www.metaworks3.org