有关工作流反审问题
- 
我在工作流中碰到一个问题,不知道是不是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函数不会被执行
