Odoo中文社区可以通过以下两个域名访问:shine-it.net , odoo.net.cn

由于系统升迁的原因,本论坛部分较早期的内容存在格式和链接损坏失效的问题,并非本论坛系统本身的缺陷,望谅解

本社区没有维护任何QQ群讨论组,任何与本社区同名的QQ群讨论组的言论与本社区无关!

开发人员可以登录gitter讨论组: http://gitter.im/odoo-china/Talk, 需要github账号

如果您登录系统碰到问题,请在微信公众号留言:

有关工作流反审问题



  • 我在工作流中碰到一个问题,不知道是不是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>


    如有人也碰到该问题,希望可以帮解决一下,不胜感谢,


  • 管理员

    名字搞混了吧。

    &lt;record id=&quot;trans_submit_draft&quot; model=&quot;workflow.transition&quot;&gt;<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;field name=&quot;act_from&quot; ref=&quot;act_submit&quot;/&gt;<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;field name=&quot;act_to&quot; ref=&quot;act_draft&quot;/&gt;&nbsp; &nbsp;  &lt;!-- 该处,工作流已经流回到draft 节点了 --&gt;<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;field name=&quot;signal&quot;&gt;submit_draft&lt;/field&gt;&nbsp;  &lt;!-- 但这个函数即不能执行 --&gt;<br />&nbsp; &nbsp; &nbsp; &nbsp; &lt;/record&gt;<br /><br />
    


    这里的sumbit_draft只是那个按钮的名字,这里没有问题,所以当你按那个按钮时工作流返回draft的节点,但是你可能有一个submit_draft函数在返回draft节点后需要做一些处理,比如在界面上更新状态显示等, 但是你的函数是定义在这里的:

    &lt;record id=&quot;act_submit_draft&quot; model=&quot;workflow.activity&quot;&gt;<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;field name=&quot;wkf_id&quot; ref=&quot;wkf_bom&quot;/&gt;<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;field name=&quot;name&quot;&gt;submit_draft&lt;/field&gt;<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;field name=&quot;kind&quot;&gt;function&lt;/field&gt;<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;field name=&quot;action&quot;&gt;submit_draft()&lt;/field&gt;<br />&nbsp; &nbsp; &nbsp; &nbsp; &lt;/record&gt;&nbsp; 
    


    而这个act_sumit_draft节点你从来没访问到过,当然里面的sumbit_draft函数不会被执行



  • 我看这个回贴,也研究了几天,还是不知道怎么改,惭愧啊
    而我draft是建立时就默认的值
        _defaults={
                'state':lambda *a:'draft',

    那个节点到底如何访问,我还得再搞搞


Log in to reply