Skip to main content

ทำระบบออกเลขหนังสือประจำปีด้วย SharePoint Workflow Action

Submitted by ezybzy on

โจทย์นี้นึกสนุกได้จากโจทย์ของน้องที่ทำงาน เราต้องการออกเลขลงหนังสือเรียงไปเรื่อย ๆ ซึ่งแน่นอนนี่ไม่ใช่ความสามารถที่มีมาใน SharePoint แม้ว่าจะแถ ๆ ไปว่า ใช้ ID ก็ได้นี่ แต่โจทย์ที่แท้จริงคือ เมื่อขึ้นปีใหม่ต้องเริ่มเรียงเลขให้ใหม่ด้วย

น้องที่ทำโจทย์นี้ ใช้วิธีอ่าน Field ที่กำหนดบน SPListItem แล้วก็ปั้นเป็นรูปแบบที่กำหนดบน Action นั้นจนเสร็จเพื่อใส่ค่าลงในอีก Field หนึ่ง แต่ของผมทำต่างออกไปตรงที่ผมเลือกที่จะให้อ่านจาก Field ที่ต้องมีเสมอนั่นคือ Created แล้วเพิ่มความสามารถพิเศษคือสามารถกำหนดเดือนที่ใช้นับรอบเป็นปีใหม่ได้ (ให้มกราคมถือว่าเป็นปีเดิม เดือนตั้งแต่กุมภาพันธ์อนุญาตให้นับเป็นปีใหม่ได้) แล้วยังสามารถให้เลือก Field และกำหนด Regular Expression สำหรับอ่านค่าตัวเลขจาก Field รหัสได้ด้วย และสุดท้ายก็ให้ผลลัพธ์เก็บใส่ตัวแปรของ Workflow 2 ตัว (ค่าปี และค่าเรียงเลขของปีนั้น) เพื่อที่สามารถนำไปดัดแปลงเป็นรูปแบบอื่น ๆ ต่อได้ง่าย

ข้อเสียของวิธีนี้คือ ไม่สามารถคุม Synchronization ได้ หากหลาย ๆ SPListItem ถูก Workflow Engine ประมวลผลพร้อม ๆ กันอาจจะได้เลขเดียวกันออกมาได้ เนื่องจากเราไม่สามารถทำ lock scope ได้ ซึ่งหากเปลี่ยนไปทำเป็น WCF Service แทนน่าจะช่วยแก้ปัญหาได้ แต่ก็มีจุดที่น่าสงสัยหากขยายเป็น Farm ใหญ่หลาย Web Front End จะยังสามารถคงความเป็น Singleton Factory ได้หรือไม่

Tags