엔터프라이즈 매시업 마크업 언어

Enterprise Mashup Markup Language

EMML 또는 Enterprise Mashup Markup Language는 다양한 소스의 데이터를 소비하고 매쉬하는 소프트웨어 애플리케이션인 엔터프라이즈 매쉬업을 생성하기 위한 XML 마크업 언어로서, 데이터를 제시할 뿐만 아니라 논리적 또는 수학적 연산을 수행하는 경우가 많다.엔터프라이즈 매시업에서 생성된 매시드 데이터는 그래픽 사용자 인터페이스로 매시렛, 위젯 또는 가젯으로 표시된다.EML은 선언적 매시업 도메인 고유 언어(DSL)로도 간주될[citation needed] 수 있다.매시업 DSL은 기업 매시업을 만들기 위해 복잡하고 시간이 많이 걸리며 반복 가능한 절차 프로그래밍 로직을 필요로 하지 않는다.EMML은 또한 엔터프라이즈 매시업을 위한 시각적 도구를 만들기 위한 선언적 언어를 제공한다.

EMML의 주요 이점은 매시업 설계 이식성과 매시업 솔루션의 상호운용성이다.이러한 혜택은 소프트웨어 개발자에게 이전 가능한 기술을 창출하고 벤더의 로크인(lock-in)을 줄임으로써 기업 매시업 채택을 가속화할 것으로 기대된다.EMML의 도입은 웹 기반 애플리케이션과 서비스 지향 아키텍처(SOA) 기술의 통합으로 가는 추세를 가속화하는 데 도움이 될 것으로 기대된다.[1]뱅크오브아메리카는 EML의 유명한 초기 후원자였다.[2] 다른 저명한 초기 후원자들로는 휴렛팩커드, 캡제미니, 어도비 시스템즈, 인텔 등이 있었다.[3]

EML 기록

Raj Krishnamurthy (JackBe Corporation의 수석 설계자)와 Deepak Alur (JackBe Corporation의 VP 엔지니어링)는 2006년부터 EMML에 대한 작업을 시작했다.그들의 목표는 당시 엔터프라이즈 매시업 플랫폼이라고 불리는 새로운 유형의 미들웨어를 만들어 사용자 지향적이고 사용자가 사용할 수 있는 매시업을 가능하게 하는 것이었다.Raj Krishnamurty는 EMML의 수석 언어 디자이너이자 실행자가 되었으며, 또한 팀을 이끌고 Eclipse 기반의 EMML IDE인 Mashup Studio를 만들었다.[4]이 작업은 오픈 매시업 얼라이언스에 기증된 EML 참조 구현으로 발전했다.라지 크리슈나무르시는 오픈 매시업 얼라이언스를 통해 EMML의 핵심 공헌자 중 한 명이 되고 있다.

EMML 기능

EMML 언어는 다양한 웹 데이터 소스를 유연한 방법으로 소비하고 매시스트할 수 있는 풍부한 고급 매시업 도메인 어휘 세트를 제공한다.EML은 REST, WSDL, RSS/ATOM, RDBMS, POJO 등 이기종 서비스 스타일을 호출하기 위한 균일한 구문을 제공한다.또한 EMML 언어는 XML, JSON, JDBC, JavaObjects 및 원시 유형의 다양한 데이터 형식을 혼합할 수 있는 기능을 제공한다.

고급 EMML 언어 기능:

  • 이기종 서비스에서 전송되는 데이터 필터링 및 정렬
  • 이기종 서비스 및 데이터 형식 간에 데이터 결합
  • 다양한 기능을 사용하여 데이터 그룹화 및 집계
  • 원래 서비스 데이터에 주석을 달아서 의미론적 의미 강화
  • 여러 데이터 스트림을 통합 데이터셋으로 병합
  • 데이터셋을 분할하여 개별 데이터 필드 선택
  • JavaScript, JRuby, Groovy, XQuery에 대한 내장된 스크립팅 지원
  • HTML 페이지에서 데이터를 스크래치하는 웹 클리핑
  • 조건문 -If/Then/Else,While,ForEach
  • 동시 처리를 위한 병렬 구문

EMML은 주로 XML 기반의 선언 언어지만 임베디드 스크립팅 엔진을 사용하여 복잡한 로직을 인코딩하는 기능도 제공한다.XPath는 EMML에서 사용되는 표현 언어다.

다이렉틴보크 문

directinvoke[5] 다양한 데이터 서비스를 호출하고 소비할 수 있는 기능을 제공한다.이러한 데이터 서비스는 REST, RSS/ATOM 또는 SOAP 서비스일 수 있다. directinvoke또한 HTML 페이지를 서비스 끝점으로 지정하도록 허용함으로써 웹 클리핑을 지원한다. HTTP GET,POST,PUT그리고DELETE프로토콜 지원:directinvoke . HTTP Header 및 쿠키 지원도 제공되므로 다양한 REST/SOAPWeb 서비스를 사용할 수 있다.사용할 수 있다.directinvoke프록시 서버와 함께.

서비스에 매개 변수로 속성을 전달하는 코드 샘플:

< 다이렉트인보크 끝점="http://www.myCompany.com/rest-services/getItems"      방법="GET" 출력변수="$result" 질의="items=all"      appID="67GYH30N25" />  < 다이렉트인보크 끝점="http://www.svcsltd.com/getReservation"      방법="GET" 출력변수="$뉴스" xmlns:sc="http://www.svcltd.com/"      sc:date="20070515" sc:cs="3"/> 

필터 문

filter[6] 문에서는 XPath 식을 사용하여 변수의 내용을 필터링하고 결과를 새 변수에 배치한다.

지역 데이터를 사용하여 서부 코스트 고객을 필터링하기 위한 코드 샘플(항목:

<< filter> 입력변수="$queryResult" filterexpr="/customers[region=]웨스트']" 출력변수="$westCoastOnly"/> 

정렬명세서

sort[7] 문장은 주요 표현식을 기준으로 문서 유형 변수 또는 변수 조각의 내용을 정렬하고 결과를 다른 변수에 배치한다.

생성된 날짜 및 고객을 기준으로 티켓을 정렬하는 코드 샘플:

<< sort> 입력변수="$trouble티켓"    sortexpr="ticket"    분류키="xs:date(생성) 내림차순, 고객 오름차순"    출력변수="$trouble티켓"/> 

그룹별문

groupby[8] 데이터 세트를 그룹화하고 집계할 수 있는 기능을 제공한다.표준 XPath 집계 연산을 사용할 수 있으며 사용자 정의 함수를 추가하기 위한 확장 메커니즘이 있다.계층 데이터 세트의 중첩 그룹화도 지원된다.라는 것이 있다.Having그룹 속성을 필터링하는 절.

장르별로 책을 그룹화하고 장르별로 총 사본을 계산하는 코드 샘플:

<그룹 에 의해."달러//책/책" 출력변수="$groupResult">      <res:message> 이름을 붙이다"{$group_key}" 동일본의"{sum(복사본)}"/>  </그룹> 

병합문

merge[9] RSS/ATOM 피드, XML, JSON 페이로드 형식을 비롯한 다양한 데이터 소스를 결합할 수 있는 기능을 제공한다.병합 형상은 다음과 유사하다.SQL UNION그러나 계층적 문서 구조를 병합한다.

야후를 병합하는 코드 샘플! 뉴스, 파이낸셜 뉴스로이터 뉴스 피드:

<< merge> 투입변수="$YahooRSS, $FinancialNewsRss, $LoutersRSS"    출력변수="$NewsAgregate"/> 

문 주석 달기

annotate[10] 마이크로포맷과 같은 요소/프로토콜로 소스 서비스 데이터의 의미적 의미를 풍부하게 할 수 있는 능력을 제공한다.이러한 데이터 주석은 더 풍부한 시각적 사용자 인터페이스를 제공하기 위해 매쉬렛이나 가젯에 의해 사용될 수 있다.

지리 좌표를 사용하여 벤더 페이로드에 주석을 달기 위한 코드 샘플:

<< variableate variable="$vendors" expr="/site/site" > 요소 geo:lat { $georesult//y:위도/끈() }, 요소 geo:길이 { $georesult//y:경도/끈() } </알림 없음>

조인명세서

join[11] 문장은 상이한 계층적 데이터 형식이 어떻게 결합되는지를 정의하며 관계형 데이터베이스의 내부 결합과 유사하다.

출력 변수에 다음이 포함된 코드 샘플<res:recommendations>의 반복적인 요소.<res:movie>반복적인 항목인 어린이들각각의<res:movie>가 포함되어 있다.<res:movietitle>영화라는 이름의 변수에서 데이터를 가진 아동<res:rating>그리고<res:comment>변수 이름의 데이터를 가진 아동:

<><, name="실체:권고"&gt을 선택하 outputvariable="달러joinResult"joincondition="달러 movies/movie/ @ 아이디)달러 reviews/review/movie/title"&gt에 가입하고,<>res:movie>,<>res:movietitle>,{달러movies/title}<, /res:movietitle>,<>실체:rating>,{달러 reviews/rating}<, /res:rating>,<>res:comment>,{달러 reviews/comment}<, /res:comment>,<>/.실체:movie>,<>/select>,<>/join>.

EML의 스크립팅

EMML은 선언적 언어지만 복잡한 매시업 논리를 수행하기 위한 프로그램적 스크립팅[12] 확장 기능을 제공한다.JavaScript, JRuby, Groovy, POJO, XQuery 스크립팅 환경이 지원된다.EMML과 스크립팅 환경 간에 원활하게 데이터 흐름 수행

JavaScript 환경에 전파되는 후속 호출 "결과" 변수에 필요한 인증 토큰을 추출하는 데 JavaScript 코드 샘플:

<각본을 뜨다 타자를 치다="텍스트/텍스트"> <![CDATA[             시합을 하다 r = 새로운 (결과)             시합을 하다 ar = r.갈라지다("=");             저술의 = ar[ar.길이-1];             저술의 = 저술의.얇게 썰다(0, -1)             ]]> </각본을 뜨다> 

참조

  1. ^ "Where Is The Future of SOA Headed? Where The Web Goes".
  2. ^ "Why Bank of America Joined the Open Mashup Alliance".
  3. ^ "Enterprise mashup proponents start organizing".
  4. ^ "JackBe announces free enterprise mashup software".
  5. ^ "EMML Documentation Directinvoke chapter".
  6. ^ "EMML Documentation Filter chapter".
  7. ^ "EMML Documentation Sort chapter".
  8. ^ "EMML Documentation Groupby chapter".
  9. ^ "EMML Documentation Merge chapter".
  10. ^ "EMML Documentation Annotate chapter".
  11. ^ "EMML Documentation Join chapter".
  12. ^ "EMML Documentation Scripting chapter". {{cite web}}:누락 또는 비어 있음 url=(도움말)