這有點難以提供的「答案」,給你並沒有真正問一個具體問題。我同意你的看法,使用定時器和信號就是你想要的。
不指定團隊如何被通知有關審覈。我假設你通過電子郵件通知他們,並指示他們訪問某個網站,他們可以查看更改,然後點擊指向批准或不批准的鏈接。點擊批准鏈接將向Web服務器發送一個請求,該請求將向SWF發送信號,表明該評論已被批准。點擊「不批准」鏈接會向SWF發出信號表明該評論尚未獲得批准。如果沒有人對審覈採取行動,您提到您要對團隊進行再審覈(或者升級爲經理)。假設這種再通過48小時後發生。復職後,你再批准他們72小時之前,不要批准。
這是你的工作流程的樣子對我說:
- 用戶上傳文件,並揭開序幕工作流程
- 決勝局任務計劃「TransformActivity」
- TransformActivity運行,轉換數據到不同的文件,成功完成
- Decider任務計劃「UpdateDatabaseActivity」
- UpdateDatabaseActivity運行,更新數據庫併成功完成
- 決勝局任務計劃「EmailTeamActivity」
- EmailTeamActivity運行,電子郵件的團隊,併成功完成
- 決勝局任務時間表48小時定時器。
如果指示批准或不批准的48小時內被接收到的信號:
- 決策器任務調度「RecordFinalDecisionActivity」
- RecordFinalDecisionActivity將運行,記錄批准(或不要批准)到數據庫中,併成功完成。
- 然後Decider Task會關閉工作流程,因爲它已完成。
如果沒有接收到信號和定時器觸發(48小時後):
- 決勝盤任務調度「EmailTeamAndManagerActivity」
- EmailTeamAndManagerActivity運行,電子郵件團隊和經理,併成功完成。
- 判定器任務安排另一個定時器72小時。
如果指示批准或不批准給出的72小時內被接收到的信號:
- 重複相同的邏輯部「。如果指示批准信號或不允許是在48小時內收到「。
如果沒有接收到信號且定時器火災(附加72小時後):
- 此時,工作流可以假定這是一個不允許,調度「RecordFinalDecisionActivity」並在活動完成後關閉工作流程。
您不希望進行「審查」活動的原因是因爲該任務被安排,然後一些活動工作人員需要回覆成功。這將如何工作?當有人點擊「批准」或「不批准」鏈接時,對網絡服務器的請求將不得不從任務列表中拉下活動。但是,如果任務列表具有多個活動,則SWF只會發出其中的任何一個。它可能沒有得到正確的。現在,你可以爭辯說,你可以在不同的任務列表中安排不同的評論,但這只是繁瑣而乏味。
信號是用來表示一個「外部」事件,這非常重要。 SWF documentation on Signals在談論信號方面做得很好。這是SWF documentation on how to use Timers and Signals。至於關於如何使用SWF和Ruby的細節,我無法真正幫助你。我只使用AWS Flow Framework將SWF與Java結合使用。
感謝您的好解釋。 我認爲你設置的這些定時器是活動任務超時的副本。 爲了給一個exec發信號,你需要domain + workflowId,爲了響應一個activity,你只需要taskToken。 太糟糕了,當前的Ruby SDK不允許你只用taskToken(bit.ly/14QOIC8)實例化一個活動任務。 (對不起,我被寵壞了,我直接通過API工作)所以是的,你必須「下載」任務。 我還是比較喜歡活動。詢問執行官清楚地表明它有一個[審查]活動任務。 – jmettraux 2013-04-08 08:14:31
是的...很好的解釋。我真的在尋找關於我的建議流程的評論,看看是否有其他方法可以實現。而且你已經確認這是要走的路。我一直在閱讀SDK源代碼,並且已經找到了如何獲得流程工作的基礎知識,並將其發佈到此處。再次感謝。 – 2013-04-08 21:50:25