ทำหน้า Search View เพื่อสนับสนุนการ Search พร้อมกันหลาย fields ด้วย Store Procedure Smart Object

ในกรณีที่เราต้องการสร้าง Search View จาก Smart Object ของ K2 นั้น ในกรณีปกติ เราก็จะสร้าง list view ซึ่งก็จะสามารถ Search ได้ด้วยการใช้ Filter หรือ Quick Search ที่จะให้เราเลือก Field ได้

แต่ในกรณีที่เราต้องการสร้างหน้า Search form ที่ต้องการให้ Search ได้หลายๆ Field พร้อมกันล่ะ ต้องทำยังไง

เมื่อลองคิดไปคิดมา ก็จะเห็นว่า Solution ที่ตรงไปตรงมาที่สุดก็คือ ไปสร้าง View ที่มี textbox หลายๆตัว แล้วก็เขียน Rules ครอบ ว่าถ้า textbox ไหนมีค่า ก็เอามา AND แล้ว Search พร้อมกัน

แต่เมื่อคิดดีๆ วิธีนี้จะยุ่งยากมาก ตอนที่เขียน rules ยิ่งมี Field เยอะ rules ยิ่ง complex

วันนี้เรามาเสนอทางวิธีการสร้าง Search View แล้วใช้ Store Procedure Smart Object ช่วย

วิธีทำมีดังนี้

  1.  ไปสร้าง Store Procedure ที่รับ Parameter หลายๆ Field ใน MSSQL (ใน SQL Management Studio มี tools ที่ช่วยสร้าง Store procedure อยู่แล้ว)

2. เมื่อเราสร้างและทดสอบ Store procedure ของเราแล้ว ว่าเวลารับ parameter มา query ได้ถูกต้อง งานของเราก็เสร็จไปแล้วกว่า 50%

(ความคิดเห็นส่วนตัว: เราสามารถเขียน Store Procedure handle กรณีที่มีหลายๆ Field ได้ดีกว่าไปเขียน Rules บน K2 เช่น จากตัวอย่างข้างล่าง คือถ้ามีค่า ก็เอาไป And ไม่มีค่า ก็ set เป็น NULL)

3. เรา Create SmartObject ผ่าน Store Procedure ที่เราสร้างผ่าน Smart Object Service Tester (SQL Server Service -> Stored Procedures -> Create Smart Object

4. เมื่อเราได้ Smart Object เราก็ไปสร้าง view ได้ ซึ่งจะมี Method List ไว้ให้เราใช้

5. พอเราสร้าง Form เสร็จ เราก็ไปสร้าง Rules ตอนที่ กด submit Search ให้เอาค่าจาก textbox แต่ละช่องไปเป็น Parameter ใน View ที่เราสร้างมาจาก Store Procedure Smart Object

ซึ่งผลที่ได้ก็คือเป็นการ Execute View Method ที่รับ Parameter ได้หลายตัวนั้นเอง

เราก็เลยทำ Search View แบบหลายๆ Field ได้สะดวกมากๆ

ปล. รูปและเนื้อหาส่วนใหญ่ในนี้เอามาจาก http://community.k2.com/t5/K2-blackpearl/Filter-List-View-based-on-Text-Box-Value/td-p/82761 ซึ่งเขียนดีอยู่แล้ว ไปอ่านกันได้เลย

Advertisements

การสร้าง 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 (ภาคสอง)

จากที่ได้รวบรวม 5 extensions น่าใช้และฟรี!! ใน K2 Community (ภาคหนึ่ง) ไปใน blog ก่อนหน้า ซึ่งได้แนะนำ extensions ส่วนใหญ่ที่เป็น control ไว้ใช้งานที่หน้าบ้าน blog นี้จะขอรวม extension หลังบ้านบ้างครับ ไปดูกันเลยว่ามีตัวไหนน่าสนใจบ้าง

ลำดับที่หนึ่ง: File service broker V2.0 (Download link)

Broker ตัวนี้ช่วยให้คุณสามารถเก็บไฟล์ลงบน server หรือ shared drive แทนที่จะเก็บลง database ได้อย่างง่ายดาย ใน version 2.0 นี้ยังเพิ่มความสามารถในการ ดึงไฟล์มาทั้ง folder ได้อีกด้วยนะ

FileSystem.png

ลำดับที่สอง: Excel Import and Excel Export

รวมมากัน 2 รายการเลยทีเดียว สำหรับการทำงานร่วมกับ Excel ไฟล์ เริ่มด้วย Excel Import (Download Link) เอาไว้สำหรับ upload file excel เข้า smart object  จากตัวอย่างในรูป เราจะเอาข้อมูลในไฟล์ TestData.xlsx ไปเข้า smartobject ชื่อ soExcelTest

excel

หลังจากมีการ import เข้า smartobject ไปแล้ว บางครั้งเราก็ต้องการเอาข้อมูลออกมาในรูปแบบของ Excel file เพื่อเอาไปใช้ทำงานต่อ ก็ใช้งานผ่านตัวนี้ได้เลย Excel Export (Download Link) ตัวนี้เป็น Control บน smartform นะ

แถมอีกตัว Excel Service Broker (Download Link) ข้างในจะมี method ให้ใช้งานประกอบไปด้วย GetCellValue, SaveCellValue, GetWorksheetNames และ GetWorksheetValues ตัวนี้จะต่างจากตัวที่ import excel เข้ามาเพราะเป็นการดึงค่าหรือบันทึกค่าตรง ๆ ลง excel file เลย

ลำดับที่สาม: Datafield Editor (Download Link)

Datafield เป็นตัวแปรที่เราสร้างขึ้นเพื่อไว้เก็บค่าต่าง ๆ ในการทำงานบน workflow ทั้งดึงค่ามาใช้ผ่าน smartobject หรือคำนวณค่าต่าง ๆ ใน workflow เอง ทีนี้ถ้า start workflow ไปแล้วเกิดมีการทำงานดึงค่าผิดขึ้นมา แล้วเรายังอยากให้ workflow นี้ทำงานต่อได้ เราสามารถใช้โปรแกรมนี้ในการเข้าไปแก้ไขค่านี้ตรง ได้เลย (แต่ทางที่ดี ก็ควรแก้ workflow ให้มันทำงานถูกต้องนะ จะได้ไม่ต้องมาตามแก้ทุกงาน)

datafield edtior

ลำดับที่สี่: ODBC Service Broker (Download Link)

จาก Blog [Smart Object] – K2 & MySQL (แบบไทย) ก่อนหน้าที่จะดึงข้อมูลจาก MySQL ก็ใช้ความสามารถของ ODBC เป็นตัวกลางในการเชื่อมต่อนีแหล่ะ

clip_image0025.jpg

ลำดับที่ห้า: Worklist service broker (Download Link)

สุดท้ายกับ Worklist Service Broker ตัว extension นี้ช่วยให้เราสามารถดึงข้อมูล worklist ขึ้นมาผ่าน smartobject ได้ นอกจากนี้ยังสามารถสั่ง action หรือ reditect ได้อีกด้วย

WorklistService

แต่งานส่วนใหญ่ที่เอา extension นี้มาใช้เพื่อทำ worklist ที่ต้องการแสดงคอลัมน์ที่เก็บไว้ในฐานข้อมูลอื่นมาแสดงด้วย ไว้วันหลังมีโอกาสจะมาเขียนวิธีการทำให้ดูนะครับ

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

ไว้ถ้าได้ไปเจอ extension ตัวไหนน่าสนใจอีก จะนำมาแชร์กันอีกนะครับ วันนี้ลาไปก่อน สวัสดีครับ 🙂

K2 OnPremise + SharePoint Online

สวัสดีครับชาว K2 Ranger ทุกท่าน

พอดีได้มีโอกาสทำการเชื่อมต่อระหว่าง K2 On Premise กับ SharePoint 365 จึงอยากมาแชร์ช้อมูลครับ

Scenario

  1. มี K2 On Premise
  2. มี SharePoint Team Site อยู่บน Office 365  (เคสนี้ยังไม่ได้ทำ Office 365 เป็นแบบ Hybrid)
  3. ต้องการสร้าง Approval Workflow ในกรณีที่ต้องการเปลี่ยนเบอร์โทรศัพท์ใน Contact List

โดยสิ่งที่เราทำ ก็คือ เราเชื่อมต่อ K2 กับ SharePoint ด้วยการใช้ SharePoint Contant Broker ในการสร้าง Service Instance

K2SPO

ทริกเล็กน้อยคือ การกำหนดค่า “Office 365 – Required”  ให้เป็น “true”  (ค่า default จะเป็น false)

K2SPO-00

หลังจากนั้นก็เหมือนวิธีการปกติเลยครับ ซึ่งจะมีการกำหนด System Name, Display Name, Description, GUID ของ Service Instance แบบที่เคยทำกัน และเราก็จะสามารถสร้าง SmartObject เชื่อมต่อกับ List บน SharePoint Online ได้แล้ว

K2SPO-01

ซึ่งนี้เป็นขั้นตอนที่สำคัญที่สุดแล้วครับ หลังจากการเชื่อมต่อได้แล้ว เราก็จะสามารถเชื่อมกับ List ผ่าน SmartObject ได้ พอเราสร้าง SmartObject ในการเชื่อมต่อได้แล้ว สิ่งที่เหลือก็เพียงแค่การสร้าง SmartForm, Workflow บน K2 On Premise ครับ

K2SPO-02

เพียงเท่านี้ เราก็สามารถ update ค่าจาก K2 SmartForm ของเราไป Update ค่าบน SharePoint 365 ได้ล่ะ

K2SPO-04

K2SPO-03

หวังว่าจะมีประโยชน์บ้างครับ กับลูกค้าที่มี K2 และใช้ SharePoint Online หรือ Office 365

Amornthep Chanajarunwit

Business Development Consultant

[Smart Object] – K2 & MySQL (แบบไทย)

 

สวัสดีครับ ก่อนอื่นต้องขอต้อนรับ นักเขียนหน้าใหม่ ซึ่งขอเป็น Ranger สีดำ คุณโอ๋ แห่งค่าย Venteck นะครับ พอดีคุณโอ๋ มาขอไกด์ไลน์การต่อกับ MySQL แล้วไปลองดู พอได้ความก็เลยเขียนมาเล่าให้เราฟัง เราเห็นว่ามีประโยชน์ดี ก็ไม่รอช้า (จริงๆ ก็นานแล้วแต่เพิ่งมีเวลา) นำมาแปะไว้โดยไว  เชิญเสพโดยพลัน

clip_image002[5]

Continue reading [Smart Object] – K2 & MySQL (แบบไทย)