Created
October 16, 2012 14:34
-
-
Save rawaludin/3899639 to your computer and use it in GitHub Desktop.
SNIPPET: Logic - sinkronisasi ECB JNA
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
=== Masalah === | |
Bagaimana membuat sinkronisasi isian survey offline dan sistem online? | |
- Login? | |
- Perubahahan data? | |
=== USE CASE === | |
USER OFFLINE > Pilih Survey yang akan disinkron | |
> Login | |
> Kirim data survey (baru dan update) | |
> Cancel pengiriman survey (kalau survey belum di konfirm admin) | |
> Cek status konfirmasi survey (sudah diterima atau belum) | |
> Logout | |
ADMIN > CRUD User Offline | |
> Konfirm data yang dikirim User Offline | |
> Tolak data yang dikirm User Offline | |
=== Kendala === | |
- Survey ada banyak dan memiliki ID berbeda digenerate berbeda tiap client | |
- ID survey yang dibuat tiap client ada kemungkinan sama | |
- Tiap isian di tiap survey memiliki primary responsse_id yang dimulai dari 1 (auto_increment). Setiap client dan survey selalu sama. | |
- Setiap survey yang diimport harus memiliki token survey (karena untuk mengisi survey secara offline atau online surveyor harus memiliki token) | |
=== Solusi === | |
*** Pembeda tiap user *** | |
- Gunakan device Mac untuk merequest activation key ke server | |
- activation key disimpan di setting | |
- tiap kali mau masuk menu sinkron, device mac dan activation key di kirim. Jika sesuai dengan yang ada di server, proses berlanjut dan client mendapat token. Jika tidak, proses berhenti. | |
*** Login *** | |
- Di server CREATE table >>> clientauth [userid, username, password, email, biodata] | |
- User pilih jenis survey, klik menu sinkron, keluar form login ke server pusat | |
- Jika login berhasil, user akan mendapat data_token (masukkin ke cookie client) yang digenerate di session pusat dan akan expired setiap 10 menit. Isi data token_user di pusat = [token, userid] | |
- User harus login ulang setiap 10 menit | |
- Setiap kali user melakukan action yang berhubungan dengan data server data_token akan ikut dikirim | |
- Ketika user logout di offline, variabel token di offline akan dihapus | |
- [selesai] | |
*** User - Kirim Data Survey - Baru *** | |
- Klik button sinkron | |
- Pilih survey yang akan menjadi target di server pusat | |
- User kirim data [token, token_survey, response[], surveytitle, surveyid_target] | |
> token = untuk autentikasi | |
> token_survey = untuk memasukkan survey (token untuk melakukan survey) | |
> response = data survey | |
> surveytitle = judul survey | |
> surveyid_target = target survey yang akan di kirim | |
- Message "Terima Kasih. Data Anda akan diproses Admin." | |
- Di server akan INSERT table >>> surveymerge [userid, surveyid_source, surveyid_generated, surveyid_target, survey_title] | |
> userid = id dari user yang mengirim, diambil dari session token_user | |
> surveyid_source = id survey yang dikirim dari client | |
> surveyid_generated = id survey baru yang dibuat di server. Ini diperlukan untuk menghindari id survey yang sama dari client. Ketika server akan membuat survey baru, juga akan mengecek id ini. | |
> surveyid_target = target id survey di server yang dipilih oleh client | |
> survey_title = title survey yang dikirim oleh client | |
- Di server akan CREATE table >>> temp_token_userid_surveyid. Tabel ini berisi data token yang dikirim. | |
Penjelasan cara membuat nama table: | |
> userid = userid dari table surveymerge | |
> surveyid = surveyid_generated dari table surveymerge | |
> contoh nama table : temp_token_12_345212 | |
- Di server akan CREATE table >>> temp_responses_userid_surveyid. Berisi data response yang dikirim. | |
Penjelasan cara membuat nama table: | |
> userid = userid dari table surveymerge | |
> surveyid = surveyid_generated dari table surveymerge | |
> contoh nama table : temp_responses_12_345125 | |
*** ADMIN - Confirm data survey *** | |
- Buka menu sinkron (pilihan lainnya akan muncul portlet "sinkron terbaru" di halaman utama admin dengan link untuk ke data itu) | |
- pilih data yang akan di sinkron | |
- setujui sinkron ke survey tertentu atau ubah target surveyid. | |
- Jika perubahan disetujui, prosesnya adalah: | |
* Server akan membuat table log_sync(id,userid,surveyid) | |
> id = id dari data | |
> userid = id dari user | |
> surveyid = id dari surveyid_generated dari table surveymerge | |
* Data dari temp_token_userid_surveyid akan di import ke table dengan surveyid target | |
* Setiap kali record |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment