การใช้งาน K2 กับ Worklist เป็นของคู่กันมานานนม ตั้งแต่สมัยใช้งานบน workspace จนมาถึงปัจจุบันก็มี worklist control ใน SmartForms ให้ใช้
โดยปกติ worklist control มี field ที่เกี่ยวกับการทำงานของ workflow เช่น Folio, Activity Name, Task Start Date และอื่น ๆ ให้เลือกแสดงได้อยู่แล้ว ซึ่งการใช้งานจริงเรามักอยากได้ worklist ที่มีข้อมูล ของระบบนั้นมาแสดงด้วย โดยทางออกที่เรามักจะทำกันคือการใส่ค่าแปะไว้ใน folio ของ workflow บางที Folio มันก็จะยาว ๆ หน่อยอ่ะนะ (- -“)
แต่ในวันนี้มานำเสนออีกช่องทางครับ เป็นวิธีการทำ worklist ที่สามารถดึงข้อมูลระบบอื่นมาแสดงด้วย ในตัวอย่างจะเป็น worklist ของ ระบบ Leave request โดยจะมีข้อมูลประเภทการลา วันที่เริ่มลาจนถึงวันที่สิ้นสุด มาแสดงใน worklist ได้ด้วย ผลลัพท์ได้มีหน้าตาตามนี้ครับ
สิ่งที่ใช้ในการทำ: Worklist Service Broker, Composite SmartObjects
Step by step
- ติดตั้ง Worklist Service Broker (ตามไป download ได้ตามลิ้งค์ด้านบนครับ)
- เพิ่ม field ProcessInstanceID ในตาราง leave request (ใน workflow เพิ่ม SmartObjects Event ให้ไป update ค่า ProcessInstanceID หลังจากส่งงานเข้า workflow ไปแล้วด้วย)
- สร้าง composite SmartObject เชื่อมกันระหว่าง Leave Request และ WorklistService
- เปิด K2 Studio, สร้าง SmartObject ตั้งชื่อ LeaveRequestWorklist
- กด Add Method, เลือก Run the wizard in Advance Mode แล้ว กด Next
- ตั้งชื่อ method ว่า Get Leave Request Worklist แล้วกด Next
- ในหน้า Configure Method Parameter กด Next (ไม่ต้องสร้าง parameter)
- ในหน้า Service Method Object กด Add
- ในหน้า Add Service Method กด Add เลือกไปที่ Service Object Server -> [SQL Service Instance Name] -> Table -> Leave Request -> List
- กด Create All เพื่อสร้าง properties แล้วกด OK
- โปรแกรมจะกลับมาที่หน้า Service Method Object กด Add อีกครั้ง
- ในหน้า Add Service Method กด Add เลือกไปที่ Service Object Server -> Worklist Server -> Basic Worklist Item -> Get Worklist Items
- กด Create All เพื่อสร้าง properties แล้วกด OK
- กด Next
- ในหน้า Setup Service Method Link กด Add
- ในหน้า Add Service Method Link เลือกปรับค่าดังนี้
- Service Object Method: Leave Request.List
- Link Type: Matching Value in both objects
- Service Object Method: Worklist Service.GetWorklistItems
- ในส่วนของ Property Name เลือกไปที่ ProcessInstanceID แล้วกด Assign เลือกไปที่ Process InstanceID ตามรูป
- กด OK
- กด Next, กด Finish
- Deploy SmartObjects
- ทดสอบและนำ SmartObjects ไปสร้าง ListView, form ต่อเพื่อใช้งาน
- ตอนเรียกใช้งานก็เรียกผ่าน method ที่เราสร้างขึ้นครับ มันจะได้เฉพาะงานจาก worklist เท่านั้น แล้วจะไป join กับ field จากตาราง Leave Request
- Field ที่ใช้ฝั่งของ worklist จะมีดังนี้ครับ
- Link: เป็น URL ที่ส่งมาจาก workflow สำหรับเปิดหน้าฟอร์มเข้าไปอนุมัติ
- Folio: ชื่อ folio ของ workflow นั้น ๆ
สรุปข้อดีของการทำ custom worklist
- เพิ่ม field จากฐานข้อมูลมาแสดงผลได้
- สามารถใช้ฟังก์ชั่นของ list view ได้ เช่น การ sorting, filter, paging
แต่ก็มีข้อจำกัดของการทำ custom worklist นะ
- ไม่สามารถใช้ function ที่ติดมากับ worklist control ได้ เช่น Redirect, Delegate, Out of office (ทำได้แต่ต้องเขียนเพิ่มเอง)
- ต้องสร้าง SmartObjects และ form แยกสำหรับแต่ละระบบ
การสร้าง custom worklist ขั้นตอนก็มีดังที่กล่าวไปข้างต้น รวมถึงมีทั้งข้อดีข้อเสีย ทั้งนี้ขอให้เลืิอกนำไปใช้ให้เหมาะสมกับงานของเราครับ 🙂