แก้ปัญหา SmartObjects สร้างข้อมูลซ้ำ

มาจากคำถามจากทางบ้านอีกเช่นกันครับ สำหรับปัญหาที่ว่าสร้างข้อมูลจาก SmartObjects แล้วพบว่ามีข้อมูลเข้าไป 2 records

ถ้าใครเจอปัญหานี้เหมือนกันให้ลองตรวจสอบว่าเราได้ตั้งค่าหรือมีอาการตามนี้หรือไม่

  1. SmartObjects ต่อกับ Stored procedure ใน SQL
  2. Method ใน SmartObjects ที่ใช้สร้างข้อมูลเป็น type แบบ List
  3. ทดสอบเรียกผ่าน SmartObjects Services Tester แล้วพบว่าสร้าง 1 record แต่ถ้าเรียกผ่าน SmartForm แล้วเข้าไป 2 records

methodList.png

ถ้าใครเจอว่ามีอาการดังกล่าว แสดงว่าน่าจะมาจากสาเหตุเดียวกันแล้วครับ ให้ลองตรวจสอบเพิ่มอีกครับว่าเราได้ไปเปิดการแสดงผล paging ใน List View ด้วยหรือไม่

วิธีตรวจสอบง่าย ๆ คือไปเปิด List View ขึ้นมานะ ว่ามีแสดง paging หน้าสุดท้ายหรือไม่ (ถ้าไม่ได้เปิดจะไม่มีในวงเล็บ) แต่ถ้ามีก็ชัดเลยครับ ไปอ่านวิธีแก้กันต่อด้านล่างได้เลย (ส่วนวิธีการเปิดเคยเขียนไว้ใน blog นี้ -> ว่าด้วยเรื่องการแสดง Paging ใน Listview)

listview3.png

สาเหตุของอาการนี้มีสองอย่างด้วยกัน คือเพราะ method ใน SmartObject เป็นแบบ List และมีการเปิด SmartObject.RuntimeListViewRowCount ไว้ ทำให้ทุก method ที่เป็น List จะถูกเรียกสองครั้งเสมอ

วิธีแก้มีสองวิธีครับ

  1. แบบง่าย: ก็คือไปปิดการแสดง paging ของ List View ซะ (SmartObject.RuntimeListViewRowCount = false) แต่ถ้าเรายังอยากได้ทั้งการแสดงผลแบบนี้ และยังสร้าง record ให้ไม่ซ้ำด้วย ไปทำตามข้อสองครับ
  2. แบบยาก: ต้นเหตุคือตัว stored procedure ส่งประเภท method มาเป็น List อยู่ เราต้องไปแก้ stored procedure ให้ส่งมาเป็นประเภท Execute แทน โดยการเพิ่มบรรทัด SET FMTONLY ON ใน stored procedure แนะนำให้อ่านวิธีแก้เต็ม ๆ ใน KB นี้ครับ -> Determined SmartObject method ‘List’ or ‘Execute’ when SmartObject was created from SQL Store Procedure

ST136024.jpg

Advertisements

[K2 Viewflow] เปลี่ยน URL Viewflow ตรงไหน?

วันนี้มีคำถามจากทางบ้านเกี่ยวกับการใช้งาน Viewflow โดยถามมาว่าต้องการเปลี่ยน URL ของ viewflow ต้องทำอย่างไร เลยขอเอามาเขียนแชร์กันครับ

Viewflow เป็น web สำหรับดูสถานะของ workflow ว่าปัจจุบันงานอยู่ที่ขั้นตอนไหนแล้ว (ตามรูปด้านล่าง) ทำงานบน technology silverlight ซึ่งในปัจจุบัน browser ที่รองรับจะเป็น Internet explorer และ Mozilla Firefox

ViewFlow002

ทีนี้การเข้าถึง viewflow สามารถเข้าได้ 2 ช่องทางด้วยกันคือ

  1. ผ่าน k2 worklist control ใน smartform
  2. ผ่าน k2 workspace

ซึ่งทั้งสองที่จะเก็บการ configure url ไว้ต่างที่กัน ซึ่งถ้าต้องการเข้าไปแก้ไขสามารถทำได้ดังนี้

1. สำหรับใช้งานผ่าน k2 worklist control ใน smartform

  • เข้า K2 Workspace (หรือ K2 Management สำหรับ version 4.7)
  • ไปที่ Environment Library
  • ขยายเข้าไปจนถึง Environment Library Filed
  • หา field ที่ชื่อ Workspace Url และ Workspace Url SSLWorkspaceURL
  • แก้ URL ให้เป็นชื่อใหม่ที่ต้องการ
  • Restart IIS สักรอบนึง (start -> cmd -> run as administrator -> iisreset)
  • ทดสอบเลยครับ

2. สำหรับใช้งานผ่าน K2 workspace

  • ไปที่ folder K2 workspace (ปกติจะอยู่ที่ C:\Program Files (x86)\K2 blackpearl\Workspace\Site แต่ถ้าหาไม่เจอ เข้าจาก iis แล้วกด explore เอาก็ได้ครับ)
  • เปิด web.config
  • หา tab ที่ชื่อ  <add key=”WebServiceServerURL” value=”http://K2LAB:81 “>
  • แก้ value เป็น url ที่ต้องการแล้วบันทึก เป็นอันเสร็จสิ้น
  • ทดสอบอีกทีครับ

 

จบแล้วครับ…