Task Name and Goto Activity in K2 Five

Pattarawat Teparagul
Mar 7 · 3 min read

หลายๆ คนคงรู้จัก function หนึ่งของ K2 ที่เอาไว้ใช้สำหรับย้ายงานไปที่ step ไหนก็ได้ โดยวิธีที่เราเรียกใช้ได้จะมี 3 ทางด้วยกัน

ทางแรก ทำผ่าน K2 Management Site หรือ K2 Workspace (ใน version ที่เป็น K2 blackpearl) พอกดปุ่ม “Go To Activity” ก็จะขึ้นชื่อ Step ที่ต้องการให้เลือกได้เลย

Go To Activity in K2 Management Site
Step to select in Go To Activity

ทางที่สอง เราสามารถทำผ่าน API ได้

Coding reference from https://help.k2.com/support-services/kbt154330

ทางที่สาม K2 มี SmartObject มาให้ใช้ (เพิ่งมีใน K2 Five ถ้าเราใช้ K2 blackpearl เราต้องสร้าง Endpoint Assembly หรือ Endpoint Webservice เพื่อ link ไปที่ dll หรือ web service ที่เราทำไว้เอง) โดย GoToActivity SmartObject จะอยู่ใน K2 Management => Workflow => Management => Management Service

K2 Management Service Type
Go To Activity Service Object

โดยทางที่สอง และสามที่เราใช้ parameter ที่ต้องใช้ก็คือ Process Instance ID ของ process ที่เราต้องการจะย้ายงาน กับชื่อของ Step ที่เราต้องการจะย้ายไป

Go To Activity Parameters

ปัญหาที่เจอ

การใช้งาน function ก็ดูค่อนข้างตรงไปตรงมา คือ ใส่ id ของ workflow instance ที่เราใช้ กับชื่อ step ที่จะย้ายงานไป แต่ลองมาใช้งานกันดู

ขั้นแรก ลองเปิด workflow ออกมา เพื่อดูชื่อ step กันก่อน

Workflow Design

ใน workflow เรามี Task ชื่อ “Manager Approval” อยู่ เรามาลอง Go To Activity ไปที่ Step “Manager Approval” กันดู

Error Activity Not Found

ปรากฎว่า หา Step นั้นไม่เจอ แต่ว่าทำไมล่ะ???

สาเหตุของปัญหา

ถ้าเราไปดูชื่อของ step ใน workflow เราจะเห็นว่า K2 เก็บชื่อ step ของ workflow ไว้ 2 แบบด้วยกัน คือ System Name กับ Display Name

Name and Display Name

ถ้าเป็น workflow ใน version เก่า (K2 blackpearl) เราจะไม่เจอปัญหานี้ เพราะว่า ตัว tool (K2 Studio กับ K2 for Visual Studio) จะให้บังคับให้เราตั้งชื่อ step ให้ไม่ซ้ำกันใน workflow อยู่แล้ว แต่ใน designer ของ K2 Five เราจะตั้งชื่อ step ซ้ำกันได้ ซึ่งที่เอามาแสดงใน workflow คือ Display Name นั่นเอง

Solution

เรามีวิธีเข้าไปดู System Name ของ step อยู่ด้วยกัน 2 แบบ คือ เข้าไปดูใน database กับดูผ่าน SmartObject โดยใน blog นี้เราจะใช้วิธีดูผ่าน SmartObject กัน

อย่างแรกให้ไปหา SmartObjects ชื่อ “Process” (หาได้จาก All SmartObjects ที่อยู่ล่างสุดของ SmartObjects Service Tester) จากนั้นให้ลองเลือก method “List” แล้วก็หาว่า Workflow ที่ต้องการชื่ออะไร ให้เราจำ ProcID มาใช้ต่อ บาง Workflow อาจจะมีหลาย version ให้ดู version ให้ถูกด้วยนะครับ

Process SmartObject

จากนั้นก็มาหา SmartObjects ชื่อ “Activity” (หาได้ใน All SmartObjects เหมือนกันนะครับ) ใส่ parameter เป็น ProcID ที่หามาจาก Process SmartObject เราจะได้ System Name และ Display Name

ลองเอาไป System Name ไปใช้ดู ก่อนหน้านี้ที่ Error ผมใช้ “Manager Approval” ลองใส่เป็น “Task” ดู

Go To Activity Complete

เป็นอันว่า สามารถใช้ Go To Activity ได้เรียบร้อย ถ้าใครติดปัญหานี้ก็เอาไปลองใช้กันดูครับ :)

K2 Dev — TH

A K2 platform development’s tip and trick in Thai languague

Pattarawat Teparagul

Written by

A K2 platform technical consultant from Thailand.

K2 Dev — TH

A K2 platform development’s tip and trick in Thai languague

Welcome to a place where words matter. On Medium, smart voices and original ideas take center stage - with no ads in sight. Watch
Follow all the topics you care about, and we’ll deliver the best stories for you to your homepage and inbox. Explore
Get unlimited access to the best stories on Medium — and support writers while you’re at it. Just $5/month. Upgrade