8. mengkonsumsi layanan rest open cmis - alfresco - jackrabbit - jcr

1,437 views

Published on

Published in: Education, Technology
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
1,437
On SlideShare
0
From Embeds
0
Number of Embeds
4
Actions
Shares
0
Downloads
0
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

8. mengkonsumsi layanan rest open cmis - alfresco - jackrabbit - jcr

  1. 1. Mengkonsumsi Layanan berbasis KontenContent Management SolutionContent Management telah menjadi sebuah jargon baru didunia internet. Sejak lahirnyapengembangan aplikasi berbasis Web yang dinamis disekitar tahun 1995. Solusi berbasis kontenatau yang sering disebut CMS (Content Management Solution) menjadi sesuatu yang sangat kritis.Dengan perkembangan teknologi yang memungkinkan terjadi pemetaan organisasi kedalam sistem,revolusi teknologi pasca ERP. CMS yang merupakan sebuah solusi untuk mengelola sebuah asetdigital yang dapat berbentuk text, multimedia, link website, image, sampai wiki wiki.Konten adalah sebuah kata benda baru dalam dunia internet, yang merupakan satuan dari sesuatuyang dipertukarkan, sebuah satuan dari informasi. Penguasa informasi dipercaya adalah the next bigthing.Dalam implementasinya pengelompokan konten terpisah menjadi konten yang terstruktur dan tidakterstruktur. Implementasi dari konten terstruktur adalah ERP itu sendiri, aplikasi-aplikasi yangterpetakan dalam struktur operasional perusahaan, sedangkan konten tidak terstruktur dimulai darimenyimpan file, membuat wiki yang saling terkait dengan wiki lainnya.Sebuah pengelolaan konten yang memungkinkan strukturnya digunakan untuk peningkatankemampuan sumber daya manusia disebut dengan knowledge management. Kata lain dariknowledge management adalah menuangkan sesuatu yang abstrak menjadi tertulis, danpenyimpanan ilmu (knowledge) tersebut dikelola oleh CMS.Beberapa piranti lunak berbasis konten memiliki banyak kategori, dan tidak sedikit yang berfungisangat spesifik, mulai dari blogging, microblogging, social networking sampai aplikasi sangatkreatif yang tidak terbayangkan.Secara teknis dapat dikatakan piranti lunak CMS adalah sebuah cara menyimpan data danmerepresentasikannya. Jadi topik CRUD yang dijelaskan pada bab sebelumnya adalah awal daripengembangan CMS. Umumnya CMS yang baik dilengkapi dengan workflow, yang mana jugatelah dibahas pada bab sebelumnya. Jadi dapat dikatakan buku ini merupakan sebuah buku yangmenjelaskan pengembangan CMS. Kalau dapat jujur, memang ide awal pengembangan Cimande,karena penulis adalah seorang konsultan untuk sebuah CMS yang konon terbaik didunia (saat itu),yaitu ContentServer, yang mana implementasinya jutaan dolar. Terimakasih kepada rekan-rekanOpenSource yang memungkinkan kita memiliki CMS tanpa perlu mengeluarkan uang serupiahpun,walaupun sampai hari ini, belum ada aplikasi OSS yang dapat menbandingin ContentServer ini.Sekitar tahun 2005, industri CMS terpisah menjadi dua area yang mungkin patut dicermati, yaitusolusi CMS seperti microblogging, content publishing, sampai percetakan online, dan ada satu areabaru yang lebih teknis yaitu lahirnya pasar industri content database, sebuah solusi berbasis kontenyang terpisah dari CMS tetapi lebih tinggi dari database.Content DatabaseContent database telah menjadi sebuah jawaban dari keterbatasan database berbasis SQL. Contentdatabase memungkinkan penyimpanan data secara hirarkikal, pencariannya menggunakan searchengine umumnya. Tentu saja ada industri penyimpanan lainnya yang berkembang dari penyimpanantanpa database yang saat buku ini ditulis telah menjadi prime timenya solusi internet yang disebutNoSQL solution, sebuah mekanisme penyimpanan konten yang tidak berstruktur mirip yang dapatdisebut content database, tetapi beberapa pihak tidak ingin menyebutkan dalam kategori database
  2. 2. tetapi disebut dalam kategori NoSQL. Maklum beberapa content database dipasaran menggunakandatabase SQL, dan dapat dikatakan merupakan ekstensi dari database SQL. NoSQL sering jugadisebut sebagai cloud database, sebuah mekanisme penyimpanan konten yang dapat dikatakan lebihprimitif daripada SQL, dimana mekanisme pencariannya menggunakan search engine.Terdapat kesamaan content database yang menggunakan database sql dengan content database nosql. Keduanya menggunakan search engine untuk mencari data didalamnya. Diagram Venn Mekanisme Penyimpanan DataContent database dapat dikatakan sebuah mekanisme yang membutuhkan solusi berbasis SQL(umumnya solusi bisnis), tetapi menginginkan mekanisme penyimpanan tidak berstruktur. Tentusaja, bilamana data yang disimpan sudah sangat besar, solusi NoSQL yang telah terbukti dapatmengatasi data sangat besar dengan beban sangat besar akan menjadi jawabannya. Implementasicontent database umumnya ditemukan pada perusahaan yang melakukan implementasi pengarsipandokumen, sedangkan no sql ditemukan pada perusahaan internet seperti Yahoo, Google ataupunFacebook.Enterprise Content ManagementECM lahir setelah semua hal menjadi berbasis internet, kata E yang berarti Enterprise, digunakanuntuk membuat sebuah produk piranti lunak menjadi “enterprise” yaitu untuk pasaran perusahaan.ECM dijual oleh perusahaan dengan bundling dengan layanan support.Maklum dengan keunikan perusahaan, implementasi ECM menjadi sangat kompleks. SehinggaECM bertransformasi bukan sebuah solusi teknologi yang sakti tetapi lebih cenderung sebuahmekanisme proses dan permodelan. Memang implementasinya sangat komplek, memerlukankemampuan non teknis, apalagi saat dirubah konten yang tersimpan menjadi sebuah knowledge,diintegrasikan dengan solusi pembelajaran (e-learning) dan penjenjangan karir yangmengimplementasikannya. ECM menjadi sangat diperlukan diintegrasikan dengan aplikasi ERPperusahaan.Tetapi ada hal yang menarik, semakin kompleksnya ECM yang dikembangkan --coba saja pelajarifitur dari Vignette (dulu adalah CMS popular dunia, sekarang milik IBM), Filenet (dulu adalahsolusi pengarsipan popular, sekarang milik IBM), sampai Documentum (sekarang milik EMC)--,semakin banyaknya fitur dan umumnya propietary, ternyata implementasi ECM dapatmenggunakan teknologi gratisan seperti Alfresco (pendiri dan pengembangnya adalah pendiri dan
  3. 3. pengembang Documentum) untuk penyimpanan media, atau menggunakan wiki. Lihat sajaWikipedia yang menggunakan produk opensource, telah menjadi encyclopedia terlengkap danterpopular didunia, menggunakan kekuatan Web 2.0.Java Content Repository (JCR)Semakin popularnya CMS dan juga ECM di industri telematika, telah menginspirasi para pendiriHTML yang bernaung diperusahaan Day (sekarang bagian dari Adobe), untuk mengembangkansebuah spesifikasi penyimpanan konten, yang memungkinkan isi dari konten dipindahkan darisistem satu ke sistem lainnya. Dikarenakan Java adalah dianggap produk standar, maka pencetusnyamembawanya ke JCP (Java Community Process), sebuah lembaga unit dibawah divisi Java, danlahirnya JCR (Java Content Repository), dengan kode JSR 170. Day mengopensourcekan hasilimplementasinya di Apache dengan nama JackRabbit (http://jackrabbit.apache.org). Beberapaperusahaan telah “berkomitmen” untuk mengimplementasikannya, tentu saja semua yangmengembangkan solusinya diatas Java, mulai dari IBM dengan Lotusnya, Documentum, sampaiAlfresco.Tetapi perkembangannya ternyata ada pemain lain diluar Java yang saat itu meledak pasarnya yaituMicrosoft Sharepoint, yang terkenal propietary, serta ada perusahaan Stellant yang akhirnyadiakusisi Oracle dan dirubah dengan produk bernama Oracle Enterprise Content Database. Yangmana seperti kita ketahui, para market leader atau pemain besar, berusaha membuat solusi yangsangat propietary dengan fitur segudang, untuk membuat para pelanggannya menebalkan pundi-pundinya. Maklum sebuah konten yang terkelola didalam content management, bilamana telahbernilai, akan sangat berharga sekali, dan pihak perusahaan memerlukan biaya yang super tinggiuntuk bermigrasi. Contoh yang sangat sering dijumpai adalah sistem pengelolaan sidik jari yangdikuasai oleh beberapa perusahaan, yang mana sistemnya selain propietary juga mahal.CMIS (Content Management Interoperability Standard) dan Sharepoint ProtocolPopularitas Sharepoint, memang tidak diragukan, karena integrasinya dengan raja solusiperkantoran bernama Microsoft Office, telah membuat banyak perusahaanmengimplementasikannya. Tentu saja Microsoft tetap berjuang untuk membuat pelanggannya tidakkeluar dari Sharepoint dan membayar support terus menerus. Bandingkan dengan kalau kitamemigrasi ke OpenOffice dari Microsoft Office dengan migrasi dari Sharepoint ke Alfresco(Sebuah solusi konten yang mengimplementasikan protocol Sharepoint).Saat Sharepoint dijual dipasaran, Microsoft masih dalam era sangat tidak suka OpenSource, danmalah memasukannya kedalam kategori “evil”, tetapi mungkin dalam perjalanan waktu, Microsoftmenyadari tidak lah baik secara strategis memusuhi komunitasnya, dan tentu saja adalah hak setiaporang untuk mengimplementasikan solusi yang lebih terbuka dan lebih murah dan lebih flexible.Yang terjadi saat itu ada lautan solusi Microsoft dan solusi terbuka yang dipimpin oleh Java.Bila dikaji dengan pundi pundi keuangan positif, sharepoint yang terintegrasi dengan MicrosoftOffice. Dapat dibayangkan beban perusahaan yang harus memelihara 2 pulau. Akhirnya Microsoftmembuat sebuah strategy untuk membuka protokol piranti lunaknya, dimulai dengan LDAP-nyaMicrosoft Exchange yang lebih LDAP Compliance, dan kemudian memberikan protokol filesharing dalam jejaring internet bernama SMB menjadi CIFS, dilanjutkan dengan dibukanyaspesifikasi Sharepoint.Alfresco yang merupakan salah satu produk OpenSource dari CMS, langsungmengimplementasikan protokol Sharepoint, dan memposisikan dirinya sebagai replacement dari
  4. 4. Sharepoint, tentu saja dengan OpenSource, kita dapat memiliki Sharepoint gratis. Semula Alfrescomengimplementasikan JCR, kemudian mengimplementasikan protokol Sharepoint. JCR vs CMISSekitar 2006, EMC, IBM, Microsoft mendirikan iECM, untuk mengembangkan standar konten,kemudian beberapa perusahaan pada bulan Agustus 2007, diundang seperti Alfresco, Open Text,Oracle, dan SAP. September 2008, spesifikasi yang dikerjakan bersama-sama ini disubmit keOASIS, dan lahirnya CMIS, dimana komitenya didirikan sekitar November 2008. Oktober 2009standar CMIS public draft dipublikasikan ke publik. Mei 2010, CMIS 1.0 disetujui. Logo CMISSejak itu implementasi konten berubah, CMIS memungkinkan interoperabilitas antara solusi CMS,tanpa memaksa harus menggunakan Java dengan JCRnya.Keuntungan CMIS bagi pemakai adalah–Interoperabiltias antar produk CMS–Desilofikasi CMS–Komoditasi CMSKeuntungan Vendor pengembang CMS–Vendor repository mendapatkan banyak aplikasi yang terhubung dengannya–Aplikasi vendor dapat menggunakan berbagai macam repository.CMIS adalah jawaban dari ego para vendor besar yang tetap ingin mekanisme penyimpanannyamenjadi rahasia, tetapi juga memberikan solusi atau jawaban atas kebutuhan integrasi. CMIS adalahpemecah masalah silo-silo konten, vendor dan para sistem integrator.
  5. 5. Spesifikasi CMIS 1.0CMIS memungkinkan implementasi CMS cross-bahasa, cross-paradigma, dan cross-vendor.CIFS dan Protokol File SharingSekitar awal 1995, penulis mengimplementasikan Lantastic, sebuah fitur khusus sharing file antarakomputer, secara peer-to-peer, saat itu Windows masih 3.1 dan tidak memiliki fitur workfgroup.Tidak berselang lahirlah Windows for Workgroup 3.1 yang membuat fitur Lantastic telah dibundleoleh Microsoft Windows. Era jaringan diperkantoran secara GUI dimulai.Mekanisme sharing tersebut berkembang sampai kini, dengan sebutan SMB (Server MessageBlock), dengan protokolnya yang dikenal dengan nama SMB dengan NETBIOS. ImplementasiOpenSourcenya adalah Samba, yang awal berdirinya telah menjadi sebuah server yang harusdiimplementasikan bilamana hendak migrasi ke Linux. Samba dapat diintegrasikan dg LDAP danjuga mengimplementasikan PDC dari Windows. Penulis sempat mendengar kasus Samba inimelanggar paten Microsoft Windows. Tetapi yang menarik, akhirnya Microsoft membuka semuaprotokol, dan SMB berubah menjadi CIFS. Era keterbukaan protokol dimulai. Dibukanya protokolSMB ini searah dengan trend dibukanya protokol Sharepoint. Walaupun Sharepoint dibuka jauhsetelah SMB diimplementasikan.Awal-awal Alfresco telah memiliki fitur SMB ini, sehingga dapat dikatakan CFIS Server, penulismenemukan ada komponen native, dengan tidak dapatnya diimplementasikan Alfresco di beberapadistro selain RedHat compliance. Kemudian Alfresco mengakuisis JLAN, yang merupakanimplementasi SMB yang total 100% Java.Alfresco sebagai CIFS ini yang memposisikan Alfresco dapat menjadi solusi replacement untukLinux, nah kok bisa? Alfresco menjadi pesaing Linux? Betul sekali...Diera Cloud ini, malah Samba dan banyak server Linux menjadi sangat tidak relevan karena tidakdapat berjalan diatas dunia virtualisasi, sedangkan Java adalah teknologi virtualisasi. Alfresco jalandiatas Java. Apakah kedepannya file sharing antar komputer diatas Cloud adalah menggunakanteknologi seperti Alfresco.
  6. 6. CMIS atau Sharepoint protocolDengan dibukanya CIFS ke publik oleh Microsoft, dan saat ini CIFS dikelola di OASIS. Microsoftternyata telah menciptakan sebuah protokol lain yang lebih “sosial” dimana produknya disebutdengan Sharepoint. Sebuah server yang menghubungkan hampir semua produk Microsoft.Mempermudah integrasi, tetapi juga membuat perusahaan terkunci dalam dunia Microsoft.Searah dengan kebijakan Microsoft untuk lebih terbuka, dengan membuka komunikasi protokolservernya. Memungkinkan implementasi dan integrasi solusi dengan Sharepoint.Ternyata kesempatan ini digunakan oleh para penyedia untuk mengembangkan sebuah protokolterbuka yang standar bernama CMIS.Yang menarik implementasi CMIS ini telah menggeser positioning dari sebuah solusi contentmanagement yang dimontori oleh Day (sekarang bagian dari Adobe), menjadi sebuah saranainteroperabilitas. Day mengembangkan standar yang disebut JCR. Secara kebetulan Day adalahFieldman, sang pencipta HTTP dan REST. Solusi yang mungkin dikembangkan dari sebuah content database.Diagram diatas menjelaskan bagaimana sebuah content database dapat digunakan untukmengembangkan aplikasi lainnya. Bab ini akan menjelaskan mengenai integrasi CMIS serverdengan OpenCMIS dari Apache Chemistry dan Alfresco, dan yang mengkonsumsi adalah aplikasiMVC yang digunakan dalam seluruh buku ini yaitu Cimande dan Yama.
  7. 7. Arsitektur dan Stack Solusi AlfrescoIntegrasi CMIS dengan AplikasiBilamana telah dijelaskan reformasi JCR dan CMIS, dan banyak vendor-vendor mulaimenggunakan CMIS sebagai standar interoperabilitas antara aplikasi dengan CMS. Maka subab iniakan menjelaskan bagimana mengakses CMS berbasis CMIS ini.Terimakasih kepada OpenCMIS (implementasi CMIS dengan Java) yang sekarang menjadi bagiandari Apache Chemistry, yang menjadi pusat implementasi CMIS, bagi menggunakan Java ataupunbahasa lain. Apache Chemistry telah mengembangkan CMIS API dan juga beberapa implementasisehingga kita dapat mengembangkan CMIS server, tentu saja setelahnya kita dapatmenggunakannya untuk merubah CMS kita berbasis CMIS.CMIS API yang dikembangkan memungkinkan implementasi dari Web Service dengan SOAPataupun menggunakan REST dengan implementasi standar ATOM.
  8. 8. Mengakses CMIS Server dengan CMIS APIDengan mengimplementasikan CMIS API, sebenarnya sama dengan implementasi pada awal babini, yaitu MVC dengan Model yang mengakses database menggunakan Hibernate. Hanya CMISmengganti data source dari database menjadi content database. Mekanisme yang sebenarnya samadengan implementasi bab sebelumnya dengan Joget Workflow.Yang menarik dari CMIS ini tentu saja adalah dapat dikatakan protokol REST standar pertamadimuka bumi ini, dan dapat menjadi masukan untuk kita bagaimana mengembangkan REST APIyang baik. Dapat juga dikatakan karena ini proyek REST API pertama perusahaan kelas dunia danpemimpin di solusi konten. Mengikuti dan memahami CMIS API, sama dengan membantu kitamengembangkan solusi REST yang lebih baik.Berikut adalah implementasi dari REST oleh Alfresco, dimana Alfresco Content Server dikonsumsioleh Alfresco Client, baik itu versi yang standar yang didistribusikan sejak awal, atau AlfrescoShare.
  9. 9. Implementasi REST di AlfrescoYang menarik dari Webscript, yaitu sebuahmekanisme pengembangan modul dari Alfresco, untukversi yang terbaru 3.5 keatas, telah dikembangkan versi portlet yang mana memungkinkanmengimplementasikan Alfresco di Portlet Liferay. Bab setelah ini membahas mengenai Liferayyang mengkonsumsi REST/JSON. Arsitektur implementasi CMISImplementasi CMIS di CimandeImplementasi CMIS didalam Cimande, sebenarnya mirip dengan mekanisme Hibernate bekerja,
  10. 10. kita membutuhkan JPA API untuk mengakses server database, sedangkan dengan CMIS, dibutuhkanCMIS API yang mana implementasinya dapat didownload dari http://chemistry.apache.org.Adapun beberapa konfigurasi untuk mengakses CMIS Server adalah sebagai berikut:org.apache.chemistry.opencmis.user=adminorg.apache.chemistry.opencmis.password=adminorg.apache.chemistry.opencmis.binding.atompub.url=http://localhost:8080/alfresco/service/cmisorg.apache.chemistry.opencmis.session.repository.id=16bd2222-96dc-4f08-8f04-3f9ece9f2dcdUntuk membuat injection data source dengan Spring bean, sebenarnya mirip dengan implementasiHibernate atau Joget Workflow, implementasi factory digunakan kembali dalam implementasi ini.<beanclass="org.apache.chemistry.opencmis.client.runtime.SessionFactoryImpl" /> <beanclass="org.apache.chemistry.opencmis.client.bindings.CmisBindingFactory"/>Jangan lupa memasukan cmis.properties kedalam konfigurasi. Tapi versi berikutnya dari Cimande,CMIS akan dimasukan dalam cimande.properties.Berikut adalah implementasi bagaimana memasukan sebuah file ke dalam folder didalam CMISserver, dimana implementasi adalah CmisRepositoryBrowserService.public void addDocumentToFolder(Folder folder, File file, Stringfilename) {try { // Create input stream from file FileInputStream inputStream = new FileInputStream(file); // Get mime type MimetypesFileTypeMap mimeTypes = new MimetypesFileTypeMap(); String mime = mimeTypes.getContentType(file); // Create content stream from input stream ContentStream stream = new ContentStreamImpl(filename, new BigInteger("" + file.length()), mime, inputStream); Session session = factory.createSession(parameter); BindingsObjectFactory objectFactory = session.getBinding() .getObjectFactory(); ObjectService objectService = session.getBinding() .getObjectService(); List<PropertyData<?>> propertyData = new ArrayList<PropertyData<?>>(); propertyData.add(objectFactory.createPropertyStringData( PropertyIds.NAME, filename)); propertyData.add(objectFactory.createPropertyStringData( PropertyIds.OBJECT_TYPE_ID, "cmis:document"));
  11. 11. objectService.createDocument(session.getRepositoryInfo().getId(), objectFactory.createPropertiesData(propertyData), // Repository // Id folder.getId(), // Folder Id stream, // Content stream VersioningState.NONE, // Versioning state null, // Policies null, // AccessControlList add null, // AccessControlList remove null); // Extensions Date } catch (FileNotFoundException e) { e.printStackTrace(); } }Bandingkan dengan implementasi membuat folder, seperti kode dibawah ini.public void createNewFolder(Folder parentFolder, String folderName) { Session session = factory.createSession(parameter); BindingsObjectFactory objectFactory = session.getBinding() .getObjectFactory(); ObjectService objectService = session.getBinding().getObjectService(); List<PropertyData<?>> propertyData = new ArrayList<PropertyData<?>>(); propertyData.add(objectFactory.createPropertyStringData( PropertyIds.NAME, folderName)); propertyData.add(objectFactory.createPropertyStringData( PropertyIds.OBJECT_TYPE_ID, "cmis:folder")); objectService.createFolder(session.getRepositoryInfo().getId(), objectFactory.createPropertiesData(propertyData), parentFolder.getId(), // Parent folder id null, // Policies null, // AccessControlList add null, // AccessControlList remove null); // Extensions Date }Bilamana kita kaji lebih lanjut, ternyata implementasinya menggunakanorg.apache.chemistry.opencmis.client.api.SessionFactory, bandingkan dengan importorg.hibernate.SessionFactory. Menarik sekali bukan. Bayangkan dalam beberapa tahun kedepan,apakah JPA versi 4 atau 5 mengadopsi JPQL untuk semua ini?Berikut adalah UML implementasi CMIS yang menghubungkan Controller dan Services.
  12. 12. UML Controller dan Service CMIS yang diimplementasikan oleh Cimande

×