[CR] Mcdonald – Big Breakfast

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

โดยในชุดประกอบไปด้วย

  • ไข่ข้น
  • ขนมปังเบอร์เกอร์ 2 ชิ้น – เนื้ิอเหนียวไปนิด
  • หมูสำหรับเบอร์เกอร์ 1 ชิ้น – อร่อยอยู่
  • ปลาทอด 1 ชิ้น – อร่อย
  • แยมสตอเบอรรี่ – เอามาทาขนมปัง OK เลย
  • น้ำอัดลมสไปร์ท
  • น้ำตาล/ครีมเทียม แถมมาครับ ไม่ได้สังกาแฟเลย

ภาพอื่นๆ

This slideshow requires JavaScript.

ถ้าถามความอิ่ม บอกเลยว่าไม่อิ่มครับ ที่อร่อยน่าจะเป็นไข่ข้น กับปลาทอด สำหรับผมถ้าราคานี้ลองเปลี่ยนเป็นชุดไก่ทอด 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: รับเสื้อ

  • มันรับเสื้อ โดยมีของแถม ดังนี้ PIP วิ่ง, เสื้อวิ่ง, ยาทา และของกินต่างๆครับ

    This slideshow requires JavaScript.

2018-01-14: วันวิ่งครับ

  • 06:15 – เริ่มออกวิ่ง

    This slideshow requires JavaScript.

  • 07.05 – เข้าเส้นชัย
  • ของกินครับ – มีเยอะมากครับ โดยผมกินแค่ 2 ร้านพอครับ (แต่ของติงเรื่องการจัดการคิว)

    This slideshow requires JavaScript.

  • เหรียญที่ได้ครับ – สำหรับงานวิ่งครั้งนี้ ไม่เหนื่อยนะ ออกพลังกำลังดี ^____^
  • วิ่งๆ มาดูกันว่าปลายปีนี้จะผอมลง หรือป่าวครับ

ปีหน้าข้าพเจ้าสัญญาว่า ลงสมัครงานวิ่งนี้แบบ 10 KM ครับ

[BPMN] Activiti สร้าง Unit Test

หลงจาก Blog ตอนที่แล้ว ที่ได้สร้าง Process ของการขอเบิกเงินไปแล้ว ตอนนี้เราต้องมา Proof ก่อนว่า Process ที่ทำนั้น มันใช้งานได้จริงๆ พร้อมที่นำไป Deploy ขึ้น Activiti Server ครับ โดยมีขั้นตอน ดังนี้

Step 1 : กำหนดโครงสร้างไฟล์ที่เกี่ยวข้องกันก่อน

Step 2 : สร้างไฟล์ Config ที่เกี่ยวข้อง

  • สร้างไฟล์แปลง Activiti Project ให้เป็น Maven Project ซึ่งมีไฟล์ pom.xml เพื่อเก็บ Dependency ต่างๆไว้ โดยสำหรับการ Test BPMN ต้องใช้ Dependency ที่จำเป็น ดังนี้
    • activiti-engine : สำหรับ Execute BPMN
    • JUnit : สำหรับทำ Unit Test
    • MySQL Connector/J : ใช้เชื่อมต่อ Database ของ activiti-engine
    • spring framework [Optional] : ในกรณีที่ต้องการใช้ Activiti กับ Spring
    • และสุดท้าย หน้าตาของไฟล์ pom.xml มี Dependency ดังนี้ครับ
    • สร้างไฟล์ activiti.cfg.xml โดยมีการกำหนดค่า ดังนี้

    Step 3 : เอาไฟล์ Process มาใส่

    • เอาไฟล์ Process ที่ทำไว้ จาก Blog ตอนที่แล้วจะเป็นไฟล์ Test.bpmn เอามาวางไว้ที่ Path .../src/test/resources/ ดังรูป
    • หรืออาจจะอ้างไปที่ Path ของ project เลยก็ได้ครับ เช่น

    Step 4 : สร้าง Unit Test ขึ้นครับ

    • ตั้งโครงใหม่ ให้มันเข้ากับ Activiti 6.0 และ JUnit 5 กันก่อนครับ

    โดยใช้ Test แบ่งเป็นช่วงๆ ดังนี้

    • ส่วน @BeforeAll – ทำงานตอน Execute Test ครั้งแรก โดยสร้าง ActivitiRule ขึ้นมา เพื่อเตรียม Activiti-Engine ให้พร้อม
    • ส่วน @BeforeEach และ @AfterEach เป็นส่วนที่ทำงานก่อน และหลัง Test Case แต่ละอัน
      • @BeforeEach – ในที่นี้เป็นการ Deploy Process ที่เพิ่งสร้าง ให้ Activiti-Engine รู้จัก
      • @AfterEach – ในที่นี้เป็นการ ลบ หรือ Clear Process ที่เพิ่ง Deploy ออกจาก Activiti-Engine รู้จัก
    • ส่วน @Test เป็น Test Case ที่เตรียมไว้ ซึ่งมี 5 Test Case ดังนี้
      • TC1 test1ProcessIsStart – บอกว่า Process ที่ Deploy ไปพร้อมใช้งาน หรือไม่ ?
      • TC2 test2AssignValueInVariableBudgetAmount – ตอนที่สร้าง Process ขึ้นมา เราได้ยัดค่าตัวแปร BudgetAmount ลงไป โดยใน Test Case ดูจะดูว่า มันสามารถดึงค่าที่ได้ Pass เข้าไปได้ หรือไม่
      • TC3 test3AssignValueInVariableApproved – ตอนที่สร้าง Process ขึ้นมา เราได้ยัดค่าตัวแปร Approved ลงไป โดยใน Test Case ดูจะดูว่า มันสามารถดึงค่าที่ได้ Pass เข้าไปได้ หรือไม่
      • TC4 test4WhenEmployeeNeedBudgetMoreThan1K – ทดสอบตาม Scenario ที่ได้กำหนดไว้ ดังรูป
        โดย Code สำหรับทดสอบสามารถเขียนได้ ดังนี้

      • TC5 test5WhenEmployeeNeedBudgetLessThanOrEqual1K – ทดสอบตาม Scenario ที่ได้กำหนดไว้ ดังรูป
        โดย Code สำหรับทดสอบสามารถเขียนได้ ดังนี้

    Step 5 : ทดสอบ Run Unit Test

    • คลิกขวาที่ UnitTest เลย ชื้อไฟล์ จากนั้น Run As >> JUnit ซึ่งทำเขียน Test ถูกต้อง ได้ผลลัพธ์ ดังนี้

    ปัญหาที่เกิด

    • ทดสอบ Run Test แล้วเจอ Error java.lang.NoClassDefFoundError สามารถแก้ไขโดยเพิ่ม JUnit ที่ Java Build Path ดังรูป
    • ตอนนี้ตัว Activiti Framework ยังไม่รองรับ JUnit 5 นะครับ วิธีที่ผมแก้ มันแก้แบบลูกทุ่งไปก่อน เพราะ ตัว Class AcitiviRule มันช่วยทำให้ Test ได้ง่ายขึ้น
    • ลำดับของการ Execute Test ของ JUnit มันมั่วมากครับ

    [BPMN] ลองสร้าง Process โดยใช้ Activiti Designer

    หลังจากที่ได้ลงทุกอย่างพร้อมหมดแล้ว ทั้ง Activiti Framework, Eclipse Activiti Designer แล้ว คราวนี้มาลองใช้ Activiti Designer ลองสร้าง Process แบบง่ายๆขึ้นมาครับ จากนั้นน่าจะเป็น Blog ตอนถัดไปสำหรับการทำ Unit Test ของ Process ครับ เอาหละมาเริ่มกันเลยครับ

    Step 1 : เตรียมตัว

    Step 2 : Process ที่สร้าง BPMN

    • โดยเริ่มจากพนักงานทำเรื่องเสนอของเบิกงบประมาณ
    • ถ้างบที่เบิกน้อยกว่า หรือเท่ากับ 1,000 บาท – สามารถติดต่อนักบัญชีได้เลย
    • ถ้างบที่เบิกมากกว่า 1,000 บาท – ต้องให้ผู้จัดการตรวจสอบ และอนุมัติก่อนครับ
      • ถ้าผู้จัดการอนุมัติ  – ส่งเรื่องต่อให้นักบัญชีได้เลย
      • ถ้าไม่ผู้จัดการอนุมัติ – ส่งเรื่องกลับไปให้พนักงาน

    Step 3 : สร้าง Activiti Project กัน

    • สร้าง Project โดยใช้ Activiti Designer หลังจากเปิดโปรแกรมขึ้นมาให้สร้าง Activiti Project โดยเปิดเมนู File >> New >> Project
    • ตั้งชื่อ Project แล้วกด Finish
    • มาดูโครงสร้าง Project กันดีกว่าครับ
    • จากรูปมาเจาะโครงสร้าง Project ดีกว่า ว่าแต่ละ Folder ใส่อะไรบ้าง

      • [1] Java – เก็บ Java Class ที่เกียวข้องกับแผนภาพ BPMN
      • [2] resources/diagrama – เก็บแผนภาพ BPMN
      • [3] Test – เก็บ Unit Test ของ BPMN
      • [4] resources – เก็บ Resource ที่ใช้สำหรับ Test

    Step 4 : สร้าง BPMN Process กัน

    • คลิกขวาที่โพลเดอร์ diagrams เลือกเมนู New >> Other
    • เลือก Activiti Diagram แล้วกด Next ดังรูป
    • ตั้งชื่อ Process จากนั้นกด Finish
    • ตอนนี้มี BPMN Process ว่างๆขึ้นมา 1 แล้วครับ

    Step 5 : สร้าง BPMM Process ตามโจทย์ที่กำหนดไว้ใน Step 2

    • ขั้นแรกไปดูที่ Patette จากนั้นลองลาก Component ต่างๆมาสร้าง Diagram ดังรูป
    • คลิกที่พื้นที่ว่างๆ กำหนด Procee ID และ Name ดังรูป

    จากนี้ไปผมเจาะ เฉพาะจุดที่มี Config ที่สำคัญ และทำให้ตัว BPMN มันสามารถ Execute ได้จริงครับ

    • User Task ชื่อว่า  Employee Request Budget หน้าที่ของ Task นี้ให้พนักงานกรอกงบประมาณที่ต้องการ สำหรับการตั้งค่าอื่นๆ ให้ดูจากรูปด้านล่างเลยครับ

      This slideshow requires JavaScript.

    • Exclusive Gateway และ Sequence Flow ทั้ง 2 ได้แก่
      • Sequence Flow ชื่อว่า budgetAmountMoreThen1K โดยการผ่าน Flow นี้ไปได้ ต้องผ่านเงื่อนไขดังนี้ ${budgetAmount > 1000.00} โดยการกำหนดค่าสามารถดูได้จากรูปครับ

        This slideshow requires JavaScript.

      • Sequence Flow ชื่อว่า  budgetAmountLessOrEqual1K โดยการผ่าน Flow นี้ไปได้ ต้องผ่านเงื่อนไขดังนี้ ${budgetAmount <= 1000.00} โดยการกำหนดค่าสามารถดูได้จากรูปครับ

        This slideshow requires JavaScript.

    • User Task ชื่อว่า MangerReviewApproved หน้าที่ของ Task นี้ ให้หัวหน้า หรือผู้จัดการเข้ามาตัดสินใจ ว่าอนุมัติคำร้อง หรือไม่ โดยการกำหนดค่าสามารถดูได้จากรูปครับ

      This slideshow requires JavaScript.

    • แต่ User Task  MangerReviewApproved ประกอบไปด้วย Sequence Flow  2 เส้นทาง ได้แก่
      • Sequence Flow ชื่อว่า  ApprovedBudget โดยการผ่าน Flow นี้ไปได้ ต้องผ่านเงื่อนไขดังนี้ ${Approved == true} โดยการกำหนดค่าสามารถดูได้จากรูปครับ

        This slideshow requires JavaScript.

      • Sequence Flow ชื่อว่า  RejectBudget โดยการผ่าน Flow นี้ไปได้ ต้องผ่านเงื่อนไขดังนี้ ${Approved == false} โดยการกำหนดค่าสามารถดูได้จากรูปครับ

        This slideshow requires JavaScript.

    • User Task ชื่อว่า AccountantAck หน้าที่ของ Task นี้ บอกว่าฝ่ายการเงิน / บัญชีรับทราบเรื่องแล้ว

    หลังจากมี Diagramแล้ว จริงๆ มันเรียกได้อีกชื่อว่า Process Definition ได้นะ สำหรับขั้นตอนต่อไปทำการทดสอบ โดยการทำ Unit Test ครับ ซึ่งผมเขียนอธิบายใน Blog ตอนถัดไปครับ

    [BPMN] เปลี่ยน Activiti Framework มาใช้ MySQL

    จาก Blog ตอนก่อนหน้าที่ได้ติดตั้งตัว Activiti Framework แต่ยังใช้ตัว H2 ซึ่งเป็น In-Memory Database คราวนี้ ลองมาเปลี่ยนใช้ DBMS เจ้าอื่นๆบ้าง โดยใช้ตัว MySQL ครับ เพิ่มให้ Web Application แต่ละตัวทำงานเชื่อมโยงกันได้ครับ หากย้อนกลับไปดูไฟล์ของ Activiti Framework ที่ Download มาพบว่าข้างในมี Folder database ดังรูปนะครับ

    ลองเข้าลึกไปอีกที อ่ามีให้ครบครัน ทั้ง Create / Drop / Upgrade ครับ ต้องนี้คงต้องภาวนาขอให้ Script ที่ให้มามันครบนะครับ เพราะ ส่วนใหญ่ Open-Source มันจะตามอะไรกันยากนิดนึง ที่เขียน Blog ไว้ เพิ่มทวนความจำเหมือนกัน ไม่งั้นเดี๋ยวตอนกลับมาดูอีกทีจะลีมได้ครับ

    หลังจากเห็นสิ่งที่ Activiti Framework เตรียมมาให้แล้ว คราวนี้ลองมาทำกันบ้าง ดีกว่า โดยมีขั้นตอน ดังนี้

    Step 1 : เตรียมตัว

    • ลง Activiti Framework แล้ว
    • ติดตั้ง DBMS ในทีมนี้ ผมขอใช้ MySQL แล้วกันครับ แต่ถ้าว่างขอเสี่ยงลองตัว MariaDB ด้วย
    • เตรียมไฟล์ mysql-connector-java เอาไว้สำหรับเชือมต่อ MySQL หรือ MariaDB โดยในที่นี้ของใช้ไฟล์ mysql-connector-java-5.1.45.jar

    Step 2 : ลงมือกันครับ

    • สำหรับวิธีการสำหรับสร้าง Database ขึ้นมานั้นมีหลายแบบครับ เดียว
    • สร้าง Database สำหรับ Activiti-App และ Activiti-Rest ในที่นี้กำหนดชื่อ Database เป็น activiti  ดังรูป
    • สร้าง Database สำหรับ Activiti-Admin ในที่นี้กำหนดชื่อ Database เป็น activitiadmin ดังรูป

    Step 2.1 : Run ผ่าน Script SQL

    • จากนั้น Run Script ตาม Database ในแต่ละชนิดได้เลย อันนี้น่าจะเหมาะสำหรับ DBA ที่ต้อง Run Script ขึ้น Production ดังรูป

    Step 2.2 : Config Properties Files และ XML File ที่เกี่ยวข้อง

    • สร้าง Database ในที่นี้กำหนดชื่อ Database เป็น activiti โดยถ้าลองขุดเข้าไปในไฟล์ activiti-engine-6.0.0.jar โดยข้างในมี Script เก็บไว้อยู่ ดังรูป

    Step 2.2.1 : Config สำหรับ Activiti-App ใช้ Database “activiti

    • นำไฟล์ mysql-connector-java-5.1.45.jar Copy ไปวางไว้ใน Path <CATALINA_HOME>/webapps/activiti-app/WEB-INF/lib ดังรูป
    • ไฟล์ Properties อยู่ที่ <CATALINA_HOME>/webapps/activiti-app/WEB-INF/classes/META-INF/activiti-app/activiti-app.properties สำหรับการแก้ไข มีดังนี้
      • ของเดิม
      • ของใหม่

    Step 2.2.2 : Config สำหรับ Activiti-Rest ใช้ Database “activiti

    • นำไฟล์ mysql-connector-java-5.1.45.jar Copy ไปวางไว้ใน Path <CATALINA_HOME>/webapps/activiti-rest/WEB-INF/lib ดังรูป
    • Config สำหรับ Activiti-Rest โดยไฟล์ Properties อยู่ที่ <CATALINA_HOME>/webapps/activiti-rest/WEB-INF/classes/db.properties สำหรับการแก้ไข มีดังนี้
      • ของเดิม
      • ของใหม่

    Step 2.2.3 : Config สำหรับ Activiti-Admin ใช้ Database “activitiadmin

    • นำไฟล์ mysql-connector-java-5.1.45.jar Copy ไปวางไว้ใน Path <CATALINA_HOME>/webapps/activiti-admin/WEB-INF/lib ดังรูป
    • Config สำหรับ Activiti-Rest โดยไฟล์ Properties อยู่ที่ <CATALINA_HOME>/webapps/activiti-admin/WEB-INF/classes/META-INF/activiti-admin/activiti-admin.properties สำหรับการแก้ไข มีดังนี้
      • ของเดิม – ในไฟล์ถูก Comment ไว้หมดเลยครับ
      • ของใหม่ – อันนี้ผมเอา Config มาจากตัว Activity-App ครับ

    หมายเหตุ  <CATALINA_HOME> คือ ที่ตั้งของ Tomcat Server เช่น D:\tomcat_8.5.24 ครับ

    Step 3 : มาดูผลลัพธ์กันครับ

    • เมื่อทำเสร็จแล้ว อย่าลืม Start Tomcat ใหม่อีกครั้ง ถ้าทำตาม Step 2.2 ตัว Hibernate มันกำลังสร้าง Table และ Restore Default Data ให้ ลองสังเกตุดูจาก Log ได้้เลย
    • ลองมาดู Database activiti Table มีมาอื้อเลยครับ ดังรูป
    • ลองมาดู Database  activitiadmin Table มีมาอื้อเลยครับ ดังรูป

    Step 4 : ทดสอบระบบนิดหน่อย

    • Activiti-App : ลอง Login เข้ามา พบ Default User ที่ระบบสร้างให้ ดังนี้
    • Activiti-Admin : Step แรกต้อง Set ให้มันเชื่อมต่อกับ Activiti-App ก่่อน
      • เข้ามาในส่วนของ End Point แก้ให้รู้จักกับ Activiti-App ถ้าเข้า Activi-App ผ่าน url ไหน ปรับ End Point ให้ตรงครับ เช่น  http://localhost:8080/activiti-app/ ดังรูป
      • พอตั้งค่าเสร็จ ลองมาดูใน Tab อื่นๆ พอ Demo Process ที่ถูก Deploy ไว้ครับ ดังรูป
    • Activiti-Rest : อันนี้ต้องใช้ Tools ช่วย โดยผมขอใช้ตัว Postman ครับ ซึ่งเรามีการกำหนด Request http://localhost:8080/activiti-rest/service/repository/deployments ส่วนค่าอิื่นๆ สามารถดูได้จากรูปได้เลย

    Config อื่นๆที่่ควรรู้

    • แก้ไขไม่ให้ตัว Actvivi Framework – Auto Upgrade ตัว Database ในกรณีที่มีการเปลี่ยนเวอร์ชัน โดยต้องไปแก้ไขที่ engine.properties ซึ่งอยู่ใน Activit-Rest ดังนี้
      • เข้าไปที่  <CATALINA_HOME>/webapps/activiti-rest/WEB-INF/classes/ จากนั้นเปิดไฟล์ engine.properties โดยปรับแก้ Properties engine.schema.update ให้มีค่าเป็น false ตามตัวอย่างด้านล่าง
    • แก้ไขไม่ให้ตัว Actvivi Framework – ใส่ข้อมูล Demo ลงในระบบ โดยต้องไปแก้ไขที่ engine.properties ซึ่งอยู่ใน Activit-Rest ดังนี้
      • เข้าไปที่  <CATALINA_HOME>/webapps/activiti-rest/WEB-INF/classes/ จากนั้นเปิดไฟล์ engine.properties ถ้าไม่อยากให้ระบบมันสร้าง Demo Data ให้ เราสามารถเปลี่ยน properties ที่ต้องการให้มีค่าเป็น False ได้ครับ ตามตัวอย่างด้านล่าง ที่แก้ไข ไม่ให้ระบบใส่

    [BPMN] ลง Eclipse Activiti Designer

    Blog ช่วงนี้เป็นการสรุปลง Program ล้วนๆ เผื่อต้องมาทำเล่ม Project ตอนหลังจะได้ไม่ต้องระลึกชาติครับ สำหรับ Blog ตอนนี้เป็นการลงตัว BPMN 2.0 Designer บน Editor ยอดนิยมอย่าง Eclipse ครับ โดยการลงมีขั้นตอน ดังนี้

    Step 1 : เตรียมตัว

    • Download Eclipse มาก่อนครับ ของผมใช้ Eclipse codename “Oxygen” ครับ สำหรับการ Download สิ่งที่แนะนำอย่าใช้ตัว “Eclipse installer by oomph” มันชอบไปทำ Cache ใน AppData ของ Windows สูญเสียเนื้อที่ไปครับ ถ้า SSD น้อยๆนี่ อาจจะตกใจได้แอบไปเก็บอะไรไม่รู้ เอาแบบ .zip มาแตกไฟล์ สบายใจกว่าครับ
    • URL ที่สำหรับ Download ควรเป็นอันนี้นะครับ http://www.eclipse.org/downloads/eclipse-packages/
    • อินเตอร์เนตสำหรับ Download Package

    Step 2 : ติดตั้ง

    • เปิด Eclipse เลือก Workspace ให้เรียบร้อยครับ
    • จากนั้นไปที่เมนู Help >> Install New Software
    • กดปุ่ม Add จากนั้นทำการตั้งค่า ดังรูป

      • Name: Activiti BPMN 2.0 designer
      • Location: https://www.activiti.org/designer/update/
    • พอกด OK เสร็จ มัน List มาว่า เรากำลังลง Tools สำหรัีบสร้าง BPMN ของ Activiti ครับ จากนั้นกด Next
    • จากนั้นกด Next >> หน้าถัดมากด Next อีกทีครับ
    • จากนั้นเข้าหน้าจอ License Agreement เลือก Accept แล้วกด Finish ครับ
    • รอ Download ยาวๆไปครับ
    • ถ้าหากมีถามเรื่อง unsigned content กด Accept ไปครับ
    • พอลงเสร็จแล้ว Restart Eclipse ครับ

    Step 3 : Test

    • พอ Eclipse เปิดอีกครั้ง ใช้เข้าไปที่เมนู File >> New Project มาดูใน Section ของ Activiti พบส่วนของ Activiti Project ดังรูป

    [BPMN] ติดตั้ง Activiti Framework

    หลังจาก Setup Apache Tomcat ไปแล้ว และรู้ Overview ของ Activiti ฺBPMN Framework คราวที่มาลงกันลองคิดตั้งกันคิดว่าครับ โดยมีขั้นตอน ดังนี้

    Step 1 : เตรียมตัว

    • Setup Tomcat ให้พร้อมครับ ถ้าใครสงสัยสามารถไปอ่านได้จาก Blog ตอนนี้ ครับ
    • Download Activiti Framework มารอเลยครับ

    Step 2 : แตกไฟล์ Activity Framework

    • หลังจาก Download มาเสร็จ ได้เป็นไฟล์ .zip มาครับ
    • ให้แตก Zip ออกมา โดยมีข้อมูลด้านใน ดังรูป

    Step 3 : Deploy .War

    • เข้าไปที่โพลเดอร์ที่แตก Zip ออกมา จากนั้นเข้าไปทีโพลเดอร์ wars (ยกตัวอย่าง เช่น D:\activiti-6.0.0\wars ) โดยเราพบไฟล์ war 3 ไฟล์ ดังรูป
    • นำไฟล์ .war ทั้ง 3 ไปไว้ที่ CATALINA_HOME (Path ที่ติดตั้ง Tomcat อาทิ เช่น D:\tomcat_8.5.24 ) และเข้าไปที่โฟลเดอร์ webapps
    • จากนั้น Start Tomcat โดยผ่านไฟล์ startup.bat (Windows) หรือ startup.sh (Unix & Linux)
    • รอ Tomcat มัน Deploy ไฟล์ .war ทั้ง 3 ตัวครับ โดยสังเกตุได้จาก Log ดังนี้
      • Activiti-App

        This slideshow requires JavaScript.

      • Activiti-Admin

        This slideshow requires JavaScript.

      • Activiti-Rest

        This slideshow requires JavaScript.

    • หลังจากรอ Deploy มาสักพัก เมื่อเสร็จแล้ว ในโพลเดอร์ webapps มีตัว Web Apllication ของ Activiti-App, Activiti-Admin และ Activiti-Rest ถูกติดตั้งเรียบร้อยแล้วครับ
    • ซึ่งถ้าเข้าไปดูใน Tomcat Manager มีลักษณะ ดังนี้ครับ

    Step 4 : Test Activiti Framework

    • Test Activiti-App

      This slideshow requires JavaScript.

      • โดยเข้าผ่าน URL http://localhost:8080/activiti-app/  ซึ่งมี Default Username admin และ Password test
    • Test Activiti-Admin

      This slideshow requires JavaScript.

      • โดยเข้าผ่าน URL http://localhost:8080/activiti-admin/ ซึ่งมี Default Username admin และ Password admin
    • Test Activiti-Rest

      • โดยเข้าผ่าน URL http://localhost:8080/activiti-rest ซึ่งมันขึ้นหน้าจอ Login มา แต่ตอนนี้ยังไม่สามารถใช้งานได้นะ
      • หมายเหตุ: ตัว Activiti-App ใช้ Database ร่วมกับ Activiti-Rest ซึ่งถ้าใช้ข้อมูล Demo ซึ่งเป็น H2 In-memory Database

    ฝากดวงประจำปี 2561

    ถ้าดูข้อมูลแล้วครับ ปีนี้ผมรอดจากปีชงแล้วครับ แต่เพื่อความสบายใจ เพราะปีนี้อยากเรียนให้จบเลยมา เลยมาไหว้เสริมสร้างสิริมงคลครับ โดยวัดที่ผมวางแผนไว้ที 2 ที่ครับ

    • วัดทิพยวารีวิหาร (กั้มโล่วยี่)
    • ศาลเจ้าพ่อเสื้่อ-เสาชิงช้า (ตั่วเหล่าเอี๊ย)

    Check Point 1 : วัดทิพยวารีวิหาร (กั้มโล่วยี่)

    • ที่ผมเลือกวัดนี้ เพราะคนน้อยครับ บรรยากาศร่มรื่นดีครับ โดยปีนี้มาไหว้พระ และฝากดวง (จริงๆ มันคล้ายๆกับแก้ปีชงนะ ไม่ชงก็ฝากได้ครับ เพราะใช้ของไว้ชุดเดียวกันนะ แต่ของผมฝากดวงเสริมบุญ อะไรแนวๆนี้ครับ) ตรงนี้จะขัดกับที่ผมเขียนไว้ใน Blog “มาแก้ปีชงที่วัดทิพยวารีวิหาร (กั้มโล่วยี่) ประจำปี 2560”
    • ค่าใช้จ่าย ไม่ต่างจากปีที่แล้วนะครับ
      • ธูปเทียน – มีธูป 21 ดอก และเทียน 2 เล่มครับ 10 บาท (ธูปที่นี้ดี ผมโดนควันแล้วน้ำตาไม่ค่อยไหลนะ)
      • น้ำมันเติมตะเกียง – เติมแสงสว่างในชีวิตครับ  20 บาท
      • เทียบแดง – เอาไว้เขียนชื่อ-นามสกุล, วันเดือนปีเกิดครับ ใช้สำหรับฝากดวง 100 บาท
      • กระดาษเงิน/ทอง  ใช้สำหรับฝากดวง 100 บาท
    • บรรยายกาศภายในวัดครับ

      This slideshow requires JavaScript.

    Check Point 2 : ศาลเจ้าพ่อเสือ-เสาชิงช้า (ตั่วเหล่าเอี๊ย)

    • ที่มาที่นี้ จริงๆ ต้องบอกว่าเห็น Ads เล็กของ Google ระหว่าง Search ครับ เลยลองมาดูครับ
    • หลังลองดูจาก Google Map แล้ว จริงๆไม่ได้ไกลกันมาเลยครับ ถ้าเดินก็ใช้เวลาประมาณ 10-12 นาที
    • ที่นี้แม้ว่าจะมาช่วงประมาณบ่าย 2-3 แล้ว คนยังเยอะอยู่ครับ
    • ของไหว้ พวกธูปเทียน ซื้อข้างในดีกว่ากับ ห่างกันแค่ 1 เมตร แต่ราคาช่างต่างกันมากมายครับ
    • ลำดับการไหว้ ของผมก็ไหว้ผิดเหมือนกัน แพ้ทางควันธูปครับ ออกมาน้ำตาไหลเลย โดยลำดับของการไว้ มี ดังนี้
      Ref: FB Page ศาลเจ้าพ่อเสือเสาชิงช้า - official https://www.facebook.com/bkktigershrine/photos/pcb.786576134804480/786568644805229/?type=3&theater
      Ref: FB Page ศาลเจ้าพ่อเสือเสาชิงช้า – official | URL: https://www.facebook.com/bkktigershrine/photos/pcb.786576134804480/786568644805229
      1. กระถางทีกงเทพยาดาฟ้าดิน ด้านหน้าสังเกตุที่เสามังกร 3 ดอก
      2. กระถางตรงกลาง ตั่วเหล่าเอี้ยกง (เจ้าพ่อใหญ่) 3 ดอก
      3. กระถางซ้ายเจ้าพ่อเสือ 3 ดอก
      4. กระถางขวามือ เทพเจ้ากวนอู เทพเจ้าโชคลาภและรวม 3 ดอก
      5. กระถางข้างประตูใหญ่ขวามือ องค์รักษ์เจ้าพ่อ 3 ดอก
      6. กระถางข้างประตูใหญ่ซ้ายมือ องค์รักษ์เจ้าพ่อ 3 ดอก
    • ค่าใช้จ่าย
      • ธูปเทียน – มีธูป 18 ดอก และเทียนแดง 2 เล่มครับ ราคา 20 บาท
    • ท้ายที่สุดครับ แถวนี้มีของอร้อยเพียบครับ แต่เสียดายที่มือถือแบตหมดก่อนครับ เดี๋ยวเรียนจบแล้ว มาเขียน Blog รีวิวของอร่อยดีกว่าครับ

    หลังจากไหว้เสร็จแล้ว ผมเดินมาเรื่อยๆจนถึงถนนราชดำเนินกลาง นั่งรถเมล์ 127 มาที่เซ็นทรัล ตากแอร์เย็นๆ นั่งศึกษา Unit Test กับ Activiti Framework ต่อครับ

    [BPMN] BPMN มัน คือ อะไร

    Ref : http://resources.bizagi.com/docs/BPMNByExampleENG.pdf

    ตัว BPMN เองนั้นย่อมาจาก “Business Process Model and Notation” โดยทำขึ้นมา เพื่ออธิบายกระบวนการทางธุรกิจ และเป็นสื่อกลางที่ทุกคนที่เกี่ยวข้องใช้ในการสื่อสารครับ ซึ่งภาพรวมของมันมีลักษณะคล้ายๆกับฟพวก Flow Chart หรือ ถ้าหากใครคุ้นเคยกับ UML เจ้า BPMN มันคล้ายกับ Activity Diagram มากๆครับ โดยตัว BPMN มีองค์กรกลาง OMG (Object Management Group) สร้างมาตรฐานกลาง สำหรับตัว BPMN มีประวัติคร่าวๆ  ดังนี้

    • ฺBPMN 1.x – เน้นไปทางแผนภาพ หรือ Graphical notation
    • BPMN 2.x – ตัว Model ถูกเพิ่มความสามารถ โดยไม่ได้เป็นเพียงแค่แผนภาพเพียงอย่างเดียว แต่เพิ่มความสามารถในการดำเนินการ (Execute) ด้วย เป็น Process ที่สามารถสร้าง Instance ได้จริง โดยผ่าน Engine ที่รองรับ โดยมี Open-Source หลายเจ้า อาทิ เช่น Activiti Framework

    สัญลักษณ์ต่างๆ ของ BPMN สามารถแบ่งได้เป็น 4 กลุ่ม ได้แก่

    • Flow objects:

       Eventsสิ่งที่ทำให้เกิดกิจกรรม(Activities) ขึ้นมา โดยมีทั้งหมด 3 แบบ ได้แก่ Start, Intermidate, End-o Start – อะไรที่ทำให้เกิด Event
      -o Intermidate – มีอะไรมาขัดจังหวะ
      -o End
      -o Trigger อื่นๆ เช่น Message, Timer เป็นต้น
       Activitiesกิจกรรมที่เกิดขึ้น โดยประกอบไปด้วย Task หรือ Sub Process ตั้งแต่ 1 อันขึ้นไป-o Task – งานที่ไม่สามารถแตกย่อยได้อีก
      -o Sub Process – งานที่แจกออกเป็น Activite ย่อยๆ ได้ เช่น Sub Process ตรวจสอบวงเงินกู้ ซึ่งสามารถแตกออกได้เป็น Task ย่อยๆ อีกหลาย Task
      -o Transaction
      -o Call Activity
       Gatewaysเป็นเหมือน IF-ELSE ใช้เป็นตัวควบคุมการไหลของงานไป Activities ที่วางไว้-o Exclusive Gateway
      -o Gateway Based on events
      -o Parallel Gateway
      -o Inclusive Gateway
      -o Complex Gateway
    • Connecting objects:

      • Sequence flow – เชื่อมระหว่าง Activity
      • Message flow – เชื่อมระหว่าง Swimlane
      • Association – เชื่อมจาก Activity ไปยัง Artifact
    • Swim lanes

      • Pool หรือ swimlane – บอก Role ที่ทำกิจกรรม
      • Lanes – กลุ่มของ Pool จัดกลุ่มที่มีลำดับ โครงสร้าง เช่น Lane ของ SQA ประกอบไปด้วย Test Manager กับ Tester
    • Artifacts:
          Data Object แสดงถึงเอกสาร หรือของอื่นๆ ที่ใช้เป็น Input / Output ในแต่ละ Activity
       Annotation คำอธิบายคำจำกัดความเพิ่มเติมให้ชัดเจน
       Group จัดกลุ่มของกิจกรรมให้เป็นสัดส่วน

    ถ้าดูภาพรวมของ BPMN แล้วดูคล้ายๆกับ Activity Diagram มากครับ แต่จะมีเน้นส่วนของ Event, Trigger ต่างๆเยอะมากครับ

    Reference

    2017 ปีระกาผ่านไป

    animal-2885_1920 Reference: https://pixabay.com/th/สัตว์-นก-สดใส-ไก่-ที่มีสีสัน-2885/

    🎈หนึ่งปีที่ผ่านมามีเหตุการณ์อะไรบ้าง หรือผมได้ทำอะไรบ้าง🎈

    • 📚เรียน ป โท 📰
      • ผมได้เรียน ป โท ในสาขาวิศวกรรมซอฟต์แวร์ มาครบ 1 ปีแล้ว ถ้าสนใจสามารถลองไล่อ่านได้นะครับ ซึ่งตอนนี้จบปี 1 แล้วเกรดออกครบทุกตัวแล้ว เกรดรวมออกตอนส่งท้ายปีเก่า ส่วนเกรดแยกรายวิชาออกต้อนรับปีใหม่ปี 2018 ทีเดียว
      • รู้จักคนใหม่ๆ เพิ่มขึ้น แต่ยังติดว่าตัวเองไม่ค่อยเป็นฝ่ายท่ี เริ่มเข้าหาคนอื่นก่อนสักเท่าไหร่ บางคนรู้จักตอนไปแย่งที่นั่ง บางคนตอนเรียนนึกว่าต้องเป็นเด็กเทอมแรกแน่ๆเลย ปรากเข้ามาเรียน ป โท ด้วยกันตอนเทอม 2 นี่แหละ
      • Skill การจัดการดีขึ้น เพราะ โดนบีบด้านเวลา แต่พอได้พักยาวๆ อย่างปิดเทอม พลังแห่งความขี้เกียจก็เริ่มครอบงำ
      • การเรียน ป โท แบบที่ทางบ้านไม่ Support นี่มันก็ลำบากเหมือนกันนะ
    • 💊 สุขภาพ 💊
      • รู้ว่าตัวเองเป็นโรคอ้วน อ้วนจัดว่าเป็นโรคนะ ขอผมมีขอแถมด้วยนิดนึงไขมันพอกตับ ทำให้เปลี่ยนวิถีชีวิตการกินเลยนะ จากปกติชอบกินปิ้งย่างมากๆ ช่วงนี้ปรับมาเป็นกินสุกี้เน้นฝักเยอะๆ แทน
      • พักผ่อนน้อย – ปีนี้ปว่ยบ่อยเป็นพิเศษ ทั้งอาหารเป็นพิษ (แต่ก็ไม่น้ำหนักก็ไม่ลดลง) ไข้หวัดลูกโซ่ (ติดวนไปยาวๆในทีม)
    • 💻 งาน 🔌
      • ได้ดูแลเด็กในทีม 2 คน ทำงานด้วยกับ โดยที่น้องๆ มักจะบอกว่า พี่ปิงคุยไม่ค่อยรู้เรื่อง แต่เรียน RE มาแล้ว ถ้าเขียนเป็น Textual ก็น่าจะเข้าใจได้มั้ง 555
      • ได้ Design/Dev Module ใหม่ๆอย่าง Rebalance-EQ หรือ EOD-EQ จริงๆมันมีอยู่แล้วในระบบเดิมนะ เรัยกว่ายังไงดี Re-Engineering จาก Legacy System ไปเป็นระบบใหม่ บน Platform MS .Net และลองเอาสิ่งที่เรียนมาใน ป โท มาลองใส่เข้าไปด้วย
      • สอบ Cert MCSD แบบมืนๆเหมือนกัน แต่ก็ผ่านมาได้
    • 📊 การเงิน 💸 – ปีนี้ถือว่าทรัพย์จางครับ เพราะเป็นปีที่ค่าใช้จ่ายน่าจะเยอะที่สุด
      Graph นี้มาจาก Google Spreadsheet ว่างๆ ก็มา Review ดูว่าตอนนี้เรามีมูลค่าเท่าไหร่กันนะครับ
      Graph นี้มาจาก Google Spreadsheet ว่างๆ ก็มา Review ดูว่าตอนนี้เรามีมูลค่าเท่าไหร่กันนะครับ
      • ค่าเทอม ป โท เทอม 1 เทอม 2 และจ่ายของเทอม 3 ไปครึ่งนึงเหลือ ค่าธรรมเนียมของภาคนอกเวลา นั่งดูใบเสร็จแล้ว ถอนหายใจยาวๆ ทนอีกนิดนึง
      • ค่าหมอ – อันนี้ดีหน่อย ใช้ไม่เยอะ ใช้บริการของภาครัฐ และ ได้ใช้ประกันสังคมที่ถูกหักไปทุกเดือนสักทีด้วย
      • ค่าเตียง – เตียงบ้านที่เก่ามากๆ ในวันนึง ไปเรียนกลับมาเจอเตียงหักครับ
      • ค่าเครื่องมือหากิน – Notebook คู่กายอย่าง Lenovo ก็พลีชีพไปในวันสอบ ตอนนี้ได้น้อง Dell มาเป็นคู่ห และอุปกรณ์จิปาถะอื่นๆ
      • ค่าโง่ 555 บางที Subscribe Service บางตัวไว้ แล้วลืมดูเรื่องตัดเงินอัตโนมัติ โดนตัดไปฟรีๆ ครึ่งปี
      • ค่ามือถือ – จริงๆ น่าจะเสียไปในวันนี้แหละ แต่พอดีของหมด ปกติถ้าใครจะติดกับผมมักจะติดต่อยาก เพราะ มือถิอคู่กายตอนนี้แบตมันอยุ่ได้ แค่ 10 นาที ไม่ขาดไม่เกิน
      • แต่ก็โชคดีอย่างนึงนะ ที่ทำ Software House ด้านการเงินพอดี เลยมีการกันเงินออมไว้
    • 🔮 โลกใบนี้ 🔮
      • จริงๆ ผมเป็นคนที่แยกโทนชัดเจนมากระหว่างสี่ขาว กับ สีดำ แต่พอเวลาผ่านไปจริงๆ มันออกจะเป็นเฉดมากกว่า ไม่มีขาว หรือ ดำ 100% เพราะแต่ละคนมีปฏิกิริยาตอบสนองกับคนอื่นๆต่างกัน

    📼ฺBlog ในปีนี้ 💾

    🎏สิ่งที่อยากปรับปรุง

    • เริ่มน้ำหนัก – เปิดเทอม – น้ำหนักลด ส่วนปิดเทอม น้ำหนักเพิ่ม พอยิ่งไป UAT ที่ Site ลูกค้าแล้ว เหมือนน้ำหนักจะเพิ่มต้องคุมให้ได้
    • คุยกับคนอื่นให้มากขึ้น
    • หลังๆมาเริ่มขี้เกียจและ สิ่งที่ต้องทำพยายามจัดการเวลาให้ดีขึ้น รู้สึกว่าบางทีก็เสียเวลาไปเปล่าๆเหมือนกัน
    • ไปงาน IT Meetup ให้มากขึ้น – ปีนี้พลาดงาน IT งานใหญ่ๆทั้ง Code Mania / Agile Thailand T__T
    • หาที่เที่ยวบ้าง – ปีนี้ใช้ชีวิตแบบบ้าน <=> ที่ทำงาน, บ้าน <=> จุฬาฯ
    • การลงทุนเน้นไปทางกองทุนมากขึ้น เพราะ ไม่มีเวลา ปีนี้เอาเงินกองไว้เฉยๆมากกว่า เน้นมาลงทุนแบบ DCA แทน เอาสมองไปทำอย่างอื่นดีกว่า

    🎫สิ่งที่คิดว่าจะทำให้ได้ในปีหน้า

    • ลดน้ำหนักครับ จากตอนต้นที่ได้เกริ่นไปใน Blog แล้ว เป็นไขมันพอกตับครับ อยากวิ่ง Week ละ 5 km ก็พอ
    • เรียนให้จบ ทำ Master Project >> Thesis (ยังไม่ได้ตกลงกับเพื่อนเลย ว่าย้ายไปแผน ก ไหม) เข้าใจว่าจบมาคงเชี่ยวเรื่อง BPMN / Java และ Software Testing มากขึ้นครับ
    • เขียน Blog ครับ พยายามเขียนให้เดือนละ 10 Blog ++
    • ลองเขียน Blog เป็นภาษาอังกฤษ เพราะ ตอนนี้ Skill ตัวเองหง่อยมากกๆ

    เขียนมายาวเหมือนกันแฮะ น่าจะเป็น Blog ตอนแรกที่ทำผ่าน Samsung Tab A ทั้งหมด และก็เพิ่งรู้ว่าใส่ Emoji ลง WordPress ได้ด้วย ตอนนี้ขอไป Code ข้ามปี โดย Count Down ไปพร้อมๆกับ UAT Defect ที่ Fixed ได้เป็นของขวัญปีใหม่ให้ User 📬

    Old things are passed away, Behold,
    All Things become new.
    Your Journey has just Begun
    Happy New Year 2018
    May the Force be with you 🙂
    ->> PingkungA <<-