[K2 Five] – How to start multiple sub workflow [TH]

สวัสดีครับ พอดีช่วงนี้มีคำถามเกี่ยวกับการ start sub workflow ตามจำนวนของงานที่เราเก็บไว้ใน database เข้ามา ถ้าใครเคยทำใน version เก่าอยู่ก็จะงงๆ อยู่ เพราะไม่เหมือนเดิมเลย แต่ก่อนที่เราจะไปถึงวิธีทำ มาพูดถึง scenario ที่ทำไม่ได้ก่อนดีกว่า

ใน workflow version เก่า เราสามารถ start sub workflow หลายๆ workflow พร้อมกัน ทั้งแบบ sync (รอ sub workflow ตอบกลับ) และ async (ไม่รอ sub workflow ตอบกลับ) โดย sub workflow ทั้งหมดจะถูก start พร้อมๆ กัน แต่ใน version K2 Five จะ start sub workflow พร้อมๆ กัน ได้แค่เคสของ async นะครับ ถ้าเป็นเคส sync จะ start แล้วรอให้ทำ sub workflow จบ ถึงจะ start อันถัดไปได้

มาเริ่มกันเลยดีกว่า สิ่งที่เราต้องมีก็ตามด้านล่าง

  • SmartObject ที่ต่อกับ table ที่เราจะดึงข้อมูลออกมา
  • Sub Workflow (แน่ล่ะ ไม่งั้นจะ start อะไร)
  • Main Workflow

SmartObject

จะเป็น structure แบบไหนก็ได้ แต่ควรจะมี status, ชื่อคนที่เราจะส่งงานให้ กับ id ของ main (ในที่นี้ผมใช้เป็น HeaderID) เอาไว้ filter เพื่อ start sub workflow

SMO

Sub Workflow

หลัง start workflow ก็จะมี update status และส่งงานไปหา user ที่เรากำหนดใน table

Sub Workflow

ส่วนที่เราต้องมีก็คือ variable สำหรับรับค่ามาจาก Main Workflow

Variables

Main Workflow

Main Workflow

Create Reference Step

สิ่งแรกที่เราต้องมีคือ step Create Reference เราจะต้องเลือก SmartObject นำมาเป็น reference เพื่อให้ step Loop เอาไปใช้

CreateReference1

ใน Filter เราใส่เพื่อดึงเอาเฉพาะ record ที่ Status = New และ HeaderID เท่ากับค่าที่ใส่มาใน Variable HeaderID

ที่ด้านล่างจะมีส่วนที่เรียกว่า Fill Reference ให้เรากด Create designer จะสร้าง Reference ให้เรา เป็นอันจบการ set reference

Loop Step

มาต่อกันที่ loop เมื่อลาก loop step แล้ว จะมีให้เราเลือกว่า จะ loop จาก reference อันไหน ให้เราเลือก reference ที่เราสร้างไว้

Loop1

หลังจากเลือก reference แล้ว K2 จะสร้าง reference เพิ่มให้เราอีกอัน เป็น reference ของ current row ที่เรากำลัง loop อยู่ คือ TaskAssignment.SMO Item ตามรูปด้านล่าง

Loop2

Call Sub Workflow Step

มาถึง Call Sub Workflow ให้เราเลือก Workflow ที่เราต้องการใช้งาน, ไม่เลือก Wait for sub workflow to complete และเอาข้อมูลจาก current item มาส่งเข้าไปใน variables ที่เราสร้างไว้ (มีใส่ id ไว้ใน folio ด้วย จะได้แยกออกว่า อันนี้เป็น sub workflow อันไหน)

CallSubworkflow

Test

เมื่อทำเสร็จแล้วก็มาทดสอบกัน โดยใส่ข้อมูลไว้ตามด้านล่าง

TestSubWorkflow1

ไปที่ Management Site ในการทดสอบ ผมใช้ HeaderID = 3

มาดูผลกันในหน้า report จะเห็นว่า เรา start Main workflow และมี IPC ที่เกี่ยวข้อง 2 instances

TestSubWorkflow4

TestSubWorkflow5

TestSubWorkflow6

ตัวอย่างนี้ทำด้วย K2 5.1 นะครับ แต่สำหรับ K2 5.0 วิธีทำก็จะเหมือนๆ กันครับ หวังว่า จะเป็นประโยชน์สำหรับคนที่ต้องทำนะครับ 🙂