Workflow 如何重新启动已终止的工作流?

Workflow 如何重新启动已终止的工作流?,workflow,openerp,Workflow,Openerp,在具有工作流的模型中,当您创建新记录时,它将启动一个新的工作流实例。然后,它将在“活动”之间转换,直到达到流停止,通常是取消或完成状态 我在OpenERP 6.1中体验到的是,一旦工作流实例到达流停止,它就死了,您无法在其上执行更多的转换 但是我希望在表单上有一个重置为草稿按钮,允许重新启动终止的工作流。有没有办法做到这一点,比如说,通过Python调用Openerp工作流服务的方法?您需要删除工作流实例并重新创建它。检查purchase.order模型中的方法action\u cancel\u

在具有工作流的模型中,当您创建新记录时,它将启动一个新的
工作流实例
。然后,它将在“活动”之间转换,直到达到
流停止
,通常是
取消
完成
状态

我在OpenERP 6.1中体验到的是,一旦
工作流实例
到达
流停止
,它就死了,您无法在其上执行更多的转换


但是我希望在表单上有一个重置为草稿按钮,允许重新启动终止的工作流。有没有办法做到这一点,比如说,通过Python调用Openerp工作流服务的方法?

您需要删除工作流实例并重新创建它。检查
purchase.order
模型中的方法
action\u cancel\u draft
;它正是您想要做的。

您可以在帐户支付模块中找到一个示例

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

我用过这个。只需要
导入netsvc
。我认为您应该像
purchase.order
中那样删除工作流实例。我检查了
workflow\u服务。trg\u create
调用
instance.create
,没有人在添加新实例之前删除旧实例。我考虑过删除,但我想我更愿意保留工作流重置的历史记录。很高兴知道。为便于将来参考,delete指令类似于trg_create():
wf_service.trg_delete(uid,'purchase.order',p_id,cr)?
@Ruchir Shukla,我想知道为什么有人不加评论就否决了答案!我现在真的想知道我的答案有什么问题。