Tôi đã viết một công cụ luồng công việc, vì chủ lao động của tôi muốn sở hữu IP, được mô hình hóa sau jBPM. Bây giờ lý do bạn sử dụng một công cụ như vậy, thay vì tạo ra máy trạng thái hữu hạn của riêng bạn, có khả năng thay đổi mà không thay đổi sự kiên trì và hỗ trợ các trường hợp cạnh của quy trình dòng công việc như tôi sẽ giải thích.
Điều tiết thay đổi mà không thay đổi Persistence
điển hình của bạn, hoặc có lẽ tốt hơn để gọi nó là "ngây thơ", hữu hạn máy nhà nước thực hiện có tập hợp các bảng cơ sở dữ liệu chặt chẽ cùng với các dữ liệu được quản lý và xử lý nó chảy qua. Có thể có một cách để giữ các phiên bản trước đây và theo dõi ai đã thực hiện hành động nào trong quá trình này. Trường hợp này chạy vào các vấn đề thay đổi dữ liệu và cấu trúc quy trình. Sau đó, những bảng chặt chẽ này cần phải được thay đổi để phản ánh cấu trúc mới và có thể không tương thích ngược với cũ.
Công cụ luồng công việc vượt qua thử thách này theo hai cách, bằng cách sử dụng tuần tự hóa để biểu diễn dữ liệu và quy trình, và tóm tắt các điểm tích hợp, đặc biệt là bảo mật. Các khía cạnh serialization có nghĩa là dữ liệu và quá trình có thể di chuyển cùng nhau thông qua hệ thống. Điều này cho phép các cá thể dữ liệu cùng loại để thực hiện theo các quy trình hoàn toàn khác nhau đến mức mà quy trình có thể thay đổi khi chạy, bằng cách thêm một trạng thái mới chẳng hạn. Và không ai trong số này đòi hỏi phải thay đổi lưu trữ cơ bản.
Điểm tích hợp là phương tiện đưa các thuật toán vào quá trình và liên kết với các cửa hàng xác thực (tức là người dùng phải thực hiện hành động). Các thuật toán được tiêm có thể bao gồm việc xác định xem trạng thái có hoàn thành hay không, trong khi ví dụ lưu trữ xác thực là LDAP.
Giờ việc cân bằng là tìm kiếm khó. Ví dụ, vì dữ liệu được tuần tự hóa, thường không thể truy vấn thông tin lịch sử - ngoài việc truy xuất các bản ghi, deserialize và phân tích bằng mã.
Các trường hợp Cạnh
Khía cạnh khác của một công cụ workflow là kinh nghiệm nhúng vào thiết kế và chức năng mà bạn có thể sẽ không xem xét cán của riêng bạn và có thể sống để hối tiếc khi bạn cần nó của nó. Hai trường hợp đến với tâm trí của tôi là các tác vụ theo thời gian và các đường dẫn thực thi song song.
Nhiệm vụ đã định thời gian được gán trách nhiệm diễn viên cho dữ liệu sau một khoảng thời gian nhất định đã trôi qua. Ví dụ, nói một thông cáo báo chí là viết và gửi đi phê duyệt, và sau đó ngồi trong một tuần mà không xem xét. Những gì bạn có thể muốn hệ thống của bạn làm là xác định rằng tài liệu kéo dài và thu hút sự chú ý của các bên thích hợp.
Đường dẫn thực thi song song không phổ biến trong trải nghiệm của tôi (Hệ thống quản lý nội dung), nhưng vẫn là một tình huống phát sinh thường xuyên. Đó là ý tưởng cho rằng một phần dữ liệu nhất định được gửi xuống hai đường dẫn xem xét hoặc xử lý khác nhau, chỉ để được kết hợp lại ở một số điểm sau này. Loại vấn đề này yêu cầu phải có thuật toán hợp nhất hữu ích và khả năng biểu diễn dữ liệu nhân cùng một lúc. Dệt nó vào một giải pháp gia đình sau khi thực tế là phức tạp hơn nhiều so với nó có vẻ, đặc biệt là nếu bạn muốn theo dõi các dữ liệu lịch sử.
Kết luận
Nếu hệ thống của bạn không có khả năng thay đổi, cán riêng của bạn có thể là một giải pháp dễ dàng hơn, đặc biệt là nếu thay đổi có thể phá vỡ thông tin cũ. Nhưng nếu bạn nghi ngờ bạn có nhu cầu về loại độ bền đó hoặc sẽ gặp phải một số trường hợp không phổ biến nhưng gai góc, công cụ luồng công việc cung cấp tính linh hoạt và bảo hiểm cao hơn nhiều. thay đổi.
Tôi đề xuất bạn viết "BPM". – CesarGon
Cảm ơn bạn đã đề xuất. Làm xong! – Sixty4Bit
Bạn có thể cung cấp ví dụ về "giải pháp BPM" và "Công cụ quy trình làm việc" không? Ví dụ: jBPM có phù hợp với một trong các danh mục sau không: http://www.jboss.org/jbpm – orangepips