Biểu đồ hoạt động UML mô hình hóa cách công việc được thực hiệnthông qua một quy trình: các hành động được thực hiện, các quyết định được đưa ra, công việc song song và các đường dẫn để hoàn thành. PlantUML cho phép bạn mô tả mô hình đó dưới dạng văn bản, sau đó hiển thị nó dưới dạng biểu đồ—một phương pháp hữu ích khi bạn muốn các biểu đồ dễ dàng chỉnh sửa, xem xét và lưu cùng với tài liệu dự án. Cú pháp hoạt động hiện tại của PlantUML sử dụng các từ khóa dễ đọc như start, if, repeat, và fork; cú pháp hoạt động cũ của nó vẫn được hỗ trợ, nhưng cú pháp mới được khuyến nghị cho các biểu đồ mới.

1. Những gì cần mô hình hóa
Sử dụng biểu đồ hoạt động để giải thích một quy trình hoặc thuật toán, ví dụ:

-
Quy trình thanh toán của khách hàng
-
Quy trình phê duyệt
-
Quy trình nhập liệu
-
Các bước trong một kịch bản sử dụng
-
Công việc được phân chia giữa người, nhóm hoặc các thành phần hệ thống
Một hoạt động là một đơn vị công việc, chẳng hạn như ‘Xác thực đơn hàng.’ Một luồng điều khiểnkết nối các hoạt động và chỉ ra thứ tự của chúng. Một quyết địnhchọn giữa các đường dẫn thay thế; luồng song songhiển thị công việc có thể được thực hiện đồng thời. Biểu đồ nên làm rõ hành vi, không cố gắng ghi lại mọi chi tiết triển khai.
Một quy tắc thực tế hữu ích: nếu câu hỏi chính là ‘Điều gì xảy ra tiếp theo, và trong điều kiện nào?’, thì biểu đồ hoạt động là một lựa chọn phù hợp.
2. Cơ bản về PlantUML
Một biểu đồ PlantUML bắt đầu bằng @startuml và kết thúc bằng “@enduml. Trong cú pháp hoạt động hiện tại:

-
startđánh dấu nút khởi đầu. -
:Action;định nghĩa một hành động. -
if (...) then (...)phân nhánh dựa trên một điều kiện. -
endifđóng khối điều kiện. -
stopkết thúc một luồng. -
repeatvàrepeat whilemô hình hóa sự lặp lại. -
fork,fork again, vàend forkmô hình hóa công việc song song.
Các hành động được viết theo thứ tự và được kết nối ngầm định. Bạn có thể thêm nhãn cho các nhánh và sử dụng partition để nhóm công việc theo trách nhiệm hoặc vai trò.
Đây là một ví dụ tối thiểu:

@startuml
start
:Nhận yêu cầu;
:Xác thực yêu cầu;
stop
@enduml
3. Các quyết định và các đường dẫn thay thế
Sử dụng ifkhi quy trình đưa ra lựa chọn. Các nhãn nhánh nên truyền đạt kết quả của điều kiện, không chỉ lặp lại điều kiện.

@startuml
start
:Nhận đơn hàng;
:Kiểm tra tồn kho;
if (Tất cả các mặt hàng có sẵn?) then (Có)
:Đặt chỗ các mặt hàng;
:Yêu cầu thanh toán;
else (Không)
:Thông báo cho khách hàng;
stop
endif
:Xác nhận đơn hàng;
stop
@enduml
Ở đây, if giới thiệu một quyết định và endif đóng nó lại. Các Có và Không nhãn làm cho các lựa chọn thay thế trở nên rõ ràng. Khi các đường dẫn tiếp tục đến một hành động chung sau endif, chúng sẽ hợp lại vào luồng.
Mẹo mô hình hóa:Hãy rõ ràng về những gì xảy ra trong mọi kết quả có ý nghĩa. Nếu đường dẫn lỗi, quá thời gian hoặc bị từ chối quan trọng đối với các bên liên quan, hãy hiển thị nó thay vì để ngầm hiểu.
4. Vòng lặp và thử lại
Sử dụng vòng lặp khi một hành động hoặc nhóm hành động có thể lặp lại. Ví dụ này tiếp tục yêu cầu nhập liệu cho đến khi nó vượt qua xác thực:

@startuml
start
:Đọc dữ liệu đã gửi;
repeat
:Xác thực dữ liệu;
if (Hợp lệ?) then (Có)
:Lưu dữ liệu;
break
else (Không)
:Hiển thị lỗi xác thực;
:Yêu cầu người dùng sửa dữ liệu;
endif
repeat while (Người dùng tiếp tục?) là (Có) không (Không)
stop
@enduml
Vòng lặp có thể khó đọc nếu điều kiện thoát của chúng không rõ ràng. Hãy nêu rõ điều gì gây ra một lần thử lại và điều gì kết thúc sự lặp lại—đặc biệt khi số lần thử lại bị giới hạn hoặc có thể bị hủy.
5. Công việc song song và đồng bộ hóa
Sử dụng fork khi các hành động độc lập có thể xảy ra đồng thời, và end fork khi các nhánh phải đồng bộ hóa trước khi quy trình tiếp tục.

@startuml
start
:Đơn hàng đã được xác nhận;
fork
:Gửi email xác nhận;
fork again
:Chuẩn bị danh sách lấy hàng trong kho;
fork again
:Cập nhật bảng điều khiển bán hàng;
end fork
:Đánh dấu đơn hàng đang xử lý;
stop
@enduml
Một fork không nhất thiết có nghĩa là các cá nhân riêng biệt; nó có thể biểu thị hành vi đồng thời của hệ thống. Chỉ sử dụng nó khi các hành động thực sự có thể xảy ra song song. Nếu một nhiệm vụ phải hoàn thành trước khi nhiệm vụ khác bắt đầu, hãy mô hình hóa chúng theo trình tự thay vì.
6. Lanes bơi với các phân vùng
Các phân nhóm nhóm các hành động theo vai trò, nhóm hoặc hệ thống chịu trách nhiệm. Điều này có thể làm rõ việc chuyển giao mà không thay đổi quy trình. PlantUML hỗ trợ nhóm các hoạt động với partition.

@startuml
start
partition Customer {
:Gửi đơn hàng;
}
partition "Dịch vụ Đơn hàng" {
:Xác thực đơn hàng;
if (Đơn hàng hợp lệ?) then (Có)
:Tạo bản ghi đơn hàng;
else (Không)
:Trả về lỗi xác thực;
stop
endif
}
partition Kho {
:Chuẩn bị vận chuyển;
}
partition "Dịch vụ Đơn hàng" {
:Gửi xác nhận;
}
stop
@enduml
Chọn nhãn cho các làn phù hợp với sự phân chia trách nhiệm thực tế. Tránh tạo một phân vùng mới cho từng thành phần nhỏ; quá nhiều làn có thể khiến biểu đồ khó quét hơn.
7. Đối tượng dữ liệu và ghi chú
Một số quy trình làm việc được hưởng lợi từ việc hiển thị các đầu vào hoặc đầu ra quan trọng. Biểu đồ hoạt động PlantUML hỗ trợ các biệt danh nút đối tượng; ghi chú cũng có thể thêm ngữ cảnh mà không biến mọi nhãn hành động thành một đoạn văn.

@startuml
start
:Nhận yêu cầu thanh toán;
:Phê duyệt thanh toán;
ghi chú bên phải
Sử dụng phản hồi phê duyệt
của nhà cung cấp thanh toán.
end note
:Ghi kết quả thanh toán;
stop
@enduml
Giữ các nhãn hoạt động chính ngắn gọn. Đặt các quy tắc kinh doanh, giả định hoặc giải thích trong ghi chú khi người đọc cần chúng nhưng chúng không phải là các bước trong luồng.
8. Ví dụ hoàn chỉnh: thanh toán trực tuyến
Ví dụ lớn này kết hợp các phân vùng, một quyết định, một đường dẫn thay thế và công việc song song.

@startuml
title Thanh toán trực tuyến
start
partition Khách hàng {
:Xem giỏ hàng;
:Gửi thanh toán;
}
partition "Dịch vụ Đơn hàng" {
:Xác thực giỏ hàng và địa chỉ;
if (Giỏ hàng và địa chỉ hợp lệ?) then (Có)
:Tính tổng;
else (Không)
:Hiển thị lỗi xác thực;
stop
endif
}
partition "Dịch vụ Thanh toán" {
:Phê duyệt thanh toán;
if (Thanh toán được phê duyệt?) then (Đã phê duyệt)
:Thu tiền;
else (Từ chối)
:Trả về lỗi thanh toán;
stop
endif
}
partition "Dịch vụ Đơn hàng" {
:Tạo đơn hàng;
}
fork
partition "Dịch vụ Thông báo" {
:Gửi xác nhận đơn hàng;
}
fork again
partition Kho {
:Đặt đơn hàng vào hàng đợi để lấy hàng;
}
end fork
partition "Dịch vụ Đơn hàng" {
:Hiển thị xác nhận đơn hàng;
}
stop
@enduml

Đọc từ trên xuống dưới: khách hàng gửi thanh toán, dịch vụ đơn hàng xác thực nó, thanh toán được phê duyệt và đơn hàng được tạo. Sau đó, xác nhận và chuẩn bị kho chạy song song. Nếu xác thực hoặc thanh toán thất bại, luồng kết thúc qua đường dẫn lỗi liên quan.
9. Quy trình làm việc sơ đồ dưới dạng mã
Một quy trình làm việc thực tế là:
Quy trình làm việc sơ đồ dưới dạng mã
Một quy trình làm việc thực tế là:
-
Mô tả quy trình bằng ngôn ngữ đơn giản.Xác định điểm bắt đầu, điểm kết thúc, các hành động chính, quyết định, ngoại lệ, các tác vụ song song và các vai trò chịu trách nhiệm của nó.
-
Viết bản nháp PlantUML đầu tiên.Tập trung vào logic trước khi định dạng.
-
Biểu diễn và kiểm tra nó.Kiểm tra xem kết quả có đọc tự nhiên và các nhánh, vòng lặp có dễ hiểu không.
-
Xem xét logic cùng các bên liên quan.Việc biểu diễn chỉ kiểm tra cú pháp—not kiểm tra xem quy trình có đúng hay không.
-
Sửa lại mã nguồn và lưu nó cùng dự án.Biểu đồ dựa trên văn bản dễ dàng so sánh và xem xét cùng các tài liệu khác.
Đối với việc biểu diễn cục bộ, công cụ dòng lệnh PlantUML có thể tạo các tệp biểu đồ; các trình soạn thảo dựa trên trình duyệt thuận tiện cho bản nháp nhanh và xem trước. PlantUML cũng cung cấp trình soạn thảo trên trình duyệt, trong khi VPasCode cung cấp trình soạn thảo dựa trên trình duyệt với xem trước thời gian thực và hỗ trợ biểu đồ hoạt động PlantUML.
-
Mô tả quy trình bằng ngôn ngữ đơn giản.Xác định điểm bắt đầu, điểm kết thúc, các hành động chính, các quyết định, các ngoại lệ, các tác vụ song song và các vai trò chịu trách nhiệm.
-
Viết bản nháp PlantUML đầu tiên.Tập trung vào logic trước khi định dạng.
-
Biểu diễn và kiểm tra nó.Kiểm tra xem kết quả có đọc tự nhiên và các nhánh, vòng lặp có dễ hiểu không.
-
Xem xét logic cùng các bên liên quan.Việc biểu diễn chỉ kiểm tra cú pháp—not kiểm tra xem quy trình có đúng hay không.
-
Sửa lại mã nguồn và lưu nó cùng dự án.Biểu đồ dựa trên văn bản dễ dàng so sánh và xem xét cùng các tài liệu khác.
Đối với việc biểu diễn cục bộ, công cụ dòng lệnh PlantUML có thể tạo các tệp biểu đồ; các trình soạn thảo dựa trên trình duyệt thuận tiện cho bản nháp nhanh và xem trước. PlantUML cũng cung cấp trình soạn thảo trên trình duyệt, trong khi VPasCode cung cấp trình soạn thảo dựa trên trình duyệt với xem trước thời gian thực và hỗ trợ biểu đồ hoạt động PlantUML.
10. Sử dụng VPasCode của Visual Paradigm và sự hỗ trợ của AI
VPasCode là trình soạn thảo văn bản sang biểu đồ dựa trên trình duyệt của Visual Paradigm. Hỗ trợ PlantUML của nó bao gồm biểu đồ hoạt động, và trình soạn thảo của nó cung cấp biểu diễn thời gian thực. Visual Paradigm cũng mô tả việc tạo biểu đồ bằng ngôn ngữ tự nhiên tích hợp sẵn và sự hỗ trợ của AI để sửa đổi hoặc sửa mã biểu đồ.
Một quy trình làm việc được hỗ trợ bởi AI hữu ích:

-
Gợi ý về hành vi, không chỉ loại biểu đồ.Ví dụ:
“Tạo biểu đồ hoạt động PlantUML cho quy trình thanh toán trực tuyến. Bao gồm xác thực giỏ hàng, xác thực địa chỉ, ủy quyền thanh toán, các đường dẫn lỗi, tạo đơn hàng, và xác nhận email song song cùng chuẩn bị kho hàng. Sử dụng các phân vùng cho Khách hàng, Dịch vụ Đơn hàng, Dịch vụ Thanh toán, Dịch vụ Thông báo và Kho hàng. Sử dụng cú pháp biểu đồ hoạt động PlantUML hiện tại.” -
Kiểm tra mã nguồn được tạo.Kiểm tra xem nó có sử dụng
@startuml/@enduml, rằng mỗi nhánh đại diện cho một điều kiện thực tế và rằng các đường dẫn thất bại hoặc thay thế được xử lý. -
Biểu diễn nó trong VPasCode. Sử dụng bản xem trước để phát hiện lỗi cú pháp, nhãn gây nhầm lẫn hoặc bố cục quá phức tạp.
-
Tinh chỉnh PlantUML bằng chính bạn hoặc với các chỉnh sửa AI có mục tiêu. Yêu cầu một thay đổi cụ thể, chẳng hạn như “Thêm đường dẫn quá hạn thanh toán” hoặc “Làm cho việc chuẩn bị kho hàng thành tuần tự sau khi tạo đơn hàng.”
-
Xác thực quy trình với người am hiểu về nó.AI có thể phác thảo một biểu đồ hợp lý, nhưng nó không thể xác định rằng quy trình thực tế của tổ chức bạn là chính xác.
Các điều khiển chính xác và tính khả dụng của tính năng trong VPasCode có thể thay đổi tùy theo phiên bản sản phẩm; hãy xác nhận các tùy chọn hiện tại trong trình biên tập bạn đang sử dụng.
11. Quy trình mô hình hóa Visual Paradigm
Sử dụng VPasCode khi bạn muốn làm việc trực tiếp với nguồn biểu đồ và bản xem trước. Sử dụng môi trường mô hình hóa của Visual Paradigm khi nhiệm vụ yêu cầu chỉnh sửa đồ họa hoặc công việc mô hình rộng hơn. Hướng dẫn của Visual Paradigm mô tả một quy trình tạo hoặc nhập biểu đồ, sau đó tinh chỉnh nó trong trình biên tập trực quan; đường dẫn nhập chính xác có thể phụ thuộc vào sản phẩm và phiên bản.
Một bàn giao hợp lý là:

-
Soạn thảo và lặp lại trong PlantUML.
-
Chia sẻ biểu đồ đã được biểu diễn và nguồn để xem xét.
-
Mở hoặc nhập nó vào trình biên tập Visual Paradigm phù hợp nếu bạn cần chỉnh sửa trực quan hoặc các khả năng mô hình hóa khác.
-
Giữ nguồn PlantUML làm phiên bản được duy trì nếu đó là nguồn sự thật được nhóm lựa chọn; tránh vô tình thực hiện các chỉnh sửa xung đột ở hai nơi.
12. Các lỗi phổ biến và danh sách kiểm tra chất lượng
Trước khi chia sẻ biểu đồ, hãy kiểm tra:

-
Biểu đồ có điểm bắt đầu rõ ràng và điểm kết thúc có ý nghĩa không?
-
Mỗi hành động có mô tả một phần công việc có thể nhận biết được không?
-
Các kết quả quyết định có được gắn nhãn rõ ràng không?
-
Các đường dẫn từ chối, lỗi, quá hạn hoặc hủy bỏ có được bao gồm ở những nơi cần thiết không?
-
Các điều kiện vòng lặp có làm rõ hành vi lặp lại và thoát không?
-
Các hành động song song có thực sự độc lập không, và việc đồng bộ hóa có được hiển thị ở những nơi cần thiết không?
-
Các phân vùng có đại diện cho ranh giới sở hữu hữu ích không?
-
Người đọc có thể hiểu luồng mà không cần đọc các nhãn hành động dài không?
-
Biểu đồ đã được biểu diễn có khớp với quy trình thực tế không?
Một biểu đồ hoạt động tốt không phải là biểu đồ dài nhất hoặc chi tiết nhất. Đó là biểu đồ nhỏ nhất làm cho luồng công việc, các quyết định, trách nhiệm và các ngoại lệ quan trọng trở nên rõ ràng.
Tài liệu tham khảo nhanh về cú pháp
| Mục đích | Mẫu PlantUML |
|---|---|
| Bắt đầu | bắt đầu |
| Hành động | :Làm điều gì đó; |
| Quyết định | if (Điều kiện?) then (Có) ... else (Không) ... endif |
| Vòng lặp | repeat ... repeat while (Điều kiện?) |
| Công việc song song | fork ... fork again ... end fork |
| Nhóm trách nhiệm | partition Role { ... } |
| Kết thúc | dừng |
Các ví dụ sử dụng cú pháp sơ đồ hoạt động hiện tại của PlantUML. Đối với các cấu trúc hiếm gặp hoặc hành vi hiển thị phụ thuộc vào phiên bản, hãy tham khảo tài liệu tham khảo về sơ đồ hoạt động của PlantUML.
This post is also available in Deutsch, English, Español, فارسی, Français, Bahasa Indonesia, 日本語, Polski, Portuguese, Ру́сский, 简体中文 and 繁體中文.












