66
Bab IV
Implementasi Domain
Pada implementasi domain framework Penjadwalan akan dilakukan implementasi terhadap frozen-spot, dan DSL dari framework Penjadwalan.
IV.1 Lingkungan Implementasi
Lingkungan implementasi terdiri dari lingkungan perangkat keras dan lingkungan perangkat lunak yang digunakan dalam pengembangan sistem. Lingkungan perangkat keras digunakan untuk keseluruhan sistem adalah sebagai berikut : 1. Processor Intel Pentium 4 1.70 GHz
2. RAM 512 MB.
Sedangkan lingkungan perangkat lunak yang digunakan dalam pengembangan sistem adalah sebagai berikut:
1. Sistem Operasi Windows XP 2. Bahasa Pemrograman Java versi 1.5 3. IDE Eclispe Ganymede
IV.2 Implementasi Frozen-spot dan Hot-spot
Frozen-spot dan hot-spot diimplementasikan dengan bahasa pemograman Java
dengan menggunakan IDE Eclipse Ganymede. Dari hasil perancangan, implementasi frozen-spot dan hot-spot framework dijabarkan dalam kelas-kelas Java dan dibagi kedalam beberapa paket sebagai berikut :
67 Tabel IV.1 Kelas-kelas implementasi framework
No. Paket Kelas (.java) Keterangan
1. org.jannia.schedulingframework Context Ini adalah kelas yang berisi konteks dari framework. Melalui kelas ini kita dapat mengakses properti-properti framework seperti Alpha, Beta, Gamma, Job, Algortihm dan Sequencer. SchedulingFramework Kelas ini adalah kelas yang digunakan oleh pengguna untuk
menginisisiasi framework. Pengguna menggunakan framework ini dengan menginstanisasi kelas ini dengan parameter file DSL.
2. org.jannia.schedulingframework. enums
AlgorithmListEnum Enum yang berisi tipe-tipe algoritma seperti Lawler Algortihm, Moore Algorithm dsb.
JobTypeEnum Enum yang berisi tipe-tipe job yaitu Mono operation dan multi operation.
OperationTypeEnum Enum yang berisi tipe-tipe operation yaitu preemptable dan non-preemptable.
PrecedenceTypeEnum Enum yang berisi tipe-tipe precedence seperti chains, tree, dan sp-graph.
SchedulingTypeEnum Enum yang berisi tipe-tipe penjadwalan seperti single machine, parallel machine, flowshop, dll.
SequencerListEnum Enum yang berisi tipe-tipe sequencer seperti processing time sequencer, release time sequencer, dll.
68 Tabel IV.1 Kelas-kelas implementasi framework (lanjutan)
No. Paket Kelas (.java) Keterangan
3. org.jannia.schedulingframework. exception
ExecutionErrorException Tipe exception yang dilemparkan saat terjadi kesalahan pada saat eksekusi framework.
ParseErrorException Tipe exception yang dilemparkan saat terjadi kesalahan pada saat parsing DSL.
WeaveErrorException Tipe exception yang dilemparkan saat terjadi kesalahan pada saat proses weave framework.
4. org.jannia.schedulingframework. kernel
AlgorithmCoordinator Kelas yang memiliki template method untuk hot-spot algortima.
JobCoordinator Kelas yang memiliki template method untuk hot-spot job. ModelCoordinator Kelas yang memiliki template method untuk hot-spot alpha,
beta dan gamma.
SequenceCoordinator Kelas yang memiliki template method untuk hot-spot sequencer.
5. org.jannia.schedulingframework. kernel.components
CampbellAlgorithmComponent Kelas implementasi untuk komponen algortima Campbell. ChainPrecedenceComponent Kelas implementasi untuk komponen precedence bertipe
chain.
FlowshopComponent Kelas implementasi untuk komponen tipe penjadwalan flowshop.
IdenticalParallelMachineComponent Kelas implementasi untuk komponen tipe penjadwalan dengan identical parallel machine.
69 Tabel IV.1 Kelas-kelas implementasi framework (lanjutan)
No. Paket Kelas (.java) Keterangan
JobshopComponent Kelas implementasi untuk komponen tipe penjadwalan jobshop.
LawlerAlgorithmComponent Kelas implementasi untuk komponen algortima Lawler. MinimaxCriterionComponent Kelas implementasi untuk komponen kriteria optimasi
minimax.
MixedshopComponent Kelas implementasi untuk komponen tipe penjadwalan mixedshop.
MooreAlgorithmComponent Kelas implementasi untuk komponen algortima Moore.
OpenshopComponent Kelas implementasi untuk komponen tipe penjadwalan openshop.
ProcessingTimeSequencerComponent Kelas implementasi komponen sequencer processing time. ProportionalMachineComponent Kelas implementasi untuk komponen tipe penjadwalan dengan
proportional machine.
ReleaseTimeSequencerComponent Kelas implementasi untuk komponen sequencer release time. SerialBatchComponent Kelas implementasi untuk komponen batch tipe serial. SingleMachineComponent Kelas implementasi untuk komponen tipe penjadwalan single
machine.
StartTimeSequencerComponent Kelas implementasi untuk komponen sequencer start time. UnrelatedParallelMachineComponent Kelas implementasi untuk komponen tipe penjadwalan dengan
70 Tabel IV.1 Kelas-kelas implementasi framework (lanjutan)
No. Paket Kelas (.java) Keterangan
6. org.jannia.schedulingframework. kernel.components.intf
FrameworkComponent Interface untuk semua komponen framework.
7. org.jannia.schedulingframework. kernel.processor
DSLParser Kelas untuk memparsing file DSL.
Executor Kelas yang berfungsi untuk mengeksekusi framework. Weaver Kelas yang berfungsi untuk melakukan proses weave
framework. 8. org.jannia.schedulingframework.
kernel.processor.helper
ParserHelper Kelas yang berisi method bantuan untuk melakukan parsing. WeaverHelper Kelas yang berisi method bantuan untuk melakukan weave. 9. org.jannia.schedulingframework.
spots
Algorithm Interface untuk hot-spot algortihm. Alpha Interface untuk hot-spot alpha. Batch Interface untuk hot-spot batch. BatchElement Interface untuk hot-spot element batch. Beta Interface untuk hot-spot beta.
Gamma Interface untuk hot-spot gamma.
Job Interface untuk hot-spot job.
MonoOperationJob Interface untuk hot-spot job (mono operation). MultiOperationJob Interface untuk hot-spot job (multi operation) Operation Interface untuk hot-spot operation.
Precedence Interface untuk hot-spot precedence. Sequencer Interface untuk hot-spot sequencer.
71 Tabel IV.1 Kelas-kelas implementasi framework (lanjutan)
No. Paket Kelas (.java) Keterangan
10. org.jannia.schedulingframework. spots.defaults
DefaultBatchElement Implementasi default untuk batch element. DefaultOperation Implementasi default untuk operation.
72
IV.3 Implementasi DSL
DSL dalam framework ini akan diimplimentasikan menggunakan XML. Berikut ini adalah sebagian dari skema XML (XML schema) yang akan akan digunakan sebagai acuan XML dari framework.
<?xml version="1.0" encoding="UTF-8"?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<xsd:annotation>
<xsd:documentation xml:lang="en">
XML Schema for SchedulingFramework Author:pipo </xsd:documentation> </xsd:annotation>
…
Gambar IV.1 Header XML schema penjadwalan
Header ini adalah penanda file skema XML yang mengacu pada standar skema dari W3C.Header terdiri dari beberapa tag yang mendeskripsikan dari skema yang dibentuk.
<xsd:element name="scheduling">
<xsd:annotation>
<xsd:documentation xml:lang="en">
Root element for the Scheduling DSL </xsd:documentation>
</xsd:annotation>
<xsd:complexType>
<xsd:all>
<xsd:element name="version" minOccurs="0" type="xsd:string"></xsd:element>
…
<xsd:element name="scheduling-elements" minOccurs="1" maxOccurs="1">
<xsd:complexType>
<xsd:all>
<xsd:element ref="job" minOccurs="1" maxOccurs="1"></xsd:element>
<xsd:element ref="alpha" minOccurs="1" maxOccurs="1"></xsd:element>
<xsd:element ref="beta" minOccurs="1"
…
73
Elemen skema XML scheduling adalah elemen akar (root) dari skema ini. Pembacaan dan penurutan file akan diawali dari elemen ini. Elemen ini memiliki sub elemen yaitu scheduling-element yang berisi elemen-elemen dari penjadwalan. scheduling-element memiliki sub element yaitu job, alpha, beta, gamma, algorithm, dan sequencer. Masing-masing sub elemen ini mendefinisikan elemen dari penjadwalan.
<?xml version="1.0" encoding="UTF-8"?>
<scheduling xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="org/jannia/schedulingframework/ kernel/dsl/DSL.xsd">
<version>1.0</version>
<description>penjadwalan awal</description> <author>Nur Afif</author>
<notes>Contoh penjadwalan</notes> <scheduling-elements>
…
Gambar IV.3 Implementasi XML elemen scheduling
Elemen skema XML job ini adalah elemen yang merepresentasikan Job dalam penjadwalan. Elemen ini memiliki sub elemen yaitu mono-operation yang menyatakan apakah Job ini mono operation atau multi operation. Selain itu terdapat juga sub elemen operations yang menyatakan Operation yang termasuk kedalam Job ini.
<xsd:element name="job">
<xsd:complexType>
<xsd:all>
<xsd:element name="job-elements" minOccurs="0" maxOccurs="1">
<xsd:complexType>
<xsd:all>
<xsd:element name="description" minOccurs="0" type="xsd:string"></xsd:element>
<xsd:element name="mono-operation" minOccurs="1" maxOccurs="1">
…
<xsd:element name="operations" minOccurs="1" maxOccurs="1">
<xsd:complexType>
<xsd:sequence>
<xsd:element ref="operation" minOccurs="1" maxOccurs="unbounded"></xsd:element>
…
74
Berikut ini adalah contoh implementasi skema XML tersebut kedalam instan file XML.
<job>
<job-elements>
<description>description</description>
<mono-operation value="false" />
<operations>
<operation id="001">
<operation-elements>
<preemptable>true</preemptable>
<processing-time>220</processing-time> <cost-weight>0</cost-weight>
…
</operation-elements> </operation>…
Gambar IV.5 Implementasi XML elemen job
IV.4 Implementasi Komponen-Komponen Implementer
Komponen-komponen implementer adalah komponen-komponen yang membangun framework. Setiap komponen mengimplementasikan fungsi-fungsi tersendiri dalam framework.
Komponen-komponen implementer yang terdapat dalam framework penjadwalan ini adalah sebagai berikut :
Tabel IV.2 Tabel komponen-komponen implementer framework
No. Nama Fungsi
1. SingleMachineComponent Komponen untuk menangani
penjadwalan dengan tipe satu mesin. 2. JobShopComponent Komponen untuk menangani
penjadwalan tipe job shop 3. OpenShopComponent Komponen untuk menangani
penjadwalan tipe open shop 4. FlowShopComponent Komponen untuk menangani
75
Tabel IV.2 Tabel komponen-komponen implementer framework (lanjutan)
No. Nama Fungsi
5. MixedShopComponent Komponen untuk menangani penjadwalan tipe mixed shop 6. ChainPrecedenceComponent Komponen untuk menangani
precedence bertipe chain
7. InTreePrecedenceComponent Komponen untuk menangani
precedence bertipe in-tree
8. OutTreePrecedenceComponent Komponen untuk menangani
precedence bertipe out-tree
9. SPPrecedenceComponent Komponen untuk menangani
precedence bertipe serial-paralel
10. SerialBatchComponent Komponen untuk menangani batch bertipe serial
11. ParalelBatchComponent Komponen untuk menangani batch bertipe parallel
12. ElementBatchComponent Komponen untuk menangani batch bertipe element
13. MinimaxCriterionComponent Komponen untuk menangani kriteria penjadwalan minimax.
14. MinisumCriterionComponent Komponen untuk menangani kriteria penjadwalan minisum.
15. LawlerAlgorithm Component Komponen untuk algortima penjadwalan Lawler. 16. MooreAlgorithm Component Komponen untuk algoritma
penjadwalan Moore. 17. JohnsonAlgorithm Component Komponen untuk algoritma
penjadwalan Johnson.
18. CampbellAlgorithmComponent Komponen untuk algoritma penjadwalan Campbell.
19. NawazAlgorithmComponent Komponen untuk algoritma penjadwalan Nawaz.
76
Tabel IV.2 Tabel komponen-komponen implementer framework (lanjutan)
No. Nama Fungsi
20. SahniAlgorithmComponent Komponen untuk algoritma penjadwalan Sahni.
21. DueDateSequencerComponent Komponen untuk sequencer
menggunakan due-date. 22. ReleaseTimeSequencerComponent Komponen untuk sequencer
menggunakan release-time. 23. StartTimeSequencerComponent Komponen untuk sequencer
menggunakan start-time. 24. DeadlineTimeSequencerComponent Komponen untuk sequencer
menggunakan deadline-time. 25. ProcessingTimeSequencerComponent Komponen untuk sequencer
menggunakan processing-time. 26. CostWeightSequencerComponent Komponen untuk sequencer