[BPMN] Loop หรือ การทำซ้ำ

แม้ว่าตัว BPMN ถูกออกแบบมาสำหรับทางฝั่ง Business แต่มีการทำบางอย่าง ที่ยังต้องใช้มีการทำวนซ้ำ หรือ ถ้าในภาษา Technical ของ Developer ทั้งหลาย ว่าวนลูป (Loop) ครับ สำหรับใน BPMN สามารถเขียนได้ 2 แบบครับ ได้แก่ Loop Activity โดย Loop Activity คือ Loop ที่เกิดกำหนด Property ของตัว Activity ครับ ถึงถ้าไปดูใน Spec ของ BPMN อยู่ในรูปแบบของ XML Tag StandardLoopCharacteristics มาลองดูตัวอย่างกันครับ ภาพด้านล่าง ผมเอามาจาก Tools Visual Paradigm Modeler ครับ เป็น Note: แต่ Loop Activity BPMN-Engine ที่เป็น Open-Source ณ ปี 2018 ทั้งหมด ยังไม่ Support ครับ Non-Loop Activity ส่วน Non-Loop Activity นั้น มองภาพที่ใหญ่ขึ้นจาก Activity เดี๋ยวๆ โดยการสร้าง Loop จากการใช้ Exclusive Gateway นำมาประกอบกันครับ มาลองดูตัวอย่างกันครับ หมายเหตุ

[CUSE] สรุปขั้นตอนการเปลี่ยนแผนการเรียนจากแผน ข ไปเป็นแผน ก

สรุปไว้เผื่อคนที่เรียนที่จุฬา แล้วอยากเปลี่ยนแผนการศึกษาตอน ป โท นะครับ จากแผน ข ไปเป็นแผน ก มีขั้นตอนคร่าวๆ ดังนี้ สู้ต่อไปนะทุกๆคนๆ ^___^ หวังว่าตัวเราเองจะสามารถจบได้ภายใน 2 ปี

[CR] ลองสั่งหนังสือจาก Manning

ต้องย้อนกลับไปช่วงวันคริสต์มาสปี 2017 ครับ พอดีวันนั้นเหลือบไปเห็นโปรโมชั่นที่่ยั่วมากๆ ลดหนังสือทุกเล่ม 50% ครับ ลองกดเครื่องคิดเลขดูแล้ว มันน่าจะคุ้มนะ ผมเลยจัดมา 2 เล่ม ที่คิดว่ามีประโยชน์กับการทำงาน และการทำ Project จบครับ ได้แก่ สำหรับชุด Combo มันเป็นชุดรวม pBook (Printed Book – หนังสือที่พิมพ์) และ E-Book ในรูปแบบต่างๆ เช่น pdf, ePub,  kindle และ liveBook โดยส่วนตัวผมมองว่าสมัยนี้ตัว Printed Book เหมือนของแถมมากกว่า เพราะเพิ่มอีก 5-10 USD ก็ได้มาแล้วครับ แถมมันลดราคาก็เลยจัดเต็มซะเลย ซึ่งพอเลือก Printed Book มันเลยมีค่าใช้จ่ายที่เพิ่มเข้าใจ ซึ่งนั่น คือ ค่าจัดส่ง(Shipping) ครับ สำหรับเมืองไทย จัดถูกจัดเป็นแบบ “All other international” โดยมี 2 แบบ หลังจากดูราคาแล้ว มือมันโดนมนต์สะกด 555 กดสั่งซื้อไปเรียบร้อยแล้ว โดยมีค่าเสียหาย ดังนี้ พอสั่งซื้อเสร็จ ตอนจ่ายเงิน เนื่องจากผมไม่มีบัตรเครดิตครับ ผมเลยใช้ K-Web Shopping Card แทนครับ พอสั่งเสร็จปุ๊บ เนื่องจากรอนาน ผมเลยเมล์ไปถาม Support ของทาง Manning โดยตืดต่อไปที่เมล์ [email protected] โดยเนื้อหาที่ต้องใส่ลงไปในเมล์ คือ หมายเลข Order หลังจากส่งไปทาง support ของ manning ตอบกลับไวมากครับ โดยได้หมายเลข Tracking กลับมาครับ จะพบว่า ได้ของมาแล้ว มาดูบรรจุภัณฑ์กันก่อนครับ ดูแข็งแรงทนทานดี แกะหนังสือออกมาดูครับ หนังสือหนักครับ แต่ความหนาน้อยกว่าที่ไปถ่ายเอกสารมาเองอีก

[BPMN] ลองใช้ Process ที่ได้เพิ่งสร้างกัน

จาก Blog ตอนก่อนหน้าที่เราได้ทำอะไรไปหลายๆอย่าง ทั้ง มาใน Blog ตอนนี้ เรามาใช้ ลองเป็น End-User ของ Process ที่ทำครับ โดยหลังจาก Deploy Process เราต้องเข้าในส่วนของ Activiti Task กันครับ มาทวนภาพรวม Process กันก่อนครับ ดังรูป เริ่่มลองใช้งาน Process โดยต้อง Login เป็น User ที่อยู่ใน Group Employee ครับ สวมบทบาทเป็น Employee  กันครับ Manager เข้ามา Claim Task ว่าจะอนุมัติ หรือไม่ ? เมื่อ Employee แก้ข้อมูลใหม่ แล้วส่งงานกลับมาให้ Manager เมื่อฝ่ายบัญชีจัดการเสร็จแล้ว จบกระบวนการ จบไปแล้วกับ Blog เรื่องยาวครับ แม้ว่า Process ที่ทำเป็น Demo อาจจะไม่สมจริงเท่าไหร่นะครับ หากทุกท่านอ่านแล้วสงสัยอะไร สามารถทักมาได้ หรือทวงติงกรณีที่ผมเขียนผิดครับ ^__^

[ML] Setup Python สำหรับ Machine Learning ใน Anaconda

บทความนี้ ทดสอบบน Windows นะครับ โดยตอนนี้เป็นการ Setup Python ใช้พร้อมกับการทำ Machine Learning ใน Anaconda ครับ สิ่งที่ต้องเตรียม ทดสอบ Conda Update Conda และ Anaconda Tip: ถ้าหากลิมเปิด Anaconda Prompt โดยลืม Run As Administrator มันจะด่าเรา ดังรูป Update Machine Learning Library scikit-learn Tip: หากต้องการระบุ Version เฉพาะเจาะจงลงไป สามารถใช้คำสั่ง ดังนี้ Testing: scikit-learn และ Library ที่จำเป็นสำหรับ Machine Learning เดี๋ยว Blog ตอนถัดไป อาจจะลองทำเรื่อง Setup Enviroment สำหรับ Deep Learning นะครับ (ถ้าว่าง)  

[C#] ตั้งชื่อเล่นของ Class (Alias) ให้เรียกใช้งานได้ง่าย

เวลาเราพัฒนาระบบที่มันซับซ้อนๆมากๆ ปัญหาที่ปวดหัวที่สุดเลย คือ การตั้งชื่อ บางทีชื่อตัวแปรยาวๆ ถ้าย่อไป อาจจะงงได้ Dev เลยใช้ชื่อเต็มไป พอลองเอาตัวแปรเหล่านี้มาใช้ มันดูเกะกะรกตามากครับ กว่าจะรู้ว่า ตั้งชื่อเล่นของ Class (Alias) ให้เรียกใช้งานได้ง่ายกันดีกว่า โดย C# มันมีวิธีในการการตั้งชื่อเล่น(Alias) กันนะ มาดู Code เดิมกันดีกว่า ถ้าสังเกตุใน Code พบว่า RebalanceProcessExtensions.Col_OriginalNAV ชื่อ Class RebalanceProcessExtensions มันยาวมากๆ ครับ ถ้าทำไปนานๆ Code ตรึมครับ ดูยาก ที่นี้มาลองใช้ตัวช่วยกันดีกว่า ลองใช้ Class Alias โดยการย่อชื่อ Class ไว้ช่วง using ครับ โดย Code ที่ได้จะเป็นประมาณนี้ จาก Code ใหม่ ย่อจาก RebalanceProcessExtensions ไปเป็น RBExt แล้ว Code ที่เขียนออกมา สั้นลง และดูสบายตาขึ้น ครับ Reference

[BPMN] ลองเอา Process ที่ทำมา Deploy ขึ้นกัน

จาก Blog ก่อนหน้านี้ที่ได้ลองสร้าง Process ไปแล้ว คราวนี้ลองเอา Process ที่ทำ มาผูกให้เป็น Application โดยใช้ Activiti-App ตัว Kick Start ครับ เนื่องจาก Form ที่ทำโดยใช้ Activiti Designer ยังไม่สมบูรณ์ครับ เลยต้องเอามาปรับปรุงใน Kick Start  โดยการเพิ่ม Form ลงไป เพราะใน Process ที่ทำไว้ก่อนหน้านั้น เราได้กำหนดแค่ภาพรวม Workflow ไว้แล้ว จริงๆมาสร้าง Workflow ในตัว Kickstart ได้เลยนะ ไม่ต้องผ่านตัว Eclipse Designer ก็ได้ครับ เพิ่ม User และ Group ที่เกี่ยวข้อง มาปรับ Process ให้ตามขั้นตอน ดังนี้ – GUI Form Activity “Employee Request Budget” สำหรับ Employee ในกรอกจำนวนเงินที่ต้องการขอเบิก Activity “Manager Review / Approve” สำหรับให้ Manager ตรวจทาน และอนุม้ติ ผลการร้องขอเบิกเงิน – ปรับเรื่อง Owner ในแต่ละ Activity ให้ลงตาม Group ในที่นี้ยกตัวอย่างของ Activity Accountant Acknowledge โดยต้องให้ User ที่อยู่ในกลุ่ม Accountant เข้ามาจัดการครับ ส่วนที่ Group เหลือ Employee และ Manager ลองปรับตามได้ แปลง Process เป็น App เพื่อ Deploy หลังจาก Deploy (Publish…

[CR] McDonald – Big Breakfast

พอดีช่วงนี้ต้องพึ่งพา McDonald ประจำครับ โดยวันนี้ผมเกิดอยากลองอะไรแปลกๆ เลยลองสั่งชุด Big Breakfast มาทานครับ โดยราคาอยู่ที่ 162 บาทครับ อ๋อถ้าเกิดอยากเปลี่ยนจากกาแฟไปเป็นน้ำอัดลมเพิ่มอีก 6 บาทครับ โดยชุดที่ผมสั่งมาได้เปลี่ยนกาแฟไปเป็นสไปร์ทแทนครับ โดยพอได้รับของมา ชุด Big Breakfast ออกมาประมาณนี้ โดยในชุดประกอบไปด้วย ภาพอื่นๆ ถ้าถามความอิ่ม บอกเลยว่าไม่อิ่มครับ ที่อร่อยน่าจะเป็นไข่ข้น กับปลาทอด สำหรับผมถ้าราคานี้ลองเปลี่ยนเป็นชุดไก่ทอด 129 บาท น่าจะดีกว่าครับ หรือจะเอาชุด Combo 49 บาทที่ขายตอนเช้าดีกว่า

[RUN] Intania Chula Mini Marathon 2018

วันนี้เหนื่อยมากครับ ผมได้กลับมาลองวิ่งในงานวิ่งจริงๆจังๆแล้ว หลังจากทิ้งห่างไปนานมากกกกกกก ในงานครั้งก่อนครับ “กลิ้งมินิมาราธอนครั้งแรก Globe-Athon 2016 ที่ The Sense Pinklao” ห่างไป 2 ปีคราวนี้กลัยมาวิ่งอีกครั้งในงาน Intania Chula Mini Marathon 2018 ( #ICMM2018 ) แต่คราวนี้ขอแบบ Fun Run 5KM ครับ 2018-01-13: รับเสื้อ 2018-01-14: วันวิ่งครับ ปีหน้าข้าพเจ้าสัญญาว่า ลงสมัครงานวิ่งนี้แบบ 10 KM ครับ

[BPMN] Activiti สร้าง Unit Test

หลงจาก Blog ตอนที่แล้ว ที่ได้สร้าง Process ของการขอเบิกเงินไปแล้ว ตอนนี้เราต้องมา Proof ก่อนว่า Process ที่ทำนั้น มันใช้งานได้จริงๆ พร้อมที่นำไป Deploy ขึ้น Activiti Server ครับ โดยมีขั้นตอน ดังนี้ Step 1 : กำหนดโครงสร้างไฟล์ที่เกี่ยวข้องกันก่อน Step 2 : สร้างไฟล์ Config ที่เกี่ยวข้อง Step 3 : เอาไฟล์ Process มาใส่ Step 4 : สร้าง Unit Test ขึ้นครับ ตั้งโครงใหม่ ให้มันเข้ากับ Activiti 6.0 และ JUnit 5 กันก่อนครับ โดยใช้ Test แบ่งเป็นช่วงๆ ดังนี้ 📌 ส่วน @BeforeAll – ทำงานตอน Execute Test ครั้งแรก โดยสร้าง ActivitiRule ขึ้นมา เพื่อเตรียม Activiti-Engine ให้พร้อม 📌 ส่วน @BeforeEach และ @AfterEach เป็นส่วนที่ทำงานก่อน และหลัง Test Case แต่ละอัน 📌 ส่วน @Test เป็น Test Case ที่เตรียมไว้ ซึ่งมี 5 Test Case ดังนี้ Step 5 : ทดสอบ Run Unit Test ปัญหาที่เกิด