Workflow Schedule ของเล่นบน Management Site ที่แอบซ่อนอยู่

สวัสดีครับ วันนี้ก็จะมาแนะนำ Feature ที่น่าสนใจอีกหนึ่งตัวนะครับ นั่นก็คือ Workflow Schedule ซึ่งเจ้านี้ความสามารถก็คือเราสามารถตั้ง Job Schedule สั่งให้ Start workflow ได้ตามใจชอบนั่นเอง ก็คือมันมาช่วยเราโดยที่เราไม่ต้องมานั่งเขียน coding เพื่อสร้าง Batch ขึ้นมาแหละครับ แล้วเราจะสร้างมันได้ที่ไหนต้องบอก Feature นี้จะติดมากับ K2 Management Site บน K2 Version 4.7 ครับ

1
ถ้าจะถามว่า Management Site คืออะไรมันถ้าเทียบง่ายๆมันคล้ายกับ workspace เดิมของเรานี่แหละ คร่าวๆก็จะมีกาเราก็สามารถจัดการ Permission workflow , Manage Instance workflow , Goto Activity และอื่นๆครับ ที่นี่มาถึงตัว Workflow Schedule  ที่เราพูดถึงกันมาดูวิธีการสร้างกันครับ
เมื่อเข้ามาใน Management site เมนูนี้จะอยู่ภายใต้ workflow Server นะครับ เมื่อเรากด New พร้อมที่จะเริ่มสร้างละ มาดูกันครับว่าเราต้องใส่อะไรบ้างถ้าอยากจะสร้าง Schedule
1. ScheduleName  ชื่อของ Job ที่เราจะสร้าง
2. เลือก Workflow ที่จะให้ Job  เลือกเพื่อสั่ง StartWorkflow
3. Workflow Detail  ในกรณีที่เรามี Data Field ที่จะส่งเข้าไป workflow เราสามารถส่งค่าเข้าไปได้ครับ

2

4.  Folio เลือกได้ว่าใช้เป็นวันที่ หรือ Text ที่ต้องการครับ
5.  Pattern  เลือกรูปแบบของ Job ที่ต้องการได้ เช่น ทำงานวันละครั้ง , เดือนละครั้ง หรือถ้าเป็น               Interval สามารถเลือกได้ว่าจะให้รันทุกๆนาที ชั่วโมง หรือวัน

4

6. Range   เลือกได้ว่าจะเริ่มรันวันไหน หรือจะให้สิ้นสุดวันไหน ครับ

เมื่อกำหนดค่าแล้วก็กด OK ได้เลยครับ เราจะได้ Schedule พร้อมทำงานกันแล้วครับ โดยสังเกตุที่ Enable นะครับ จะเป็น True คือพร้อมทำงาน จากนั้นก็รอเวลาตามที่ Config ไว้เลยครับ

5

เมื่อครบกำหนดเวลาลองเช็คที่ Column Success ดูนะครับ จะมี Result แจ้งอยู่ว่ามีการทำงานไปทั้งหมดกี่ครั้งครับ จากตั้วอย่างก็จะมี 2 Items คือมีการสั่ง Start workflow ไปแล้ว 2 ครั้ง

6

หรือจะเช็คที่ Instance ใน workflow ก็ได้นะครับ

7

ทั้งหมกก็คือเจ้าตัว Workflow Schedule นะครับ ก็หวังว่า Feature นี้อาจจะเข้ามาเป็นตัวช่วยให้สะดวกมากขึ้นนะครับ หากต้องพบเจอเงื่อนไขโปรแกรมในลักษณะที่เป็น job การทำงานที่ต้องมาสั่ง Start Workflow ครับ ขอบคุณครับ

Advertisements

ย้อน 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 ทั้งก้อน ก่อนจะเริ่มทำนะครับ

การสร้าง Custom Worklist แบบ Step by step (No coding)

การใช้งาน K2 กับ Worklist เป็นของคู่กันมานานนม ตั้งแต่สมัยใช้งานบน workspace จนมาถึงปัจจุบันก็มี worklist control ใน SmartForms ให้ใช้

โดยปกติ worklist control มี field ที่เกี่ยวกับการทำงานของ workflow เช่น Folio, Activity Name, Task Start Date และอื่น ๆ ให้เลือกแสดงได้อยู่แล้ว ซึ่งการใช้งานจริงเรามักอยากได้ worklist ที่มีข้อมูล ของระบบนั้นมาแสดงด้วย โดยทางออกที่เรามักจะทำกันคือการใส่ค่าแปะไว้ใน folio ของ workflow บางที Folio มันก็จะยาว ๆ หน่อยอ่ะนะ (- -“)

Leave00.png

แต่ในวันนี้มานำเสนออีกช่องทางครับ เป็นวิธีการทำ worklist ที่สามารถดึงข้อมูลระบบอื่นมาแสดงด้วย ในตัวอย่างจะเป็น worklist ของ ระบบ Leave request โดยจะมีข้อมูลประเภทการลา วันที่เริ่มลาจนถึงวันที่สิ้นสุด มาแสดงใน worklist ได้ด้วย ผลลัพท์ได้มีหน้าตาตามนี้ครับ

Leave11.png

สิ่งที่ใช้ในการทำ: Worklist Service Broker, Composite SmartObjects

Step by step

  1. ติดตั้ง Worklist Service Broker (ตามไป download ได้ตามลิ้งค์ด้านบนครับ)
    • WorklistService
  2. เพิ่ม field ProcessInstanceID ในตาราง leave request (ใน workflow เพิ่ม SmartObjects Event ให้ไป update ค่า ProcessInstanceID หลังจากส่งงานเข้า workflow ไปแล้วด้วย)
    •  Leave-table
  3. สร้าง composite SmartObject เชื่อมกันระหว่าง Leave Request  และ WorklistService
    • เปิด K2 Studio, สร้าง SmartObject ตั้งชื่อ LeaveRequestWorklist
    • Leave1.png
    • กด Add Method, เลือก Run the wizard in Advance Mode แล้ว กด Next
    • Leave6.png
    • ตั้งชื่อ method ว่า Get Leave Request Worklist แล้วกด Next
    • Leave3.png
    • ในหน้า Configure Method Parameter กด Next (ไม่ต้องสร้าง parameter)
    • ในหน้า Service Method Object กด Add
    • Leave13.png
    • ในหน้า Add Service Method กด Add เลือกไปที่ Service Object Server -> [SQL Service Instance Name] -> Table -> Leave Request -> List
    • Leave4.png
    • กด Create All เพื่อสร้าง properties แล้วกด OK
    • Leave3.png
    • โปรแกรมจะกลับมาที่หน้า Service Method Object กด Add อีกครั้ง
    • Leave12.png
    • ในหน้า Add Service Method กด Add เลือกไปที่ Service Object Server -> Worklist Server -> Basic Worklist Item -> Get Worklist Items
    • Leave7.png
    • กด Create All เพื่อสร้าง properties แล้วกด OK
    • กด Next
    • ในหน้า Setup Service Method Link กด Add
    • Leave9.png
    • ในหน้า 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 ตามรูป
    • Leave10.png
    • กด OK
    • กด Next, กด Finish
    • Deploy SmartObjects
  4. ทดสอบและนำ SmartObjects ไปสร้าง ListView, form ต่อเพื่อใช้งาน
    • ตอนเรียกใช้งานก็เรียกผ่าน method ที่เราสร้างขึ้นครับ มันจะได้เฉพาะงานจาก worklist เท่านั้น แล้วจะไป join กับ field จากตาราง Leave Request
    • Field ที่ใช้ฝั่งของ worklist จะมีดังนี้ครับ
      • Link: เป็น URL ที่ส่งมาจาก workflow สำหรับเปิดหน้าฟอร์มเข้าไปอนุมัติ
      • Folio: ชื่อ folio ของ workflow นั้น ๆ
    • Leave11

 

สรุปข้อดีของการทำ custom worklist

  • เพิ่ม field จากฐานข้อมูลมาแสดงผลได้
  • สามารถใช้ฟังก์ชั่นของ list view ได้ เช่น การ sorting, filter, paging

แต่ก็มีข้อจำกัดของการทำ custom worklist นะ

  • ไม่สามารถใช้ function ที่ติดมากับ worklist control ได้ เช่น  Redirect, Delegate, Out of office (ทำได้แต่ต้องเขียนเพิ่มเอง)
  • ต้องสร้าง SmartObjects และ form แยกสำหรับแต่ละระบบ

 

การสร้าง custom worklist ขั้นตอนก็มีดังที่กล่าวไปข้างต้น รวมถึงมีทั้งข้อดีข้อเสีย ทั้งนี้ขอให้เลืิอกนำไปใช้ให้เหมาะสมกับงานของเราครับ 🙂

5 extensions น่าใช้และฟรี!! ใน K2 Community (ภาคหนึ่ง)

อีกหนึ่งความสามารถของ K2 คือส่วนของ Extension หรือการ customize ความสามารถในการทำงานของ K2 เช่น การเขียน custom control ดังที่เคยเขียนไปใน blog ก่อนหน้า

แต่เดี๋ยวก่อน…ก่อนจะเริ่มลงมือเขียนตั้งแต่ต้น ผมขอแนะนำให้ไปส่องดูที่ K2 Community ดูก่อน ว่ามีคนทำไว้แล้วหรือไม่ จะได้ไม่ต้องเริ่มเองใหม่ทั้งหมดเนอะ โดย Blog ภาคแรกนี้ได้รวม extension น่าใช้งานในส่วนของ control หน้าบ้านเอาไว้ 5 ลำดับ (ตามความชอบใจของผู้เขียน)

ลำดับที่หนึ่ง: Highchart (Download Link)

แจ่มแจ๋วและน่าใช้สุด ๆ กับ Highchart Control ที่ช่วยสร้าง report จาก smart object ได้ง่ายดาย ดึงข้อมูลขึ้นมาผ่าน ADO.Query นะครับ (ใช้ไม่ยากหรอกนา เขียนคล้ายๆ SQL Statement นั่นแล)

Example_LineChart

***  Hightchart requires a license for commercial use ***

ลำดับที่สอง: K2 Menu System (Download Link)

K2 นั้นมี Workdesk ที่เป็นลักษณะของ portal ที่รวมเมนูให้ใช้งานกันได้ฟรี ๆ อยู่แล้ว แต่ถ้าเราอยากลองใช้เมนูที่มีลูกเล่นมากขึ้น, แสดงเมนูได้ทั้งด้านบน ด้านข้าง, เปลี่ยน stylesheet ได้มากกว่าเดิม… K2 Menu system เป็นอีกหนึ่งตัวเลือกในการทำ portal ของคุณได้อย่างแน่นอน

original

ลำดับที่สาม: Form Progress Bar (Download Link)

“View flow ดูบน IE ไม่ได้?” , “View flow ดูแล้วเข้าใจยากจัง มีที่ดูง่ายกว่านี้มั้ย?”

คำตอบคือ มีครับ 🙂 ไป download มาติดตั้งตาม link ข้างบนได้เลย หน้าตาจะเป็นลักษณะรูปขั้นตอนการทำงาน สีเขียวคือทำไปแล้ว และสีฟ้าคือรอการพิจารณาอยู่ ทำให้เราสามารถเช็คได้ว่างานไปค้างอยู่ที่ไหนแบบไม่ซับซ้อนและเข้าใจได้ง่ายดี

9-23-2015 12-12-22 PM.png

ลำดับที่สี่: Digital Signature V2 (Download Link)

ถ้าสวมหมวก developer คุยกัน…กี่ครั้งแล้วที่เราบอกผู้ใช้งานว่ามี digital signature ในระบบเรา แล้วเราก็เอารูปลายเซ็นต์มาแปะที่หน้าจอ… ครั้งนี้แหล่ะครับ เราจะได้ให้เค้าเซ็นต์จริงๆ แล้วนะ

sign

และลำดับที่ห้า: Multilingual smartforms (Download Link)

อยากใช้งานหน้าจอ smartform ได้หลายภาษา ทำยังไงดูตัวอย่างการ configure และการใช้ตาม video เลย

ทุก extension จะมีคู่มือการติดตั้งและการใช้งานให้ อ่านก่อนใช้นะจ้ะ

Note: ของใน Community โหลดมาใช้งาน ถ้าเจอบั๊ก เปิด ticket ไม่ได้นะ แต่สามารถโพสต์ถามใน community, Email ไปถามเจ้าของ extension หรือส่วนใหญ่เจ้าของก็มักจะแจก source code ให้เรามาด้วยอยู่แล้ว จะเอามา debug เพื่อแก้หรือเขียนเพิ่มไปเลยก็ได้ครับ

List View Scroll bar with JS

หลายคนคงเคยเจอปัญหากับการแสดงผลของ list view ในกรณีที่มีคอลัมน์ใช้งานเยอะๆ คอลัมน์จะมีความกว้างน้อยทำให้การใช้งานค่อนข้างสะดวกจะไม่สะดวก ซึ่งผมก็เจอปัญหานี้เช่นกันโดยผมใช้เจ้าตัว Java Script เข้ามาช่วยเพื่อให้ UI ของเรา มีหน้าตาที่ดูง่ายยิ่งขึ้น ซึ่งผมมีปัญหากับ List view ที่ต้อง
แสดงผลคอลัมน์เป็นจำนวน 20 คอลัมน์ ซึ่งเมื่อแสดงผลก็เป็นอย่างที่เห็นแหละครับ ดูกันไม่รู้เรื่องเลยว่าอะไรเป็นอะไร

SB1

อย่ารอช้ามาดูวิธีกันเลยครับว่าจะเอาเจ้า JS มาช่วยยังไง

  1. ไปที่ฟอร์มที่มีการใช้งาน List View สร้าง Data Label ขึ้นมาหนึ่งตัวครับSB2
  2.  จากนั้นให้ดำเนินการใส่ Expression ให้กับตัว Data Label ที่เราสร้างขึ้นมานะครับ โดยใน Expression เราจะใส่ JS เข้าไปนี่แหละSB3
  3. ดำเนินการใส่ Script ได้เลยครับSB4

Script ที่เราจะใช้คือ

SB9

สำหรับ  name=’ScollBar.Form Area Item‘ จะเป็น name ของ view ที่เราต้องการจะให้มี scroll bar นะครับ ซึ่งถ้าเราหาไม่เจอว่าไอเจ้าชื่อ name ของ view เนี่ยอยู่ตรงไหนให้ดูที่หน้าฟอร์มได้นะครับ โดยจะอยู่ในส่วนของ Properties ด้านขวามือครับ สามารถ copy ไปวางใน script ได้เลยครับ

SB5

เมื่อดำเนินการใส่ Script ที่ Expression เสร็จเรียบร้อยแล้วให้ดำเนินการในขั้นตอนถัดไปได้เลยครับ

4. ให้เลือกไปที่ List View นะครับ โดยขั้นตอนนี้เราจะใส่ความกว้างของ List View ครับ โดยเราสามารถใส่ได้ตามใจชอบนะครับ ว่าอยากให้ List View ของมีความกว้างเท่าไร โดยสามารถปรับความกว้างได้ที่ Properties ของ List View ครับ  ซึ่งจากตัวอย่างผมใส่เป็น 2400px ครับ เพราะผมมีคอลัมน์ค่อนข้างเยอะ ยังไงก็ลองปรับให้เข้ากับหน้าจอที่จะนำไปใช้งานดูครับ

SB6

เสร็จแล้วก็ถึงเวลา RUN Test ดูครับ จะเห็นว่าจะมี Scroll Bar เกิดขึ้นอยู่ด้านล่าง และ คอลัมน์ขยายความกว้างตาม Header ซึ่งก็ค่อนข้างดูง่ายขึ้นกว่าเดิม ยังไงถ้าท่านใดเจอปัญหาการแสดงผลของ list view แบบนี้ลองนำไปใช้ดูกันนะครับ หวังว่าคงจะเป็นประโยชน์กันนะครับ

SB7

SB8

[K2 SmartForms] – Confirmation Popup Trick

สวัสดีครับอาจจะมีหลายๆท่านงงหรือสงสัยกับการเรียกใช้ rule Get confirmation เพื่อแสดงข้อความ Pop up แจ้งเตือน User หากท่านใดไม่งงแล้วก็เลื่อนไปดู trick ด้านล่างๆได้เลยนะครับข้ามการใช้ไปได้เลยโดยการแสดง popup ของ K2 SMF เนี่ยเราสามารถเรียกใช้ได้ผ่าน rule Get confirmation ดังภาพด้านล่างครับ
get-confirm-1
get-confirm-2

หลายๆท่านอาจจะเจอปัญหาว่าหากมีการ config rule อื่นๆที่มีการ validate เพิ่มเติมต่อจาก rule Get confirmation เมื่อใช้งานจริงเวลา กด cancel ใน pop up comfirm แล้ว Rule ที่เหลืออยู่ยัง execute ทำงานต่อไปซึ่งไม่ถูกต้องจริงๆแล้วหลักการทำงานที่จะทำงานถูกต้องต้อง Config แบบนี้ครับคือ เพิ่ม advanced condition ที่โดยใส่เงื่อนไข 1=1 เข้าไป   get-confirm-2-1  จากนั้น config rule ตาม รูปภาพ ด้านล่างครับ เราสามารถเรียก rule อื่นๆหลังจาก User กด cancel ได้หรือไม่อยากให้ทำอะไรก็เพิ่ม rule transfer data ไปเฉยๆได้ครับ
get-confirm-3

ตอนทำงานจริงนั้นเรามันจะมีการ validate ค่าเป็นจำนวนมากหากทำตามวิธีด้านบนจะค่อนข้างยุ่งยากครับ technic ที่เราสามารถทำได้คือให้ rule ที่มีการ validate มากมายหลายแหล่เป็น Fucntion หรือ rule ลอยๆแทนซะยกตัวอย่างเช่น ผมทำการ validate มากมายจากนั้น Hilight สีนำเงินผมตั้งชื่อ Rule ชุดนี้ว่า FnSaveMainForm ดังภาพด้านล่างจากนั้นกด Save
get-confirm-4

จากนั้นที่ปุ่มเราต้องการแสดง Pop up Confirm ให้ใช้วิธีเรียก Execute another rule แทนดังภาพ ด้วยวิธีนี้การทำงานของ Pop up จะถูกต้องครับ
get-confirm-5

ทีนี้มีคำถามว่า Comfirm pop up สามารถ เพิ่ม size popup ,ใส่ header ,ใส่ template ,ใส่ค่าตัวแปร บลาๆๆ ไปได้ไหม???
คำตอบคือ ไม่ได้ครับ!!! 5555+

แต่เรามีทางออกให้ดังนี้คือแต้นแต๊นนนนน ใช้ rule Show a message แทนซิคร้าบพี่น้องง
get-confirm-6

แต่มีข้อแม้คือต้องเลือก Message Type เป็น Confirmation นะครับ ทีนี้เราสามารถลาก Control ต่างๆมายำใส่ในนี้ได้เลยแม้กระทั้งใส่ Tag Html เพื่อการแสดงผลที่ต้องการก็ยังได้เรื่อง size ก็สามารถปรับได้อีกทั้งการทำงานยังเหมือนกับใช้ rule Get confirmation ทุกประการครับ
get-confirm-7

เอาละลองกดดูจากที่ Config ได้ผลลัพตามภาพเลยครับผม
get-confirm-8

วันหลังจะมาแชร์ทริคอื่นๆอีกนะครับ บ้ายบาย

Test on K2 version
4.7
4.6.11

 

[K2 SmartForms] Log Out Button

สวัสดีครับทุกท่านครับ วันนี้มาเสนอ solution สำหรับทำปุ่ม logout ซึ่งก่อนที่จะทำ solution นี้อาจจะต้อง set K2 SmartForms ไปใช้ form authentication ก่อนนะครับ ซึ่งสามารถดูรายละเอียดตามนี้ครับ [K2 SmartForms] – เรื่องเกี่ยวกับ Authentication

เมื่อเราทำการติดตั้ง K2 Smartform เสร็จแล้วใน site K2 runtime หรือว่า K2 designer จะมี folder _trust สังเกตุเห็นว่ามี logout.aspx และ login.aspx อยู่ดังภาพ

logout-1

ทีนี้สิ่งที่เราจะทำก็คือสร้าง ปุ่มขึ้นมา 1 ปุ่มเพื่อทำเป็นปุ่ม logout แล้วทำการ Config rule ดังภาพครับ
logout-2

logout-3

Base URL:  https://k2.denallix.com/Runtime/_trust/logout.aspx
Note : [K2 url]/Runtime/_trust/logout.aspx or [K2 url]/Designer/_trust/logout.aspx

 จากนั้นลองมา Test ที่ Runtime กันครับ เมื่อเราทำการกดปุ่มที่เรา Config เสร็จแล้วหน้า Page K2 จะขึ้นให้ทำการ login User ดังรูปครับ ซึ่ง session ของ User ที่ทำการ login อยู่ขณะนั้นจะถูก clear ทิ้งทันทีถึงแม้ว่าเรากำลังเปิด tab อื่นๆอยู่หากไปทำการ refresh tab อื่น หน้าจอจะกลับไปแสดงหน้า login อยู่ดีครับ
logout-4

เมื่อทำการ login อีกครั้งโดยยังไม่ปิด browser จะปรากฎ page default ของ K2 SmartForm ดังภาพครับ
logout-5
ซึ่งจะมีคำถามต่อมาว่า อ้าววววว สามารถให้ไปหน้าที่เราต้องการหลังจาก login อีกครั้งไหมคำตอบคือได้ครับทางออกมี 2 วิธีเท่าที่ทราบตอนนี้คือ

1.ทำการ  แก้ไข file default.aspx  ซึ่ง file อยู่ที่ Path “C:\Program Files (x86)\K2 blackpearl\K2 smartforms Runtime\default.aspx”
โดยทำการเพิ่ม java script เพื่อให้ redirect ไปหน้าที่เราต้องการครับ

ก่อนแก้ไข  default.aspx
logout-6

เพิ่ม java script ลงใน tag </head>

function redirect() {
window.location.assign(“~/form/Test+Logout/”)
}

เพิ่ม  onload ลงใน tag </body>
<body onload=”redirect();”>

หลังทำการเพิ่ม Java script  file default.aspx
logout-7

2. Config rule ให้ navigate ไป [K2 url]/Runtime/_trust/login.aspx แทนพร้อมทั้งระบุ parameter ReturnUrl หน้า page ที่ต้องการให้ไปหลังจากทำการ login อีกครั้ง สามารถดูรายละเอียดได้ด้านล่างครับ

logout-8

Comfig Parameter

Name value
ReturnUrl %2FRuntime%2FRuntime%2FForm%2FTest+Logout%2F
_sessionUpdate  1

Note :  %2FRuntime%2FRuntime%2FForm%2F[SmartFormSystemName]%2F

หากมีท่านใดเจอแนวทางอื่นสามารถแนะนำเข้ามาได้ครับ  🙂

Test on K2 version
4.7
4.6.11

[K2 SmartForms] Custom Error Message in App_Globalresources

ก่อนอื่นต้องบอกก่อนนะครับว่า สำหรับ Error  Message ที่ผมนำมาเปลี่ยนให้ดูนั้นเป็นเพียงส่วนนึงเท่านั้นนะครับ ต้องลองเข้าไปดูนะครับ จะมี Message อีกหลายๆตัวที่คุ้นหน้าคุ้นตากันเป็นอย่างดีแน่นอนครับ  จากรูป List View ด้านล่าง ผมเลือกใช้ Quick Search เพื่อค้นหาค่าจากคอลัมน์ที่มี Data Type เป็น int นะครับ จะเห็นว่าเจ้า K2 Smart forms จะแสดง Error เป็น ภาษาอังกฤษ ซึ่งบางคนอาจจะเคยเจอคำถามจาก user ว่าเปลี่ยนได้ไหม ซึ่งแน่นอนครับ มันเปลี่ยนได้

1

ซึ่งพวกข้อความนี้จะเก็บเป็น  App_Globalresources อยู่ที่ Folder
[InstallDrive:]\Program Files (x86)\K2 blackpearl\K2 SmartForms Runtime\App_Globalresources\RuntimeMessages.resx  ครับ  ซึ่งแน่ก่อนจะเปลี่ยนแนะนำให้ backup file ไว้ก่อนนะครับ  ถ้าลองเปลี่ยนไฟล์มาดูจะพบข้อความ ที่หลายๆคนน่าจะเคยเห็นตอนใช้งาน K2 นะครับ ก็ลองเลือกเปลี่ยนกันดูนะครับ เปลี่ยนแล้วก็ Save File ด้วยละครับ

3

ผมทดลองเปลี่ยนจากข้อความภาษาอังกฤษมาเป็นภาษาไทย ดูอ่านเข้าใจง่ายขึ้นครับ  ยังไงก็ลองเก็บไว้เป็นอีกทางเลือกนึงละกันนะครับ เผื่อเจอคำถามจาก user ว่าเปลี่ยน ได้ไหม อิอิ

4

ขอบคุณที่สละเวลามาอ่านนะครับ ยังไงมีเรื่องราวดีๆจะเก็บมาแชร์ให้อีกนะครับ บายๆครับ

[K2 SmartForms] – วิธีทำให้ click หรือ double click ที่ worklist control เพื่อเปิด Form

วันนี้ขออธิบายอย่างมาไวไปเร็ว ถึงวิธีที่ทำให้ worklist control สามารถกดเพื่อเปิดงานได้เลย โดยไม่ต้องกดที่เมนูแล้วเลือก Open Form นะครับ

worklist3

  1. สร้าง form แล้วลาก worklist control ไปแปะ
  2. Configure Rule ตามรูปเลยครับ
      • When Worklist is Clicked
      • Navigate to URL

    worklist1

  3. เข้าไป configure ใน rule Navigate to URL
      • ใน Context Browser ให้ไปที่ Form -> Control -> Worklist -> Data แล้วหา field ชื่อ Worklist item URL มาลากใส่ใน Base URL
      • Open In แก้เป็น New Window (or Tab)

    worklist2

  4. เสร็จแล้วครับ 🙂 ทดสอบดูแล้ว …ไม่ว่าเรากดที่ field ไหนใน worklist control ก็จะเปิดหน้า form มาให้เราทำการอนุมัติได้ครับ

*ทดสอบบน K2 4.6.11 นะครับ

[K2 Smart Forms] Dropdownlist Control Sort

สวัสดีครับ วันนี้จะมาว่ากันด้วยเรื่องการทำ sort data กับ  SQL Collation  ซึ่งแต่ละแบบก็จะมีผลลัพธ์ของการ sort ข้อมูลกับตัว dropdownlist ที่แตกต่างกัน
ที่เขียนกระทู้นี้ขึ้นมาเพราะผมไปเจอปัญหาว่า ต้องการ sort ข้อมูล master data
ที่ตัว dropdownlist ให้เรียงตามลำดับตัวอักษร ก-ฮ   ซึ่งวิธีทั่วไปก็แน่นอนว่าเราต้องไปที่
rule populate Drop-Down List Control with Data  และเลือกใช้ sort ค่าใน column
ที่ต้องการซึ่งไอเจ้าข้อมูลดังกล่าวที่เป็น master data เนี่ย โดยทั่วไปแล้วเราก็จะสร้าง ก้อน database ไว้เพื่อเก็บข้อมูลซึ่งถ้าเราสร้างโดยไม่คิดอะไรก็กดสร้างมันขึ้นมา สร้าง Table ใส่ข้อมูล ผูกเข้ากับ smo เพื่อดึงมาใช้ที่ dropdownlist  ซึ่งถ้าตามสเต๊ปการ Config ที่หน้าจอแล้วมันก็ควรจะเรียงให้เพราะสั่ง sort มันแล้ว แต่สิ่งที่เกิดคือมันไม่เรียงนะซิครับ
EN2

Untitled

ซึ่งสาเหตุที่ไม่เรียงก็เกิดจากเจ้าตัว sql collation ของเราที่กำหนดไว้ตั้งแต่แรกนี่แหละ ซึ่งถ้าลองไปเช็คดูที่ก้อน Database จะเป็น Type เหมือนในรูปภาพครับ

EN
ซึ่งถ้าเราจะ sort ตัวอักษรภาษาไทยอาจจะมีปัญหาเหมือนเคสตัวอย่างที่ผมบอกไปตามข้างบนครับ โดยสิ่งที่ผมแก้ก็คือไปเปลี่ยนเจ้าตัว sql collation ตัวนี้ให้เป็นภาษาไทยซะ
TH

ลองแล้วเปิดหน้าฟอร์มดูสิ่งที่แตกต่างคือที่ Drop-Down List ทำการ sort ค่าให้

TH2

เผื่อมาขาเดฟท่านไหนเคยเจอปัญหาแบบนี้ลองแก้ด้วยวิธีนี้ดูครับ แต่บางทีการเปลี่ยน sql collation ของก้อน database ก็อาจจะไม่ใช่เรื่องง่ายเพราะบางครั้งอาจจะมีข้อมูลเยอะละก็ format data ที่แตกต่างกันไปของแต่
ละที่ ที่ใช้งาน ยังไงก็ฝากเพื่อนๆขาเดฟ ไว้เป็นข้อระวังเพิ่มเติมตอนทำโปรเจคแล้วกันนะครับ

 

ขอบคุณครัช