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

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] 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 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 เก่า
และชื่อก็เหมือนเดิมจะดีที่สุดครับ

[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