2012-09-20 47 views
3

在具有工作流程的模型中,當您創建新記錄時,它會啓動一個新的workflow instance。然後它將在「活動」之間轉換,直到達到flow stop,通常爲canceldone狀態。如何重新啓動終止的工作流程?

我在OpenERP 6.1中遇到的一個問題是,一旦workflow instance達到flow stop,它就已經死了,您無法對其執行更多轉換。

但我想在表單上有一個Reset to draft按鈕,以允許終止的工作流程重新啓動。有沒有辦法通過Python調用Openerp工作流服務的方法來實現這一點?

回答

6

你可以在賬戶支付模塊找到一個例子。

def set_to_draft(self, cr, uid, ids, *args): 
    self.write(cr, uid, ids, {'state': 'draft'}) 
    wf_service = netsvc.LocalService("workflow") 
    for id in ids: 
     wf_service.trg_create(uid, 'your.model.name', id, cr) 
    return True 
+1

我用過這個。只需要'輸入netsvc'。 –

+1

我相信你應該像'purchase.order'中一樣刪除工作流實例。我檢查了調用'instance.create'的'workflow_service.trg_create',並且在添加新實例之前,它們都沒有刪除舊實例。 –

+0

我曾考慮刪除,但我認爲我更願意保留工作流程重置的歷史記錄。 –

1

您需要刪除工作流實例並重新創建它。檢查purchase.order模型中的方法action_cancel_draft;它完全符合你想要做的。

+1

很高興知道。爲了將來的參考,刪除指令類似於trg_create():'wf_service.trg_delete(uid,'purchase.order',p_id,cr)?'。 –

+0

@Ruchir Shukla,我想知道爲什麼有人低估了沒有評論的答案!我真的想現在我的答案出了什麼問題。 –

相關問題