BAB 3
PELAKSANAAN KERJA MAGANG
3.1 Kedudukan dan Koordinasi
Selama magang berlangsung, pekerjaan dilakukan dengan posisi sebagai seorang Full Stack Developers. Kerja magang dibimbing oleh seorang supervisor yaitu Bapak Sugito sebagai Team Leader, System Analytic and Maintenance serta Bapak Erpan yang membantu untuk melakukan training terkait proses bisnis dari sistem ERP.
Koordinasi dari kerja magang dilakukan menggunakan Github sebagai perantara untuk mengirimkan dan mengambil proyek yang dikerjakan. Github yang dibuat memiliki 2 (dua)branch, yaitu Master dan Development. Environment lokal yang digunakan adalah Intellij Idea karena di dalamnya sudah terintegrasi Git beserta Spring sehingga memudahkan koordinasi proyek. Pengerjaan proyek dilakukan pada branch Development, sehingga jika ingin melakukan update terhadap proyek pada Intellij Idea maka dilakukanpull daribranch Development.
Progress dari pekerjaan yang sudah dilakukan akan di-commit dan dilakukan push ke branch Development. Setelah melakukan push, harus dilakukan build dari proyek Github dengan bantuan sebuah open source automation server Jenkins.
Jenkins akan melakukan buildpada proyek yang nantinya akan dilakukan analisis terhadap code pada proyek menggunakan SonarQube.
Koordinasi dengan supervisor dapat dilakukan melalui Whatsapp untuk berkomunikasi secara private maupun secara terbuka melalui group chat yang sudah dibuat. Selain itu, koordinasi dengan supervisor juga dapat dilakukan melalui Google Meet jika diperlukan. Koordinasi dengan divisi lain dapat dilakukan melalui group chat Whatsapp yang sudah dibuat untuk berdiskusi ataupun menggunakan Google Meet untuk melakukan rapat antar divisi. Jika pekerjaan dilakukan secara WFO maka tidak perlu menggunakan Whasapp ataupun Google Meet karena meetingdilakukan langsung di tempat secara tatap muka.
3.2 Tugas yang dilakukan
Tugas utama yang diberikan sebagai Full Stack Developer adalah untuk membangun dan merancang sistem ERP dengan konsep modular monolith menggunakan framework Java Spring Boot. Tugas pertama adalah mempelajari
dasar dari Spring Boot, PostgreSQL, penggunaan Intellij IDEA, serta alur proses bisnis dari website demo Cranium. Tugas ini diberikan pada minggu awal kerja magang agar mendapatkan fondasi awal untuk mengembangkan proyek sistem ERP yang akan diberikan. Pembelajaran dilakukan dengan membuat project sederhana seperti pencatatan data siswa dengan framework Spring dan database PostgreSQL pada Intellij IDEA. Pembelajaran proses bisnis dari website demo Cranium dilakukan secara mandiri dengan mencoba melakukan CRUD pada seluruh modul berdasarkan arahan supervisor.
Tugas kedua adalah membuat ERD danEntity Relationship Description(ER Description) pada modul Warehouse. Tabel-tabel dibuat berdasarkan pemahaman masing-masing dari eksplorasi padawebsite demoCranium yang sudah dilakukan.
Setelah membuat ERD dan ERDescriptionsecara mandiri, dilakukan perbandingan tabel yang sudah ada dengan tabel yang terdapat pada sistem lama untuk melakukan penambahan ataupun revisi. Hasil dari tabel yang sudah direvisi akan didiskusikan bersama supervisor untuk melakukan finalisasi.
Tugas ketiga adalah membuat API dan code untuk proses CRUD untuk setiapentitypada modul Warehouse. Sebagai fondasi awal dari sistem ERP, maka setiap entity pada modul Warehouse harus dibuat method create, read, update, dandelete (CRUD) sebagai awalan. Untuk itu diperlukanclass seperticontroller, repository, dan service. Controller berperan untuk menyimpan API yang akan digunakan proses CRUD. Repository berguna untuk menyimpan database query yang akan digunakan untuk berkomunikasi dengan database. Sedangkan service menyimpan dan menjalankan seluruhmethodCRUD pada modul.
Tugas keempat adalah melakukan testing menggunakan Intellij IDEA dan Postman. Setelah membuat API dan method CRUD diperlukan testing untuk mengetahui apakah method sudah dibuat dengan benar. Maka perlu dibuat unit testing pada Intellij IDEA yang mencakup kasus positif (berhasil) dan kasus negatif (gagal) dari semuamethodCRUD. Jikaunit testingberhasil berjalan, maka pengetesan berikutnya dilakukan melalui postman. Melalui postman, dilakukan testingpada setiap API yang dibuat. Selanjutnya dilakukan pengecekan bugpada code yang dibuat dari sonarQube dan memperbaiki bug yang ditemukan untuk dijalankan ulang kembali.
Pelaksanaan kerja magang diuraikan seperti pada Tabel 3.1.
Tabel 3.1. Tabel Kegiatan Kerja Magang tiap Minggu
Minggu Ke - Pekerjaan yang dilakukan
1 Mengikuti training terkait ERP, melakukan instalasi Intellij IDEA, dan mengikuti training terkait Java Spring Boot bersama supervisor.
2 Mengikuti training terkait modul-modul yang ada pada ERP serta demo website Cranium ERP. Mempelajari dasar-dasar dan implementasi Spring Boot sepertibeans,dependency injection, dan application context.
3 Mempelajari konsep Spring Security khususnya pada bagian implementasi JWT Authentication dan Authorisation, konsep DTO serta mapping antara Entity dan DTO pada Spring Boot. Mempelajari table relationship untuk diimplementasikan pada Entity serta membuat program CRUD sederhana sebagai pembelajaran.
4 Pembagian modul kerja per kelompok, melakukan compile pada code yang diberikan supervisor untuk dikembangkan khususnya padacloningmodul Sales and Distribution, dan melakukan testing API dari code yang diberikan melalui Postman.
5 Melakukan revisi dari method CRUD yang dibuat pada clone modul Sales and Distribution sesuai dengan masukan dari supervisor, seperti pengubahan method mapping update dari put menjadi patch serta melakukan testing pada autentikasi dan validasi yang dibuat. Memulai pembuatan diagram ERD untuk modul Sales and Distribution khususnya pada modul Warehouse yang dibuat sesuai dengan website demo ERP.
6 Implementasi code baru dan memperbaiki error yang ditemukan saat melakukan merge dengan modul yang sudah dibuat lalu dilakukan test API melalui Postman. Setelah melakukan merge dan penambahan method pada modul Warehouse yang sudah diduplikasi, dilakukan revisi setelah supervisor meninjau code yang sudah dibuat.
Lanjut pada halaman berikutnya
Minggu Ke - Pekerjaan yang dilakukan
7 Melanjutkan pembuatan ERD dari modul warehouse untuk tabel lainnya beserta ER Description yang dibuat untuk mendeskripsikan detail dari isi tabel per modul, seperti field, data type, dan keterangan lainnya. Melakukan push dari modul Sales and Distribution yang sudah dibuat ke github ERP serta memulai Database Migration untuk modul warehouse.
8 Menyelesaikan perbaikan ERD, ER Description, dan Database Migration dari revisi yang sudah disampaikan sebelumnya dan memastikan Database Migration berhasil masuk ke dalam postgresql. Melakukan perbandingan terhadap struktur database yang sudah dibuat dengan strukturdatabase yang digunakan oleh sistem lama lalu melakukan revisi berdasarkan perbandingan yang dilakukan.
9 Melanjutkan revisi terhadap ER Description dan ERD setelah itu akan dilakukanDatabase Migrationsesuai dengan ER Description yang sudah selesai diperbaiki.
10 Membuat DTO serta methodread,create,pagingdanupdatepada service bagian modul Selling Activity. Menambahkan autentikasi sederhana untuk modul Warehouse sub modul Selling Activity.
11 Menambahkan validasi pada sub modul Selling Activity, serta membuat unittestuntuk methodcreate,read, update, paging, dan delete.
12 Memperbaiki error yang ditemukan pada unit test sub modul Selling Activity. Memulai pembuatan sub modul baru dari modul Warehouse, yaitu sub modul Finished Selling Activity. Melakukan pembuatan DTO dan Service serta method create, read, update, dan delete untuk sub modul Finished Selling Activity.
13 Menambahkan validasi dan autorisasi pada sub modul Finished Selling Activity serta membuatunit testuntuk semua method pada Finished Selling Activity.
14 Memulai pembuatan DTO dan service pada sub modul Expedition serta method create dan read, serta menjalani libur idul fitri.
Lanjut pada halaman berikutnya
Minggu Ke - Pekerjaan yang dilakukan
15 Membuat method update, paging, dan delete untuk sub modul Expedition. Membuat unit test untuk semua method serta menambahkan autorisasi dan validasi untuk sub modul Expedition.
16 Memperbaiki error yang ditemukan, memperbaiki revisi pada package dan penamaan tabel serta field pada database migration, serta memperbaiki error pada unit test untuk sub modul Expedition.
17 Membuat DTO, service, method create, read, update, paging, dan deleteuntuk sub modul Finished Expedition serta pembuatan unit test untuk semua method. Melakukan revisi pada service, controller, dan repository untuk semua sub-modul yang sudah dibuat sebelumnya.
18 Memperbaikibugyang ditemukan melalui sonarqube untuk modul Warehouse pada sub modul Selling Activity dan Finished Selling Activity.
19 Memperbaiki bug yang ditemukan pada modul Warehouse pada sub modul Expedition dan Finished Expedition.
20 Membantu proses pembuatan modul Master untuk tabel customer type pada bagian DTO serta Service yang berisikan controller,mapper,entity, danservice method.
3.3 Uraian Pelaksanaan Magang
3.3.1 SoftwaredanHardwareyang digunakan A. Software
Berikut beberapasoftwareyang digunakan selama mengembangkan sistem ERP.
1. Intellij IDEA
Intellij IDEA merupakan sebuahIntegrated Development Environment(IDE) yang dikembangkan oleh JetBrains yang didesain untuk mengembangkan perangkat lunak dengan menggunakan bahasa pemrograman Java, Kotlin,
ataupun bahasa pemrograman lainnya. Selama pengerjaan magang, Intellij IDEA digunakan sebagai IDE utama untuk mengembangkan proyek sistem ERP.
2. pgAdmin 4
pgAdmin 4 merupakan sebuah software open-source administration and development platform untuk PostgreSQL yang biasanya digunakan untuk mengembangkan relational database management system (RDBMS).
Softwareini didesain agar dapat menyediakangraphical user interface(GUI) untuk mengelola dan berinteraksi dengan database PostgreSQL. Selama pengerjaan magang, pgAdmin 4 digunakan untuk membuat, mengubah, serta menghapus tabel ataupundatabaseyang dibuat.
3. Postman
Postman merupakan software API development dan sebuah testing tool untuk membantu memudahkan keperluan interaksi dengan API. Pada pengembangan sistem ERP, Postman digunakan untuk melakukan tes terhadap API dari program yang sudah dibuat.
4. Jenkins
Jenkins merupakan sebuah open-source platform yang berperan sebagai automation serveryang membantu dalam mempersingkat prosescontinuous integration and delivery (CI/CD) dalam mengembangkan sebuah perangkat lunak. Pada pengembangan sistem ERP, Jenkins digunakan untuk membantu dalam prosesbuilding,testing, dan simulasi ketikasoftwaresudah dirilis.
5. SonarQube
SonarQube merupakan sebuah open-source platform untuk mengelola kualitas daricode yang dibuat pada sebuah perangkat lunak secara berkala.
SonarQube dapat mengidentifikasi masalah sepertibugpadacodeyang sudah dibuat serta memastikan pemeliharaan dari keseluruhan proyek perangkat lunak.
6. Github
Github merupakan sebuah web-based platform untuk melakukan version control serta memudahkan dalam mengembangkan software yang sifatnya
kolaboratif. Pada pengembangan sistem ERP, Github dimanfaatkan untuk memudahkan kolaborasi antar intern dalam pembuatan proyek sistem ERP.
B. Hardware
Hardwareyang digunakan selama pengembangan sistem ERP adalah laptop ASUS TUF Gaming A15 dengan spesifikasi berikut.
• Processor: AMD Ryzen 5 4600H
• Ram: 8 GB
• VGA: NVIDIA GeForce GTX 1650
• Resolusi monitor: 1920 x 1080
• Ukuran monitor: 15”
• Storage: 512GB SSD
• OS: Windows 11
3.3.2 User Requirement
Berdasarkan rancangan sistem ERP yang dibuat, user requirement yang ditentukan untuk modul Warehouse ialah sebagai berikut.
1. Divisi pergudangan dapat melakukan proses CRUD untuk proses transaksi yang terjadi melalui menu Sales Activity.
2. Divisi ekspedisi dapat melakukan proses CRUD untuk proses pengiriman pada suatu transaksi melalui menu Expedition.
3. Sistem harus memungkinkan adanya proses dokumentasi dari proses transaksi dan proses ekspedisi yang terselesaikan pada modul Finished Sales Activity dan Finished Expedition.
4. Sistem harus dapat mencegah terjadinya kesalahaninput datadari pengguna.
5. Sistem harus dapat mencegah adanya pengguna yang tidak memiliki autorisasi untuk mengakses modul Warehouse.
3.3.3 Database Schema
Gambaran besar dariDatabase Schemabeserta relasi antar tabel pada modul Warehouse dapat dilihat pada Gambar 3.1
Gambar 3.1. Gambaran relasiDatabase SchemaERD modul Warehouse
BerdasarkanDatabase Schemadi atas, relasi antaraheaderdan detail adalah one to many yang berarti setiap header dapat memiliki detail lebih dari 1 (satu) tetapi setiap detail hanya dapat memiliki 1 (satu) header. Tabel Expedition dan Finished Expedition memiliki relasione to oneyang berarti tiap Expedition hanya dapat memiliki 1 (satu) Finished Expedition dan sebaliknya. Untuk Selling Activity dan Finished Selling Activity juga berlaku relasione to one.
Entity Relationship Description (ER Description) bertujuan untuk mendeskripsikan Database Schema yang sudah dibuat agar lebih detail. ER Description untuk tabel expedition dan selling activity dapat dilihat pada Gambar 3.2 dan Gambar 3.3.
Gambar 3.2. ERDescriptionExpedition
Gambar 3.3. ERDescriptionSelling Activity
ERDescriptionuntuk tabel detail dari expedition dan selling activity dapat dilihat pada Gambar 3.4 dan Gambar 3.5.
Gambar 3.4. ERDescriptionExpedition Detail
Gambar 3.5. ERDescriptionSelling Activity Detail
ER Description untuk tabel finished dari expedition dan selling activity dapat dilihat pada Gambar 3.6 dan Gambar 3.7.
Gambar 3.6. ERDescriptionFinished Expedition
Gambar 3.7. ERDescriptionFinished Selling Activity
ER Description untuk tabel detail dari finished expedition dan finished selling activity dapat dilihat pada Gambar 3.8 dan Gambar 3.9.
Gambar 3.8. ERDescriptionFinished Expedition Detail
Gambar 3.9. ERDescriptionFinished Selling Activity Detail
Berdasarkan gambar ER Description di atas, ’Column Name’ merupakan kolom yang berisikan nama dari atribut yang terdapat pada tabel yang dibuat.
’Column Type’ berisikan informasi mengenai tipe data masing-masing atribut.
’Length’ merupakan kolom yang mendefinisikan panjang data yang berkaitan.
’Null’ merupakan kolom yang menentukan apakah suatu atribut dapat berisikan data null atau tidak. ’Default’ merupakan kolom yang menentukan nilai awal dari suatu atribut yang akan didefinisikan. Kolom ’PK’ menentukan atribut mana yang akan menjadi primary key. Kolom ’Uniq’ menentukan atribut mana yang akan memiliki sifat data unik. ’IX’ merupakan kolom yang menunjukkan apakah terdapatindex yang perlu dibuat dari suatu atribut. Kolom ’Description’ berisikan keterangan singkat yang bertujuan untuk memperjelas informasi dari suatu atribut, seperti menunjukkan atribut yang memilikiforeign key(FK).
3.3.4 UML Diagram A. Use Case Diagram
Use Case Diagram merupakan salah satu diagram berorientasi objek yang digunakan sebagai metodologi dalam sebuah sistem analisis untuk melakukan identifikasi, klarifikasi, dan mengorganisasi kebutuhan sistem yang dikembangkan.
Use case dapat menunjukan bagaimana sistem berinteraksi dengan entitas di luar sistem [5]. Oleh karena itu, untuk menggambarkan interaksi antara entitas pergudangan serta ekspedisi dalam berinteraksi dengan sistem ERP khususnya pada modul Warehouse secara lebih jelas dapat dilihat dari Use Case Diagram pada Gambar 3.10.
Gambar 3.10.Use Case DiagramModul Warehouse
Pergudangan memiliki akses untuk modul Selling Activity dan Finished Activity, sedangkan Ekspedisi memiliki akses untuk modul Expedition dan Finished Expedition. Aktor dapat langsung menggunakan fitur create, paging, dan read.
Fitur delete dan update dapat diakses jika aktor mengakses fitur read terlebih dahulu. Fitur read itu sendiri sebelumnya sudah melalui proses paging. Untuk fiturcreatepada modul Finished akan secara otomatis melakukanreadpada modul yang berkaitan untuk mendapatkan informasi terlebih dahulu sebelum melakukan createFinished.
B. Activity Diagram
Activity Diagram bertujuan untuk membuat model yang menggambarkan alur dari aksi-aksi yang dilakukan dalam sebuah aktivitas dari sistem. Activity diagramdapat digunakan untuk menjabarkanUse Casesecara lebih detail ataupun secara independen. Activity diagram berfokus untuk menunjukkan aksi dalam eksekusi sistem dan kondisi yang dapat mempengaruhi alur kerja sistem [6].
Dalam proses create sistem ERP, aktor akan masuk ke dalam sistem ERP dengan masuk ke dalam sub-menu yang diinginkan dari menu Warehouse.
Aktor menekan tombol create, memberikan input pada form yang diberikan, lalu menekan tombol save untuk menyimpan data. Setelah menerima input, sistem akan melakukan pengecekan pada user permission dan validasi input data yang diberikan. Setelah melakukan pengecekan permission dan validasi data, sistem akan menjalankan proses untuk method createagar dapat membuat data ke dalam database.
Activity diagram untuk method create untuk modul expedition, selling activity, finished expedition, dan finished selling activity dapat dilihat pada Gambar 3.11, 3.12, 3.13, 3.14.
Gambar 3.11.Activity Diagram method CreateExpedition
Gambar 3.12.Activity Diagram method CreateSelling Activity
Gambar 3.13.Activity Diagram method CreateFinished Expedition
Gambar 3.14.Activity Diagram method CreateFinished Selling Activity
Untuk melakukan update, aktor harus memilih sub menu yang diinginkan dari menu warehouse. Aktor memilih salah satu item yang ingin diubah dari list item yang diberikan. Sistem akan menampilkan detail item yang dipilih dan menyediakan form untuk melakukan perubahan pada data yang dipilih. Aktor mengisi form yang ingin diubah dan menekan tombol Save untuk menyimpan
perubahan pada data. Setelah menerimainput datayang ingin diubah, sistem akan melakukan pengecekanpermissiondan validasi data lalu menyimpan perubahan ke dalam tabeldatabaseyang berkaitan. Activity diagramuntukmethod updateuntuk modul expedition, selling activity, finished expedition, dan finished selling activity dapat dilihat pada Gambar 3.15, 3.16, 3.17, 3.18.
Gambar 3.15.Activity Diagram method UpdateExpedition
Gambar 3.16.Activity Diagram method UpdateSelling Activity
Gambar 3.17.Activity Diagram method UpdateFinished Expedition
Gambar 3.18.Activity Diagram method UpdateFinished Selling Activity
Untuk melakukan read pada data item yang diinginkan, aktor harus mengakses sub menu dari modul Warehouse. Setelah mengakses sub menu, aktor akan diperlihatkan list dari datasub menu yang diinginkan dan untuk mengakses salah satuitem, aktor harus menekan tombolreaddariitem list yang diperlihatkan.
Permission dari aktor akan dicek oleh sistem dan jika aktor memiliki permission
maka item yang dipilih akan ditampilkan.
Activity diagram untuk method read untuk modul expedition, selling activity, finished expedition, dan finished selling activity dapat dilihat pada Gambar 3.19, 3.20, 3.21, 3.22.
Gambar 3.19.Activity Diagram method ReadExpedition
Gambar 3.20.Activity Diagram method ReadSelling Activity
Gambar 3.21.Activity Diagram method ReadFinished Expedition
Gambar 3.22.Activity Diagram method ReadFinished Selling Activity
Method paging akan secara otomatis berjalan saat aktor mengakses salah satu sub menu dari modul Warehouse. Setelah aktor mengakses sub menu, sistem akan menerima request untuk menampilkan seluruh data sub menu dalam bentuk listjika aktor tersebut memilikipermission.
Activity diagram untuk method paging untuk modul expedition,
selling activity, finished expedition, dan finished selling activity dapat dilihat pada Gambar 3.23, 3.24, 3.25, 3.26.
Gambar 3.23.Activity Diagram method PagingExpedition
Gambar 3.24.Activity Diagram method PagingSelling Activity
Gambar 3.25.Activity Diagram method PagingFinished Expedition
Gambar 3.26.Activity Diagram method PagingFinished Selling Activity
Saat akan melakukan delete, aktor harus menentukan untuk menghapus header atau hanya menghapus detail dari header yang dipilih. Saat menerima request untuk melakukandelete, sistem akan mengecek autorisasi dari aktor. Jika headerdihapus maka seluruh detail headertersebut juga akan terhapus sedangkan jika hanya detail yang dihapus makaheadertidak akan terhapus.
Activity diagram untuk method delete untuk modul expedition, selling activity, finished expedition, dan finished selling activity dapat dilihat pada Gambar 3.27, 3.28, 3.29, 3.30.
Gambar 3.27.Activity Diagram method DeleteExpedition
Gambar 3.28.Activity Diagram method DeleteSelling Activity
Gambar 3.29.Activity Diagram method DeleteFinished Expedition
Gambar 3.30.Activity Diagram method DeleteFinished Selling Activity
C. Sequence Diagram
Sequence Diagram digunakan untuk menunjukkan proses interaksi antar objek serta alur berjalannya informasi secara berurutan dalam sebuah sistem.
Sequence diagramitu sendiri dapat menyediakan elemen untuk merepresentasikan
konstruksi control flow dalam code pemrograman sistem yang sudah dibuat [7].
Dengan menggunakan sequence diagram maka penggambaran alur sistem dalam mengeksekusi suatu proses menjadi lebih jelas.
Request untuk melakukan create akan diterima oleh controller dengan parameter objek data input yang nantinya akan memanggil method create dari service. Method create pada service akan mendeklarasikan objek header dan detail untuk diset datanya. Untuk modul finished akan melakukan pengecekan terlebih dahulu terhadap modul yang berperan sebagaiparent apakah datanya ada pada database agar dapat melakukan create. Setelah melakukan set data, objek akan disimpan ke dalam database melalui repository. Sequence diagram untuk method create untuk modul expedition, selling activity, finished expedition, dan finished selling activity dapat dilihat pada Gambar 3.31, 3.32, 3.33, 3.34.
Gambar 3.31.Sequence Diagram method CreateExpedition
Gambar 3.32.Sequence Diagram method CreateSelling Activity
Gambar 3.33.Sequence Diagram method CreateFinished Expedition
Gambar 3.34.Sequence Diagram method CreateFinished Selling Activity
Proses update akan diterima oleh controller dengan parameter objek dan id data yang akan diubah. Controller akan memanggilservice untuk menjalankan methodupdate. Serviceakan mendeklarasikan objek untuk menyimpan perubahan data ke dalam database, tetapi sebelum menyimpan service akan melakukan pengecekan ke database apakah data yang ingin diubah ada atau tidak. Input data yang akan diubah akan diset ke dalam objek yang sudah disiapkan, setelah itu perubahan data akan disimpan ke dalam database melaluirepository.
Sequence diagram untuk method update untuk modul expedition, selling activity, finished expedition, dan finished selling activity dapat dilihat pada Gambar 3.35, 3.36, 3.37, 3.38.
Gambar 3.35.Sequence Diagram method UpdateExpedition
Gambar 3.36.Sequence Diagram method UpdateSelling Activity
Gambar 3.37.Sequence Diagram method UpdateFinished Expedition
Gambar 3.38.Sequence Diagram method UpdateFinished Selling Activity
Request untuk melakukan read akan diterima oleh controller dengan parameter id data yang akan dibaca. Controller akan memanggil service untuk menjalankanmethod read. Servicemelakukan deklarasi objek untuk menampung data yang akan dibaca dari database melalui repository. Data yang dibaca dari databaseakan disimpan pada objek dan akan dikembalikan kepadacontrolleruntuk ditampilkan pada pengguna.
Sequence diagram untuk method read untuk modul expedition, selling activity, finished expedition, dan finished selling activity dapat dilihat pada Gambar 3.39, 3.40, 3.41, 3.42.
Gambar 3.39.Sequence Diagram method ReadExpedition
Gambar 3.40.Sequence Diagram method ReadSelling Activity
Gambar 3.41.Sequence Diagram method ReadFinished Expedition
Gambar 3.42.Sequence Diagram method ReadFinished Selling Activity
Request untuk melakukan paging akan diterima oleh controller dengan parameter objekpageable. Controllerakan memanggilserviceuntuk menjalankan method paging. Service melakukan deklarasi objek page untuk menampung seluruh list data yang akan dibaca dari database melalui repository. Objek yang menampung datapageableakan dikembalikan olehservicekepada pengguna melaluicontroller.
Sequence diagram untuk method paging untuk modul expedition, selling activity, finished expedition, dan finished selling activity dapat dilihat pada Gambar 3.43, 3.44, 3.45, 3.46.
Gambar 3.43.Sequence Diagram method PagingExpedition
Gambar 3.44.Sequence Diagram method PagingSelling Activity
Gambar 3.45.Sequence Diagram method PagingFinished Expedition
Gambar 3.46.Sequence Diagram method PagingFinished Selling Activity
Prosesdeleteakan diterima olehcontroller dengan parameter id data yang akan dihapus. Controller akan memanggil service untuk menjalankan method delete. Service akan mendeklarasikan objek untuk menampung data yang akan dihapus, sebelum menghapus dataserviceakan melakukan pengecekan kedatabase melalui repository apakah data yang akan dihapus ada atau tidak. Penghapusan data akan dilakukan dengan melakukan set pada atribut deleted menjadi truedan disimpan kedatabasesebagai penanda bahwa data sudah dihapus.
Sequence diagram untuk method delete untuk modul expedition, selling activity, finished expedition, dan finished selling activity dapat dilihat pada Gambar 3.47, 3.48, 3.49, 3.50.
Gambar 3.47.Sequence Diagram method Delete Expedition
Gambar 3.48.Sequence Diagram method DeleteSelling Activity
Gambar 3.49.Sequence Diagram method DeleteFinished Expedition
Gambar 3.50.Sequence Diagram method DeleteFinished Selling Activity
D. Class Diagram
Class Diagram bertujuan untuk menunjukan struktur dari model sistem yang sudah dikembangkan. Class diagram menunjukan entitas yang ada dalam suatu sistem secara detail dengan struktur dan relasi yang terjalin dengan entitas lainnya dalam sistem tersebut.Class diagramdapat digunakan sebagai dokumentasi ataupun sebagai representasi pandangan yang lebih maju terkait dengan komunikasi antar entitas [8].
Setiap entity pada sistem ERP terdiri atas header dan juga detail. Pada entity tersebut terdapat berbagai atribut dengan tipe data yang beragam. Class
diagram untukEntitypada modul expedition, selling activity, finished expedition, dan finished selling activity dapat dilihat pada Gambar 3.51, 3.52.
Gambar 3.51.Class Diagram EntityExpedition dan Selling Activity
Gambar 3.52.Class Diagram EntityFinished Expedition dan Finished Selling Activity
Sistem ERP yang dikembangkan memiliki controller yang berguna sebagai perantara terhadap API untuk mengirimkan request melalui path yang dideklarasikan dengan method yang akan dipanggil dari service. Controller memiliki variabelserviceyang dideklarasikan agar dapat memanggilclass service.
Controller pada sistem ERP memiliki untuk method create, read, update, delete, danpaging.
Class diagram untuk Controller pada modul expedition, selling activity, finished expedition, dan finished selling activity dapat dilihat pada Gambar 3.53.
Gambar 3.53.Class Diagram ControllerModul Warehouse
Serviceberguna untuk menjalankan method yang akan dipanggil dan akan dikembalikan melalui controller kepada pengguna. Pada service, diperlukan deklarasi repository untuk menggunakan database query agar dapat mengakses database, deklarasi scope untuk mengecek autorisasi pengguna, serta deklarasi message untuk menampilkan pesan error jika method gagal dijalankan. Service memilikimethod create,read,update,delete,paging, dandetail build.
Class diagram untuk Service pada modul expedition, selling activity, finished expedition, dan finished selling activity dapat dilihat pada Gambar 3.54.
Gambar 3.54.Class Diagram ServiceModul Warehouse
Repository digunakan pada sistem ERP untuk melakukan database query padadatabasePostgreSQL.Repositoryjuga berguna untuk melakukan komunikasi antara sistem dengandatabaseyang akan dipanggil melaluiservice. Methodyang terdapat pada repository yaitu method save untuk menyimpan objek ke dalam database dan method find untuk mencari data dari database yang ditambahkan dengan aturan padaqueryagar dapat mencari data dengan filter yang ditetapkan.
Class diagram untuk Repository pada modul expedition, selling activity, finished expedition, dan finished selling activity dapat dilihat pada Gambar 3.55.
Gambar 3.55.Class Diagram RepositoryModul Warehouse
Berdasarkan class diagram yang sudah dijabarkan, masing-masing dari class diagramtersebut memilikirelationshipantar satu sama lainnya. Relationship antarclass diagramdapat dilihat pada Gambar 3.56.
Gambar 3.56.Relationship Class DiagramModul Warehouse
Pada visualisasi relationship class diagram di atas SellingActivityController, FinishedSellingActivityController, ExpeditionController, dan FinishedExpeditionController memiliki sifatinheritance karena 4 (empat) controller tersebut merupakan subclass yang melakukan extend terhadap WarehouseServiceController. Repositorydengan Entity memiliki
hubungan berupasimple association sedangkan untuk Entityutama dengan Entity finished memiliki hubungan cardinality one to one, contohnya seperti pada SellingActivity dan FinishedSellingActivity. Entity detail memiliki hubungan composition dengan entity header karena jika header dihilangkan makan entity detail juga akan menghilang. Controller memiliki sifat dependency terhadap servicekarena untuk menjalankan fungsi-fungsimethod yang adacontroller perlu memanggilservice, begitu pula denganserviceterhadaprepository.
3.3.5 Implementasi dalam bentuk API
Application Programming Interface (API) merupakan sebuah open-source interface yang dapat dimanfaatkan untuk menerima data yang akan masuk, memberikan timestamps dan memberikan output kepada manusia dan mesin melalui suatu sistem [9]. Sedangkan Representational State Transfer(REST) API merupakan salah satu versi API yang menggunakan gaya arsitektur REST yang dimanfaatkan untuk melakukan komunikasi antara client dan server [10]. REST API yang sudah dibuat akan digunakan untuk melakukan pengetesan terhadap sistem ERP yang sudah dikembangkan dengan menggunakan Postman.
Sebelum menjalankan pengetesan untuk tiap method pada modul Warehouse, diperlukan login dan mendapatkan Json Web Token (JWT) agar mendapatkan autentikasi untuk mengaksesmethod. Variabel cranium erp url dapat diisi pada bagian environment Postman.Bodyyang dikirimkan untuk mendapatkan JWT adalah username dan password yang sudah terdaftar pada sistem. Untuk mendapatkan token dapat melaluipathAPI pada Gambar 3.57.
Gambar 3.57. Autentikasi menggunakan JWT
JWT yang sudah digenerate sudah diatur oleh sistem agar kedaluwarsa dalam 24 jam. Setelah mendapatkan JWT dariresponsePostman, JWT harus disalin dan diisi pada environment pada variabel cranium erp token seperti pada Gambar 3.58.
Gambar 3.58. Memasukkan JWT ke dalamEnvironmentPostman
Setelah mengisi environment dengan JWT yang sudah didapatkan, maka variabel cranium erp token maka untuk mendapatkan autorisasi perlu mendeklarasikan variabel cranium erp token padaTokenseperti pada Gambar 3.59.
Gambar 3.59. Deklarasi variabeltoken
Jika pengguna tidak memiliki JWT atau tidak memiliki permission yang sesuai untuk mengakses API yang diinginkan maka akan mendapatkan response 401Unauthorizedseperti pada Gambar 3.60.
Gambar 3.60.Responsejika autentikasi gagal
Untuk melakukan pengetesan pada sistem ERP maka diperlukanpathAPI untuk mengakses tiap method dari modul yang diinginkan. Path API terdiri dari variabel cranium erp url sebagai base url, warehouse-service sebagaipath service dari nama modul ’warehouse’, serta ’expedition’ sebagaipathdari submodul yang ingin diakses. Path API untuk method Read, Update, Paging, dan Delete dapat dilihat pada Gambar 3.61, 3.62, 3.63, 3.64, 3.65.
Gambar 3.61. APImethod Create header
Gambar 3.62. APImethod Read header
Gambar 3.63. APImethod Update header
Gambar 3.64. APImethod Paging header
Gambar 3.65. APImethod Delete header
Ketika proses menjalankan method berhasil maka akan mendapatkan response200 OK besertabodyjson yang dikirimkan sesuai dengan data pada objek.
Contoh jika proses read berhasil dilakukan dapat dilihat pada Gambar 3.66.
Gambar 3.66.Responsesaatmethod Readberhasil
Sedangkan jika proses gagal akan mendapatkan response 4xx yang akan bervariasi terhadap jenis error yang terjadi. Contoh error 404 Not Found saat berusaha untuk melakukan read pada Expedition dengan id 10 yang tidak ada pada database dapat dilihat pada Gambar 3.67.
Gambar 3.67.Responsesaatmethod Readgagal
Pada method create body yang dikirimkan berupa json yang isinya sesuai dengan atribut yang ingin dibuat. Jika berhasil maka response 201 Created akan didapatkan sertabody objectyang sudah dibuat seperti pada Gambar 3.68.
Gambar 3.68.Responsesaatmethod Createberhasil
Jika proses creategagal karena terdapat salah satu atribut yang tidak valid maka akan didapatkan response 400Bad Requestseperti pada Gambar 3.69.
Gambar 3.69.Responsesaatmethod Creategagal
Method updatememilikiresponseyang mirip sepertimethod create. Proses method update berhasil dan gagal denganresponse409Conflictjika versiontidak sesuai dapat dilihat pada Gambar 3.70 dan Gambar 3.71.
Gambar 3.70.Responsesaatmethod Updateberhasil
Gambar 3.71.Responsesaatmethod Updategagal
Method paging akan menerima parameter pageable yang dapat diset pada bagian Params pada postman, dalam percobaan API dilakukanpagedengan value 0 (nol) dansizedenganvalue2 (dua). Berikutresponsesaatmethod pagingberjalan pada Gambar 3.72, 3.73.
Gambar 3.72.Responsesaatmethod Pagingberhasil
Gambar 3.73.Responsesaatmethod Pagingberhasil
Method deletememerlukanpathAPI dengan id dari data yang akan dihapus.
Saat dilakukan delete, response body yang akan diberikan berisikan objek yang dihapus dengan atributdeleted bernilai true. Berikutresponse jika method delete berhasil dan gagal pada Gambar 3.74 dan Gambar 3.75.
Gambar 3.74.Responsesaatmethod Deleteberhasil
Gambar 3.75.Responsesaatmethod Deletegagal
3.4 Kendala dan Solusi yang Ditemukan
Berdasarkan kerja magang yang dilakukan, terdapat beberapa kendala yang ditemukan, seperti:
• Kesulitan pada penggunaan Visual Studio Code sebagai IDE untuk mengembangkan proyek sistem ERP karena harus mengintegrasikan plugin seperti Spring dan Postgres secara manual. Pada Visual Studio Code juga ditemukan kesulitan dalam mengorganisirfile source codeyang dibuat.
• Kesulitan mengetahui alur dari proses bisnis baik secara keseluruhan maupun secara spesifik pada modul Warehouse. Alur proses bisnis perlu diketahui agar dapat mengidentifikasi relasi antar tabel yang dibuat.
• Kesulitan melakukan koordinasi dengan anggota kelompok dan dengan kelompok lainnya karena saat akan melakukan merge sering terjadi konflik dalamsource code.
Berdasarkan kendala-kendala yang dihadapi selama melakukan kerja magang, berikut merupakan solusi-solusi yang ditemukan untuk mengatasinya.
• Mengganti IDE dari Visual Studio Code menjadi Intellij IDEA. Intellij IDEA memudahkan dalam integrasiframework Spring, mengeloladatabase Postgres, serta mengorganisir file source code yang dikembangkan secara terstruktur dan rapi.
• Mengakses website demo dari sistem ERP yang sudah dibuat untuk melakukan eksplorasi mandiri serta mengikuti training dengan supervisor untuk mendapatkan pemahaman yang lebih mendalam terkait alur proses bisnis sistem ERP.
• Memanfaatkan Github sebagai version control dari source code yang dibuat serta berkomunikasi melalui Whatsapp sehingga meminimalisir kemungkinan terjadinya konflik dan memudahkan koordinasi antar anggota maupun antar kelompok.