[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

    [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

    [ChatOps] ลง Rocket Chat Client

    หลังจากได้ลองให้ที่บริษัทใช้ Rocket.Chat แทน iChat (รุ่นโบราณ) แล้วคราวนี้มาลองดู App ในฝั่ง Client ดีกว่าครับ

    ขั้นตอนการลง

    • Download Program กันก่อนครับ ในที่นี้ผมเลือก Windows ครับ
    • ตามรูปเลยครับ

      This slideshow requires JavaScript.

    มา Set ให้รู้จักกับ Host

    • ใส่ IP/Domain ของ Host เข้าไป
    • กด Connect แล้วรอสักพัก
    • หน้า Log-in มาแล้วครับ

    ใช้งานได้แย้ววว

    • มันทำได้ทุกอย่างเกือบเหมือน Slack (Slack like) โดย Core หลักน่าจะเป็น Electron Javascript Framework ที่ทำให้เขียนได้หลาย Platform สำหรับ Client App ผมเข้าใจว่าเป็นหน้ากาก ไปเรียก webview อีกทีนะ

    IEEE 1074 เริ่มอ่านอย่างไร

    หลังจากเปิดเทอม ป โท ได้ให้ Paper เยอะมากครับ วันนี้ผมมาสรุปตัว Paper IEEE 1074 คือ อะไร และมีวิธีการอ่านแบบ scan คร่าวๆ อย่างไรครับ

    IEEE 1074 คือ อะไร

    ผมมองว่าเป็น Check List ที่ผ่านการคิดค้นมาแล้ว หรือมองว่าเป็นกิจกรรม (Activity) มี่มีการจัดกลุ่มจัดหมวดหมู่แล้ว มาให้องค์กรต่าวๆ นำไปปรับใช้กับ SDLC ของที่ใช้อยู่ครับ (SDLC พวก Water Fall, Unifine Process, Agile ครับ) เพื่อทำให้ Software ของเราดีขึ้น

    • SDLC เป็นกรอบ เอาไว้อ้างอิง
    • IEEE1074 เป็น Check List ที่เอามาเสริม SDLC ให้มีความชัดเจนมากขึ้น

    อ่านคู่มือกัน

    • Scope
    • Propose
    • เข้าใจโครงสร้างของ Activity groups

      • Activity (Constraint Required/Optional)
        • Input information
        • Description
        • Exit Criteria (Post-Condition) ก่อนจะออกไป มันมี Trigger ให้ทำะไรบางอย่างก่อนจะส่ง Output ออกไปให้ Process อื่น ใน Paper จะเรียกว่า Invocation
        • Output information
    • สำหรับรายละเอียดของ Activity จะอยู่ใน Annex A
    • ตัวอย่างการ Mapping กับ Model ที่เราเลือก (SPLCM) อยู่ที่ Annex B ส่วนตัวอย่างใน Annex C ผมอ่านแล้วงง ดู Annex B แล้วเข้าใจมากกว่า
    • สำหรับแต่ละ Activity ใน Activity Group ผมได้ลองเอามาเรียงเป็นแผนภาพ เพราะ ดูแล้วโคตรงง  ภาพแทนคำพูดได้นับพัน นับหมื่น

      This slideshow requires JavaScript.

    ลอง Implement

    • ผมได้สรุปเป็นตารางเล็กๆ ไว้นะครับ
    Implementing the standardInputOutput
    1.Gather requirements & Constraint for SPLCPGoal, ,requirements & Constraint
    MissionProcess Plan
    Old WorkflowEvaluation Criteria
    2.Select SPLCMrequirements & Constrait
    SPLCM
    Candinate set of ModelEvaluation Criteria (Update)
    3.Develop SPLCSPLCMSPLC
    Activity List in IEEE1074
    4.Establish SPLCPSPLCOPA
    SPLCP(Draft)
    5.Validate SPLCPEvaluation CriteriaSPLCP(Validate)
    SPLCP(Draft)