BAB IV HASIL DAN PEMBAHASAN
4.3. Iterations Phase (Fase Pengulangan)
4.3.2. Iteration 1
4.3.2.2. Membuat Desain Sederhana
Pengembangan workflow dilakukan dengan menggunakan gambar 2.2 sebagai rujukan.
a. Workflow Task Model
Gambar 4.5. ModelWorkflow Task
Workflow model pada gambar 4.9. merupakan metadata atau properti dari tiap-tiap tugas yang ada pada workflow
b. WorkflowDiagram
Gambar 4.6. DiagramWorkflowPada JBPM Designer
Workflow diagram pada gambar 4.10. merupakan proses alur kerja dokumen proposal skripsi, dimana digambarkan menggunakan notasi JBoss BPM.
4.3.2.3. Implementasi
a. Membuat Proyek Ektensi Untuk WorkflowDokumen
Proyek eksensi Alfresco dibuat dalam Eclipse IDE serta
menggunakan plugin JBPM Graphical Process Designer.
Selain Eclipse untuk pengembangan Alfresco juga dibutuhkan Alfresco SDK, yang sesuai dengan versi Alfresco yang digunakan untuk dijadikan sebagai library atau base codeyang
dapat dilakukan extendatau replace. Dalam pembuatan project
perlu diperhatikan struktur folder untuk Alfresco, yaitu :
|config|alfresco|extension|model |config|alfresco|extension|workflow |data |src|java |src|web|jsp|extension |src|web|META-INF |src|web|skripsi|images
b. Membuat Workflow TaskModel
Task model dibuat dengan membuat file
taWorkflowModel.xml pada folder config| alfresco| extension| model|, sesuai dengan desain workflow task model yang telah dibuat.
Pembuatan task model dimulai dengan pendefinisian model untuk workflowdengan membuat model baru.
<?xml version="1.0" encoding="UTF-8"?> <model name="tawf:taworkflowmodel"
xmlns="http://www.alfresco.org/model/dictionar y/1.0">
Setelah pendefinisian dilakukan, kemudian dilakukan import terhadap model Alfresco yang akan di-extend untuk model
workflow.
<import
uri="http://www.alfresco.org/model/bpm/1.0"
prefix="bpm" />
Selanjutnya membuat pendefinisian terhadap namespace dari model.
<namespace
uri="http://www.skripsi.com/model/workflow/1.0 " prefix="tawf" />
Pendefinisian model, import, dan namespacemerupakan aturan yang harus diikuti. Kemudian baru dapat mendefinisikan type
dan aspectdari model.
<type name="tawf:data">
<parent>bpm:workflowTask</parent> <properties>
<property name="tawf:nama_mhs"> <type>d:text</type>
<multiple>false</multiple> </property>
<property name="tawf:nim"> <type>d:text</type>
<multiple>false</multiple> </property>
<property name="tawf:judul_proposal"> <type>d:text</type>
<multiple>false</multiple> </property>
<property name="tawf:konsentrasi"> <type>d:text</type> <constraints> <constraint ref="tawf:peminatan"/> </constraints> </property>
<property name="tawf:nama_dosen1"> <type>d:text</type>
<multiple>false</multiple> </property>
<property name="tawf:nip1"> <type>d:text</type>
<multiple>false</multiple> </property>
<property name="tawf:coment1"> <type>d:text</type>
<multiple>false</multiple> </property>
<property name="tawf:nama_dosen2"> <type>d:text</type>
<multiple>false</multiple> </property>
<property name="tawf:nip2"> <type>d:text</type>
<multiple>false</multiple> </property>
<property name="tawf:coment2"> <type>d:text</type>
</property> </properties> <overrides> <property name="bpm:packageItemActionGroup"> <default>edit_package_item_actions</default > </property> overrides> </type>
Workflow task model terdiri dari dua class model yaitu tag <type> dan <aspect>. Sedangkan tag <parent> mereprentasikan relasi generalisasi. Tag <property>
dimodelkan sebagai atribut dari class. Sedangkan tag
<association> menunjukan adanya asosiasi yang mengarahkan tag <source> ke tag <target>. Tag
<mandatory-aspects> dimodelkan dengan adanya
aggregasi pada setiap tag <aspect>. File
taWorkflowModelxml dapat dilihat pada lampiran listing program.
c. Membuat Workflow Process Definition
Dengan menggunaka Eclipse yang telah terinstal plugin process designer, dapat dibuat sebuah process definition baru dengan folder lokasi file adalah config| alfresco| extension| workflow|. Setelah proses baru telah dibuat, terdapat file
processdefinition.xml pada folder yang merupakan nama dari proses yang telah dibuat. Pada file processdefinition ini dilakukan penulisan kode dengan menggunakan JPDL.
Untuk membuat processdefinition pertama dilakukan pendefinisian dari proses.
<?xml version="1.0" encoding="UTF-8"?> <process-definition
xmlns="urn:jbpm.org:jpdl-3.1" name="tawf:wfproposal">
Kemudian mendaftarkan aktor-aktor yang akan terlibat untuk mengerjakan tugas dalam workflow.
<swimlane name="staff"> <assignment class="org.alfresco.repo.workflow.jbpm.Alfresc oAssignment"> <actor>#{people.getPerson('staffprodi')}</acto r> </assignment> </swimlane>
Setelah semua aktor telah didefinisikan, selanjutnya membuat tahapan tugas-tugas pada workflow.
<start-state name="start">
<task name="tawf:submitDocument"
swimlane="initiator"></task> <transition name=""
to="submit"></transition> </start-state>
Untuk menghindari keterlambatan pengerjaan, terdapat pula timeryang digunakan pada workflow.
<timer name="DosenTimer" duedate="1 minutes" transition="approve">
<action class="org.alfresco.repo.workflow.jbpm.Alfresc oJavaScript"> <script> logger.log("dosen review timer expired...approving... "); </script> </action> </timer>
Selain timer, untuk mendukung penyampaian informasi, terdapat pengiriman email kepada aktor workflow.
<action class="org.alfresco.repo.workflow.jbpm.Alfresc oJavaScript"> <runas>admin</runas> script> <variable
name="tawf_nama_mhs" access="read" /> <variable
name="tawf_judul_proposal" access="read" /> <variable name="initiator"
access="read" />
<variable name="sek_prodi"
access="read" />
<variable
name="bpm_package" access="read" /> <expression>
var mail = actions.create("mail");
mail.parameters.to =
initiator.properties.email;
mail.parameters.subject = "Request to review"; mail.parameters.from =
sek_prodi.properties.email;
mail.parameters.text = "Assalamu'alakum. \n Diberitahukan kepada '"+tawf_nama_mhs+"' bahwa proposal skripsi anda dengan judul
'"+tawf_judul_proposal+"' tidak dapat
digunakan sebagai topik penelitian dan harus diganti dengan topik yang lain. \n Terima kasih."; mail.execute(bpm_package); logger.log("\nreject, " + tawf_nama_mhs + "!!!"); </expression> </script> </action>
Pada akhir dari tahapan workflow, jika disetujui oleh ketua program studi, dibuat sebuah file berisi data proposal skripsi dan pembimbing yang digunakan untuk pembuatan surat keterangan pembimbingan oleh staff fakultas, serta dibuat duplikat dari proposal yang diajukan.
<action class="org.alfresco.repo.workflow.jbpm.Alfresc oJavaScript"> <runas>admin</runas> <script> <variable
name="tawf_nama_mhs" access="read" />
<variable name="tawf_nim"
access="read" />
<variable
name="tawf_judul_proposal" access="read" /> <variable
name="tawf_konsentrasi" access="read" /> <variable
name="tawf_nama_dosen1" access="read" /> <variable name="tawf_nip1"
access="read" />
<variable
name="tawf_nama_dosen2" access="read" /> <variable name="tawf_nip2"
access="read" />
<variable name="msg"
access="read,write" />
<variable name="initiator"
access="read" />
<variable
name="bpm_package" access="read" /> <variable
name="tawf_d1Assignee" access="read" /> <variable
name="tawf_d2Assignee" access="read" /> <variable name="target"
access="read"/>
<variable name="appfolder"
access="read"/>
<variable name="appDate"
access="read"/>
<expression>
var msg = "Assalamu'alakum.\n Data surat keputusan pembimbingan skripsi dari proposal :\n Nama : "+tawf_nama_mhs+"\n NIM : "+tawf_nim+"\n Program Studi : Teknik Informatika\n
Konsentrasi : "+tawf_konsentrasi+"\n Judul Skripsi : "+tawf_judul_proposal+"\n\n Pembimbing\n I : "+tawf_nama_dosen1+"
("+tawf_nip1+")\n II : "+tawf_nama_dosen2+" ("+tawf_nip2+")\n Tanggal Pengesahan :
"+utils.pad(appDate.getDate(),2)+"/"+utils.pad ((appDate.getMonth()+1),2)+"/"+utils.pad((appD ate.getYear()-100),2)+"\n Terima Kasih.\n\n Mengetahui,\n Ketua Prodi Teknik Informatika";
var workflowFile = target.createFile(""+utils.pad((appDate.getYea r()-100),2)+"- "+utils.pad((appDate.getMonth()+1),2)+"- "+utils.pad(appDate.getDate(),2)+"- "+appDate.getHours()+"- "+appDate.getMinutes()+"-"+appDate.getSeconds()+" SK "+tawf_nama_mhs+" "+tawf_nim+".txt"); workflowFile.content=msg; workflowFile.mimetype="text/plain"; workflowFile.save(); bpm_package.children[0].copy(appfolder); </expression> </script> </action>
Untuk selengkapnya file processdefinition.xml dapat dilihat pada lampiran listing program.
d. Membuat Workflow Resource Bundle
Workflow resource bundle merupakan file
taWorkflow.propertiesyang dibuat pada folder config| alfresco| extension|, file ini berisi pesan yang akan ditampilkan pada web client sebagai pengganti nama task dari task model dan nama
transition dari process definition. Pesan untuk task model
ditulis dengan format <namespace> _ <nama task model> .
type. <namespace> _ <nama task> . title/ desciption.
tawf_taworkflowmodel.type.tawf_revise.title=Re visi Proposal
tawf_taworkflowmodel.type.tawf_revise.descript ion=Revisi proposal oleh Mahasiswa
Sememtara untuk penulisan transition dari process definition mempunyai format <namespace> _ <nama processdefinition> .
<node> . <nama node> . transition. <nama transition> . title /
description.
tawf_wfproposal.node.revisi.transition.resubmi t.title=Revisi
tawf_wfproposal.node.revisi.transition.resubmi t.description=Resubmit After Revision
tawf_wfproposal.node.revisi.transition.done.ti tle=Membatalkan
tawf_wfproposal.node.revisi.transition.done.de scription=Stop Approvement Proposal Skripsi
Untuk selengkapnya file taWorkflow.propertiesdapat dilihat pada lampiran listing program.
e. Konfigurasi Web Client
Konfigurasi web client dilakukan untuk mendaftarkan tampilan workflow pada web Alfresco. File konfigurasi web-client-config-custom.xml berada pada folder config| alfresco| extension|.
<alfresco-config>
<config evaluator="node-type"
condition="tawf:submitDocument"
replace="true">
<property-sheet> <show-property
name="tawf:nama_mhs" display-label="Nama Mahasiswa"/>
<show-property name="tawf:nim"
display-label="NIM"/>
<show-property
name="tawf:judul_proposal" display-label="Judul Sementara"/>
<show-property name="tawf:konsentrasi" display-label="Konsentrasi"/>
<separator name="sepCust1"
display-label="Dosen Pembimbing 1" component-generator="HeaderSeparatorGenerator" />
<show-property
name="tawf:nama_dosen1" display-label="Nama Dosen" read-only="true"/>
<show-property name="tawf:nip1"
display-label="NIP" read-only="true"/> <show-property
name="tawf:coment1"
component-generator="TextAreaGenerator" display-label="Komentar" read-only="true"/>
<separator name="sepCust2"
display-label="Dosen Pembimbing 2" component-generator="HeaderSeparatorGenerator" />
<show-property
name="tawf:nama_dosen2" display-label="Nama Dosen" read-only="true"/>
<show-property name="tawf:nip2"
display-label="NIP" read-only="true"/> <show-property
name="tawf:coment2"
component-generator="TextAreaGenerator" display-label="Komentar" read-only="true"/>
<separator name="sepCust3"
display-label-id="general" component-generator="HeaderSeparatorGenerator" />
<show-property name="bpm:comment"
component-generator="TextAreaGenerator" display-label="Komentar"/>
</property-sheet> </config>
<config evaluator="node-type"
condition="tawf:selection" replace="true"> <property-sheet>
<separator name="sep1" display-label-id="general"
component-generator="HeaderSeparatorGenerator" /> <show-association
name="tawf:d1Assignee" display-label-id="wf_reviewers" />
<show-association name="tawf:d2Assignee" display-label-id="wf_reviewers" />
<show-property name="bpm:comment"
component-generator="TextAreaGenerator" display-label="Komentar"/>
</property-sheet> </config>
</alfresco-config>
Untuk selengkapnya file web-client-config-custom.xml dapat dilihat pada lampiran listing program.
f. Konfigurasi Spring Framework
Konfigurasi untuk Spring framework yang digunakan untuk mengintegrasikan model proyek ekstensi dengan membuat file skripsi-model-context.xml pada folder config| alfresco| extension|.
<?xml version='1.0' encoding='UTF-8'?> <!DOCTYPE beans PUBLIC '-//SPRING//DTD BEAN//EN'
'http://www.springframework.org/dtd/spring-beans.dtd'>
<beans>
<bean id="skripsi.workflowBootstrap"
parent="workflowDeployer"> <property name="workflowDefinitions"> <list> <props> <prop key="engineId">jbpm</prop>
<prop
key="location">alfresco/extension/workflows/pr oposal-wf/processdefinition.xml</prop>
<prop key="mimetype">text/xml</prop>
<prop key="redeploy">true</prop>
</props> </list>
</property>
<property name="models"> <list>
<value>alfresco/extension/model/taWorkflowMode l.xml</value>
</list> </property>
<property name="labels"> <list>
<value>alfresco.extension.taWorkflow</value> </list>
</property> </bean>
Kode diatas berguna untuk mendaftarkan file dan
package dari project yang dibuat. Pendaftaran dilakukan dengan menentukan lokasi dari file processdefinition,
workflowmodel, dan properties yang telah dibuat. Untuk selengkapnya file skripsi-model-context.xml dapat dilihat pada lampiran listing program.
g. Melakukan DeploymentTerhadapProcess Definition
Untuk proses deployment processdefinition dapat dilakukan langsung menggunakan process designer dengan mengkonfigurasi server deploymentsebagai berikut :
Server name : localhost Server port : 8080
Server deployer : /alfresco/jbpm/deployprocess
Kemudian untuk melakukan pengujian koneksi dapat dilakukan melalui tombol Test Connection. Jika pengujian berhasil deployment dapat dilakukan menggunakan tombol
Deploy Process Archive.