跳转至内容
  • 版块
  • 标签
  • 热门
  • 用户
  • 群组
皮肤
  • Light
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • 默认(Flatly)
  • 不使用皮肤
折叠

Odoo 中文社区

  1. 主页
  2. 版块
  3. Odoo 开发与实施交流
  4. 有关工作流反审问题

有关工作流反审问题

已定时 已固定 已锁定 已移动 Odoo 开发与实施交流
4 帖子 2 发布者 3.5k 浏览
  • 从旧到新
  • 从新到旧
  • 最多赞同
登录后回复
此主题已被删除。只有拥有主题管理权限的用户可以查看。
  • 1 离线
    1 离线
    18684036
    写于 最后由 编辑
    #1

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


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

    1 条回复 最后回复
    0
    • digitalsatoriD 离线
      digitalsatoriD 离线
      digitalsatori 管理员
      写于 最后由 编辑
      #2

      名字搞混了吧。

      &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函数不会被执行

      【上海先安科技】(tony AT openerp.cn)

      1 条回复 最后回复
      0
      • 1 离线
        1 离线
        18684036
        写于 最后由 编辑
        #3

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

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

        1 条回复 最后回复
        0

        • 登录

        • 没有帐号? 注册

        • 登录或注册以进行搜索。
        • 第一个帖子
          最后一个帖子
        0
        • 版块
        • 标签
        • 热门
        • 用户
        • 群组