我已经创建了一个工作流程,并且它可以完美地工作。工作流活动调用的函数是这个
def employee_confirm(self, cr, uid, ids, context=None):
print "Entering >>>employee_confirm"
return self.write(cr, uid, ids, {'state':'confirm'})
我的问题是print语句执行了两次。这意味着该功能被执行两次。
这个没问题
self.write(cr, uid, ids, {'state':'confirm'})
因为它是write
。
对于任何其他声明,我们不能允许同一记录出现两次。
为什么会发生这种情况&如何覆盖它?
在构建新的OpenERP模块时,理解和调试工作流代码是最困难的任务之一。我发现在Eclipse中跟踪代码是了解发生了什么的唯一方法,但这需要很长时间。
下面是我为总结工作流转换而编写的SQL查询。我打印出工作流程图,然后将这些数据复制到图表上。据我所知,您只能从GTK客户端打印图表,而不能从web客户端打印。打开包含所需工作流的屏幕,然后从"插件"菜单中选择"执行插件",然后双击"打印工作流"。
select wkf.name,
f.name || '(' || f.id || ')' as src,
f.kind,
f.action as from_action,
f.split_mode,
f.flow_start,
t.name || '(' || t.id || ')' as dest,
t.kind as dest_kind,
t.action as dest_action,
t.join_mode,
t.flow_stop,
tr.*
from wkf_transition tr
join wkf_activity f
on tr.act_from = f.id
join wkf_activity t
on tr.act_to = t.id
join wkf
on f.wkf_id = wkf.id
order by wkf.name, f.name, t.name