Try   HackMD

Optimasi Open Feeder (OF)

Persiapan

  1. pastikan versi wildantea yg terbaru
  2. set konfig log error php importer wildantea menjadi true
  3. pastikan pd importer wildantea tidak ada issue terkait lisensi. jika ada, atasi dg menggunakan kode yg sdh bayar subscription atau replace code index.php
  4. catat log ketika terjadi request ke feeder baik via rest atau soap pd importer wildantea
  5. catat log ketika terjadi request ke feeder baik via rest atau soap pd open feeder

Langkah Optimasi pd setiap usecase/context

  1. analisis code push_*.php di importer wildantea, buat algoritmanya
  2. catat berbagai test case pd fitur yg dikerjakan. baca code dari file push_* di importer wildantea
  3. siapkan data u/ pengembangan dg berbagai test case di aplikasi feeder secara MANUAL
  4. lakukan simulasi dg berbagai test case baik di wildan tea dan OF, lalu analisis log nya
  5. catat input dan output function pada app OF
  6. buat repository module beserta testingnya sesuai dg catatan log (poin no 4)
  7. buat service module baru dg menggunakan repository module
  8. binding tsb dg controller

Prosedur push_nilai

  • load data nilai from source
  • get id kelas kuliah using GetRecordset from kelas_kuliah with filter "(p.id_sms,trim(kode_mk),trim(nm_kls),p.id_smt) IN ($implode_id_kelas)"
  • get id mhs using GetListMahasiswa with filter "(id_prodi,trim(nim)) in ($nim_concat_where)" OR "trim(nim) in ($nim_concat_where)"
  • loop data nilai
    • validasi & ambil id_reg_pd dr hasil pencarian sblmnya
    • validasi & ambil id_kls dr hasil pencarian sblmnya
    • jika OK, bentuk key dan value
    • jika NOT OK, taruh sbg daftar error
    • olah data berdasarkan metode by nilai saja atau nilai + krs
  • jika terdapat data krs, lakukan InsertRecordset ke tabel nilai scr bulk
  • jika terdapat data nilai, lakukan UpdateNilaiPerkuliahanKelas per item
  • update status u/ data yg sdh diproses

Test case

  1. update nilai dg kondisi normal
  2. update nilai tp data krs tidak ada
  3. update nilai tp datanya sudah dihapus

Tips

  • gunakan postman/sopaui u/ membandingkan response dari repo
  • buat repo function lebih dahulu, setelah itu service
  • buat unit testing lebih dahulu dg input sesuai dengan log dari OF
  • kemudian bikin implementasi dari testing tsb
  • baik input dan output gunakan istilah yg dipake oleh REST
    contoh: gunakan id_registrasi_mahasiswa, bukan id_reg_pd
  • buat function melakukan satu hal saja,
    contoh:
// sebelum

// sesudah
  • pahami suatu function dari unit testingnya, alih2 komentar

Log

WILDAN PREMIUM NORMAL CASE (Metode Kode Prodi = Sebagai Prodi Mhs + Kelas)

[04-Jan-2022 12:09:44 Asia/Jakarta] GetRecordset kelas_kuliah => "(p.id_sms,trim(kode_mk),trim(nm_kls),p.id_smt) IN (('9da791d6-e543-4999-82e9-e3b77f4dc776','F202','01.01','20211'))"
[04-Jan-2022 12:09:44 Asia/Jakarta] GetListMahasiswa -> {"act":"GetListMahasiswa","token":"fe89a0ce8332a750a3e9bbce5d0a0bbf","filter":"(id_prodi,trim(nim)) in (('9da791d6-e543-4999-82e9-e3b77f4dc776','P17335121001'),('9da791d6-e543-4999-82e9-e3b77f4dc776','P17335121002'),('9da791d6-e543-4999-82e9-e3b77f4dc776','P17335121003'))","order":"","limit":"","offset":""}
[04-Jan-2022 12:09:44 Asia/Jakarta] GetPesertaKelasKuliah -> {"act":"GetPesertaKelasKuliah","token":"fe89a0ce8332a750a3e9bbce5d0a0bbf","filter":"(id_kelas_kuliah,id_registrasi_mahasiswa) IN (('50c144cb-28da-43e8-8ae8-158399bcd4a6','1da4e078-05e9-4258-bc20-c0cfc8c3b287'),('50c144cb-28da-43e8-8ae8-158399bcd4a6','e465ba50-2157-437e-90e7-4e0ae0dd415d'),('50c144cb-28da-43e8-8ae8-158399bcd4a6','5a769a16-cd4d-4471-a800-9d495274b0ae'))","order":"","limit":"","offset":""}
[04-Jan-2022 12:09:45 Asia/Jakarta] UpdateRecordset nilai => [{"key":{"id_kls":"50c144cb-28da-43e8-8ae8-158399bcd4a6","id_reg_pd":"1da4e078-05e9-4258-bc20-c0cfc8c3b287"},"data":{"nilai_angka":"21","nilai_huruf":"A+","nilai_indeks":"4"}},{"key":{"id_kls":"50c144cb-28da-43e8-8ae8-158399bcd4a6","id_reg_pd":"e465ba50-2157-437e-90e7-4e0ae0dd415d"},"data":{"nilai_angka":"31","nilai_huruf":"C+","nilai_indeks":"2"}},{"key":{"id_kls":"50c144cb-28da-43e8-8ae8-158399bcd4a6","id_reg_pd":"5a769a16-cd4d-4471-a800-9d495274b0ae"},"data":{"nilai_angka":"41","nilai_huruf":"B","nilai_indeks":"3"}}]

WILDAN PREMIUM NORMAL CASE (Metode Kode Prodi = Sebagai Prodi Kelas Only)

[04-Jan-2022 12:37:50 Asia/Jakarta] GetRecordset kelas_kuliah => "(p.id_sms,trim(kode_mk),trim(nm_kls),p.id_smt) IN (('9da791d6-e543-4999-82e9-e3b77f4dc776','F202','01.01','20211'))"
[04-Jan-2022 12:37:51 Asia/Jakarta] GetListMahasiswa -> {"act":"GetListMahasiswa","token":"c8c01464aca8cfe122725358affd3435","filter":"trim(nim) in (('P17335121001'),('P17335121002'),('P17335121003'))","order":"","limit":"","offset":""}
[04-Jan-2022 12:37:51 Asia/Jakarta] GetPesertaKelasKuliah -> {"act":"GetPesertaKelasKuliah","token":"c8c01464aca8cfe122725358affd3435","filter":"(id_kelas_kuliah,id_registrasi_mahasiswa) IN (('50c144cb-28da-43e8-8ae8-158399bcd4a6','1da4e078-05e9-4258-bc20-c0cfc8c3b287'),('50c144cb-28da-43e8-8ae8-158399bcd4a6','e465ba50-2157-437e-90e7-4e0ae0dd415d'),('50c144cb-28da-43e8-8ae8-158399bcd4a6','5a769a16-cd4d-4471-a800-9d495274b0ae'))","order":"","limit":"","offset":""}
[04-Jan-2022 12:37:51 Asia/Jakarta] UpdateRecordset nilai => [{"key":{"id_kls":"50c144cb-28da-43e8-8ae8-158399bcd4a6","id_reg_pd":"1da4e078-05e9-4258-bc20-c0cfc8c3b287"},"data":{"nilai_angka":"22","nilai_huruf":"A+","nilai_indeks":"4"}},{"key":{"id_kls":"50c144cb-28da-43e8-8ae8-158399bcd4a6","id_reg_pd":"e465ba50-2157-437e-90e7-4e0ae0dd415d"},"data":{"nilai_angka":"33","nilai_huruf":"C+","nilai_indeks":"2"}},{"key":{"id_kls":"50c144cb-28da-43e8-8ae8-158399bcd4a6","id_reg_pd":"5a769a16-cd4d-4471-a800-9d495274b0ae"},"data":{"nilai_angka":"44","nilai_huruf":"B","nilai_indeks":"3"}}]

OF Input

checkListRefNilai [{"nim":"P17335121001","nama_mahasiswa":"ADIT ANDRIYANNTO","kode_mata_kuliah":"F202","id_semester":"20211","nama_kelas_kuliah":"01.01","nilai_huruf":"A+","nilai_indeks":4,"nilai_angka":"50","kode_prodi":"48401","nama_program_studi":"D3 Farmasi"},{"nim":"P17335121002","nama_mahasiswa":"ALVIA DUZ JANNAH","kode_mata_kuliah":"F202","id_semester":"20211","nama_kelas_kuliah":"01.01","nilai_huruf":"C+","nilai_indeks":2,"nilai_angka":"50","kode_prodi":"48401","nama_program_studi":"D3 Farmasi"},{"nim":"P17335121003","nama_mahasiswa":"AMELIA PUTRI MAULIDA","kode_mata_kuliah":"F202","id_semester":"20211","nama_kelas_kuliah":"01.01","nilai_huruf":"B","nilai_indeks":3,"nilai_angka":"50","kode_prodi":"48401","nama_program_studi":"D3 Farmasi"}]
checkRefNilai {"nim":"P17335121001","nama_mahasiswa":"ADIT ANDRIYANNTO","kode_mata_kuliah":"F202","id_semester":"20211","nama_kelas_kuliah":"01.01","nilai_huruf":"A+","nilai_indeks":4,"nilai_angka":"50","kode_prodi":"48401","nama_program_studi":"D3 Farmasi"}
checkRefNilai {"nim":"P17335121002","nama_mahasiswa":"ALVIA DUZ JANNAH","kode_mata_kuliah":"F202","id_semester":"20211","nama_kelas_kuliah":"01.01","nilai_huruf":"C+","nilai_indeks":2,"nilai_angka":"50","kode_prodi":"48401","nama_program_studi":"D3 Farmasi"}
checkRefNilai {"nim":"P17335121003","nama_mahasiswa":"AMELIA PUTRI MAULIDA","kode_mata_kuliah":"F202","id_semester":"20211","nama_kelas_kuliah":"01.01","nilai_huruf":"B","nilai_indeks":3,"nilai_angka":"50","kode_prodi":"48401","nama_program_studi":"D3 Farmasi"}
updateListNilai [{"nim":"P17335121001","nama_mahasiswa":"ADIT ANDRIYANNTO","kode_mata_kuliah":"F202","id_semester":"20211","nama_kelas_kuliah":"01.01","nilai_huruf":"A+","nilai_indeks":4,"nilai_angka":"50","kode_prodi":"48401","nama_program_studi":"D3 Farmasi","id_prodi":"9da791d6-e543-4999-82e9-e3b77f4dc776","id_matkul":"f4fb5ab0-1455-4292-a71b-b81932d98e98","id_registrasi_mahasiswa":"1da4e078-05e9-4258-bc20-c0cfc8c3b287","id_kelas_kuliah":"50c144cb-28da-43e8-8ae8-158399bcd4a6","check":{"ref_nilai":true}},{"nim":"P17335121002","nama_mahasiswa":"ALVIA DUZ JANNAH","kode_mata_kuliah":"F202","id_semester":"20211","nama_kelas_kuliah":"01.01","nilai_huruf":"C+","nilai_indeks":2,"nilai_angka":"50","kode_prodi":"48401","nama_program_studi":"D3 Farmasi","id_prodi":"9da791d6-e543-4999-82e9-e3b77f4dc776","id_matkul":"f4fb5ab0-1455-4292-a71b-b81932d98e98","id_registrasi_mahasiswa":"e465ba50-2157-437e-90e7-4e0ae0dd415d","id_kelas_kuliah":"50c144cb-28da-43e8-8ae8-158399bcd4a6","check":{"ref_nilai":true}},{"nim":"P17335121003","nama_mahasiswa":"AMELIA PUTRI MAULIDA","kode_mata_kuliah":"F202","id_semester":"20211","nama_kelas_kuliah":"01.01","nilai_huruf":"B","nilai_indeks":3,"nilai_angka":"50","kode_prodi":"48401","nama_program_studi":"D3 Farmasi","id_prodi":"9da791d6-e543-4999-82e9-e3b77f4dc776","id_matkul":"f4fb5ab0-1455-4292-a71b-b81932d98e98","id_registrasi_mahasiswa":"5a769a16-cd4d-4471-a800-9d495274b0ae","id_kelas_kuliah":"50c144cb-28da-43e8-8ae8-158399bcd4a6","check":{"ref_nilai":true}}]
updateNilai {"nim":"P17335121001","nama_mahasiswa":"ADIT ANDRIYANNTO","kode_mata_kuliah":"F202","id_semester":"20211","nama_kelas_kuliah":"01.01","nilai_huruf":"A+","nilai_indeks":4,"nilai_angka":"50","kode_prodi":"48401","nama_program_studi":"D3 Farmasi","id_prodi":"9da791d6-e543-4999-82e9-e3b77f4dc776","id_matkul":"f4fb5ab0-1455-4292-a71b-b81932d98e98","id_registrasi_mahasiswa":"1da4e078-05e9-4258-bc20-c0cfc8c3b287","id_kelas_kuliah":"50c144cb-28da-43e8-8ae8-158399bcd4a6","check":{"ref_nilai":true}}
updateNilai {"nim":"P17335121002","nama_mahasiswa":"ALVIA DUZ JANNAH","kode_mata_kuliah":"F202","id_semester":"20211","nama_kelas_kuliah":"01.01","nilai_huruf":"C+","nilai_indeks":2,"nilai_angka":"50","kode_prodi":"48401","nama_program_studi":"D3 Farmasi","id_prodi":"9da791d6-e543-4999-82e9-e3b77f4dc776","id_matkul":"f4fb5ab0-1455-4292-a71b-b81932d98e98","id_registrasi_mahasiswa":"e465ba50-2157-437e-90e7-4e0ae0dd415d","id_kelas_kuliah":"50c144cb-28da-43e8-8ae8-158399bcd4a6","check":{"ref_nilai":true}}
updateNilai {"nim":"P17335121003","nama_mahasiswa":"AMELIA PUTRI MAULIDA","kode_mata_kuliah":"F202","id_semester":"20211","nama_kelas_kuliah":"01.01","nilai_huruf":"B","nilai_indeks":3,"nilai_angka":"50","kode_prodi":"48401","nama_program_studi":"D3 Farmasi","id_prodi":"9da791d6-e543-4999-82e9-e3b77f4dc776","id_matkul":"f4fb5ab0-1455-4292-a71b-b81932d98e98","id_registrasi_mahasiswa":"5a769a16-cd4d-4471-a800-9d495274b0ae","id_kelas_kuliah":"50c144cb-28da-43e8-8ae8-158399bcd4a6","check":{"ref_nilai":true}}

OF Request

{"act":"GetProdi","filter":"1=1  AND TRIM(kode_program_studi) = '48401'","limit":1,"offset":0}
{"act":"GetProdi","filter":"1=1  AND TRIM(kode_program_studi) = '48401'","limit":1,"offset":0}
{"act":"GetProdi","filter":"1=1  AND TRIM(kode_program_studi) = '48401'","limit":1,"offset":0}
{"act":"GetListMataKuliah","filter":"1=1  AND id_prodi = '9da791d6-e543-4999-82e9-e3b77f4dc776'","limit":1,"offset":0}
{"act":"GetListMataKuliah","filter":"1=1  AND id_prodi = '9da791d6-e543-4999-82e9-e3b77f4dc776'","limit":1,"offset":0}
{"act":"GetListMataKuliah","filter":"1=1  AND id_prodi = '9da791d6-e543-4999-82e9-e3b77f4dc776'","limit":1,"offset":0}
{"act":"GetListRiwayatPendidikanMahasiswa","filter":"1=1  AND TRIM(nim) = 'P17335121002' AND TRIM(nama_mahasiswa) = TRIM('ALVIA DUZ JANNAH') AND id_prodi = '9da791d6-e543-4999-82e9-e3b77f4dc776'","limit":1,"offset":0}
{"act":"GetListRiwayatPendidikanMahasiswa","filter":"1=1  AND TRIM(nim) = 'P17335121003' AND TRIM(nama_mahasiswa) = TRIM('AMELIA PUTRI MAULIDA') AND id_prodi = '9da791d6-e543-4999-82e9-e3b77f4dc776'","limit":1,"offset":0}
{"act":"GetListRiwayatPendidikanMahasiswa","filter":"1=1  AND TRIM(nim) = 'P17335121001' AND TRIM(nama_mahasiswa) = TRIM('ADIT ANDRIYANNTO') AND id_prodi = '9da791d6-e543-4999-82e9-e3b77f4dc776'","limit":1,"offset":0}
{"act":"GetListKelasKuliah","filter":"1=1  AND TRIM(nama_kelas_kuliah) = TRIM('01.01') AND TRIM(kode_mata_kuliah) = TRIM('F202') AND id_semester = '20211' AND id_prodi = '9da791d6-e543-4999-82e9-e3b77f4dc776'","limit":1,"offset":0}
{"act":"GetListKelasKuliah","filter":"1=1  AND TRIM(nama_kelas_kuliah) = TRIM('01.01') AND TRIM(kode_mata_kuliah) = TRIM('F202') AND id_semester = '20211' AND id_prodi = '9da791d6-e543-4999-82e9-e3b77f4dc776'","limit":1,"offset":0}
{"act":"GetListKelasKuliah","filter":"1=1  AND TRIM(nama_kelas_kuliah) = TRIM('01.01') AND TRIM(kode_mata_kuliah) = TRIM('F202') AND id_semester = '20211' AND id_prodi = '9da791d6-e543-4999-82e9-e3b77f4dc776'","limit":1,"offset":0}
{"act":"UpdateNilaiPerkuliahanKelas","key":{"id_registrasi_mahasiswa":"e465ba50-2157-437e-90e7-4e0ae0dd415d","id_kelas_kuliah":"50c144cb-28da-43e8-8ae8-158399bcd4a6"},"record":{"nilai_angka":"50","nilai_indeks":2,"nilai_huruf":"C+"}}
{"act":"UpdateNilaiPerkuliahanKelas","key":{"id_registrasi_mahasiswa":"1da4e078-05e9-4258-bc20-c0cfc8c3b287","id_kelas_kuliah":"50c144cb-28da-43e8-8ae8-158399bcd4a6"},"record":{"nilai_angka":"50","nilai_indeks":4,"nilai_huruf":"A+"}}
{"act":"UpdateNilaiPerkuliahanKelas","key":{"id_registrasi_mahasiswa":"5a769a16-cd4d-4471-a800-9d495274b0ae","id_kelas_kuliah":"50c144cb-28da-43e8-8ae8-158399bcd4a6"},"record":{"nilai_angka":"50","nilai_indeks":3,"nilai_huruf":"B"}}