有关工作流反审问题
-
我在工作流中碰到一个问题,不知道是不是bug,提出来给大家参考一下,
工作流中我加入了state字段,分别为draft submit examine open ,分别为:开发中-》提交-》审核-》终审,
正向流下去是没问题的,也就是从 开发中一--》终审,
反审流程,从open--->submit也是没问题的,就是回不到draft状态,
写法应该没有问题,在submit->draft中,函数没有执行,但工作流的状态是已经回到了draft的状态,这个测试过,而examine-》submit是没有问题的,工作流状态正确,函数也执行,都正常,于是我把该节点的act_to 改成 draft,就变成了函数不执行了,跟submit->draft一样
<?xml version="1.0" encoding="utf-8"?>
<openerp>
<data>
<record id="wkf_bom" model="workflow">
<field name="name">mrp.bom.expand</field>
<field name="osv">mrp.bom</field>
<field name="on_create">True</field>
</record>
<!-- Activity -->
<record id="act_draft" model="workflow.activity">
<field name="wkf_id" ref="wkf_bom"/>
<field name="flow_start">True</field>
<field name="name">draft</field>
</record>
<record id="act_submit" model="workflow.activity">
<field name="wkf_id" ref="wkf_bom"/>
<field name="name">submit</field>
<field name="kind">function</field>
<field name="action">draft_submit()</field>
</record>
<record id="act_examine" model="workflow.activity">
<field name="wkf_id" ref="wkf_bom"/>
<field name="name">examine</field>
<field name="kind">function</field>
<field name="action">submit_examine()</field>
</record>
<record id="act_open" model="workflow.activity">
<field name="wkf_id" ref="wkf_bom"/>
<field name="name">open</field>
<field name="kind">function</field>
<field name="action">examine_open()</field>
</record>
<record id="act_open_examine" model="workflow.activity">
<field name="wkf_id" ref="wkf_bom"/>
<field name="name">open_examine</field>
<field name="kind">function</field>
<field name="action">open_examine()</field>
</record>
<record id="act_examine_submit" model="workflow.activity">
<field name="wkf_id" ref="wkf_bom"/>
<field name="name">examine_submit</field>
<field name="kind">function</field>
<field name="action">examine_submit()</field>
</record>
<record id="act_submit_draft" model="workflow.activity">
<field name="wkf_id" ref="wkf_bom"/>
<field name="name">submit_draft</field>
<field name="kind">function</field>
<field name="action">submit_draft()</field>
</record>
<record id="act_close" model="workflow.activity">
<field name="wkf_id" ref="wkf_bom"/>
<field name="name">close</field>
<field name="flow_stop">True</field>
<field name="kind">stopall</field>
<field name="action">close()</field>
</record>
<!-- Transistion -->
<record id="trans_draft_submit" model="workflow.transition">
<field name="act_from" ref="act_draft"/>
<field name="act_to" ref="act_submit"/>
<field name="signal">draft_submit</field>
</record>
<record id="trans_submit_examine" model="workflow.transition">
<field name="act_from" ref="act_submit"/>
<field name="act_to" ref="act_examine"/>
<field name="signal">submit_examine</field>
</record>
<record id="trans_examine_open" model="workflow.transition">
<field name="act_from" ref="act_examine"/>
<field name="act_to" ref="act_open"/>
<field name="signal">examine_open</field>
</record>
<!--反审流程 -->
<record id="trans_open_examine" model="workflow.transition">
<field name="act_from" ref="act_open"/>
<field name="act_to" ref="act_examine"/>
<field name="signal">open_examine</field>
</record>
<record id="trans_examine_submit" model="workflow.transition">
<field name="act_from" ref="act_examine"/>
<field name="act_to" ref="act_submit"/> <!-- 只要把这个节点改成 act_draft ,该处就失效了-->
<field name="signal">examine_submit</field>
</record>
<!-- 先注释掉,因为该段不起作用
<record id="trans_submit_draft" model="workflow.transition">
<field name="act_from" ref="act_submit"/>
<field name="act_to" ref="act_draft"/> <!--[color=pink][color=orange] 该处,工作流已经流回到draft 节点了[/color][/color] -->
<field name="signal">submit_draft</field> <!-- 但这个函数即不能执行 -->
</record>
-->
<!-- 作废 -->
<record id="trans_submit_close" model="workflow.transition">
<field name="act_from" ref="act_submit"/>
<field name="act_to" ref="act_close"/>
<field name="signal">close</field>
</record>
</data>
</openerp>
如有人也碰到该问题,希望可以帮解决一下,不胜感谢, -
名字搞混了吧。
<record id="trans_submit_draft" model="workflow.transition"><br /> <field name="act_from" ref="act_submit"/><br /> <field name="act_to" ref="act_draft"/> <!-- 该处,工作流已经流回到draft 节点了 --><br /> <field name="signal">submit_draft</field> <!-- 但这个函数即不能执行 --><br /> </record><br /><br />
这里的sumbit_draft只是那个按钮的名字,这里没有问题,所以当你按那个按钮时工作流返回draft的节点,但是你可能有一个submit_draft函数在返回draft节点后需要做一些处理,比如在界面上更新状态显示等, 但是你的函数是定义在这里的:<record id="act_submit_draft" model="workflow.activity"><br /> <field name="wkf_id" ref="wkf_bom"/><br /> <field name="name">submit_draft</field><br /> <field name="kind">function</field><br /> <field name="action">submit_draft()</field><br /> </record>
而这个act_sumit_draft节点你从来没访问到过,当然里面的sumbit_draft函数不会被执行