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 : 66 Tabel IV.1 Kelas-kelas implementasi framework No. 1. Paket org.jannia.schedulingframework Kelas (.java) Keterangan Ini adalah kelas yang berisi konteks dari framework. Melalui Context 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. Enum yang berisi tipe-tipe algoritma seperti Lawler AlgorithmListEnum Algortihm, Moore Algorithm dsb. enums Enum yang berisi tipe-tipe job yaitu Mono operation dan JobTypeEnum multi operation. Enum yang berisi tipe-tipe operation yaitu preemptable dan OperationTypeEnum 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. Enum yang berisi tipe-tipe sequencer seperti processing time SequencerListEnum sequencer, release time sequencer, dll. 67 Tabel IV.1 Kelas-kelas implementasi framework (lanjutan) No. Paket 3. org.jannia.schedulingframework. Kelas (.java) ExecutionErrorException Keterangan Tipe exception yang dilemparkan saat terjadi kesalahan pada saat eksekusi framework. exception 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. AlgorithmCoordinator Kelas yang memiliki template method untuk hot-spot algortima. kernel 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. CampbellAlgorithmComponent Kelas implementasi untuk komponen algortima Campbell. kernel.components ChainPrecedenceComponent Kelas implementasi untuk komponen precedence bertipe chain. Kelas implementasi untuk komponen tipe penjadwalan FlowshopComponent flowshop. IdenticalParallelMachineComponent Kelas implementasi untuk komponen tipe penjadwalan dengan identical parallel machine. 68 Tabel IV.1 Kelas-kelas implementasi framework (lanjutan) No. Paket Kelas (.java) Keterangan Kelas implementasi untuk komponen tipe penjadwalan JobshopComponent 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 unrelated parallel machine. 69 Tabel IV.1 Kelas-kelas implementasi framework (lanjutan) No. Paket 6. org.jannia.schedulingframework. Kelas (.java) Keterangan FrameworkComponent Interface untuk semua komponen framework. org.jannia.schedulingframework. DSLParser Kelas untuk memparsing file DSL. kernel.processor Executor Kelas yang berfungsi untuk mengeksekusi framework. Weaver Kelas yang berfungsi untuk melakukan proses weave kernel.components.intf 7. framework. 8. 9. org.jannia.schedulingframework. ParserHelper Kelas yang berisi method bantuan untuk melakukan parsing. kernel.processor.helper WeaverHelper Kelas yang berisi method bantuan untuk melakukan weave. org.jannia.schedulingframework. Algorithm Interface untuk hot-spot algortihm. spots 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. 70 Tabel IV.1 Kelas-kelas implementasi framework (lanjutan) No. Paket Kelas (.java) 10. org.jannia.schedulingframework. DefaultBatchElement Implementasi default untuk batch element. spots.defaults DefaultOperation Implementasi default untuk operation. 71 Keterangan 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" … Gambar IV.2 Elemen XML schema scheduling 72 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> … Gambar IV.4 Elemen XML schema job 73 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. 1. Nama Fungsi 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 penjadwalan tipe flow shop 74 Tabel IV.2 Tabel komponen-komponen implementer framework (lanjutan) No. 5. Nama Fungsi 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. 75 Tabel IV.2 Tabel komponen-komponen implementer framework (lanjutan) No. 20. Nama Fungsi 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 menggunakan cost-weight. 76