Hơi khó để cung cấp "câu trả lời", vì bạn đã không thực sự đặt câu hỏi cụ thể. Tôi đồng ý với bạn rằng việc sử dụng Bộ hẹn giờ và Tín hiệu là những gì bạn muốn.
Bạn không chỉ định cách nhóm được thông báo về đánh giá. Tôi sẽ giả định rằng bạn thông báo cho họ qua email và hướng dẫn họ đến một số trang web nơi họ có thể xem xét các thay đổi và sau đó nhấp vào liên kết để Phê duyệt hoặc Không chấp thuận. Nhấp vào liên kết để Phê duyệt sẽ gửi yêu cầu đến một máy chủ web sẽ "báo hiệu" SWF mà đánh giá đã được phê duyệt. Nhấp vào liên kết để Không phê duyệt sẽ "báo hiệu" SWF rằng bài đánh giá chưa được phê duyệt. Bạn đề cập rằng bạn muốn đổi tên nhóm (hoặc có thể leo thang cho người quản lý) nếu không có ai thực hiện hành động trong bài đánh giá. Giả sử sự đổi mới này xảy ra sau 48 giờ. Sau khi đổi tên, bạn cấp cho họ 72 giờ trước khi giả sử Không chấp thuận.
Sau đây là cách công việc của bạn trông giống như với tôi:
tập tin
- cập người dùng và khởi động một tiến trình công việc
- người quyết định nhiệm vụ lịch "TransformActivity"
- TransformActivity chạy, biến đổi dữ liệu vào các tập tin khác nhau, và hoàn thành thành công
- Quyết định Lịch biểu tác vụ "UpdateDatabaseActivity"
- UpdateDatabaseActivity chạy, cập nhật cơ sở dữ liệu và hoàn tất thành công
- người quyết định nhiệm vụ lịch "EmailTeamActivity"
- EmailTeamActivity chạy, gửi email cho nhóm, và hoàn thành công
- người quyết định nhiệm vụ lịch một Timer trong 48 giờ.
Nếu một tín hiệu cho thấy Phê duyệt hoặc không chấp nhận được trong vòng 48 giờ:
- lịch trình người quyết định nhiệm vụ là "RecordFinalDecisionActivity"
- RecordFinalDecisionActivity sẽ chạy, ghi lại Thỏa thuận (hoặc Do not Phê duyệt) vào cơ sở dữ liệu và hoàn tất thành công.
- Tác vụ quyết định sau đó sẽ đóng luồng công việc vì hoàn thành công việc.
Nếu không có tín hiệu nhận được và các đám cháy hẹn giờ (sau 48 giờ):
- lịch trình người quyết định nhiệm vụ là "EmailTeamAndManagerActivity"
- EmailTeamAndManagerActivity chạy, gửi email cho nhóm và quản lý, và hoàn tất thành công.
- Công cụ quyết định lên lịch hẹn giờ khác trong 72 giờ.
Nếu một tín hiệu cho thấy Phê duyệt hoặc không chấp nhận được trong thêm 72 giờ đưa ra:
- Lặp lại cùng một logic như phần "Nếu một tín hiệu cho thấy Phê duyệt hoặc không chấp nhận là nhận được trong vòng 48 giờ ".
Nếu không có tín hiệu nhận được và các đám cháy hẹn giờ (sau 72 giờ bổ sung):
- Tại thời điểm này, các công việc có thể giả định đó là một Đừng Phê duyệt, sắp xếp các "RecordFinalDecisionActivity" và đóng luồng công việc sau khi hoạt động đó hoàn tất.
Lý do bạn không muốn có hoạt động "đánh giá" là do nhiệm vụ đó được lên lịch và sau đó một số nhân viên hoạt động cần trả lời thành công. Làm thế nào mà sẽ làm việc? Khi ai đó nhấp vào liên kết Phê duyệt hoặc Không phê duyệt, yêu cầu tới máy chủ web sẽ phải kéo hoạt động xuống từ danh sách nhiệm vụ. Tuy nhiên, nếu danh sách nhiệm vụ có nhiều hoạt động, SWF chỉ đưa ra bất kỳ hoạt động nào trong số đó. Nó có thể không đúng. Bây giờ, bạn có thể lập luận rằng bạn có thể lên lịch các đánh giá khác nhau trên các danh sách nhiệm vụ khác nhau, nhưng điều đó chỉ cồng kềnh và tẻ nhạt.
Tín hiệu được thực hiện để biểu thị sự kiện "bên ngoài", điều này rất nhiều. SWF documentation on Signals thực hiện công việc tuyệt vời khi nói về Tín hiệu. Đây là SWF documentation on how to use Timers and Signals. Đối với các chi tiết về cách sử dụng SWF và Ruby, tôi thực sự không thể giúp bạn ở đó. Tôi đã chỉ sử dụng SWF với Java bằng cách sử dụng AWS Flow Framework.
Cảm ơn lời giải thích tuyệt vời. Tôi nghĩ rằng các bộ hẹn giờ bạn đặt là bản sao của thời gian chờ tác vụ hoạt động. Để báo hiệu một exec, bạn cần domain + workflowId, để đáp ứng với một hoạt động, bạn chỉ cần taskToken. Quá xấu, Ruby SDK hiện tại không cho phép bạn khởi tạo tác vụ hoạt động chỉ với taskToken (bit.ly/14QOIC8). (Xin lỗi, tôi hư hỏng, tôi làm việc trực tiếp thông qua API) Vì vậy, có, bạn phải "tải xuống" tác vụ. Tôi vẫn thích hoạt động. Truy vấn exec rõ ràng cho thấy nó có một nhiệm vụ hoạt động [review]. – jmettraux
Có ... lời giải thích tuyệt vời. Tôi đã thực sự tìm kiếm ý kiến về luồng đề xuất của tôi để xem có cách nào khác để đạt được hay không. Và bạn đã xác nhận rằng đây là con đường để đi. Tôi đã đọc nguồn sdk và tôi đã tìm ra cách để có được những điều cơ bản của dòng chảy làm việc và sẽ đăng lại ở đây. Cảm ơn một lần nữa. –