Tag

,

Pada saat kerja offline atau terburu-buru form ditutup, didalam form command-command yang dikirim ke server, statusnya masih menggantung. Sementara program akan terus bekerja secara background. Akibatnya jika terjadi error, atau masalah kita hanya bisa melihat status command.

Akan lebih baik jika berdasarkan error (atau status non sukses) tersebut kita bisa membangkitkan kembali form yang tadi kita tutup. Jalan yang akan kita tempuh:

  1. Setiap Form harus punya sesi Guid
  2. Setiap Form harus punya definisi view state
  3. Setiap Form harus punya definisi membangkitkan dirinya dari view state
  4. View State akan kita simpan dalam bentuk binary di Sqlite
  5. Setiap command punya assosiasi dengan image proses status pada guid command

Gambar dibawah ini adalah analisa objec-object yang kita butuhkan:
simpanviewstateChat adalah contoh form yang akan saya pakai untuk test. Didalam dirinya akan ada class ChatViewState yang mengimplementasikan IViewState. FormName dalam IViewState digunakan untuk mencari form di spring.net context. Dan CommandGuid kita gunakan untuk menghubungkan ImageStatusProses dengan Command, jumlahnya akan banyak, tidak cuma satu, tergantung seberapa banyak status proses yang akan dipantau. Jadi setiap proses akan memiliki variabel Guid yang berasosiasi dengan command Guid dan nama vaiabel itu akan mengacu pada image status proses, misal: Guid headerPictureBoxGuid=command.Guid.

Setiap form harus mengimplementasikan IState yang nantinya akan diconsume oleh IViewStateRepository. Pada saat menyimpan, form akan memanggil IViewStateRepository sementara IViewStateRepository akan memanggil balik form untuk membuat IViewState. Jadi menggunakan Double Dispatch.

Data kita simpan kedalam Sqlite database. Dibawah ini adalah squence diagram dari analisis diatas:

simpanviewstatesequence

Iklan