跳转至内容
  • 版块
  • 标签
  • 热门
  • 用户
  • 群组
皮肤
  • 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 浏览
  • 从旧到新
  • 从新到旧
  • 最多赞同
登录后回复
此主题已被删除。只有拥有主题管理权限的用户可以查看。
  • 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
                      • 版块
                      • 标签
                      • 热门
                      • 用户
                      • 群组