in
PT. Dycode Cominfotech Development
Dynamic IT solutions for optimal business value

andri

  • Preparing SMTP Service for Sending Alert in SharePoint 2010

    OK, posting cepat aja supaya gak kelupaan.

    To send email-based alerts on SharePoint, you need to configure outgoing e-mail settings first. Sebenarnya cukup mudah untuk men-setting outgoing email pada SharePoint 2010. Buka SharePoint 2010 Central Administration, klik quick launch System Settings, and you’ll find following screen.

    image

    Clicking Configure Outgoing e-mail settings, and you’ll find this screen:

    image

    Just type Outgoing SMTP Server host/IP address, From email address, Reply-to email address, and select Character set. DONE. Now, the real challenge is preparing SMTP service to be used for sending emails from SharePoint, including alerts.

    Basically, you can use any SMTP server. But to me, I prefer to use the built-in SMTP Server in Windows Server 2008 R2. Akan tetapi, SMTP Server dalam Windows Server, yang biasa dikenal sebagai IIS SMTP Service, is not full-fledge mail server. In this case, I will use this IIS SMTP Service as a relay to Gmail. This walkthrough should be the same for other mail server, other than Gmail.

    Installing SMTP Server feature

    AFAIK, SMTP Server is not installed by default in Windows Server 2008 R2, probably in previous Windows Server as well. To make sure it’s installed or not, open Server Manager, click Features, you should see this screen if it’s installed.

    image

    If not, just click Add Features, then select SMTP Server. Will show the question to activate other features that SMTP Server has dependency with, e.g. IIS 6.0 Manager. Just accept them all unless you know what you’re doing. Supposed to be easy task.

    Configuring SMTP Server

    I assume the SMTP Server is installed successfully, tibalah saatnya untuk mengkonfigurasinya. As I said, I will use this SMTP Server as a relay to Gmail mail server.

    1. Open IIS 6.0 Manager

    image

    2. ‘Singkapkan’ (ckckck…singkap…) nama host dimana SMTP service berjalan, sehingga muncul SMTP Virtual Server #1. Click kanan padanya –> click Properties, dan tampillah:

    image

    3. Click Access Tab, you’ll find:

    image

    Click Authentication button, you’ll find Authentication dialog as above. Make sure you select Anonymous access, karena akan membuat hidup Anda lebih mudah ketika berhubungan dengan SharePoint. Seperti dapat dilihat pada gambar kedua di atas, tidak ada input untuk memasukkan data authentication.

    4. Click Relay button, and you’ll find Relay Restrictions dialog. Here you can specify which computers that are able to use this SMTP Server as relay, by selecting “All except the list below” and adding computers’ IP address. I leave it empty for now.

    image

    5. Now, get you mouse to Delivery tab. I prefer this settings for Outbound.

    image

    Click Outbound Security. Then select Basic authentication. Type your username and password for authenticating to relay mail server. For Gmail, input your Gmail email address and password. Also for Gmail, make sure to check “TLS encryption”. Click OK.

    image

    Back to Delivery tab, now click “Outbound connections”. You’ll have screen as follow. For Gmail, use TCP port 587. Click OK.

    image

    Now, back to Delivery tab, click “Advanced…” button. Type you FQDN mail domain. For Gmail, make sure to type smtp.gmail.com for Smart host.

    image

    That’s it.

    5. Go to SharePoint Central Administration for updating Outgoing email settings with this SMTP service host/IP address.

    image

    Ya seperti yang ditulis di atas, input IP address/hostname where the SMTP Server is running. Also input “From address” and “Reply-to address”. Make sure to use available email address in Gmail. It would be good if you use the same email address as inputted on Outbound Security - Basic authentication.

    6. Testing alert

    Now setup your alert in SharePoint (I won’t show you how). Trigger it. Hopefully the alert email is sent. If not, go back and make sure you follow the walkthrough carefully, and use your developer/IT pro’s instinct to solve the problem.

    That’s it. Good luck.

  • Port Management Portal - A Proposal for iMULAi

    The title is Port Management Portal (PORTMAP). Here is the proposal content in Bahasa Indonesia.

    Gambaran Inovasi

    Latar Belakang

    Indonesia adalah sebuah negara kepulauan terbesar di dunia dengan 17.509 pulau, sekitar 11.500 diantaranya didiami oleh manusia. Pulau-pulau tersebut dipisahkan oleh laut dan selat dan diapit oleh Samudera Pasifik dan India. Begitu luasnya laut Indonesia membuat Indonesia disebut sebagai negara maritim terbesar di dunia. Sebagai negara maritim dan perbatasannya dengan Samudera Pasifik dan India membuat Indonesia dapat diakses melalui laut dengan mudah dari mana saja. Hal tersebut membuat Indonesia telah menjadi menjadi perlintasan dan persinggahan dunia sejak dahulu kala. Sejak zaman kerajaan Sriwijaya Indonesia telah ramai dikunjungi para pedagang dari Tionghoa dan Arab untuk berdagang sehingga perekonomian tumbuh terutama di sekitar wilayah pelabuhan. Di berbagai peradaban, wilayah di sekitar pelabuhan laut dan sungai selalu menjadi pusat perdagangan sehingga berdampak pada pertumbuhan ekonomi di daerah tersebut.

    Pelabuhan mempunyai peran dan fungsi yang sangat penting dalam pergerakan dan pertumbuhan perekonomian suatu negara. Sejak awal perkembangan ekonomi dunia, pelabuhan dalam bentuknya yang paling sederhanapun telah memerankan diri sebagai faktor penting pergerakan ekonomi yang ditandai pertukaran arus barang atau logistik.

    Di Indonesia, perkembangan kuantitas dan kualitas pelabuhan juga semakin menunjukkan kecenderungan yang menggembirakan. Hampir di setiap kawasan atau daerah yang sedang mengalami pertumbuhan ekonomi dinamis, bisa dipastikan hadir pelabuhan pantai yang menopang perkembangan tersebut. Saat ini tercatat ada 141 buah pelabuhan bertaraf internasional di seluruh wilayah nusantara. Ke depannya, dari 141 pelabuhan tersebut akan ditetapkan 25 pelabuhan sebagai pelabuhan utama (hub port) yang diproyeksikan akan menjadi pintu penting kontak perdagangan (ekspor-impor) dengan manca negara.

    Pentingnya peran dan fungsi pelabuhan bagi Indonesia mengharuskan dilakukannya perbaikan dan pengembangan di berbagai sisi, mulai dari regulasi, manajemen, sampai infrastruktur. Salah satu sisi infrastruktur yang perlu segera mendapat perhatian adalah teknologi informasi (Information Technology – IT). Menurut beberapa referensi, pelabuhan berskala internasional seperti South Caroline State Port, tidak hanya didukung oleh infrastruktur pelabuhan yang lengkap, tapi juga ditunjang oleh infrastruktur teknologi informasi. Teknologi informasi dapat meningkatkan kemudahan dan efisiensi baik bagi customer maupun pengelola pelabuhan. Software aplikasi yang di-publish di internet dapat digunakan oleh customer atau agent kapal untuk melakukan booking penggunaan jasa kepelabuhanan secara online, dan kemudian dapat melihat schedule dan progress pelayanan. Di sisi lain, pengelola pelabuhan dapat dimudahkan dalam pengelolaan pelabuhan, seperti: scheduling & planning, monitoring, dan pelaporan kinerja pelabuhan kepada pihak manajemen.

    Dari 141 pelabuhan besar yang ada di Indonesia, seberapa banyak yang sudah berbasiskan IT dalam manajemennya? Tidak ada data yang pasti tentang itu. Akan tetapi, menurut pengetahuan kami, salah satu pelabuhan BUMN terbesar dan terdalam di Indonesia, Cigading Port, yang dikelola oleh PT. Krakatau Bandar Samudera (PT. KBS), sebelumnya belum memiliki software aplikasi untuk mengelola operasional pelabuhannya. Baru pada awal tahun 2007 PT. KBS berhasil men-deploy sebuah sistem yang mereka namakan Vessel Scheduling Application (VESSA). Sebagai catatan, pelabuhan ini sering dijadikan benchmark bagi pelabuhan-pelabuhan lainnya di Indonesia, terutama pelabuhan bulk cargo. Jika Cigading Port, yang notabene sering dijadikan benchmark, baru saja mengimplementasikan sistem manajemen pelabuhan, mungkin saja masih banyak pelabuhan-pelabuhan lain yang belum menerapkan sistem serupa.

    Sekarang mari kita bayangkan adanya sebuah sistem software yang generik yang dapat digunakan untuk mengakomodasi kebutuhan begitu banyak pelabuhan di Indonesia, bahkan di dunia. Manajemen pelabuhan pada dasarnya sama. Manajemen pelabuhan pada dasarnya selalu berurusan dengan hal-hal seperti: penjadwalan dan pengelolaan sandar kapal, pergerakan kapal, bongkar muat cargo dan container, dan pelayanan lainnya. Dengan demikian, ide untuk membuat sistem generik semacam itu bukanlah sebuah mimpi belaka.

    DyCode sendiri adalah pengembang dan implementor sistem VESSA yang telah disinggung di atas. Proses bisnis yang diakomodasi dalam VESSA memang masih spesifik untuk keperluan Cigading Port. Akan tetapi, karena Cigading Port sering dijadikan tolak ukur bagi pelabuhan lainnya di Indonesia, maka dapat diperkirakan bahwa proses bisnis di pelabuhan lainnya tidak jauh berbeda. Selain itu, kami pernah membandingkan fungsionalitas VESSA dengan software yang dibuat oleh perusahan Norwegia, Navtek AS, dengan produknya yang bernama Port Management Information System (PIMS), yang telah diimplementasikan di beberapa negara seperti Inggris, Malaysia, dan Saudi Arabia. Kami mendapati ternyata fungsionalitas keduanya tidak jauh berbeda. Artinya, proses bisnis manajemen pelabuhan di luar negeri juga tidak terlalu berbeda dengan pelabuhan dalam negeri.

    Kami menyakini bahwa seiring dengan semakin banyaknya implementasi sistem serupa di pelabuhan-pelabuhan lain, akan semakin banyak referensi proses bisnis yang bisa diakomodasi. Sehingga, pengembangan sistem manajemen pelabuhan yang generik untuk mengelola mayoritas pelabuhan menjadi lebih dimungkinkan.

    Inovasi

    Seperti tersirat di atas, inovasi yang kami usulkan adalah pengembangan sebuah sistem manajemen pelabuhan. Sistem tersebut akan dibangun segenerik mungkin sehingga bisa mengakomodasi berbagai proses bisnis mayoritas pelabuhan di Indonesia dan di dunia. Sistem akan diwujudkan sebagai aplikasi berbasis web dan diharapkan dapat diimplementasikan sebagai shared service yang ditawarkan dengan model bisnis Application Service Provider (ASP). Oleh karena itu, sistem ini kami namakan Portal Manajemen Pelabuhan atau Port Management Portal atau disingkat PORTMAP.

    Objectives

    Sasaran pengembangan PORTMAP adalah tersedianya sebuah sistem yang dapat mengakomodasi kebutuhan pengelola pelabuhan untuk mengoptimalkan manajemen operasional pelabuhan serta memberikan value-added services kepada pengguna jasa kepelabuhanan (customer). Sasaran selanjutnya adalah men-deploy sistem tersebut sebagai portal internet yang dapat dipakai bersama (shared) oleh berbagai pengelola pelabuhan dalam rangka melayani customer dan mengelola operasional pelabuhan masing-masing. Melalui portal ini *** para customer dapat memilih pelabuhan yang diinginkan untuk melayani kebutuhan sandar dan bongkar/muat cargo/container atau naik/turun penumpang mereka.

    Fungsionalitas

    Berdasarkan sasaran di atas dapat disimpulkan setidaknya ada dua pihak yang terlibat dalam PORTMAP, yaitu customer dan pengelola pelabuhan. Berikut ini dijelaskan lebih rinci sasaran fungsionalitas PORTMAP menurut persfektif kedua pihak tersebut.

    Customer

    Customer yang dimaksud di sini adalah perwakilan/pemilik kapal atau biasa disebut agent, pemilik barang (cargo owner), dan perusahaan bongkar muat (PBM). Fungsionalitas PORTMAP yang diperuntukan bagi customer adalah sebagai berikut.

    1. Registration

      Memungkinkan customer untuk melakukan registrasi ke dalam sistem PORTMAP. Begitu registrasi tersebut disetujui, customer akan memiliki account yang dapat digunakan untuk mengakses layanan-layanan di dalam PORTMAP.

    2. Booking

      Mengingat resource pelabuhan yang terbatas dan demi keteraturan, customer harus melakukan booking layanan sandar kapal atau layanan lainnya sebelum dapat dilayani. PORTMAP harus memudahkan customer untuk melakukan booking, baik melalui portal dengan cara mengisi form booking, atau dengan mengirim email atau pesan SMS dengan format tertentu. Dengan tersedianya ketiga access channel tersebut (portal, email, SMS) memungkinkan customer untuk dapat mem-booking dari mana saja dan kapan saja selama terhubung dengan internet atau berada dalam coverage area jaringan selular.

    3. Booking List

      Selain dikirim melalui email dan/atau SMS, status booking juga dapat dilihat oleh customer pada halaman booking list. Setiap customer tidak bisa melihat list booking milik customer lainnya.

    4. Schedule

      Berdasarkan data booking yang masuk ke PORTMAP pengelola pelabuhan akan melakukan scheduling dan membuat rencana layout sandar kapal. Hasil scheduling dan rencana layout sandar kapal dapat dilihat dan diunduh secara online oleh customer.

    5. Service Progress Monitoring

      PORTMAP memungkinkan customer untuk memonitor progress pelayanan, seperti: waktu-waktu penting, progress bongkar muat cargo, dan layanan-layanan lain yang digunakan. Waktu-waktu penting yang dimaksud adalah: Time of Arrival (TA), Time of Berthing (TB), Commenced Time (CT), Estimated Berthing Time (EBT), Shifting Time, sampai Time of Depature (TD). Progress bongkar/muat cargo ditampilkan per cargo dan per hari, berapa berat (tonnage) cargo yang dibongkar/muat, progress sampai saat ini, sisa tonnage, serta estimasi dan aktual laju bongkar/muat. Melalui fitur ini, customer juga dapat mengetahui status layanan, apakah masih dalam pelayanan (servicing) atau sudah selesai (served).

    Pengelola Pelabuhan

    Dalam mengelola operasional pelabuhan, pengelola biasanya memiliki dua perspektif: sebelum pelayanan (pre-service) dan pelayanan sampai selesai (servicing). Usaha-usaha yang dilakukan terhadap kapal atau customer dari booking sampai sesaat sebelum kedatangan kapal semuanya tercakup ke dalam Pre-service. Sementara semua usaha yang dilakukan sejak kapal tiba sampai berangkat lagi tercakup ke dalam Servicing. Adalah penting untuk memisahkan keduanya guna mempartisi data dan proses bisnis. Data yang diperoleh dalam proses Pre-service, seperti estimasi-estimasi sangat diperlukan untuk mengestimasi pendapatan dan menentukan prioritas pelayanan. Kadangkala prioritas pelayanan diperlukan mengingat keterbatasan resource pelabuhan. Data yang berkembang dalam proses Servicing merupakan data aktual, perlu dibedakan dengan data planning. Oleh karena itu, fungsionalitas bagi pengelola pelabuhan dibagi menjadi dua kelompok besar sebagai berikut.

    Pre-service Management
    1. Booking List

      Booking yang dilakukan oleh semua customer dapat dilihat oleh pengelola pada halaman ini. Dari sini pengelola dapat melihat data detail, meng-edit, menghapus, dan memberikan respon status untuk setiap booking. Setiap perubahan status akan dinotifikasi ke customer terkait dalam bentuk email dan/atau SMS. Status yang dikirim dapat disertai dengan pesan atau catatan tertentu.

    2. Planning

      Booking yang sudah dikonfirmasi dapat dilanjutkan ke tahap planning. Planning pada dasarnya melengkapi data booking dengan data tambahan yang disusulkan oleh customer dan data estimasi, seperti: estimasi lama bersandar (Estimation of Berthing Time) dan Estimated Time of Departure (ETD), yang dapat diestimasi dari tonnage cargo yang dibongkar/muat dan laju bongkar/muat perhari (berdasarkan kemampuan dan ketersediaan alat). Berdasarkan tarif yang berlaku dapat diestimasi pendapatan untuk setiap kapal.

    3. Scheduling

      Kapal-kapal yang sudah dilengkapi data planning-nya dan sudah di-approve untuk bersandar perlu segera dijadwalkan dan diatur tata letaknya pada dermaga. Untuk keperluan ini, pengelola dibantu dengan tool visual sehingga posisi kapal dapat ditempatkan dan diketahui dengan pasti nantinya pada dermaga-dermaga pelabuhan. Rancangan tool tersebut ditunjukan seperti gambar 1 pada bagian lampiran 5.1.1.

      Pada gambar tersebut diperlihatkan posisi kapal-kapal yang diwakili dengan gambar mirip peluru. Posisi horizontal menunjukan posisi kapal terhadap dermaga, sementara posisi horizontal adalah posisi waktu estimasi kedatangan (ETA). Tool ini direncanakan berbasis Microsoft Excel untuk memudahkan development, penggunaan, dan deployment.

    Servicing Management

    Semua fungsionalitas yang berhubungan dengan pelayanan aktual kapal tercakup dalam kategori ini, yaitu sebagai berikut.

    1. Start Service

      Saat kapal tiba (arrival) di pelabuhan, saatnya pelayanan dimulai. Fungsi ini digunakan untuk menandai mulainya pelayanan.

    2. Service Time Management

      Pencatatan waktu-waktu penting selama pelayanan, seperti: Time of Arrival (TA), Time of Berthing (TB), Commenced Time, Shifting Time, sampai Time of Depature (TD).

    3. Service Data Management

      Memungkinkan manajemen data selama pelayanan, seperti: bongkar muat cargo, penggunaan equipment (crane, conveyor), penggunaan air dan listrik, pengisian bahan bakar, delay time, dan aktivitas lainnya.

    4. Cargo Management

      Halaman ini memusatkan fungsi manajemen data cargo, termasuk menambahkan atau mengurangi data cargo di luar rencana awal (booking).

    5. Equipment Usage

      Menampilkan dan memperbaiki data penggunaan equipment. Dari sini diketahui berapa lama sebuah equipment telah digunakan sehingga bisa diketahui nilai produktivitas setiap equipment dan kapan waktunya untuk dilakukan maintenance.

    6. End Service

      End Service digunakan untuk menandai akhir pelayanan terhadap sebuah kapal. Pada saat mengakhiri pelayanan, juga dicatat waktu-waktu yang berhubungan dengan akhir pelayanan, seperti Unberthing Time, dan Time of Departure. Waktu tersebut dapat digunakan untuk menghitung lama penggunaan jasa sandar kapal.

    7. Service List

      Menampilkan semua data kapal yang sedang (servicing) dan sudah dilayani (served).

    Itulah sekelumit sasaran fungsionalitas yang akan diimplementasikan di dalam PORTMAP.

      

    Implementasi

    Setelah selesai dibangun, PORTMAP nantinya dapat diimplementasikan dalam 2 skema, yaitu:

    1. Customizable Solution

    PORTMAP dapat dipasarkan dan diimplementasikan sebagai customizable solution untuk setiap pelabuhan yang memerlukannya. Sebagai customizable solution, item data, proses bisnis, dan bentuk reporting dalam PORTMAP akan disesuaikan dengan kebutuhan pelabuhan yang mengimplementasikannya.

    1. Shared Service

    Alternatif implementasi lainnya adalah men-deploy PORTMAP sebagai shared service application dalam bentuk portal internet. Dengan skema demikian, diharapkan:

    • PORTMAP dapat digunakan secara bersama oleh semua perusahaan pelabuhan yang berlangganan (subscribe).
    • Karena sifatnya yang dibagi pakai (shared), perusahaan pelabuhan tidak harus membeli PORTMAP dan cost software ditanggung bersama di antara sesama pengguna.
    • Membebaskan perusahaan pelabuhan dari biaya deployment dan maintenance software karena hal tersebut sepenuhnya menjadi tanggung jawab pengelola PORTMAP.
    • PORTMAP dapat menjadi single entry bagi customer untuk menggunakan jasa-jasa kepelabuhanan dari pelabuhan yang diinginkan dan dapat berpindah ke pelabuhan lain dengan mudah melalui satu gerbang.

    Implementasi seperti ini menawarkan model bisnis Application Service Provider (ASP). Nantinya perlu studi kelayakan lebih lanjut untuk melihat feasibilitas model bisnis seperti itu.

    Alternatif implementasi manapun yang diambil, arsitektur deployment PORTMAP tetap mirip seperti dapat dilihat pada gambar 3 bagian lampiran 5.1.3.

      

    Hambatan Industri Yang Teratasi

    Dalam kaitannya dengan manajemen operasional pelabuhan berbasis IT, setidaknya ada dua fakta yang kami temui di lapangan, yaitu:

    1. Masih banyak pelabuhan, terutama di Indonesia, yang belum menerapkan sistem informasi berbasis IT untuk mendukung operasionalnya.
    2. Belum banyak solusi software aplikasi manajemen pelabuhan yang tersedia di pasaran. Bahkan untuk pasar Indonesia, sampai saat ini kami belum pernah mendengar atau menemukan solusi serupa. Untuk pasar duniapun, tidak banyak produsen yang menyediakan solusi ini. Salah satu pemain di luar negeri, tepatnya negera tetangga Malaysia, adalah Portrade AS dengan solusinya Integrated Port Management System (IPMS). Jika Malaysia bisa membuat solusi tersebut, mengapa kita tidak.

    Melihat kondisi tersebut, PORTMAP diharapkan dapat berkontribusi dalam penyediaan solusi manajemen operasional pelabuhan. Baik diimplementasikan sebagai customizable solution maupun shared service, diharapkan PORTMAP dapat membantu peningkatan kualitas pengelolaan pelabuhan di Indonesia dan di dunia. Dengan demikian diharapkan perolehan devisa negara dapat meningkat dan berkontribusi secara signifikan terhadap perekonomian negara.

    Implementasi PORTMAP diharapkan dapat mengatasi hambatan-hambatan yang dialami industri pelabuhan, baik secara internal maupun ekternal. Beberapa hambatan atau permasalahan yang dimaksud adalah sebagai berikut.

    1. Terjadi banyak duplikasi data di berbagai bagian operasional. Perpindahan data antara proses bisnis masih perlu dilakukan secara manual.
    2. Kesulitan dan kesalahan dalam proses scheduling dan planning
    3. Kesulitan untuk mengantisipasi delay dan waiting time
    4. Paperwork intensive
    5. Kesulitan memantau kondisi real di pelabuhan secara realtime, seperti posisi dan pergerakan kapal, progress bongkar muat, dan lain-lain
    6. Membuat dan menghitung berbagai jenis laporan secara manual, seperti Berth Occupancy Ratio (BOR), adalah pekerjaan yang menyita waktu
    7. Kesulitan customer untuk memperoleh informasi jadwal secara cepat dan mudah
    8. Customer tidak dapat melihat progress pelayanan secara realtime

    Sebenarnya masih banyak permasalahan lain yang lebih teknis yang terjadi di lapangan. Sekarang pertanyaannya, bagaimana permasalahan di atas dapat diatasi dengan implementasi PORTMAP? Kami jelaskan secara detail pada bagian Potensi Dampak Inovasi di bawah ini.

     

    Potensi Dampak Inovasi

    Implementasi PORTMAP berpotensi mengubah cara kerja manajemen operasional pelabuhan yang sebelumnya manual, redundan, paperwork-intensive, dan tidak terintegrasi menjadi lebih baik dengan berbasiskan software yang terintegrasi, otomatis, mudah, dan cepat.

    Untuk memperlihatkan bagaimana perubahan ke arah lebih baik yang dimaksud di atas, lagi-lagi kami melihatnya berdasarkan dua perspektif, yaitu:

    Pengelola Pelabuhan

    PORTMAP dapat mengubah cara kerja pengelola pelabuhan dalam mengelola pelabuhannya diantaranya dalam hal-hal sebagai berikut.

    1. Booking Management

      Sebelum berbasiskan sistem informasi, pengelolaan booking customer cukup menyulitkan. Data booking memang sudah dicatat menggunakan software Spreadsheet, tapi untuk keperluan notifikasi status booking tetap harus dilakukan manual melalui telepon, fax, atau email. Data tersebut juga tidak bisa langsung digunakan untuk keperluan scheduling. Dengan berbasiskan sistem seperti PORTMAP, pengelolaan booking menjadi terpusat. Notifikasi status dapat langsung dilakukan dari halaman booking list semudah mengklik tombol. Data booking dapat langsung digunakan dalam proses scheduling.

    2. Scheduling & Planning

      Proses scheduling tanpa bantuan sistem sangat time-consuming dan berkemungkinan terjadi kesalahan. Contraint-constraint tidak bisa di-apply, seperti time collision antara dua kapal atau lebih dan penempatan kapal pada dermaga yang kedalamannya tidak mencukupi. Estimasi pendapatan juga susah dihitung secara cepat, sehingga tidak bisa membuat prioritas pelayanan. PORTMAP dapat berperan mengurangi kerumitan dan kesalahan scheduling dengan menyediakan fungsionalitas scheduling secara visual dan mudah. Dengan PORTMAP juga diharapkan planning menjadi jauh lebih mudah dan cepat.

    3. Realtime Service Monitoring

      Tanpa sistem seperti PORTMAP, tidak dimungkinkan untuk memantau progress pelayanan secara realtime, seperti: progress bongkar/muat cargo. Posisi kapal-kapal pada dermaga juga tidak dapat diketahui secara realtime. Dengan bantuan PORTMAP, perhitungan progress tonnage bongkar/muat dapat dilakukan secara realtime.

    4. Paperless Administration

      Dalam proses bisnis pengelolaan pelabuhan, sangat banyak paperwork yang terjadi dimulai dari proses booking sampai selesai pelayanan. PORTMAP dapat menjadi media kolaborasi semua pihak sehingga paperwork dapat dikurangi.

    5. Reporting

      Merekap secara manual data kunjungan kapal dan penggunaan dermaga untuk menghitung Berth Occupancy Ratio (BOR) misalnya, dapat menguras waktu dan tenaga. Dengan bantuan PORTMAP semua reporting dapat dihasilkan seketika dan dapat dipastikan kebenarannya.

    Customer

    Dengan berbasiskan PORTMAP, diharapkan customer akan merasakan pengalaman yang berbeda dalam penggunaan jasa kepelabuhanan. Mulai dari booking, pemantauan pelayanan, sampai selesai pelayanan, semuanya dapat dilakukan secara online, mudah, dan cepat. Selain mendapati pengalaman baru yang lebih baik, kepuasan dan kepercayaan customer akan meningkat.

    Indikator Keberhasilan

    Keberhasilan implementasi PORTMAP dapat diukur berdasarkan besaran atau indikator sebagai berikut.

    Indikator Kuantitatif

    1. Waiting Time

      Waiting time adalah sebuah besaran waktu yang menyatakan lamanya kapal menunggu sejak kedatangannya (arrival) sampai bisa merapat ke dermaga (berthing). Ketika kapal mengalami waiting time, maka pengelola pelabuhan akan dikenai denda yang cukup besar perjamnya. Sehingga semakin kecil waiting time tentu semakin baik. Untuk menjadi pelabuhan berskala internasional, rata-rata waiting time di sebuah pelabuhan harus maksimal 1 jam. Waiting time di beberapa pelabuhan di Indonesia masih cukup besar, yaitu antara 2 – 4 jam.

      Perbaikan pada proses scheduling akan berpengaruh pada pengurangan waiting time. Salah satu indikator keberhasilan implementasi PORTMAP adalah berkurangnya waiting time.

    2. Berth Occupancy Ratio

      Ada sebuah besaran yang digunakan untuk menunjukan efisiensi penggunaan/utilisasi dermaga, yaitu Berth Occupancy Ratio (BOR), dimana semakin tinggi persentase BOR tentu semakin baik. Selain berpengaruh pada pengurangan waiting time, perbaikan pada scheduling juga akan berpengaruh pada peningkatan BOR.

    3. Paperwork

      Dengan imlementasi PORTMAP diharapkan terjadi pengurangan yang siginifikan terhadap jumlah dokumen yang beredar secara fisik. Oleh karena itu, pengurangan paperwork juga bisa menjadi indikator keberhasilan PORTMAP. Paperless administration telah terbukti mampu meningkatkan produktifitas dan penghematan di beberapa pelabuhan, seperti Pelabuhan Busan di Korea, yang mampu menghemat lebih dari 25 juta dolar US dari biaya logistik.

    Indikator Kualitatif

    1. Tingkat Kepuasan Customer

      Value-added services yang disediakan PORTMAP diharapkan dapat meningkatkan kepuasan customer.

    2. Birokrasi

      Implementasi PORTMAP diharapkan dapat mengurasi birokrasi dalam penggunaan layanan dengan cara mengurangi frekuensi tatap muka antara customer dan pengelola serta pengurangan paperwork. Hal tersebut juga dapat menghindari kemungkinan korupsi, kolusi, dan nepotisme (KKN) dan pungutan liar.

    3. Corporate Image

      Implementasi sistem seperti PORTMAP dapat meningkatkan corporate image dari perusahaan pengelola pelabuhan mengingat berbagai efisiensi yang ditawarkan dan pelayanan yang lebih baik.

     

    Untuk mengukur indikator-indikator tersebut tentu saja memerlukan waktu dan studi kasus. Begitu selesai dibangun, PORTMAP perlu segera diimplementasikan setidaknya di sebuah pelabuhan. Kami memprediksi setidaknya diperlukan waktu 6 bulan sejak deployment supaya PORTMAP bisa dioperasionalkan secara optimal. Setelah selang waktu tersebut, baru dapat diukur apakah indikator-indikator di atas mengalami perbaikan ke arah yang positif guna mengetahui tingkat keberhasilan PORTMAP.

     

    Lampiran

    Lampiran Gambaran Inovasi

    Rancangan PORTMAP Scheduling Tool

    Rancangan PORTMAP Scheduling Tool berbasis Microsoft Excel 2007
    Gambar 1 – Rancangan PORTMAP Scheduling Tool berbasis Microsoft Excel 2007

    System Architecture

    PORTMAP System Architechture

    Gambar 2 – PORTMAP System Architechture

    Deployment Architecture

    PORTMAP Deployment Architecture

    Gambar 3 – PORTMAP Deployment Architecture

     

    Demikian proposal kami buat iMULAi. All comments are welcome very much. Semoga ide ini berguna dan bisa sedikit berkontribusi demi menyokong kemajuan perekonomian bangsa.

  • Getting Started with ASP.NET Dynamic Data Support of ASP.NET 3.5 Extensions CTP

    Back to the time when I and Reza delivered a talk in MSDN Day | VS2008 Deep Dive (Nov 2, 2007), I asked the audiences "How long you need to develop a page that contains a GridView displaying data from a table that has some references to other tables (off course you want to render the foreign key column as a text of selected column of foreign tables instead of the id/key value), complete with DetailView (displayed when one row of GridView is selected), also completed with edit & delete feature (the form need to render a DropDownList for foreign key column)? Everything need to build from scratch". Some audience say two hours, some say one hour, and even 30 minutes..Wow, that's fast. And then I came up with surprising answer, "5 minutes, maximum". How is that possible? This is why...

    As you might know, ASP.NET team has released an extension to ASP.NET 3.5 called ASP.NET 3.5 Extensions CTP. It was previously called ASP.NET Futures (last time I know, it's July 2007 release). I won't say much about it. Just go to http://asp.net/downloads/3.5-extensions/ to get quick reading about it. There is a good quick start at http://quickstarts.asp.net/3-5-extensions. ScottGu has a nice blog about its introduction: http://weblogs.asp.net/scottgu/archive/2007/12/09/asp-net-3-5-extensions-ctp-preview-released.aspx. Right now, I will say quite much about one of delivered features, called ASP.NET Dynamic Data Support.

    For you who have been playing around with ASP.NET Futures, you might already know about Dynamic Data Support. It's a cool feature that allow us to quickly develop data-driven web site without having to create any pages (for basic usage). I repeat in other words, NOT A SINGLE PAGE has to be created to create a complete data-driven web site. Can you imagine that...I don't believe my self. Unlike other scaffolding framework that has some generators to generate pages, Dynamic Data doesn't need any generators. 

    Last time I presented about it in MSDN Day, many audiences think I was joking at that time. They think I've prepared the aspx pages before to build such a web site. When I showed them the files inside my VS solution, they finally believed that I didn't create any pages to get a web site run.

    In fact, what I've shown to them is only Dynamic Data of ASP.NET Futures (July). In this ASP.NET 3.5 Extensions release, it brings even more. One thing that I like the most of this release is that now it's more customizable. Previously, you won't be able to change the web control used for inserting/editing a column value. Now, you can use a user control (ascx file) for that purpose. The page templates used to generate pages are now exposed to us. The great thing among other things is Dynamic Data doesn't access tables directly using ADO.NET provider, now it uses LINQ to SQL (and in the future LINQ to Entities) to work with tables and views. Further input validations are now possible at model (LINQ model) level.

    OK, enough for some intro, it's time to get started.

    Preparation

    1. Download

    ASP.NET 3.5 Extensions CTP is not included by default in .NET 3.5 SDK or VS 2008. You need to download it first at http://asp.net/downloads/3.5-extensions. Click Download the ASP.NET 3.5 Extensions Preview link and you'll be brought to the download page. Click download button and ASPNetExt.exe file will be downloaded.

    2. Installation

    After the file downloaded, install it. The installation should be easy.

    Install01

    If you use AVG Free anti virus, during installation you might be prompted following dialog. Just Ignore it. It's caused by *.html.js file naming in Silverlight. Some smart people at Microsoft should fix this.

    Silverlight Virus warning

    Installation should be finished successfully. Now you're ready to get started with Dynamic Data Support in ASP.NET 3.5.

     

    First Dynamic Data WebSite

    1. Open your holly Visual Studio 2008 :)

    2. Create a new Dynamic Data WebSite

    If previous installation is successfully, you'll see a new WebSite template is installed for you, that is Dynamic Data WebSite. Specify the location of new website, choose language (I prefer Visual C# :P), then OK.

    New Dynamic Data Project

    If everything ok, following files are generated for you in your solution. I think you are familiar with all the files/folders, except (maybe) the App_Shared folder. if you look into App_Shared folder, it contains some page templates, user controls, and images those are shared across the Dynamic Data website.

    Solution Files

    3. Add database to manage

    I'll add a very known database, Northwind. Right click to solution name and click Add Existing Item. Then find database MDF file. It should be MDF file, means SQL Server database file. Did I mention that Dynamic Data currently only SQL Server? If I haven't, yes it is. If in the future, it supports LINQ to Entities, maybe other databases are supported.

    After you choose Northwind database file, you'll have:

    Solution Files after add db

    Double click to NORTHWND.MDF file, you'll get Server Explorer window. Drill down to Tables node to view tables.

    Tables

    4. Add new LINQ to SQL Classes

    Right click to solution name and click Add New Item. Then at Add New Item dialog, choose LINQ to SQL Classes, name it Northwind.dbml, and click OK.

    Linq2sql file

    You'll be prompted to place the dbml file to App_Code, just click Yes. Now, you'll have Northwind.dbml file inside App_Code special folder. Double click to it and dbml designer will be opened.

    5. Generate LINQ to SQL Classes from database tables

    Back to tables list in Server Explorer window. Select all tables then drag them to dbml designer. After some moments to extract tables info, you'll get LINQ to SQL Classes generated for you, like following picture.

    Northwnd Linq2sql schema

    6. One last thing, you can optionally view and edit some tags in web.config.

    Find following part:

           <dynamicData dataContextType="" enableTemplates="false">
                <mappings queryStringKeyPrefix="" pattern="~/{table}/{viewName}.aspx">
                    <add actions="list,details" viewName="ListDetails" templateFile="ListDetailsTemplate.aspx"/>
                    <!--
              <add actions="list" viewName="List" templateFile="ListTemplate.aspx" />
              <add actions="details" viewName="Details" templateFile="DetailsTemplate.aspx" />
            -->
                    <!--
              Special overriding cases
              <add actions="list,details" tables="Products,Categories" viewName="SpecialName" templateFile="ListTemplate.aspx"/>
              <add actions="list" tables="Products" templateFile="DetailsTemplate.aspx" path="~/customPath.aspx"/>
              <add actions="list" tables="Orders" viewName="MyListViewName"/>
            -->
                </mappings>
           </dynamicData>

    Change enableTemplates attribute value to "true".

    7. Now you're ready to view the website in browser. Right click to solution name and click View In Browser, or you can press ctrl+F5.

    Eng...ing...eng...without create any ASP.NET pages, you'll get the default/home page like this.

    FirstWebPage

    As you might notice, this default page show the list of tables those you have added to dbml designer before.

     

    Playing around

    Click to one table name link, for example Products. You'll have this page:

    Products Page

    As you see, the page display a GridView displaying paged records of Products table, complete with Filter controls (to filter displayed rows), column sorting, row editing/deletion/selection, paging controls, and even DetailView at the bottom. You might also notice that instead of rendering Category ID value for Category column, it renders the name value of Category. It also happens for Supplier and Order_Details. Discontinued column that has boolean type is rendered as checkbox. Such a amazing result considering not much we haven't do so far. Did I mention it is already AJAX-based? Yes it is. If you click, lets say sorting link of a column, the rows will be sorted without refreshing the whole page.

    By clicking a Category link, such as Condiments, you'll get Category table page like this. Please notice at DetailView, Condiments category is automatically selected. Nice...

    Category page - from Product page

    At the GridView, click View Products link for Dairy Products category, and you'll be back to Products page with Category filter automatically selected fro Dairy Products. So, displayed record will be filtered for Dairy Products category. Nice...

    Products page - from Category page

    Now, click Edit button on a row, and you'll see columns are rendered as input fields. Lets say, you empty ProductName value and move to other field, you'll get:

    Product page - required validation

    That means some validations have been made for you. For above example, required validator has been applied to ProductName column since the column is mandatory (not null) in the Products table of Northwind database.

    You can play more since many features those I can't explain all here.

    Now, what about if you want to customize, lets say customize displayed columns in the GridView or add custom validation.

  • Virtual Earth Map Control - A very brief introduction

    I've searched blogs about Virtual Earth in INDC Geeks blog, I couldn't find one. So, I think it's good idea to start very basic and brief one. This blog is intended to give you a glance about how to embed map into web page using Virtual Earth Map Control SDK.

    Lets code a very basic one. This code below is a regular HTML page. Just start your Visual Studio, Add New Item and select HTML Page, and write this code.

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="
    http://www.w3.org/1999/xhtml">
    <head>
        <title>Very Basic Virtual Earth Map</title>

        <script type="text/javascript" src="http://dev.virtualearth.net/mapcontrol/mapcontrol.ashx?v=6">
        </script>

        <script type="text/javascript">

            var map = null;
            function GetMap()
             {
                map = new VEMap('myMap');
                map.LoadMap();
             }
        </script>

        <style type="text/css">
            .map
            {
                position: absolute;
                top: 20;
                left: 10;
                width: 400px;
                height: 400px;
                border: #555555 2px solid;
            }
        </style>
    </head>
    <body onload="GetMap();">
        <div id="myMap" class="map">
        </div>
    </body>
    </html>

     

    Then View in Browser, and you'll get following display. I don't know why the default map is US :)

    image

    OK, I'll explain the code as clear as possible.

    • First thing first, you must include the JS script that contain Map Control script. You can easily write this code:

    <script type="text/javascript" src="http://dev.virtualearth.net/mapcontrol/mapcontrol.ashx?v=6"></script>

    As you can see, we add reference to map control library version 6, the latest version. Off course you need connected to internet to get the script loaded.

    • Write simple JS function to get the map object.

    var map = null;

    function GetMap()
    {
         map = new VEMap('myMap');
         map.LoadMap();
    }

    I think the function code is self-explained. First, create map object that is instantiated from VEMap class with the ID of layer (where the map will be rendered) as constructor parameter. Then, call LoadMap method of map object.

    • You need to call the above JS function when the body is loaded. So, in the body tag you should set onload attribute with GetMap() function.
    • Then, make sure you have a layer (div tag) inside the body with specified id, "myMap" in this case.

    That's it and you can embed map into your web page.

    Ok, lets say now you want to display specified location as a default when the first time the map is loaded. You just specify a location as VELatLong object and use the object as LoadMap() method parameter. Change the JS function above to:

    var map = null;
    var dyCodeCoord = new VELatLong(-6.89186, 107.59987);

    function GetMap()
    {
           map = new VEMap('myMap');
           map.LoadMap(dyCodeCoord);
    }

    And you'll get following map. The exact coordinate will be displayed as center by default.

    image

    As you can see at the code above, we create VELatLong object to be provided as LoadMap argument. VELatLong class requires two parameters: latitude and longitude point in decimal form. If you have the point in degree form, you need to convert to decimal form first. Use following page to convert it: http://robuck.net/geocaching/convert.htm

    Now, you want to customize more when the map loading. First you need to know more about LoadMap parameters:

    VEMap.LoadMap(VELatLong, zoom, style, fixed, mode, showSwitch, tileBuffer);

    Parameters:

    VELatLong

    A VELatLong Class object that represents the center of the map. Optional.

    zoom

    The zoom level to display. Valid values range from 1 through 19. Optional. Default is 4.

    Style

    A VEMapStyle Enumeration value specifying the map style. Optional. Default is VEMapStyle.Road.

    fixed

    A Boolean value that specifies whether the map view is displayed as a fixed map that the user cannot change. Optional. Default is false.

    mode

    A VEMapMode Enumeration value that specifies whether to load the map in 2D or 3D mode. Optional. Default is VEMapMode.Mode2D.

    showSwitch

    A Boolean value that specifies whether to show the map mode switch on the dashboard control. Optional. Default is true (the switch is displayed).

    tileBuffer

    How much tile buffer to use when loading map. Default is 0 (do not load an extra boundary of tiles). This parameter is ignored in 3D mode.

     

    Lets say you want to display aerial view with zoom level is 10 by default. Then change LoadMap method to:

    map.LoadMap(dyCodeCoord, 10, VEMapStyle.Aerial);

    And you'll get:

    image

    To emphasize to location, you can add pin and display detail information about the location. To do that, you need to use VEPushpin class. Change the GetMap() function to:

    function GetMap()
    {
         map = new VEMap('myMap');
         map.LoadMap(dyCodeCoord, 10, VEMapStyle.Aerial);
         var pin = new VEPushpin(1, dyCodeCoord, null, 'DyCode', 'PT. Dycode Cominfotech Development');
         map.AddPushpin(pin);
    }

    And you'll get:

    image

    Hover your mouse to the pin, and detail information of the pin will be displayed.

    image

    OK, that's it for now. I'll update this blog later. For now, I need to sleep because it's 5 am here.

    For more information about Virtual Earth SDK, go to: http://msdn2.microsoft.com/en-us/library/aa905677.aspx

    Thanks for reading this brief blog.

More Posts
© 2007 | PT Dycode Cominfotech Development
Powered by Community Server (Non-Commercial Edition), by Telligent Systems