3DDashboard ile Widget Dünyasına Giriş

Bir sonraki yazımın widget programlama ile ilgili olacağından bahsetmiştim. Bugün beraber javascript ile beraber uwa.js kütüphanesini kullanarak bir helloworld yazdıracağız 🙂

Netvibes firmasını 2012 yılında Dassault System firmasının satın almasıyla widget yapısını Enovia’ya entegre etmeye başlıyor ve bu widgetlar sayesinde tek bir ekran üzerinde birden fazla değişik konuları içeren pencereler yerleştirmek mümkün hale getirildi. Kullanıcılara tek bir ekran üzerinden firma ile alakalı tüm bilgi aktarımı sağlanabiliyor. 3Ddashboard hikayesi enovia tarihinde çok eski değil aslında ama şuan çok kullanılmamasına rağmen gelecek zamanlarda fazlasıyla çok önem kazanacak gibi duruyor. Çünkü tüm yönetimsel araçların hepsi 3DDasboard üzerine yavaş yavaş taşınıyor ve üstelik javascript üzerinde çalıştığından klasik enoviadaki gibi arka planda java applet’lere ihtiyaç kalmıyor bu sayede tüm browser’larda sıkıntısız çalışıyor. Biliyorsunuz ki güncel browserların hepsi java applet desteğini çoktan kapattılar bu sebeble klasik Enovia’yı maalesef explorer 11 veya firefox 52 esr ile kullanmak zorunda kalıyorduk, gelecek sürümlerde büyük ihtimalle artık bu sorunlarımız büyük ihtimalle kalmayacak. Bir önceki yazımda MQL arayüzünün admin kısmından kaldırılacağından bahsetmiştim. Customization widget tarafına kaydırılmasından dolayı 3DDasboard tarafının yükselişi kaçınılmaz gözüküyor…

Yavaş yavaş giriş yapalım. Yapacağımız örnekte node.js’in bilgisayarınızda yüklü olması gerekiyor. Buradan yüklemeyi yapabilirsiniz. LTS versiyonunu kurabilirsiniz. Kurulumu tamamladıktan sonra live-server npm paketini yüklememiz gerekiyor bunun için windows command line ekranına;


>npm install -g live-server

demeniz gerekiyor. Bu sayede küçük development serverımızıda yüklemiş bulunuyoruz.


<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

<html xmlns="http://www.w3.org/1999/xhtml"
    xmlns:widget="http://www.netvibes.com/ns/">
    <head>

        <!-- Application Metas -->
        <title>Title of the App</title>
        <meta name="author" content="John Doe" />
        <meta name="description" content="A descriptive description" />

        <!-- Application Standalone emulation files -->
        <link rel="stylesheet" type="text/css"
            href="//uwa.netvibes.com/lib/c/UWA/assets/css/standalone.css" />
        <script type="text/javascript"
            src="//uwa.netvibes.com/lib/c/UWA/js/UWA_Standalone_Alone.js"></script>

        <!-- Application JavaScript Source -->
        <script type="text/javascript">
        //<![CDATA[

            /*
                We create the global MyWidget object (it could be any other name).
                This object will be used to store variables and functions.
            */
            var MyWidget = {

                /*
                    The onLoad() function is the first one,
                    it will be triggered by widget "onLoad" event.
                */
                onLoad: function() {

                    // Here we update the content of the widget body.
                    widget.setBody('Hello World!');
                }
            };

            /*
                The "onLoad" event is the very first event triggered when
                the widget is fully loaded or when the preferences are validated.

                Here, we add MyWidget.onLoad() function as "onLoad" event
                listener on the widget.
            */
            widget.addEvent('onLoad', MyWidget.onLoad);

        //]]>
        </script>
      </head>
      <body>
            <p>Loading...</p>
      </body>
</html>

Yukarıdaki kodu index.html dosyasının içene bir code editörü ile kopyalayabilirsiniz. Ben Visual code kullanıyorum ancak sadece deneme yapacaksanız notepad de olur 🙂

istediğiniz bir klasörün içine index.html dosyasını yerleştirin ve aşağıdaki komutu vererek küçük development server ımızı başlatın.


> cd d:\js\denemeWidget
> live-server --port=8079

İlk görüntü

liver-server ın default olarak yayın portu 8080 dir. Genelde de 8080 kullanıldığından ben 8079 olarak ayarlıyorum. Bu arada bu portu kullanmak zorunda değilsiniz bilgisaayarınızdaki dolu portları görmek için windows command line ekranına;


> netstat -a

komutuyla bakabilirsiniz.

Şimdi gelelim oluşturduğumuz bu widgeti admin modda açtığımız 3DDashboard’a eklemeye;

Admin modda widget’ınızı eklediğinizde tüm kullanıcılarda eklediğiniz ekran aktif hale gelmiş bulunuyor.

http://www.gokhansaman.com/wp-content/plugins/sociofluid/images/google_48.png http://www.gokhansaman.com/wp-content/plugins/sociofluid/images/myspace_48.png http://www.gokhansaman.com/wp-content/plugins/sociofluid/images/facebook_48.png http://www.gokhansaman.com/wp-content/plugins/sociofluid/images/yahoobuzz_48.png http://www.gokhansaman.com/wp-content/plugins/sociofluid/images/twitter_48.png

Kayıp Puzzle’ın parçaları: 3DEXPERIENCE

Tasarım alanındaysanız, özelliklede makine mühendisi iseniz,  bir tasarım programını kullanmışsınızdır. Peki PLM tarafı hakkında ne biliyorsunuz? Süreçlere ne kadar hakimsiniz? Veya ne kadar hafife almalısınız… Bugün sizlere biraz 3DEXPERIENCE’ın alt yapısına değineceğim.

3DEXPERIENCE platformu MatrixOne ve VPM V6’nın birleşmesi ile oluşuyor. VPM V6 temeli C++ dili ile yazılmış bir katmana dayanıyor. Temel katman tamamen müşteri istek, özelleştirmeler ve filtrelemeleri yapabilmek için güzel bir ortam sağlıyor ve CATIA içersindeki  iş süreçlerini özelleştirebilmek için daha rahat bir ortam sunuyor. Temelde data modeli genişletmek ve bazı özelleştirmeler için uygun ortamı sağlıyor ancak programı tekrar derleyip baştan başlatmak gerekiyor. Orta katmanda ağırlıklı C++ kernel ile beraber yazılmış bir java web serverı kullanılıyor. Bu kernel her java server başladığında java süreçlerinin içine yükleniyor. Buna kısaca Java’da RMI ( Remote Method Invocation ) deniyor.

Matrixone içerisindeki iş kuralları güvenlik ve attribute’leri değiştirebilmek için Matrix kernel ile database arasında iletişimi sağlayan  orta katman dili olarak MQL(Matrix QueryLanguage) dili kullanılıyor. Bu güçlü dil aslında biraz tuhaf syntax’a sahip ve kaynak kodu üzerinde çalışma kontrolü (hata ayıklama modu) yok. Aynı zamanda commit edilen komutların geri dönüşüde yok. Kullanıcı arayüzü ise JSF ile yazıldığından doğal olarak değişikliklerde JSF(Java Server Faces) ile yapılıyor. JSF’deki internationalization sayesinde dil dosyaları ile multi-language olabiliyor. Ön yüz JPO(Java Program Object)’lar ile Database verilerini ön yüze taşıyabiliyor. Bu JPO’lar Spring framework’ü ile yaratılıyor ve yönetiliyor. Bu katmanda tüm java class’lar derlenmiş geldiğinden çok fazla özelleştirme yapılamıyor, MQL ile bu yapıya dokunmadan özelleştirme yapmak mümkün ancak kullanımı çok kolay olmadığından bu konuda bilgili kişiler tarafından yapılıyor. Gerçi Galaxy-based arayüzü ile MQL arayüzü kaldırılacağı açıklandı. JPO’lar database katmanı ile MQL üzerinden anlaşmaya devam edecekler ancak kullanıcı arayüzü dışarıya yakın gelecekte kapatılacak. Bu geliştirmeler daha çok Dashboard üzerine kaydırılıyor. Yakın gelecekte özelleştirmeler Dashboard üzerine kaydırılacağından Dashboard daha da bir önem kazanacaktır.

V6 dönemin sonuna kadar, dışarı ile haberleşmek için SOAP (Simple Object Access Protocol) xml haberleşme framework’ü kullanıldı. Bu protokol, geniş ve esnek programlama imkanı sağlıyordu ancak eski bir protokoldu. Daha sonra V6 için XPDM versiyonunu tanıttı. Bu daha fazla propramlama gerektriyordu ve dahası bazı firma entegrasyonu(yazılım konnektörleri) için kısıtlı olanaklar sunuyordu.

Dassault Systèmes bu sorunun farkına vardı ve bu sorunu hızlı çözmek için PLM Express paketi hazırladı. DS SmarTeam yazılımı 2009 yılında satın aldı ve Smarteam Enovia ürünlerin datalarını yönetmekte gerçektende marifetliydi. PLM express ürünü ile Smarteam, ilk data modelini tanıtılar. 2010x den başlayan bu süreç 3DEXPERIENCE 2017x daha ileriki sürümlerinde customizasyon yerine daha çok konfigurasyonu cloud veya kurulu platform tool’ları üzerinde yapmaya yöneldiler.

 Data Model: Kayıp Puzzle’ın Parçası:

Puzzle’ın diğer parçası ise data modelin kendisidir. VPM V6 için IRPC ve E/R için Matrixone DS için eski sürümlerde bazı sorular yaratıyordu. Bu sorunların çözümü için 3DEXPERIENCE 2015 versiyonunda unified type ilk olarak tanıtıldı. Temel olarak fikir, data kaybını önlemek, objectler arasında hakları belirlemek entityler arasındaki ilişkileri düzenlemek idi. Böylece aynı toollar ile herhangi bir objenin data modellerini otomatik farklı attributeler ekleyip genişletebileceklerdi.

Kullanıcı Arayüzü: Web 3.0 yolunda

DS netvibes firmasını satın almasıyla widget yapısını Enovia’ya entegre etmeye başladı. Tüm konfigurasyonlar ve geliştirmeler yavaş yavaş dashboard üzerinde yürütmek için çalışmalara başladılar. 2014x’e kadar tüm kullanıcı içerikleri CATIA, DELMIA ve SIMULIA gibi programların kendi arayüzleri vardı. Bu arayüzler widget teknolojisi ile beraber 3DDashboard’a entegre edilip yeni 3Dcompass ile beraber tüm widgetler birbiri ile konuşabiliyor hale getiriyorlar. Gelecekte tüm JSP teknolojisi Web3.0 – HTML5/CSS3 ile yer değiştirileceğini yeni sürümlere gelen kodlarla görüyoruz. Bunun da en büyük artısı olarak artık yazılan kodları derlemeye gerek kalmıyor ve bu widgetler birbirinden bağımsız olarak çalışabiliyor.

Widget teknolojisi ile beraber ikinci büyük yenilik ise REST(Representational State Transfer) web servislerinin implemantasyonudur. Tüm SOAP servisleri yavaş yavaş REST web servisleri ile yerdeğişmeye başladı bile.

Peki gelecekteki müşteri geliştirmeleri nasıl olacak;

  • Erişim kontrolü: Eski framework altyapısı attributeler için hala devam edecek.
  • Data model: Unified type yapısına geçiliyor. V5 ile oluşturulmuş yapı yavaş yavaş bu yapıya geçiriliyor. MQL hayatını devam ettirilecek ancak gerekmedikçe kullanılmaması tavsiye ediliyor.
  • Kullanıcı arayüzleri: JSP yenazaran HTML5 ve CSS3 alt yapısına doğru kayıyor. Özelleştirmeler için Javascript ve rest servisler üzerinde yoğunlaşacak.

Bir sonraki yazımı widget programlama üzerine yapacağım. Biraz Node.js birazda uwa.js üzerine bir yazı olacak. Takipte kalın,

Gökhan – 14.12.2018

http://www.gokhansaman.com/wp-content/plugins/sociofluid/images/google_48.png http://www.gokhansaman.com/wp-content/plugins/sociofluid/images/myspace_48.png http://www.gokhansaman.com/wp-content/plugins/sociofluid/images/facebook_48.png http://www.gokhansaman.com/wp-content/plugins/sociofluid/images/yahoobuzz_48.png http://www.gokhansaman.com/wp-content/plugins/sociofluid/images/twitter_48.png