• Tidak ada hasil yang ditemukan

Rancang Bangun API Modul Warehouse Sistem ERP dengan Framework Java Spring Boot pada PT Cranium Royal Aditama

N/A
N/A
Protected

Academic year: 2024

Membagikan "Rancang Bangun API Modul Warehouse Sistem ERP dengan Framework Java Spring Boot pada PT Cranium Royal Aditama"

Copied!
71
0
0

Teks penuh

(1)

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

(2)

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.

(3)

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

(4)

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

(5)

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,

(6)

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

(7)

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.

(8)

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.

(9)

Gambar 3.2. ERDescriptionExpedition

Gambar 3.3. ERDescriptionSelling Activity

(10)

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.

(11)

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.

(12)

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.

(13)

’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.

(14)

Gambar 3.10.Use Case DiagramModul Warehouse

(15)

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.

(16)

Gambar 3.11.Activity Diagram method CreateExpedition

(17)

Gambar 3.12.Activity Diagram method CreateSelling Activity

(18)

Gambar 3.13.Activity Diagram method CreateFinished Expedition

(19)

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

(20)

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

(21)

Gambar 3.16.Activity Diagram method UpdateSelling Activity

(22)

Gambar 3.17.Activity Diagram method UpdateFinished Expedition

(23)

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

(24)

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

(25)

Gambar 3.20.Activity Diagram method ReadSelling Activity

(26)

Gambar 3.21.Activity Diagram method ReadFinished Expedition

(27)

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,

(28)

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

(29)

Gambar 3.24.Activity Diagram method PagingSelling Activity

(30)

Gambar 3.25.Activity Diagram method PagingFinished Expedition

(31)

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.

(32)

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

(33)

Gambar 3.28.Activity Diagram method DeleteSelling Activity

(34)

Gambar 3.29.Activity Diagram method DeleteFinished Expedition

(35)

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

(36)

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

(37)

Gambar 3.32.Sequence Diagram method CreateSelling Activity

(38)

Gambar 3.33.Sequence Diagram method CreateFinished Expedition

(39)

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.

(40)

Gambar 3.35.Sequence Diagram method UpdateExpedition

(41)

Gambar 3.36.Sequence Diagram method UpdateSelling Activity

(42)

Gambar 3.37.Sequence Diagram method UpdateFinished Expedition

(43)

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.

(44)

Gambar 3.39.Sequence Diagram method ReadExpedition

(45)

Gambar 3.40.Sequence Diagram method ReadSelling Activity

(46)

Gambar 3.41.Sequence Diagram method ReadFinished Expedition

(47)

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.

(48)

Gambar 3.43.Sequence Diagram method PagingExpedition

(49)

Gambar 3.44.Sequence Diagram method PagingSelling Activity

(50)

Gambar 3.45.Sequence Diagram method PagingFinished Expedition

(51)

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.

(52)

Gambar 3.47.Sequence Diagram method Delete Expedition

(53)

Gambar 3.48.Sequence Diagram method DeleteSelling Activity

(54)

Gambar 3.49.Sequence Diagram method DeleteFinished Expedition

(55)

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

(56)

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

(57)

Gambar 3.52.Class Diagram EntityFinished Expedition dan Finished Selling Activity

(58)

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.

(59)

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.

(60)

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.

(61)

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

(62)

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.

(63)

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.

(64)

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.

(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.

(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.

(67)

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.

(68)

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.

(69)

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.

(70)

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.

(71)

• 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.

Gambar

Gambar 3.6. ER Description Finished Expedition
Gambar 3.10. Use Case Diagram Modul Warehouse
Gambar 3.11. Activity Diagram method Create Expedition
Gambar 3.12. Activity Diagram method Create Selling Activity
+7

Referensi

Dokumen terkait