跳转至内容
  • 版块
  • 标签
  • 热门
  • 用户
  • 群组
皮肤
  • 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. Mrp-operations 的workflow没有写入DB

Mrp-operations 的workflow没有写入DB

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

    那你debug 的时候, 如果有遇到代码 trg_create(.... 那就生成了. 如果没有. 那就是代码有问题.

    重点看看  modify_production_order_state 这个方法 里的
    trg_validate 部分代码.

    如果你的数据未 trg_validate 对应的工作流. ,那意味着, 你相关的数据未就绪.

    1 条回复 最后回复
    0
    • M 离线
      M 离线
      maths369
      写于 最后由 编辑
      #6

      版主大人,我又跟踪了几遍,把mrp_operations这个模块反复升级了几次,发现在trg_create的时候,传入的res_type和res_id是wizard的,而不是具体的某个模块的。从trg_create的代码逻辑上看,这个函数应该是负责创建wkf_instance里的对象的,这样的话,传入的res_type和res_id就应该是当前升级的这个模块的。
      我也尝试了装载其他的一些模块,看看传入的值,发现都是一样:wizard,这让我很困惑,如果是这样的话,那wkf_instance表里的那些值是什么时候创建的呢?
      多谢!

      1 条回复 最后回复
      0
      • mrshellyM 离线
        mrshellyM 离线
        mrshelly
        写于 最后由 编辑
        #7

        参阅: addons\mrp\mrp.py

        中  mrp.procurement 对象的  action_produce_assign_product 方法.

        触发  produce 动作, 应该就可以有 实例生成了.

        1 条回复 最后回复
        0
        • M 离线
          M 离线
          maths369
          写于 最后由 编辑
          #8

          多谢版主大人。
          再多问一点菜鸟问题,我一直认为实例是在安装或者升级的时候创建的,并且只创建一次。如果是在某个动作触发时做的话,那是不是每次触发这个动作的时候,都要创建一次实例?从创建的代码逻辑里看,好像没有检测实例是否存在。
          不知道是不是这样子呢?

          1 条回复 最后回复
          0
          • mrshellyM 离线
            mrshellyM 离线
            mrshelly
            写于 最后由 编辑
            #9

            好象是, 你每创建一个 mrp.producxxx 的对象, 就会有一个工作流实例创建.  (即, 一个工作流开始时, 会有一个 实例创建. 然后 这个工作流结束后, 这个实例也就被删除了.

            1 条回复 最后回复
            0
            • M 离线
              M 离线
              maths369
              写于 最后由 编辑
              #10

              版主大人,我在openobject-developer里找到这样的说法:

              If your buttons do not seem to be doing anything, one of the following two things are likely:
              1. The record you are working on does not have a Workflow Instance record associated with it (it was probably
              created before you defined your workflow)

              2. You have not set the “osv” field correctly in your workflow XML file

              我遇到的情况非常像第一种问题,但可惜的是没有任何解决的建议,我现在还是苦于无法下手解决,因为无法确定到底是什么时候创建的instance record,也就无法确定到底创建的时候出了什么问题。

              1 条回复 最后回复
              0
              • mrshellyM 离线
                mrshellyM 离线
                mrshelly
                写于 最后由 编辑
                #11

                [quote author=maths369 link=topic=2261.msg7328#msg7328 date=1293669981]
                版主大人,我在openobject-developer里找到这样的说法:

                If your buttons do not seem to be doing anything, one of the following two things are likely:
                1. The record you are working on does not have a Workflow Instance record associated with it (it was probably
                created before you defined your workflow)

                2. You have not set the “osv” field correctly in your workflow XML file

                我遇到的情况非常像第一种问题,但可惜的是没有任何解决的建议,我现在还是苦于无法下手解决,因为无法确定到底是什么时候创建的instance record,也就无法确定到底创建的时候出了什么问题。
                [/quote]

                你不确定, 我帮你确定了...你不相信, 我有什么办法? 你再研究一年半载的OE, 你再回头看你这贴吧.

                1 条回复 最后回复
                0
                • M 离线
                  M 离线
                  maths369
                  写于 最后由 编辑
                  #12

                  :-X
                  版主教训得有理,还是要自己研究透才行。

                  不是不相信,只是我发现几乎我找到的所有的版本,这个模块都有同样的问题,甚至我今天在OE官方的Demo网站上发现了相同的错误。我认为既然这么常见,可能有人已经发现了原因。

                  不过,还是自己研究透比较好。

                  1 条回复 最后回复
                  0
                  • mrshellyM 离线
                    mrshellyM 离线
                    mrshelly
                    写于 最后由 编辑
                    #13

                    哎,,, 别一口一个版主哎...  版主就是打扫垃圾贴的...

                    我也还在学习OE好不好...

                    1 条回复 最后回复
                    0
                    • M 离线
                      M 离线
                      maths369
                      写于 最后由 编辑
                      #14

                      呵呵!太谦虚了,你回答了这么多问题……

                      大家一起学习……

                      1 条回复 最后回复
                      0
                      • M 离线
                        M 离线
                        maths369
                        写于 最后由 编辑
                        #15

                        经过Debug,我发现workflow的流程是这样的:
                        1. 当某个模块安装时,如果它的workflow的on_create状态是True,那么,就会将这个模块的workflow添加进wkf表,并把相关的activity和transition写进相应的表。
                        2. 当这个模块创建相关数据记录时,将会触发创建instance的方法,并在wkf_instance表中添加记录,用res_id把实际数据记录和workflow的记录链接在一起,相当于对于一条实际的记录,有一个workflow的实例创建,还含有一个状态:active/complete。complete的话,就说明已经完成了。
                        3. 当实际的事件触发workflow的时候,会先去根据当前数据记录的res_id和res_type(数据模块名)去wkf_instance表中查询是否有相应的实例记录,如果有,并且状态是active,就会创建实际的workflow步骤实例,并执行相关步骤。

                        之前我遇到的问题就是wkf_instance表中与实际数据记录对应的实例没有写入,所以每次查询的时候都找不到,也就不能执行相关的workflow。我用create方法强行执行了一遍创建数据记录之后,发现问题解决了。

                        1 条回复 最后回复
                        0
                        • mrshellyM 离线
                          mrshellyM 离线
                          mrshelly
                          写于 最后由 编辑
                          #16

                          嗯. 所以说, 这个 instance 就是你的业务数据创建时生成的. 至于为什么你的业务数据create 时, 没有生成对应的 wkf_instance 就要仔细地查查原因了.

                          没有跑过生产类的东西. 你可以再试着创建新的业务数据.. 再看看 wkf_instance 有没有生成对应的记录. 如果还是没有. 就得继续跟踪下去.. 应该有其它的地方的操作会导致 业务数据的 create.. 从而生成对应的 wkf_instance.. 我觉得你可能还是不熟悉OE业务逻辑操作而引起的(或者说是OE Bug).

                          1 条回复 最后回复
                          0
                          • M 离线
                            M 离线
                            maths369
                            写于 最后由 编辑
                            #17

                            没错,我现在也越来越有这种感觉,很大可能性应该是我不熟悉业务导致的某些必须的数据没有创建,从而影响了instance的创建。继续跟踪整理中……

                            1 条回复 最后回复
                            0

                            • 登录

                            • 没有帐号? 注册

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