ย้อน version ของ K2 component ยังไงกันนะ?

Blog นี้เริ่มจากคำถามจากทางบ้านนะครับ ว่าในการพัฒนา K2 เห็นมีการเก็บ version ไว้ ทั้ง Workflow , SmartForm และ SmartObject

version.png

แต่ยังหาวิธีการย้อน version ไม่เจอว่าต้องทำยังไง ใน blog นี้เลยจะบอกวิิธีการของแต่ละส่วนครับ

1. Workflow

เริ่มด้วยการย้อน version ของ workflow ก่อนนะครับ เพราะเป็นส่วนที่ทำได้ง่ายที่สุดแล้ว เราสามารถเข้าไปดู version ของ workflow ได้ผ่านทาง K2 Workspace หรือ K2 Management (สำหรับ version 4.7 ขึ้นไป)

สำหรับ K2 Workspace ไปที่เมนู [Server name] -> Workflow Server -> Processes -> [Process Name] -> Versions

processVersion.png

สำหรับ K2 Management ไปที่ Workflow Server -> [Workflow name] แล้วกดที่ tab Versions

processVersion47

โดยในทั้งสองไซต์ เราสามารถเลือกย้อน version ในการทำงานของ workflow ได้โดยเลือกกดที่ Set as default (มีผลเฉพาะกับ workflow ที่ยังไม่ start มานะครับ) และสามารถเลือก Download workflow version นั้น มาแก้ไขได้อีกด้วย

2. SmartForm

การย้อน version ของ smartform สามารถทำได้โดยใช้ stored procedure ที่ชื่อ Form.mRevertToVersion โดยสามารถย้อนได้ทั้ง View และ Form

สามารถตามไปอ่านวิธีการ step by step ได้ที่ -> How to roll back to a deleted or previous version of a View or a Form

3. SmartObjects

SmartObject นั้นเก็บโครงสร้างอยู่ที่ database ของ K2 แยกตาม version ที่ deploy ไป ดังนั้นการย้อน version SmartObject นั้นต้องทำตรงที่ database เลย โดยไม่ได้มี stored procedure ช่วย เหมือนการย้อน SmartForm

วิธีการทำก็คือ ต้องใช้ SQL Command ในการ update โดยนำ XML ใน SmartObjectXML ของ version ที่ต้องการย้อนกลับไป นำมาอัพเดทให้ version ล่าสุดนั่นเอง

smoVersion.png

ย้อน version SmartForm กับ SmartObject เป็นการทำงานตรงกับ database ของ K2 ซึ่งอาจมีโอกาสเกิดความผิดพลาดกับ database แนะนำว่าไม่ควรทำบนเครื่อง Production และให้ backup database K2 ทั้งก้อน ก่อนจะเริ่มทำนะครับ

Advertisements

[K2 blackpearl] – หาชื่อคนทำ action ใน activity

สวัสดีครับ กลับมาอีกครั้งกับ blog ของ K2 Ranger คราวนี้เป็นคำถามเกี่ยวกับ workflow โดยปกติ K2 จะมี log อยู่แล้วว่า ใครทำอะไร และทำเมื่อไหร่ ซึ่งสามารถดูได้จาก report ของ K2 หรือใช้ SmartObject ชื่อ “Activity Instance Destination” (อยู่ใน category Workflow Reports -> Workflow General ดึงข้อมูลออกมาแสดง)

Activity Instance Destination

แต่ทีนี้มีคำถามว่า ถ้าเราอยากดึงข้อมูลใน workflow ณ ขณะนั้นหลังจาก user ทำ action มาเลยได้ไหม??? เพราะเราอยากจะส่ง email ไปแจ้งเตือนว่า มีคนทำ action นี้ หรือบางกรณีเพื่อเก็บชื่อคน action ใน activity นี้ส่งไปทำงานใน activity ถัดไป

อย่างแรกที่ต้องทำคือ set plan ใน Destination Rule Options เป็น “All at once” ซึ่งการเปลี่ยน plan ตรงนี้ต้องกดเข้า Advance Mode ของ Destination Rule ก่อน

All at Once

จากนั้นขึ้นกับว่า เราจะอยากได้ข้อมูลอะไรของ user ที่ใช้บ่อยๆ ก็จะเป็น Name (SAMAccount name ใน AD), Email หรือ FQN ไปเก็บไว้ที่ไหน ในรูปจะเป็นการ transfer FQN ของ user ใส่ datafield เพื่อนำไปใช้ต่อผ่าน Data Event แต่เราก็สามารถเอาไป save ลงใน database ผ่าน SmartObject event ก็ได้เช่นกัน โดยต้องเอา Data Event หรือ SmartObject Event นั้นใส่ไว้ใน activity เดียวกันกับ activity ที่ user ทำ action

Activity

Activity Destination Instance

ถ้าเราไม่ได้เข้า Advance Mode แล้วเปลี่ยน plan เป็น “All at once” การดึงข้อมูล user ตรงนี้จะได้เป็นข้อมูล service account หรือได้ค่าว่าง (จำได้ว่า ก่อน 4.6 จะเป็นค่าว่าง แต่มีคนเทสตอนเป็น 4.6.11 แล้วได้ service account)

สำหรับคราวนี้ขอจบแต่เพียงเท่านี้ครับ สวัสดีครับ