ในการสร้าง Workflow ของ Alfresco Community ใน Version 3.4e เป็นต้นมา มีการนำเอา Workflow Engine ตัวใหม่เข้ามาใช้ในการสร้าง Workflow ซึ่งก็ถือว่าเป็นการเปลี่ยนแปลงครั้งสำคัญอีกครั้งหนึ่งของ Alfresco ในแง่มุมของกระบวนการทำ Business Process Management (BPM) แรกเริ่มเดิมทีนั้น Alfresco จะใช้ jBPM ซึ่งเป็นของค่าย JBoss ในการสร้าง Workflow แต่เมื่อประมาณเดือนเมษายน ของปี 2011 Alfresco ได้ออก Version ใหม่คือ Alfresco Community 3.4e ซึ่งมีการนำเอา Workflow Engine ตัวใหม่เข้ามาใช้งาน ซึ่งนั่นก็คือ Activiti นั่นเอง
Activiti นั้นได้กลายเป็น Default Workflow Engine ของ Alfresco ซึ่งในส่วนของ jBPM นั้น ก็ยังสามารถใช้ใน Alfresco ได้เหมือนเดิม (ประมาณว่าใช้ได้ แต่ไม่เน้นนะครับ) ก่อนที่จะไปเริ่มสร้าง Workflow ใน Alfresco กันนั้น จำเป็นที่จะต้องเรียนรู้พื้นฐานการทำงาน ของ Activiti ให้เข้าใจเสียก่อน ซึ่งในขณะที่เขียนบทความนี้อยู่นั้น Activiti ได้ออก version 5.6 ซึ่งเป็น version ล่าสุด โดยสามารถ Download และศึกษาวิธีใช้งานได้จาก http://www.activiti.org
ทำการติดตั้ง Software ที่จำเป็นในการใช้งาน Activiti ก่อนนะครับ ซึ่งได้แก่ JDK 5+ สามารถ download ได้ที่ Oracle Java SE downloads (ผู้เขียนลองทดสอบกับ JDK 1.6.0_26 ก็สามารถใช้งานได้ครับ) ลง JDK ก็ลงตามปกตินะครับ Next ไปเรื่อยๆ จนเสร็จ จากนั้น Set JAVA_HOME นิดหน่อยนะครับ โดยไปที่
คลิกที่ Advanced System settings
คลิกที่แถบ Advanced จากนั้นเลือกปุ่ม Environment variables…
คลิกที่ปุ่ม New ในส่วนของ System Variables จากนั้น เพิ่ม JAVA_HOME ดังรูป
Ant 1.8.1+ สามารถ download ได้ที่ The Ant download page (ทดสอบกับ Ant 1.8.2+ ก็สามารถใช้งานได้ครับ) ติดตั้ง Ant ก็ง่ายนะครับ โดยการ unzip ออกมาแล้วก็วางไว้ที่ path ไหนก็ได้ครับ
จากนั้น Set ANT_HOME ให้นิดนึงนะครับ ทำเหมือน set JAVA_HOME นะครับ
ทดสอบดูนะครับ ว่า Ant ของเราพร้อมใช้งานรึยัง โดย เข้าไปที่ Command Prompt นะครับ จากนั้น พิมพ์ Ant –version จะปรากฏ ดังรูปนะครับ
Eclipse 3.6.2 Helio (Eclipse Classic) สามารถ download ได้จาก The Eclipse download page (ผมลองลงใน eclipse 3.7 indigo แล้วผมไม่สามารถติดตั้ง Activiti designer plugin ได้ครับ) ติดตั้ง eclipse 3.6.2 ก็ง่ายนะครับ หลังจาก download eclipse เรียบร้อยแล้ว ให้ทำการ เปิดโปรแกรม eclipse ขึ้นมานะครับ จากนั้นไปที่ Help เลือก Install New Software…
ติดตั้ง eclipse 3.6.2 ก็ง่ายนะครับ หลังจาก download eclipse เรียบร้อยแล้ว ให้ทำการ เปิดโปรแกรม eclipse ขึ้นมานะครับ จากนั้นไปที่ Help เลือก Install New Software…
ที่ช่อง Work with: ให้ใส่ http://activiti.org/designer/update นะครับ เมื่อพิมพ์เสร็จก็จะปรากฏ plugin ให้ download นะครับ คลิกถูกดังรูปจากนั้น คลิก Next เมื่อติดตั้งเรียบร้อยแล้วให้คลิกที่ปุ่ม Finish เป็นการติดตั้ง Activiti Designer plugin เรียบร้อยแล้วแล้ว ทำการ restart eclipse อีกครั้ง
Activiti 5.6 ขั้นตอนการติดตั้ง Activiti นั้น ต้องเริ่มตั้งแต่การ download Activiti ที่ www.activiti.org/download.html โดยเมื่อ download เสร็จแล้ว ให้ทำตามขั้นตอน ดังต่อไปนี้เลยครับ ทำการ unzip ออกมาไว้ที่ path อะไรก็ได้นะครับ จากนั้น พิมพ์ cmd นะครับ เพื่อเข้าสู้หน้าจอ command prompt เข้าไปที่ path ที่ unzip Activiti และเข้าไปที่ setup folder
เข้าไปที่ path ที่ unzip Activiti และเข้าไปที่ setup folder
พิมพ์ ant demo.start โปรแกรมจะเริ่มทำการติดตั้ง โดย ant จะเริ่มตั้งแต่
a. การ auto download tomcat และ
b. ทำการ deploy application ต่างๆ ลงใน tomcat
c. Install database script ต่างๆ ลงใน H2 Database (Activiti รองรับ Database ได้หลากหลาย ดูข้อมูลเพิ่มเติมที่ http://www.activiti.org/userguide/index.html#N10036)
d. รอจนกว่าจะขึ้น Finish นะครับ
Activiti Component ตรวจสอบว่า Activiti สามารถใช้งานได้หรือไม่นะครับ ตรวจสอบ Database โดยเข้าไปที่ localhost:8082 ในช่อง JDBC URL ให้ใส่ jdbc:h2:tcp://localhost/activiti จากนั้นคลิก Connect
จะเข้าสู่หน้า Console ของ H2 (ลองเรียกข้อมูลจาก ACT_ID_USER ดูนะครับ ant จะ insert ข้อมูล user ใช้งานให้ 3 userครับ)
เมื่อ install Activiti ผ่าน Ant เสร็จเรียบร้อยแล้ว Activiti ได้เตรียม Web Application Tools ในการทำงาน ให้ ดังนี้ คือ
Webapp Name : Activiti Probe
URL : http://localhost:8080/activiti-probe
Description : เป็น Application สำหรับ Admin Management ใช้สำหรับ Install/Delete Workflow Process ตลอดจนถึงดูข้อมูลใน Database ตรวจสอบ Workflow ที่มีอยู่ในระบบ
Webapp Name : Activiti Explorer
URL : http://localhost:8080/activiti-explorer
Description : เป็นโปรแกรมใช้สำหรับ user ใช้งาน ใช้สำหรับ Start Workflow รวมถึงดูงานของตัวเองด้วย
Webapp Name : Activiti Cycle
URL : http://localhost:8080/activiti-cycle
Description : The Activiti collaboration tool. Use this to browse repositories and execute transformations between model
formats.
Webapp Name : Activiti Modeler
URL : http://localhost:8080/activiti-modeler
Description : เป็น Workflow Designer ใช้สำหรับสร้าง Workflow ได้อย่างรวดเร็วและมีประสิทธิภาพมา อีกทั้งยังสามารถ Save ให้เป็น Format BPMN2.0 เพื่อนำไปพัฒนาต่อได้ใน Eclipse อีกด้วย
Webapp Name : Activiti KickStart
URL : http://localhost:8080/activiti-kickstart
Description : เป็นโปรแกรมสร้าง Workflow ง่ายๆ สบายๆ เช่น ADHOC WORKFLOW เป็นต้น สามารถสร้างผ่าน UI ได้ทันทีครับ
Webapp Name : Activiti Administrator
URL : http://localhost:8080/activiti-administrator
Description : เป็นโปรแกรมสำหรับจัดการ User และ Group ที่ใช้งาน Activiti
เมื่อเราได้รู้ถึงวิธีการติดตั้ง Activiti ตลอดจนถึงเรียนรู้ถึงส่วนประกอบต่างๆ ของ Activiti ทีนี้เราต้องมาเรียนรู้ในการสร้าง Workflow แบบง่ายๆ กันนะครับ
จริงๆ แล้วเราสามารถสร้าง Workflow ได้จากหลายๆ เครื่องมือ ไม่ว่าจะเป็น จาก Activiti Modeler (/activiti-modeler) หรือจาก Eclipse เองก็ได้ ซึ่ง Eclipse เองก็มี designer จัดเตรียมไว้ให้อยู่แล้ว ถ้าอย่างนั้นเรามาเริ่มสร้าง Workflow กันเลยนะครับ
เปิด Eclipse 3.6.2 (Helio) ขึ้นมา จากนั้นเลือกที่ File -> New -> Other…
เลือก Activiti -> Activiti Project (ถ้าไม่มีให้เลือกแสดงว่ายังไม่ได้ Load Plugin นะครับ)
คลิก Next จากนั้นตั้งชื่อ Project Name ดังรูป
จากนั้นคลิกที่ ปุ่ม Finish จะได้หน้าจอ ดังรูป
คลิกขวาที่ diagrams -> New -> Others…
จากนั้นเลือก Activiti -> Activiti Diagram
ตั้งชื่อ Process ที่ต้องการ พร้อมกับระบุ Folder ที่ต้องการเก็บ จากนั้นคลิกที่ปุ่ม Next
เลือก Option [No, just create an empty diagram] เพื่อสร้าง Workflow เอง จากนั้นคลิกที่ปุ่ม Finish
ตอนนี้เราก็พร้อมที่จะเริ่มสร้าง Workflow กันแล้วนะครับ โดยจะปรากฏดังรูปด้านล่าง
Double Click ที่ MyProcess.activiti จะปรากฏเป็นหน้าว่างๆ เพื่อให้เราทำการลาก Flow ทางด้านขวามือสุด จะเป็น Palette Component ต่างๆ ของ Flow ดังรูป
ให้ทำการ drag & drop StartEvent เข้ามาที่ Space ดังรูป
คลิกที่ icon รูปคนดังรูป เพื่อเพิ่ม Task
จะปรากฏดังรูป จากนั้นพิมพ์ชื่อ Task1 ลงไป
คลิกที่ icon รูปคนดังรูป เพื่อเพิ่ม Task
จะปรากฏดังรูป จากนั้นพิมพ์ชื่อ Task2 ลงไป
คลิกที่ icon EndEvent ดังรูป
จะปรากฏดังรูป
ทำการกำหนด performer (คนที่จะทำงานในแต่ละ Task) โดยการคลิกที่ Task1 จะปรากฏแถบ Properties ขึ้นมา คลิกที่ Main config
a. ที่ช่องของ Performer type: จะเป็น dropdown ให้เลือกเป็น Assignee (หมายถึงระบุเป็นชื่อ user name เลย)
b. ถัดมาในช่องของ expression ให้ใส่เป็น kermit เป็น demo username
คลิกที่ Task2 ให้ทำเหมือน Task1 แต่เปลี่ยน Expression เป็น gonzo
จากนั้นคลิกที่ปุ่ม Save เป็นการเสร็จสิ้นการทำ Workflow ด้วย Activiti
ทำการสร้างเป็นไฟล์ Setup เพื่อ deploy ใส่ Activiti โดยการคลิกขวาที่ myFirstWorkflow จากนั้น เลือก Create deployment artifacts ดังรูป
จะปรากฏ Folder deployment ขึ้นมา พร้อมกับสร้าง MyProcess.bar (เราจะนำไฟล์ myProcess.bar ไป deploy ต่อ)
ทำการ Start Server โดยการใช้ ant นะครับ วิธีการทำเหมือนตอนที่ติดตั้ง Activiti นะครับ คือ เข้าไปที่ command prompt จากนั้นเข้าไปที่ activiti path/setup และพิมพ์ ant demo.start รอจน server start เสร็จนะครับ
ทำการติดตั้ง process ที่เราได้สร้างขึ้นมาจาก Eclipse เมื่อซักครู่นี้ (MyProcess.bar) เรียกใช้งาน activiti probe เข้าไปที่ http://localhost:8080/activiti-probe/ จากนั้นใส่ user name: kermit และ password: kermit ดังรูป คลิก login
คลิกที่แถบ Deployment จากนั้น คลิกที่ปุ่ม Upload
Browse ไปที่ไฟล์ MyProcess.bar (เข้าไปที่ Workspace ของ Project/Deployment) จากนั้นคลิกที่ปุ่ม OK
เมื่อ Deploy เสร็จแล้ว จะปรากฏหน้าจอ ดังรูป
มาลองทดสอบ Workflow ที่เราได้ Deploy กันนะครับ โดยการเรียกใช้งาน Activiti Explorer ซึ่งเป็น Application สำหรับ user ใช้งาน เข้าไปที่ http://localhost:8080/activiti-explorer/ จะปรากฏหน้าจอดังรูป
Login ด้วย fozzie นะครับ (จริงๆ แล้วใครก็ได้) คลิกที่ปุ่ม Login จากนั้น คลิกที่แถบ Processes จะปรากฏ Workflow Process ที่ได้ deploy ลงไป
ลองคลิกที่ปุ่ม Show Diagram จะปรากฏ หน้าจอ Workflow ที่เราได้ Design เอาไว้
คลิกที่ปุ่ม Start Instance เพื่อทำการ Start Workflow จะปรากฏหน้าจอดังรูป
ตามที่ได้ Config ใน Workflow นั้น เมื่อ Flow Start แล้ว จะเริ่มทำงานที่ Task1. Workflow จะถูกส่งไปที่ kermit ให้ทำการ Login โดยใช้ username: kermit ที่แถบ TASKS -> My tasks (1) จะเห็นว่ามีงาน ที่ส่งมาหา kermit อยู่ 1 งาน คลิกที่ Complete เพื่อส่งงานต่อ
ในระหว่างที่ Flow กำลังวิ่งอยู่นั้น สามารถตรวจสอบว่า Workflow กำลังอยู่ที่ Task ไหนแล้ว โดยเข้าไปที่ Activiti Probe จากนั้น คลิกที่แถบ Processes
คลิกที่ปุ่ม Display Diagram จะปรากฏ Process Diagram ขึ้นมาพร้อม แสดงว่า ในขณะนี้ Process กำลังดำเนิน ถึงขั้นตอนไหนแล้ว (Work Flow ในขณะนี้กำลังอยู่ที่ Task2) ดังรูป
ให้ทำการ Login ด้วย gonzo ใน Activiti Explorer เพื่อทำการ Complete Workflow ใน Task2 (ทำตามขั้นตอนที่ 33 -34 ใน eclipse กำหนดให้ gonzo เป็น user ที่สามารถ complete task2 เท่านั้น)