Kurumsal Karma Biçimlendirme Dili - Enterprise Mashup Markup Language

EMMLveya Kurumsal Karma Biçimlendirme Dili, bir XML biçimlendirme dili girişim yaratmak için mashup'lar, çeşitli kaynaklardan gelen verileri tüketen ve karıştıran, genellikle mantıksal veya matematiksel işlemler gerçekleştiren ve aynı zamanda verileri sunan yazılım uygulamalarıdır. Kurumsal mashup'lar tarafından üretilen birleştirilmiş veriler, grafik kullanıcı arayüzlerinde mashlet, widget veya gadget olarak sunulur. EMML ayrıca[kaynak belirtilmeli ] bildirime dayalı bir karma olarak kabul edildi alana özgü dil (DSL). Bir karma DSL, kurumsal karmalar oluşturmak için karmaşık, zaman alan ve tekrarlanabilir prosedürel programlama mantığına olan ihtiyacı ortadan kaldırır. EMML ayrıca kurumsal karmalar için görsel araçlar oluşturmak için bir bildirim dili sağlar.

EMML'nin birincil faydaları, mashup tasarım taşınabilirliği ve mashup çözümlerinin birlikte çalışabilirliğidir. Bu avantajların, yazılım geliştiricileri için aktarılabilir beceriler oluşturarak ve bunları azaltarak kurumsal mashup'ların benimsenmesini hızlandırması bekleniyor. satıcıya bağlı kalma. EMML'nin tanıtımının, Web tabanlı uygulamaların entegrasyonuna yönelik eğilimi hızlandırmaya yardımcı olması beklenmektedir ve Servis Odaklı Mimari (SOA) teknolojileri.[1] Amerika Bankası EMML'nin yüksek profilli erken bir destekçisiydi.[2] Diğer önde gelen erken destekçiler dahil Hewlett Packard, Capgemini, Adobe Sistemleri, ve Intel.[3]

EMML geçmişi

Raj Krishnamurthy (JackBe Corporation'ın baş mimarı) ve Deepak Alur (JackBe Corporation'da VP mühendisliği) 2006 yılında EMML üzerinde çalışmaya başladı. Amaçları, o zamanlar yeni bir ara katman yazılımı türü oluşturarak kullanıcı odaklı ve kullanıcı özellikli mashup'ları etkinleştirmekti. bir Kurumsal Mashup Platformu. Raj Krishnamurthy, EMML'nin baş dil tasarımcısı ve uygulayıcısı oldu ve aynı zamanda ekibi bir Tutulma tabanlı EMML IDE Mashup Studio olarak adlandırılır.[4] Bu çalışma, Open Mashup Alliance'a bağışlanan EMML referans uygulamasına dönüştü. Raj Krishnamurthy, Açık Mashup İttifakı aracılığıyla EMML'ye en önemli katkıda bulunanlardan biri olmaya devam ediyor.

EMML özellikleri

EMML dili, çeşitli Web veri kaynaklarını esnek yollarla tüketmek ve karıştırmak için zengin bir üst düzey karma alan sözlüğü seti sağlar. EMML, heterojen hizmet stillerini çağırmak için tek tip bir sözdizimi sağlar: DİNLENME, WSDL, RSS /ATOM, RDBMS, ve POJO. EMML dili ayrıca çeşitli veri formatlarını karıştırma yeteneği sağlar: XML, JSON, JDBC, JavaObjects ve ilkel türler.

Üst düzey EMML dil özellikleri şunları içerir:

  • Heterojen hizmetlerden gelen verileri filtreleyin ve sıralayın
  • Heterojen hizmetler ve veri formatlarındaki verileri birleştirin
  • Çeşitli işlevleri kullanarak verileri gruplayın ve bir araya getirin
  • Anlamsal anlamını zenginleştirmek için orijinal hizmet verilerine açıklama ekleyin
  • Birden çok veri akışını birleştirilmiş veri kümelerinde birleştirin
  • Ayrı veri alanlarını seçmek için veri kümelerini bölün
  • Gömülü komut dosyası desteği JavaScript, JRuby, Harika, XQuery
  • Verileri kazımak için web kırpma HTML sayfaları
  • Koşullu ifadeler - Eğer/Sonra/Başka, Süre, Her biri için
  • Eşzamanlı işleme için paralel sözdizimi

EMML, öncelikle XML tabanlı bir bildirim dilidir, ancak aynı zamanda gömülü komut dosyası motorlarını kullanarak karmaşık mantığı kodlama yeteneği sağlar. XPath EMML'de kullanılan ifade dilidir.

Directinvoke ifadesi

doğrudan çağırmak[5] çeşitli veri hizmetlerini çağırma ve kullanma yeteneği sağlar. Bu veri hizmetleri olabilir DİNLENME, RSS /ATOM veya SABUN Hizmetler. doğrudan çağırmak ayrıca izin vererek Web kırpmayı destekler HTML hizmet uç noktaları olarak belirtilecek sayfalar. HTTP GET, İLETİ, KOYMAK, ve SİL protokoller desteklenir doğrudan çağırmak. HTTP Üstbilgisi ve tanımlama bilgisi desteği de mevcuttur, bu nedenle çok çeşitli DİNLENME /SABUN Ağ hizmetleri. Kullanmak mümkündür doğrudan çağırmak bir proxy sunucusu ile.

Bir hizmete öznitelikleri parametre olarak geçirmenin kod örneği:

 uç nokta ="http://www.myCompany.com/rest-services/getItems"     method ="ALMAK" outputvariable ="$ sonuç" sorgu ="öğeler = tümü"     appID ="67GYH30N25" /> uç nokta ="http://www.svcsltd.com/getReservation"     method ="ALMAK" outputvariable ="$ haber" xmlns: sc ="http://www.svcltd.com/"     sc: tarih ="20070515" sc: geceler ="3"/>

Filtre ifadesi

filtre[6] ifadesi bir değişkenin içeriğini bir XPath ifade ve sonucu yeni bir değişkene yerleştirir.

Bölge veri öğesi kullanarak batı yakası müşterilerini filtrelemek için kod örneği:

 inputvariable ="$ queryResult" filterexpr ="/ müşteriler [bölge = 'Batı']" outputvariable ="$ westCoastOnly"/>

İfadeyi sırala

çeşit[7] ifadesi, bir belge türü değişkeni veya değişken parçasının içeriğini anahtar ifadelere göre sıralar ve sonucu başka bir değişkene yerleştirir.

Biletleri oluşturma tarihine ve müşteriye göre sıralayan kod örneği:

 inputvariable ="$ troubleTickets"   sortexpr ="bilet"   sortkeys ="xs: tarih (oluşturulan) azalan, artan müşteri"   outputvariable ="$ troubleTickets"/>

Groupby ifadesi

Groupby[8] veri setlerini gruplama ve toplama yeteneği sağlar. Standart XPath toplama işlemleri kullanılabilir ve kullanıcı tanımlı işlevler eklemek için bir uzantı mekanizması vardır. Hiyerarşik veri kümelerinin iç içe gruplandırılması da desteklenmektedir. Var Sahip olmak Grup özniteliklerini filtrelemek için yan tümce.

Kitapları türe göre gruplandıran ve her tür için toplam kopyayı hesaplayan kod örneği:

 by ="$ katalog // kitap / tür" outputvariable ="$ groupResult">      isim ="{$ group_key}" eski ="{toplam (copiessold)}"/> </group>

İfadeyi birleştir

birleştirmek[9] dahil olmak üzere çeşitli veri kaynaklarını birleştirme yeteneği sağlar RSS /ATOM beslemeleri, XML, JSON yük formatları. Birleştirme özelliği şuna benzer: SQL BİRLİĞİ işlevsellik sağlar ancak hiyerarşik belge yapılarını birleştirir.

Birleşen kod örneği Yahoo! Haberler, Finans Haberleri, ve Reuters beslemeleri:

 inputvariables ="$ YahooRSS, $ FinancialNewsRss, $ ReutersRSS"   outputvariable ="$ NewsAggregate"/>

Açıklama açıklaması

açıklama eklemek[10] kaynak hizmet verilerinin anlamsal anlamını mikro biçime benzer öğeler / özniteliklerle zenginleştirme yeteneği sağlar. Bu veri açıklamaları, daha zengin görsel kullanıcı arayüzleri sağlamak için mashlet'ler veya araçlar tarafından kullanılabilir.

Coğrafi koordinatlarla satıcı yüküne açıklama eklemek için kod örneği:

 değişken ="$ satıcılar" ifade ="/ vendor / site" > öğe geo: lat {$ georesult // y: Latitude / string ()}, element geo: long {$ georesult // y: Longitude / string ()} </annotate>

İfadeye katıl

katılmak[11] ifadesi, farklı, hiyerarşik veri formatlarının nasıl birleştirileceğini tanımlar ve ilişkisel veritabanları için iç birleştirmelerle karşılaştırılabilir.

Çıkış değişkeninin bir <res:recommendations> yinelenen bir kümeye sahip öğe <res:movie> yinelenen öğeler olan çocuklar. Her biri <res:movie> içerir <res:movietitle> filmler adlı değişkendeki verilere sahip çocuk ve <res:rating> ve <res:comment> reviews adlı değişkendeki verilere sahip çocuklar:

 outputvariable ="$ joinResult"   joincondition ="$ film / film / @ id = $ inceleme / inceleme / film / başlık">    isim ="res: öneriler">       <res:movie>         <res:movietitle>{$ filmler / başlık}</res:movietitle>         <res:rating>{$ yorum / derecelendirme}</res:rating>         <res:comment>{$ inceleme / yorum}</res:comment>       </res:movie>   </select> </join>

EMML'de komut dosyası oluşturma

EMML bildirime dayalı bir dildir, ancak programlı komut dosyası oluşturma sağlar[12] karmaşık birleştirme mantığı gerçekleştirmek için uzantılar. JavaScript, JRuby, Harika, POJO, XQuery komut dosyası ortamları desteklenir. Veri, EMML ve komut dosyası ortamları arasında sorunsuz bir şekilde akar.

Kod örneği nerede JavaScript pasaj, sonraki çağrılarda gerekli olan kimlik doğrulama jetonunu çıkarmak için kullanılır. JavaScript çevre:

<senaryo tip="metin / javascript"><![CDATA[            var r = yeni Dize(sonuç)            var ar = r.Bölünmüş("=");            kimlik doğrulaması = ar[ar.uzunluk-1];            kimlik doğrulaması = kimlik doğrulaması.dilim(0, -1)            ]]></senaryo>

Referanslar

  1. ^ "SOA'nın Geleceği Nereye Gidiyor? Web Nereye Gidiyor?".
  2. ^ "Bank of America Neden Açık Mashup Alliance'a Katıldı".
  3. ^ "Kurumsal karma destekçileri düzenlemeye başlar".
  4. ^ "JackBe, ücretsiz kurumsal mashup yazılımını duyurdu".
  5. ^ "EMML Documentation Directinvoke bölümü".
  6. ^ "EMML Dokümantasyon Filtresi bölümü".
  7. ^ "EMML Dokümantasyon Sıralama bölümü".
  8. ^ "Bölüme göre EMML Dokümantasyon Grubu".
  9. ^ "EMML Dokümantasyon Birleştirme bölümü".
  10. ^ "EMML Dokümantasyon Açıklama Bölümü".
  11. ^ "EMML Dokümantasyonu Bölüme Katıl".
  12. ^ "EMML Dokümantasyon Komut Dosyası bölümü". Eksik veya boş | url = (Yardım)