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 เพื่อแก้หรือเขียนเพิ่มไปเลยก็ได้ครับ

Advertisements

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 ที่แตกต่างกันไปของแต่
ละที่ ที่ใช้งาน ยังไงก็ฝากเพื่อนๆขาเดฟ ไว้เป็นข้อระวังเพิ่มเติมตอนทำโปรเจคแล้วกันนะครับ

 

ขอบคุณครัช

[K2 Advance SmartObject] เปลี่ยน Method Binding ไปยัง Data Source ใหม่ ด้วย Package Deployment

สวัสดีครัช  แน่นอนว่า advance smart object เป็นสิ่งที่เหล่าเดฟเลือกใช้ในโปรเจคของท่าน
แต่ถ้าวันนึง Data Source ปลายทางของท่านเกิดมีการเปลี่ยนแปลงไม่ว่าจะย้าย Server หรือย้ายก้อน database    เจ้าตัว smart object นี่คงต้องย้ายตาม  แต่ไม่ยากอย่างที่คิด ด้วย Tool เทพที่ชื่อ K2 Package and Deployment นี่แหละคับ สามารถเปลี่ยนได้ในพริบตา   มาลองดูวิธีกันครับ
จากตัวอย่าง ผมสร้าง smart object โดยมีปลายทางชี้ ไป Table ที่อยู่บน
SQL server ชื่อ DB Server 1  ดังในรูปเลยครับ

2

ซึ่งวันนี้เกิดมีการเปลี่ยนแปลงตัว SQL Server อย่างที่บอก แน่นอนอยากแรกคือเราต้อง Register Service Instance ไปยัง Server ใหม่ที่ต้องการ และทำการย้าย Schema ตามไปด้วย โดยไม่ว่าจะเป็น Schema , Store Procedure ,View ต้องเป็นชื่อเดียวกันนะครับ

1

จากนั้นก็เปิดตัว K2 package and Deployment  ทำการ Create Package โดยเรียกไปที่ smartobjecgt ที่เราต้องการจะย้าย เช็คให้ชัวร์ด้วยเราเลือก Service Instance ตัวเดิม ติดมากับ package ด้วย

3

เมื่อได้ package แล้วให้เปิดตัว K2 package and Deployment อีกครั้ง คราวนี้เราจะมาทำการดีพลอย ตัว package ที่สร้างขึ้น  ตอนที่จะเลือก package ที่จะดีพลอจะเห็นตัว smartobject จะติด service instance ตัวเก่ามาด้วย ตรงนี้เราคลิ๊กขวาละเลือก Over Write Instance ซะนึงที

4

จากนั้นให้คลิ๊กขวาอีกทีเลือกไปที่ Configure คราวนี้เราจะเลือกชี้ไปที่ Service Instance ตัวใหม่ที่เราทำการ Register มาก่อนหน้านี้ เลือกเสร็จแล้วให้กดดีพลอย

5

เมื่อดีพลอยสำเร็จให้กลับไปเช็คที่ K2 Designer เลือกไปที่ Smart Object จะเห็น ตัว Service ที่ผูกไว้กับ Smart Object ได้เปลี่ยนไป

6

เสร็จแล้วก็ลองเทส execute smart object กันดูครับ

step ก็มีประมานนี้ครับ หลักๆ ก็ต้องย้าย schema , view , store procedure ให้เหมือน environment เก่า
และชื่อก็เหมือนเดิมจะดีที่สุดครับ

Update File ใน SmartObject ผ่าน SmartFileProperty

สวัสดีครับ พอดีมี Code Review กันในกลุ่มน้องๆ เลยเอา Solution นี้มาแชร์ครับ เป็นการ update เนื้อไฟล์ ผ่าน SmartFileProperty อันนี้เป็นวิธีที่เราใช้แปะ Signature และเขียน Activity log ไว้ในเนื้อเอกสารครับหลังจากการอนุมัติ  เนื้อหาต้นฉบับ

สำหรับ SmartObject ที่มีการเก็บ File เป็นหนึ่งใน Property ของ SmartObject นั้น เราสามารถดึง File ผ่าน SmartFileProperty มาแก้ไขเนื้อไฟลได้ในระหว่าง Workflow ยกตัวอย่าง Business Scenario ที่น่าจะเกิดขึ้นได้ดังนี้

  • ต้องการสร้างหน้าสรุปผล หลังจากเอกสารผ่านการอนุมัติเป็นที่เรียบร้อย เช่น มีการแปะ Log Activity ที่หน้าแรกว่า เอกสารผ่านการอนุมัติเมื่อวันไหน, Flow ในการเดินของเอกสารเป็นอย่างไร, ใครเป็นผู้อนุมัติในแต่ละขั้น
  • ต้องการ Stamp Signature หลังจากที่เอกสารผ่านการอนุมัติ

โดยวิธีที่เราจะเข้าไปแก้เนื้อไฟล์ของ SmartObject นั้น สามารถทำได้ผ่าน SmartFileProperty โดยมีขั้นตอนดังนี้

  • เริ่มต้นที่การไปดึงค่า file ออกมาจาก SmartObject  โดยอ้างอิงจาก path
  • แปลง file เป็น byte (ตัวอย่างคือ แปลงแล้ว parse เป็น pdfDocument)

byte[] pdfBytes = File.ReadAllBytes(@path);
PdfDocument pdf = new PdfDocument(pdfBytes);

  • เมื่อเราได้ Object File มาแล้วเราก็สามารถแก้ไขเนื้อใน pdf ได้ โดยในตัวอย่างนี้จะเป็นการแปะรูปลายเซ็นไปที่ตำแหน่งที่ต้องการ

Image firstApproverSignature = new Image(@firstApproverSignaturePath, 0, height – 50, 0.5f);
page.Elements.Add(firstApproverSignature);
//get approver timestamp from Activity Instance Destination
DateTime ts = DateTime.Parse(getProcessTimestamp(smoServer, processID, “First level Review”));
page.Elements.Add(new Label(ts.ToString(“G”, thInfo), 10, height – 30, 100, 20, Foxit.PDF.Font.LoadSystemFont(“leelawadee”)));

  • เมื่อเราเพิ่มเนื้อหาใน File เสร็จแล้ว เราก็ Update กลับไปที่ SmartObject เหมือนเดิมผ่าน SmartFileProperty

SmartFileProperty smartFile = (SmartFileProperty)smo.Properties[“File”];
byte[] stampFile = document.Draw();
smartFile.Content = System.Convert.ToBase64String(stampFile);
smo.MethodToExecute = “Save”;
smoServer.ExecuteScalar(smo);

เท่านี้เราก็สามารถ Update File ที่เก็บอยู่ใน SmartObject ได้ ซึ่งใน K2 Version 4.7 จะมี REST Service ขึ้นมา จึงคาดว่าน่าจะใช้ประโยชน์ในรูปแบบ Word Event ได้อีกด้วย เช่น มีการแปะ Word Control แล้วก็ update ผ่าน SmartObject ได้ เช่น เลขที่หนังสือหลังจากการอนุมัติเป็นต้น

[SmartObject] – K2 & Oracle Stored Procedure

สวัสดีครับขาเดปทุกท่าน บางท่านอาจจะเคยใช้เจ้าตัว K2 Smartobject เนี่ยต่อกับ
Oracle มาบ้างหรือ หรือบางท่านก็อาจจะยังไม่เคยใช้ ซึ่งแน่นอนในกรณีถ้าต้องการ
ดึงข้อมูลเยอะๆจากหลาย Table เจ้าตัว Store Procedure นี้น่าจะเป็นทางเลือกแรกๆ
ที่เหล่าขาเดปจะหยิบนำมาใช้อย่างแน่นอน ซึ่งในวันนี้ผมก็จะแนะนำวิธีการ
เขียน Oracle Store Procedure สำหรับดึงข้อมูลออกเป็น Object
เพื่อตัวอย่างให้เหล่าขาเดปได้ดูกันนะคับ หลักๆของมันก็อยู่ที่ตัว oracle statement
ของเรานี่แหละครับ มาดูกันเลยครับ

–> ขั้นแรกผมก็ปั้น statement ขึ้นมาก่อนซึ่งในตัวอย่างก็เป็น statement ง่ายๆนะครับ
ส่งparameter เข้าดึงข้อมูลที่ตรงเงื่อนไขออกมา ซึ่งหลักๆมันก็จะอยู่เราเอาเจ้าตัว cursor
นี่แหละมาครับมาเก็บ ผลลัพธ์เพื่อ return ซึ่งในเงื่อนไขจะ where หรือ join อะไรก็ตามสบายเลยนะครับ

OracleSP1 –> เรามาลองทดสอบดู Store Procedure ที่เขียนกันครับ OracleSP2

–> มาถึงขั้นตอนการดึง Store Procedure มาใช้กับ Smart Object นะครับ ก็เหมือนปกติครับ
ตอนสร้างเลือกเป็น Advance Smart Object

OracleSP3

–> ในส่วนของ method  ก็เลือกไปยัง Oracle Store Procedure ที่สร้างไว้ ทำการ map ตัว input และ output  ให้เรียบร้อยครับ

OracleSP4

–> ก็ได้เวลามาลองดูผลลัพธ์ของตัว smart object ที่สร้างไว้แล้วนะครับ

OracleSP5

สุดท้ายนี้ก็หวังว่า เจ้าตัวนี้ก็น่าจะเข้ามาช่วยเป็นทางเลือกนึงสำหรับขาเดปที่กำลังพัฒนาโปรแกรมต่อ Oracle นะครับ เนื่องจากน่าจะ Performance ที่ดีกว่าการใช้ Views นะครับ

สนุกกับการทำงานครับขาเดปทุกท่าน   ก่อนจากกันผมมีเรื่องราวมาฝากครับ

เรื่องมันมีอยู่ว่าผมไปเที่ยวเกาะเสม็ดมาครับ หลังจากกลับมาผมก็มาคุยกับเพื่อนครับ

ผม: เมื่อเสาอาทิตย์ ตรูพาแฟนไปเที่ยวเสม็ดมา
เพื่อน: เหรอๆ ไปเสม็ด เสร็จทุกรายป่ะวะ
ผม: โอ้โห้ ไม่อยากจะบอก กลางคืนนี่ ไม่ได้นอนเลย
เพื่อน: เห้ย  สมชื่อชื่อคำคมเกาะเสม็ดเลยจดิวะ (เสม็ด เสร็จทุกราย) ฟืบฟาบกันถึงเช้าเลยอะดิ
ผม:  หึ ป่าวอะ  ตรูไปเช้า-เย็นกลับ
เพื่อน: แฺฮ่

 

ขอบคุณครับ
Jimmy