Bài viết này khám phá việc sử dụng **mạng Petri** nâng cao, đặc biệt là những mạng có cung ức chế và cung đặt lại, để mô phỏng và tạo ra các nhật ký sự kiện cho các hệ thống phần mềm. Các nhật ký sự kiện giả lập này rất quan trọng để kiểm tra và xác thực các thuật toán phân tích quy trình. Tìm hiểu cách sử dụng phương pháp này để mô hình hóa các điều kiện phức tạp trong phần mềm thực tế và tạo ra dữ liệu cần thiết cho việc khai thác quy trình.
Trong lĩnh vực phân tích quy trình, **mạng Petri** đóng vai trò là một công cụ mô hình hóa mạnh mẽ. Chúng cho phép chúng ta biểu diễn một cách trực quan các hệ thống phức tạp và hành vi tương tác của chúng. Gần đây, các phương pháp phân tích quy trình đã phát triển thành một lĩnh vực công nghệ dựa trên máy tính tiên tiến. Các phương pháp tự động đã được tạo ra để tìm ra các nút thắt cổ chai và sự kém hiệu quả trong các mô hình quy trình của hệ thống thông tin.
Một công nghệ đặc biệt giúp tự động hóa phân tích quy trình là **khai thác quy trình**. Các chuyên gia trong công nghệ này sử dụng các thuật toán và phương pháp sử dụng các bản ghi về hành vi của hệ thống, được gọi là "nhật ký sự kiện" hoặc "nhật ký hệ thống". Thông tin này có thể được khám phá để khám phá một mô hình về cách quy trình thực tế hoạt động. Mô hình quy trình hiện có đang chạy có thể được căn chỉnh với các bản ghi của nhật ký sự kiện để kiểm tra xem mô hình có phù hợp với hành vi của hệ thống thực tế hay không. Lĩnh vực này cũng cung cấp cho một chuyên gia phương pháp để cải thiện/sửa chữa các quy trình và mô hình quy trình.
Các phương pháp **mô phỏng quy trình** cũng được áp dụng trong lĩnh vực phân tích quy trình. Gần đây, người ta đã tuyên bố rằng khai thác quy trình và mô phỏng tạo thành một "mối liên kết được tạo ra trên thiên đường". Cụ thể, mô phỏng mô hình quy trình có thể được áp dụng để xem xét tương lai của một quy trình và kiểm tra các kịch bản thay thế "what-if" có thể xảy ra do thay đổi quy trình. Hơn nữa, sự phát triển của các thuật toán khai thác quy trình là không thể nếu không có các mô hình mẫu và nhật ký sự kiện với các đặc điểm phù hợp. Các nhật ký sự kiện mẫu có thể được tạo bằng các phương pháp mô phỏng mô hình quy trình.
**Khai thác quy trình và mô phỏng** cũng có thể được kết hợp theo cách khác. Các kết quả khám phá quy trình và kiểm tra tuân thủ có thể được áp dụng để cải thiện các mô hình mô phỏng. Các hình thức mô hình hóa khác nhau được sử dụng trong lĩnh vực phân tích quy trình. Trong số đó, ngôn ngữ của **mạng Petri** là một trong những ngôn ngữ mô hình hóa được thiết lập tốt nhất, được nghiên cứu kỹ lưỡng, đơn giản và thường được sử dụng. Rất nhiều kỹ thuật khám phá và phân tích quy trình đều dựa trên ngôn ngữ này. Một điểm mạnh của ngôn ngữ mạng Petri là trên đỉnh của các mạng P/T được xác định đơn giản, nhiều tiện ích mở rộng đã được xây dựng. Đây là các mạng Petri cấp cao: Mạng Petri màu, Mạng Petri lồng nhau, Mạng đối tượng, v.v. Phương pháp mô phỏng Mạng Petri thuộc nhiều loại khác nhau đã được đề xuất trong tài liệu. Tuy nhiên, đối với nhiều loại mạng Petri, vẫn chưa có các kỹ thuật/công cụ mô phỏng.
Bài viết này trình bày một phương pháp và một công cụ để mô phỏng mạng Petri với các cung đặt lại và ức chế. Việc bổ sung các loại cung này cải thiện đáng kể khả năng diễn đạt của mạng. Do đó, các mạng này được sử dụng khi quy trình không thể được mô hình hóa (một cách thuận tiện) bằng mạng P/T. Phần bổ sung của các loại cung này cải thiện đáng kể khả năng diễn đạt của mạng. Do đó, các mạng này được sử dụng khi quy trình không thể được mô hình hóa (một cách thuận tiện) bằng mạng P/T. Hãy tưởng tượng khả năng mô hình hóa các điều kiện tiên quyết phức tạp trong hệ thống phần mềm của bạn một cách trực quan và chính xác. **Cung ức chế** cho phép bạn mô hình hóa các tình huống mà một sự kiện chỉ có thể xảy ra khi một điều kiện nhất định không được đáp ứng, trong khi **cung đặt lại** cho phép bạn mô hình hóa các hoạt động làm sạch hoặc khởi tạo lại trạng thái hệ thống.
Phần còn lại của bài viết được tổ chức như sau. Phần 2 định nghĩa các mô hình và nhật ký sự kiện. Trong Phần 3, đóng góp chính được trình bày: các thuật toán để mô phỏng mạng Petri với các cung ức chế và đặt lại. Các thuật toán này được triển khai trong công cụ được mô tả trong Phần 4. Cuối cùng, Phần 5 kết luận bài viết.
Phần này mô tả thuật toán để mô phỏng mạng Petri WIR được gắn nhãn. Ý tưởng chính của thuật toán là lặp lại trên tất cả các chuyển đổi và kích hoạt một trong số chúng tại mỗi lần lặp, ghi lại các sự kiện tương ứng vào nhật ký. Thủ tục này được thực hiện trong hàm tạo chính có tên là `generateTrace` (xem Thuật toán 1). Thuật toán này hoạt động như sau. Chúng tôi có `maxIterations` cố gắng để đạt được đánh dấu cuối cùng của mạng. Theo mặc định, số này là 10. Hàm `moveToInitialState` khởi tạo quá trình tạo dấu vết bằng cách đặt dấu hiệu của thành `M0`. Sau đó, chúng tôi tạo một dấu vết trống bằng cách gọi `createTrace`. Tại mỗi bước của vòng lặp chính, thuật toán chọn một chuyển đổi được bật trong `chooseNextTransition` và kích hoạt nó (hàm `fire`). Hàm `fire` thay đổi dấu hiệu của mạng và ghi một sự kiện vào dấu vết. Sau đó, chúng tôi gọi hàm `isCompleted` để kiểm tra xem chúng tôi đã đạt đến dấu hiệu cuối cùng chưa và cập nhật `replayCompleted`.
Vòng lặp này lặp lại cho đến khi chúng tôi đạt đến dấu hiệu cuối cùng (`replayCompleted = true`) hoặc vượt quá giới hạn số bước được chỉ định cho một dấu vết `maxNumberOfSteps`. Khi chúng tôi không thể tìm thấy một chuyển đổi được bật sẵn sàng để kích hoạt, chúng tôi xóa dấu vết chưa hoàn thành và bắt đầu một nỗ lực mới. Nếu không có nỗ lực nào trong số 10 nỗ lực thành công, chúng tôi trả về `NULL` sẽ được ghi lại dưới dạng một dấu vết trống vào nhật ký sự kiện. Lưu ý rằng có một cài đặt của công cụ nguyên mẫu loại bỏ tất cả các dấu vết trống và chưa hoàn thành. Hàm `chooseNextTransition` chọn một chuyển đổi được bật bằng một quy tắc được chỉ định. Việc triển khai cơ bản nhất của hàm này được hiển thị trong Thuật toán 2. Ở đây, chuyển đổi ngẫu nhiên giữa tất cả các chuyển đổi được bật và nhiễu được chọn.
Thuật toán tạo nhật ký sự kiện được trình bày đã được triển khai như một công cụ nguyên mẫu. Nó được viết bằng ngôn ngữ lập trình Java và Kotlin. Trong phần này, chúng ta xem xét công cụ. Công cụ này bao gồm hai phần: Thiết lập tạo và Đơn vị tạo. Trong phần chuẩn bị, chúng tôi nhận cài đặt từ GUI (xem hình 4) hoặc đọc tệp JSON (xem hình 5). Cài đặt từ JSON được xác thực. Sau đó, chúng tôi tải mô hình từ tệp PNML và chuẩn bị mô hình này để tạo. Các cung ức chế và đặt lại có thể được chỉ định trong tệp cài đặt hoặc được tải từ tệp PNML. Các dấu hiệu ban đầu và cuối cùng được tải theo cùng một cách.
Sau đó, chúng tôi tạo một phiên bản của lớp đặc biệt `GenerationHelper`, lớp này đóng gói mã chính để chọn chuyển đổi, tìm kiếm chuyển đổi đã bật, xử lý nhiễu và sự kiện nhật ký nhân tạo nếu cần. Có các trình trợ giúp khác nhau để tạo đơn giản, tạo với các ưu tiên và tạo với thời gian. Ngoài ra, chúng tôi chuyển đổi mỗi chuyển đổi sang một lớp liên quan đến chuyển đổi có thể ghi nhật ký đặc biệt được sử dụng trong quá trình tạo. Chúng chứa các phương thức ghi sự kiện vào dấu vết. Một lớp như vậy cũng tiêu thụ mã thông báo từ các địa điểm đầu vào và tạo ra các mã thông báo cho các địa điểm đầu ra. Các phương thức để kiểm tra xem một chuyển đổi có được bật hay không cũng ở đây.
Trong bài viết này, chúng tôi đã trình bày thuật toán mô phỏng mô hình quy trình dưới dạng mạng Petri có trọng số được gắn nhãn với các cung ức chế và đặt lại. Thuật toán này có thể được áp dụng để tạo nhật ký sự kiện từ nhật ký sự kiện. Thuật toán được đề xuất tiếp tục các công trình trước đây về mô phỏng mạng Petri với mục đích tạo ra nhật ký sự kiện nhân tạo. Việc triển khai nguyên mẫu dựa trên công cụ Gena. Chúng tôi có kế hoạch cho công việc trong tương lai. Thứ nhất, chúng tôi dự định đánh giá toàn diện thuật toán được đề xuất trên các mô hình quy trình nhân tạo và thực tế. Hiện tại, chúng tôi chỉ kiểm tra nó trên các mô hình mẫu để kiểm tra tính hợp lệ của thuật toán. Thứ hai, chúng tôi cũng dự định cải thiện việc triển khai nguyên mẫu và làm cho nó ổn định và hữu ích. Thứ ba, Gena có thể mô phỏng các mô hình quy trình định thời gian, các mô hình có tài nguyên, dữ liệu, thêm nhiễu vào nhật ký sự kiện. Gần đây, một tiện ích mở rộng cho Gena để mô phỏng hệ thống nhiều tác nhân đã được đề xuất. Chúng tôi dự định hợp nhất các tiện ích mở rộng này và thuật toán được trình bày trong bài viết này. Sau đó, có thể mô phỏng mạng Petri WIR với thời gian/tài nguyên và dữ liệu.
Bài viết liên quan