top of page
Hamburger Menu.png
Writer's pictureTuan Anh

BPMN Notation: Events


BPMN events

1. Khái niệm

Event hay sự kiện là việc xảy ra trong một luồng quy trình của BPMN, gồm 3 loại chính:

  • Sự kiện bắt đầu (start event): Xác định điểm bắt đầu của quy trình

  • Sự kiện gián đoạn/ chuyển đổi (Intermediate): Xác định một điểm chuyển đổi hoặc gián đoạn trong quy trình.

  • Sự kiện kết thúc (end event): Xác định điểm kết thúc của quy trình.


Start Event

Intermediate Event

End Event

Mục đích

Xác định điểm bắt đầu

Xác định điểm chuyển đổi/gián đoạn

Xác định điểm kết thúc

Số lượng

Chỉ 1 sự kiện/luồng

Có thể có nhiều sự kiện/luồng

Chỉ 1 sự kiện/luồng

Kiểu kích hoạt

Luôn tự kích hoạt

Tùy thuộc vào điều kiện

  • Tự kích hoạt

  • Có điều kiện

Shape

Tròn, viền đơn


A standard start event notation
Start event

Hình tròn kép


A standard Intermediate event notation
Intermediate event

Tròn, viền đậm


A standard end event notation
End event

2 Event marker

Giống như activity, các sự kiện có thể chứa marker để bổ nghĩa cho sự kiện xảy ra.

2.1 Start event

Có 3 loại start event dựa trên mục đích sử dụng và hành vi gồm:

  • Standard (cơ bản): là loại cơ bản nhất cho 1 quy trình.

  • Event sub-process interrupting:

  • Start event được sử dụng cho quy trình con (sub-process).

  • Loại event này sẽ ngắt luồng chính của quy trình để trigger luồng phụ (sub-process).

  • Event sub-process non-interrupting:

  • Tương tự với event sub-process interrupting, đây là event sử dụng cho quy trình con.

  • Loại event này không ngắt luồng chính mà chạy song song với luồng chính.

Marker

Icon

Phân loại

Ý nghĩa

Ví dụ

None



  • Standard

Start Event đơn giản, tự kích hoạt


Khách hàng truy cập trang web bán hàng

Message


Start event - message

  • Standard

  • Event sub-process interrupting

Kích hoạt bởi một message


Hệ thống nhận thông báo thanh toán thành công từ hệ thống thanh toán

Timer


Start event - Timer interrupting

  • Standard

  • Event sub-process interrupting

Kích hoạt sau một khoảng thời gian

Quy trình tự động bắt đầu sau 24 giờ

Timer


Start event - Timer non-interrupting

  • Event sub-process non-interrupting

Tương tự như trên


Escalation


Start event - Escalation interrupting

  • Event sub-process interrupting

Escalation trigger quy trình xử lý lỗi nghiêm trọng - lỗi mà cần 1 quy trình riêng biệt để handle

Lối thanh toán hệ thống, cần kích hoạt quy trình thanh toán ngoại lệ bên ngoài.

Escalation


Start event - Escalation non-interrupting

  • Event sub-process non-interrupting

Tương tự bên trên


Conditional


Start event - Conditional interrupting

  • Standard

  • Event sub-process interrupting

Kích hoạt dựa trên điều kiện


Quy trình bắt đầu nếu khách hàng chọn phương thức thanh toán "Thanh toán khi nhận hàng"

Conditional


Start event - Conditional non-interrupting

  • Event sub-process non-interrupting

Tương tự bên trên


Error


Start event - Error interrupting

  • Event sub-process interrupting

  • Dùng cho lỗi thông thường có thể được xử lý trong quy trình chính.

Ví dụ, thanh toán với thẻ không hợp lệ --> Error event

Compensation


Start event - Compensation interrupting

  • Event sub-process interrupting

Sự kiện bắt đầu một quy trình bù đắp như có nói ở 1.1

  • Ví dụ hành động "Thanh toán" có Compensation Event.

  • Nếu thanh toán thất bại, Compensation Event được kích hoạt.

Signal


Start event - Signal interrupting

  • Standard

  • Event sub-process interrupting

Kích hoạt bởi một signal


Hệ thống nhận signal từ một dịch vụ bên ngoài. Ví dụ như MoMo tự tạo giao dịch khi có yêu cầu thanh toán từ web Ecommerce

Signal


Start event - Signal non-interrupting

  • Event sub-process non-interrupting

tương tự như trên


Multiple



Start event - Multiple interrupting

  • Standard

  • Event sub-process interrupting

Kích hoạt bởi bất kỳ điều kiện nào được liệt kê

Quy trình bắt đầu khi khách hàng chọn thanh toán cho đơn hàng, hoặc thanh toán hoá đơn tiền điện, hoặc hoá đơn điện thoại...

Multiple


Start event - Multiple non-interrupting

  • Event sub-process non-interrupting

tương tự như trên



Parallel Multiple Event


Start event - Parallel Multiple interrupting

  • Standard

  • Event sub-process interrupting

Tương tự với multiple event, tuy nhiên các sự kiện phải được kích hoạt đồng thời.

Ví dụ với quy trình xử lý đơn hàng. Parallel Multiple Event chỉ được kích hoạt khi cả ba sự kiện "Xác nhận thanh toán", "Kiểm tra hàng hóa", và "Đóng gói" cùng xảy ra.

Parallel Multiple Event


Start event - Parallel Multiple non-interrupting

  • Event sub-process non-interrupting




2.2 Intermediate event

Cũng giống như start event, các sư kiện gián đoạn (intermediate event) cũng được chia thành các loại khác nhau dựa trên mục đích sử dụng:

  • Catching:

  • Loại event này chờ đợi một sự kiện xảy ra bên trong một hoạt động.

  • Khi sự kiện kích hoạt được nhận (catch), nó ngắt hoặc tạm dừng hoạt động và có thể chuyển luồng quy trình theo hướng mới.

  • Throwing:

  • Loại event này gửi một tin nhắn, tín hiệu hoặc kích hoạt sự kiện khác.

  • Nó được đặt bên trong hoặc trên đường viền (boundary) của một hoạt động.

  • Khi hoạt động hoàn thành, event này được kích hoạt và gửi dữ liệu cần thiết.

  • Boundary:

  • Loại event này được đính vào biên giới của một hoạt động, cho phép xử lý lỗi hoặc sự kiện bên ngoài có thể ảnh hưởng đến hoạt động đó.

  • Xảy ra bất kể trạng thái của hoạt động là đang chạy, bị lỗi, hoặc đã hoàn thành.

  • Boundary được chia làm 2 loại:

  • Boundary interrupting: ngắt hoạt động khi sự kiện được xảy ra.

  • Boundary non-interrupting: không ngắt hoạt động, chạy song song với hoạt động khi sự kiện được xảy ra

Marker

Icon

Phân loại

Ý nghĩa

Ví dụ

Message


Intermediate event - Message interrupting

  • Catching

  • Boundary interrupting

  • Khi một sự kiện được nhận và khớp với Message Event sẽ kích hoạt sự kiện.

  • Hoạt động "Xác nhận thanh toán" có Message Event chờ đợi tin nhắn xác nhận từ hệ thống thanh toán.

  • Khi tin nhắn được nhận, Message Event được kích hoạt và hoạt động tiếp tục với bước tiếp theo.

Message


Intermediate event - Message non-interrupting

  • Boundary non-interrupting

  • Tương tự như trên.

  • Không ngắt hoạt động mà chạy song song.



Message


Intermediate event - Message Throwing

  • Throwing

  • Khi hoạt động hoàn thành, một "message" được gửi đi.


Đơn hàng được thanh toán thành công, Event Message gửi email thông báo tới khách hàng

Timer



Intermediate event - Timer interrupting

  • Catching

  • Boundary interrupting

  • Bắt đầu một hoạt động/luồng khác khi điều kiện về thời gian được đáp ứng.

  • Ngắt luồng khi được trigger

Với hành động "Chuẩn bị đơn hàng" sau 4h kích hoạt sự kiện huỷ đơn và thông báo đơn hàng thất bại.


Timer


Intermediate event - Timer non-interrupting

  • Boundary non-interrupting

  • Tương tự như trên.

  • Không ngắt hoạt động mà chạy song song.

Hành động "Chuẩn bị đơn hàng" sau 2h kích hoạt sự kiện gửi thông báo cho khách đơn hàng vẫn đang được chuẩn bị. Hành động "Chuẩn bị đơn hàng" vẫn đang tiếp tục xảy ra.

Escalation



Intermediate event - Escalation interrupting

  • Boundary interrupting

  • Trigger khi có sự kiện nghiêm trọng xảy ra trong một hành động.

  • Ngắt luồng khi được trigger.

Hành động "Chuẩn bị đơn hàng" khi gặp sự cố sẽ trigger luồng xử lý sự cố, huỷ đơn hàng, hoàn tiền cho khách.

Escalation



Intermediate event - Escalation non-interrupting

  • Boundary non-interrupting

  • Tương tự như trên.

  • Không ngắt hoạt động.

Hành động "Chuẩn bị đơn hàng" khi gặp sự cố sẽ trigger luồng xác minh sự cố, gửi thông báo tới khách hàng về tình trạng đơn. Đơn không cần huỷ.

Escalation


Intermediate event - Escalation throwing

  • Throwing

  • Thường được gắn vào trong quy trình (boundary escalation gắn vào 1 hành động)

  • Thường được kích hoạt bằng các điều kiện thông qua gateway.

Hoạt động "Thanh toán đơn hàng" có đầu ra là cổng OR (EXclusive Gateway):

  • Thanh toán thành công

  • Thanh toán thất bại

  • Thanh toán lỗi

Trường hợp thanh toán lỗi có thể trigger sự kiện escalation để xử lý lỗi.

Conditional


Intermediate event - Conditional interrupting

  • Boundary interrupting

  • Ngắt hoạt động đang chạy khi một điều kiện cụ thể được đáp ứng.

  • Chuyển luồng quy trình sang hướng mới được xác định bởi Event.

  • Hoạt động "Thanh toán" có Conditional Boundary Interrupting Event kiểm tra trạng thái giao hàng.

  •  Nếu giao hàng thất bại, Event kích hoạt và ngắt hoạt động, chuyển sang luồng xử lý hoàn tiền.

Conditional


Intermediate event - Conditional non-interrupting

  • Boundary non-interrupting

  • Tương tự như trên

  • Không ngắt hoạt động khi được trigger

  • Hoạt động "Xử lý đơn hàng" có Conditional Boundary Non-Interrupting Event kiểm tra mức hàng tồn kho.

  • Nếu sắp hết hàng, Event cập nhật trạng thái đơn hàng thành "Cảnh báo hết hàng" nhưng không ngắt hoạt động.

Link


Intermediate event - Link Throwing

  • Throwing


  • Hoạt động "Chuẩn bị hàng" có Link Catching Event chờ đợi Link "Đơn hàng được thanh toán" mang thông tin chi tiết về đơn hàng trước khi bắt đầu chuẩn bị.

Link


Intermediate event - Link catching

  • Catching

Là một cặp với Link throwing event.

Sử dụng để bắt đầu 1 sự kiện được gửi đi từ Link Throwing bên dưới.

  • Hoạt động "Xác nhận thanh toán" có Link Throwing Event gửi dữ liệu thanh toán và ID đơn hàng đến hoạt động "Chuẩn bị hàng" qua Link có tên "Đơn hàng được thanh toán".

Error


Intermediate event - Error interrupting

  • Boundary interrupting


  • Xác định và xử lý các lỗi xảy ra trong một hoạt động cụ thể

  • Error Boundary Interrupting Event luôn ngắt hoạt động khi được trigger.

  • Có thể sử dụng nhiều Error Boundary Interrupting Event cho một hoạt động để xử lý các loại lỗi khác nhau

Hoạt động "Chuẩn bị hàng" có lỗi hết hàng, gửi email thông báo tới khách hàng hoặc bộ phận cskh & cập nhật trạng thái đơn hàng.

Cancel


Intermediate event - Cancel interrupting

  • Boundary interrupting

Cho phép hủy một hoạt động đang chạy dựa trên điều kiện được xác định.

Luôn ngắt hoạt động khi được trigger.

Hoạt động "Thanh toán" có Cancel event "Huỷ thanh toán", trigger luồng xử lý huỷ gồm: xác nhận với khách hàng, hoàn tiền, cập nhật trạng thái...

Compensation


Intermediate event - Compensation interrupting

  • Boundary interrupting

Thể hiện sự kiện đền bù được kích hoạt nếu một lỗi hoặc sự kiện bất ngờ được xảy ra trong 1 activity.

  • Quy trình thanh toán: Trong quá trình thanh toán trực tuyến, nếu giao dịch bị lỗi do lỗi hệ thống hoặc lỗi thẻ, sự kiện bồi thường gián đoạn sẽ được kích hoạt.

  • Quy trình sẽ tự động hoàn lại tiền cho khách hàng và thông báo lỗi cho bộ phận kỹ thuật để xử lý.


Compensation


Intermediate event - Compensation throwing

  • Throwing

  • Thường được sử dụng để bắt đầu việc thực hiện các bước bồi thường được xác định trước

  • Nó có thể được kích hoạt bởi một sự kiện hoặc lỗi xảy ra trong quy trình, hoặc bởi một quyết định thủ công từ người dùng.

  • Quy trình xử lý yêu cầu bảo hành: Sau khi nhận được yêu cầu bảo hành, nếu sản phẩm được xác định là lỗi, sự kiện "bồi thường" sẽ được kích hoạt.

  • Việc bồi thường có thể bao gồm việc sửa chữa hoặc thay thế sản phẩm mới cho khách hàng.

Signal



Intermediate event - Signal interrupting

  • Catching

  • Boundary interrupting


  • Catching signal thường đi kèm với throwing signal.

  • Event này được sử dụng để xác định điểm trong quy trình nơi một hoạt động sẽ lắng nghe và phản ứng với một Signal cụ thể.

  • Boundary interrupting signal được sử dụng để ngắt một hoạt động đang thực thi và bắt đầu thực hiện các hành động được xác định trước khi Signal được nhận.

  • Quy trình xử lý đơn hàng: Sau khi khách hàng đặt hàng, hệ thống sẽ gửi một Signal cho hoạt động "Xử lý đơn hàng".

  • Hoạt động "Xử lý đơn hàng" sẽ nhận Signal và bắt đầu thực hiện các bước xử lý đơn hàng.


Signal


Intermediate event - Signal throwing

  • Throwing



Signal


Intermediate event - Signal non-interrupting

  • Boundary non-interrupting

  • Tương tự với Boundary interrupting signal.

  • Không ngắt luồng khi trigger

  • Hoạt động "Xử lý đơn hàng" có signal event "cập nhật thông tin đơn hàng" được trigger khi có sự kiện bên ngoài xảy ra như thay đổi địa chỉ, thông tin giao hàng.

  • Hoạt động "Xử lý đơn hàng" không cần dừng lại mà vẫn tiếp tục được diễn ra khi đơn hàng được cập nhật.

Multiple


Intermediate event - Multiple interrupting

  • Catching

  • Boundary interrupting


Catching:

  • Xác định điểm trong quy trình nơi nhiều sự kiện đầu vào có thể xảy ra.

  • Chỉ sự kiện xảy ra đầu tiên mới kích hoạt quy trình. Các sự kiện còn lại bị bỏ qua. Nôm nà thì catching event "bắt được" sự kiện nào trước thì sẽ xử lý sự kiện đó

Boundary Interrupting:

  • Tương tự vơí catching, tuy nhiên

  • Khi một trong các sự kiện được cấu hình sẵn xảy ra, nó sẽ ngắt hoạt động đang thực hiện và chuyển dòng hoạt động vào nhánh được tạo bởi sự kiện đa dạng đó.


Ví dụ với hoạt động "Xử lý đơn hàng":

  • Có thể có nhiều sự kiện xảy ra như: Hủy đơn hàng, cập nhật địa chỉ giao hàng, thay đổi phương thức thanh toán.

  • Catching event:

  • Hủy đơn: Kích hoạt subprocess "Hủy đơn" và ngắt hoạt động "Xử lý đơn hàng".

  • Cập nhật địa chỉ giao hàng: Kích hoạt subprocess "Cập nhật địa chỉ" song song với việc xử lý đơn hàng.

  • Thay đổi phương thức thanh toán: Kích hoạt subprocess "Thay đổi phương thức thanh toán" song song với việc xử lý đơn hàng.

  • Boundary Interrupting:

  • Bất kỳ sự kiện nào được kích hoạt: Ngắt hoạt động "Xử lý đơn hàng" và chuyển hướng sang nhánh tương ứng (Hủy đơn, Cập nhật địa chỉ, Thay đổi phương thức thanh toán).

  • Boundary Non-Interrupting:

  • Bất kỳ sự kiện nào được kích hoạt: Kích hoạt subprocess tương ứng song song với việc xử lý đơn hàng


Multiple


Intermediate event - Multiple non-interrupting

  • Boundary non-interrupting




Multiple


Intermediate event - Multiple throwing

  • Throwing


  • là một loại sự kiện được sử dụng để bắt đầu nhiều sự kiện đồng thời.

  • Khi Multiple Event Throwing được kích hoạt, tất cả các sự kiện được liên kết với nó sẽ được bắt đầu đồng thời.

Hoạt động "Duyệt đơn hàng" khi trigger multiple event throwing sẽ trigger 2 hành động:

  • Gửi email thông báo cho khách hàng về tình trạng đơn hàng.

  • Gửi tin nhắn SMS cho khách hàng về tình trạng đơn hàng.

Parallel Multiple


Intermediate event - Parallel Multiple interrupting

  • Catching

  • Boundary interrupting

  • Tương tự với multiple event, tuy nhiên với parallel multiple tất cả các sự kiện được liên kết với nó đều phải xảy ra.

  • Catching:

  • Lắng nghe cùng lúc nhiều sự kiện.

  • Quy trình chỉ tiếp tục khi tất cả các sự kiện đã được kích hoạt.

  • Parallel Multiple Event Boundary Interrupting:

  • Khi tất cả các sự kiện được kích hoạt, sẽ lập tức ngắt hoạt động hiện tại và chuyển hướng quy trình.

  • Parallel Multiple Event Boundary Non-interrupting:

  • Khi tất cả các sự kiện được kích hoạt, chúng sẽ trigger các subprocess / hoạt động song song với hoạt động hiện tại.

  • Không ngắt luồng.


  • Quy trình "Xử lý Đơn Hàng":

  • Sự kiện:

  • Hệ thống nhận được đơn hàng từ khách hàng.

  • Hệ thống kiểm tra kho hàng.

  • Hệ thống kiểm tra thanh toán.

  • Parallel Multiple Event Catching:

  • Chờ đợi tất cả các sự kiện được kích hoạt (đơn hàng nhận được, kho hàng có sẵn, thanh toán thành công).

  • Sau khi tất cả các sự kiện được kích hoạt, quy trình sẽ chuyển sang bước "Chuẩn bị Giao Hàng".

  • Parallel Multiple Event boundary interrupting:

  • Được đính kèm vào hành động "xử lý đơn hàng", trigger khi tất cả các sự kiện sau đều xảy ra: "kho hết hàng" & "không có hàng bổ sung".

  • Dừng hành động "Xử lý đơn hàng" và chuyển sang luồng/hành động huỷ đơn.

  • Parallel Multiple Event boundary non- interrupting:

  • Được đính kèm vào hành động "xử lý đơn hàng", trigger khi tất cả các sự kiện sau đều xảy ra: "kho hết hàng" & "Có hàng bổ sung".

  • Không dừng hành động "Xử lý đơn hàng".

  • Trigger thêm luồng "Bổ sung hàng" chạy song song với hành động "Xử lý đơn hàng".

Parallel Multiple


Intermediate event - Parallel Multiple non-interrupting

  • Boundary non-interrupting




2.3 End event

Không giống như Start hay Intermediate event, end event chỉ có một loại duy nhất là standard, biểu diễn bằng hình tròn có viền đậm.

End event cũng sử dụng marker để bổ nghĩa cho sự kiện

Marker

Icon

Ý nghĩa

Ví dụ

None






Message


End event - Message

  • Kết thúc quy trình bằng việc gửi đi một tin nhắn thông báo.

  • Thường được sử dụng để kích hoạt quy trình khác hoặc giao tiếp với các hệ thống bên ngoài.

  • Gửi email thông báo đến khách hàng khi hoàn tất đơn hàng

Escalation


End event - Escalation

  • Kết thúc sự kiện escalation được trigger bới start hoặc intermediate event.

  • Hệ thống không thể kết nối đến cổng thanh toán.

Error



End event - Error

  • Kết thúc sự kiện error được trigger bới start hoặc intermediate event.

  • Hoặc kết thúc quy trình do xảy ra lỗi kỹ thuật

  • Lỗi không thể cập nhật đơn hàng.

Cancel


End event - Cancel

  • Ngay lập tức kết thúc quy trình và hủy bỏ toàn bộ các hoạt động đang thực hiện.

  • Sử dụng khi quy trình không mang lại giá trị hoặc vi phạm quy định.

  • Khách hàng hủy bỏ đơn hàng đột xuất.

Compensation



End event - Compensation

  • Kết thúc quy trình và tạo ra hoạt động đền bù để "hoàn tác" các bước đã thực hiện trong quy trình.


  • Cập nhật lại số lượng tồn kho nếu khách hủy đơn đã thanh toán.

Signal



End event - Signal

  • Kết thúc quy trình và phát đi một tín hiệu

  • Phát tín hiệu "Đơn hàng mới" để kích hoạt quy trình kho kiểm tra, đóng gói sản phẩm.

Multiple


End event - Multiple

  • Kết thúc quy trình với nhiều kết quả có thể xảy ra.

  • Kết quả xử lý đơn hàng có thể là "Giao hàng thành công", "Khách hủy", "Không thành công

Terminate


End event - Terminate

  • Ngay lập tức kết thúc toàn bộ quy trình, bao gồm cả các quy trình con và quy trình song song.

  • Được sử dụng khi xảy ra lỗi khẩn cấp, dừng toàn bộ quy trình là bắt buộc.

  • Nếu lỗi phần mềm nghiêm trọng không thể khắc phục trong thời gian ngắn, Terminate End Event sẽ được kích hoạt.


Trên đây là toàn bộ các events hiện có của BPMN. Event là một phần quan trọng trong BPMN, đóng vai trò là điểm đánh dấu sự khởi đầu, kết thúc hoặc thay đổi hướng đi trong quy trình. Hiểu rõ các loại Event và cách sử dụng chúng sẽ giúp bạn xây dựng mô hình BPMN chính xác và hiệu quả.


 

Bài viết cùng series:



159 views

Recent Posts

See All

Comments


  • Instagram
  • Facebook
  • LinkedIn
  • YouTube

 

Buy Tank a coffee

bmc-button blue.png
bmc-button green.png
  • White Facebook Icon
  • White Vimeo Icon
  • White YouTube Icon
  • White Twitter Icon
  • White LinkedIn Icon
bottom of page