SlideShare ist ein Scribd-Unternehmen logo
1 von 23
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
Introducing Metaworks3
   – Lifecycle of metadata


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

                    meta
                    data                                                        Controller
                       Domain
       Controller     class (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
                                          (Hibernate                             Class
       version)
                                           version)                              (Java)
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>
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 !
Step 1.
Recognizing what is (was)
‘Object’ in your application
1. Recognizing Objects in facebook




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




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




           Where: NORMAL                  Where: NORMAL   Where: MINIMISED
           When: EDIT                     When: VIEW      When: EDIT
Step 2.
Modeling the ‘Cohesive’
Objects
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);

}
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;
}
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;
             }
}
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
       }
}
Step 3
Face making and Context-awaring for
the Objects
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>
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>
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);
}
Step 4
Creating Application with
highly-abstracted
programming Model –
Write a Novel or Poet, not
the alien language
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>
Result
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!
All the Source Code available here:
 http://www.largedocument.com/2/99c863a7/mw3
 _facebook_example_MetaworksObject.zip

 - it’s very early stage now! You are welcomed to
   participate this Open Source Project. E-mail me:
   jyjang at uengine.org
You are the mother, How about your Object ?

Mother cares All the things?                   Do that by himself ?

Weitere ähnliche Inhalte

Was ist angesagt?

Linked In Presentation
Linked In PresentationLinked In Presentation
Linked In Presentationapweir12
 
Web 2 | CSS - Cascading Style Sheets
Web 2 | CSS - Cascading Style SheetsWeb 2 | CSS - Cascading Style Sheets
Web 2 | CSS - Cascading Style SheetsMohammad Imam Hossain
 
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 ClassesArvind Krishnaa
 
Architecture Components
Architecture Components Architecture Components
Architecture Components DataArt
 
Vaadin JPAContainer
Vaadin JPAContainerVaadin JPAContainer
Vaadin JPAContainercmkandemir
 
My Portfolio
My PortfolioMy Portfolio
My Portfolioaemartin4
 
Data binding в массы! (1.2)
Data binding в массы! (1.2)Data binding в массы! (1.2)
Data binding в массы! (1.2)Yurii Kotov
 
Anton Minashkin Dagger 2 light
Anton Minashkin Dagger 2 lightAnton Minashkin Dagger 2 light
Anton Minashkin Dagger 2 lightMichael Pustovit
 
Spring data presentation
Spring data presentationSpring data presentation
Spring data presentationOleksii Usyk
 
Symfony2 from the Trenches
Symfony2 from the TrenchesSymfony2 from the Trenches
Symfony2 from the TrenchesJonathan Wage
 
Introduction to Restkit
Introduction to RestkitIntroduction to Restkit
Introduction to Restkitpetertmarks
 
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 KnockoutJSBoyan Mihaylov
 
JS Fest 2019. Glenn Reyes. With great power comes great React hooks!
JS Fest 2019. Glenn Reyes. With great power comes great React hooks!JS Fest 2019. Glenn Reyes. With great power comes great React hooks!
JS Fest 2019. Glenn Reyes. With great power comes great React hooks!JSFestUA
 
Doctrine MongoDB Object Document Mapper
Doctrine MongoDB Object Document MapperDoctrine MongoDB Object Document Mapper
Doctrine MongoDB Object Document MapperJonathan Wage
 
Hibernate Tutorial
Hibernate TutorialHibernate Tutorial
Hibernate TutorialSyed Shahul
 

Was ist angesagt? (20)

Linked In Presentation
Linked In PresentationLinked In Presentation
Linked In Presentation
 
Web 6 | JavaScript DOM
Web 6 | JavaScript DOMWeb 6 | JavaScript DOM
Web 6 | JavaScript DOM
 
Simple Data Binding
Simple Data BindingSimple Data Binding
Simple Data Binding
 
Javascript 2
Javascript 2Javascript 2
Javascript 2
 
Web 2 | CSS - Cascading Style Sheets
Web 2 | CSS - Cascading Style SheetsWeb 2 | CSS - Cascading Style Sheets
Web 2 | CSS - Cascading Style Sheets
 
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
 
Architecture Components
Architecture Components Architecture Components
Architecture Components
 
Vaadin JPAContainer
Vaadin JPAContainerVaadin JPAContainer
Vaadin JPAContainer
 
My Portfolio
My PortfolioMy Portfolio
My Portfolio
 
Android - Saving data
Android - Saving dataAndroid - Saving data
Android - Saving data
 
Data binding в массы! (1.2)
Data binding в массы! (1.2)Data binding в массы! (1.2)
Data binding в массы! (1.2)
 
Backendless apps
Backendless appsBackendless apps
Backendless apps
 
Anton Minashkin Dagger 2 light
Anton Minashkin Dagger 2 lightAnton Minashkin Dagger 2 light
Anton Minashkin Dagger 2 light
 
Spring data presentation
Spring data presentationSpring data presentation
Spring data presentation
 
Symfony2 from the Trenches
Symfony2 from the TrenchesSymfony2 from the Trenches
Symfony2 from the Trenches
 
Introduction to Restkit
Introduction to RestkitIntroduction to Restkit
Introduction to Restkit
 
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
 
JS Fest 2019. Glenn Reyes. With great power comes great React hooks!
JS Fest 2019. Glenn Reyes. With great power comes great React hooks!JS Fest 2019. Glenn Reyes. With great power comes great React hooks!
JS Fest 2019. Glenn Reyes. With great power comes great React hooks!
 
Doctrine MongoDB Object Document Mapper
Doctrine MongoDB Object Document MapperDoctrine MongoDB Object Document Mapper
Doctrine MongoDB Object Document Mapper
 
Hibernate Tutorial
Hibernate TutorialHibernate Tutorial
Hibernate Tutorial
 

Andere mochten auch

웹표준 프레임워크 메타웍스3의 적용 사례와 생산성
웹표준 프레임워크   메타웍스3의 적용 사례와 생산성웹표준 프레임워크   메타웍스3의 적용 사례와 생산성
웹표준 프레임워크 메타웍스3의 적용 사례와 생산성영재 김
 
스마트워크플레이스 플랫폼 프로세스 코디
스마트워크플레이스 플랫폼 프로세스 코디 스마트워크플레이스 플랫폼 프로세스 코디
스마트워크플레이스 플랫폼 프로세스 코디 uEngine Solutions
 
Metaworks3 Framework workbook 2015
Metaworks3 Framework workbook 2015Metaworks3 Framework workbook 2015
Metaworks3 Framework workbook 2015uEngine Solutions
 
SaaS transformation with OCE - uEngineCloud
SaaS transformation with OCE - uEngineCloudSaaS transformation with OCE - uEngineCloud
SaaS transformation with OCE - uEngineClouduEngine Solutions
 
SAP 플랫폼을 활용한 혁신전략
SAP 플랫폼을 활용한 혁신전략SAP 플랫폼을 활용한 혁신전략
SAP 플랫폼을 활용한 혁신전략mosaicnet
 
기업 잠재력과 엔터프라이즈 2.0
기업 잠재력과 엔터프라이즈 2.0기업 잠재력과 엔터프라이즈 2.0
기업 잠재력과 엔터프라이즈 2.0uEngine Solutions
 

Andere mochten auch (6)

웹표준 프레임워크 메타웍스3의 적용 사례와 생산성
웹표준 프레임워크   메타웍스3의 적용 사례와 생산성웹표준 프레임워크   메타웍스3의 적용 사례와 생산성
웹표준 프레임워크 메타웍스3의 적용 사례와 생산성
 
스마트워크플레이스 플랫폼 프로세스 코디
스마트워크플레이스 플랫폼 프로세스 코디 스마트워크플레이스 플랫폼 프로세스 코디
스마트워크플레이스 플랫폼 프로세스 코디
 
Metaworks3 Framework workbook 2015
Metaworks3 Framework workbook 2015Metaworks3 Framework workbook 2015
Metaworks3 Framework workbook 2015
 
SaaS transformation with OCE - uEngineCloud
SaaS transformation with OCE - uEngineCloudSaaS transformation with OCE - uEngineCloud
SaaS transformation with OCE - uEngineCloud
 
SAP 플랫폼을 활용한 혁신전략
SAP 플랫폼을 활용한 혁신전략SAP 플랫폼을 활용한 혁신전략
SAP 플랫폼을 활용한 혁신전략
 
기업 잠재력과 엔터프라이즈 2.0
기업 잠재력과 엔터프라이즈 2.0기업 잠재력과 엔터프라이즈 2.0
기업 잠재력과 엔터프라이즈 2.0
 

Ähnlich wie Metaworks3

比XML更好用的Java Annotation
比XML更好用的Java Annotation比XML更好用的Java Annotation
比XML更好用的Java Annotationjavatwo2011
 
Rails vs Web2py
Rails vs Web2pyRails vs Web2py
Rails vs Web2pyjonromero
 
Devoxx08 - Nuxeo Core, JCR 2, CMIS
Devoxx08 - Nuxeo Core, JCR 2, CMIS Devoxx08 - Nuxeo Core, JCR 2, CMIS
Devoxx08 - Nuxeo Core, JCR 2, CMIS Nuxeo
 
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
 
Entity Framework Database and Code First
Entity Framework Database and Code FirstEntity Framework Database and Code First
Entity Framework Database and Code FirstJames Johnson
 
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 & MyBatissimonetripodi
 
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!Oliver Gierke
 
Spring dependency injection
Spring dependency injectionSpring dependency injection
Spring dependency injectionsrmelody
 
jdbc_presentation.ppt
jdbc_presentation.pptjdbc_presentation.ppt
jdbc_presentation.pptDrMeenakshiS
 
Multilingualism makes better programmers
Multilingualism makes better programmersMultilingualism makes better programmers
Multilingualism makes better programmersAlexander Varwijk
 
Introduction to Spring MVC
Introduction to Spring MVCIntroduction to Spring MVC
Introduction to Spring MVCRichard Paul
 
Михаил Анохин "Data binding 2.0"
Михаил Анохин "Data binding 2.0"Михаил Анохин "Data binding 2.0"
Михаил Анохин "Data binding 2.0"Fwdays
 
Entity Framework: Nakov @ BFU Hackhaton 2015
Entity Framework: Nakov @ BFU Hackhaton 2015Entity Framework: Nakov @ BFU Hackhaton 2015
Entity Framework: Nakov @ BFU Hackhaton 2015Svetlin Nakov
 

Ähnlich wie Metaworks3 (20)

比XML更好用的Java Annotation
比XML更好用的Java Annotation比XML更好用的Java Annotation
比XML更好用的Java Annotation
 
JNDI
JNDIJNDI
JNDI
 
Rails vs Web2py
Rails vs Web2pyRails vs Web2py
Rails vs Web2py
 
Devoxx08 - Nuxeo Core, JCR 2, CMIS
Devoxx08 - Nuxeo Core, JCR 2, CMIS Devoxx08 - Nuxeo Core, JCR 2, CMIS
Devoxx08 - Nuxeo Core, JCR 2, CMIS
 
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 ...
 
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
 
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
 
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!
 
Spring dependency injection
Spring dependency injectionSpring dependency injection
Spring dependency injection
 
Doctrine and NoSQL
Doctrine and NoSQLDoctrine and NoSQL
Doctrine and NoSQL
 
jdbc_presentation.ppt
jdbc_presentation.pptjdbc_presentation.ppt
jdbc_presentation.ppt
 
Multilingualism makes better programmers
Multilingualism makes better programmersMultilingualism makes better programmers
Multilingualism makes better programmers
 
Having Fun with Play
Having Fun with PlayHaving Fun with Play
Having Fun with Play
 
Doctrine for NoSQL
Doctrine for NoSQLDoctrine for NoSQL
Doctrine for NoSQL
 
Java beans
Java beansJava beans
Java beans
 
Introduction to Spring MVC
Introduction to Spring MVCIntroduction to Spring MVC
Introduction to Spring MVC
 
jQuery
jQueryjQuery
jQuery
 
Михаил Анохин "Data binding 2.0"
Михаил Анохин "Data binding 2.0"Михаил Анохин "Data binding 2.0"
Михаил Анохин "Data binding 2.0"
 
Entity Framework: Nakov @ BFU Hackhaton 2015
Entity Framework: Nakov @ BFU Hackhaton 2015Entity Framework: Nakov @ BFU Hackhaton 2015
Entity Framework: Nakov @ BFU Hackhaton 2015
 

Mehr von uEngine Solutions

이벤트스토밍과 BDD 를 혼합하여 소프트웨어 디자인과 테스트 자동화하기
이벤트스토밍과 BDD 를 혼합하여 소프트웨어 디자인과 테스트 자동화하기이벤트스토밍과 BDD 를 혼합하여 소프트웨어 디자인과 테스트 자동화하기
이벤트스토밍과 BDD 를 혼합하여 소프트웨어 디자인과 테스트 자동화하기uEngine Solutions
 
비대면 MSA / CNA 강의 - Contactless Microservices Architecture Learning
비대면 MSA / CNA 강의 - Contactless Microservices Architecture Learning비대면 MSA / CNA 강의 - Contactless Microservices Architecture Learning
비대면 MSA / CNA 강의 - Contactless Microservices Architecture LearninguEngine Solutions
 
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_v3uEngine Solutions
 
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 v2uEngine Solutions
 
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 exampleuEngine Solutions
 
Event Storming and Implementation Workshop
Event Storming and Implementation WorkshopEvent Storming and Implementation Workshop
Event Storming and Implementation WorkshopuEngine Solutions
 
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...uEngine Solutions
 
Safe cloud native transformation approaches
Safe cloud native transformation approachesSafe cloud native transformation approaches
Safe cloud native transformation approachesuEngine Solutions
 
microservice architecture public education v2
microservice architecture public education v2microservice architecture public education v2
microservice architecture public education v2uEngine Solutions
 
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 implementationuEngine Solutions
 
유엔진 오픈소스 클라우드 플랫폼 (uEngine Microservice architecture Platform)
유엔진 오픈소스 클라우드 플랫폼 (uEngine Microservice architecture Platform)유엔진 오픈소스 클라우드 플랫폼 (uEngine Microservice architecture Platform)
유엔진 오픈소스 클라우드 플랫폼 (uEngine Microservice architecture Platform)uEngine Solutions
 
Distributed transanction in microservices
Distributed transanction in microservicesDistributed transanction in microservices
Distributed transanction in microservicesuEngine Solutions
 
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 implementationuEngine Solutions
 
Open Cloud Engine PaaS Snapshots
Open Cloud Engine PaaS SnapshotsOpen Cloud Engine PaaS Snapshots
Open Cloud Engine PaaS SnapshotsuEngine Solutions
 
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 uEngine Solutions
 
Bluemix paas 기반 saas 개발 사례
Bluemix paas 기반 saas 개발 사례Bluemix paas 기반 saas 개발 사례
Bluemix paas 기반 saas 개발 사례uEngine Solutions
 
Process Oriented Architecture
Process Oriented ArchitectureProcess Oriented Architecture
Process Oriented ArchitectureuEngine Solutions
 
Building multi tenancy enterprise applications - quick
Building multi tenancy enterprise applications - quickBuilding multi tenancy enterprise applications - quick
Building multi tenancy enterprise applications - quickuEngine Solutions
 

Mehr von 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
 

Metaworks3

  • 1. 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
  • 2. Introducing Metaworks3 – Lifecycle of metadata General Approach: Using Metaworks3: Spring MVC, JSON, jQuery, Hibernate meta data Controller Domain Controller class (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 (Hibernate Class version) version) (Java)
  • 3. 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>
  • 4. 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 !
  • 5. Step 1. Recognizing what is (was) ‘Object’ in your application
  • 6. 1. Recognizing Objects in facebook Person object Posting object Doc object Group object
  • 7. 1. Recognizing Objects in facebook 1.1. Person objects in different ‘Context’ Where: NORMAL Where: MINIMISED Where: MEDIUM
  • 8. 1. Recognizing Objects in facebook 1.2. Posting objects in different ‘Context’ Where: NORMAL Where: NORMAL Where: MINIMISED When: EDIT When: VIEW When: EDIT
  • 9. Step 2. Modeling the ‘Cohesive’ Objects
  • 10. 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); }
  • 11. 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; }
  • 12. 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; } }
  • 13. 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 } }
  • 14. Step 3 Face making and Context-awaring for the Objects
  • 15. 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>
  • 16. 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>
  • 17. 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); }
  • 18. Step 4 Creating Application with highly-abstracted programming Model – Write a Novel or Poet, not the alien language
  • 19. 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>
  • 21. 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!
  • 22. All the Source Code available here: http://www.largedocument.com/2/99c863a7/mw3 _facebook_example_MetaworksObject.zip - it’s very early stage now! You are welcomed to participate this Open Source Project. E-mail me: jyjang at uengine.org
  • 23. You are the mother, How about your Object ? Mother cares All the things? Do that by himself ?